Fix
[fnpeditor.git] / modules / documentCanvas / canvas.js
index c2f6c85..9177968 100644 (file)
@@ -11,6 +11,10 @@ define([
 var Canvas = function(html) {\r
     this.dom = $(template);\r
     this.content = this.dom.find('#rng-module-documentCanvas-content');\r
 var Canvas = function(html) {\r
     this.dom = $(template);\r
     this.content = this.dom.find('#rng-module-documentCanvas-content');\r
+    this.setHTML(html);\r
+};\r
+\r
+Canvas.prototype.setHTML = function(html) {\r
     if(html) {\r
         this.content.html(html);\r
     }\r
     if(html) {\r
         this.content.html(html);\r
     }\r
@@ -38,6 +42,10 @@ Canvas.prototype.findNodes = function(desc) {
     return toret;\r
 };\r
 \r
     return toret;\r
 };\r
 \r
+Canvas.prototype.getNodeById = function(id) {\r
+    return canvasNode.create($(this.content.find('#' +id)));\r
+}\r
+\r
 Canvas.prototype.nodeAppend = function(options) {\r
     var element; // = $(this.content.find('#' + options.context.id).get(0));\r
     if(options.to === 'root') {\r
 Canvas.prototype.nodeAppend = function(options) {\r
     var element; // = $(this.content.find('#' + options.context.id).get(0));\r
     if(options.to === 'root') {\r
@@ -90,7 +98,7 @@ Canvas.prototype.nodeSplit = function(options) {
         var node = this;\r
         if(passed)\r
             succeedingNodes.push(node);\r
         var node = this;\r
         if(passed)\r
             succeedingNodes.push(node);\r
-        if(node.isSameNode(textNode.get(0)))\r
+        if(node === textNode.get(0))\r
             passed = true;\r
     });\r
     \r
             passed = true;\r
     });\r
     \r
@@ -117,7 +125,7 @@ Canvas.prototype.nodeRemove = function(options) {
 Canvas.prototype.listCreate = function(options) {\r
     var element1 = $(this.content.find('#' + options.start.getId()).get(0));\r
     var element2 = $(this.content.find('#' + options.end.getId()).get(0));\r
 Canvas.prototype.listCreate = function(options) {\r
     var element1 = $(this.content.find('#' + options.start.getId()).get(0));\r
     var element2 = $(this.content.find('#' + options.end.getId()).get(0));\r
-    if(!element1.parent().get(0).isSameNode(element2.parent().get(0)))\r
+    if(!element1.parent().get(0) === element2.parent().get(0))\r
         return false;\r
         \r
     var parent = element1.parent();\r
         return false;\r
         \r
     var parent = element1.parent();\r
@@ -134,7 +142,7 @@ Canvas.prototype.listCreate = function(options) {
     var canvas = this;\r
     parent.contents().each(function() {\r
         var node = this;\r
     var canvas = this;\r
     parent.contents().each(function() {\r
         var node = this;\r
-        if(node.isSameNode(element1.get(0)))\r
+        if(node === element1.get(0))\r
             place = 'inside';\r
         if(place === 'inside') {\r
             var $node;\r
             place = 'inside';\r
         if(place === 'inside') {\r
             var $node;\r
@@ -148,12 +156,24 @@ Canvas.prototype.listCreate = function(options) {
             $node.attr('wlxml-class', 'item');\r
             nodesToWrap.push($node);\r
         }\r
             $node.attr('wlxml-class', 'item');\r
             nodesToWrap.push($node);\r
         }\r
-        if(node.isSameNode(element2.get(0)))\r
+        if(node === element2.get(0))\r
             return false;\r
     });\r
     \r
             return false;\r
     });\r
     \r
-    var list = canvasNode.create({tag: 'div', klass: 'list-items'}).dom; //this._createNode('div', 'list-items');\r
-    element1.before(list);\r
+    var list = canvasNode.create({tag: 'div', klass: 'list-items' + (options.type === 'enum' ? '-enum' : '')}).dom; //this._createNode('div', 'list-items');\r
+    \r
+    var parentNode = options.start.parent();\r
+    \r
+    var toret;\r
+    if(parentNode && parentNode.isOfClass('list-items')) {\r
+        list.wrap('<div wlxml-tag="div" wlxml-class="item">');\r
+        toret = list.parent();\r
+    } else {\r
+        toret = list;\r
+    }\r
+        \r
+    \r
+    element1.before(toret);\r
     \r
     nodesToWrap.forEach(function(node) {\r
         node.remove();\r
     \r
     nodesToWrap.forEach(function(node) {\r
         node.remove();\r
@@ -164,11 +184,21 @@ Canvas.prototype.listCreate = function(options) {
 Canvas.prototype.listRemove = function(options) {\r
     var pointerElement = $(this.content.find('#' + options.pointer.getId()));\r
     var listElement = options.pointer.getClass() === 'list-items' ? pointerElement : \r
 Canvas.prototype.listRemove = function(options) {\r
     var pointerElement = $(this.content.find('#' + options.pointer.getId()));\r
     var listElement = options.pointer.getClass() === 'list-items' ? pointerElement : \r
-        pointerElement.parent('[wlxml-class="list-items"][wlxml-tag]');\r
+        pointerElement.parents('[wlxml-class|="list-items"][wlxml-tag]');\r
     \r
     \r
-    listElement.find('[wlxml-class=item]').each(function() {\r
-        $(this).removeAttr('wlxml-class');\r
-    });\r
+    var nested = false;\r
+    if(listElement.length > 1) {\r
+        listElement = $(listElement[0]);\r
+        nested = true;\r
+    }\r
+    \r
+    if(nested) {\r
+        listElement.unwrap();\r
+    } else {\r
+        listElement.find('[wlxml-class=item]').each(function() {\r
+            $(this).removeAttr('wlxml-class');\r
+        });\r
+    }\r
     listElement.children().unwrap();\r
 };\r
 \r
     listElement.children().unwrap();\r
 };\r
 \r
@@ -181,11 +211,11 @@ Canvas.prototype.getPrecedingNode = function(options) {
 };\r
 \r
 Canvas.prototype.nodeInsideList = function(options) {\r
 };\r
 \r
 Canvas.prototype.nodeInsideList = function(options) {\r
-    if(options.pointer) {\r
-        if(options.pointer.getClass() === 'list-items' || options.pointer.getClass() === 'item')\r
+    if(options.node) {\r
+        if(options.node.isOfClass('list-items') || options.node.isOfClass('item'))\r
             return true;\r
             return true;\r
-        var pointerElement = $(this.content.find('#' + options.pointer.getId()));\r
-        return pointerElement.parents('list-items, item').length > 0;\r
+        var pointerElement = $(this.content.find('#' + options.node.getId()));\r
+        return pointerElement.parents('[wlxml-class=list-items], [wlxml-class=item]').length > 0;\r
     }\r
     return false;\r
 };\r
     }\r
     return false;\r
 };\r