You are here

public function CKEditor::submitConfigurationForm in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/ckeditor/src/Plugin/Editor/CKEditor.php \Drupal\ckeditor\Plugin\Editor\CKEditor::submitConfigurationForm()
  2. 9 core/modules/ckeditor/src/Plugin/Editor/CKEditor.php \Drupal\ckeditor\Plugin\Editor\CKEditor::submitConfigurationForm()

File

core/modules/ckeditor/src/Plugin/Editor/CKEditor.php, line 280

Class

CKEditor
Defines a CKEditor-based text editor for Drupal.

Namespace

Drupal\ckeditor\Plugin\Editor

Code

public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {

  // The rows key is not built into the form structure, so decode the button
  // groups data into this new key and remove the button_groups key.
  $form_state
    ->setValue([
    'toolbar',
    'rows',
  ], json_decode($form_state
    ->getValue([
    'toolbar',
    'button_groups',
  ]), TRUE));
  $form_state
    ->unsetValue([
    'toolbar',
    'button_groups',
  ]);

  // Remove the plugin settings' vertical tabs state; no need to save that.
  if ($form_state
    ->hasValue('plugins')) {
    $form_state
      ->unsetValue('plugin_settings');
  }

  // Ensure plugin settings are only saved for plugins that are actually
  // enabled.
  $about_to_be_saved_editor = Editor::create([
    'editor' => 'ckeditor',
    'settings' => [
      'toolbar' => $form_state
        ->getValue('toolbar'),
      'plugins' => $form_state
        ->getValue('plugins'),
    ],
  ]);
  $enabled_plugins = _ckeditor_get_enabled_plugins($about_to_be_saved_editor);
  $plugin_settings = $form_state
    ->getValue('plugins', []);
  foreach (array_keys($plugin_settings) as $plugin_id) {
    if (!in_array($plugin_id, $enabled_plugins, TRUE)) {
      unset($plugin_settings[$plugin_id]);
    }
  }
  $form_state
    ->setValue('plugins', $plugin_settings);
}