forked from a64f7bb4-7358-4778-9fbe-3b882c34cc1d/v1
133 lines
3.9 KiB
PHP
133 lines
3.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* toolbar.theme
|
|
*/
|
|
|
|
use Drupal\gin\GinUserPicture;
|
|
use Drupal\gin\GinSettings;
|
|
|
|
/**
|
|
* Implements hook_preprocess_menu().
|
|
*/
|
|
function gin_preprocess_menu(&$variables) {
|
|
if (isset($variables['theme_hook_original']) && $variables['theme_hook_original'] == 'menu__toolbar__admin') {
|
|
// Check if the admin_toolbar module is installed.
|
|
foreach ($variables['items'] as $key => $item) {
|
|
$gin_id = str_replace('.', '-', $key);
|
|
$variables['items'][$key]['gin_id'] = $gin_id;
|
|
}
|
|
|
|
// Move config & help menu items to end.
|
|
$to_move = ['system.admin_config', 'help.main'];
|
|
foreach ($to_move as $id) {
|
|
$index = array_search($id, array_keys($variables['items']));
|
|
if (is_numeric($index)) {
|
|
$variables['items'] += array_splice($variables['items'], $index, 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_preprocess_menu__toolbar__gin().
|
|
*/
|
|
function gin_preprocess_menu__toolbar__gin(&$variables) {
|
|
// Get theme settings.
|
|
/** @var \Drupal\gin\GinSettings $settings */
|
|
$settings = \Drupal::classResolver(GinSettings::class);
|
|
$logo_path = $settings->getDefault('logo.path');
|
|
$logo_default = $settings->getDefault('logo.use_default');
|
|
$variables['icon_default'] = $logo_default;
|
|
|
|
if (!$logo_default) {
|
|
$variables['icon_path'] = $logo_path;
|
|
}
|
|
|
|
// Expose Toolbar variant.
|
|
$variables['toolbar_variant'] = $settings->get('classic_toolbar');
|
|
}
|
|
|
|
/**
|
|
* Implements toolbar preprocess.
|
|
*/
|
|
function gin_preprocess_toolbar(&$variables) {
|
|
// Use single `:` to make ControllerResolver get the class from definition.
|
|
// @see Drupal\Core\Controller\ControllerResolver->createController().
|
|
$variables['user_picture'] = [
|
|
'#lazy_builder' => [
|
|
GinUserPicture::class . ':build',
|
|
[],
|
|
],
|
|
'#create_placeholder' => TRUE,
|
|
];
|
|
|
|
// Expose Toolbar variant.
|
|
/** @var \Drupal\gin\GinSettings $settings */
|
|
$settings = \Drupal::classResolver(GinSettings::class);
|
|
$variables['toolbar_variant'] = $settings->get('classic_toolbar');
|
|
}
|
|
|
|
/**
|
|
* Implements toolbar preprocess.
|
|
*/
|
|
function gin_preprocess_toolbar__gin__secondary(&$variables) {
|
|
// Expose Toolbar variant.
|
|
/** @var \Drupal\gin\GinSettings $settings */
|
|
$settings = \Drupal::classResolver(GinSettings::class);
|
|
$variables['toolbar_variant'] = $settings->get('classic_toolbar');
|
|
|
|
if ($variables['toolbar_variant'] !== 'classic') {
|
|
// Move Admin Toolbar Search to start.
|
|
$toolbar_search = array_search('administration_search', array_keys($variables['tabs']));
|
|
if (is_numeric($toolbar_search)) {
|
|
foreach ($variables['tabs'] as $key => $item) {
|
|
if ($key === 'administration_search') {
|
|
array_unshift($variables['tabs'], $variables['tabs'][$key]);
|
|
unset($variables['tabs'][$key]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Move user tab to end.
|
|
$toolbar_user = array_search('user', array_keys($variables['tabs']));
|
|
if (is_numeric($toolbar_user)) {
|
|
foreach ($variables['tabs'] as $key => $item) {
|
|
if ($key === 'user') {
|
|
$user_tab = $variables['tabs'][$key];
|
|
unset($variables['tabs'][$key]);
|
|
$variables['tabs'][$key] = $user_tab;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Toolbar alter().
|
|
*/
|
|
function gin_theme_suggestions_toolbar_alter(array &$suggestions, array $variables) {
|
|
/** @var \Drupal\gin\GinSettings $settings */
|
|
$settings = \Drupal::classResolver(GinSettings::class);
|
|
$toolbar = $settings->get('classic_toolbar');
|
|
|
|
$suggestions[] = 'toolbar__gin';
|
|
|
|
// Only if Classic Toolbar is disabled.
|
|
if ($toolbar !== 'classic') {
|
|
if ($variables['element']['#attributes']['id'] === 'toolbar-administration-secondary') {
|
|
$suggestions[] = 'toolbar__gin__secondary';
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Toolbar menu alter().
|
|
*/
|
|
function gin_theme_suggestions_menu_alter(array &$suggestions, array $variables) {
|
|
if (isset($variables['theme_hook_original']) && $variables['theme_hook_original'] == 'menu__toolbar__admin') {
|
|
$suggestions[] = 'menu__toolbar__gin';
|
|
}
|
|
}
|