Issue #3231322 by Wim Leers, pradhumanjainOSL, smustgrave, lauriii: Fix a @todo: move a form alteration to the CKEditor 5 plugin's subform definition
parent
999e16ad7d
commit
4e655558a4
|
@ -227,22 +227,6 @@ function ckeditor5_form_filter_format_form_alter(array &$form, FormStateInterfac
|
||||||
// Add an ID to the filter settings vertical tabs wrapper to facilitate AJAX
|
// Add an ID to the filter settings vertical tabs wrapper to facilitate AJAX
|
||||||
// updates.
|
// updates.
|
||||||
$form['filter_settings']['#wrapper_attributes']['id'] = 'filter-settings-wrapper';
|
$form['filter_settings']['#wrapper_attributes']['id'] = 'filter-settings-wrapper';
|
||||||
|
|
||||||
// Add an ID to the editor settings vertical tabs wrapper so it can be easily
|
|
||||||
// targeted by JavaScript. If there are no configurable plugins, render an
|
|
||||||
// empty container with the same ID instead.
|
|
||||||
// @todo consider moving this to editor.module when this module is moved to
|
|
||||||
// Drupal core https://www.drupal.org/project/ckeditor5/issues/3231322.
|
|
||||||
if (!empty($form['editor']['settings']['subform']['plugins'])) {
|
|
||||||
$form['editor']['settings']['subform']['plugin_settings']['#wrapper_attributes']['id'] = 'plugin-settings-wrapper';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$form['editor']['settings']['subform']['plugin_settings'] = [
|
|
||||||
'#type' => 'container',
|
|
||||||
'#attributes' => ['id' => 'plugin-settings-wrapper'],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
$form['#after_build'][] = [CKEditor5::class, 'assessActiveTextEditorAfterBuild'];
|
$form['#after_build'][] = [CKEditor5::class, 'assessActiveTextEditorAfterBuild'];
|
||||||
$form['#validate'][] = [CKEditor5::class, 'validateSwitchingToCKEditor5'];
|
$form['#validate'][] = [CKEditor5::class, 'validateSwitchingToCKEditor5'];
|
||||||
array_unshift($form['actions']['submit']['#submit'], 'ckeditor5_filter_format_edit_form_submit');
|
array_unshift($form['actions']['submit']['#submit'], 'ckeditor5_filter_format_edit_form_submit');
|
||||||
|
@ -290,7 +274,17 @@ function _update_ckeditor5_html_filter(array $form, FormStateInterface $form_sta
|
||||||
// latency.
|
// latency.
|
||||||
$renderedField = $renderer->render($form['editor']['settings']);
|
$renderedField = $renderer->render($form['editor']['settings']);
|
||||||
if ($form_state->get('ckeditor5_is_active') && $form_state->get('ckeditor5_is_selected')) {
|
if ($form_state->get('ckeditor5_is_active') && $form_state->get('ckeditor5_is_selected')) {
|
||||||
$response->addCommand(new ReplaceCommand('#plugin-settings-wrapper', $form['editor']['settings']['subform']['plugin_settings']['#markup']));
|
$plugin_settings_markup = $form['editor']['settings']['subform']['plugin_settings']['#markup'];
|
||||||
|
// If no configurable plugins are enabled, render an empty container with
|
||||||
|
// the same ID instead. Otherwise it'll be impossible to render plugin
|
||||||
|
// settings vertical tabs in the correct location when such a plugin is
|
||||||
|
// enabled.
|
||||||
|
// @see \Drupal\Core\Render\Element\VerticalTabs::preRenderVerticalTabs
|
||||||
|
$markup = $plugin_settings_markup ?? [
|
||||||
|
'#type' => 'container',
|
||||||
|
'#attributes' => ['id' => 'plugin-settings-wrapper'],
|
||||||
|
];
|
||||||
|
$response->addCommand(new ReplaceCommand('#plugin-settings-wrapper', $markup));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$response->addCommand(new ReplaceCommand('#editor-settings-wrapper', $renderedField));
|
$response->addCommand(new ReplaceCommand('#editor-settings-wrapper', $renderedField));
|
||||||
|
|
|
@ -393,7 +393,11 @@ class CKEditor5 extends EditorBase implements ContainerFactoryPluginInterface {
|
||||||
$form['plugin_settings'] = [
|
$form['plugin_settings'] = [
|
||||||
'#type' => 'vertical_tabs',
|
'#type' => 'vertical_tabs',
|
||||||
'#title' => $this->t('CKEditor 5 plugin settings'),
|
'#title' => $this->t('CKEditor 5 plugin settings'),
|
||||||
'#id' => 'ckeditor5-plugin-settings',
|
// Add an ID to the editor settings vertical tabs wrapper so it can be
|
||||||
|
// easily targeted by JavaScript.
|
||||||
|
'#wrapper_attributes' => [
|
||||||
|
'id' => 'plugin-settings-wrapper',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->injectPluginSettingsForm($form, $form_state, $editor);
|
$this->injectPluginSettingsForm($form, $form_state, $editor);
|
||||||
|
|
Loading…
Reference in New Issue