[ADD] Add form dirty confirmation dialog

bzr revid: fme@openerp.com-20110914210902-z08taar5woqmxnts
This commit is contained in:
Fabien Meghazi 2011-09-14 23:09:02 +02:00
parent eadb161a38
commit 5189b91d8e
1 changed files with 24 additions and 17 deletions

View File

@ -173,21 +173,23 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
} }
}, },
on_pager_action: function(action) { on_pager_action: function(action) {
switch (action) { if (this.can_be_discarded()) {
case 'first': switch (action) {
this.dataset.index = 0; case 'first':
break; this.dataset.index = 0;
case 'previous': break;
this.dataset.previous(); case 'previous':
break; this.dataset.previous();
case 'next': break;
this.dataset.next(); case 'next':
break; this.dataset.next();
case 'last': break;
this.dataset.index = this.dataset.ids.length - 1; case 'last':
break; this.dataset.index = this.dataset.ids.length - 1;
break;
}
this.reload();
} }
this.reload();
}, },
do_update_pager: function(hide_index) { do_update_pager: function(hide_index) {
var $pager = this.$element.find('#' + this.element_id + '_header div.oe_form_pager'); var $pager = this.$element.find('#' + this.element_id + '_header div.oe_form_pager');
@ -297,12 +299,17 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
var self = this; var self = this;
var def = $.Deferred(); var def = $.Deferred();
$.when(this.has_been_loaded).then(function() { $.when(this.has_been_loaded).then(function() {
self.dataset.default_get(_.keys(self.fields_view.fields)).then(self.on_record_loaded).then(function() { if (self.can_be_discarded()) {
def.resolve(); self.dataset.default_get(_.keys(self.fields_view.fields)).then(self.on_record_loaded).then(function() {
}); def.resolve();
});
}
}); });
return def.promise(); return def.promise();
}, },
can_be_discarded: function() {
return !this.dirty_for_user || confirm(_t("Warning, the record has been modified, your changes will be discarded."));
},
/** /**
* Triggers saving the form's record. Chooses between creating a new * Triggers saving the form's record. Chooses between creating a new
* record or saving an existing one depending on whether the record * record or saving an existing one depending on whether the record