diff options
| author | Antony Lesuisse <al@openerp.com> | 2011-07-15 16:16:00 +0200 |
|---|---|---|
| committer | Antony Lesuisse <al@openerp.com> | 2011-07-15 16:16:00 +0200 |
| commit | 2decff7b213725caaa372fbde01a2f1d22aca7bf (patch) | |
| tree | e78e98b594601b4d6dc0f2a2ca33b775ff278efd /addons/base/static/src/js/controller.js | |
| parent | b0e6f97abd74dc2e74de2924bec530244e061242 (diff) | |
controller move Class from base to controller
bzr revid: al@openerp.com-20110715141600-4tr536v7vfrv9tkk
Diffstat (limited to 'addons/base/static/src/js/controller.js')
| -rw-r--r-- | addons/base/static/src/js/controller.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/addons/base/static/src/js/controller.js b/addons/base/static/src/js/controller.js new file mode 100644 index 00000000000..0d2fe0a9cc0 --- /dev/null +++ b/addons/base/static/src/js/controller.js @@ -0,0 +1,78 @@ +/*--------------------------------------------------------- + * OpenERP controller framework + *--------------------------------------------------------*/ + +openerp.base.controller = function(instance) { +/** + * John Resig Class with factory improvement + */ +(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; + }; +})(instance.base); + +// todo change john resig class to keep window clean +instance.base.Class = window.Class + +// Controller will move here + +}; + +// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: |
