You are here

public function CKEditor5StylesheetsMessage::getWarning in Drupal 10

Generates a warning related to ckeditor_stylesheets.

Identifies themes using ckeditor_stylesheets without an equivalent ckeditor5-stylesheets setting. If such themes are found, a warning message is returned.

Return value

\Drupal\Core\StringTranslation\PluralTranslatableMarkup|null A warning message where appropriate, otherwise null.

File

core/modules/ckeditor5/src/CKEditor5StylesheetsMessage.php, line 62

Class

CKEditor5StylesheetsMessage
Messaging for themes using the ckeditor_stylesheets setting.

Namespace

Drupal\ckeditor5

Code

public function getWarning() {
  $themes = [];
  $default_theme = $this->configFactory
    ->get('system.theme')
    ->get('default');
  if (!empty($default_theme)) {
    $themes[$default_theme] = $this->themeHandler
      ->listInfo()[$default_theme]->info;
  }
  $admin_theme = $this->configFactory
    ->get('system.theme')
    ->get('admin');
  if (!empty($admin_theme) && $admin_theme !== $default_theme) {
    $themes[$admin_theme] = $this->themeHandler
      ->listInfo()[$admin_theme]->info;
  }

  // Collect information on which themes/base themes have ckeditor_stylesheets
  // configuration, but do not have corresponding ckeditor5-stylesheets
  // configuration.
  $ckeditor_stylesheets_use = [];
  foreach ($themes as $theme_info) {
    $this
      ->checkForStylesheetsEquivalent($theme_info, $ckeditor_stylesheets_use);
  }
  if (!empty($ckeditor_stylesheets_use)) {

    // A subtheme may unnecessarily appear multiple times.
    $ckeditor_stylesheets_use = array_unique($ckeditor_stylesheets_use);
    $last_item = array_pop($ckeditor_stylesheets_use);
    $stylesheets_warning = $this
      ->formatPlural(count($ckeditor_stylesheets_use) + 1, 'The %last_item theme has ckeditor_stylesheets configured without a corresponding ckeditor5-stylesheets configuration. See the <a href=":change_record">change record</a> for details.', 'The %first_items and %last_item themes have ckeditor_stylesheets configured, but without corresponding ckeditor5-stylesheets configurations. See the <a href=":change_record">change record</a> for details.', [
      '%last_item' => $last_item,
      '%first_items' => implode(', ', $ckeditor_stylesheets_use),
      ':change_record' => 'https://www.drupal.org/node/3259165',
    ]);
    return $stylesheets_warning;
  }
  return NULL;
}