MDL-54633 tinymce: Sync editors' iframe to textarea on form submit

The previous commit "Automatically sync editor with its textarea" was
found a not good solution as the onchange event is triggered way less
often than needed for our needs. So this reverts commit 34321d49.

Instead, we add a hack to the formslib so that when there are some
TinyMCE editors used at the page, we explicitly save them before
triggering the form validation. This simply calls save() on all editors
on the page - see the API reference:
http://archive.tinymce.com/wiki.php/API3:method.tinymce.triggerSave

Having TinyMCE hardcoded like this on this core level does not make me
happy. But it seems to be most effective solution for now (and
definitely more efficient than the previous solution). Plus there is a
precedence - we already use window.tinyMCE in formchangechecker.js YUI
module, for example.
This commit is contained in:
David Mudrák
2016-05-19 13:44:41 +02:00
parent 34321d491b
commit 929727e3ef
2 changed files with 3 additions and 7 deletions
-7
View File
@@ -45,7 +45,6 @@ M.editor_tinymce.init_editor = function(Y, editorid, options) {
M.editor_tinymce.initialised = true;
M.util.js_pending('editors');
options.oninit = "M.editor_tinymce.init_callback";
options.onchange_callback = "M.editor_tinymce.onchange_callback";
}
M.editor_tinymce.editor_options[editorid] = options;
@@ -93,12 +92,6 @@ M.editor_tinymce.init_callback = function() {
M.util.js_complete('editors');
}
M.editor_tinymce.onchange_callback = function(editorinstance) {
// We need to keep the underlying textarea in sync so that when the form
// validator is triggered, it has the value property up-to-date.
editorinstance.save();
};
M.editor_tinymce.init_filepicker = function(Y, editorid, options) {
M.editor_tinymce.filepicker_options[editorid] = options;
};
+3
View File
@@ -2316,6 +2316,9 @@ var skipClientValidation = false;
} catch(e) {
return true;
}
if (typeof window.tinyMCE !== \'undefined\') {
window.tinyMCE.triggerSave();
}
if (!myValidator()) {
ev.preventDefault();
}