' . t('About') . ''; $output .= '

' . t('The Place Blocks module allows you to place blocks from every page. For more information, see the online documentation for the Place Blocks module.', [':blocks-documentation' => 'https://www.drupal.org/documentation/modules/block_place/']) . '

'; $output .= '

' . t('Uses') . '

'; $output .= '

' . t('Block placement is specific to each theme on your site. This module allows you to place blocks in the context of your content pages.') . '

'; return $output; } } /** * Implements hook_toolbar(). */ 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('')->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('', [], ['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; }