From 4d944fd34102bdc0f33f52c358dd56b9b476c8cc Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 16 May 2012 12:52:51 +0200 Subject: [PATCH] [imp] implemented switch_view in o2m view manager and used it in kanban view bzr revid: nicolas.vanhoren@openerp.com-20120516105251-rebt18lj9bwndydw --- addons/web/static/src/js/view_form.js | 47 ++++++++++++++------------- addons/web/static/src/js/views.js | 5 +++ 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index f4820f3bd24..25a49199241 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2962,7 +2962,30 @@ instance.web.form.One2ManyViewManager = instance.web.ViewManager.extend({ }); }, switch_view: function(mode, unused) { - return this._super(mode, unused); + if (mode !== 'form') { + return this._super(mode, unused); + } + var self = this; + var id = typeof(self.o2m.dataset.index) === "number" && self.o2m.dataset.index >= 0 ? + self.o2m.dataset.ids[self.o2m.dataset.index] : null; + var pop = new instance.web.form.FormOpenPopup(self.o2m.view); + pop.show_element(self.o2m.field.relation, id, self.o2m.build_context(), { + title: _t("Open: ") + self.name, + auto_write: false, + alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined, + parent_view: self.o2m.view, + child_name: self.o2m.name, + read_function: function() { + return self.o2m.dataset.read_ids.apply(self.o2m.dataset, arguments); + }, + form_view_options: {'not_interactible_on_create':true}, + readonly: self.o2m.get("effective_readonly") + }); + pop.on_write.add(function(id, data) { + self.o2m.dataset.write(id, data, {}, function(r) { + self.o2m.reload_current_view(); + }); + }); }, }); @@ -3059,28 +3082,6 @@ var lazy_build_o2m_kanban_view = function() { if (! instance.web_kanban || instance.web.form.One2ManyKanbanView) return; instance.web.form.One2ManyKanbanView = instance.web_kanban.KanbanView.extend({ - open_record: function(id) { - var self = this; - var pop = new instance.web.form.FormOpenPopup(self.o2m.view); - pop.show_element(self.o2m.field.relation, id, self.o2m.build_context(), { - title: _t("Open: ") + self.name, - auto_write: false, - alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined, - parent_view: self.o2m.view, - child_name: self.o2m.name, - read_function: function() { - return self.o2m.dataset.read_ids.apply(self.o2m.dataset, arguments); - }, - form_view_options: {'not_interactible_on_create':true}, - readonly: self.o2m.get("effective_readonly"), - }); - pop.on_write.add(function(id, data) { - self.o2m.dataset.write(id, data, {}, function(r) { - self.o2m.reload_current_view(); - }); - }); - - }, }); } diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index fae16dbd88f..d0af4811142 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -342,6 +342,11 @@ instance.web.ViewManager = instance.web.Widget.extend({ }); return view_promise; }, + /** + * Method used internally when a view asks to switch view. This method is meant + * to be extended by child classes to change the default behavior, which simply + * consist to switch to the asked view. + */ switch_view: function(view_type, no_store) { return this.on_mode_switch(view_type, no_store); },