From 7ad9e2cd4f2a59949ee7b9f00b0334ebaad184f4 Mon Sep 17 00:00:00 2001 From: ralf Date: Mon, 5 Feb 2024 16:19:12 +0200 Subject: [PATCH] fixing the fix there is probably a nicer solution to let the calling widget know that getValues() is running triggering a custom event won't help, as getValues() is not async and can't be made to wait for the widget handling the event --- api/js/etemplate/et2_widget_htmlarea.ts | 2 +- api/js/etemplate/etemplate2.ts | 17 +++++++++++++++-- mail/js/app.js | 12 +----------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/api/js/etemplate/et2_widget_htmlarea.ts b/api/js/etemplate/et2_widget_htmlarea.ts index df458fa2c9..8c8a43caf8 100644 --- a/api/js/etemplate/et2_widget_htmlarea.ts +++ b/api/js/etemplate/et2_widget_htmlarea.ts @@ -547,7 +547,7 @@ export class et2_htmlarea extends et2_editableWidget implements et2_IResizeable { // are we called by etemplate2.getValues() (has a closure result) // not always setting it, as getValue() is called a lot, e.g. to test input is dirty - if (this.options.applyDefaultFont && typeof result !== 'undefined') + if (this.options.applyDefaultFont && this.getInstanceManager().get_values) { this.applyDefaultFont(); } diff --git a/api/js/etemplate/etemplate2.ts b/api/js/etemplate/etemplate2.ts index 178f746842..096fc7d414 100644 --- a/api/js/etemplate/etemplate2.ts +++ b/api/js/etemplate/etemplate2.ts @@ -1216,15 +1216,23 @@ export class etemplate2 } } + /** + * Flag that getValues() is running + */ + get_values = false; + /** * Fetches all input element values and returns them in an associative * array. Widgets which introduce namespacing can use the internal _target * parameter to add another layer. * * @param {et2_widget} _root widget to start iterating + * @param {boolean} skip_reset_dirty true: do NOT reset dirty status */ - getValues(_root : et2_widget) + getValues(_root : et2_widget, skip_reset_dirty : boolean) { + this.get_values = true; + const result = {}; // Iterate over the widget tree @@ -1320,10 +1328,15 @@ export class etemplate2 } delete _target[path[path.length - 1]]; } - _widget.resetDirty(); + if (!skip_reset_dirty) + { + _widget.resetDirty(); + } }, this, et2_IInput); + this.get_values = false; + egw().debug("info", "Value", result); return result; } diff --git a/mail/js/app.js b/mail/js/app.js index 28f1de92d4..5f4b649761 100644 --- a/mail/js/app.js +++ b/mail/js/app.js @@ -4059,17 +4059,7 @@ app.classes.mail = AppJS.extend( action = _egw_action.id; } - var widgets = ['from','to','cc','bcc','subject','folder','replyto','mailaccount', - 'mail_htmltext', 'mail_plaintext', 'lastDrafted', 'filemode', 'expiration', 'password']; - var widget = {}; - for (var index in widgets) - { - widget = self.et2.getWidgetById(widgets[index]); - if (widget) - { - content[widgets[index]] = widget.get_value(); - } - } + Object.assign(content, self.et2.getInstanceManager().getValues(self.et2, true)); if (content) {