diff --git a/core/modules/menu/lib/Drupal/menu/MenuFormController.php b/core/modules/menu/lib/Drupal/menu/MenuFormController.php index 0e04e2d..6573865 100644 --- a/core/modules/menu/lib/Drupal/menu/MenuFormController.php +++ b/core/modules/menu/lib/Drupal/menu/MenuFormController.php @@ -354,31 +354,27 @@ protected function buildOverviewTreeForm($tree, $delta) { ); // Build a list of operations. $operations = array(); - $links = array(); - $links['edit'] = array( + $operations['edit'] = array( 'title' => t('Edit'), 'href' => 'admin/structure/menu/item/' . $item['mlid'] . '/edit', ); - $operations['edit'] = array('#type' => 'link', '#title' => t('Edit'), '#href' => 'admin/structure/menu/item/' . $item['mlid'] . '/edit'); // Only items created by the menu module can be deleted. - if ($item['module'] == 'menu' || $item['updated'] == 1) { - $links['delete'] = array( + if ($item->access('delete')) { + $operations['delete'] = array( 'title' => t('Delete'), 'href' => 'admin/structure/menu/item/' . $item['mlid'] . '/delete', ); - $operations['delete'] = array('#type' => 'link', '#title' => t('Delete'), '#href' => 'admin/structure/menu/item/' . $item['mlid'] . '/delete'); } // Set the reset column. - elseif ($item['module'] == 'system' && $item['customized']) { - $links['reset'] = array( + elseif ($item->access('reset')) { + $operations['reset'] = array( 'title' => t('Reset'), 'href' => 'admin/structure/menu/item/' . $item['mlid'] . '/reset', ); - $operations['reset'] = array('#type' => 'link', '#title' => t('Reset'), '#href' => 'admin/structure/menu/item/' . $item['mlid'] . '/reset'); } $form[$mlid]['operations'] = array( '#type' => 'operations', - '#links' => $links, + '#links' => $operations, ); } diff --git a/core/modules/menu/lib/Drupal/menu/MenuListController.php b/core/modules/menu/lib/Drupal/menu/MenuListController.php index 139c40b..f5d5167 100644 --- a/core/modules/menu/lib/Drupal/menu/MenuListController.php +++ b/core/modules/menu/lib/Drupal/menu/MenuListController.php @@ -53,12 +53,14 @@ public function getOperations(EntityInterface $entity) { if (isset($operations['delete'])) { $operations['delete']['title'] = t('Delete menu'); } - $operations['add'] = array( - 'title' => t('Add link'), - 'href' => $uri['path'] . '/add', - 'options' => $uri['options'], - 'weight' => 20, - ); + if ($entity->access('edit')) { + $operations['add'] = array( + 'title' => t('Add link'), + 'href' => $uri['path'] . '/add', + 'options' => $uri['options'], + 'weight' => 20, + ); + } return $operations; } diff --git a/core/modules/menu/menu.routing.yml b/core/modules/menu/menu.routing.yml index c5a0d10..2ae09e5 100644 --- a/core/modules/menu/menu.routing.yml +++ b/core/modules/menu/menu.routing.yml @@ -24,7 +24,7 @@ menu_link_add: defaults: _content: '\Drupal\menu\Controller\MenuController::addLink' requirements: - _entity_create_access: 'menu_link' + _entity_access: 'menu.edit' menu_link_edit: pattern: '/admin/structure/menu/item/{menu_link}/edit' diff --git a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkAccessController.php b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkAccessController.php index ae7f438..f859fe8 100644 --- a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkAccessController.php +++ b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkAccessController.php @@ -31,7 +31,7 @@ protected function checkAccess(EntityInterface $entity, $operation, $langcode, A case 'delete': // Only items created by the menu module can be deleted. - return $entity->module == 'menu' || $entity->updated; + return $entity->module == 'menu' || $entity->updated == 1; } }