Update to Drupal 8.2.0. For more information, see https://www.drupal.org/project/drupal/releases/8.2.0
This commit is contained in:
parent
2f563ab520
commit
f1c8716f57
1732 changed files with 52334 additions and 11780 deletions
84
core/modules/block_place/block_place.module
Normal file
84
core/modules/block_place/block_place.module
Normal file
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Controls the placement of blocks from all pages.
|
||||
*/
|
||||
|
||||
use Drupal\Core\Routing\RouteMatchInterface;
|
||||
use Drupal\Core\Url;
|
||||
|
||||
/**
|
||||
* Implements hook_help().
|
||||
*/
|
||||
function block_place_help($route_name, RouteMatchInterface $route_match) {
|
||||
switch ($route_name) {
|
||||
case 'help.page.block_place':
|
||||
$output = '<h3>' . t('About') . '</h3>';
|
||||
$output .= '<p>' . t('The Place Blocks module allows you to place blocks from every page. For more information, see the <a href=":blocks-documentation">online documentation for the Place Blocks module</a>.', [':blocks-documentation' => 'https://www.drupal.org/documentation/modules/block_place/']) . '</p>';
|
||||
$output .= '<h3>' . t('Uses') . '</h3>';
|
||||
$output .= '<p>' . 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') . '</p>';
|
||||
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('<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;
|
||||
}
|
Reference in a new issue