You are here

public static function GinToolbar::preRenderTray in Gin Toolbar 8

Renders the toolbar's administration tray.

This is a clone of core's toolbar_prerender_toolbar_administration_tray() function, which adds active trail information and which uses setMaxDepth(4) instead of setTopLevelOnly() in case the Admin Toolbar module is installed.

Parameters

array $build: A renderable array.

Return value

array The updated renderable array.

See also

toolbar_prerender_toolbar_administration_tray()

File

src/Render/Element/GinToolbar.php, line 37

Class

GinToolbar
Class GinToolbar.

Namespace

Drupal\gin_toolbar\Render\Element

Code

public static function preRenderTray(array $build) {
  $menu_tree = \Drupal::service('toolbar.menu_tree');
  $activeTrail = \Drupal::service('gin_toolbar.active_trail')
    ->getActiveTrailIds('admin');
  $parameters = (new MenuTreeParameters())
    ->setActiveTrail($activeTrail)
    ->setRoot('system.admin')
    ->excludeRoot()
    ->setTopLevelOnly()
    ->onlyEnabledLinks();
  if (\Drupal::moduleHandler()
    ->moduleExists('admin_toolbar')) {
    $parameters
      ->setMaxDepth(4);
  }
  $tree = $menu_tree
    ->load('admin', $parameters);
  $manipulators = [
    [
      'callable' => 'menu.default_tree_manipulators:checkAccess',
    ],
    [
      'callable' => 'menu.default_tree_manipulators:generateIndexAndSort',
    ],
    [
      'callable' => 'gin_toolbar_tools_menu_navigation_links',
    ],
  ];
  $tree = $menu_tree
    ->transform($tree, $manipulators);
  $build['administration_menu'] = $menu_tree
    ->build($tree);
  $build['#cache']['contexts'][] = 'route.menu_active_trails:admin';
  return $build;
}