color_library_info_alter

color_library_info_alter(&$libraries, $extension)

Implements hook_library_info_alter().

Replaces style sheets declared in libraries with color-altered style sheets.

File

core/modules/color/color.module, line 74
Allows users to change the color scheme of themes.

Code

function color_library_info_alter(&$libraries, $extension) {
  $themes = array_keys(\Drupal::service('theme_handler')->listInfo());
  if (in_array($extension, $themes)) {
    $color_paths = \Drupal::config('color.theme.' . $extension)->get('stylesheets');
    if (!empty($color_paths)) {
      foreach (array_keys($libraries) as $name) {
        if (isset($libraries[$name]['css'])) {
          // Override stylesheets.
          foreach ($libraries[$name]['css'] as $category => $css_assets) {
            foreach ($css_assets as $path => $metadata) {
              // Loop over the path array with recolored CSS files to find matching
              // paths which could replace the non-recolored paths.
              foreach ($color_paths as $color_path) {
                // Color module currently requires unique file names to be used,
                // which allows us to compare different file paths.
                if (drupal_basename($path) == drupal_basename($color_path)) {
                  // Replace the path to the new css file.
                  // This keeps the order of the stylesheets intact.
                  $index = array_search($path, array_keys($libraries[$name]['css'][$category]));
                  $preceding_css_assets = array_slice($libraries[$name]['css'][$category], 0, $index);
                  $succeeding_css_assets = array_slice($libraries[$name]['css'][$category], $index + 1);
                  $libraries[$name]['css'][$category] = array_merge(
                  $preceding_css_assets, 
                  [$color_path => $metadata], 
                  $succeeding_css_assets
                  );
                }
              }
            }
          }
        }
      }
    }
  }
}
doc_Drupal
2016-10-29 08:50:08
Comments
Leave a Comment

Please login to continue.