You are here

public function ToolbarHandler::toolbar in Devel 8.3

Same name and namespace in other branches
  1. 8 src/ToolbarHandler.php \Drupal\devel\ToolbarHandler::toolbar()
  2. 8.2 src/ToolbarHandler.php \Drupal\devel\ToolbarHandler::toolbar()
  3. 4.x src/ToolbarHandler.php \Drupal\devel\ToolbarHandler::toolbar()

Hook bridge.

Return value

array The devel toolbar items render array.

See also

hook_toolbar()

File

src/ToolbarHandler.php, line 86

Class

ToolbarHandler
Toolbar integration handler.

Namespace

Drupal\devel

Code

public function toolbar() {
  $items['devel'] = [
    '#cache' => [
      'contexts' => [
        'user.permissions',
      ],
    ],
  ];
  if ($this->account
    ->hasPermission('access devel information')) {
    $items['devel'] += [
      '#type' => 'toolbar_item',
      '#weight' => 999,
      'tab' => [
        '#type' => 'link',
        '#title' => $this
          ->t('Devel'),
        '#url' => Url::fromRoute('devel.admin_settings'),
        '#attributes' => [
          'title' => $this
            ->t('Development menu'),
          'class' => [
            'toolbar-icon',
            'toolbar-icon-devel',
          ],
        ],
      ],
      'tray' => [
        '#heading' => $this
          ->t('Development menu'),
        'devel_menu' => [
          // Currently devel menu is uncacheable, so instead of poisoning the
          // entire page cache we use a lazy builder.
          // @see \Drupal\devel\Plugin\Menu\DestinationMenuLink
          // @see \Drupal\devel\Plugin\Menu\RouteDetailMenuItem
          '#lazy_builder' => [
            ToolbarHandler::class . ':lazyBuilder',
            [],
          ],
          // Force the creation of the placeholder instead of rely on the
          // automatical placeholdering or otherwise the page results
          // uncacheable when max-age 0 is bubbled up.
          '#create_placeholder' => TRUE,
        ],
        'configuration' => [
          '#type' => 'link',
          '#title' => $this
            ->t('Configure'),
          '#url' => Url::fromRoute('devel.toolbar.settings_form'),
          '#options' => [
            'attributes' => [
              'class' => [
                'edit-devel-toolbar',
              ],
            ],
          ],
        ],
      ],
      '#attached' => [
        'library' => 'devel/devel-toolbar',
      ],
    ];
  }
  return $items;
}