[FIX] Fixed form view problem in m2o && m2m.
bzr revid: nicolas.vanhoren@openerp.com-20110524093737-0u1rkpwj9n3mpie3
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user