block_place_toolbar

block_place_toolbar()

Implements hook_toolbar().

File

core/modules/block_place/block_place.module, line 28
Controls the placement of blocks from all pages.

Code

function block_place_toolbar() {
  // Link to the current page with a query parameter.
  $query = \Drupal::request()->query->all();
  $wrapper_class = '';
  $status_class = '';
  $description = '';
  if (isset($query['block-place'])) {
    $status_class = 'active';
    $wrapper_class = 'is-active';
    $description = t('Exit Place block mode.');
    unset($query['block-place']);
    unset($query['destination']);
  }
  else {
    $status_class = 'inactive';
    $description = t('Show regions to Place blocks.');
    $query['block-place'] = '1';
    // Setting destination is both a work-around for the toolbar "Back to site"
    // link in escapeAdmin.js and used for the destination after picking a
    // block.
    $query['destination'] = Url::fromRoute('<current>')->toString();
  }

  // Remove on Admin routes.
  $admin_route = \Drupal::service('router.admin_context')->isAdminRoute();
  // Remove on Block Demo page.
  $admin_demo = \Drupal::routeMatch()->getRouteName() === 'block.admin_demo';
  $access = (\Drupal::currentUser()->hasPermission('administer blocks') && !$admin_route && !$admin_demo);

  // The 'Place Block' tab is a simple link, with no corresponding tray.
  $items['block_place'] = [
    '#cache' => [
      'contexts' => ['user.permissions', 'url.query_args'],
    ],
    '#type' => 'toolbar_item',
    'tab' => [
      '#access' => $access,
      '#type' => 'link',
      '#title' => t('Place block'),
      '#url' => Url::fromRoute('<current>', [], ['query' => $query]),
      '#attributes' => [
        'title' => $description,
        'class' => ['toolbar-icon', 'toolbar-icon-place-block-' . $status_class],
      ],
    ],
    '#wrapper_attributes' => [
      'class' => ['toolbar-tab', 'block-place-toolbar-tab', $wrapper_class],
    ],
    '#weight' => 100,
    '#attached' => [
      'library' => [
        'block_place/drupal.block_place.icons',
      ],
    ],
  ];
  return $items;
}
doc_Drupal
2016-10-29 08:47:54
Comments
Leave a Comment

Please login to continue.