From 4a68bdac7f4759d01999d71073f947f538e16819 Mon Sep 17 00:00:00 2001 From: fspreck <f.spreckelsen@indiscale.com> Date: Wed, 1 Dec 2021 12:00:15 +0100 Subject: [PATCH] DRAFT: Better event handling and better tables --- src/core/js/edit_mode.js | 9 +++++- src/core/js/ext_editmode_wysiwyg_text.js | 37 ++++++++++++++++++++---- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/core/js/edit_mode.js b/src/core/js/edit_mode.js index 59ceeea0..1c72d1ce 100644 --- a/src/core/js/edit_mode.js +++ b/src/core/js/edit_mode.js @@ -961,7 +961,14 @@ var edit_mode = new function () { this.createElementForProperty = function (property, options) { var result; if (property.datatype == "TEXT") { - result = `<textarea id=${property.name}>${property.value || ""}</textarea>`; + let area_id; + if (property.name) { + area_id = property.name; + } else { + // TODO: Treat list properties + area_id = ""; + } + result = `<textarea id=${area_id}>${property.value || ""}</textarea>`; } else if (property.datatype == "DATETIME") { var dateandtime = [""]; if (property.value) { diff --git a/src/core/js/ext_editmode_wysiwyg_text.js b/src/core/js/ext_editmode_wysiwyg_text.js index 101c77bd..07f9117d 100644 --- a/src/core/js/ext_editmode_wysiwyg_text.js +++ b/src/core/js/ext_editmode_wysiwyg_text.js @@ -23,16 +23,37 @@ /** * Replaces textareas in the edit mode by a wysiwyg editor */ -var ext_editmode_wysiwyg_text = function ($, logger, ClassicEditor) { +var ext_editmode_wysiwyg_text = function ($, logger, ClassicEditor, edit_mode) { var _insertEditor = function (fieldId) { + let editor; + ClassicEditor .create(document.querySelector('#' + fieldId), { + // use all plugins since we built the editor dependency to + // contain only those we need. plugins: ClassicEditor.builtinPlugins, + // Markdown needs a header row so enforce this + table: { + defaultHeadings: { + rows: 1, + columns: 0 + }, + }, }) - .then(editor => { + .then(newEditor => { console.log('Initialized editor for ' + fieldId); - }) + editor = newEditor; + }).then( + () => { + // Manually implement saving the data since edit mode is not + // a form to be submitted. + editor.model.document.on("change:data", (e) => { + console.log('Something changed...'); + editor.updateSourceElement(); + }); + } + ) .catch(error => { console.error(error.stack); }); @@ -49,13 +70,19 @@ var ext_editmode_wysiwyg_text = function ($, logger, ClassicEditor) { } } - var init = function () {}; + var init = function () { + + document.body.addEventListener(edit_mode.start_edit.type, (e) => { + console.log('Replacing text areas ...'); + ext_editmode_wysiwyg_text.replaceTextAreas(); + }, true); + }; return { init: init, replaceTextAreas: replaceTextAreas, }; -}($, log.getLogger("ext_editmode_wysiwyg_text"), ClassicEditor); +}($, log.getLogger("ext_editmode_wysiwyg_text"), ClassicEditor, edit_mode); $(document).ready(() => { if ("${BUILD_MODULE_EXT_EDITMODE_WYSIWYG_TEXT}" == "ENABLED") { -- GitLab