seaside_admin_toolbar-8.x-1.13/seaside_admin_toolbar.module

seaside_admin_toolbar.module
<?php

use Drupal\user\Entity\User;
/**
 * @file
 * Seaside - Administration toolbar.
 */

use Drupal\Core\Url;
use Drupal\Core\ConfigConfigFactory;

/**
 * Implements hook_preprocess_HOOK().
 */
function seaside_admin_toolbar_preprocess_html(&$variables) {
  // Add adminimal-admin-toolbar class to the body.
  if (_seaside_admin_toolbar_is_access()) {
    $variables['attributes']['class'][] = 'seaside-admin-toolbar';

    $config = \Drupal::service('config.factory')->getEditable('seaside_admin.settings');
    if(empty($config)) {
      $config = \Drupal::service('config.factory')->getEditable('seaside_admin_toolbar.config');
      $profile = (!empty($config->get('color_profile'))) ? $config->get('color_profile') : 'brighton';
    } else {
      $profile = (!empty($config->get('seaside_admin_color_profile'))) ? $config->get('seaside_admin_color_profile') : 'brighton';
      function menu_state_toggle($menu_id, $enabled = TRUE) {
        $menu_link_manager = \Drupal::service('plugin.manager.menu.link');
        $front_page_link = $menu_link_manager->getDefinition($menu_id);
        $front_page_link['enabled'] = $enabled ? 1 : 0;
        $menu_link_manager->updateDefinition($menu_id, $front_page_link);
        $cache = \Drupal::cache('menu');
        $cache->deleteAll();
      }

      menu_state_toggle('seaside_admin_toolbar.seaside_admin_toolbar_form', FALSE);
    }
    $variables['attributes']['class'][] = 'seaside-admin-toolbar-' . $profile;
  }
}

/**
 * Implements hook_page_attachments_alter().
 */
function seaside_admin_toolbar_page_attachments_alter(array &$page) {
  // Attaches css assets globally.
  if (_seaside_admin_toolbar_is_access()) {
    $page['#attached']['library'][] = 'seaside_admin_toolbar/seaside-admin-toolbar';

  }
}

/**
 * Implements hook_theme_registry_alter
 */
function seaside_admin_toolbar_theme_registry_alter(&$theme_registry) {
  $theme_registry['toolbar']['path'] = drupal_get_path('module', 'seaside_admin_toolbar') . '/templates';
}


/**
 * Implements hook_toolbar_alter().
 */
function seaside_admin_toolbar_toolbar_alter(&$items) {
  // Add class to the user tab so it can be moved to the right.
  $admin_items = $items['administration'];

  $items = array();
  $items['administration'] = $admin_items;

  $items['administration']['tab'] =  $items['administration']['tray'];

  $logo = '';

  if(!empty(\Drupal::service('config.factory')->getEditable('seaside_admin.settings')->get('logo')['path'])) {
    $logo = file_create_url(\Drupal::service('config.factory')->getEditable('seaside_admin.settings')->get('logo')['path']);
  }
  elseif (!empty(\Drupal::service('config.factory')->getEditable('system.theme.global')->get('logo')['path'])) {
    $logo = file_create_url(\Drupal::service('config.factory')->getEditable('system.theme.global')->get('logo')['path']);
  }

  if(!empty($logo)) {
    $items['administration']['tab']['#prefix'] = '
  <div class="logo">
    <a href="/"><img class="logo" alt="Theme logo" src="'. $logo .'"/></a>
  </div>
  <div class="toolbar-tab left">
    <div class="menu-toggle">
      <span></span>
      <span></span>
      <span></span>
    </div>';
  } else {
    $items['administration']['tab']['#prefix'] = '<div class="toolbar-tab left">';
  }

  $items['administration']['tab']['#suffix'] = '</div>';

  unset($items['administration']['tray']);

  // Add a search field to the toolbar. The search field employs no toolbar
  // module theming functions.

  //$entity_id = $this->searchPageRepository->getDefaultSearchPage();


  //  $entity_id = \Drupal::service('config.factory')->getEditable('search.settings')->get('default_page');
  //  if(isset($entity_id)){
  //    $f ='';
  //  }
  //  $route = 'search.view_' . $entity_id;
  //  $items['#method'] = 'post';
  //
  //  $items['keys'] = [
  //    '#type' => 'search',
  //    '#title' => t('Search'),
  //    '#title_display' => 'invisible',
  //    '#size' => 15,
  //    '#default_value' => '',
  //    '#attributes' => ['title' => t('Enter the terms you wish to search for.')],
  //  ];
  //
  //  $items['actions'] = ['#type' => 'actions'];
  //  $items['actions']['submit'] = [
  //    '#type' => 'submit',
  //    '#value' => t('Search'),
  //    // Prevent op from showing up in the query string.
  //    '#name' => '',
  //  ];
  //
  //  $items['global_search'] = [
  //    '#type' => 'toolbar_item',
  //    'tab' => [
  //      '#type' => 'search',
  //      '#title' => t('Search'),
  //      '#title_display' => 'invisible',
  //      '#size' => 15,
  //      '#default_value' => '',
  //      '#attributes' => ['title' => t('Enter the terms you wish to search for.')],
  //      '#action' => Url::fromRoute($route)
  //    ],
  //    '#weight' => 200,
  //  ];


  //  User menu
  $user = User::load(\Drupal::currentUser()->id());

  // Check for user profile pic.  If nothing exists go to gravatar.
  $image_source = 'https://www.gravatar.com/avatar/' . md5(strtolower(trim($user->get('mail')->value))) . '?s=40&r=pg&d=mp';

  if(!$user->get('user_picture')->isEmpty()) {
    $pic_uri = $user->get('user_picture')->entity->getFileUri();
    $pic_url = file_create_url($pic_uri);

    $image_source = $pic_url;
  }

  $items['user_menu'] = [
    '#type' => 'toolbar_item',
    'tab' => [
      '#options' => [
        'attributes' => [
          'class' => ['right', 'user-menu'],
        ],
      ],
      '#prefix' => '<div class="toolbar-tab right"><ul class="toolbar-menu"><li class="menu-item menu-item--expanded">',
      '#suffix' => '</li></ul></div>',
      '#markup'=> '<a href="#" class="image-link"><img src="'. $image_source .' " /></a>',
      'drop_down' => [
        '#type' => 'item',
        '#prefix' => '<ul class="toolbar-menu">',
        '#suffix' => '</ul>',
        'user_message' => [
          '#type' =>'item',
          '#options' => [
            'attributes' => [
              'class' => ['user-message'],
            ],
          ],
          '#markup' => '<p>' . t('Welcome, ') . $user->get('name')->value . '</p>',
        ],
        'profile_link' => [
          '#type' =>'link',
          '#theme_wrappers' => [],
          '#title' => t('Profile'),
          '#url' => Url::fromRoute('user.page'),
          '#prefix' => '<li class="menu-item">',
          '#suffix' => '</li>',
          '#options' => [
            'attributes' => [
              'title' => t('profile'),
            ],
          ],
        ],
        'logout_link' => [
          '#type' =>'link',
          '#theme_wrappers' => [],
          '#title' => t('Logout'),
          '#url' => Url::fromRoute('user.logout'),
          '#prefix' => '<li class="menu-item">',
          '#suffix' => '</li>',
          '#options' => [
            'attributes' => [
              'title' => t('logout'),
            ],
          ],
        ]
      ]
    ],
  ];


}

/**
 * Helper function for checking user permission.
 */
function _seaside_admin_toolbar_is_access() {
  $user = \Drupal::currentUser();
  return $user->hasPermission('access toolbar');
}

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

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