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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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 ); } } } } } } } } } |
Please login to continue.