Loading src/Controller/GroupContentMenuController.php +13 −0 Original line number Diff line number Diff line Loading @@ -184,4 +184,17 @@ class GroupContentMenuController extends GroupContentController { return $this->entityFormBuilder()->getForm($menu_link_content); } /** * Provides the menu link delete form. * * @param \Drupal\menu_link_content\MenuLinkContentInterface $menu_link_content * The menu link content. * * @return array * Returns the menu link delete form. */ public function deleteLink(MenuLinkContentInterface $menu_link_content) { return $this->entityFormBuilder()->getForm($menu_link_content, 'delete'); } } src/Entity/GroupContentMenu.php +1 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ use Drupal\group_content_menu\GroupContentMenuInterface; * "add-page" = "/group/{group}/menu/add", * "add-menu-link" = "/group/{group}/menu/{group_content_menu}/add-link", * "edit-menu-link" = "/group/{group}/menu/{group_content_menu}/link/{menu_link_content}", * "delete-menu-link" = "/group/{group}/menu/{group_content_menu}/link/{menu_link_content}/delete", * "edit-form" = "/group/{group}/menu/{group_content_menu}/edit", * "delete-form" = "/group/{group}/menu/{group_content_menu}/delete", * "collection" = "/group/{group}/menus" Loading src/Form/GroupContentMenuForm.php +8 −3 Original line number Diff line number Diff line Loading @@ -285,7 +285,8 @@ class GroupContentMenuForm extends ContentEntityForm { 'menu_link_content' => $link->getMetaData()['entity_id'], ]); // Bring the user back to the menu overview. $operations['edit']['query'] = ['destination' => Url::fromRouteMatch($this->getRouteMatch())->toString()]; $operations['edit']['query'] = $this->getRedirectDestination()->getAsArray(); // Links can either be reset or deleted, not both. if ($link->isResettable()) { $operations['reset'] = [ Loading @@ -293,8 +294,12 @@ class GroupContentMenuForm extends ContentEntityForm { 'url' => Url::fromRoute('menu_ui.link_reset', ['menu_link_plugin' => $link->getPluginId()]), ]; } elseif ($delete_link = $link->getDeleteRoute()) { $operations['delete']['url'] = $delete_link; if ($link->isDeletable()) { $operations['delete']['url'] = Url::fromRoute('entity.group_content_menu.delete_link', [ 'group' => $group->id(), 'group_content_menu' => $this->entity->id(), 'menu_link_content' => $link->getMetaData()['entity_id'], ]); $operations['delete']['query'] = $this->getRedirectDestination()->getAsArray(); $operations['delete']['title'] = $this->t('Delete'); } Loading src/Routing/GroupContentMenuRouteProvider.php +34 −2 Original line number Diff line number Diff line Loading @@ -22,8 +22,11 @@ class GroupContentMenuRouteProvider extends DefaultHtmlRouteProvider { if ($add_menu_link = $this->getAddMenuLink($entity_type)) { $collection->add('entity.group_content_menu.add_link', $add_menu_link); } if ($add_menu_link = $this->getEditMenuLink($entity_type)) { $collection->add('entity.group_content_menu.edit_link', $add_menu_link); if ($edit_menu_link = $this->getEditMenuLink($entity_type)) { $collection->add('entity.group_content_menu.edit_link', $edit_menu_link); } if ($delete_menu_link = $this->getDeleteMenuLink($entity_type)) { $collection->add('entity.group_content_menu.delete_link', $delete_menu_link); } return $collection; Loading Loading @@ -84,6 +87,35 @@ class GroupContentMenuRouteProvider extends DefaultHtmlRouteProvider { } } /** * Gets the delete-menu-link route. * * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type * The entity type. * * @return \Symfony\Component\Routing\Route|null * The generated route, if available. */ protected function getDeleteMenuLink(EntityTypeInterface $entity_type) { if ($entity_type->hasLinkTemplate('delete-menu-link')) { $route = new Route($entity_type->getLinkTemplate('delete-menu-link')); return $route ->setDefaults([ '_title' => 'Delete menu link', '_controller' => sprintf('%s::deleteLink', GroupContentMenuController::class), ]) ->setRequirement('_group_permission', 'manage group_content_menu') ->setRequirement('_group_installed_content', implode('+', $this->getPluginIds())) ->setOption('parameters', [ 'group' => ['type' => 'entity:group'], 'group_content_menu' => ['type' => 'entity:group_content_menu'], 'menu_link_content' => ['type' => 'entity:menu_link_content'], ]) ->setOption('_group_operation_route', TRUE); } } /** * {@inheritdoc} */ Loading tests/src/Functional/GroupContentMenuTest.php +5 −0 Original line number Diff line number Diff line Loading @@ -228,6 +228,11 @@ class GroupContentMenuTest extends GroupBrowserTestBase { $this->drupalGet('/group/1/menu/1/edit'); $assert->statusCodeEquals(200); // Delete the link $this->drupalGet('/group/1/menu/1/link/2/delete'); $page->pressButton('Delete'); $assert->pageTextContains("The menu link $link_title has been deleted."); // Delete menu. $this->drupalGet('/group/1/menu/1/delete'); $page->pressButton('Delete'); Loading Loading
src/Controller/GroupContentMenuController.php +13 −0 Original line number Diff line number Diff line Loading @@ -184,4 +184,17 @@ class GroupContentMenuController extends GroupContentController { return $this->entityFormBuilder()->getForm($menu_link_content); } /** * Provides the menu link delete form. * * @param \Drupal\menu_link_content\MenuLinkContentInterface $menu_link_content * The menu link content. * * @return array * Returns the menu link delete form. */ public function deleteLink(MenuLinkContentInterface $menu_link_content) { return $this->entityFormBuilder()->getForm($menu_link_content, 'delete'); } }
src/Entity/GroupContentMenu.php +1 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ use Drupal\group_content_menu\GroupContentMenuInterface; * "add-page" = "/group/{group}/menu/add", * "add-menu-link" = "/group/{group}/menu/{group_content_menu}/add-link", * "edit-menu-link" = "/group/{group}/menu/{group_content_menu}/link/{menu_link_content}", * "delete-menu-link" = "/group/{group}/menu/{group_content_menu}/link/{menu_link_content}/delete", * "edit-form" = "/group/{group}/menu/{group_content_menu}/edit", * "delete-form" = "/group/{group}/menu/{group_content_menu}/delete", * "collection" = "/group/{group}/menus" Loading
src/Form/GroupContentMenuForm.php +8 −3 Original line number Diff line number Diff line Loading @@ -285,7 +285,8 @@ class GroupContentMenuForm extends ContentEntityForm { 'menu_link_content' => $link->getMetaData()['entity_id'], ]); // Bring the user back to the menu overview. $operations['edit']['query'] = ['destination' => Url::fromRouteMatch($this->getRouteMatch())->toString()]; $operations['edit']['query'] = $this->getRedirectDestination()->getAsArray(); // Links can either be reset or deleted, not both. if ($link->isResettable()) { $operations['reset'] = [ Loading @@ -293,8 +294,12 @@ class GroupContentMenuForm extends ContentEntityForm { 'url' => Url::fromRoute('menu_ui.link_reset', ['menu_link_plugin' => $link->getPluginId()]), ]; } elseif ($delete_link = $link->getDeleteRoute()) { $operations['delete']['url'] = $delete_link; if ($link->isDeletable()) { $operations['delete']['url'] = Url::fromRoute('entity.group_content_menu.delete_link', [ 'group' => $group->id(), 'group_content_menu' => $this->entity->id(), 'menu_link_content' => $link->getMetaData()['entity_id'], ]); $operations['delete']['query'] = $this->getRedirectDestination()->getAsArray(); $operations['delete']['title'] = $this->t('Delete'); } Loading
src/Routing/GroupContentMenuRouteProvider.php +34 −2 Original line number Diff line number Diff line Loading @@ -22,8 +22,11 @@ class GroupContentMenuRouteProvider extends DefaultHtmlRouteProvider { if ($add_menu_link = $this->getAddMenuLink($entity_type)) { $collection->add('entity.group_content_menu.add_link', $add_menu_link); } if ($add_menu_link = $this->getEditMenuLink($entity_type)) { $collection->add('entity.group_content_menu.edit_link', $add_menu_link); if ($edit_menu_link = $this->getEditMenuLink($entity_type)) { $collection->add('entity.group_content_menu.edit_link', $edit_menu_link); } if ($delete_menu_link = $this->getDeleteMenuLink($entity_type)) { $collection->add('entity.group_content_menu.delete_link', $delete_menu_link); } return $collection; Loading Loading @@ -84,6 +87,35 @@ class GroupContentMenuRouteProvider extends DefaultHtmlRouteProvider { } } /** * Gets the delete-menu-link route. * * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type * The entity type. * * @return \Symfony\Component\Routing\Route|null * The generated route, if available. */ protected function getDeleteMenuLink(EntityTypeInterface $entity_type) { if ($entity_type->hasLinkTemplate('delete-menu-link')) { $route = new Route($entity_type->getLinkTemplate('delete-menu-link')); return $route ->setDefaults([ '_title' => 'Delete menu link', '_controller' => sprintf('%s::deleteLink', GroupContentMenuController::class), ]) ->setRequirement('_group_permission', 'manage group_content_menu') ->setRequirement('_group_installed_content', implode('+', $this->getPluginIds())) ->setOption('parameters', [ 'group' => ['type' => 'entity:group'], 'group_content_menu' => ['type' => 'entity:group_content_menu'], 'menu_link_content' => ['type' => 'entity:menu_link_content'], ]) ->setOption('_group_operation_route', TRUE); } } /** * {@inheritdoc} */ Loading
tests/src/Functional/GroupContentMenuTest.php +5 −0 Original line number Diff line number Diff line Loading @@ -228,6 +228,11 @@ class GroupContentMenuTest extends GroupBrowserTestBase { $this->drupalGet('/group/1/menu/1/edit'); $assert->statusCodeEquals(200); // Delete the link $this->drupalGet('/group/1/menu/1/link/2/delete'); $page->pressButton('Delete'); $assert->pageTextContains("The menu link $link_title has been deleted."); // Delete menu. $this->drupalGet('/group/1/menu/1/delete'); $page->pressButton('Delete'); Loading