Unverified Commit 1519f257 authored by Lucas Hedding's avatar Lucas Hedding Committed by Lucas Hedding
Browse files

Issue #3310748 by heddn, akalam: Delete menu link

parent cbcc69b5
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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');
  }

}
+1 −0
Original line number Diff line number Diff line
@@ -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"
+8 −3
Original line number Diff line number Diff line
@@ -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'] = [
@@ -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');
        }
+34 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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}
   */
+5 −0
Original line number Diff line number Diff line
@@ -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');