changeset 10:ec3ec75a8d16

The user can now 'zoom out' while editing by shift-clicking the edit field.
author Atul Varma <varmaa@toolness.com>
date Sun, 01 Feb 2009 16:04:18 -0800
parents 20ed90d10dee
children 98a77c9b13ea
files wiki.js
diffstat 1 files changed, 27 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/wiki.js	Sun Feb 01 15:26:55 2009 -0800
+++ b/wiki.js	Sun Feb 01 16:04:18 2009 -0800
@@ -8,25 +8,44 @@
 
   aEvt.preventDefault();
 
-  App.enterEditMode(this);
+  App.enterEditMode([this], 1);
 };
 
-App.enterEditMode = function enterEditMode(part) {
-  var editablePart = $('<textarea class="wiki-edit"></textarea>').get(0);
-  $(editablePart).attr("value", $(".creole-markup", part).text());
+App.enterEditMode = function enterEditMode(parts, level) {
+  var partsMarkup = [];
+  $(".creole-markup", parts).each(
+    function(i) { partsMarkup.push($(this).text()); }
+  );
+
+  var editablePart = $('<textarea class="wiki-edit"></textarea>');
+  $(editablePart).attr("value", partsMarkup.join("\n\n"));
 
   function setScrollHeight() {
     $(this).height(this.scrollHeight);
   }
 
-  $(editablePart).blur(
-    function() {
+  function exitEditMode() {
       var markup = $(this).attr("value");
       $(this).replaceWith(App.createParts(markup));
-    });
+  }
+
+  function editSiblings(aEvt) {
+    if (!aEvt.shiftKey || level == 0)
+      return;
+
+    aEvt.preventDefault();
 
+    var allSiblings = this.parentNode.childNodes;
+    exitEditMode.apply(this);
+
+    App.enterEditMode(allSiblings, level-1);
+  }
+
+  $(editablePart).blur(exitEditMode);
+  $(editablePart).mousedown(editSiblings);
   $(editablePart).keyup(setScrollHeight);
-  $(part).replaceWith(editablePart);
+  $(parts).filter(":not(:first)").remove();
+  $(parts).replaceWith(editablePart);
   setScrollHeight.apply(editablePart);
 
   $(editablePart).focus();