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