SystemController::overview

public SystemController::overview($link_id)

Provide the administration overview page.

Parameters

string $link_id: The ID of the administrative path link for which to display child links.

Return value

array A renderable array of the administration overview page.

File

core/modules/system/src/Controller/SystemController.php, line 112

Class

SystemController
Returns responses for System routes.

Namespace

Drupal\system\Controller

Code

public function overview($link_id) {
  // Check for status report errors.
  if ($this->systemManager->checkRequirements() && $this->currentUser()->hasPermission('administer site configuration')) {
    drupal_set_message($this->t('One or more problems were detected with your Drupal installation. Check the <a href=":status">status report</a> for more information.', array(':status' => $this->url('system.status'))), 'error');
  }
  // Load all menu links below it.
  $parameters = new MenuTreeParameters();
  $parameters->setRoot($link_id)->excludeRoot()->setTopLevelOnly()->onlyEnabledLinks();
  $tree = $this->menuLinkTree->load(NULL, $parameters);
  $manipulators = array(
    array('callable' => 'menu.default_tree_manipulators:checkAccess'),
    array('callable' => 'menu.default_tree_manipulators:generateIndexAndSort'),
  );
  $tree = $this->menuLinkTree->transform($tree, $manipulators);
  $tree_access_cacheability = new CacheableMetadata();
  $blocks = array();
  foreach ($tree as $key => $element) {
    $tree_access_cacheability = $tree_access_cacheability->merge(CacheableMetadata::createFromObject($element->access));

    // Only render accessible links.
    if (!$element->access->isAllowed()) {
      continue;
    }

    $link = $element->link;
    $block['title'] = $link->getTitle();
    $block['description'] = $link->getDescription();
    $block['content'] = array(
      '#theme' => 'admin_block_content',
      '#content' => $this->systemManager->getAdminBlock($link),
    );

    if (!empty($block['content']['#content'])) {
      $blocks[$key] = $block;
    }
  }

  if ($blocks) {
    ksort($blocks);
    $build = [
      '#theme' => 'admin_page',
      '#blocks' => $blocks,
    ];
    $tree_access_cacheability->applyTo($build);
    return $build;
  }
  else {
    $build = [
      '#markup' => $this->t('You do not have any administrative items.'),
    ];
    $tree_access_cacheability->applyTo($build);
    return $build;
  }
}
doc_Drupal
2016-10-29 09:45:44
Comments
Leave a Comment

Please login to continue.