.../ckeditor/Plugin/CKEditorPlugin/DrupalImage.php | 6 ++-- core/modules/editor/editor.admin.inc | 30 ++++++++++++++++++-- .../lib/Drupal/editor/Form/EditorImageDialog.php | 2 +- .../standard/config/editor.editor.basic_html.yml | 8 +++--- .../standard/config/editor.editor.full_html.yml | 8 +++--- 5 files changed, 39 insertions(+), 15 deletions(-) diff --git a/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/CKEditorPlugin/DrupalImage.php b/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/CKEditorPlugin/DrupalImage.php index 3c1cde8..7e95109 100644 --- a/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/CKEditorPlugin/DrupalImage.php +++ b/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/CKEditorPlugin/DrupalImage.php @@ -72,10 +72,7 @@ public function settingsForm(array $form, array &$form_state, Editor $editor) { form_load_include($form_state, 'inc', 'editor', 'editor.admin'); $form['image_upload'] = editor_image_upload_settings_form($editor); $form['image_upload']['#attached']['library'][] = array('ckeditor', 'drupal.ckeditor.drupalimage.admin'); - $form['image_upload']['#element_validate'] = array( - array($this, 'validateImageUploadSettings'), - ); - + $form['image_upload']['#element_validate'][] = array($this, 'validateImageUploadSettings'); return $form; } @@ -87,6 +84,7 @@ public function settingsForm(array $form, array &$form_state, Editor $editor) { * * @see \Drupal\editor\Form\EditorImageDialog * @see editor_image_upload_settings_form() + * @see editor_image_upload_settings_validate() */ function validateImageUploadSettings(array $element, array &$form_state) { $settings = &$form_state['values']['editor']['settings']['plugins']['drupalimage']['image_upload']; diff --git a/core/modules/editor/editor.admin.inc b/core/modules/editor/editor.admin.inc index 911accc..0236b4c 100644 --- a/core/modules/editor/editor.admin.inc +++ b/core/modules/editor/editor.admin.inc @@ -6,6 +6,7 @@ */ use Drupal\editor\Entity\Editor; +use Drupal\Component\Utility\NestedArray; /** * Subform constructor to configure the text editor's image upload settings. @@ -104,7 +105,7 @@ function editor_image_upload_settings_form(Editor $editor) { '#title' => t('Width'), '#title_display' => 'invisible', '#type' => 'number', - '#default_value' => $editor->image_upload['max_dimensions']['width'], + '#default_value' => ($editor->image_upload['max_dimensions']['width'] === 0) ? '' : $editor->image_upload['max_dimensions']['width'], '#size' => 8, '#maxlength' => 8, '#min' => 1, @@ -117,7 +118,7 @@ function editor_image_upload_settings_form(Editor $editor) { '#title' => t('Height'), '#title_display' => 'invisible', '#type' => 'number', - '#default_value' => $editor->image_upload['max_dimensions']['height'], + '#default_value' => ($editor->image_upload['max_dimensions']['height'] === 0) ? '' : $editor->image_upload['max_dimensions']['height'], '#size' => 8, '#maxlength' => 8, '#min' => 1, @@ -127,5 +128,30 @@ function editor_image_upload_settings_form(Editor $editor) { '#states' => $show_if_image_uploads_enabled, ); + $form['#element_validate'] = array( + 'editor_image_upload_settings_validate', + ); + return $form; } + +/** + * #element_validate handler for editor_image_upload_settings_validate(). + * + * Ensures each form item's value is cast to the proper type. + * + * @see \Drupal\editor\Form\EditorImageDialog + * @ingroup forms + */ +function editor_image_upload_settings_validate(array $element, array &$form_state) { + $cast_value = function($type, $element) use (&$form_state) { + $section = $element['#parents']; + $value = NestedArray::getValue($form_state['values'], $section); + settype($value, $type); + NestedArray::setValue($form_state['values'], $section, $value); + }; + + $cast_value('bool', $element['status']); + $cast_value('int', $element['max_dimensions']['width']); + $cast_value('int', $element['max_dimensions']['height']); +} diff --git a/core/modules/editor/lib/Drupal/editor/Form/EditorImageDialog.php b/core/modules/editor/lib/Drupal/editor/Form/EditorImageDialog.php index 1811bcd..d7ef08c 100644 --- a/core/modules/editor/lib/Drupal/editor/Form/EditorImageDialog.php +++ b/core/modules/editor/lib/Drupal/editor/Form/EditorImageDialog.php @@ -82,7 +82,7 @@ public function buildForm(array $form, array &$form_state, FilterFormat $filter_ // If the editor has image uploads enabled, show a managed_file form item, // otherwise show a (file URL) text form item. - if ($editor->image_upload['status'] === '1') { + if ($editor->image_upload['status']) { $form['attributes']['src']['#access'] = FALSE; $form['attributes']['src']['#required'] = FALSE; } diff --git a/core/profiles/standard/config/editor.editor.basic_html.yml b/core/profiles/standard/config/editor.editor.basic_html.yml index e340685..16607ad 100644 --- a/core/profiles/standard/config/editor.editor.basic_html.yml +++ b/core/profiles/standard/config/editor.editor.basic_html.yml @@ -21,12 +21,12 @@ settings: stylescombo: styles: '' image_upload: - status: '1' + status: true scheme: public directory: inline-images max_size: '' max_dimensions: - width: '' - height: '' -status: '1' + width: 0 + height: 0 +status: true langcode: und diff --git a/core/profiles/standard/config/editor.editor.full_html.yml b/core/profiles/standard/config/editor.editor.full_html.yml index eb01c1c..9858b93 100644 --- a/core/profiles/standard/config/editor.editor.full_html.yml +++ b/core/profiles/standard/config/editor.editor.full_html.yml @@ -31,12 +31,12 @@ settings: stylescombo: styles: '' image_upload: - status: '1' + status: true scheme: public directory: inline-images max_size: '' max_dimensions: - width: '' - height: '' -status: '1' + width: 0 + height: 0 +status: true langcode: und