SystemManager::getAdminBlock

public SystemManager::getAdminBlock(MenuLinkInterface $instance)

Provide a single block on the administration overview page.

Parameters

\Drupal\Core\Menu\MenuLinkInterface $instance: The menu item to be displayed.

Return value

array An array of menu items, as expected by admin-block-content.html.twig.

File

core/modules/system/src/SystemManager.php, line 184

Class

SystemManager
System Manager Service.

Namespace

Drupal\system

Code

public function getAdminBlock(MenuLinkInterface $instance) {
  $content = array();
  // Only find the children of this link.
  $link_id = $instance->getPluginId();
  $parameters = new MenuTreeParameters();
  $parameters->setRoot($link_id)->excludeRoot()->setTopLevelOnly()->onlyEnabledLinks();
  $tree = $this->menuTree->load(NULL, $parameters);
  $manipulators = array(
    array('callable' => 'menu.default_tree_manipulators:checkAccess'),
    array('callable' => 'menu.default_tree_manipulators:generateIndexAndSort'),
  );
  $tree = $this->menuTree->transform($tree, $manipulators);
  foreach ($tree as $key => $element) {
    // Only render accessible links.
    if (!$element->access->isAllowed()) {
      // @todo Bubble cacheability metadata of both accessible and
      //   inaccessible links. Currently made impossible by the way admin
      //   blocks are rendered.
      continue;
    }

    /** @var $link \Drupal\Core\Menu\MenuLinkInterface */
    $link = $element->link;
    $content[$key]['title'] = $link->getTitle();
    $content[$key]['options'] = $link->getOptions();
    $content[$key]['description'] = $link->getDescription();
    $content[$key]['url'] = $link->getUrlObject();
  }
  ksort($content);
  return $content;
}
doc_Drupal
2016-10-29 09:45:48
Comments
Leave a Comment

Please login to continue.