function CKEditor::submitConfigurationForm

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

Overrides EditorBase::submitConfigurationForm

File

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

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);
}

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