shuffle answers in exercise order + fix answer numbering
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / elementsRegister.js
index 0d31c7d..7b2cf99 100644 (file)
@@ -5,35 +5,27 @@ var _ = require('libs/underscore'),
     wlxml = require('wlxml/wlxml');
 
 
-var ElementsRegister = function(basePrototype, defaultPrototype) {
+var ElementsRegister = function(BaseType, NullType) {
     this._register = {};
-    this.basePrototype = basePrototype;
-    this.DefaultType = this.createCanvasElementType(defaultPrototype);
+    this.BaseType = BaseType;
+    this.NullType = NullType;
 };
 
 _.extend(ElementsRegister.prototype, {
-    createCanvasElementType: function(elementPrototype, extending) {
-        var inheritFrom = this.basePrototype;
-        if(extending && extending.tag) {
-            inheritFrom = this.getElement(extending);
-        }
+    createCanvasElementType: function(elementPrototype) {
+        var register = this;
         var Constructor = function() {
-            if(!this.super) {
-                this.super = inheritFrom.prototype;
-            }
-            inheritFrom.apply(this, Array.prototype.slice.call(arguments, 0));
-            
+            register.BaseType.apply(this, Array.prototype.slice.call(arguments, 0));
         };
-        Constructor.prototype = Object.create(inheritFrom.prototype);
-        _.extend(Constructor.prototype, elementPrototype);
+        Constructor.prototype = elementPrototype;
         return Constructor;
     },
     register: function(params) {
         params.klass = params.klass || '';
-        params.prototype = params.prototype || Object.create({});
+        params.prototype = params.prototype || this.NullType;
 
         this._register[params.tag] = this._register[params.tag] || {};
-        this._register[params.tag][params.klass] = this.createCanvasElementType(params.prototype, params.extending);
+        this._register[params.tag][params.klass] = this.createCanvasElementType(params.prototype);
     },
     getElement: function(params) {
         params.klass = params.klass || '';
@@ -46,9 +38,6 @@ _.extend(ElementsRegister.prototype, {
                 }
             }.bind(this));
         }
-        if(!Factory) {
-            Factory = this.DefaultType;
-        }
         return Factory;
     }
 });