summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views
diff options
context:
space:
mode:
authorNicolas Martinelli <nim@odoo.com>2015-11-13 15:04:33 +0100
committerNicolas Martinelli <nim@odoo.com>2015-11-16 08:53:04 +0100
commit48942f1242acbdf6a74640104932adabfa9dcefe (patch)
treef4f078523c0803f217c0bc0216d1ebbd4fb85c66 /addons/web/static/src/js/views
parent3d7ae73305cd83faa187d9e73dd9db6e62a5af55 (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/web/static/src/js/views')
-rw-r--r--addons/web/static/src/js/views/form_common.js14
-rw-r--r--addons/web/static/src/js/views/form_view.js9
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();