[FIX] Fixed form view problem in m2o && m2m.

bzr revid: nicolas.vanhoren@openerp.com-20110524093737-0u1rkpwj9n3mpie3
This commit is contained in:
niv-openerp
2011-05-24 11:37:37 +02:00
parent deb8744071
commit ab608efce9
4 changed files with 34 additions and 12 deletions
+23
View File
@@ -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
+2 -9
View File
@@ -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() {
+3 -3
View File
@@ -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);
+6
View File
@@ -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;