You are here

function ckeditor5_filter_format_edit_form_submit in Drupal 10

Form submission handler for filter format forms.

1 string reference to 'ckeditor5_filter_format_edit_form_submit'
ckeditor5_form_filter_format_form_alter in core/modules/ckeditor5/ckeditor5.module
Implements hook_form_FORM_ID_alter().

File

core/modules/ckeditor5/ckeditor5.module, line 255

Code

function ckeditor5_filter_format_edit_form_submit(array $form, FormStateInterface $form_state) {
  $limit_allowed_html_tags = isset($form['filters']['settings']['filter_html']['allowed_html']);
  $manually_editable_tags = $form_state
    ->getValue([
    'editor',
    'settings',
    'plugins',
    'ckeditor5_sourceEditing',
    'allowed_tags',
  ]);
  $styles = $form_state
    ->getValue([
    'editor',
    'settings',
    'plugins',
    'ckeditor5_style',
    'styles',
  ]);
  if ($limit_allowed_html_tags && is_array($manually_editable_tags) || is_array($styles)) {

    // When "Manually editable tags", "Style" and "limit allowed HTML tags" are
    // all configured, the latter is dependent on the others. This dependent
    // value is typically updated via AJAX, but it's possible for "Manually
    // editable tags" to update without triggering the AJAX rebuild. That value
    // is recalculated here on save to ensure it happens even if the AJAX
    // rebuild doesn't happen.
    $manually_editable_tags_restrictions = HTMLRestrictions::fromString(implode($manually_editable_tags ?? []));
    $styles_restrictions = HTMLRestrictions::fromString(implode($styles ? array_column($styles, 'element') : []));
    $format = $form_state
      ->get('ckeditor5_validated_pair')
      ->getFilterFormat();
    $allowed_html = HTMLRestrictions::fromTextFormat($format);
    $combined_tags_string = $allowed_html
      ->merge($manually_editable_tags_restrictions)
      ->merge($styles_restrictions)
      ->toFilterHtmlAllowedTagsString();
    $form_state
      ->setValue([
      'filters',
      'filter_html',
      'settings',
      'allowed_html',
    ], $combined_tags_string);
  }
}