function _ckeditor_theme_css

Retrieves the default theme's CKEditor stylesheets.

Themes may specify iframe-specific CSS files for use with CKEditor by including a "ckeditor_stylesheets" key in their .info.yml file.

ckeditor_stylesheets:
-css / ckeditor - iframe . css;
2 calls to _ckeditor_theme_css()
CKEditor::buildContentsCssJSSetting in core/modules/ckeditor/src/Plugin/Editor/CKEditor.php
Builds the "contentsCss" configuration part of the CKEditor JS settings.
CKEditorTest::testExternalStylesheets in core/modules/ckeditor/tests/src/Kernel/CKEditorTest.php
Tests loading of theme's CKEditor stylesheets defined in the .info file.

File

core/modules/ckeditor/ckeditor.module, line 95

Code

function _ckeditor_theme_css($theme = NULL) {
  $css = [];
  if (!isset($theme)) {
    $theme = \Drupal::config('system.theme')->get('default');
  }
  /** @var \Drupal\Core\Extension\ThemeExtensionList $theme_list */
  $theme_list = \Drupal::service('extension.list.theme');
  if (isset($theme) && $theme_path = $theme_list->getPath($theme)) {
    $info = $theme_list->getExtensionInfo($theme);
    if (isset($info['ckeditor_stylesheets'])) {
      $css = $info['ckeditor_stylesheets'];
      foreach ($css as $key => $url) {
        // CSS url is external.
        if (UrlHelper::isExternal($url)) {
          $css[$key] = $url;
        }
        elseif ($url[0] === '/') {
          $css[$key] = substr($url, 1);
        }
        else {
          $css[$key] = $theme_path . '/' . $url;
        }
      }
    }
    if (isset($info['base theme'])) {
      $css = array_merge(_ckeditor_theme_css($info['base theme']), $css);
    }
  }
  return $css;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.