v1/web/themes/contrib/gin/includes/toolbar.theme

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';
}
}