Unverified Commit 25420c01 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #2888723 by fenstrat, Petr Illek, kim.pepper, johnennew, Wim Leers,...

Issue #2888723 by fenstrat, Petr Illek, kim.pepper, johnennew, Wim Leers, alexpott: ckeditor_stylesheets cache busting: use system.css_js_query_string

(cherry picked from commit 33b9fe48)
parent 99530089
Loading
Loading
Loading
Loading
+1 −1
Changes for core/lib/Drupal/Core/Asset/CssCollectionRenderer.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ public function render(array $css_assets) {
    // browser-caching. The string changes on every update or full cache
    // flush, forcing browsers to load a new copy of the files, as the
    // URL changed.
    $query_string = $this->state->get('system.css_js_query_string') ?: '0';
    $query_string = $this->state->get('system.css_js_query_string', '0');

    // Defaults for LINK and STYLE elements.
    $link_element_defaults = [
+1 −1
Changes for core/lib/Drupal/Core/Asset/JsCollectionRenderer.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ public function render(array $js_assets) {
    // flush, forcing browsers to load a new copy of the files, as the
    // URL changed. Files that should not be cached get REQUEST_TIME as
    // query-string instead, to enforce reload on every page request.
    $default_query_string = $this->state->get('system.css_js_query_string') ?: '0';
    $default_query_string = $this->state->get('system.css_js_query_string', '0');

    // Defaults for each SCRIPT element.
    $element_defaults = [
+23 −2
Changes for core/modules/ckeditor/src/Plugin/Editor/CKEditor.php: 23 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\Core\Render\Element;
use Drupal\Core\Render\RendererInterface;
use Drupal\Core\State\StateInterface;
use Drupal\editor\Plugin\EditorBase;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\editor\Entity\Editor;
@@ -57,6 +58,13 @@ class CKEditor extends EditorBase implements ContainerFactoryPluginInterface {
   */
  protected $renderer;

  /**
   * The state key/value store.
   *
   * @var \Drupal\Core\State\StateInterface
   */
  protected $state;

  /**
   * Constructs a \Drupal\ckeditor\Plugin\Editor\CKEditor object.
   *
@@ -74,13 +82,20 @@ class CKEditor extends EditorBase implements ContainerFactoryPluginInterface {
   *   The language manager.
   * @param \Drupal\Core\Render\RendererInterface $renderer
   *   The renderer.
   * @param \Drupal\Core\State\StateInterface $state
   *   The state key/value store.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, CKEditorPluginManager $ckeditor_plugin_manager, ModuleHandlerInterface $module_handler, LanguageManagerInterface $language_manager, RendererInterface $renderer) {
  public function __construct(array $configuration, $plugin_id, $plugin_definition, CKEditorPluginManager $ckeditor_plugin_manager, ModuleHandlerInterface $module_handler, LanguageManagerInterface $language_manager, RendererInterface $renderer, StateInterface $state = NULL) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->ckeditorPluginManager = $ckeditor_plugin_manager;
    $this->moduleHandler = $module_handler;
    $this->languageManager = $language_manager;
    $this->renderer = $renderer;
    if ($state === NULL) {
      @trigger_error('Calling CKEditor::__construct() without the $state argument is deprecated in drupal:8.8.0. The $state argument is required in drupal:9.0.0. See https://www.drupal.org/node/3075102.', E_USER_DEPRECATED);
      $state = \Drupal::service('state');
    }
    $this->state = $state;
  }

  /**
@@ -94,7 +109,8 @@ public static function create(ContainerInterface $container, array $configuratio
      $container->get('plugin.manager.ckeditor.plugin'),
      $container->get('module_handler'),
      $container->get('language_manager'),
      $container->get('renderer')
      $container->get('renderer'),
      $container->get('state')
    );
  }

@@ -425,6 +441,11 @@ public function buildContentsCssJSSetting(Editor $editor) {
    }, []);
    $css = array_merge($css, $plugins_css);
    $css = array_merge($css, _ckeditor_theme_css());
    $query_string = $this->state->get('system.css_js_query_string', '0');
    $css = array_map(function ($item) use ($query_string) {
      $query_string_separator = (strpos($item, '?') !== FALSE) ? '&' : '?';
      return $item . $query_string_separator . $query_string;
    }, $css);
    $css = array_map('file_create_url', $css);
    $css = array_map('file_url_transform_relative', $css);

+28 −10
Changes for core/modules/ckeditor/tests/src/Kernel/CKEditorTest.php: 28 added lines, 10 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace Drupal\Tests\ckeditor\Kernel;

use Drupal\ckeditor\Plugin\Editor\CKEditor;
use Drupal\KernelTests\KernelTestBase;
use Drupal\language\Entity\ConfigurableLanguage;
use Drupal\editor\Entity\Editor;
@@ -70,6 +71,7 @@ protected function setUp() {
   */
  public function testGetJSSettings() {
    $editor = Editor::load('filtered_html');
    $query_string = '?0=';

    // Default toolbar.
    $expected_config = $this->getDefaultInternalConfig() + [
@@ -111,7 +113,7 @@ public function testGetJSSettings() {
    $expected_config['extraPlugins'] .= ',llama_contextual,llama_contextual_and_button';
    $expected_config['drupalExternalPlugins']['llama_contextual'] = file_url_transform_relative(file_create_url('core/modules/ckeditor/tests/modules/js/llama_contextual.js'));
    $expected_config['drupalExternalPlugins']['llama_contextual_and_button'] = file_url_transform_relative(file_create_url('core/modules/ckeditor/tests/modules/js/llama_contextual_and_button.js'));
    $expected_config['contentsCss'][] = file_url_transform_relative(file_create_url('core/modules/ckeditor/tests/modules/ckeditor_test.css'));
    $expected_config['contentsCss'][] = file_url_transform_relative(file_create_url('core/modules/ckeditor/tests/modules/ckeditor_test.css')) . $query_string;
    ksort($expected_config);
    $this->assertIdentical($expected_config, $this->castSafeStrings($this->ckeditor->getJSSettings($editor)), 'Generated JS settings are correct for customized configuration.');

@@ -249,6 +251,7 @@ public function testBuildToolbarJSSetting() {
   */
  public function testBuildContentsCssJSSetting() {
    $editor = Editor::load('filtered_html');
    $query_string = '?0=';

    // Default toolbar.
    $expected = $this->getDefaultContentsCssConfig();
@@ -256,7 +259,7 @@ public function testBuildContentsCssJSSetting() {

    // Enable the editor_test module, which implements hook_ckeditor_css_alter().
    $this->enableModules(['ckeditor_test']);
    $expected[] = file_url_transform_relative(file_create_url(drupal_get_path('module', 'ckeditor_test') . '/ckeditor_test.css'));
    $expected[] = file_url_transform_relative(file_create_url(drupal_get_path('module', 'ckeditor_test') . '/ckeditor_test.css')) . $query_string;
    $this->assertIdentical($expected, $this->ckeditor->buildContentsCssJSSetting($editor), '"contentsCss" configuration part of JS settings built correctly while a hook_ckeditor_css_alter() implementation exists.');

    // Enable LlamaCss plugin, which adds an additional CKEditor stylesheet.
@@ -268,17 +271,17 @@ public function testBuildContentsCssJSSetting() {
    $settings['toolbar']['rows'][0][0]['items'][] = 'LlamaCSS';
    $editor->setSettings($settings);
    $editor->save();
    $expected[] = file_url_transform_relative(file_create_url(drupal_get_path('module', 'ckeditor_test') . '/css/llama.css'));
    $expected[] = file_url_transform_relative(file_create_url(drupal_get_path('module', 'ckeditor_test') . '/css/llama.css')) . $query_string;
    $this->assertIdentical($expected, $this->ckeditor->buildContentsCssJSSetting($editor), '"contentsCss" configuration part of JS settings built correctly while a CKEditorPluginInterface implementation exists.');

    // Enable the Bartik theme, which specifies a CKEditor stylesheet.
    \Drupal::service('theme_installer')->install(['bartik']);
    $this->config('system.theme')->set('default', 'bartik')->save();
    $expected[] = file_url_transform_relative(file_create_url('core/themes/classy/css/components/media-embed-error.css'));
    $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/base/elements.css'));
    $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/components/captions.css'));
    $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/components/table.css'));
    $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/components/text-formatted.css'));
    $expected[] = file_url_transform_relative(file_create_url('core/themes/classy/css/components/media-embed-error.css')) . $query_string;
    $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/base/elements.css')) . $query_string;
    $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/components/captions.css')) . $query_string;
    $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/components/table.css')) . $query_string;
    $expected[] = file_url_transform_relative(file_create_url('core/themes/bartik/css/components/text-formatted.css')) . $query_string;
    $this->assertIdentical($expected, $this->ckeditor->buildContentsCssJSSetting($editor), '"contentsCss" configuration part of JS settings built correctly while a theme providing a CKEditor stylesheet exists.');
  }

@@ -487,10 +490,25 @@ protected function getDefaultToolbarConfig() {
  }

  protected function getDefaultContentsCssConfig() {
    $query_string = '?0=';
    return [
      file_url_transform_relative(file_create_url('core/modules/ckeditor/css/ckeditor-iframe.css')),
      file_url_transform_relative(file_create_url('core/modules/system/css/components/align.module.css')),
      file_url_transform_relative(file_create_url('core/modules/ckeditor/css/ckeditor-iframe.css')) . $query_string,
      file_url_transform_relative(file_create_url('core/modules/system/css/components/align.module.css')) . $query_string,
    ];
  }

  /**
   * @deprecationMessage Calling CKEditor::__construct() without the $state argument is deprecated in drupal:8.8.0. The $state argument is required in drupal:9.0.0. See https://www.drupal.org/node/3075102.
   * @group legacy
   */
  public function testConstructorDeprecation() {
    $editor = new CKEditor([], 'test', ['provider' => 'test'], $this->container->get('plugin.manager.ckeditor.plugin'), $this->container->get('module_handler'), $this->container->get('language_manager'), $this->container->get('renderer'));

    // Ensure the BC layer injects the correct object.
    $reflection_object = new \ReflectionObject($editor);
    $reflection_property = $reflection_object->getProperty('state');
    $reflection_property->setAccessible(TRUE);
    $this->assertSame($reflection_property->getValue($editor), $this->container->get('state'));
  }

}
+64 −64
Changes for core/tests/Drupal/Tests/Core/Asset/CssCollectionRendererUnitTest.php: 64 added lines, 64 removed lines.
Original line number Diff line number Diff line
@@ -111,7 +111,7 @@ public function providerTestRender() {
          0 => ['group' => 0, 'type' => 'file', 'media' => 'all', 'preprocess' => TRUE, 'data' => 'public://css/file-all', 'browsers' => []],
        ],
        [
          0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/file-all')) . '?0', 'all'),
          0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/file-all')) . '?', 'all'),
        ],
      ],
      // 31 file CSS assets: expect 31 link elements.
@@ -150,37 +150,37 @@ public function providerTestRender() {
          30 => $create_file_css_asset('public://css/31.css'),
        ],
        [
          0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/1.css')) . '?0'),
          1 => $create_link_element(file_url_transform_relative(file_create_url('public://css/2.css')) . '?0'),
          2 => $create_link_element(file_url_transform_relative(file_create_url('public://css/3.css')) . '?0'),
          3 => $create_link_element(file_url_transform_relative(file_create_url('public://css/4.css')) . '?0'),
          4 => $create_link_element(file_url_transform_relative(file_create_url('public://css/5.css')) . '?0'),
          5 => $create_link_element(file_url_transform_relative(file_create_url('public://css/6.css')) . '?0'),
          6 => $create_link_element(file_url_transform_relative(file_create_url('public://css/7.css')) . '?0'),
          7 => $create_link_element(file_url_transform_relative(file_create_url('public://css/8.css')) . '?0'),
          8 => $create_link_element(file_url_transform_relative(file_create_url('public://css/9.css')) . '?0'),
          9 => $create_link_element(file_url_transform_relative(file_create_url('public://css/10.css')) . '?0'),
          10 => $create_link_element(file_url_transform_relative(file_create_url('public://css/11.css')) . '?0'),
          11 => $create_link_element(file_url_transform_relative(file_create_url('public://css/12.css')) . '?0'),
          12 => $create_link_element(file_url_transform_relative(file_create_url('public://css/13.css')) . '?0'),
          13 => $create_link_element(file_url_transform_relative(file_create_url('public://css/14.css')) . '?0'),
          14 => $create_link_element(file_url_transform_relative(file_create_url('public://css/15.css')) . '?0'),
          15 => $create_link_element(file_url_transform_relative(file_create_url('public://css/16.css')) . '?0'),
          16 => $create_link_element(file_url_transform_relative(file_create_url('public://css/17.css')) . '?0'),
          17 => $create_link_element(file_url_transform_relative(file_create_url('public://css/18.css')) . '?0'),
          18 => $create_link_element(file_url_transform_relative(file_create_url('public://css/19.css')) . '?0'),
          19 => $create_link_element(file_url_transform_relative(file_create_url('public://css/20.css')) . '?0'),
          20 => $create_link_element(file_url_transform_relative(file_create_url('public://css/21.css')) . '?0'),
          21 => $create_link_element(file_url_transform_relative(file_create_url('public://css/22.css')) . '?0'),
          22 => $create_link_element(file_url_transform_relative(file_create_url('public://css/23.css')) . '?0'),
          23 => $create_link_element(file_url_transform_relative(file_create_url('public://css/24.css')) . '?0'),
          24 => $create_link_element(file_url_transform_relative(file_create_url('public://css/25.css')) . '?0'),
          25 => $create_link_element(file_url_transform_relative(file_create_url('public://css/26.css')) . '?0'),
          26 => $create_link_element(file_url_transform_relative(file_create_url('public://css/27.css')) . '?0'),
          27 => $create_link_element(file_url_transform_relative(file_create_url('public://css/28.css')) . '?0'),
          28 => $create_link_element(file_url_transform_relative(file_create_url('public://css/29.css')) . '?0'),
          29 => $create_link_element(file_url_transform_relative(file_create_url('public://css/30.css')) . '?0'),
          30 => $create_link_element(file_url_transform_relative(file_create_url('public://css/31.css')) . '?0'),
          0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/1.css')) . '?'),
          1 => $create_link_element(file_url_transform_relative(file_create_url('public://css/2.css')) . '?'),
          2 => $create_link_element(file_url_transform_relative(file_create_url('public://css/3.css')) . '?'),
          3 => $create_link_element(file_url_transform_relative(file_create_url('public://css/4.css')) . '?'),
          4 => $create_link_element(file_url_transform_relative(file_create_url('public://css/5.css')) . '?'),
          5 => $create_link_element(file_url_transform_relative(file_create_url('public://css/6.css')) . '?'),
          6 => $create_link_element(file_url_transform_relative(file_create_url('public://css/7.css')) . '?'),
          7 => $create_link_element(file_url_transform_relative(file_create_url('public://css/8.css')) . '?'),
          8 => $create_link_element(file_url_transform_relative(file_create_url('public://css/9.css')) . '?'),
          9 => $create_link_element(file_url_transform_relative(file_create_url('public://css/10.css')) . '?'),
          10 => $create_link_element(file_url_transform_relative(file_create_url('public://css/11.css')) . '?'),
          11 => $create_link_element(file_url_transform_relative(file_create_url('public://css/12.css')) . '?'),
          12 => $create_link_element(file_url_transform_relative(file_create_url('public://css/13.css')) . '?'),
          13 => $create_link_element(file_url_transform_relative(file_create_url('public://css/14.css')) . '?'),
          14 => $create_link_element(file_url_transform_relative(file_create_url('public://css/15.css')) . '?'),
          15 => $create_link_element(file_url_transform_relative(file_create_url('public://css/16.css')) . '?'),
          16 => $create_link_element(file_url_transform_relative(file_create_url('public://css/17.css')) . '?'),
          17 => $create_link_element(file_url_transform_relative(file_create_url('public://css/18.css')) . '?'),
          18 => $create_link_element(file_url_transform_relative(file_create_url('public://css/19.css')) . '?'),
          19 => $create_link_element(file_url_transform_relative(file_create_url('public://css/20.css')) . '?'),
          20 => $create_link_element(file_url_transform_relative(file_create_url('public://css/21.css')) . '?'),
          21 => $create_link_element(file_url_transform_relative(file_create_url('public://css/22.css')) . '?'),
          22 => $create_link_element(file_url_transform_relative(file_create_url('public://css/23.css')) . '?'),
          23 => $create_link_element(file_url_transform_relative(file_create_url('public://css/24.css')) . '?'),
          24 => $create_link_element(file_url_transform_relative(file_create_url('public://css/25.css')) . '?'),
          25 => $create_link_element(file_url_transform_relative(file_create_url('public://css/26.css')) . '?'),
          26 => $create_link_element(file_url_transform_relative(file_create_url('public://css/27.css')) . '?'),
          27 => $create_link_element(file_url_transform_relative(file_create_url('public://css/28.css')) . '?'),
          28 => $create_link_element(file_url_transform_relative(file_create_url('public://css/29.css')) . '?'),
          29 => $create_link_element(file_url_transform_relative(file_create_url('public://css/30.css')) . '?'),
          30 => $create_link_element(file_url_transform_relative(file_create_url('public://css/31.css')) . '?'),
        ],
      ],
      // 32 file CSS assets with the same properties, except for the 10th and
@@ -221,38 +221,38 @@ public function providerTestRender() {
          31 => $create_file_css_asset('public://css/32.css'),
        ],
        [
          0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/1.css')) . '?0'),
          1 => $create_link_element(file_url_transform_relative(file_create_url('public://css/2.css')) . '?0'),
          2 => $create_link_element(file_url_transform_relative(file_create_url('public://css/3.css')) . '?0'),
          3 => $create_link_element(file_url_transform_relative(file_create_url('public://css/4.css')) . '?0'),
          4 => $create_link_element(file_url_transform_relative(file_create_url('public://css/5.css')) . '?0'),
          5 => $create_link_element(file_url_transform_relative(file_create_url('public://css/6.css')) . '?0'),
          6 => $create_link_element(file_url_transform_relative(file_create_url('public://css/7.css')) . '?0'),
          7 => $create_link_element(file_url_transform_relative(file_create_url('public://css/8.css')) . '?0'),
          8 => $create_link_element(file_url_transform_relative(file_create_url('public://css/9.css')) . '?0'),
          9 => $create_link_element(file_url_transform_relative(file_create_url('public://css/10.css')) . '?0', 'screen'),
          10 => $create_link_element(file_url_transform_relative(file_create_url('public://css/11.css')) . '?0'),
          11 => $create_link_element(file_url_transform_relative(file_create_url('public://css/12.css')) . '?0'),
          12 => $create_link_element(file_url_transform_relative(file_create_url('public://css/13.css')) . '?0'),
          13 => $create_link_element(file_url_transform_relative(file_create_url('public://css/14.css')) . '?0'),
          14 => $create_link_element(file_url_transform_relative(file_create_url('public://css/15.css')) . '?0'),
          15 => $create_link_element(file_url_transform_relative(file_create_url('public://css/16.css')) . '?0'),
          16 => $create_link_element(file_url_transform_relative(file_create_url('public://css/17.css')) . '?0'),
          17 => $create_link_element(file_url_transform_relative(file_create_url('public://css/18.css')) . '?0'),
          18 => $create_link_element(file_url_transform_relative(file_create_url('public://css/19.css')) . '?0'),
          19 => $create_link_element(file_url_transform_relative(file_create_url('public://css/20.css')) . '?0', 'print'),
          20 => $create_link_element(file_url_transform_relative(file_create_url('public://css/21.css')) . '?0'),
          21 => $create_link_element(file_url_transform_relative(file_create_url('public://css/22.css')) . '?0'),
          22 => $create_link_element(file_url_transform_relative(file_create_url('public://css/23.css')) . '?0'),
          23 => $create_link_element(file_url_transform_relative(file_create_url('public://css/24.css')) . '?0'),
          24 => $create_link_element(file_url_transform_relative(file_create_url('public://css/25.css')) . '?0'),
          25 => $create_link_element(file_url_transform_relative(file_create_url('public://css/26.css')) . '?0'),
          26 => $create_link_element(file_url_transform_relative(file_create_url('public://css/27.css')) . '?0'),
          27 => $create_link_element(file_url_transform_relative(file_create_url('public://css/28.css')) . '?0'),
          28 => $create_link_element(file_url_transform_relative(file_create_url('public://css/29.css')) . '?0'),
          29 => $create_link_element(file_url_transform_relative(file_create_url('public://css/30.css')) . '?0'),
          30 => $create_link_element(file_url_transform_relative(file_create_url('public://css/31.css')) . '?0'),
          31 => $create_link_element(file_url_transform_relative(file_create_url('public://css/32.css')) . '?0'),
          0 => $create_link_element(file_url_transform_relative(file_create_url('public://css/1.css')) . '?'),
          1 => $create_link_element(file_url_transform_relative(file_create_url('public://css/2.css')) . '?'),
          2 => $create_link_element(file_url_transform_relative(file_create_url('public://css/3.css')) . '?'),
          3 => $create_link_element(file_url_transform_relative(file_create_url('public://css/4.css')) . '?'),
          4 => $create_link_element(file_url_transform_relative(file_create_url('public://css/5.css')) . '?'),
          5 => $create_link_element(file_url_transform_relative(file_create_url('public://css/6.css')) . '?'),
          6 => $create_link_element(file_url_transform_relative(file_create_url('public://css/7.css')) . '?'),
          7 => $create_link_element(file_url_transform_relative(file_create_url('public://css/8.css')) . '?'),
          8 => $create_link_element(file_url_transform_relative(file_create_url('public://css/9.css')) . '?'),
          9 => $create_link_element(file_url_transform_relative(file_create_url('public://css/10.css')) . '?', 'screen'),
          10 => $create_link_element(file_url_transform_relative(file_create_url('public://css/11.css')) . '?'),
          11 => $create_link_element(file_url_transform_relative(file_create_url('public://css/12.css')) . '?'),
          12 => $create_link_element(file_url_transform_relative(file_create_url('public://css/13.css')) . '?'),
          13 => $create_link_element(file_url_transform_relative(file_create_url('public://css/14.css')) . '?'),
          14 => $create_link_element(file_url_transform_relative(file_create_url('public://css/15.css')) . '?'),
          15 => $create_link_element(file_url_transform_relative(file_create_url('public://css/16.css')) . '?'),
          16 => $create_link_element(file_url_transform_relative(file_create_url('public://css/17.css')) . '?'),
          17 => $create_link_element(file_url_transform_relative(file_create_url('public://css/18.css')) . '?'),
          18 => $create_link_element(file_url_transform_relative(file_create_url('public://css/19.css')) . '?'),
          19 => $create_link_element(file_url_transform_relative(file_create_url('public://css/20.css')) . '?', 'print'),
          20 => $create_link_element(file_url_transform_relative(file_create_url('public://css/21.css')) . '?'),
          21 => $create_link_element(file_url_transform_relative(file_create_url('public://css/22.css')) . '?'),
          22 => $create_link_element(file_url_transform_relative(file_create_url('public://css/23.css')) . '?'),
          23 => $create_link_element(file_url_transform_relative(file_create_url('public://css/24.css')) . '?'),
          24 => $create_link_element(file_url_transform_relative(file_create_url('public://css/25.css')) . '?'),
          25 => $create_link_element(file_url_transform_relative(file_create_url('public://css/26.css')) . '?'),
          26 => $create_link_element(file_url_transform_relative(file_create_url('public://css/27.css')) . '?'),
          27 => $create_link_element(file_url_transform_relative(file_create_url('public://css/28.css')) . '?'),
          28 => $create_link_element(file_url_transform_relative(file_create_url('public://css/29.css')) . '?'),
          29 => $create_link_element(file_url_transform_relative(file_create_url('public://css/30.css')) . '?'),
          30 => $create_link_element(file_url_transform_relative(file_create_url('public://css/31.css')) . '?'),
          31 => $create_link_element(file_url_transform_relative(file_create_url('public://css/32.css')) . '?'),
        ],
      ],
    ];