You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@corinthia.apache.org by pm...@apache.org on 2015/02/19 12:36:15 UTC

incubator-corinthia git commit: Avoid nesting when inserting footnotes or endnotes

Repository: incubator-corinthia
Updated Branches:
  refs/heads/master c2ab40b29 -> 0c34c1a97


Avoid nesting when inserting footnotes or endnotes

If the user tries to insert a footnote or endnote while the cursor is
already inside a node, place the new footnote or endnote *after* it, not
inside.


Project: http://git-wip-us.apache.org/repos/asf/incubator-corinthia/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-corinthia/commit/0c34c1a9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-corinthia/tree/0c34c1a9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-corinthia/diff/0c34c1a9

Branch: refs/heads/master
Commit: 0c34c1a972049c0029c3b70e3d620445df63e814
Parents: c2ab40b
Author: Peter Kelly <pe...@uxproductivity.com>
Authored: Thu Feb 19 18:34:26 2015 +0700
Committer: Peter Kelly <pe...@uxproductivity.com>
Committed: Thu Feb 19 18:34:26 2015 +0700

----------------------------------------------------------------------
 Editor/src/Cursor.js                               | 17 +++++++++++++++++
 Editor/tests/cursor/insertEndnote07-expected.html  | 11 +++++++++++
 Editor/tests/cursor/insertEndnote07-input.html     | 15 +++++++++++++++
 Editor/tests/cursor/insertEndnote08-expected.html  | 11 +++++++++++
 Editor/tests/cursor/insertEndnote08-input.html     | 15 +++++++++++++++
 Editor/tests/cursor/insertEndnote09-expected.html  | 11 +++++++++++
 Editor/tests/cursor/insertEndnote09-input.html     | 15 +++++++++++++++
 Editor/tests/cursor/insertFootnote07-expected.html | 11 +++++++++++
 Editor/tests/cursor/insertFootnote07-input.html    | 15 +++++++++++++++
 Editor/tests/cursor/insertFootnote08-expected.html | 11 +++++++++++
 Editor/tests/cursor/insertFootnote08-input.html    | 15 +++++++++++++++
 Editor/tests/cursor/insertFootnote09-expected.html | 11 +++++++++++
 Editor/tests/cursor/insertFootnote09-input.html    | 15 +++++++++++++++
 Editor/tests/index.js                              |  6 ++++++
 14 files changed, 179 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/src/Cursor.js
----------------------------------------------------------------------
diff --git a/Editor/src/Cursor.js b/Editor/src/Cursor.js
index 3ef60cc..a545477 100644
--- a/Editor/src/Cursor.js
+++ b/Editor/src/Cursor.js
@@ -908,6 +908,22 @@ var Cursor_insertEndnote;
             cursorX = null;
     }
 
