Skip to content
Snippets Groups Projects
Commit 99d47ecc authored by Florian Spreckelsen's avatar Florian Spreckelsen
Browse files

ENH: Clear list of saving callbacks after leaving the edit mode

parent a6ca1e32
No related branches found
No related tags found
2 merge requests!68DOC: update CHANGELOG,!62FIX: Save WYSIWYG saving in source mode
Pipeline #18069 canceled
...@@ -64,40 +64,9 @@ var ext_editmode_wysiwyg_text = function ($, logger, ClassicEditor, edit_mode, g ...@@ -64,40 +64,9 @@ var ext_editmode_wysiwyg_text = function ($, logger, ClassicEditor, edit_mode, g
logger.debug('Initialized editor for ' + getPropertyName(prop)); logger.debug('Initialized editor for ' + getPropertyName(prop));
// Manually implement saving the data since edit mode is not // Manually implement saving the data since edit mode is not
// a form to be submitted. // a form to be submitted.
_callOnSave.push(() => { editor.updateSourceElement() }); _callOnSave.push(() => {
//editor.model.document.on("change:data", (e) => { editor.updateSourceElement()
});
//// console.log(editor.getData());
//// console.log(editor.sourceElement.value);
//console.log(editor.getData() != editor.sourceElement.value);
//if (editor.getData() != editor.sourceElement.value) {
//console.log("Saving editor...");
//editor.updateSourceElement();
//}
//});
// TODO(fspreck): Add an event listener to save also changes made in
// source mode. What event can we listen to? The following doesn't
// work either.
// document.body.addEventListener("input", e => {
// console.log("Saving after input...");
// editor.updateSourceElement();
// }, true);
//const sourceEditingPlugin = editor.plugins.get("SourceEditing");
//sourceEditingPlugin.on("change:isSourceEditingMode", (e, name, isSourceEditingMode) => {
//if (isSourceEditingMode) {
//// Maybe this helps?
//console.log("Entering source editing");
//const [domSourceEditingElementWrapper] = sourceEditingPlugin._replacedRoots.values();
//const textarea = domSourceEditingElementWrapper.querySelector('textarea');
//// TODO(fspreck) this has to be more intelligent since it
//// leads to an infinite update loop...
//textarea.addEventListener("input", (e) => {
//console.log("Input in source mode");
//// sourceEditingPlugin._updateEditorData();
//});
//}
//});
} catch (error) { } catch (error) {
logger.error(error.stack); logger.error(error.stack);
} }
...@@ -105,8 +74,10 @@ var ext_editmode_wysiwyg_text = function ($, logger, ClassicEditor, edit_mode, g ...@@ -105,8 +74,10 @@ var ext_editmode_wysiwyg_text = function ($, logger, ClassicEditor, edit_mode, g
const proxySaveMethod = function (original) { const proxySaveMethod = function (original) {
const result = function (entity) { const result = function (entity) {
_callOnSave.forEach(cb => {cb();}); _callOnSave.forEach(cb => {
if(typeof original === "function") { cb();
});
if (typeof original === "function") {
return original(entity); return original(entity);
} }
return undefined; return undefined;
...@@ -154,6 +125,12 @@ var ext_editmode_wysiwyg_text = function ($, logger, ClassicEditor, edit_mode, g ...@@ -154,6 +125,12 @@ var ext_editmode_wysiwyg_text = function ($, logger, ClassicEditor, edit_mode, g
logger.debug('Re-rendering ' + getPropertyName(e.target)); logger.debug('Re-rendering ' + getPropertyName(e.target));
ext_editmode_wysiwyg_text.insertEditorInProperty(e.target); ext_editmode_wysiwyg_text.insertEditorInProperty(e.target);
}, true); }, true);
// Clear list of saving callbacks when leaving the edit mode (regardless
// of saving or cancelling)
document.body.addEventListener(edit_mode.end_edit.type, (e) => {
this._callOnSave = [];
}, true);
}; };
return { return {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment