From 711de6f686a43631df43451951be515cb62d02c6 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 10 Apr 2012 12:07:41 +0200 Subject: [PATCH] [imp] refactored mode in form view bzr revid: nicolas.vanhoren@openerp.com-20120410100741-v14iaff7t4t60u2t --- addons/web/static/src/js/view_form.js | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 2b47d67bc72..943ffcd3503 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -45,7 +45,8 @@ openerp.web.FormView = openerp.web.View.extend({ this.has_been_loaded = $.Deferred(); this.translatable_fields = []; _.defaults(this.options, { - "not_interactible_on_create": false + "not_interactible_on_create": false, + "initial_mode": "view", }); this.is_initialized = $.Deferred(); this.mutating_mutex = new $.Mutex(); @@ -112,8 +113,8 @@ openerp.web.FormView = openerp.web.View.extend({ } }]); } - var initial_mode = 'view'; - if (this.getParent().action) { + var initial_mode = this.options.initial_mode; + if (this.getParent() && this.getParent().action) { switch (this.getParent().action.target) { case 'new': case 'inline': @@ -121,7 +122,8 @@ openerp.web.FormView = openerp.web.View.extend({ break; } } - this.do_switch_mode(initial_mode); + this.on("change:mode", this, this.switch_mode); + this.set({mode: initial_mode}); this.has_been_loaded.resolve(); return $.when(); }, @@ -449,7 +451,8 @@ openerp.web.FormView = openerp.web.View.extend({ return $.Deferred().reject(); } }, - do_switch_mode: function(mode) { + switch_mode: function() { + var mode = this.get("mode"); var self = this; if(mode=="view") { self.$buttons.find('.oe_form_buttons_edit').hide(); @@ -469,12 +472,12 @@ openerp.web.FormView = openerp.web.View.extend({ on_button_save: function() { var self = this; return this.do_save().then(function(result) { - self.do_switch_mode("view"); + self.set({mode: "view"}); }); }, on_button_cancel: function() { if (this.can_be_discarded()) { - this.do_switch_mode("view"); + this.set({mode: "view"}); } }, on_button_new: function() { @@ -497,11 +500,11 @@ openerp.web.FormView = openerp.web.View.extend({ return def.promise(); }, on_button_edit: function() { - return this.do_switch_mode("edit"); + return this.set({mode: "edit"}); }, on_button_create: function() { this.dataset.index = null; - this.do_switch_mode("edit"); + this.set({mode: "edit"}); this.do_show(); }, on_button_duplicate: function() { @@ -511,7 +514,7 @@ openerp.web.FormView = openerp.web.View.extend({ self.dataset.call('copy', [self.datarecord.id, {}, self.dataset.context]).then(function(new_id) { return self.on_created({ result : new_id }); }).then(function() { - return self.do_switch_mode(1); + return self.set({mode: "edit"}); }).then(function() { def.resolve(); });