+    function moveRangeOutsideOfNote(range)
+    {
+        var node = range.start.node;
+        var offset = range.start.offset;
+
+        for (var anc = node; anc != null; anc = anc.parentNode) {
+            if (isNoteNode(anc) && (anc.parentNode != null)) {
+                node = anc.parentNode;
+                offset = DOM_nodeOffset(anc)+1;
+                return new Range(node,offset,node,offset);
+            }
+        }
+
+        return range;
+    }
+
     function insertNote(className,content)
     {
         var footnote = DOM_createElement(document,"span");
@@ -915,6 +931,7 @@ var Cursor_insertEndnote;
         DOM_appendChild(footnote,DOM_createTextNode(document,content));
 
         var range = Selection_get();
+        range = moveRangeOutsideOfNote(range);
         Formatting_splitAroundSelection(range,false);
 
         var pos = Position_preferElementPosition(range.start);

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertEndnote07-expected.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertEndnote07-expected.html b/Editor/tests/cursor/insertEndnote07-expected.html
new file mode 100644
index 0000000..8b3f2f0
--- /dev/null
+++ b/Editor/tests/cursor/insertEndnote07-expected.html
@@ -0,0 +1,11 @@
+<html>
+  <head></head>
+  <body>
+    <p>
+      before
+      <span class="endnote">inside</span>
+      <span class="endnote">[Endnote content]</span>
+      after
+    </p>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertEndnote07-input.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertEndnote07-input.html b/Editor/tests/cursor/insertEndnote07-input.html
new file mode 100644
index 0000000..77c4adc
--- /dev/null
+++ b/Editor/tests/cursor/insertEndnote07-input.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+function performTest()
+{
+    Cursor_insertEndnote("Endnote content");
+    showSelection();
+}
+</script>
+</head>
+<body>
+  <p>before <span class="endnote">ins[]ide</span>after</p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertEndnote08-expected.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertEndnote08-expected.html b/Editor/tests/cursor/insertEndnote08-expected.html
new file mode 100644
index 0000000..8b3f2f0
--- /dev/null
+++ b/Editor/tests/cursor/insertEndnote08-expected.html
@@ -0,0 +1,11 @@
+<html>
+  <head></head>
+  <body>
+    <p>
+      before
+      <span class="endnote">inside</span>
+      <span class="endnote">[Endnote content]</span>
+      after
+    </p>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertEndnote08-input.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertEndnote08-input.html b/Editor/tests/cursor/insertEndnote08-input.html
new file mode 100644
index 0000000..fab5957
--- /dev/null
+++ b/Editor/tests/cursor/insertEndnote08-input.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+function performTest()
+{
+    Cursor_insertEndnote("Endnote content");
+    showSelection();
+}
+</script>
+</head>
+<body>
+  <p>before <span class="endnote">inside[]</span>after</p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertEndnote09-expected.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertEndnote09-expected.html b/Editor/tests/cursor/insertEndnote09-expected.html
new file mode 100644
index 0000000..8b3f2f0
--- /dev/null
+++ b/Editor/tests/cursor/insertEndnote09-expected.html
@@ -0,0 +1,11 @@
+<html>
+  <head></head>
+  <body>
+    <p>
+      before
+      <span class="endnote">inside</span>
+      <span class="endnote">[Endnote content]</span>
+      after
+    </p>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertEndnote09-input.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertEndnote09-input.html b/Editor/tests/cursor/insertEndnote09-input.html
new file mode 100644
index 0000000..06dd1f6
--- /dev/null
+++ b/Editor/tests/cursor/insertEndnote09-input.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+function performTest()
+{
+    Cursor_insertEndnote("Endnote content");
+    showSelection();
+}
+</script>
+</head>
+<body>
+  <p>before <span class="endnote">[]inside</span>after</p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertFootnote07-expected.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertFootnote07-expected.html b/Editor/tests/cursor/insertFootnote07-expected.html
new file mode 100644
index 0000000..70fa0f7
--- /dev/null
+++ b/Editor/tests/cursor/insertFootnote07-expected.html
@@ -0,0 +1,11 @@
+<html>
+  <head></head>
+  <body>
+    <p>
+      before
+      <span class="footnote">inside</span>
+      <span class="footnote">[Footnote content]</span>
+      after
+    </p>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertFootnote07-input.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertFootnote07-input.html b/Editor/tests/cursor/insertFootnote07-input.html
new file mode 100644
index 0000000..161adc8
--- /dev/null
+++ b/Editor/tests/cursor/insertFootnote07-input.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+function performTest()
+{
+    Cursor_insertFootnote("Footnote content");
+    showSelection();
+}
+</script>
+</head>
+<body>
+  <p>before <span class="footnote">ins[]ide</span>after</p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertFootnote08-expected.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertFootnote08-expected.html b/Editor/tests/cursor/insertFootnote08-expected.html
new file mode 100644
index 0000000..70fa0f7
--- /dev/null
+++ b/Editor/tests/cursor/insertFootnote08-expected.html
@@ -0,0 +1,11 @@
+<html>
+  <head></head>
+  <body>
+    <p>
+      before
+      <span class="footnote">inside</span>
+      <span class="footnote">[Footnote content]</span>
+      after
+    </p>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertFootnote08-input.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertFootnote08-input.html b/Editor/tests/cursor/insertFootnote08-input.html
new file mode 100644
index 0000000..b159a66
--- /dev/null
+++ b/Editor/tests/cursor/insertFootnote08-input.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+function performTest()
+{
+    Cursor_insertFootnote("Footnote content");
+    showSelection();
+}
+</script>
+</head>
+<body>
+  <p>before <span class="footnote">inside[]</span>after</p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertFootnote09-expected.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertFootnote09-expected.html b/Editor/tests/cursor/insertFootnote09-expected.html
new file mode 100644
index 0000000..70fa0f7
--- /dev/null
+++ b/Editor/tests/cursor/insertFootnote09-expected.html
@@ -0,0 +1,11 @@
+<html>
+  <head></head>
+  <body>
+    <p>
+      before
+      <span class="footnote">inside</span>
+      <span class="footnote">[Footnote content]</span>
+      after
+    </p>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/cursor/insertFootnote09-input.html
----------------------------------------------------------------------
diff --git a/Editor/tests/cursor/insertFootnote09-input.html b/Editor/tests/cursor/insertFootnote09-input.html
new file mode 100644
index 0000000..136b643
--- /dev/null
+++ b/Editor/tests/cursor/insertFootnote09-input.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+function performTest()
+{
+    Cursor_insertFootnote("Footnote content");
+    showSelection();
+}
+</script>
+</head>
+<body>
+  <p>before <span class="footnote">[]inside</span>after</p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/0c34c1a9/Editor/tests/index.js
----------------------------------------------------------------------
diff --git a/Editor/tests/index.js b/Editor/tests/index.js
index d0608f9..b0dedac 100644
--- a/Editor/tests/index.js
+++ b/Editor/tests/index.js
@@ -580,12 +580,18 @@ var tests = [
             "insertEndnote04",
             "insertEndnote05",
             "insertEndnote06",
+            "insertEndnote07",
+            "insertEndnote08",
+            "insertEndnote09",
             "insertFootnote01",
             "insertFootnote02",
             "insertFootnote03",
             "insertFootnote04",
             "insertFootnote05",
             "insertFootnote06",
+            "insertFootnote07",
+            "insertFootnote08",
+            "insertFootnote09",
             "makeContainerInsertionPoint01",
             "makeContainerInsertionPoint02a",
             "makeContainerInsertionPoint02b",