[FIX] web_editor: html_frame: saving in readonly

A form view record may be saved even if the record is displayed in
readonly (e.g. when a button in the form view is clicked). When
this happened, if there were an html field with html_frame widget
in the form, it crashed (e.g. in Email Marketing > Mass Mailings >
open one > click on Test Mailing).
This commit is contained in:
Aaron Bohy
2017-08-10 13:56:22 +02:00
parent 87133a8235
commit deba788b4c
2 changed files with 31 additions and 1 deletions
+1 -1
View File
@@ -383,7 +383,7 @@ var FieldTextHtml = AbstractField.extend({
* @override
*/
commitChanges: function () {
if (!this.loaded) {
if (!this.loaded || this.mode === 'readonly') {
return;
}
// switch to WYSIWYG mode if currently in code mode to get all changes
@@ -188,4 +188,34 @@ QUnit.test('field htmlsimple does not crash when commitChanges is called in mode
form.destroy();
});
QUnit.test('html_frame does not crash when saving in readonly', function (assert) {
// The 'Save' action may be triggered even in readonly (e.g. when clicking
// on a button in the form view)
assert.expect(0);
var form = testUtils.createView({
View: FormView,
model: 'mass.mailing',
data: this.data,
arch: '<form string="Partners">' +
'<sheet>' +
'<field name="body" widget="html_frame" options="{\'editor_url\': \'/test\'}"/>' +
'</sheet>' +
'</form>',
res_id: 1,
mockRPC: function (route) {
if (_.str.startsWith(route, '/test')) {
// manually call the callback to simulate that the iframe has
// been correctly loaded
window.odoo[$.deparam(route).callback + '_content'].call();
return $.when();
}
return this._super.apply(this, arguments);
},
});
form.saveRecord(); // before the fix done in this commit, it crashed here
form.destroy();
});
});