Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[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 a27e24c

note: the fix is a fix for 9.0 and saas-11 only.
  • Loading branch information
nle-odoo committed Feb 23, 2017
1 parent f3491a2 commit 65c1926
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion addons/web_editor/static/src/js/backend.js
Expand Up @@ -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') === '<p>on_change_model_and_list</p>';
if (this.lang !== this.view.dataset.context.lang && !is_editor_onchange) {
return;
}
var value = (this.get('value') || "").replace(/^<p[^>]*>(\s*|<br\/?>)<\/p>$/, '');
Expand Down

0 comments on commit 65c1926

Please sign in to comment.