Mercurial > wiki
view wiki.js @ 5:06e8c49e9dec
Wikicreole markup is now editable. Also refactored things a bit so that variables have better names, DRY is preserved better.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Sun, 01 Feb 2009 13:33:26 -0800 |
parents | 01313b55ed09 |
children | fb233578283c |
line wrap: on
line source
var App = { eventHandlers: {} }; App.eventHandlers.editPart = function editPart(aEvt) { if (!aEvt.shiftKey) return; aEvt.preventDefault(); var part = this; var editablePart = $('<textarea class="wiki-edit"></textarea>'); $(editablePart).attr("value", $(".creole-markup", part).text()); function setScrollHeight() { var scrollHeight = $(editablePart).get(0).scrollHeight; $(editablePart).height(scrollHeight); } $(editablePart).blur( function() { var markup = $(editablePart).attr("value"); $(editablePart).replaceWith(App.createPart(markup)); }); $(editablePart).keyup(setScrollHeight); $(part).replaceWith(editablePart); setScrollHeight(); $(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; }; App.processMarkup = function processMarkup(text) { var parts = text.split("\n\n"); jQuery.each( parts, function(i) { var partMarkup = this.toString(); $("#content").append(App.createPart(partMarkup)); } ); }; 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", {}, App.processMarkup, "text"); }; $(window).ready(App.eventHandlers.onLoad);