summaryrefslogtreecommitdiff
path: root/addons/web/static/lib
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2012-02-24 14:58:59 +0100
committerniv-openerp <nicolas.vanhoren@openerp.com>2012-02-24 14:58:59 +0100
commitb6f93c8fa600b227ed6266e11c91fc7cecde36fa (patch)
treef217ec281e02775dcb5b6a695586b1941f57ee4d /addons/web/static/lib
parent8a8da7973a0e7ca62aafdee7a3eae7ed6f757f4a (diff)
[fix] some bugs providing the web client to work
bzr revid: nicolas.vanhoren@openerp.com-20120224135859-w937wgm51328dbk1
Diffstat (limited to 'addons/web/static/lib')
-rw-r--r--addons/web/static/lib/nivjs/src/niv.js110
-rw-r--r--addons/web/static/lib/nivjs/test/test.js4
2 files changed, 76 insertions, 38 deletions
diff --git a/addons/web/static/lib/nivjs/src/niv.js b/addons/web/static/lib/nivjs/src/niv.js
index e572edc73c1..e2c997a64a0 100644
--- a/addons/web/static/lib/nivjs/src/niv.js
+++ b/addons/web/static/lib/nivjs/src/niv.js
@@ -45,54 +45,88 @@ niv = (function() {
// Create a new Class that inherits from this class
this.Class.extend = function(prop) {
- var _super = this.prototype;
+ 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;
+ // Instantiate a web 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;
+ // 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];
+ // 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;
+ // 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];
- }
+ 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)
- this.init.apply(this, arguments);
+ // 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;
+ }
+ Class.include = function (properties) {
+ for (var name in properties) {
+ if (typeof properties[name] !== 'function'
+ || !fnTest.test(properties[name])) {
+ prototype[name] = properties[name];
+ } else if (typeof prototype[name] === 'function'
+ && prototype.hasOwnProperty(name)) {
+ prototype[name] = (function (name, fn, previous) {
+ return function () {
+ var tmp = this._super;
+ this._super = previous;
+ var ret = fn.apply(this, arguments);
+ this._super = tmp;
+ return ret;
+ }
+ })(name, properties[name], prototype[name]);
+ } else if (typeof _super[name] === 'function') {
+ prototype[name] = (function (name, fn) {
+ return function () {
+ var tmp = this._super;
+ this._super = _super[name];
+ var ret = fn.apply(this, arguments);
+ this._super = tmp;
+ return ret;
+ }
+ })(name, properties[name]);
+ }
}
+ };
+
+ // Populate our constructed prototype object
+ Class.prototype = prototype;
- // Populate our constructed prototype object
- Class.prototype = prototype;
+ // Enforce the constructor to be what we expect
+ Class.constructor = Class;
- // Enforce the constructor to be what we expect
- Class.prototype.constructor = Class;
+ // And make this class extendable
+ Class.extend = arguments.callee;
- // And make this class extendable
- Class.extend = arguments.callee;
-
- return Class;
+ return Class;
};
}).call(lib);
// end of John Resig's code
diff --git a/addons/web/static/lib/nivjs/test/test.js b/addons/web/static/lib/nivjs/test/test.js
index c93dea99ac6..244ba8d7f26 100644
--- a/addons/web/static/lib/nivjs/test/test.js
+++ b/addons/web/static/lib/nivjs/test/test.js
@@ -115,6 +115,10 @@ test("base", function() {
equal($el.length, 1);
equal($el.parents()[0], $("body")[0]);
equal($el.html(), "test");
+
+ var y = new Claz(x);
+ equal(y.getParent(), x);
+
x.destroy();
$el = $("#testdiv");
equal($el.length, 0);