diff --git a/customize.dist/ckeditor-config.js b/customize.dist/ckeditor-config.js
index 019014299..a39616e6e 100644
--- a/customize.dist/ckeditor-config.js
+++ b/customize.dist/ckeditor-config.js
@@ -27,7 +27,7 @@ CKEDITOR.editorConfig = function( config ) {
config.font_defaultLabel = 'Arial';
config.fontSize_defaultLabel = '16';
- config.contentsCss = '/customize/ckeditor-contents.css';
+ config.contentsCss = '/customize/ckeditor-contents.css?' + CKEDITOR.CRYPTPAD_URLARGS;
config.keystrokes = [
[ CKEDITOR.ALT + 121 /*F10*/, 'toolbarFocus' ],
@@ -55,3 +55,17 @@ CKEDITOR.editorConfig = function( config ) {
//skin: 'moono-dark,/pad/themes/moono-dark/'
//skin: 'office2013,/pad/themes/office2013/'
};
+
+(function () {
+ // These are overrides inside of ckeditor which add ?ver= to the CSS files so that
+ // every part of ckeditor will get in the browser cache.
+ var fix = function (x) {
+ if (x.map) { return x.map(fix); }
+ console.log('> ' + x);
+ return (/\/bower_components\/.*\.css$/.test(x)) ? (x + '?ver=' + CKEDITOR.timestamp) : x;
+ };
+ CKEDITOR.tools._buildStyleHtml = CKEDITOR.tools.buildStyleHtml;
+ CKEDITOR.document._appendStyleSheet = CKEDITOR.document.appendStyleSheet;
+ CKEDITOR.tools.buildStyleHtml = function (x) { return CKEDITOR.tools._buildStyleHtml(fix(x)); };
+ CKEDITOR.document.appendStyleSheet = function (x) { return CKEDITOR.document._appendStyleSheet(fix(x)); };
+}());
\ No newline at end of file
diff --git a/www/common/boot2.js b/www/common/boot2.js
index b24ce38af..487eb8ae6 100644
--- a/www/common/boot2.js
+++ b/www/common/boot2.js
@@ -2,7 +2,7 @@
define([
'/common/requireconfig.js'
], function (RequireConfig) {
- require.config(RequireConfig);
+ require.config(RequireConfig());
// most of CryptPad breaks if you don't support isArray
if (!Array.isArray) {
diff --git a/www/common/requireconfig.js b/www/common/requireconfig.js
index caa0da868..85258ea8b 100644
--- a/www/common/requireconfig.js
+++ b/www/common/requireconfig.js
@@ -21,5 +21,7 @@ define([
}
};
Object.keys(ApiConfig.requireConf).forEach(function (k) { out[k] = ApiConfig.requireConf[k]; });
- return out;
+ return function () {
+ return JSON.parse(JSON.stringify(out));
+ };
});
diff --git a/www/common/sframe-boot.js b/www/common/sframe-boot.js
index 5206b3e68..4abac6e37 100644
--- a/www/common/sframe-boot.js
+++ b/www/common/sframe-boot.js
@@ -2,20 +2,18 @@
// Note that this file is meant to be executed only inside of a sandbox iframe.
;(function () {
var req = JSON.parse(decodeURIComponent(window.location.hash.substring(1)));
-if (req.cfg) { require.config(req.cfg); }
+req.cfg = req.cfg || {};
if (req.pfx) {
- require.config({
- onNodeCreated: function (node, config, module, path) {
- node.setAttribute('src', req.pfx + node.getAttribute('src'));
- }
- });
+ req.cfg.onNodeCreated = function (node, config, module, path) {
+ node.setAttribute('src', req.pfx + node.getAttribute('src'));
+ };
}
+require.config(req.cfg);
if (req.req) { require(req.req, function () { }); }
window.addEventListener('message', function (msg) {
var data = JSON.parse(msg.data);
if (data.q !== 'INIT') { return; }
msg.source.postMessage(JSON.stringify({ txid: data.txid, content: 'OK' }), '*');
- if (data.content && data.content.requireConf) { require.config(data.content.requireConf); }
require(['/common/sframe-boot2.js'], function () { });
});
}());
\ No newline at end of file
diff --git a/www/common/sframe-boot2.js b/www/common/sframe-boot2.js
index 45e32a2ca..38395a21f 100644
--- a/www/common/sframe-boot2.js
+++ b/www/common/sframe-boot2.js
@@ -1,7 +1,7 @@
// This is stage 1, it can be changed but you must bump the version of the project.
// Note: This must only be loaded from inside of a sandbox-iframe.
define(['/common/requireconfig.js'], function (RequireConfig) {
- require.config(RequireConfig);
+ require.config(RequireConfig());
// most of CryptPad breaks if you don't support isArray
if (!Array.isArray) {
diff --git a/www/common/sframe-channel.js b/www/common/sframe-channel.js
index dcf5e1abc..bce9cfdd3 100644
--- a/www/common/sframe-channel.js
+++ b/www/common/sframe-channel.js
@@ -145,7 +145,7 @@ define([
intr = setInterval(function () {
ow.postMessage(JSON.stringify({
txid: txid,
- content: { requireConf: RequireConfig },
+ content: { requireConf: RequireConfig() },
q: 'INIT'
}), '*');
}, 1);
diff --git a/www/common/toolbar3.js b/www/common/toolbar3.js
index 50137c586..6877d6593 100644
--- a/www/common/toolbar3.js
+++ b/www/common/toolbar3.js
@@ -605,7 +605,7 @@ define([
title: buttonTitle,
'class': "cryptpad-logo"
}).append($('', {
- src: '/customize/images/logo_white.png'
+ src: '/customize/images/logo_white.png?' + ApiConfig.requireConf.urlArgs
}));
var onClick = function (e) {
e.preventDefault();
diff --git a/www/pad2/inner.html b/www/pad2/inner.html
index 2d5efe5b4..23aa8b764 100644
--- a/www/pad2/inner.html
+++ b/www/pad2/inner.html
@@ -2,11 +2,7 @@