[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:
@@ -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();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user