CKEditor 4.21.0

Security Updates:

A cross-site scripting vulnerability has been discovered affecting Iframe Dialog and Media Embed plugins.

This vulnerability might affect a small percentage of integrators that depend on dynamic editor initialization/destroy mechanism. See GitHub advisory for more details.

Potential breaking changes

In some rare cases, a security release may introduce a breaking change to your application. We have provided configuration options that will help you mitigate any potential issues with the upgrade:

  • Starting from version 4.21, the Iframe Dialog plugin applies the sandbox attribute by default, which restricts JavaScript code execution in the iframe element. To change this behavior, configure the config.iframe_attributes option.
  • Starting from version 4.21, the Media Embed plugin regenerates the entire content of the embed widget by default. To change this behavior, configure the config.embed_keepOriginalContent option.

If you choose to change either of the above options, make sure to properly configure Content Security Policy to avoid any potential security issues that may arise from embedding iframe elements on your web page.

You can read more details in the relevant security advisory and contact us if you have more questions.

An upgrade is highly recommended!

New Features:

Fixed Issues:

  • #5431: Fixed: No notification is shown when pasting or dropping unsupported image types into the editor.

CKEditor 4.20.2

Fixed Issues:

  • #439: Fixed: Incorrect Tab and Shift+Tab navigation for radio buttons inside the dialog.
  • #4829: Fixed: Undo reversed entire table content instead of a single cell. Thanks to that fix, multiple changes in a table can be undone one by one.
  • #5396: Fixed: Event listeners for popstate and hashchange events on the window, added by the Maximize plugin, were not removed when destroying the editor instance.
  • #5414: Fixed: File and image uploaders based on the Upload Widget plugin and Easy Image plugin didn't fire the change event upon finishing upload, resulting in passing incorrect data in form controls for integration frameworks, like Reactive forms in Angular.
  • #698: Fixed: An error was thrown after applying formatting to the widget with inline editable and switching to the source mode. Thanks to Glen!

API changes:

CKEditor 4.20.1

Fixed Issues:

  • #5333: Fixed: The original name of the uploaded image is not preserved by the Upload Image plugin if the Clipboard plugin has enabled image handling.
  • #2881: Fixed: Changing table headers from "Both" to "First column" in the Table dialog does not change the first column cell correctly.
  • #2996: Fixed: Table header "scope" attribute is incorrect for the "Headers: both" option in the Table dialog.
  • #4802: Fixed: Tableselection caret moves to the previous cell after tabbing into the next cell and then removing its content.
  • #5365: Fixed: The value of the config.baseFloatZIndex config variable is incorrectly applied to parent dialog when the child dialog is closed resulting in the dialog overlay covering up the dialog. Thanks to JenoDK!
  • #5305: Fixed: Anchor name can invalidly include spaces.

CKEditor 4.20.0

New Features:

Fixed Issues:

  • #4889: Fixed: Incorrect position of the Table Resize cursor after scrolling the editor horizontally.
  • #5319: Fixed: Autolink config.autolink_urlRegex option produced invalid links when configured directly using the editor instance config. Thanks to Aigars Zeiza!
  • #4941: Fixed: Some entities got wrongly encoded when using entities_processNumerical = true configuration option.
  • #4931: Fixed: Selecting the whole editor content when there is only a list with an empty element at the end inside and deleting it did not delete all list items.

API changes:

CKEditor 4.19.1

Fixed Issues:

API changes:

  • #5184: Added the config.editorplaceholder_delay configuration option allowing to delay placeholder before it is toggled when changing editor content.
  • #5184: Added the CKEDITOR.tools#debounce() function allowing to postpone a passed function execution until the given milliseconds have elapsed since the last time it was invoked.
Twitter Facebook Facebook Instagram Medium Linkedin GitHub Arrow down Phone Menu Close icon Check