gin_toolbar_custom_menu-1.0.0/src/Render/Element/GinToolbarCustomMenu.php

src/Render/Element/GinToolbarCustomMenu.php
<?php

namespace Drupal\gin_toolbar_custom_menu\Render\Element;

use Drupal\Core\Security\TrustedCallbackInterface;

/**
 * Gin Toolbar Custom Menu.
 *
 * @package Drupal\gin_toolbar_custom_menu\Render\Element
 */
class GinToolbarCustomMenu implements TrustedCallbackInterface {

  /**
   * {@inheritdoc}
   */
  public static function trustedCallbacks(): array {
    return ['preRenderTray'];
  }

  /**
   * Renders the toolbar's administration tray.
   *
   * This is a clone of core's toolbar_prerender_toolbar_administration_tray()
   * function, which adds active trail information and which uses setMaxDepth(4)
   * instead of setTopLevelOnly() in case the Admin Toolbar module is installed.
   *
   * @param array $build
   *   A renderable array.
   *
   * @return array
   *   The updated renderable array.
   *
   * @see toolbar_prerender_toolbar_administration_tray()
   */
  public static function preRenderTray(array $build): array {
    $build['#cache']['tags'][] = 'gin_toolbar_custom_menu:settings';
    $settings_to_apply = _gin_toolbar_custom_menu_get_setting();

    if (empty($settings_to_apply)) {
      return $build;
    }

    $menu_items = _gin_toolbar_custom_menu_get_menu_items($build);
    if (!empty($menu_items)) {
      $keep_admin_menu = \Drupal::config('gin_toolbar_custom_menu.settings')->get('keep_admin_menu');

      if ($keep_admin_menu) {
        $build["administration_menu"]["#items"] += $menu_items;
      }
      else {
        if (isset($build["administration_menu"]["#items"]["admin_toolbar_tools.help"])) {
          $menu_items = array_merge(["admin_toolbar_tools.help" => $build["administration_menu"]["#items"]["admin_toolbar_tools.help"]], $menu_items);
        }

        $build["administration_menu"]["#items"] = $menu_items;
      }

      $build['#attached']['library'][] = 'gin_toolbar_custom_menu/toolbar';
    }

    return $build;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc