From: Aleksander Ɓukasz Date: Thu, 11 Jul 2013 10:33:26 +0000 (+0200) Subject: integration wip: lists - creating, unnesting X-Git-Url: https://git.mdrn.pl/fnpeditor.git/commitdiff_plain/1dcfdcafd9fd0ff3af5dc39619a3a953f4377a11?hp=b0f8f1609b130f2301b091d0c5b336df5442d484 integration wip: lists - creating, unnesting --- diff --git a/modules/documentCanvas/canvas/canvas.js b/modules/documentCanvas/canvas/canvas.js index 5ff19bd..1bd2f15 100644 --- a/modules/documentCanvas/canvas/canvas.js +++ b/modules/documentCanvas/canvas/canvas.js @@ -115,6 +115,11 @@ $.extend(Canvas.prototype, { wrapperElement.after({text: suffixOutside}); return wrapperElement; }, + getDocumentElement: function(from) { + if(from instanceof HTMLElement) { + return documentElement.wrap(from, this); + } + }, list: {} }); @@ -234,6 +239,12 @@ $.extend(Canvas.prototype.list, { reference.after(toAdd); } + }, + areItemsOfTheSameList: function(params) { + var e1 = params.element1, + e2 = params.element2; + return e1.parent().sameNode(e2.parent()) + && e1.parent().is('list'); } }); diff --git a/modules/documentCanvas/canvasManager.js b/modules/documentCanvas/canvasManager.js index 26bc4fa..95e1d91 100644 --- a/modules/documentCanvas/canvasManager.js +++ b/modules/documentCanvas/canvasManager.js @@ -229,25 +229,19 @@ Manager.prototype.onBackspaceKey = function(e) { }; Manager.prototype.command = function(command, meta) { - var pos = getCursorPosition(); - + var selection = window.getSelection(), + node1 = $(selection.anchorNode).parent()[0], + node2 = $(selection.focusNode).parent()[0], + element1 = this.canvas.getDocumentElement(node1), + element2 = this.canvas.getDocumentElement(node2); if(command === 'createList') { - var node = canvasNode.create(pos.parentNode); - if(window.getSelection().getRangeAt(0).collapsed && this.canvas.nodeInsideList({node: node})) { - this.canvas.listRemove({pointer: node}); - this.selectNode(node, {movecaret: 'end'}); - this.sandbox.publish('contentChanged'); - } - else { - //if(!this.canvas.nodeInsideList({node: node})) { - this.canvas.listCreate({start: node, end: canvasNode.create(pos.focusNode), type: meta}); - this.selectNode(node, {movecaret: 'end'}); - this.sandbox.publish('contentChanged'); - //} - } + this.canvas.list.create({element1: element1, element2: element2}); } else if(command === 'unwrap-node') { - this.canvas.nodeUnwrap({node: canvasNode.create(pos.parentNode)}); - this.sandbox.publish('contentChanged'); + // this.canvas.nodeUnwrap({node: canvasNode.create(pos.parentNode)}); + // this.sandbox.publish('contentChanged'); + if(this.canvas.list.areItemsOfTheSameList({element1: element1, element2: element2})) { + this.canvas.list.extractItems({element1: element1, element2: element2}); + } } };