diff options
Diffstat (limited to 'apps/user_ldap/js/wizard/wizardObject.js')
-rw-r--r-- | apps/user_ldap/js/wizard/wizardObject.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/apps/user_ldap/js/wizard/wizardObject.js b/apps/user_ldap/js/wizard/wizardObject.js new file mode 100644 index 00000000000..a90f1533a26 --- /dev/null +++ b/apps/user_ldap/js/wizard/wizardObject.js @@ -0,0 +1,60 @@ + +/** + * Copyright (c) 2015, Arthur Schiwon <blizzz@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or later. + * See the COPYING-README file. + */ + +OCA = OCA || {}; + +(function() { + var initializing = false; + var superPattern = /xyz/.test(function() { xyz; }) ? /\b_super\b/ : /.*/; + + /** + * @classdesc a base class that allows inheritance + * + * @abstrcact + * @constructor + */ + var WizardObject = function(){}; + WizardObject.subClass = function(properties) { + var _super = this.prototype; + + initializing = true; + var proto = new this(); + initializing = false; + + for (var name in properties) { + proto[name] = + typeof properties[name] === "function" && + typeof _super[name] === 'function' && + superPattern.test(properties[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]) : + properties[name]; + }; + + function Class() { + if(!initializing && this.init) { + this.init.apply(this, arguments); + } + } + + Class.prototype = proto; + Class.constructor = Class; + Class.subClass = arguments.callee; + return Class; + }; + + WizardObject.constructor = WizardObject; + + OCA.LDAP.Wizard.WizardObject = WizardObject; +})(); |