diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index b0bb4887a49..8b19d1728b7 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -152,6 +152,29 @@ openerp.base.Registry = Class.extend( /** @lends openerp.base.Registry# */ { } }); +/** + * Generates an inherited class that replaces all the methods by dummy methods (methods + * that does nothing and always return undefined). + * + * @param {Class} claz + * @param {dict} add Additional functions to override. + * @return {Class} + */ +openerp.base.generate_dummy = function(claz, add) { + var newer = {}; + var copy_proto = function(prototype) { + for (var name in prototype) { + if(typeof prototype[name] == "function") { + newer[name] = function() {}; + } + } + if (prototype.prototype) + copy_proto(prototype.prototype); + } + copy_proto(claz.prototype); + return claz.extend(_.extend({}, newer, add || {})); +} + openerp.base.BasicController = Class.extend( /** @lends openerp.base.BasicController# */{ /** * rpc operations, event binding and callback calling should be done in diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index e7b5eabf634..a3ba230d596 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -913,12 +913,6 @@ openerp.base.form.FieldMany2OneDatasSet = openerp.base.DataSetStatic.extend({ } }); -openerp.base.form.FieldMany2OneViewManager = openerp.base.ViewManager.extend({ - init: function(session, element_id, dataset, views) { - this._super(session, element_id, dataset, views); - } -}); - openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({ init: function(view, node) { this._super(view, node); @@ -929,8 +923,7 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({ this.$element = $('#' + this.element_id); this.dataset = new openerp.base.form.FieldMany2OneDatasSet(this.session, this.field.relation); var views = [ [false,"list"], [false,"form"] ]; - this.viewmanager = new openerp.base.form.FieldMany2OneViewManager(this.view.session, this.element_id, this.dataset, views); - new openerp.base.m2o(this.viewmanager, this.$element, this.field.relation, this.dataset, this.session) + new openerp.base.m2o(this.$element, this.field.relation, this.dataset, this.session) this.$element.find('input').change(this.on_ui_change); }, set_value: function(value) { @@ -1165,7 +1158,7 @@ openerp.base.form.Many2XSelectPopup = openerp.base.BaseWidget.extend({ this.searchview.hide(); this.view_list.$element.hide(); this.dataset.index = null; - this.view_form = new openerp.base.FormView({}, this.session, + this.view_form = new openerp.base.FormView(new openerp.base.DummyViewManager(), this.session, this.element_id + "_view_form", this.dataset, false); this.view_form.start(); this.view_form.on_loaded.add_last(function() { diff --git a/addons/base/static/src/js/m2o.js b/addons/base/static/src/js/m2o.js index af0a7496005..5f17371c61c 100644 --- a/addons/base/static/src/js/m2o.js +++ b/addons/base/static/src/js/m2o.js @@ -1,10 +1,9 @@ openerp.base.m2o = function(openerp){ openerp.base.m2o = openerp.base.Controller.extend({ - init: function(view_manager, element_id, model, dataset, session){ + init: function(element_id, model, dataset, session){ this._super(element_id, model, dataset, session); - this.view_manager = view_manager this.session = session; this.element = element_id.find('input'); this.button = element_id.find('div'); @@ -74,7 +73,8 @@ openerp.base.m2o = function(openerp){ minWidth: 800 }); self.element.val(''); - var event_form = new openerp.base.FormView(self.view_manager, self.session, element_id, self.dataset, false); + var event_form = new openerp.base.FormView(new openerp.base.DummyViewManager(), + self.session, element_id, self.dataset, false); event_form.start(); }); $input.val(self.element.data( "autocomplete" ).term); diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index c99da8fb66d..4a79d7e4692 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -198,6 +198,12 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ } }); +openerp.base.DummyViewManager = openerp.base.generate_dummy(openerp.base.ViewManager, { + init: function() { + this.action = {}; + } +}); + openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({ init: function(session, element_id, action) { var dataset;