diff --git a/addons/base/static/src/base.html b/addons/base/static/src/base.html
index 2761638c6d0..173539cace7 100644
--- a/addons/base/static/src/base.html
+++ b/addons/base/static/src/base.html
@@ -23,6 +23,7 @@
+
diff --git a/addons/base/static/src/js/base.js b/addons/base/static/src/js/base.js
index 8a040a64097..c0c1f9131d9 100644
--- a/addons/base/static/src/js/base.js
+++ b/addons/base/static/src/js/base.js
@@ -1,69 +1,3 @@
-/*---------------------------------------------------------
- * John Resig Class, to be moved to openerp.base.Class
- *---------------------------------------------------------*/
-
-(function() {
- var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
- // The base Class implementation (does nothing)
- this.Class = function(){};
-
- // Create a new Class that inherits from this class
- Class.extend = function(prop) {
- var _super = this.prototype;
-
- // Instantiate a base class (but only create the instance,
- // don't run the init constructor)
- initializing = true;
- var prototype = new this();
- initializing = false;
-
- // Copy the properties over onto the new prototype
- for (var name in prop) {
- // Check if we're overwriting an existing function
- prototype[name] = typeof prop[name] == "function" &&
- typeof _super[name] == "function" && fnTest.test(prop[name]) ?
- (function(name, fn){
- return function() {
- var tmp = this._super;
-
- // Add a new ._super() method that is the same method
- // but on the super-class
- this._super = _super[name];
-
- // The method only need to be bound temporarily, so we
- // remove it when we're done executing
- var ret = fn.apply(this, arguments);
- this._super = tmp;
-
- return ret;
- };
- })(name, prop[name]) :
- prop[name];
- }
-
- // The dummy class constructor
- function Class() {
- // All construction is actually done in the init method
- if ( !initializing && this.init ) {
- var ret = this.init.apply(this, arguments);
- if (ret) { return ret; }
- }
- return this;
- }
-
- // Populate our constructed prototype object
- Class.prototype = prototype;
-
- // Enforce the constructor to be what we expect
- Class.constructor = Class;
-
- // And make this class extendable
- Class.extend = arguments.callee;
-
- return Class;
- };
-})();
-
//---------------------------------------------------------
// OpenERP initialisation and black magic about the pool
//---------------------------------------------------------
@@ -125,6 +59,7 @@
/** @namespace */
openerp.base = function(instance) {
+ openerp.base.controller(instance);
openerp.base.dates(instance);
openerp.base.chrome(instance);
openerp.base.data(instance);
diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js
index 5eb0261100e..74dfb650f1f 100644
--- a/addons/base/static/src/js/chrome.js
+++ b/addons/base/static/src/js/chrome.js
@@ -4,61 +4,12 @@
openerp.base.chrome = function(openerp) {
-openerp.base.callback = function(obj, method) {
- var callback = function() {
- var args = Array.prototype.slice.call(arguments);
- var r;
- for(var i = 0; i < callback.callback_chain.length; i++) {
- var c = callback.callback_chain[i];
- if(c.unique) {
- callback.callback_chain.splice(i, 1);
- i -= 1;
- }
- r = c.callback.apply(c.self, c.args.concat(args));
- // TODO special value to stop the chain
- // openerp.base.callback_stop
- }
- return r;
- };
- callback.callback_chain = [];
- callback.add = function(f) {
- if(typeof(f) == 'function') {
- f = { callback: f, args: Array.prototype.slice.call(arguments, 1) };
- }
- f.self = f.self || null;
- f.args = f.args || [];
- f.unique = !!f.unique;
- if(f.position == 'last') {
- callback.callback_chain.push(f);
- } else {
- callback.callback_chain.unshift(f);
- }
- return callback;
- };
- callback.add_first = function(f) {
- return callback.add.apply(null,arguments);
- };
- callback.add_last = function(f) {
- return callback.add({
- callback: f,
- args: Array.prototype.slice.call(arguments, 1),
- position: "last"
- });
- };
-
- return callback.add({
- callback: method,
- self:obj,
- args:Array.prototype.slice.call(arguments, 2)
- });
-};
-
/**
* Base error for lookup failure
*
* @class
*/
-openerp.base.NotFound = Class.extend( /** @lends openerp.base.NotFound# */ {
+openerp.base.NotFound = openerp.base.Class.extend( /** @lends openerp.base.NotFound# */ {
});
openerp.base.KeyNotFound = openerp.base.NotFound.extend( /** @lends openerp.base.KeyNotFound# */ {
/**
@@ -91,7 +42,7 @@ openerp.base.ObjectNotFound = openerp.base.NotFound.extend( /** @lends openerp.b
return "Could not find any object of path " + this.path;
}
});
-openerp.base.Registry = Class.extend( /** @lends openerp.base.Registry# */ {
+openerp.base.Registry = openerp.base.Class.extend( /** @lends openerp.base.Registry# */ {
/**
* Stores a mapping of arbitrary key (strings) to object paths (as strings
* as well).
@@ -185,87 +136,6 @@ openerp.base.Registry = Class.extend( /** @lends openerp.base.Registry# */ {
}
});
-openerp.base.BasicController = Class.extend( /** @lends openerp.base.BasicController# */{
- /**
- * rpc operations, event binding and callback calling should be done in
- * start() instead of init so that event can be hooked in between.
- *
- * @constructs
- */
- init: function(element_id) {
- this.element_id = element_id;
- this.$element = $('#' + element_id);
- if (element_id) {
- openerp.screen[element_id] = this;
- }
-
- // Transform on_* method into openerp.base.callbacks
- for (var name in this) {
- if(typeof(this[name]) == "function") {
- this[name].debug_name = name;
- // bind ALL function to this not only on_and _do ?
- if((/^on_|^do_/).test(name)) {
- this[name] = openerp.base.callback(this, this[name]);
- }
- }
- }
- },
- /**
- * Controller start
- * event binding, rpc and callback calling required to initialize the
- * object can happen here
- *
- * Returns a promise object letting callers (subclasses and direct callers)
- * know when this component is done starting
- *
- * @returns {jQuery.Deferred}
- */
- start: function() {
- // returns an already fulfilled promise. Maybe we could return nothing?
- // $.when can take non-deferred and in that case it simply considers
- // them all as fulfilled promises.
- // But in thise case we *have* to ensure callers use $.when and don't
- // try to call deferred methods on this return value.
- return $.Deferred().done().promise();
- },
- stop: function() {
- },
- log: function() {
- var args = Array.prototype.slice.call(arguments);
- var caller = arguments.callee.caller;
- // TODO add support for line number using
- // https://github.com/emwendelin/javascript-stacktrace/blob/master/stacktrace.js
- // args.unshift("" + caller.debug_name);
- this.on_log.apply(this,args);
- },
- on_log: function() {
- if(window.openerp.debug || (window.location.search.indexOf('?debug') !== -1)) {
- var notify = false;
- var body = false;
- if(window.console) {
- console.log(arguments);
- } else {
- body = true;
- }
- var a = Array.prototype.slice.call(arguments, 0);
- for(var i = 0; i < a.length; i++) {
- var v = a[i]==null ? "null" : a[i].toString();
- if(i==0) {
- notify = v.match(/^not/);
- body = v.match(/^bod/);
- }
- if(body) {
- $('
').text(v).appendTo($('body'));
- }
- if(notify && this.notification) {
- this.notification.notify("Logging:",v);
- }
- }
- }
-
- }
-});
-
/**
* Generates an inherited class that replaces all the methods by null methods (methods
* that does nothing and always return undefined).
@@ -292,8 +162,8 @@ openerp.base.generate_null_object_class = function(claz, add) {
};
openerp.base.Notification = openerp.base.BasicController.extend({
- init: function(element_id) {
- this._super(element_id);
+ init: function(parent, element_id) {
+ this._super(parent, element_id);
this.$element.notify({
speed: 500,
expires: 1500
@@ -313,6 +183,7 @@ openerp.base.Notification = openerp.base.BasicController.extend({
}
});
+// Session should be a Class not Controller
openerp.base.Session = openerp.base.BasicController.extend( /** @lends openerp.base.Session# */{
/**
* @constructs
@@ -321,7 +192,7 @@ openerp.base.Session = openerp.base.BasicController.extend( /** @lends openerp.b
* @param server
* @param port
*/
- init: function(element_id, server, port) {
+ init: function(parent, element_id, server, port) {
this._super(element_id);
this.server = (server == undefined) ? location.hostname : server;
this.port = (port == undefined) ? location.port : port;
@@ -570,88 +441,19 @@ openerp.base.Session = openerp.base.BasicController.extend( /** @lends openerp.b
}
});
-// A controller takes an already existing element
-// new()
-// start()
+/**
+ * OpenERP session aware controller
+ * a controller takes an already existing dom element and manage it
+ */
openerp.base.Controller = openerp.base.BasicController.extend( /** @lends openerp.base.Controller# */{
- /**
- * Controller manifest used to declare standard controller attributes
- */
- controller_manifest: {
- register: null,
- template: "",
- element_post_prefix: false
- },
- /**
- * Controller registry,
- */
- controller_registry: {
- },
- /**
- * Add a new child controller
- */
- controller_get: function(key) {
- return this.controller_registry[key];
- // OR should build it ? setting parent correctly ?
- // function construct(constructor, args) {
- // function F() {
- // return constructor.apply(this, args);
- // }
- // F.prototype = constructor.prototype;
- // return new F();
- // }
- // var obj = this.controller_registry[key];
- // if(obj) {
- // return construct(obj, Array.prototype.slice.call(arguments, 1));
- // }
- },
- controller_new: function(key) {
- var self;
- // OR should contrustct it ? setting parent correctly ?
- function construct(constructor, args) {
- function F() {
- return constructor.apply(this, args);
- }
- F.prototype = constructor.prototype;
- return new F();
- }
- var obj = this.controller_registry[key];
- if(obj) {
- // TODO Prepend parent
- return construct(obj, Array.prototype.slice.call(arguments, 1));
- }
- },
/**
* @constructs
* @extends openerp.base.BasicController
*/
- init: function(parent_or_session, element_id) {
- this._super(element_id);
- this.controller_parent = null;
- this.controller_children = [];
- if(parent_or_session) {
- if(parent_or_session.session) {
- this.parent = parent_or_session;
- this.session = this.parent.session;
- if(this.parent.children) {
- this.parent.children.push(this);
- }
- } else {
- // TODO remove Backward compatilbility
- this.session = parent_or_session;
- }
- }
- // Apply manifest options
- if(this.controller_manifest) {
- var register = this.controller_manifest.register;
- // TODO accept a simple string
- if(register) {
- for(var i=0; i').text(v).appendTo($('body'));
+ }
+ if(notify && this.notification) {
+ this.notification.notify("Logging:",v);
+ }
+ }
+ }
+
+ }
+});
+
+};
+
+// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js
index c70e23c516a..90b4b7c002d 100644
--- a/addons/base/static/src/js/data.js
+++ b/addons/base/static/src/js/data.js
@@ -39,18 +39,16 @@ openerp.base.DataGroup = openerp.base.Controller.extend( /** @lends openerp.bas
* @param {Array} group_by sequence of fields by which to group
* @param {Number} [level=0] nesting level of the group
*/
- init: function(session, model, domain, context, group_by, level) {
+ init: function(parent, model, domain, context, group_by, level) {
+ this._super(parent, null);
if (group_by) {
if (group_by.length || context['group_by_no_leaf']) {
- return new openerp.base.ContainerDataGroup(
- session, model, domain, context, group_by, level);
+ return new openerp.base.ContainerDataGroup( this, model, domain, context, group_by, level);
} else {
- return new openerp.base.GrouplessDataGroup(
- session, model, domain, context, level);
+ return new openerp.base.GrouplessDataGroup( this, model, domain, context, level);
}
}
- this._super(session, null);
this.model = model;
this.context = context;
this.domain = domain;
@@ -59,8 +57,7 @@ openerp.base.DataGroup = openerp.base.Controller.extend( /** @lends openerp.bas
},
cls: 'DataGroup'
});
-openerp.base.ContainerDataGroup = openerp.base.DataGroup.extend(
- /** @lends openerp.base.ContainerDataGroup# */ {
+openerp.base.ContainerDataGroup = openerp.base.DataGroup.extend( /** @lends openerp.base.ContainerDataGroup# */ {
/**
*
* @constructs
@@ -73,8 +70,8 @@ openerp.base.ContainerDataGroup = openerp.base.DataGroup.extend(
* @param group_by
* @param level
*/
- init: function (session, model, domain, context, group_by, level) {
- this._super(session, model, domain, context, null, level);
+ init: function (parent, model, domain, context, group_by, level) {
+ this._super(parent, model, domain, context, null, level);
this.group_by = group_by;
},
@@ -197,8 +194,7 @@ openerp.base.ContainerDataGroup = openerp.base.DataGroup.extend(
});
}
});
-openerp.base.GrouplessDataGroup = openerp.base.DataGroup.extend(
- /** @lends openerp.base.GrouplessDataGroup# */ {
+openerp.base.GrouplessDataGroup = openerp.base.DataGroup.extend( /** @lends openerp.base.GrouplessDataGroup# */ {
/**
*
* @constructs
@@ -210,18 +206,16 @@ openerp.base.GrouplessDataGroup = openerp.base.DataGroup.extend(
* @param context
* @param level
*/
- init: function (session, model, domain, context, level) {
- this._super(session, model, domain, context, null, level);
+ init: function (parent, model, domain, context, level) {
+ this._super(parent, model, domain, context, null, level);
},
list: function (fields, ifGroups, ifRecords) {
ifRecords(_.extend(
- new openerp.base.DataSetSearch(this.session, this.model),
+ new openerp.base.DataSetSearch(this, this.model),
{domain: this.domain, context: this.context, _sort: this.sort}));
}
});
-
-openerp.base.StaticDataGroup = openerp.base.GrouplessDataGroup.extend(
- /** @lends openerp.base.StaticDataGroup# */ {
+openerp.base.StaticDataGroup = openerp.base.GrouplessDataGroup.extend( /** @lends openerp.base.StaticDataGroup# */ {
/**
* A specialization of groupless data groups, relying on a single static
* dataset as its records provider.
@@ -249,8 +243,8 @@ openerp.base.DataSet = openerp.base.Controller.extend( /** @lends openerp.base.
* @param {openerp.base.Session} session current OpenERP session
* @param {String} model the OpenERP model this dataset will manage
*/
- init: function(session, model, context) {
- this._super(session);
+ init: function(parent, model, context) {
+ this._super(parent);
this.model = model;
this.context = context || {};
this.index = null;
@@ -382,10 +376,9 @@ openerp.base.DataSet = openerp.base.Controller.extend( /** @lends openerp.base.
return this.context;
}
});
-
openerp.base.DataSetStatic = openerp.base.DataSet.extend({
- init: function(session, model, context, ids) {
- this._super(session, model, context);
+ init: function(parent, model, context, ids) {
+ this._super(parent, model, context);
// all local records
this.ids = ids || [];
},
@@ -410,10 +403,9 @@ openerp.base.DataSetStatic = openerp.base.DataSet.extend({
this.set_ids(_.without.apply(null, [this.ids].concat(ids)));
}
});
-
openerp.base.DataSetSearch = openerp.base.DataSet.extend({
- init: function(session, model, context, domain) {
- this._super(session, model, context);
+ init: function(parent, model, context, domain) {
+ this._super(parent, model, context);
this.domain = domain || [];
this._sort = [];
this.offset = 0;
@@ -486,7 +478,6 @@ openerp.base.DataSetSearch = openerp.base.DataSet.extend({
}, error_callback);
}
});
-
openerp.base.BufferedDataSet = openerp.base.DataSetStatic.extend({
virtual_id_prefix: "one2many_v_id_",
virtual_id_regex: /one2many_v_id_.*/,
@@ -591,7 +582,6 @@ openerp.base.BufferedDataSet = openerp.base.DataSetStatic.extend({
return completion.promise();
}
});
-
openerp.base.ReadOnlyDataSetSearch = openerp.base.DataSetSearch.extend({
create: function(data, callback, error_callback) {
this.on_create(data);
diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js
index a580de3a2ff..b24f0e77c79 100644
--- a/addons/base/static/src/js/form.js
+++ b/addons/base/static/src/js/form.js
@@ -17,9 +17,9 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
*
* @property {openerp.base.Registry} registry=openerp.base.form.widgets widgets registry for this form view instance
*/
- init: function(view_manager, session, element_id, dataset, view_id, options) {
- this._super(session, element_id);
- this.view_manager = view_manager || new openerp.base.NullViewManager();
+ init: function(parent, element_id, dataset, view_id, options) {
+ this._super(parent, element_id);
+ this.view_manager = parent || new openerp.base.NullViewManager();
this.dataset = dataset;
this.model = dataset.model;
this.view_id = view_id;
@@ -413,7 +413,7 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
} else {
// TODO fme: modify this so it doesn't try to load attachments when there is not sidebar
/*(new openerp.base.DataSetSearch(
- this.session, 'ir.attachment', this.dataset.get_context(),
+ this, 'ir.attachment', this.dataset.get_context(),
[['res_model', '=', this.dataset.model],
['res_id', '=', this.datarecord.id],
['type', 'in', ['binary', 'url']]])).read_slice(
@@ -539,7 +539,7 @@ openerp.base.form.Widget = openerp.base.Controller.extend({
this.element_name = this.element_name || this.type;
this.element_id = [this.view.element_id, this.element_name, this.view.widgets_counter++].join("_");
- this._super(this.view.session, this.element_id);
+ this._super(view, this.element_id);
this.view.widgets[this.element_id] = this;
this.children = node.children;
@@ -1387,7 +1387,7 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
var search_val = request.term;
var self = this;
- var dataset = new openerp.base.DataSetStatic(this.session, this.field.relation, self.build_context());
+ var dataset = new openerp.base.DataSetStatic(this, this.field.relation, self.build_context());
dataset.name_search(search_val, self.build_domain(), 'ilike',
this.limit + 1, function(data) {
@@ -1429,7 +1429,7 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
},
_quick_create: function(name) {
var self = this;
- var dataset = new openerp.base.DataSetStatic(this.session, this.field.relation, self.build_context());
+ var dataset = new openerp.base.DataSetStatic(this, this.field.relation, self.build_context());
dataset.name_create(name, function(data) {
self._change_int_ext_value(data);
}).fail(function(error, event) {
@@ -1441,7 +1441,7 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
// all search/create popup handling
_search_create_popup: function(view, ids, context) {
var self = this;
- var pop = new openerp.base.form.SelectCreatePopup(null, self.view.session);
+ var pop = new openerp.base.form.SelectCreatePopup(this);
pop.select_element(self.field.relation,{
initial_ids: ids ? _.map(ids, function(x) {return x[0]}) : undefined,
initial_view: view,
@@ -1449,7 +1449,7 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
}, self.build_domain(),
new openerp.base.CompoundContext(self.build_context(), context || {}));
pop.on_select_elements.add(function(element_ids) {
- var dataset = new openerp.base.DataSetStatic(this.session, this.field.relation, self.build_context());
+ var dataset = new openerp.base.DataSetStatic(this, this.field.relation, self.build_context());
dataset.name_get([element_ids[0]], function(data) {
self._change_int_ext_value(data[0]);
pop.stop();
@@ -1487,7 +1487,7 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
self._change_int_ext_value(rval);
};
if(typeof(value) === "number") {
- var dataset = new openerp.base.DataSetStatic(this.session, this.field.relation, self.build_context());
+ var dataset = new openerp.base.DataSetStatic(this, this.field.relation, self.build_context());
dataset.name_get([value], function(data) {
real_set_value(data[0]);
}).fail(function() {self.tmp_value = undefined;});
@@ -1572,7 +1572,7 @@ openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({
var self = this;
- this.dataset = new openerp.base.form.One2ManyDataSet(this.session, this.field.relation);
+ this.dataset = new openerp.base.form.One2ManyDataSet(this, this.field.relation);
this.dataset.o2m = this;
this.dataset.parent_view = this.view;
this.dataset.on_change.add_last(function() {
@@ -1596,8 +1596,7 @@ openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({
});
this.views = views;
- this.viewmanager = new openerp.base.ViewManager(this.view.session,
- this.element_id, this.dataset, views);
+ this.viewmanager = new openerp.base.ViewManager(this, this.element_id, this.dataset, views);
this.viewmanager.registry = openerp.base.views.clone({
list: 'openerp.base.form.One2ManyListView',
form: 'openerp.base.form.One2ManyFormView'
@@ -1731,7 +1730,7 @@ openerp.base.form.One2ManyListView = openerp.base.ListView.extend({
this._super.apply(this, arguments);
} else {
var self = this;
- var pop = new openerp.base.form.SelectCreatePopup(null, self.o2m.view.session);
+ var pop = new openerp.base.form.SelectCreatePopup(this);
pop.select_element(self.o2m.field.relation,{
initial_view: "form",
alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined,
@@ -1777,15 +1776,13 @@ openerp.base.form.FieldMany2Many = openerp.base.form.Field.extend({
var self = this;
- this.dataset = new openerp.base.form.Many2ManyDataSet(
- this.session, this.field.relation);
+ this.dataset = new openerp.base.form.Many2ManyDataSet( this, this.field.relation);
this.dataset.m2m = this;
this.dataset.on_unlink.add_last(function(ids) {
self.on_ui_change();
});
- this.list_view = new openerp.base.form.Many2ManyListView(
- null, this.view.session, this.list_id, this.dataset, false, {
+ this.list_view = new openerp.base.form.Many2ManyListView(this.view.view_manager, this.list_id, this.dataset, false, {
'addable': 'Add',
'selectable': self.multi_selection
});
@@ -1828,8 +1825,7 @@ openerp.base.form.Many2ManyDataSet = openerp.base.DataSetStatic.extend({
openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({
do_add_record: function () {
- var pop = new openerp.base.form.SelectCreatePopup(
- null, this.m2m_field.view.session);
+ var pop = new openerp.base.form.SelectCreatePopup(this);
pop.select_element(this.model, {},
new openerp.base.CompoundDomain(this.m2m_field.build_domain(), ["!", ["id", "in", this.m2m_field.dataset.ids]]),
this.m2m_field.build_context());
@@ -1847,7 +1843,7 @@ openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({
},
do_activate_record: function(index, id) {
var self = this;
- var pop = new openerp.base.form.FormOpenPopup(null, this.m2m_field.view.session);
+ var pop = new openerp.base.form.FormOpenPopup(this);
pop.show_element(this.dataset.model, id, this.m2m_field.build_context(), {});
pop.on_write_completed.add_last(function() {
self.reload_content();
@@ -1920,7 +1916,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({
$sbutton.click(function() {
self.on_select_elements(self.selected_ids);
});
- self.view_list = new openerp.base.form.SelectCreateListView( null, self.session,
+ self.view_list = new openerp.base.form.SelectCreateListView(this,
self.element_id + "_view_list", self.dataset, false,
{'deletable': false});
self.view_list.popup = self;
@@ -1935,7 +1931,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({
if (!this.options.auto_create)
return;
var self = this;
- var wdataset = new openerp.base.DataSetSearch(this.session, this.model, this.context, this.domain);
+ var wdataset = new openerp.base.DataSetSearch(this, this.model, this.context, this.domain);
wdataset.parent_view = this.options.parent_view;
wdataset.create(data, function(r) {
self.on_select_elements([r.result]);
@@ -2030,7 +2026,7 @@ openerp.base.form.FormOpenPopup = openerp.base.BaseWidget.extend({
if (!this.options.auto_write)
return;
var self = this;
- var wdataset = new openerp.base.DataSetSearch(this.session, this.model, this.context, this.domain);
+ var wdataset = new openerp.base.DataSetSearch(this, this.model, this.context, this.domain);
wdataset.parent_view = this.options.parent_view;
wdataset.write(id, data, function(r) {
self.on_write_completed();
diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js
index e284f6ca723..e1506a9f8e1 100644
--- a/addons/base/static/src/js/list.js
+++ b/addons/base/static/src/js/list.js
@@ -87,9 +87,9 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
*
* @borrows openerp.base.ActionExecutor#execute_action as #execute_action
*/
- init: function(view_manager, session, element_id, dataset, view_id, options) {
- this._super(session, element_id);
- this.view_manager = view_manager || new openerp.base.NullViewManager();
+ init: function(parent, element_id, dataset, view_id, options) {
+ this._super(parent, element_id);
+ this.view_manager = parent || new openerp.base.NullViewManager();
this.dataset = dataset;
this.model = dataset.model;
this.view_id = view_id;
@@ -100,7 +100,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
this.flags = this.view_manager.flags || {};
this.set_groups(new openerp.base.ListView.Groups(this));
-
+
if (this.dataset instanceof openerp.base.DataSetStatic) {
this.groups.datagroup = new openerp.base.StaticDataGroup(this.dataset);
}
@@ -254,8 +254,10 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
})
.val(self._limit || 'NaN');
});
-
+ if(this.view_manager.sidebar == undefined)
+ debugger;
this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar);
+
},
/**
* Configures the ListView pager based on the provided dataset's information
@@ -451,7 +453,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
this.dataset.context = results.context;
this.dataset.domain = results.domain;
this.groups.datagroup = new openerp.base.DataGroup(
- this.session, this.model,
+ this, this.model,
results.domain, results.context,
results.group_by);
this.groups.datagroup.sort = this.dataset._sort;
@@ -606,7 +608,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
}
// TODO: implement reorder (drag and drop rows)
});
-openerp.base.ListView.List = Class.extend( /** @lends openerp.base.ListView.List# */{
+openerp.base.ListView.List = openerp.base.Class.extend( /** @lends openerp.base.ListView.List# */{
/**
* List display for the ListView, handles basic DOM events and transforms
* them in the relevant higher-level events, to which the list view (or
@@ -842,7 +844,7 @@ openerp.base.ListView.List = Class.extend( /** @lends openerp.base.ListView.List
}
// drag and drop
});
-openerp.base.ListView.Groups = Class.extend( /** @lends openerp.base.ListView.Groups# */{
+openerp.base.ListView.Groups = openerp.base.Class.extend( /** @lends openerp.base.ListView.Groups# */{
passtrough_events: 'action deleted row_link',
/**
* Grouped display for the ListView. Handles basic DOM events and interacts
diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js
index de715df28e7..fcf4a175b3c 100644
--- a/addons/base/static/src/js/search.js
+++ b/addons/base/static/src/js/search.js
@@ -1,9 +1,9 @@
openerp.base.search = function(openerp) {
openerp.base.SearchView = openerp.base.Controller.extend({
- init: function(view_manager, session, element_id, dataset, view_id, defaults) {
- this._super(session, element_id);
- this.view_manager = view_manager || new openerp.base.NullViewManager();
+ init: function(parent, element_id, dataset, view_id, defaults) {
+ this._super(parent, element_id);
+ this.view_manager = parent || new openerp.base.NullViewManager();
this.dataset = dataset;
this.model = dataset.model;
this.view_id = view_id;
@@ -115,7 +115,7 @@ openerp.base.SearchView = openerp.base.Controller.extend({
data.fields_view.fields);
// for extended search view
- var ext = new openerp.base.search.ExtendedSearch(null, this.session, this.model);
+ var ext = new openerp.base.search.ExtendedSearch(this, this.model);
lines.push([ext]);
this.inputs.push(ext);
@@ -124,6 +124,7 @@ openerp.base.SearchView = openerp.base.Controller.extend({
'lines': lines,
'defaults': this.defaults
});
+
// We don't understand why the following commented line does not work in Chrome but
// the non-commented line does. As far as we investigated, only God knows.
//this.$element.html(render);
@@ -301,8 +302,7 @@ openerp.base.search.fields = new openerp.base.Registry({
'many2one': 'openerp.base.search.ManyToOneField',
'many2many': 'openerp.base.search.ManyToManyField'
});
-openerp.base.search.Invalid = Class.extend(
- /** @lends openerp.base.search.Invalid# */{
+openerp.base.search.Invalid = openerp.base.Class.extend( /** @lends openerp.base.search.Invalid# */{
/**
* Exception thrown by search widgets when they hold invalid values,
* which they can not return when asked.
@@ -322,8 +322,7 @@ openerp.base.search.Invalid = Class.extend(
': [' + this.value + '] is ' + this.message);
}
});
-openerp.base.search.Widget = openerp.base.Controller.extend(
- /** @lends openerp.base.search.Widget# */{
+openerp.base.search.Widget = openerp.base.Controller.extend( /** @lends openerp.base.search.Widget# */{
template: null,
/**
* Root class of all search widgets
@@ -420,8 +419,7 @@ openerp.base.search.Group = openerp.base.search.Widget.extend({
}
});
-openerp.base.search.Input = openerp.base.search.Widget.extend(
- /** @lends openerp.base.search.Input# */{
+openerp.base.search.Input = openerp.base.search.Widget.extend( /** @lends openerp.base.search.Input# */{
/**
* @constructs
* @extends openerp.base.search.Widget
@@ -491,8 +489,7 @@ openerp.base.search.Filter = openerp.base.search.Input.extend({
return this.attrs.domain;
}
});
-openerp.base.search.Field = openerp.base.search.Input.extend(
- /** @lends openerp.base.search.Field# */ {
+openerp.base.search.Field = openerp.base.search.Input.extend( /** @lends openerp.base.search.Field# */ {
template: 'SearchView.field',
default_operator: '=',
/**
@@ -557,8 +554,7 @@ openerp.base.search.Field = openerp.base.search.Input.extend(
* @class
* @extends openerp.base.search.Field
*/
-openerp.base.search.CharField = openerp.base.search.Field.extend(
- /** @lends openerp.base.search.CharField# */ {
+openerp.base.search.CharField = openerp.base.search.Field.extend( /** @lends openerp.base.search.CharField# */ {
default_operator: 'ilike',
get_value: function () {
return this.$element.val();
@@ -631,12 +627,7 @@ openerp.base.search.SelectionField = openerp.base.search.Field.extend({
return this.$element.val();
}
});
-/**
- * @class
- * @extends openerp.base.search.Field
- */
-openerp.base.search.DateField = openerp.base.search.Field.extend(
- /** @lends openerp.base.search.DateField# */{
+openerp.base.search.DateField = openerp.base.search.Field.extend( /** @lends openerp.base.search.DateField# */{
template: 'SearchView.fields.date',
/**
* enables date picker on the HTML widgets
@@ -724,7 +715,7 @@ openerp.base.search.ManyToOneField = openerp.base.search.CharField.extend({
self.$element.val(self.name);
});
this.dataset = new openerp.base.DataSet(
- this.view.session, this.attrs['relation']);
+ this.view, this.attrs['relation']);
},
start: function () {
this._super();
@@ -791,8 +782,8 @@ openerp.base.search.ManyToManyField = openerp.base.search.CharField.extend({
openerp.base.search.ExtendedSearch = openerp.base.BaseWidget.extend({
template: 'SearchView.extended_search',
identifier_prefix: 'extended-search',
- init: function (parent, session, model) {
- this._super(parent, session);
+ init: function (parent, model) {
+ this._super(parent);
this.model = model;
},
add_group: function() {
diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js
index 81d55855eb8..f76ecc52c71 100644
--- a/addons/base/static/src/js/views.js
+++ b/addons/base/static/src/js/views.js
@@ -6,13 +6,13 @@ openerp.base.views = function(openerp) {
openerp.base.ActionManager = openerp.base.Controller.extend({
// process all kind of actions
- init: function(session, element_id) {
- this._super(session, element_id);
+ init: function(parent, element_id) {
+ this._super(parent, element_id);
this.viewmanager = null;
this.current_dialog = null;
// Temporary linking view_manager to session.
// Will use controller_parent to find it when implementation will be done.
- session.action_manager = this;
+ this.session.action_manager = this;
},
/**
* Process an action
@@ -35,15 +35,12 @@ openerp.base.ActionManager = openerp.base.Controller.extend({
action.flags.new_window = true;
}
if (action.target == 'new') {
- var dialog = this.current_dialog = new openerp.base.ActionDialog(this.session, {
- title: action.name,
- width: '50%'
- });
+ var dialog = this.current_dialog = new openerp.base.ActionDialog(this, { title: action.name, width: '90%' });
if (on_closed) {
dialog.close_callback = on_closed;
}
dialog.start(false);
- var viewmanager = dialog.viewmanager = new openerp.base.ViewManagerAction(this.session, dialog.element_id, action);
+ var viewmanager = dialog.viewmanager = new openerp.base.ViewManagerAction(this, dialog.element_id, action);
viewmanager.start();
dialog.open();
} else if (action.flags.new_window) {
@@ -57,7 +54,7 @@ openerp.base.ActionManager = openerp.base.Controller.extend({
if (this.viewmanager) {
this.viewmanager.stop();
}
- this.viewmanager = new openerp.base.ViewManagerAction(this.session, this.element_id, action);
+ this.viewmanager = new openerp.base.ViewManagerAction(this, this.element_id, action);
this.viewmanager.start();
}
break;
@@ -85,8 +82,8 @@ openerp.base.ActionManager = openerp.base.Controller.extend({
});
openerp.base.ViewManager = openerp.base.Controller.extend({
- init: function(session, element_id, dataset, views) {
- this._super(session, element_id);
+ init: function(parent, element_id, dataset, views) {
+ this._super(parent, element_id);
this.model = dataset.model;
this.dataset = dataset;
this.searchview = null;
@@ -133,7 +130,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({
if (!view.controller) {
// Lazy loading of views
var controllerclass = this.registry.get_object(view_type);
- var controller = new controllerclass( this, this.session, this.element_id + "_view_" + view_type,
+ var controller = new controllerclass( this, this.element_id + "_view_" + view_type,
this.dataset, view.view_id, view.options);
if (view.embedded_view) {
controller.set_embedded_view(view.embedded_view);
@@ -203,7 +200,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({
if (this.searchview) {
this.searchview.stop();
}
- this.searchview = new openerp.base.SearchView(this, this.session, this.element_id + "_search", this.dataset, view_id, search_defaults);
+ this.searchview = new openerp.base.SearchView(this, this.element_id + "_search", this.dataset, view_id, search_defaults);
if (this.flags.search_view === false) {
this.searchview.hide();
}
@@ -253,18 +250,19 @@ openerp.base.NullViewManager = openerp.base.generate_null_object_class(openerp.b
});
openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({
- init: function(session, element_id, action) {
+ init: function(parent, element_id, action) {
+ this.session = parent.session;
var dataset;
if (!action.res_id) {
- dataset = new openerp.base.DataSetSearch(session, action.res_model, action.context || null);
+ dataset = new openerp.base.DataSetSearch(this, action.res_model, action.context || null);
} else {
- dataset = new openerp.base.DataSetStatic(session, action.res_model, {}, [action.res_id]);
+ dataset = new openerp.base.DataSetStatic(this, action.res_model, {}, [action.res_id]);
if (action.context) {
// TODO fme: should normalize all DataSets constructors to (session, model, context, ...)
dataset.context = action.context;
}
}
- this._super(session, element_id, dataset, action.views);
+ this._super(parent, element_id, dataset, action.views);
this.action = action;
this.flags = this.action.flags || {};
if (action.res_model == 'board.board' && action.views.length == 1 && action.views) {
@@ -402,7 +400,6 @@ openerp.base.Sidebar = openerp.base.BaseWidget.extend({
}
});
-
openerp.base.NullSidebar = openerp.base.generate_null_object_class(openerp.base.Sidebar);
openerp.base.Export = openerp.base.Dialog.extend({
diff --git a/addons/base_dashboard/static/src/js/dashboard.js b/addons/base_dashboard/static/src/js/dashboard.js
index 3a70aa649ea..6b65b588d35 100644
--- a/addons/base_dashboard/static/src/js/dashboard.js
+++ b/addons/base_dashboard/static/src/js/dashboard.js
@@ -89,7 +89,7 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({
}
}
});
- new openerp.base.ViewManagerAction(this.session, dialog_id, action).start();
+ new openerp.base.ViewManagerAction(this, dialog_id, action).start();
// TODO: should bind ListView#select_record in order to catch record clicking
},
do_add_widget : function(action_manager) {
@@ -227,7 +227,7 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({
action_buttons : false,
pager: false
};
- new openerp.base.ViewManagerAction(this.session,
+ new openerp.base.ViewManagerAction(this,
this.view.element_id + '_action_' + action.id, action).start();
},
render: function() {
diff --git a/addons/base_graph/static/src/js/graph.js b/addons/base_graph/static/src/js/graph.js
index fdf3585449c..cf4cca20e59 100644
--- a/addons/base_graph/static/src/js/graph.js
+++ b/addons/base_graph/static/src/js/graph.js
@@ -16,9 +16,9 @@ QWeb.add_template('/base_graph/static/src/xml/base_graph.xml');
openerp.base.views.add('graph', 'openerp.base_graph.GraphView');
openerp.base_graph.GraphView = openerp.base.View.extend({
- init: function(view_manager, session, element_id, dataset, view_id) {
- this._super(session, element_id);
- this.view_manager = view_manager;
+ init: function(parent, element_id, dataset, view_id) {
+ this._super(parent, element_id);
+ this.view_manager = parent;
this.dataset = dataset;
this.dataset_index = 0;
this.model = this.dataset.model;