diff options
| author | Nicolas Martinelli <nim@odoo.com> | 2015-11-13 15:04:33 +0100 |
|---|---|---|
| committer | Nicolas Martinelli <nim@odoo.com> | 2015-11-16 08:53:04 +0100 |
| commit | 48942f1242acbdf6a74640104932adabfa9dcefe (patch) | |
| tree | f4f078523c0803f217c0bc0216d1ebbd4fb85c66 /addons | |
| parent | 3d7ae73305cd83faa187d9e73dd9db6e62a5af55 (diff) | |
[FIX] web: display Warning if "Save & Close"
When a warning is triggered by an onchange, clicking on "Save & Close"
will cause the warning to be closed as soon as it is shown. This fix
prevents the saving and closing if a warning message is detected.
opw-653503
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/web/static/src/js/views/form_common.js | 14 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form_view.js | 9 |
2 files changed, 16 insertions, 7 deletions
diff --git a/addons/web/static/src/js/views/form_common.js b/addons/web/static/src/js/views/form_common.js index 7ec310be6fc..3e31579826a 100644 --- a/addons/web/static/src/js/views/form_common.js +++ b/addons/web/static/src/js/views/form_common.js @@ -868,11 +868,15 @@ var FormViewDialog = ViewDialog.extend({ if(!readonly) { options.buttons.splice(0, 0, {text: _t("Save") + ((multi_select)? _t(" & Close") : ""), classes: "btn-primary o_formdialog_save", click: function() { // o_formdialog_save class for web_tests! - $.when(self.view_form.save()).done(function() { - self.view_form.reload_mutex.exec(function() { - self.trigger('record_saved'); - self.close(); - }); + self.view_form.onchanges_mutex.def.then(function() { + if (!self.view_form.warning_displayed) { + $.when(self.view_form.save()).done(function() { + self.view_form.reload_mutex.exec(function() { + self.trigger('record_saved'); + self.close(); + }); + }); + } }); } }); diff --git a/addons/web/static/src/js/views/form_view.js b/addons/web/static/src/js/views/form_view.js index c729e397b65..9ef60610783 100644 --- a/addons/web/static/src/js/views/form_view.js +++ b/addons/web/static/src/js/views/form_view.js @@ -589,11 +589,16 @@ var FormView = View.extend(common.FieldManagerMixin, { } // FIXME XXX a list of warnings? if (!_.isEmpty(result.warning)) { - new Dialog(this, { + this.warning_displayed = true; + var dialog = new Dialog(this, { size: 'medium', title:result.warning.title, $content: QWeb.render("CrashManager.warning", result.warning) - }).open(); + }); + dialog.open(); + dialog.on('closed', this, function () { + this.warning_displayed = false; + }); } return $.Deferred().resolve(); |
