Issue #3376293 by nlisgo, smustgrave, amateescu: WorkspacePublishForm $redirectDestination parameter appears not to be used
parent
92abbb5964
commit
917678cf43
|
@ -6,7 +6,6 @@ use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
|
|||
use Drupal\Core\Entity\EntityTypeManagerInterface;
|
||||
use Drupal\Core\Form\ConfirmFormBase;
|
||||
use Drupal\Core\Form\FormStateInterface;
|
||||
use Drupal\Core\Routing\RedirectDestinationInterface;
|
||||
use Drupal\Core\Url;
|
||||
use Drupal\workspaces\WorkspaceInterface;
|
||||
use Drupal\workspaces\WorkspaceOperationFactory;
|
||||
|
@ -52,16 +51,10 @@ class WorkspaceMergeForm extends ConfirmFormBase implements WorkspaceFormInterfa
|
|||
* The workspace operation factory service.
|
||||
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
|
||||
* The entity type manager.
|
||||
* @param \Drupal\Core\Routing\RedirectDestinationInterface|null $redirectDestination
|
||||
* The redirect destination service.
|
||||
*/
|
||||
public function __construct(WorkspaceOperationFactory $workspace_operation_factory, EntityTypeManagerInterface $entity_type_manager, ?RedirectDestinationInterface $redirectDestination = NULL) {
|
||||
public function __construct(WorkspaceOperationFactory $workspace_operation_factory, EntityTypeManagerInterface $entity_type_manager) {
|
||||
$this->workspaceOperationFactory = $workspace_operation_factory;
|
||||
$this->entityTypeManager = $entity_type_manager;
|
||||
if ($redirectDestination === NULL) {
|
||||
$this->redirectDestination = \Drupal::service('redirect.destination');
|
||||
@trigger_error('Calling' . __METHOD__ . '() without the $redirectDestination argument is deprecated in drupal:10.1.0 and is required in drupal:11.0.0. See https://www.drupal.org/node/3343983', E_USER_DEPRECATED);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -70,8 +63,7 @@ class WorkspaceMergeForm extends ConfirmFormBase implements WorkspaceFormInterfa
|
|||
public static function create(ContainerInterface $container) {
|
||||
return new static(
|
||||
$container->get('workspaces.operation_factory'),
|
||||
$container->get('entity_type.manager'),
|
||||
$container->get('redirect.destination')
|
||||
$container->get('entity_type.manager')
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -144,7 +136,7 @@ class WorkspaceMergeForm extends ConfirmFormBase implements WorkspaceFormInterfa
|
|||
* {@inheritdoc}
|
||||
*/
|
||||
public function getCancelUrl() {
|
||||
return Url::fromRoute('entity.workspace.collection', [], ['query' => $this->redirectDestination->getAsArray()]);
|
||||
return Url::fromRoute('entity.workspace.collection', [], ['query' => $this->getDestinationArray()]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -6,7 +6,6 @@ use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
|
|||
use Drupal\Core\Entity\EntityTypeManagerInterface;
|
||||
use Drupal\Core\Form\ConfirmFormBase;
|
||||
use Drupal\Core\Form\FormStateInterface;
|
||||
use Drupal\Core\Routing\RedirectDestinationInterface;
|
||||
use Drupal\Core\Url;
|
||||
use Drupal\workspaces\WorkspaceAccessException;
|
||||
use Drupal\workspaces\WorkspaceInterface;
|
||||
|
@ -46,16 +45,10 @@ class WorkspacePublishForm extends ConfirmFormBase implements WorkspaceFormInter
|
|||
* The workspace operation factory service.
|
||||
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
|
||||
* The entity type manager.
|
||||
* @param \Drupal\Core\Routing\RedirectDestinationInterface|null $redirectDestination
|
||||
* The redirect destination service.
|
||||
*/
|
||||
public function __construct(WorkspaceOperationFactory $workspace_operation_factory, EntityTypeManagerInterface $entity_type_manager, ?RedirectDestinationInterface $redirectDestination = NULL) {
|
||||
public function __construct(WorkspaceOperationFactory $workspace_operation_factory, EntityTypeManagerInterface $entity_type_manager) {
|
||||
$this->workspaceOperationFactory = $workspace_operation_factory;
|
||||
$this->entityTypeManager = $entity_type_manager;
|
||||
if ($redirectDestination === NULL) {
|
||||
$this->redirectDestination = \Drupal::service('redirect.destination');
|
||||
@trigger_error('Calling' . __METHOD__ . '() without the $redirectDestination argument is deprecated in drupal:10.1.0 and is required in drupal:11.0.0. See https://www.drupal.org/node/3343983', E_USER_DEPRECATED);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -64,8 +57,7 @@ class WorkspacePublishForm extends ConfirmFormBase implements WorkspaceFormInter
|
|||
public static function create(ContainerInterface $container) {
|
||||
return new static(
|
||||
$container->get('workspaces.operation_factory'),
|
||||
$container->get('entity_type.manager'),
|
||||
$container->get('redirect.destination')
|
||||
$container->get('entity_type.manager')
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -141,7 +133,7 @@ class WorkspacePublishForm extends ConfirmFormBase implements WorkspaceFormInter
|
|||
* {@inheritdoc}
|
||||
*/
|
||||
public function getCancelUrl() {
|
||||
return Url::fromRoute('entity.workspace.collection', [], ['query' => $this->redirectDestination->getAsArray()]);
|
||||
return Url::fromRoute('entity.workspace.collection', [], ['query' => $this->getDestinationArray()]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -298,4 +298,36 @@ class WorkspaceTest extends BrowserTestBase {
|
|||
$assert_session->linkExists('Switch to Live');
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies that a workspace can be published.
|
||||
*/
|
||||
public function testPublishWorkspace() {
|
||||
$this->createContentType(['type' => 'test', 'label' => 'Test']);
|
||||
$this->drupalLogin($this->rootUser);
|
||||
|
||||
$this->drupalGet('/admin/config/workflow/workspaces/add');
|
||||
$this->submitForm([
|
||||
'id' => 'test_workspace',
|
||||
'label' => 'Test workspace',
|
||||
], 'Save');
|
||||
|
||||
// Activate the test workspace.
|
||||
$this->drupalGet('/admin/config/workflow/workspaces/manage/test_workspace/activate');
|
||||
$this->submitForm([], 'Confirm');
|
||||
|
||||
$this->drupalGet('/admin/config/workflow/workspaces/manage/test_workspace/publish');
|
||||
$this->assertSession()->statusCodeEquals(200);
|
||||
$this->assertSession()->pageTextContains('There are no changes that can be published from Test workspace to Live.');
|
||||
|
||||
// Create a node in the workspace.
|
||||
$node = $this->createNodeThroughUi('Test node', 'test');
|
||||
|
||||
$this->drupalGet('/admin/config/workflow/workspaces/manage/test_workspace/publish');
|
||||
$this->assertSession()->statusCodeEquals(200);
|
||||
$this->assertSession()->pageTextContains('There is 1 item that can be published from Test workspace to Live');
|
||||
|
||||
$this->getSession()->getPage()->pressButton('Publish 1 item to Live');
|
||||
$this->assertSession()->pageTextContains('Successful publication.');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue