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