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:
@@ -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;
|
||||
};
|
||||
|
||||
@@ -2316,6 +2316,9 @@ var skipClientValidation = false;
|
||||
} catch(e) {
|
||||
return true;
|
||||
}
|
||||
if (typeof window.tinyMCE !== \'undefined\') {
|
||||
window.tinyMCE.triggerSave();
|
||||
}
|
||||
if (!myValidator()) {
|
||||
ev.preventDefault();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user