Child pages
  • [cms] Incorrect CKEditor JavaScript used after upgrade [5.2.2-B1]
Skip to end of metadata
Go to start of metadata

In-Portal uses CKEditor as it's WYSIWYG editor. In the In-Portal 5.2.x version the CKEditor 3.6.3 is being used and in In-Portal 5.3.x version it was upgraded to 4.2.0.

The JavaScript code used to integrate CKEditor is generated by PHP connector (the "ckeditor_php5.php" file), that contains:

  • version
  • unique string used for browser cache reset on CKEditor upgrades

Problem #1

Problem is that this connector is no longer being shipped with CKEditor 4.x releases and we've reused connector from CKEditor 3.x. That created a problem, because browser cache reset string stayed the same and after CKEditor upgrade users still see old CKEditor version until they manually do full cache reset.

Problem #2

When changing CKEditor plugin code without upgrading to new CKEditor version the old plugin code is being used, because it is cached by the browser.

Solution

  1. update the "version" and "timestamp" constants and "timestamp" property of "CKEditor" class to have values coming from "ckeditor.js" (statically)
  2. add "WysiwygEditorTimestamp" system setting:
    • after: "EnablePageContentRevisionControl"
    • section: Configuration > Website > Advanced
    • sub-section: Admin Console Settings
    • control: textbox
    • default: empty
    • title (main translation of "la_config_WysiwygEditorTimestamp" phrase): "WYSIWYG Editor Timestamp"
    • hint (hint translation of "la_config_WysiwygEditorTimestamp" phrase): "Change value to invalidate WYSIWYG editor assets, e.g. CSS, JS, Plugins."
  3. in "fckFCKHelper::getEditor" method if "WysiwygEditorTimestamp" system setting isn't empty set "$editor->timestamp" property into it's value
  4. update test plan to demonstrate, that user timestamp is used, when specified and default timestamp is used, when user timestamp is empty

Related Tasks

INP-1589 - Getting issue details... STATUS