Commit adaad5f5 authored by catch's avatar catch

Issue #2679903 by thpoul, Dave Reid, Wim Leers: CKEditor uses separate...

Issue #2679903 by thpoul, Dave Reid, Wim Leers: CKEditor uses separate cache-busting query string from Drupal's
parent c5ce9cef
......@@ -8,6 +8,7 @@ drupal.ckeditor:
dependencies:
- core/jquery
- core/drupal
- core/drupalSettings
- core/drupal.debounce
- core/ckeditor
- editor/drupal.editor
......
......@@ -102,3 +102,15 @@ function _ckeditor_theme_css($theme = NULL) {
}
return $css;
}
/**
* Implements hook_library_info_alter().
*/
function ckeditor_library_info_alter(&$libraries, $extension) {
// Pass Drupal's JS cache-busting string via settings along to CKEditor.
// @see http://docs.ckeditor.com/#!/api/CKEDITOR-property-timestamp
if ($extension === 'ckeditor' && isset($libraries['drupal.ckeditor'])) {
$query_string = \Drupal::state()->get('system.css_js_query_string') ?: '0';
$libraries['drupal.ckeditor']['drupalSettings']['ckeditor']['timestamp'] = $query_string;
}
}
......@@ -273,4 +273,7 @@
}
});
// Set the CKEditor cache-busting string to the same value as Drupal.
CKEDITOR.timestamp = drupalSettings.ckeditor.timestamp;
})(Drupal, Drupal.debounce, CKEDITOR, jQuery);
......@@ -148,6 +148,16 @@ function testLoading() {
$this->assertIdentical($expected, $this->castSafeStrings($settings['editor']), "Text Editor module's JavaScript settings on the page are correct.");
$this->assertTrue($editor_js_present, 'Text Editor JavaScript is present.');
$this->assertTrue(in_array('ckeditor/drupal.ckeditor', explode(',', $settings['ajaxPageState']['libraries'])), 'CKEditor glue library is present.');
// Assert that CKEditor uses Drupal's cache-busting query string by
// comparing the setting sent with the page with the current query string.
$settings = $this->getDrupalSettings();
$expected = $settings['ckeditor']['timestamp'];
$this->assertIdentical($expected, \Drupal::state()->get('system.css_js_query_string'), "CKEditor scripts cache-busting string is correct before flushing all caches.");
// Flush all caches then make sure that $settings['ckeditor']['timestamp']
// still matches.
drupal_flush_all_caches();
$this->assertIdentical($expected, \Drupal::state()->get('system.css_js_query_string'), "CKEditor scripts cache-busting string is correct after flushing all caches.");
}
protected function getThingsToCheck() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment