diff --git a/core/lib/Drupal/Core/Entity/EntityInterface.php b/core/lib/Drupal/Core/Entity/EntityInterface.php index 40a1235..20bbe42 100644 --- a/core/lib/Drupal/Core/Entity/EntityInterface.php +++ b/core/lib/Drupal/Core/Entity/EntityInterface.php @@ -334,12 +334,11 @@ public function isTranslatable(); */ public function initTranslation($langcode); - /* + /** * Returns a list of operation links available for this entity. * * @return array */ public function getOperationLinks(); - } diff --git a/core/modules/block/lib/Drupal/block/BlockListController.php b/core/modules/block/lib/Drupal/block/BlockListController.php index 18c6223..a262ca9 100644 --- a/core/modules/block/lib/Drupal/block/BlockListController.php +++ b/core/modules/block/lib/Drupal/block/BlockListController.php @@ -251,7 +251,7 @@ public function buildForm(array $form, array &$form_state) { 'title' => t('delete'), 'href' => 'admin/structure/block/manage/' . $entity_id . '/delete', ); - $links += $entity->getOperationLinks(); + $links += $entities[$entity_id]->getOperationLinks(); $form['blocks'][$entity_id]['operations'] = array( '#type' => 'operations', '#links' => $links, diff --git a/core/modules/block/lib/Drupal/block/BlockPluginInterface.php b/core/modules/block/lib/Drupal/block/BlockPluginInterface.php index 1887816..4247dcd 100644 --- a/core/modules/block/lib/Drupal/block/BlockPluginInterface.php +++ b/core/modules/block/lib/Drupal/block/BlockPluginInterface.php @@ -102,4 +102,11 @@ public function submit($form, &$form_state); */ public function build(); + /** + * Returns a list of operation links available for this block. + * + * @return array + */ + public function getOperationLinks(); + } diff --git a/core/modules/menu/lib/Drupal/menu/Plugin/Block/MenuBlock.php b/core/modules/menu/lib/Drupal/menu/Plugin/Block/MenuBlock.php index 30ea894..0e83734 100644 --- a/core/modules/menu/lib/Drupal/menu/Plugin/Block/MenuBlock.php +++ b/core/modules/menu/lib/Drupal/menu/Plugin/Block/MenuBlock.php @@ -31,18 +31,4 @@ public function build() { return menu_tree($menu); } - /** - * {@inheritdoc} - */ - public function getOperationLinks() { - $links = array(); - if (user_access('administer menu')) { - list(, $menu) = explode(':', $this->getPluginId(), '2'); - list(, $menu) = explode('-', $menu, 2); - $links['menu-edit']['href'] = 'admin/structure/menu/manage/' . $menu . '/edit'; - $links['menu-edit']['title'] = t('Edit menu'); - } - return $links; - } - } diff --git a/core/modules/system/lib/Drupal/system/Plugin/Block/SystemMenuBlock.php b/core/modules/system/lib/Drupal/system/Plugin/Block/SystemMenuBlock.php index 09e39a8..8aef210 100644 --- a/core/modules/system/lib/Drupal/system/Plugin/Block/SystemMenuBlock.php +++ b/core/modules/system/lib/Drupal/system/Plugin/Block/SystemMenuBlock.php @@ -10,6 +10,9 @@ use Drupal\block\BlockBase; use Drupal\Component\Annotation\Plugin; use Drupal\Core\Annotation\Translation; +use Drupal\Core\Entity\EntityStorageControllerInterface; +use Drupal\Core\Plugin\ContainerFactoryPluginInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a 'System Menu' block. @@ -46,10 +49,10 @@ public function build() { * {@inheritdoc} */ public function getOperationLinks() { + list(, $menu) = explode(':', $this->getPluginId()); + $links = array(); if (user_access('administer menu')) { - list(, $menu) = explode(':', $this->getPluginId(), '2'); - list(, $menu) = explode('-', $menu, 2); $links['menu-edit']['href'] = 'admin/structure/menu/manage/' . $menu . '/edit'; $links['menu-edit']['title'] = t('Edit menu'); } diff --git a/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php b/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php index f12e2a6..a5648e2 100644 --- a/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php +++ b/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php @@ -60,4 +60,16 @@ class Menu extends ConfigEntityBase implements MenuInterface { */ public $description; + /** + * {@inheritdoc} + */ + public function getOperationLinks() { + $links = parent::getOperationLinks(); + if (user_access('administer menu')) { + $links['menu-edit']['href'] = 'admin/structure/menu/manage/' . $this->id() . '/edit'; + $links['menu-edit']['title'] = t('Edit menu'); + } + return $links; + } + }