summaryrefslogtreecommitdiff
path: root/addons/base/static/src/js/controller.js
diff options
context:
space:
mode:
authorAntony Lesuisse <al@openerp.com>2011-07-15 16:16:00 +0200
committerAntony Lesuisse <al@openerp.com>2011-07-15 16:16:00 +0200
commit2decff7b213725caaa372fbde01a2f1d22aca7bf (patch)
treee78e98b594601b4d6dc0f2a2ca33b775ff278efd /addons/base/static/src/js/controller.js
parentb0e6f97abd74dc2e74de2924bec530244e061242 (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.js78
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: