Mercurial > wiki
view wiki.js @ 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 |
line wrap: on
line source
var App = { eventHandlers: {} }; App.eventHandlers.editPart = function editPart(aEvt) { if (!aEvt.shiftKey) return; aEvt.preventDefault(); App.enterEditMode([this], 1); }; 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); } 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); $(parts).filter(":not(:first)").remove(); $(parts).replaceWith(editablePart); setScrollHeight.apply(editablePart); $(editablePart).focus(); }; App.createPart = function createPart(markup) { var partDiv = $('<div class="part"></div>'); var markupDiv = $('<div class="creole-markup"></div>'); markupDiv.text(markup); App.creole.parse(partDiv.get(0), markup); partDiv.mousedown(App.eventHandlers.editPart); partDiv.append(markupDiv); return partDiv.get(0); }; App.createParts = function createParts(text) { var parts = []; var partsMarkup = text.split("\n\n"); jQuery.each( partsMarkup, function(i) { var partMarkup = this.toString(); if (partMarkup) parts.push(App.createPart(partMarkup)); } ); return parts; }; App.eventHandlers.onLoad = function onLoad() { var creole = new Parse.Simple.Creole( {interwiki: { WikiCreole: 'http://www.wikicreole.org/wiki/', Wikipedia: 'http://en.wikipedia.org/wiki/' }, linkFormat: '' }); App.creole = creole; jQuery.get("wiki.txt", {}, function(text) { $("#content").append(App.createParts(text)); }, "text"); }; $(window).ready(App.eventHandlers.onLoad);