<?php /** * @file * This module adds the "Fluidproject UI Options" project library to your site. */ /** * Implements template_preprocess_page(). */ function fluidui_preprocess_page(&$variables) { $route = \Drupal::routeMatch()->getRouteObject(); $is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route); $current_path = \Drupal::service('path.current')->getPath(); $url_alias = \Drupal::service('path_alias.manager')->getAliasByPath($current_path); $config = \Drupal::config("fluidui.adminsettings"); $admin_display = $config->get('admin_display'); $url_blacklist = $config->get('url_blacklist') !== NULL ? explode("\r\n", $config->get('url_blacklist')) : ['']; // The url blacklist takes precedence. if (in_array($current_path, $url_blacklist) || in_array($url_alias, $url_blacklist)) { $variables['page']['#cache']['contexts'][] = 'fluidui'; return; } if ($admin_display) { // Display the widget on all pages. $variables['page']['#cache']['contexts'][] = 'fluidui'; $variables['#attached']['library'][] = 'fluidui/fluidui.infusion'; $variables['#attached']['library'][] = 'fluidui/fluidui.theme'; } else { // don't display the widget on the admin pages. if (!$is_admin) { $variables['page']['#cache']['contexts'][] = 'fluidui'; $variables['#attached']['library'][] = 'fluidui/fluidui.infusion'; $variables['#attached']['library'][] = 'fluidui/fluidui.theme'; } } $library_folder = base_path() . 'libraries'; if (file_exists(DRUPAL_ROOT . $library_folder . "/infusion")) { // Use latest version from /libraries/infusion. $module_path = $library_folder; } else { // Use module version. $module_path = "/" . \Drupal::service('extension.list.module')->getPath('fluidui'); } $variables['#attached']['drupalSettings']['modulePath'] = $module_path; $translations_directory = 'public://fluidui-translations/'; if (file_exists($translations_directory)) { $variables['#attached']['drupalSettings']['translationsDirectory'] = "/sites/default/files/fluidui-translations/"; } else { $variables['#attached']['drupalSettings']['translationsDirectory'] = ""; } } /** * Implements template_preprocess_html(). */ function fluidui_preprocess_html(&$variables) { // Read the fluid cookie first. if (isset($_COOKIE['fluid-ui-settings'])) { $vals = (array) json_decode($_COOKIE['fluid-ui-settings']); if (isset($vals['preferences']->fluid_prefs_contrast)) { $variables['attributes']['class'][] = 'fl-theme-' . $vals['preferences']->fluid_prefs_contrast; } if (isset($vals['preferences']->fluid_prefs_enhanceInputs)) { $variables['fl-input-enhanced']['class'][] = 'fl-input-enhanced'; } if (isset($vals['preferences']->fluid_prefs_textFont)) { $variables['attributes']['class'][] = 'fl-font-' . $vals['preferences']->fluid_prefs_textFont; } if (isset($vals['preferences']->fluid_prefs_lineSpace)) { $variables['attributes']['style']['line-height'] = 3; } } } /** * Implements hook_page_top(). */ function fluidui_page_top(array &$page_top) { $route = \Drupal::routeMatch()->getRouteObject(); $is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route); $current_path = \Drupal::service('path.current')->getPath(); $url_alias = \Drupal::service('path_alias.manager')->getAliasByPath($current_path); $config = \Drupal::config("fluidui.adminsettings"); $admin_display = $config->get('admin_display'); $url_blacklist = $config->get('url_blacklist') !== NULL ? explode("\r\n", $config->get('url_blacklist')) : ['']; // The url blacklist takes precedence. if (in_array($current_path, $url_blacklist) || in_array($url_alias, $url_blacklist)) { $variables['page']['#cache']['contexts'][] = 'fluidui'; return; } if ($admin_display) { $page_top['fluidui'] = [ '#theme' => 'fluid_ui_block', ]; } else { // Don't display the widget on the admin pages. if (!$is_admin) { $page_top['fluidui'] = [ '#theme' => 'fluid_ui_block', ]; } } } /** * Implements hook_theme(). */ function fluidui_theme() { return [ 'fluid_ui_block' => [ 'render element' => 'content', ], ]; } /** * Implements hook_library_info_alter(). */ function fluidui_library_info_alter(&$libraries, $extension) { if (isset($libraries['fluidui.infusion'])) { // Verify if /libraries/infusion exists. $library_folder = base_path() . 'libraries/'; if (file_exists(DRUPAL_ROOT . $library_folder . "infusion")) { foreach ($libraries['fluidui.infusion']['css']['base'] as $key => $library) { $libraries['fluidui.infusion']['css']['base'][$library_folder . $key] = $library; unset($libraries['fluidui.infusion']['css']['base'][$key]); } foreach ($libraries['fluidui.infusion']['js'] as $key => $library) { $libraries['fluidui.infusion']['js'][$library_folder . $key] = $library; unset($libraries['fluidui.infusion']['js'][$key]); } } } }