From 65c1926a37586c811d1fbbf4b855cda0f2348986 Mon Sep 17 00:00:00 2001 From: Nicolas Lempereur Date: Wed, 15 Feb 2017 15:59:04 +0100 Subject: [PATCH] [FIX] web: html_frame field and lang vs onchange In mass mailing there is several possibilities of states when rendering the widget with a possibly new value: 1. we are not in edition a. we are in same language than user language => the editor content can be updated b. we are in a different language => the content cannot be updated 2. we are in edition a. we are editing translation : the editor content cannot be updated b. we are not editing translation (editor language == en_US) i. we are requesting editor update (by having magic value `on_change_model_and_list`) => the editor can be updated ii. we are in same language than user language => the editor content can be updated iii. we are in a different language => the editor content cannot be updated In summary: - if language is the same than the user, we can update the value - if value is magic `on_change_model_and_list` and we are not translating, we can update the editor Before this commit, this worked as expected but for 2.a.ii. which if the user language was not en_US would for example prevent editor updating. closes #15583 closes #15414 opw-708032 inspired by a27e24c6d1 note: the fix is a fix for 9.0 and saas-11 only. --- addons/web_editor/static/src/js/backend.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/web_editor/static/src/js/backend.js b/addons/web_editor/static/src/js/backend.js index 534ee1bc677..025a09f3d83 100644 --- a/addons/web_editor/static/src/js/backend.js +++ b/addons/web_editor/static/src/js/backend.js @@ -351,7 +351,12 @@ var FieldTextHtml = widget.extend({ }); }, render_value: function() { - if (this.lang !== this.view.dataset.context.lang || this.$iframe.attr('src').match(/[?&]edit_translations=1/)) { + if (this.$iframe.attr('src').match(/[?&]edit_translations=1/)) { + return; + } + // ONLY HAVE THIS IN 9.0 AND SAAS-11 + var is_editor_onchange = this.get('value') === '

on_change_model_and_list

'; + if (this.lang !== this.view.dataset.context.lang && !is_editor_onchange) { return; } var value = (this.get('value') || "").replace(/^]*>(\s*|)<\/p>$/, '');