diff --git a/core/modules/ckeditor5/ckeditor5.module b/core/modules/ckeditor5/ckeditor5.module index cf7efbda21..e2620d0ff6 100644 --- a/core/modules/ckeditor5/ckeditor5.module +++ b/core/modules/ckeditor5/ckeditor5.module @@ -648,3 +648,34 @@ function _ckeditor5_theme_css($theme = NULL): array { } return $css; } + +/** + * Implements hook_entity_presave(). + */ +function ckeditor5_entity_presave(\Drupal\Core\Entity\EntityInterface $entity) { + if ($entity instanceof \Drupal\editor\Entity\Editor) { + $settings = $entity->getSettings(); + if (in_array('codeBlock', $settings['toolbar']['items'], TRUE) && !isset($settings['plugins']['ckeditor5_codeBlock'])) { + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\CodeBlock::defaultConfiguration() + $settings['plugins']['ckeditor5_codeBlock'] = [ + 'languages' => [ + ['label' => 'Plain text', 'language' => 'plaintext'], + ['label' => 'C', 'language' => 'c'], + ['label' => 'C#', 'language' => 'cs'], + ['label' => 'C++', 'language' => 'cpp'], + ['label' => 'CSS', 'language' => 'css'], + ['label' => 'Diff', 'language' => 'diff'], + ['label' => 'HTML', 'language' => 'html'], + ['label' => 'Java', 'language' => 'java'], + ['label' => 'JavaScript', 'language' => 'javascript'], + ['label' => 'PHP', 'language' => 'php'], + ['label' => 'Python', 'language' => 'python'], + ['label' => 'Ruby', 'language' => 'ruby'], + ['label' => 'TypeScript', 'language' => 'typescript'], + ['label' => 'XML', 'language' => 'xml'], + ], + ]; + $entity->setSettings($settings); + } + } +} diff --git a/core/modules/ckeditor5/ckeditor5.post_update.php b/core/modules/ckeditor5/ckeditor5.post_update.php index 211478c868..642673e182 100644 --- a/core/modules/ckeditor5/ckeditor5.post_update.php +++ b/core/modules/ckeditor5/ckeditor5.post_update.php @@ -101,31 +101,6 @@ function ckeditor5_post_update_code_block(&$sandbox = []) { return FALSE; } $settings = $editor->getSettings(); - - if (in_array('codeBlock', $settings['toolbar']['items'], TRUE)) { - $settings = $editor->getSettings(); - // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\CodeBlock::defaultConfiguration() - $settings['plugins']['ckeditor5_codeBlock'] = [ - 'languages' => [ - ['label' => 'Plain text', 'language' => 'plaintext'], - ['label' => 'C', 'language' => 'c'], - ['label' => 'C#', 'language' => 'cs'], - ['label' => 'C++', 'language' => 'cpp'], - ['label' => 'CSS', 'language' => 'css'], - ['label' => 'Diff', 'language' => 'diff'], - ['label' => 'HTML', 'language' => 'html'], - ['label' => 'Java', 'language' => 'java'], - ['label' => 'JavaScript', 'language' => 'javascript'], - ['label' => 'PHP', 'language' => 'php'], - ['label' => 'Python', 'language' => 'python'], - ['label' => 'Ruby', 'language' => 'ruby'], - ['label' => 'TypeScript', 'language' => 'typescript'], - ['label' => 'XML', 'language' => 'xml'], - ], - ]; - $editor->setSettings($settings); - } - - return TRUE; + return in_array('codeBlock', $settings['toolbar']['items'], TRUE); }); }