varbase_dashboards-1.0.x-dev/varbase_dashboards.module
varbase_dashboards.module
<?php
/**
* @file
* Contains varbase_dashboards.module.
*/
/**
* Implements hook_element_info_alter().
*/
function varbase_dashboards_page_attachments(array &$attachments) {
$routers = [
'entity.dashboard.canonical',
'layout_builder.dashboards.view',
'layout_builder.dashboards_override.view',
];
if (in_array(\Drupal::routeMatch()->getRouteName(), $routers)) {
// Attach our extra CSS for Varbase dashboard.
$attachments['#attached']['library'][] = 'varbase_dashboards/style';
}
}
/**
* Implements hook_toolbar().
*/
function varbase_dashboards_toolbar_alter(&$items) {
if (isset($items['dashboards'])) {
unset($items['dashboards']);
}
}
/**
* Implements hook_element_info_alter().
*/
function varbase_dashboards_element_info_alter(array &$types) {
if (isset($types['toolbar'])) {
if (\Drupal::moduleHandler()->moduleExists('navigation')) {
$types['toolbar']['#attached']['library'][] = 'varbase_dashboards/admin-navigation';
}
elseif (\Drupal::moduleHandler()->moduleExists('admin_toolbar')) {
$types['toolbar']['#attached']['library'][] = 'varbase_dashboards/admin-toolbar';
}
}
}
/**
* Implements hook_theme().
*/
function varbase_dashboards_theme($existing, $type, $theme, $path) {
$theme = [
'block__varbase_dashboard_user' => [
'base hook' => 'block',
],
];
if (\Drupal::service('theme.manager')->getActiveTheme()->getName() === \Drupal::config('system.theme')->get('admin')) {
$active_theme = \Drupal::theme()->getActiveTheme()->getName();
$base_theme_extensions = \Drupal::theme()->getActiveTheme()->getBaseThemeExtensions();
if ($active_theme === 'gin' || in_array('gin', array_keys($base_theme_extensions))) {
foreach (_back_end_layout_themes() as $layout_name) {
$theme[$layout_name] = [
'template' => str_replace("_", "-", $layout_name),
'render element' => 'content',
'base hook' => 'layout',
'path' => \Drupal::moduleHandler()->getModule("varbase_dashboards")->getPath() . '/templates/layouts/gin',
];
}
}
elseif ($active_theme === 'claro' || in_array('claro', array_keys($base_theme_extensions))) {
foreach (_back_end_layout_themes() as $layout_name) {
$theme[$layout_name] = [
'template' => str_replace("_", "-", $layout_name),
'render element' => 'content',
'base hook' => 'layout',
'path' => \Drupal::moduleHandler()->getModule("varbase_dashboards")->getPath() . '/templates/layouts/claro',
];
}
}
}
return $theme;
}
/**
* Implements hook_theme_registry_alter().
*/
function varbase_dashboards_theme_registry_alter(&$info) {
if (\Drupal::service('theme.manager')->getActiveTheme()->getName() === \Drupal::config('system.theme')->get('admin')) {
$active_theme = \Drupal::theme()->getActiveTheme()->getName();
$base_theme_extensions = \Drupal::theme()->getActiveTheme()->getBaseThemeExtensions();
if ($active_theme === 'gin' || in_array('gin', array_keys($base_theme_extensions))) {
foreach (_back_end_layout_themes() as $layout_id) {
$info[$layout_id]['theme path'] = \Drupal::moduleHandler()->getModule("varbase_dashboards")->getPath();
$info[$layout_id]['path'] = \Drupal::moduleHandler()->getModule("varbase_dashboards")->getPath() . '/templates/layouts/gin';
}
}
elseif ($active_theme === 'claro' || in_array('claro', array_keys($base_theme_extensions))) {
foreach (_back_end_layout_themes() as $layout_id) {
$info[$layout_id]['theme path'] = \Drupal::moduleHandler()->getModule("varbase_dashboards")->getPath();
$info[$layout_id]['path'] = \Drupal::moduleHandler()->getModule("varbase_dashboards")->getPath() . '/templates/layouts/claro';
}
}
}
}
/**
* Is the layout ID in the preset of back-end supported layouts.
*/
function _is_in_back_end_supported_layouts($layout_id) {
return in_array($layout_id, _back_end_supported_layouts());
}
/**
* Back-End supported layouts.
*/
function _back_end_supported_layouts() {
$back_end_layout_list = [
'layout_onecol',
'layout_twocol',
'layout_twocol_bricks',
'layout_threecol_25_50_25',
'layout_threecol_33_34_33',
'layout_twocol_section',
'layout_threecol_section',
'layout_fourcol_section',
'layout_1',
'layout_2',
'layout_3',
];
return $back_end_layout_list;
}
/**
* Back-End supported layout themes.
*/
function _back_end_layout_themes() {
$back_end_layout_list = [
'layout__onecol',
'layout__twocol',
'layout__twocol_bricks',
'layout__threecol_25_50_25',
'layout__threecol_33_34_33',
'layout__twocol_section',
'layout__threecol_section',
'layout__fourcol_section',
'layouts__1',
'layouts__2',
'layouts__3',
];
return $back_end_layout_list;
}
