From 1dcfdcafd9fd0ff3af5dc39619a3a953f4377a11 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Thu, 11 Jul 2013 12:33:26 +0200 Subject: [PATCH] integration wip: lists - creating, unnesting --- modules/documentCanvas/canvas/canvas.js | 11 ++++++++++ modules/documentCanvas/canvasManager.js | 28 ++++++++++--------------- 2 files changed, 22 insertions(+), 17 deletions(-) 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}); + } } }; -- 2.20.1