From fd8e85a6f4cc223aaf3ec1ab465b436084d2fc36 Mon Sep 17 00:00:00 2001 From: Dieter Holvoet <dieter.holvoet@gmail.com> Date: Tue, 14 Jan 2025 11:31:09 +0100 Subject: [PATCH] Add 3347301.patch --- entityqueue.routing.yml | 28 +++++++--------------- src/Controller/EntityQueueUIController.php | 24 +++++++++++++++++++ src/Entity/EntityQueue.php | 6 ++++- 3 files changed, 37 insertions(+), 21 deletions(-) diff --git a/entityqueue.routing.yml b/entityqueue.routing.yml index 8d23d84..5936ca3 100644 --- a/entityqueue.routing.yml +++ b/entityqueue.routing.yml @@ -6,29 +6,17 @@ entity.entity_queue.collection: requirements: _permission: 'administer entityqueue+manipulate entityqueues+manipulate all entityqueues' -entity.entity_queue.add_form: - path: '/admin/structure/entityqueue/add' - defaults: - _entity_form: 'entity_queue.add' - _title: 'Add Entity Queue' - requirements: - _permission: 'administer entityqueue' - -entity.entity_queue.edit_form: +entity.entity_queue.canonical: path: '/admin/structure/entityqueue/{entity_queue}' defaults: - _entity_form: 'entity_queue.edit' - _title: 'Edit Entity Queue' - requirements: - _permission: 'administer entityqueue' - -entity.entity_queue.delete_form: - path: '/admin/structure/entityqueue/{entity_queue}/delete' - defaults: - _entity_form: 'entity_queue.delete' - _title: 'Delete Entity Queue' + _controller: '\Drupal\entityqueue\Controller\EntityQueueUIController::queueCanonicalRedirect' + _title_callback: '\Drupal\Core\Entity\Controller\EntityController::title' + options: + parameters: + entity_queue: + type: entity:entity_queue requirements: - _permission: 'administer entityqueue' + _entity_access: entity_queue.update entity.entity_queue.enable: path: '/admin/structure/entityqueue/{entity_queue}/enable' diff --git a/src/Controller/EntityQueueUIController.php b/src/Controller/EntityQueueUIController.php index 5fbedea..f9f7cc7 100644 --- a/src/Controller/EntityQueueUIController.php +++ b/src/Controller/EntityQueueUIController.php @@ -9,12 +9,14 @@ use Drupal\Core\Ajax\ReplaceCommand; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Routing\RouteMatch; +use Drupal\entityqueue\Entity\EntitySubqueue; use Drupal\Core\Routing\RouteMatchInterface; use Drupal\Core\Url; use Drupal\entityqueue\EntityQueueInterface; use Drupal\entityqueue\EntityQueueRepositoryInterface; use Drupal\entityqueue\EntitySubqueueInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; /** @@ -44,6 +46,28 @@ class EntityQueueUIController extends ControllerBase { ); } + /** + * Redirects to the canonical URL of an entity queue. + * + * @param \Drupal\entityqueue\EntityQueueInterface $entity_queue + * The entity queue. + * + * @return \Symfony\Component\HttpFoundation\RedirectResponse + * A redirect response object. + */ + public function queueCanonicalRedirect(EntityQueueInterface $entity_queue) { + $handler = $entity_queue->getHandlerPlugin(); + if ($handler->supportsMultipleSubqueues()) { + $url = $entity_queue->toUrl('subqueue-list'); + } + else { + $subqueue = EntitySubqueue::load($entity_queue->id()); + $url = $subqueue->toUrl('edit-form'); + } + + return new RedirectResponse($url->toString()); + } + /** * Provides a list of all the subqueues of an entity queue. * diff --git a/src/Entity/EntityQueue.php b/src/Entity/EntityQueue.php index 7cb871d..5b7b22f 100644 --- a/src/Entity/EntityQueue.php +++ b/src/Entity/EntityQueue.php @@ -24,6 +24,9 @@ use Drupal\entityqueue\EntityQueueInterface; * "delete" = "Drupal\Core\Entity\EntityDeleteForm" * }, * "access" = "Drupal\entityqueue\EntityQueueAccessControlHandler", + * "route_provider" = { + * "html" = "\Drupal\Core\Entity\Routing\AdminHtmlRouteProvider", + * }, * }, * admin_permission = "administer entityqueue", * config_prefix = "entity_queue", @@ -35,7 +38,8 @@ use Drupal\entityqueue\EntityQueueInterface; * "status" = "status" * }, * links = { - * "edit-form" = "/admin/structure/entityqueue/{entity_queue}", + * "add-form" = "/admin/structure/entityqueue/add", + * "edit-form" = "/admin/structure/entityqueue/{entity_queue}/edit", * "delete-form" = "/admin/structure/entityqueue/{entity_queue}/delete", * "collection" = "/admin/structure/entityqueue", * "enable" = "/admin/structure/entityqueue/{entity_queue}/enable", -- GitLab