wip: experiments with Canvas support for exercise.assign
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / container.js
index 6436526..28565bc 100644 (file)
@@ -8,13 +8,15 @@ var $ = require('libs/jquery'),
 
 
 var Container = function(nodes, params, element) {
+    params = params || {};
     _.extend(this, params);
     this.dom = this.dom || $('<div>');
     this.dom.addClass('canvas-container');
+    this.dom.toggleClass('reset-background', !!params.resetBackground);
     this.element = element;
 
     nodes.forEach(function(node) {
-        var el = this.element.canvas.createElement(node);
+        var el = this.element.createElement(node, {mirror: this.mirrors});
         if(el.dom) {
             this.dom.append(el.dom);
         }
@@ -35,7 +37,7 @@ _.extend(Container.prototype, {
         var ptr = event.meta.node.prev(),
             referenceElement, referenceAction, actionArg;
             
-        while(ptr && !(referenceElement = utils.getElementForElementRootNode(ptr))) {
+        while(ptr && !(referenceElement = utils.getElementForElementRootNode(ptr, false, this))) {
             ptr = ptr.prev();
         }
 
@@ -48,13 +50,17 @@ _.extend(Container.prototype, {
       
         if(event.meta.move) {
             /* Let's check if this node had its own canvas element and it's accessible. */
-            actionArg = utils.getElementForElementRootNode(event.meta.node);
+            actionArg = utils.getElementForElementRootNode(event.meta.node, false, this);
         }
         if(!actionArg) {
             actionArg = event.meta.node;
         }
 
-        referenceElement[referenceAction](actionArg);
+        if(referenceAction === 'after') {
+            referenceElement.after(actionArg, {mirror: this.mirrors});
+        } else {
+            referenceElement[referenceAction](actionArg);
+        }
     },
     onNodeDetached: function(event) {
         var container = this;
@@ -102,7 +108,7 @@ _.extend(Container.prototype, {
         if(param instanceof documentElement.DocumentElement) {
             element = param;
         } else {
-            element = this.element.canvas.createElement(param);//
+            element = this.element.createElement(param, {mirror: this.mirrors});//
         }
         if(element.dom) {
             this.dom.prepend(element.dom);