<?xml version="1.0"?>
<rss version="2.0">
    <channel>
        <title>TiddlyWikiRemote</title>
        <link>http://phiffer.org/tiddly/</link>
        <description/>
    </channel>
    <item>
        <title>SiteSubtitle</title>
        <description><![CDATA[a wiki for your laptop]]></description>
        <pubDate>Mon, 25 Apr 2005 22:07:48 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>DefaultTiddlers</title>
        <description><![CDATA[HelloThere DownloadHere MovingForward]]></description>
        <pubDate>Sat, 14 May 2005 21:45:03 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>MainMenu</title>
        <description><![CDATA[HelloThere TiddlyWikiRemote BugReports]]></description>
        <pubDate>Sat, 14 May 2005 22:08:53 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>TiddlyWiki</title>
        <description><![CDATA[TiddlyWiki can be found at http://www.tiddlywiki.com/

latest version noticed there is 1.2.9, 17 May 2005]]></description>
        <pubDate>Wed, 17 May 2006 15:10:33 -0700</pubDate>
        <category>joao</category>
    </item>
    <item>
        <title>SelfContained</title>
        <description><![CDATA[One of the neatest features of TiddlyWiki is that it is entirely self-contained in a single HTML file. It contains the actual hypertext document, and the JavaScript, CascadingStyleSheets and HTML necessary to both view and edit the document. This means that it is trivial to host a TiddlyWiki on a website, or to distribute one by email. And anyone with a reasonably recent web browser will be able to read and edit it.

The above was written by JeremyRuston and is CopyrightOsmosoft.]]></description>
        <pubDate>Mon, 25 Apr 2005 15:50:09 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>CopyrightOsmosoft</title>
        <description><![CDATA[The original TiddlyWiki content is released under copyright of [[osmosoft|http://osmosoft.com/]], 2005. While some of the tiddlers from TiddlyWiki have been included in TiddlyWikiRemote, all-inclusive copyright notice has been removed to minimize confusion about which content it would apply to. Each tiddler that was copied to this adaptation retains the original copyright and should accordingly include a reference to this tiddler.]]></description>
        <pubDate>Wed, 27 Apr 2005 16:54:12 -0700</pubDate>
        <category>YourName</category>
    </item>
    <item>
        <title>TiddlyWikiAdaptations</title>
        <description><![CDATA[TiddlyWikiRemote is a TiddlyWikiAdaptation. Other known adaptations are:
* PatrickCurry and GabrielJeffrey's [[PhpTiddlyWiki|http://www.patrickcurry.com/tiddly/]]
* HenrikAastedSorensen's at http://aasted.org/wiki
* IsaoSonobe's OgreKitWiki at http://www-gauge.scphys.kyoto-u.ac.jp/~sonobe/OgreKit/OgreKitWiki.html 
* JacquesTurbe's TidliPo, in French at http://avm.free.fr/IMG/html/carnet_gt_BigCo.html
* ChristianHauck's at http://www.christianhauck.net/html/14300.html
* TonyLownds's at http://tony.lownds.com/home/
]]></description>
        <pubDate>Fri, 05 Jan 2007 10:45:40 -0800</pubDate>
        <category>Zakoz</category>
    </item>
    <item>
        <title>DanPhiffer</title>
        <description><![CDATA[Dan is a freelance web developer based in LosAngeles, who will soon be relocating to NewYorkCity for GraduateSchool. He doesn't quite understand why he's compelled to write these things in the ThirdPerson.]]></description>
        <pubDate>Mon, 25 Apr 2005 16:07:01 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>ServerSide</title>
        <description><![CDATA[The server component of TiddlyWikiRemote is comprised of a single script written in PHPVersion5, which uses an RSSFeed to store tiddler content. A zipped file containing  the necessary files to run your own instance of TiddlyWikiRemote is availabe for DownloadHere.]]></description>
        <pubDate>Fri, 06 May 2005 15:40:10 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>PHPVersion5</title>
        <description><![CDATA[PHP version 5 is an OpenSource scripting language, available for a wide variety of platforms. Many InternetServiceProviders still only offer PHPVersion4, which could pose a challenge for those interested in running their own instance of the ServerSide code. If your server includes ShellAccess, you may be able to CompileYourOwn.]]></description>
        <pubDate>Wed, 15 Mar 2006 03:11:11 -0800</pubDate>
        <category>t</category>
    </item>
    <item>
        <title>FrontEnd</title>
        <description><![CDATA[The front end for TiddlyWikiRemote is comprised of HTMLMarkup, CascadingStyleSheets and JavaScript. These are included as a single SelfContained package. The ServerSide connection is achieved through the use of the XMLHttpRequest object, which provides an AsynchronousConnection to allow tiddler content be saved to and retrieved from the server. OKAY!]]></description>
        <pubDate>Tue, 27 May 2008 16:21:47 -0700</pubDate>
        <category>iouzo</category>
    </item>
    <item>
        <title>VersionZeroDotOne</title>
        <description><![CDATA[Version 0.1, the first release of TiddlyWikiRemote, includes a rudimentary save-to-server mechanism, using the XMLHttpRequest object for communication with the ServerSide. A general RecentChanges aggregation can be tracked using the RSSFeed, which is linked at the top of the page.]]></description>
        <pubDate>Fri, 06 May 2005 15:40:15 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>TiddlyWikiAdaptation</title>
        <description><![CDATA[You're proabably looking for TiddlyWikiAdaptations.]]></description>
        <pubDate>Mon, 25 Apr 2005 16:32:00 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>UserInterfaceChanges</title>
        <description><![CDATA[TiddlyWikiRemote inherits most of its user interface goodness from TiddlyWiki, although some changes have been made to suit the arbitrary tastes of its author, DanPhiffer. Aside from general color and font modifications, tiddler controls have been repositioned and some other controls have also been moved around. In order to achieve the angled stripes effect, the stylesheet includes two instances of EmbeddedImageData.]]></description>
        <pubDate>Mon, 25 Apr 2005 21:56:21 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>EmbeddedImageData</title>
        <description><![CDATA[Some images were embedded in the CSS using the [[base64 URL trick|http://rifers.org/blogs/gbevin/2005/4/11/embedding_images_inside_html]]. I wrote a [[PHP script|http://phiffer.org/tiddly/embed-image.php]] that converts uploaded images into a form that can be embedded into HTML.
----
Strictly speaking this tiddler is misnamed since you can embed any kind of data using the same technique. You can even use that same script, but just modify the MIME type (the part that says image/gif).

data:image/gif;base64,R0lGODlhFAFuAOcAAP////f7/,fr/8bX/73P763H96W,7/f3/4Sq91mB1jFl1iFZ1hhNxhhJtRBFtUp952OW787T5,/v7xhRzgg8paW21tbb5/f39//7/3Oi7xhFrRA8lClJlDtZk0phlFJtrTlx3pSu3ufn7ylRtWN5pJSetcbHztbT1t7b1tbX1tnXy87PzsbHxrW2vXOOztrl/7W6xt7b3t7f3sbDxsa,vb2,vaWmrVqK7xA0hL26vbWytbW2tYSStb22vZyanDlhtQgkY3N5jM7Lzq2qpefj54SGlK2ure/r7/fz7,fn54ySlElVc97f562mrffz97WyraWmpZyenKWipa2qrVppfClBa7XD3nuGrefk3pSSjIR9c4Sa1u/n58vO1s7V1v/z79bb3ffXzve6rfeWhPeGc/emnP/Lxv/r5/dpUudJMd4wGNYkCOc8Ie9ZQtZlWufb3vfn1sYYAK0UALUkEL0sGMZ1a86upc7Hxt7Lxta2tf//7848KYwgEMaSjO/y9,fr797j55xlWt7X1v/ztf/vMZRBMa2WjP/3hP/vCP/PANauAGssIaWCAP91Y4wQAO,6AK2GAIRpAHtNQrVFMb2WAIR1Of/3/2sMAKWGe7WqpWNRALVZSntlUu/jlMaeAJR5AKWqrbWOAK2ytfffWvfXKff37,/HKd66Qt7LjM7Dpc6uKf/392tpa72eEP/73u/r562OELWiY7WmjKqSMaWuvZyGQv//99bX3r3jvXvbhGvTc1rLWlqqY2PTY0LDSiGqKRCWGAB9CABlAEKOQu/375zTpTm6QjG2OYzLjAhRCPfr9xiiISldMVp1Wt7v3s7rzvn5,fHx8cnJycXEwcLCwxdAmv39/ainpxk5fxguYfT09OHh4bi1sAotdyo,bdfU0ZKUmqKgoLKxsrm4uZqbn9LS0sC/v7SzspSTlZuZl9nZ2erq6nuWexh5IYyujHR0dC8vL11dXbm5udHR0ejo6IuLi0ZGRqKiov///////////////////////////////ywAAAAAFAFuAAAI/gABCBxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iD4srFNJcuXbt28ZrK609ShgEEDCBQwIBXAwUIDBBw4KpZhrh09Xqq1tcvYMGCCRsG5qzBAwQQJFCwgEGDvw4C/2WwQMEDCAYiSLB7llgxY8d89Wqqyy3cuZYyX8BwVkABCAomCKZAunTpwRNSTyicoIKFzYyN4kKGrJhtZE53HbucbMYRIkeQwEY6IMODBX01UNiwgUMHDx8,eOjAQTkFBwwII0e,GkQIEbGR/lpSViyqsWVykzETImRFjCROOBsdAAEE3xHMO5AoYeIEiv8pqLACCy2UQEIHyg22nWoLuBBBeENdgEQSbyBjjDFvCSOMejv0wEIK8Mk31AvG2YffBiTAEIMMKAw4Aw0w1iAjjC/aQEJ1qHE3QXYJWAAhUBccwUQMukCG3obqGaHDDDEER9QBBtzwAAj44UCCCTKcwEKMOXTp5Zc6hLmDjQlmp5pfFGjAw3A/6hQkE29Udl56yTTTxJIySCAiUCRKqYAGOHTQQosydtiDly,yoOiiMO4Qpg4,dJDmYH4phwMOHMTQ5k4XOCHBEbns4haddu5wAnxDEQCBlD9sAEQQ/gP2IGaHNLR3QoAryiBDDDGc4GINYQ5BQpkNaLABDkAA4QERbG5q02ZO5NLLqEiWCuKePn1W3wjIFrFCDkoqWQML7uka3KfCIYFuEkT0ugINjioxQmDGIgvEEicw4aSzOVkiLbXJJKMFnnoGZQAE2yKrBAs63KlDDjP4l0RwFwzH2cWcefpbCkLA68MIy9m7xBPjNokEvzj5O,0vdA5MQwzCAaXtA9y,WkMTUAyhQ63vFYzxQp0KyfHNHIgchRRT1HAqbBhgi7JLF/zLMpIu5/nzTjPXTEUOUCC98wnANftQ0FnmUPS9PqSd9KlOPG2TygAnU4QOLDARn08vIHyD/gKuVmGEFEfvIESTd1sUNAnIUhFF2lLQbbLbNUW7Mp1KOF74TgdksOqfySrRNRSC9,w0RVaM0MEVTwDeOJOoQk4TEm0dGXDlQjDrEwII04zsEk0EXve,GllgARYn5DCFzqxf7npMsE8rezJZhC72TXlnsLerQGRxtBHJX53RESfACzHhoy/f0gWx0xl97dPbhIDmVO7e,xBKt95RkCcIQS755tNETPpI8oHgbLeT4liPb8kqgu/sVr6LXEAC7VoR8Ponk/85j04CZF8DYxIABOAufkCowuK4x7,PBOkIE6RgBdUypwD2YAX2wwmJEHC9xB1NBzBs30YqtsGIfCEM/mIYAxmGSIYxlMEMZyCJHlwxiEOM4olPPMQgXPETC7YwYBmMoUPgIIYyCLGIZRADHLxXEFaYMQVMYMVmZKBGhBjgfTTDnhaQxiSf8eQMZUBDGtSghjWsQQ1sCGQa0tAGN4zhDR7RgxNN8YhGOvIRiYhkIkyBild8xA8vGEABNsnJrnzFgx7cgihd4IIKFMQZULliMrKoQ4OEYQxtCCQg2TDIWhqSCwhRFyt6gIQYsIIGAGABK4hwEAF4sD6ACqEPGrcCAu4EDmTY4xriIIc50OGac/gjLdPABj66AZEZccUoEvEIRXiCEpRohTo9oQhFNDKSjTwFFjJygAHQ8AH4/nzADRDGTynZpy9oogAONlACOwIAlbtQJSsbEoZGsMGPcZiDRLVZy4eqoQ/tY0UNAEAEKGgBAzQY5kHyQsM/IUuETaifxW5yhjFIs5p1sMMd8LCCPNihDnTQpizjsIY6GDQiehjnIzwRCljEIhUqENAdUhGLVrTzkeVEhfIgYszjZEc7htknBDTnp,SEbANXIOZKEarKKLxQiwY5QzTVINFJ9MEONu3DJnI6yz7GYRLgLCMw28UKHRyBFSs4yButt4Bj3StndezhS8yABjbsYQ586EMM/PAHQPDKC5itQSCy,Ue7xmEPgqDIIAiRCEVQAhayyJMIhnSCW3mBBrFg/ucj26mKeUYkAAawqgY,UIIKVGALHygMCPJpHwb84AokSO6VJkQE,AyHrLxZZQ6WphDGOnYOhbDDHyg7JDB4IROT4GkfpxkHOuDBIKyAQjCPADgADMwgTvCgcaoEBCrciX06KUMb0rAHORTiDn7olf629KIZGWIOPIVoHCKaB4kcAhGlhcQsVHAEAbOnwDOShVPdWU5ztkIFECGRfXbbBXUdgQvEo8UPCKMAvlSqBC1qbf5WADb7PSOV0TUrdREihv32NxCA,APHLkwjGAQiweSVAx3yOpCVAuAARzDIDOvTgEu9am1HcPJM8tiG/hZiRQOmEYExfOAFK1gOcmgw/hkP8uAI14JXYU4Uo7oEhQ2305znBHFD6POAP11hQu4asBBq8AHsXLVeVwDWocYlBDT67MYJzfF00SoQMaChy3IAcgzijGFZbQLJ1JTDJGImEQJk4ICAQlYQSLgYnHB5D3xYRKO5FDEaB8hXHaOBI

[img[data:image/gif;base64,R0lGODlhFAFuAOcAAP////f7/,fr/8bX/73P763H96W,7/f3/4Sq91mB1jFl1iFZ1hhNxhhJtRBFtUp952OW787T5,/v7xhRzgg8paW21tbb5/f39//7/3Oi7xhFrRA8lClJlDtZk0phlFJtrTlx3pSu3ufn7ylRtWN5pJSetcbHztbT1t7b1tbX1tnXy87PzsbHxrW2vXOOztrl/7W6xt7b3t7f3sbDxsa,vb2,vaWmrVqK7xA0hL26vbWytbW2tYSStb22vZyanDlhtQgkY3N5jM7Lzq2qpefj54SGlK2ure/r7/fz7,fn54ySlElVc97f562mrffz97WyraWmpZyenKWipa2qrVppfClBa7XD3nuGrefk3pSSjIR9c4Sa1u/n58vO1s7V1v/z79bb3ffXzve6rfeWhPeGc/emnP/Lxv/r5/dpUudJMd4wGNYkCOc8Ie9ZQtZlWufb3vfn1sYYAK0UALUkEL0sGMZ1a86upc7Hxt7Lxta2tf//7848KYwgEMaSjO/y9,fr797j55xlWt7X1v/ztf/vMZRBMa2WjP/3hP/vCP/PANauAGssIaWCAP91Y4wQAO,6AK2GAIRpAHtNQrVFMb2WAIR1Of/3/2sMAKWGe7WqpWNRALVZSntlUu/jlMaeAJR5AKWqrbWOAK2ytfffWvfXKff37,/HKd66Qt7LjM7Dpc6uKf/392tpa72eEP/73u/r562OELWiY7WmjKqSMaWuvZyGQv//99bX3r3jvXvbhGvTc1rLWlqqY2PTY0LDSiGqKRCWGAB9CABlAEKOQu/375zTpTm6QjG2OYzLjAhRCPfr9xiiISldMVp1Wt7v3s7rzvn5,fHx8cnJycXEwcLCwxdAmv39/ainpxk5fxguYfT09OHh4bi1sAotdyo,bdfU0ZKUmqKgoLKxsrm4uZqbn9LS0sC/v7SzspSTlZuZl9nZ2erq6nuWexh5IYyujHR0dC8vL11dXbm5udHR0ejo6IuLi0ZGRqKiov///////////////////////////////ywAAAAAFAFuAAAI/gABCBxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iD4srFNJcuXbt28ZrK609ShgEEDCBQwIBXAwUIDBBw4KpZhrh09Xqq1tcvYMGCCRsG5qzBAwQQJFCwgEGDvw4C/2WwQMEDCAYiSLB7llgxY8d89Wqqyy3cuZYyX8BwVkABCAomCKZAunTpwRNSTyicoIKFzYyN4kKGrJhtZE53HbucbMYRIkeQwEY6IMODBX01UNiwgUMHDx8,eOjAQTkFBwwII0e,GkQIEbGR/lpSViyqsWVykzETImRFjCROOBsdAAEE3xHMO5AoYeIEiv8pqLACCy2UQEIHyg22nWoLuBBBeENdgEQSbyBjjDFvCSOMejv0wEIK8Mk31AvG2YffBiTAEIMMKAw4Aw0w1iAjjC/aQEJ1qHE3QXYJWAAhUBccwUQMukCG3obqGaHDDDEER9QBBtzwAAj44UCCCTKcwEKMOXTp5Zc6hLmDjQlmp5pfFGjAw3A/6hQkE29Udl56yTTTxJIySCAiUCRKqYAGOHTQQosydtiDly,yoOiiMO4Qpg4,dJDmYH4phwMOHMTQ5k4XOCHBEbns4haddu5wAnxDEQCBlD9sAEQQ/gP2IGaHNLR3QoAryiBDDDGc4GINYQ5BQpkNaLABDkAA4QERbG5q02ZO5NLLqEiWCuKePn1W3wjIFrFCDkoqWQML7uka3KfCIYFuEkT0ugINjioxQmDGIgvEEicw4aSzOVkiLbXJJKMFnnoGZQAE2yKrBAs63KlDDjP4l0RwFwzH2cWcefpbCkLA68MIy9m7xBPjNokEvzj5O,0vdA5MQwzCAaXtA9y,WkMTUAyhQ63vFYzxQp0KyfHNHIgchRRT1HAqbBhgi7JLF/zLMpIu5/nzTjPXTEUOUCC98wnANftQ0FnmUPS9PqSd9KlOPG2TygAnU4QOLDARn08vIHyD/gKuVmGEFEfvIESTd1sUNAnIUhFF2lLQbbLbNUW7Mp1KOF74TgdksOqfySrRNRSC9,w0RVaM0MEVTwDeOJOoQk4TEm0dGXDlQjDrEwII04zsEk0EXve,GllgARYn5DCFzqxf7npMsE8rezJZhC72TXlnsLerQGRxtBHJX53RESfACzHhoy/f0gWx0xl97dPbhIDmVO7e,xBKt95RkCcIQS755tNETPpI8oHgbLeT4liPb8kqgu/sVr6LXEAC7VoR8Ponk/85j04CZF8DYxIABOAufkCowuK4x7,PBOkIE6RgBdUypwD2YAX2wwmJEHC9xB1NBzBs30YqtsGIfCEM/mIYAxmGSIYxlMEMZyCJHlwxiEOM4olPPMQgXPETC7YwYBmMoUPgIIYyCLGIZRADHLxXEFaYMQVMYMVmZKBGhBjgfTTDnhaQxiSf8eQMZUBDGtSghjWsQQ1sCGQa0tAGN4zhDR7RgxNN8YhGOvIRiYhkIkyBild8xA8vGEABNsnJrnzFgx7cgihd4IIKFMQZULliMrKoQ4OEYQxtCCQg2TDIWhqSCwhRFyt6gIQYsIIGAGABK4hwEAF4sD6ACqEPGrcCAu4EDmTY4xriIIc50OGac/gjLdPABj66AZEZccUoEvEIRXiCEpRohTo9oQhFNDKSjTwFFjJygAHQ8AH4/nzADRDGTynZpy9oogAONlACOwIAlbtQJSsbEoZGsMGPcZiDRLVZy4eqoQ/tY0UNAEAEKGgBAzQY5kHyQsM/IUuETaifxW5yhjFIs5p1sMMd8LCCPNihDnTQpizjsIY6GDQiehjnIzwRCljEIhUqENAdUhGLVrTzkeVEhfIgYszjZEc7htknBDTnp,SEbANXIOZKEarKKLxQiwY5QzTVINFJ9MEONu3DJnI6yz7GYRLgLCMw28UKHRyBFSs4yButt4Bj3StndezhS8yABjbsYQ586EMM/PAHQPDKC5itQSCy,Ue7xmEPgqDIIAiRCEVQAhayyJMIhnSCW3mBBrFg/ucj26mKeUYkAAawqgY,UIIKVGALHygMCPJpHwb84AokSO6VJkQE,AyHrLxZZQ6WphDGOnYOhbDDHyg7JDB4IROT4GkfpxkHOuDBIKyAQjCPADgADMwgTvCgcaoEBCrciX06KUMb0rAHORTiDn7olf629KIZGWIOPIVoHCKaB4kcAhGlhcQsVHAEAbOnwDOShVPdWU5ztkIFECGRfXbbBXUdgQvEo8UPCKMAvlSqBC1qbf5WADb7PSOV0TUrdREihv32NxCA,APHLkwjGAQiweSVAx3yOpCVAuAARzDIDOvTgEu9am1HcPJM8tiG/hZiRQOmEYExfOAFK1gOcmgw/hkP8uAI14JXYU4Uo7oEhQ2305znBHFD6POAP11hQu4asBBq8AHsXLVeVwDWocYlBDT67MYJzfF00SoQMaChy3IAcgzijGFZbQLJ1JTDJGImEQJk4ICAQlYQSLgYnHB5D3xYRKO5FDEaB8hXHaOBI]]
]]></description>
        <pubDate>Fri, 22 Sep 2006 00:39:10 -0700</pubDate>
        <category>JCG</category>
    </item>
    <item>
        <title>BugReports</title>
        <description/>
        <pubDate>Sun, 26 Nov 2006 13:13:17 -0800</pubDate>
        <category>ksjdkksdjksjk</category>
    </item>
    <item>
        <title>VersionZeroDotTwo</title>
        <description><![CDATA[Some bug fixes:
# Implemented IE-style XMLHttpRequest
# Added a work-around for Safari
# Implemented tiddler title renaming on the ServerSide
# Fixed the annoying multiple quote-escaping bug (PHP's magic_quotes feature is nothing but trouble)]]></description>
        <pubDate>Thu, 28 Apr 2005 06:13:17 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>WikiWikiWeb</title>
        <description><![CDATA[A Wiki is a popular way of building collaborative websites. It's based on the ideas of easy editing of pages and the use of special WikiWord notation to automagically create links between pages. See Wikipedia for [[more details|http://en.wikipedia.org/wiki/Wiki]]. TiddlyWiki is different from a conventional Wiki because it is not based on entire pages of content, but rather items of MicroContent that are referred to as 'tiddlers'.

The above was written by JeremyRuston and is CopyrightOsmosoft.

]]></description>
        <pubDate>Thu, 28 Apr 2005 06:48:48 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>InfrastructureChallenges</title>
        <description><![CDATA[The challenges that crop up when you combine wiki group modifications with offline single user modifications are:

1. What if a user hasn't saved a tiddler to disk, and the server attempts to overwrite?
** Give me a diff and let me merge my changes. This would entail showing me where the new and old changes are and letting me choose which one I want to keep. Something like: @@bgcolor(#ff0000);@@new change@@bgcolor(#00ff00)@@old change@@ no change

2. What if a user changes the title of a tiddler while offline?
** Associate each tiddler with an id that never ever changes. Then do #1.

3. What happens if a tiddler changes title on the server while the user is offline?

** The same thing as in #2.
I'm sure there are others, but these are the ones that come to mind. ]]></description>
        <pubDate>Sat, 09 Jul 2005 01:39:54 -0700</pubDate>
        <category>Nolan%20Eakins</category>
    </item>
    <item>
        <title>SingleUserDocument</title>
        <description><![CDATA[TiddlyWiki shares many qualities with traditional non-web applications in that everything exists within a single downloadable file. This file can be modified and sent to others via email, but loses the parallel/collaborative dynamic of a GroupEditedEnvironment which is part of what makes wikis so compelling.]]></description>
        <pubDate>Fri, 06 May 2005 15:18:25 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>GroupEditedEnvironment</title>
        <description><![CDATA[In many ways the WikiWikiWeb is all about trust in the good will of
strangers. By allowing anyone to edit a website, it opens it up to
things like spam, but benefits from non-authorized visitors being able
to pitch in without permission. While TiddlyWiki is designed more like
a SingleUserDocument, TiddlyWikiRemote intends to use ServerSide code
to accommodate each model.
(So would one possible result be a model in which a specified group can
edit? Is that what we're aiming for here? That would be ideal for
things like academic class discussions, for example... perhaps a
password code for editing?)
See ImportTiddlersPlugin]]></description>
        <pubDate>Fri, 05 Jan 2007 10:27:53 -0800</pubDate>
        <category>Zakoz</category>
    </item>
    <item>
        <title>WikiWord</title>
        <description><![CDATA[A WikiWord is a word composed of a bunch of other words slammed together with each of their first letters capitalised. WikiWord notation in a conventional WikiWikiWeb is used to name individual pages while TiddlyWiki uses WikiWord titles for smaller chunks of MicroContent. Referring to a page with a WikiWord automatically creates a link to it. Clicking on a link jumps to that page or, if it doesn't exist, to an editor to create it. This ThirdVersion of TiddlyWiki also adds NonWikiWordLinks.

The above was written by JeremyRuston and is CopyrightOsmosoft.]]></description>
        <pubDate>Thu, 28 Apr 2005 10:16:12 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>MicroContent</title>
        <description><![CDATA[MicroContent being a fashionable word for self-contained fragments of content that are typically smaller than entire pages. Often MicroContent is presented via some kind of aggregation that reduces the perceptual shock and resource cost of context switching (eg Blogs aggregating several entries onto a page or Flickr presenting photos in an album). This TiddlyWiki aggregates MicroContent items that I call 'tiddlers' into pages that are loaded in one gulp and progressively displayed as the user clicks hypertext links to read them.

The above was written by JeremyRuston and is CopyrightOsmosoft.]]></description>
        <pubDate>Thu, 28 Apr 2005 10:18:30 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>HTMLMarkup</title>
        <description><![CDATA[HTML is a way of expressing the structwwure that underlies a webpage. A ton has been written on the subject, but one site that may be a good place to start is [[W3Schools|http://www.w3schools.com/]].ww]]></description>
        <pubDate>Sun, 20 May 2007 11:36:36 -0700</pubDate>
        <category>YourNamew</category>
    </item>
    <item>
        <title>CascadingStyleSheets</title>
        <description><![CDATA[Cascading stylesheets, or CSS for short, is a way of defining the look and feel of webpages. Some good references for CSS can be found at [[the css-discuss wiki|http://css-discuss.incutio.com/]] and at [[W3Schools|http://w3schools.com/]].]]></description>
        <pubDate>Thu, 28 Apr 2005 10:22:54 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>JavaScript</title>
        <description><![CDATA[JavaScript is a scripting language, which surprisingly has little to do with the Java programming language. Also known as Ecmascript, JavaScript is useful for adding interactivity to webpages. A good reference can be found at [[Quirksmode|http://www.quirksmode.org/]].]]></description>
        <pubDate>Thu, 28 Apr 2005 10:28:20 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>XMLHttpRequest</title>
        <description><![CDATA[For a good introduction to the XMLHttpRequest object see [[this tutorial|http://developer.apple.com/internet/webcontent/xmlhttpreq.html]].

Just testing...again...]]></description>
        <pubDate>Thu, 19 May 2005 23:40:49 -0700</pubDate>
        <category>Prasant</category>
    </item>
    <item>
        <title>FireFox</title>
        <description><![CDATA[FireFox lets you SaveChanges in TiddlyWiki, but you will see up to three dialogs asking your permission for the local file operations. You must allow all three operations for it to work properly. Note that you can select the //Remember this decision// option to avoid seeing the dialogs in future.

The above was written by JeremyRuston and is CopyrightOsmosoft.]]></description>
        <pubDate>Fri, 29 Apr 2005 11:48:34 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>InternetExplorer</title>
        <description><![CDATA[With InternetExplorer, it seems that you cannot see any EmbeddedImageData. This is because that browser does not recognize the data: URL. More annoying is that buttons to edit/modify/etc... the tiddlers are badly positionned and make it impossible (or at least very hard) to use the wiki. (This last point can probably be corrected.)

The following was written by JeremyRuston and is CopyrightOsmosoft:
InternetExplorer on Windows allows you to SaveChanges in TiddlyWiki. It will give you an ActiveX warning, and ask for your permission to proceed each time. It should work from version 4, but I have only extensively tested against version 6. I have found some annoying difficulties with XpServicePack2, but there's always FireFox.

]]></description>
        <pubDate>Thu, 19 May 2005 03:54:19 -0700</pubDate>
        <category>FlorianCauvin</category>
    </item>
    <item>
        <title>ServicePack2Problems</title>
        <description><![CDATA[Internet Explorer Windows XP SP2 seems to have a magical ability to keep track of html files that have been downloaded from the internet and saved on an NTFS drive. By storing additional data in an [[alternate data stream|http://www.jsware.net/jsware/sviewer.html]], it manages to keep them in the 'Internet Zone' regardless of attempts to rename or modify the file. But, in order to be able to SaveChanges, TiddlyWiki needs to run in the 'My Computer Zone'......

There are a couple of ways around the problem:
* save the TiddlyWiki HTML file to a FAT drive (eg a USB thumb drive)
* open the downloaded file with a text editor and save it again under a different name

In either case, The new file will open in 'My Computer Zone', which in turn causes Internet Explorer to put up it's information bar asking you whether you want to run it. You need to 'Allow blocked content' to let TiddlyWiki do it's stuff.

This is all a bit frustrating. An easy alternative is to use FireFox, which seems to do the trick on all platforms.

The above was written by JeremyRuston and is CopyrightOsmosoft.]]></description>
        <pubDate>Wed, 12 Mar 2008 16:31:10 -0700</pubDate>
        <category>Somebody</category>
    </item>
    <item>
        <title>SpecialTiddlers</title>
        <description><![CDATA[TiddlyWiki uses several special tiddlers to hold the text used for the MainMenu, the SiteTitle and the SiteSubtitle. DefaultTiddlers is used to store the titles of the tiddlers that are shown at startup. SaveChanges is automatically displayed if there's a problem with saving. Any of them can be editted with the changes taking effect immediately.

The above was written by JeremyRuston and is CopyrightOsmosoft.]]></description>
        <pubDate>Fri, 29 Apr 2005 11:53:01 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>GoodThing</title>
        <description><![CDATA[An undisputed desirable outcome. Of course no such thing goes undisputed, so feel free to switch things labeled GoodThing to MaybeAGoodThing or BadThing.]]></description>
        <pubDate>Fri, 29 Apr 2005 12:29:12 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>NotInventedHere</title>
        <description><![CDATA[Not Invented Here (NIH) syndrome is used to describe when a programmer prefers their own implementation over existing ones, simply because they trust their own code more than that of others.
-----
I agree that NIH is a huge problem - PatrickCurry

x  ]]></description>
        <pubDate>Mon, 19 Dec 2005 14:25:48 -0800</pubDate>
        <category>Steve</category>
    </item>
    <item>
        <title>StripImages</title>
        <description><![CDATA[Converts
images into their corresponding alt text, in case you want to use an
image for the SiteTitle or SiteSubtitle.
Here is the JavaScript source [[embedded as a text
file|data:text/plain;base64,Ly8gVXNlZCB0byBjb252ZXJ0ICJiZWZvcmUgW2ltZ1todHRwOi8vZXhhbXBsZS5jb20vaW1hZ2UuZ2lmfGFsdCB0ZXh0XV0gYWZ0ZXIiCi8vICAgaW50byAiYmVmb3JlIGFsdCB0ZXh0IGFmdGVyIgpmdW5jdGlvbiBzdHJpcEltYWdlcyhzdHIpCnsKICAgIHdoaWxlIChtYXRjaGVzID0gc3RyLm1hdGNoKC9cW2ltZ1xbKFteXHxdKylcfC4rP1xdXF0vKSkgewogICAgICAgIHZhciBtYXRjaGVzID0gc3RyLm1hdGNoKC9cW2ltZ1xbKFteXHxdKylcfC4rP1xdXF0vKTsKICAgICAgICB2YXIgc3RhcnQgPSBzdHIuaW5kZXhPZignW2ltZycpOwogICAgICAgIHZhciBlbmQgPSBzdGFydCArIG1hdGNoZXNbMF0ubGVuZ3RoOwogICAgICAgIHN0ciA9IHN0ci5zdWJzdHIoMCwgc3RhcnQpICsgbWF0Y2hlc1sxXSArCiAgICAgICAgICAgICAgICAgICAgICAgIHN0ci5zdWJzdHIoZW5kLCBzdHIubGVuZ3RoIC0gZW5kKTsKICAgIH0KICAgIHJldHVybiBzdHI7Cn0KCi8vIE1vZGlmaWVkIGxpZ2h0bHkgdG8gYWNjb21tb2RhdGUgdGhlIHBvc3NpYmlsaXR5IG9mIGltYWdlcyB3aXRoaW4gc2l0ZVRpdGxlIG9yCi8vICAgc2l0ZVN1YnRpdGxlLgpmdW5jdGlvbiByZWZyZXNoSGVhZGVyKCkKewogICAgdmFyIHRoZVRpdGxlID0gZ2V0VGlkZGxlclRleHQoIlNpdGVUaXRsZSIpOwogICAgaWYoIXRoZVRpdGxlKSB0aGVUaXRsZSA9ICJTaXRlVGl0bGUiOwogICAgdmFyIHRleHRUaXRsZSA9IHN0cmlwSW1hZ2VzKHRoZVRpdGxlKTsKICAgIAogICAgdmFyIHRoZVN1YnRpdGxlID0gZ2V0VGlkZGxlclRleHQoIlNpdGVTdWJ0aXRsZSIpOwogICAgaWYoIXRoZVN1YnRpdGxlKSB0aGVTdWJ0aXRsZSA9ICJTaXRlU3VidGl0bGUiOwogICAgdmFyIHRleHRTdWJ0aXRsZSA9IHN0cmlwSW1hZ2VzKHRoZVN1YnRpdGxlKTsKICAgIAogICAgZG9jdW1lbnQudGl0bGUgPSB0ZXh0VGl0bGUgKyAiIC0gIiArIHRleHRTdWJ0aXRsZTsKICAgIHZhciBwbGFjZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaXRlVGl0bGUiKTsKICAgIHdoaWxlKHBsYWNlLmZpcnN0Q2hpbGQgIT0gbnVsbCkKICAgICAgICBwbGFjZS5yZW1vdmVDaGlsZChwbGFjZS5maXJzdENoaWxkKTsKICAgIHdpa2lmeSh0aGVUaXRsZSxwbGFjZSxudWxsLG51bGwpOwogICAgcGxhY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2l0ZVN1YnRpdGxlIik7CiAgICB3aGlsZShwbGFjZS5maXJzdENoaWxkICE9IG51bGwpCiAgICAgICAgcGxhY2UucmVtb3ZlQ2hpbGQocGxhY2UuZmlyc3RDaGlsZCk7CiAgICB3aWtpZnkodGhlU3VidGl0bGUscGxhY2UsbnVsbCxudWxsKTsKfQo=]]]]></description>
        <pubDate>Wed, 20 Dec 2006 17:25:24 -0800</pubDate>
        <category>JayJacoby</category>
    </item>
    <item>
        <title>BugFixes</title>
        <description><![CDATA[* StripImages function
* Test One Two]]></description>
        <pubDate>Tue, 26 Feb 2008 05:40:01 -0800</pubDate>
        <category>h3lge</category>
    </item>
    <item>
        <title>OpenSourceLicense</title>
        <description><![CDATA[TiddlyWiki is published under a BSD OpenSourceLicense that gives you the freedom to use it pretty much however you want, including for commercial purposes, as long as you keep my copyright notice. I'd appreciate a link back to http://www.tiddlywiki.com as well. 

The above was written by JeremyRuston and is CopyrightOsmosoft.]]></description>
        <pubDate>Fri, 29 Apr 2005 12:53:03 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>TiddlySyntax</title>
        <description><![CDATA[In addition to the standard WikiWord style of linking between tiddlers,
TiddlyWikiRemote also supports some features added into another
TiddlyWiki [[adaptation|http://www-gauge.scphys.kyoto-u.ac.jp/~sonobe/OgreKit/OgreKitWiki.html]]:
* NonWikiWordLinks
* PrettyLinks
* HorizontalRules
* SubHeadings
* [[Lists]]
* BlockQuotes
* EmbeddedImages
* ExtendedFormatting]]></description>
        <pubDate>Sat, 14 May 2005 14:58:42 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>ExtendedFormatting</title>
        <description><![CDATA[''Bold''
==Strike==
__Underline__
//Italic//
2^^3^^=8
a~~ij~~ = -a~~ji~~
@@highlight@@
@@color(green):''green colored''@@
@@bgcolor(#009900):green colored@@]]></description>
        <pubDate>Wed, 13 Sep 2006 07:29:04 -0700</pubDate>
        <category>mikaroni</category>
    </item>
    <item>
        <title>SubHeadings</title>
        <description><![CDATA[!Header 1
!!Header 2
!!!Header 3
!!!!Header 4
!!!!!Header 5]]></description>
        <pubDate>Wed, 09 Nov 2005 15:00:51 -0800</pubDate>
        <category>LiM</category>
    </item>
    <item>
        <title>NonWikiWordLinks</title>
        <description><![CDATA[By enclosing into double brackets you can link [[wiki words]] without needing to use the alternating capitals.]]></description>
        <pubDate>Fri, 29 Apr 2005 13:37:36 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>Lists</title>
        <description><![CDATA[* Asterisks placed
* at the start of the line
* allow you
* to make bulleted lists
* They can also
** be nested

# Pound signs placed similarly
# are used to make
# numbered lists
## and nested
## numbered list]]></description>
        <pubDate>Tue, 31 May 2005 08:52:22 -0700</pubDate>
        <category>kamal</category>
    </item>
    <item>
        <title>HorizontalRules</title>
        <description><![CDATA[A horizontal rule can be created by placing four hyphens ('----') at the start of the line.
----
Kind of like that.]]></description>
        <pubDate>Wed, 09 Nov 2005 15:13:03 -0800</pubDate>
        <category>LiM</category>
    </item>
    <item>
        <title>BlockQuotes</title>
        <description><![CDATA[Block quotes work kind of like in email

&gt; Placing a right angle bracket ('&gt;') at the start of the line, results in a the following text to appear as a blockquote.
&gt; kjhjkh
&gt;&gt; Placing multiple angle brackets allows you to nest blockquotes.]]></description>
        <pubDate>Sat, 18 Oct 2008 08:20:06 -0700</pubDate>
        <category>Test</category>
    </item>
    <item>
        <title>EmbeddedImages</title>
        <description><![CDATA[Images

[img[https://gmail.google.com/gmail/help/images/logo.gif]]
]]></description>
        <pubDate>Fri, 22 Sep 2006 00:38:44 -0700</pubDate>
        <category>JCG</category>
    </item>
    <item>
        <title>FileLocking</title>
        <description><![CDATA[File locking should be used to prevent two users from inadvertantly writing to the same file at the same time. Here's the algorithm I'll be implementing in VersionZeroDotThree:
# Write to a temporary file
# Copy to the desired target filename

Since copying is a single step, if two users attempt to write at the same time one or the other of their changes will take effect.
----
KamalFariz: I was under the impression that FileLocking had to do with EditLocking, where you disable edit mode if the tiddler is undergoing edits.]]></description>
        <pubDate>Thu, 09 Jun 2005 11:21:52 -0700</pubDate>
        <category>KamalFariz</category>
    </item>
    <item>
        <title>DownloadChanges</title>
        <description/>
        <pubDate>Thu, 13 Dec 2007 05:38:29 -0800</pubDate>
        <category>maijs</category>
    </item>
    <item>
        <title>UploadChanges</title>
        <description/>
        <pubDate>Thu, 13 Dec 2007 05:38:17 -0800</pubDate>
        <category>maijs</category>
    </item>
    <item>
        <title>UserAuthentication</title>
        <description><![CDATA[KevemBuangga : Unfortunately authentication is not only needed but ''mandatory''. Don't be fooled by the current coolness of the TiddlyWiki afficionados, it is still a small crowd but things will get ugly when the audience increases. We might even need [[Captchas]] against spammers (the price for server side...)
----
DanPhiffer: I think there are essentially two separate, but equally problematic issues. One is spamming, which I see as innevitable. The other is identity spoofing, which is solvable, to some degree, through a simple authentication mechanism.

There are other features I'd like to try first before going as far as requiring Captchas -- IPBanning and some kind of aggregated rollback (put everything back to how it was before IPAddress X messed everything up). These should be exposed to an administrator class of users to minimize abuse.

Implementing anything beyond the current free-for-all will be a nuisance for ordinary users and might decrease participation, so I guess what I'd like to do is get those features ready in case they're needed but hold off until the problem comes up.

I guess I see all of this as a trade-off between user freedom and potential for abuse. I think finding the sweet-spot might involve having more restrictive features on hand, but only resorting to them as issues arise.

See also: Clay Shirky's [[A Group Is Its Own Worst Enemy|http://www.shirky.com/writings/group_enemy.html]], [[notes from a relevant SXSW panel|http://www.willpate.org/archives/2005/03/15/sxsw-spam-trolls-stalkers-the-pandoras-box-of-community.php]]

KevemBuangga :  I am subscribed to Clay Shirky's mailing list, thank you for the reminder nevertheless, its &quot;paleolithic&quot; in InternetTime but still fully relevant.
Quote:
&gt;Of the things you have to accept, the first is that you cannot completely separate technical and social issues. 
Pretty much everything we need to care about is here, minus of course the unexpected and unforeseen...
BTW, I think neither you, me, JeremyRuston nor PatrickCurry are currently aiming at the &quot;right&quot; group. 
Fellows developers are nice but makes not a real users community, at some time we much reach users not just hackers.

DanPhiffer: I'm not sure I see a distinction between hackers and &quot;real&quot; users, but maybe what you mean by &quot;real&quot; is users of the TiddlyWiki aren't primarily talking about the TiddlyWiki itself. As for social vs technical issues -- you can't predict what the social issues will be ahead of time. Some wikis may require authentication and Captchas due to having a large heterogenous user group, while others may only be used to keep notes for a single individual.

At any rate, I'd like for authentication on this wiki to be optional and perhaps rely more on IPBanning to deal with the riff-raff. But maybe my outlook will change over time, who knows...
----
Consider my mind changed. See PasswordRequired.]]></description>
        <pubDate>Sat, 18 Oct 2008 12:03:21 -0700</pubDate>
        <category>Test</category>
    </item>
    <item>
        <title>QuickTime</title>
        <description><![CDATA[QuickTime is a video player and media file format by [[Apple Computer|http://apple.com/quicktime/]].
----
I bought the QuickTime Pro 6.5 about a month ago and they won't let me use my registration for version 7. I'm usually pretty averse to software piracy, but spending $30 more to uncripple my computer's primary media player seems pretty outrageous.]]></description>
        <pubDate>Fri, 06 May 2005 17:33:18 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>SaveHistory</title>
        <description><![CDATA[Keeping a save history is useful in a GroupEditedEnvironment in order to allow things to be restored to how they were before. Wikis are prone to getting broken or defaced, but having a history makes it able to function anyway.

TiddlyWikiRemote uses an RSSFeed to store each tiddler's save history.]]></description>
        <pubDate>Fri, 06 May 2005 15:39:48 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>RSSFeed</title>
        <description><![CDATA[RSS is used to store tiddler data, as well as providing a means to track changes in the wiki content. I'm not totally clear what the trade-offs are to choosing one flavor of RSS (or Atom) as opposed to hola, so I kind of arbitrarily opted for [[RSS version 2|http://blogs.law.harvard.edu/tech/rss]].
----
There are a number of ways to read RSS. I can only vouch for the following:
* [[Firefox or Thunderbird|http://mozilla.com/]]
* [[NetNewsWire Lite|http://ranchero.com/]] (Mac)
* [[Bloglines|http://bloglines.com/]] (Web-based)]]></description>
        <pubDate>Fri, 19 Aug 2005 00:12:08 -0700</pubDate>
        <category>HeiniM%FCller</category>
    </item>
    <item>
        <title>ChristianHauck</title>
        <description><![CDATA[... maintains his version of (local/single file) TiddlyWiki at http://www.christianhauck.net/html/14300.html . And like several others, he is also infected with the ThirdPerson disease.]]></description>
        <pubDate>Mon, 09 May 2005 02:37:05 -0700</pubDate>
        <category>ChristianHauck</category>
    </item>
    <item>
        <title>SiteTitle</title>
        <description><![CDATA[TiddlyWikiRemote]]></description>
        <pubDate>Sat, 14 May 2005 21:21:18 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>InstallationProblems</title>
        <description><![CDATA[Not being sure where to put install problems for 0.3, I've opted to put my findings on the [[0.3 test wiki|0.3/]]. - LelonS

ResEdit:Install problems Apache FreeBSD
Installed per your recommendation and got
following error when trying to open index.php:
Fatal error: Call to undefined function: simplexml_load_file() in /usr/www/users/revdev/mypath/wikiremote/modules/xml_store/xml_store.php on line 7
sdtsdsdfg
All files have been installed on server

Any Sugggestions?
kjhjkhkjhk

I Have the same problem and my server definitley is PHP5 compatible..

MarkSide: Well, the stuff from down below was actually specifically-targetted at VersionZeroDotTwo.  I believe the download link currently points to the new &quot;beta&quot; mode VersionZeroDotThree - which makes use of an entirely different codebase (from what I understand).  I haven't been able to get 0.3 working yet myself, either...

DanPhiffer: It sounds like you're probably on a server that doesn't support PHPVersion5. I do intend on phasing in PHPVersion4 support.

----
!!VersionZeroDotTwo Problems
MarkSide: Are there any &quot;tricks&quot; to installing TiddlyWikiRemote??  Tried unzipping the v0.2 download from DownloadHere onto a Debian Linux box - Apache 1.3.26 with PHP 5.0.4 - but when I go to access the page all Tiddlers are displaying as empty.  When they're clicked on for display you can see their Title, however the contents are not displayed.  Editing them shows that they DO have contents, they're just not showing up.  This causes the Title and Subtitle text not to appear, also no DefaultTiddlers are displayed, and the MainMenu on the left is empty.  Seems like nothing's able to access the contents of the Tiddlers, for some reason...

Okay, just checked Firefox's Javascript Console...  When initially loading the page, I get an error of &quot;invalid range in character class&quot;, at line 578.  This appears to be the line &quot;wikiNameRegExp = new RegExp(patterns,&quot;mg&quot;);&quot;.  Afterwards, whenever clicking on a Tiddler link, I get the error &quot;wikiNameRegExp has no properties&quot; at line 775, which is &quot;var formatMatch = wikiNameRegExp.exec(targetText);&quot;.  So the initial error at line 578 seems to be the culprit here...

DanPhiffer: Hi Mark, glad you're giving it a shot! I haven't heard of this problem before, but I'm not altogether suprised since things are still heavily under development. Could you [[email|mailto:daniel@phiffer.org]] me a link to your installation if it's on a public server? On my server I can just unzip the folder and it seems to work without further intervention...

MarkSide: Sent you an email last night.  The initial line (578) that seems to be causing the problems is the line &quot;wikiNameRegExp = new RegExp(patterns,&quot;mg&quot;);&quot; in setupRegexp(), after setting up the RegExp pattern as follows:

    // Link patterns
    var wikiNamePattern = &quot;(?:&quot; , upperLetter , &quot;,&quot; , lowerLetter , &quot;,&quot; , upperLetter , anyLetter , &quot;*)|(?:&quot; , upperLetter , &quot;{2,}&quot; , lowerLetter , &quot;,)&quot;;
    var urlPattern = &quot;(?:http|https|mailto|ftp):[^\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\%u2026

NilsWerner: You apparently have some characterset problems. Add the line &quot;AddCharset UTF-8 .html&quot; into the .htaccess file located in the directory, where your TiddlyWiki lies. (where .html is your file-extension, you may also take the whole filename)]]></description>
        <pubDate>Sat, 18 Oct 2008 08:15:59 -0700</pubDate>
        <category>Test</category>
    </item>
    <item>
        <title>PrettyLinks</title>
        <description><![CDATA[Click the edit button to see how to link to [[external sites|http://google.com/]] or [[tiddlers with spaces]].]]></description>
        <pubDate>Fri, 19 May 2006 19:50:24 -0700</pubDate>
        <category>RustMan</category>
    </item>
    <item>
        <title>TiddlyServer</title>
        <description><![CDATA[My response to a growing thread over at [[PhpTiddlyWiki|http://www.patrickcurry.com/tiddly/#TiddlyServer]]
----
* NotInventedHere syndrome is to be avoided, cooperation between different TiddlyWikiAdaptations should be a goal
** Code reuse is a GoodThing and I'll certainly look at what other people have to offer
*** I'll definitely integrate fixes to my own code base if people submit them
* Using an OpenSourceLicense is a GoodThing
** BSD is what I'm going with, but I'm open to debate there
** KevemBuangga : Not sure the 'debate' is worth it's time. In spite of differences Open Source is all the same somehow, see: http://www.eyrie.org/~eagle/writing/homesteading.html
** DanPhiffer: Thanks for the link (and the two links referenced on that page) -- I'll have to read those. I guess the licensing disagreements are only interesting to me in the sense that somebody might choose not to participate or use code on the basis of licensing. 
* Simplicity is a GoodThing -- that's partly what makes TiddlyWiki so special
** In addition to not cluttering up the screen with too many UserInterfaceChanges, choosing which features are right for you is key to avoiding [[feature creep|http://www.patrickcurry.com/tiddly/#TamingFeatureCreep]]
** Multiple flavors of wiki -- TiddlyWikiAdaptations and otherwise -- are a GoodThing
* Import/Export is a fine feature idea
** This sort of exists already in SaveChanges, being able to selectively choose which tiddlers to save out would be nice
** It would also be nice to use a nore neutral format (CSV, for instance)
** Better printing support would be nice too
* Server-syncing is a potentially difficult problem
** I've started outlining some the challenges in InfrastructureChallenges
** Authentication may be necessary eventually -- discussion moved UserAuthentication
** I don't see frequent usage as introducing any new problems you don't get with other wiki systems
*** I do need to implement FileLocking in my next release, however
*** Tiddler diffs will make it possible to merge two separately offline-modified files
*** KevemBuangga : I am not too sure that any automatic merge could make sense. Free text is not source code (which already brings a lot of questions). I rather see some manual merging thanks to access to the edit history.
*** [[This algorithm|http://www.usemod.com/cgi-bin/wiki.pl?EditConflict]] might be useful for detecting edit conflicts
*** DanPhiffer: I agree -- automatic merge sounds like a BadIdea. But I still think diffs could be useful for informing how a person might merge tiddler content manually.
* Fragmentation may be a problem for all us folks interested in hacking our own TiddlyWikiAdaptations
** I propose that a standard tiddler title be used to track general improvement, BugFixes, for changes that could be used in any TiddlyWikiAdaptation regardless of which crazy features it has added

Please respond by modifying the bullet points above and do link to new tiddlers when possible.]]></description>
        <pubDate>Sun, 15 May 2005 16:32:28 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>TiddlyHostedService</title>
        <description><![CDATA[I've got a [[domain|http://wiki-web.com/]] burning a hole in my pocket, but I still think TiddlyWikiRemote has a long way to go until it's ready to unleash on average users.
----
What would you be willing to pay for a hosted TiddlyWikiRemote namespace? (Zero is an okay answer.)
----
I'm open to sharing the profits (whoa, now! getting a bit ahead of ourselves?) from an endeavor such as I've described if folks would be willing to help.
----
Hi Dan, I'll send you and email re this stuff (now off to find it).  --- CarsonG @ gmail ''dot'' com]]></description>
        <pubDate>Wed, 07 Sep 2005 14:06:35 -0700</pubDate>
        <category>CarsonG</category>
    </item>
    <item>
        <title>UserPresence</title>
        <description><![CDATA[I'm curious about using Jabber to facilitate communication between users on a webpage. Initial tests haven't worked so well, but this seems like a good route if I can get it to work. Ludicorp's [[GNE|http://gne.net/]] prototype used simple database calls for user-to-user communication, but I'm sure it involved mad optimization skillz I'm not sure I'll be able to pull off. Feedback is welcomed on this one.]]></description>
        <pubDate>Sun, 15 May 2005 22:27:40 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>TipsAndTricks</title>
        <description><![CDATA[If you want to change the display of the TiddlyWikiRemote webpage, you can create your own .CSS file in &lt;installdir&gt;/components.  .../components/stylesheet.css will be loaded first, and then your stylesheet will be loaded afterwards.  Any settings you make in your personal .CSS file will override those settings of the default stylesheet.css.  This method should be used instead of hand-tweaking stylesheet.css, because it will permit you to more-easily upgrade to a newer version of TiddlyWikiRemote without having to choose between your custom CSS and the default CSS (which may include support for new div styles not present in your version).]]></description>
        <pubDate>Mon, 16 May 2005 07:06:31 -0700</pubDate>
        <category>MarkSide</category>
    </item>
    <item>
        <title>Seems to work</title>
        <description><![CDATA[Really? [img[data:image/jpeg;base64,R0lGODlhDwAPALMNAP/qAEVFRQAAAP/OAP/JAP6dAP,0AP/,k//9E///x//////lAP//6wAAAAAAAAAAACH5BAEAAA0ALAAAAAAPAA8AAARZsEkZap24VZbOGRcWcAgCnEMRTEFnnnC6ascLx2sr7DvA76rAgacQ,HZFQ,VwNJ54BGXAdoNFK4PqbUFQabJOmIAAogwGi99YxjoT3m,2KGCoG4IZlmU2iQAAOw==]]

DanPhiffer: Hmm.. yes that does appear to be broken. I thought it worked before...

Testing another image: [img[data:image/gif;base64,R0lGODlhIAAfAOZ2AAV2svf39wBgpgA1fABZnBKQyQ6i1u/v7wBVkLcPAN7e3tlTDABIkARrqexkEQBDgfF0HwAYWf/BOv6yNNxfFJ6exQCOxFk9MwANT9NBCAAHP9VMDBi05AmCv31HM8Q/CAApbebm5nsvDv/sYfORS8wzAKYmBrpiIcMoAQAhZ6JzUM12MZ4cBczMzKaQgpxTIhB5tv,PN///mZ4XA,2TF7o7C/7VU//0e7UsBba2tloyH,diEvOoG,uJMuB9LpxlPy4eJsLCwgAzZpmZmX5VUCAzhP/MM/nAJQBCcAADJuV4GwAsUiK,7ixCaQASaltifGZmZqurq/d9KQAAM/efVW1tbb4ZAOmmMerAoHF2rfB,MDMzM8MYAf/XOiJijuTk7yxBjv,BNr2ZYIODg15XUPCvg5KAd///zP7aotbW1nt7e99uF/22Tf/oNrxzRDAbDe9rGOVbCORSAbQBAACZzP,ZM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAHYALAAAAAAgAB8AAAf/gHaCg4SCChWIiC0BhY2OgwpZYEVeBAIEYANFTxWPnpFFDA0FBRympAAEIE0VjJ4BZ3ZBRSAIDQ0dpUxMBh0wAh4nF1CLjyRYOU4gDAjNVTCmTAUwvwgXEjYnQyGOFBtNEULiRGgqHaYG0wACCEgXIzJUZtyDASEfGwsqJGIkVD4EDKQjVcAAHQQPkLy4IWOCiwOEsKBYACGMDxJwpNQAQEegRzp0CDwYsOSKjBsrWtRzsSGOnDgw4cDBAQSAhY4gQVog0IDABRs3bKigZ8eDnKMv4zhwaULEGy85LVjo0AFAAyQSRoxYkUZQDqRJYcZZgIKKC5tSp1q1iuCEjS5d/1wwcgM2rAM4ZVwI6KC2AQAGDwQIGOChjREjKiDWyIBUrEwtPhAAmLzuAYMBAxhcvnZYhYKiJY46hqClB4kmlNdhBgFigEgPEmL/UBBgBmPRFHA0vUCEjIAGv9kNAJEixQAhHiZIODL7QILQSE2YwKHjAQICli5dKh6hO4YVVyZMaJ4ABdINNXDUoLDFMmAk7kF417CkzgT7P0IcYJEA6YIPAO5AgQ5b6HBCGCSoMFIEGDT4Qg/31UHEAQGwMMdtceCTzw4yQeAhBSQwiIEGGiTRg3111DGEIETMwYVoY1FAAQsAbpBBDUukQKIGQABxQh0jxFBHSl7NMUdoMO2wg,kSC7DQlA4pgDDiFEmc4EEdEsiQogf0hCCCkYzB5MBdFCShgRNODDAFlS/UEQMPMgTpQxSEDJHAHAlkoJRSd8HxAhAMaqCDElK8ecMNKV5AlB1ffGmkeWP2CYeHEEhBw6QTaMVGHS8E0UgQMxhpJBd6ymTqDmMpwcMRNkgw5BiuEBJAFKGKKmp5GZRQwgJK0LDqETH0AAVEjsxaq62iWrHrGjQ0C8EKUHz2Sg4WImtkAlZksEAcFMBxghrEemJIFfxZW14J,FxQjLiyKjDEBTOIkEACujX1RAvhstvIAV8EUQEnOSiQ7yOBAAA7]]

It could be that the above isn't actually a image/gif, but rather a different format?

No, the image shows up OK just after the edit. It's likely the  PHP or XML which is screwing some bits.

DanPhiffer: Gotcha -- I've added it to BugReports]]></description>
        <pubDate>Wed, 09 Nov 2005 14:57:58 -0800</pubDate>
        <category>LiM</category>
    </item>
    <item>
        <title>DownloadHere</title>
        <description/>
        <pubDate>Sun, 26 Nov 2006 13:13:37 -0800</pubDate>
        <category>ksjdkksdjksjk</category>
    </item>
    <item>
        <title>MovingForward</title>
        <description/>
        <pubDate>Sun, 26 Nov 2006 13:12:45 -0800</pubDate>
        <category>ksjdkksdjksjk</category>
    </item>
    <item>
        <title>CompileYourOwn</title>
        <description><![CDATA[Some
resources for compiling PHP version 5 as a cgi module. These are
somewhat specific for Dreamhost, but should be equally helpful for
other hosts.
* http://www.moztips.com/php5_install/
* http://www.michaelraichelson.com/plex/about/44/php5-for-dreamhost-install-script
* http://wiki.dreamhost.com/index.php/Installing_PHP5

----]]></description>
        <pubDate>Sun, 11 Sep 2005 13:57:09 -0700</pubDate>
        <category>Grom</category>
    </item>
    <item>
        <title>HelloThere</title>
        <description/>
        <pubDate>Tue, 26 Sep 2006 00:24:17 -0700</pubDate>
        <category>AleX</category>
    </item>
    <item>
        <title>TiddlyWikiRemote</title>
        <description><![CDATA[Another speech installation guide? ... NO. There is only one official SpeechMagic 6 installation guide. Get it here.]]></description>
        <pubDate>Thu, 30 Oct 2008 05:19:53 -0700</pubDate>
        <category/>
    </item>
    <item>
        <title>ThirdPerson</title>
        <description><![CDATA[Is it just me, or do most wikis seem to adopt a third-person kind of detatched voice? It's probably just me.

Maybe because most wikis are editted by more than one person, so it is helpful for third persons (or fourth?) instead of multiple authors contributing in the first person.

//Dan: I think it's also because a ThirdPerson name works as a wiki link, while the word [[I]] couldn't be made into a link until double-brackets were invented.//]]></description>
        <pubDate>Tue, 12 Jul 2005 14:33:32 -0700</pubDate>
        <category>joe</category>
    </item>
    <item>
        <title>SandBox</title>
        <description><![CDATA[Does this mean TiddlyWiki would now require PHP to run ServerSide? :(
yes.
Someone tried out something really neat here!
Hey I like this, how can I get a SandBox on my TiddlyWiki?
//Um, it's not the sandbox that's remoted; it's all the tiddlers.//


==looks like ''BOLD'' is going on strike==
yoyo

What &lt;&lt;version&gt;&gt; TW is this?    definitely an older version (0.3 includes TW 1.2.16)

==BOLD==
*bullet?

I have to appreciate the simplicity of the &quot;if you don't define  your name, we ain't savin yo changes!&quot;
]]></description>
        <pubDate>Wed, 20 Dec 2006 17:22:18 -0800</pubDate>
        <category>JayJacoby</category>
    </item>
    <item>
        <title>address unicode problems</title>
        <description><![CDATA[The trick is Javascript use an internal 16 or 32 bits encoding even when dealing with UTF-8 and every other piece of software expects 8 bits bytes.
The strings must be converted before being sent to PHP (for instance).

&gt;function convToUTF8codes(data) {
&gt; var count = 0;
&gt; for (var i = 0; i &lt; data.length; ,,i) {
&gt; var c = data.charCodeAt(i);
&gt; if (c &lt; 0x80) ,,count;
&gt; else if (c &lt; 0x800) count ,= 2;
&gt; else if (c &lt; 0x10000) count ,= 3;
&gt; else count ,= 4; // not too sure if these values ever actually show up
&gt; }
&gt;
&gt; var k = 0;
&gt; var utf8 = new Array(count);
&gt; for (var i = 0; i &lt; data.length; ,,i) {
&gt; var c = data.charCodeAt(i);
&gt; if (c &lt; 0x80) utf8[k] = c, ,,k;
&gt; else if (c &lt; 0x800) {
&gt; utf8[k] = (c &gt;&gt; 6) | 0xC0, ,,k;
&gt; utf8[k] = (c &amp; 0x3F) | 0x80, ,,k;
&gt; } else if (c &lt; 0x10000) {
&gt; utf8[k] = (c &gt;&gt; 12) | 0xE0, ,,k;
&gt; utf8[k] = ((c &gt;&gt; 6) &amp; 0x3F) | 0x80, ,,k;
&gt; utf8[k] = (c &amp; 0x3F) | 0x80, ,,k;
&gt; }
&gt; else {
&gt; utf8[k] = (c &gt;&gt; 18) | 0xF0, ,,k;
&gt; utf8[k] = ((c &gt;&gt; 12) &amp; 0x3F) | 0x80, ,,k;
&gt; utf8[k] = ((c &gt;&gt; 6) &amp; 0x3F) | 0x80, ,,k;
&gt; utf8[k] = (c &amp; 0x3F) | 0x80, ,,k;
&gt; }
&gt; }
&gt; return utf8;
&gt;}
&gt; 
&gt;function convToUTF8(data) { return eval(&quot;String.fromCharCode(&quot; , convToUTF8codes(data).toString() , &quot;);&quot;); }

Mmmm...
[img[data:image/gif;base64,R0lGODlhDwAPALMNAEVFRf/qAAAAAP/OAP/JAP////6dAP,0AP/,k///x//9E//lAP//6wAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh,QQFCgANACwAAAAADwAPAAAEXrBJCWqduFWWEBoXBnCKEpyDAUxAJwhn8KarhghFAeM6qCW8XFCnAtx0uGTyUEHIXjsogQkwPWOvwLQyiHlPC4JK0/2eCD7yYAGAAtBjymBAqNdpmcphfyhmWBY1ExEAIfkEBQoADQAsBAAFAAgAAwAABAqwiFnkvFbYoGcEACH5BAUKAA0ALAQABAAHAAQAAAQLsIlG5ayz1Kb5LhEAIfkEBTIADQAsBAAEAAgAAwAABApQtNkkLbThgiePACH5BAUUAA0ALAkACgACAAIAAAQEsAnRIgAh,QQFCgANACwEAAQABwAEAAAEDbCURmUBtIErMOhahkUAIfkEBQAADQAsAgACAAsABwAABB2wSSEbrTJUXVX4zQcqQikEpkBMTdFaWFnJGxdyEQAh,QQFAAANACwCAAIACwAGAAAEFrBJJVuoOFehG7dBCIrKJwQmMV6hGAEAIfkEBQAADQAsAgACAAsABgAABBawSSEbrThLpVuYQmiFlFBIhYmW5ChGADs=]] This does not look like a real blockquote, what about the blanks?
----
DanPhiffer: Wow, thanks -- I'll work that into the code and see if it helps with the unicode problems.]]></description>
        <pubDate>Wed, 18 May 2005 21:52:13 -0700</pubDate>
        <category>DanPhiffer</category>
    </item>
    <item>
        <title>onClickTiddlerLink Close Tiddler</title>
        <description><![CDATA[I have been thinking about how to do this for a while. If a tiddler was already open and in viewer mode then clicking on a tiddler link would close the tiddler rather than zoom to the open tiddler. I was happy that after some thought it was simple to implement and as nice to use as I thought it might be.

It involves changing only the procedure onClickTiddlerLink().
The lines with comment &quot;ADD&quot; at end of line have been added to the original.
The code is much easier to look at in Tiddler Edit mode.

// Event handler for clicking on a tiddly link
function onClickTiddlerLink(e)
{
    if (!e) var e = window.event;
    var theTarget = resolveTarget(e);
    var theLink = theTarget;
    var title = null;
    do {
        title = theLink.getAttribute(&quot;tiddlyLink&quot;);
        theLink = theLink.parentNode;
    } while(title == null &amp;&amp; theLink != null);

    // if Tiddler open and in view mode close it instead of reanimate to open. ADD
    var viewer = document.getElementById(&quot;viewer&quot; , title); // is tiddler open in view mode ADD
    if (viewer)  // ADD
        {  // ADD
        var tiddler = document.getElementById(&quot;tiddler&quot; , title);   // is tiddler open in view mode ADD
        closeTiddler(title,e.shiftKey || e.altKey);  // ADD
        }  // ADD
    else  // ADD
        {  // ADD
        if(title)
            displayTiddler(theTarget,title,0,null,null,e.shiftKey || e.altKey);
        }  // ADD
    clearMessage();
}

----
Posted by [[HeathWeaver|http://wbmny.com]]
Doesn't the newest version of tiddlywiki implement this with Ctrl,Click]]></description>
        <pubDate>Fri, 17 Jun 2005 08:55:25 -0700</pubDate>
        <category>HeathWeaver</category>
    </item>
    <item>
        <title>Click Tiddler Link toggle open</title>
        <description><![CDATA[I have been thinking about how to do this for a while. If a tiddler was allready open and in viewer mode then clicking on a tiddler link would close the tiddler rather than zoom to the open tiddler. I was happy that after some thought it was simple to implement and as nice to use as I thought it might be.

It involves changing only the procedure onClickTiddlerLink().
The lines with comment &quot;ADD&quot; at end of line have been added to the original.
The code is much easier to look at in Tiddler Edit mode.

// Event handler for clicking on a tiddly link
function onClickTiddlerLink(e)
{
    if (!e) var e = window.event;
    var theTarget = resolveTarget(e);
    var theLink = theTarget;
    var title = null;
    do {
        title = theLink.getAttribute(&quot;tiddlyLink&quot;);
        theLink = theLink.parentNode;
    } while(title == null &amp;&amp; theLink != null);

    // if Tiddler open and in view mode close it instead of reanimate to open. ADD
    var viewer = document.getElementById(&quot;viewer&quot; , title); // is tiddler open in view mode ADD
    if (viewer)  // ADD
        {  // ADD
        var tiddler = document.getElementById(&quot;tiddler&quot; , title);   // is tiddler open in view mode ADD
        closeTiddler(title,e.shiftKey || e.altKey);  // ADD
        }  // ADD
    else  // ADD
        {  // ADD
        if(title)
            displayTiddler(theTarget,title,0,null,null,e.shiftKey || e.altKey);
        }  // ADD
    clearMessage();
}
]]></description>
        <pubDate>Thu, 03 Nov 2005 03:30:03 -0800</pubDate>
        <category>Jass</category>
    </item>
    <item>
        <title>Tiddler Link toggle</title>
        <description><![CDATA[I have been thinking about how to do this for a while. If a tiddler was allready open and in viewer mode then clicking on a tiddler link would close the tiddler rather than zoom to the open tiddler. I was happy that after some thought it was simple to implement and as nice to use as I thought it might be.

It involves changing only the procedure onClickTiddlerLink().
The lines with comment &quot;ADD&quot; at end of line have been added to the original.
The code is much easier to look at in Tiddler Edit mode.

// Event handler for clicking on a tiddly link
function onClickTiddlerLink(e)
{
    if (!e) var e = window.event;
    var theTarget = resolveTarget(e);
    var theLink = theTarget;
    var title = null;
    do {
        title = theLink.getAttribute(&quot;tiddlyLink&quot;);
        theLink = theLink.parentNode;
    } while(title == null &amp;&amp; theLink != null);

    // if Tiddler open and in view mode close it instead of reanimate to open. ADD
    var viewer = document.getElementById(&quot;viewer&quot; , title); // is tiddler open in view mode ADD
    if (viewer)  // ADD
        {  // ADD
        var tiddler = document.getElementById(&quot;tiddler&quot; , title);   // is tiddler open in view mode ADD
        closeTiddler(title,e.shiftKey || e.altKey);  // ADD
        }  // ADD
    else  // ADD
        {  // ADD
        if(title)
            displayTiddler(theTarget,title,0,null,null,e.shiftKey || e.altKey);
        }  // ADD
    clearMessage();
}
]]></description>
        <pubDate>Thu, 19 May 2005 04:10:59 -0700</pubDate>
        <category>RobinL</category>
    </item>
    <item>
        <title>[[David J. Mather]]</title>
        <description><![CDATA[David is freelance software technical consultant. He is currently trying to determine how to use a Wiki as a knowledge base]]></description>
        <pubDate>Sun, 22 May 2005 22:43:59 -0700</pubDate>
        <category>DaveM</category>
    </item>
    <item>
        <title>David J. Mather</title>
        <description><![CDATA[David is freelance software technical consultant. He is currently trying to determine how to use a Wiki as a knowledge base

BachoJames]]></description>
        <pubDate>Sun, 22 May 2005 22:44:38 -0700</pubDate>
        <category>DaveM</category>
    </item>
    <item>
        <title>BachoJames</title>
        <description><![CDATA[BachoJames is 
an independent Software Re-seller. Based in Singapore.
fsdafdafdsf]]></description>
        <pubDate>Fri, 27 Oct 2006 23:37:48 -0700</pubDate>
        <category>b93064</category>
    </item>
    <item>
        <title>VersionZeroDotThree</title>
        <description><![CDATA[This
version dramatically changes the way the wiki gets assembled. Instead
of assembling from an exploded collection of modified JavaScript, CSS
and HTML files, TiddlyWikiRemote instead starts from a functioning
TiddlyWiki HTML file and adds functionality based on a modular set of
PHP scripts.
This makes it possible to easily roll in the Jeremy Ruston's TiddlyWiki
updates. TiddlyWikiRemote 0.3 is currently based off of version 1.2.14.
For comparison, the current TiddlyWikiRemote is based on 1.2.5.
----
I'm going to hold off on releasing the source code until I look over
things for security and add a couple more touches, but feel free to
[[test things out|http://phiffer.org/tiddly/0.3/]] in the meantime.
----
My apologies for releasing a somewhat unexciting (from a
user-perspective) development after so much inactivity, but I want to
address some of the BugReports before adding features. I thought it
would be best to make it easier to take advantage of future TiddlyWiki
releases so TiddlyWikiRemote can benefit from Juston's efforts.]]></description>
        <pubDate>Sun, 04 Nov 2007 04:33:13 -0800</pubDate>
        <category>gnv</category>
    </item>
    <item>
        <title>LinkListe</title>
        <description><![CDATA[LinkListe for Testzwecke only
----
* Oniguruma Testeintrag&lt;[[link|http://www.geocities.jp/kosako1/oniguruma/index.html]]&gt;
----
* @@color(red):Gayzmail@@ -- An all-new email client for Mac OS X -- &lt;[[link|http://gyazsquare.com/gyazmail/]]&gt;
----
TeXShop%u30FBRichard Koch%u69D8%u306F%u3058%u3081%u3001TeXShop%u958B%u767A%u8005%u30B3%u30DF%u30E5%u30CB%u30C6%u30A3%u306E%u7686%u69D8 &lt;[[link|http://www.uoregon.edu/~koch/texshop/texshop.html]]&gt;
Lightweight Language Magazine%u3001ASCII%u69D8
SubEthaEdit%u30FBMartin Pittenauer%u69D8%u3001Martin Ott%u69D8 &lt;[[link|http://www.codingmonkeys.de/subethaedit/]]&gt;
fay-erie%u69D8 &lt;[[link|http://fay-erie.net/]]&gt;
SyntaxError%u30FBY. Hanatani%u69D8 &lt;[[link|http://www.lab2.kuis.kyoto-u.ac.jp/~hanatani/tdiary/]]&gt;
MACSTUDIO BLOG%u30FBMACSTUDIO NETWORKS%u69D8 &lt;[[link|http://www.macstudio.net/blog/]]&gt;
Cocoa,,,ObjectiveC%u69D8 &lt;[[link|http://itools.jp/~0003/]]&gt;
Caffeine, Nicotine and Macintosh%u30FByuichirookada%u69D8 &lt;[[link|http://nicotine.exblog.jp/]]&gt;
DrunkenBlog%u69D8 &lt;[[link|http://www.drunkenblog.com/]]&gt;
iTteyoshi (2ch Browser for Mac OS X)%u30FBhaneco%u69D8 &lt;[[link|http://www.geocities.co.jp/SiliconValley-Sunnyvale/9264/]]&gt;
Tumult HyperEdit%u30FBJonathan Deutsch%u69D8 &lt;[[link|http://www.tumultco.com/HyperEdit/]]&gt;
Syonan Macintosh Users Group%u69D8 &lt;[[link|http://www21.big.or.jp/~simayugu/]]&gt;
330's Weblog%u30FB%u4E09%u6CA2%u5FB3%u7AE0%u69D8 &lt;[[link|http://www.misawa.net/]]&gt;
Smultron%u30FBPeter Borg%u69D8 &lt;[[link|http://sourceforge.net/projects/smultron/]]&gt;
Pufui%u30FB%u8C37%u6D25%u771F%u6A39%u69D8 &lt;[[link|http://yatsu.info/wiki/Pufui/]]&gt;
''Bold''
==Strike==
__Underline__
//Italic//
2^^3^^=8
a~~ij~~ = -a~~ji~~
@@highlight@@
@@color(green):green colored@@
@@bgcolor(#ff0000):color(#ffffff):red colored@@

*sample:
|!th1111111111|!th2222222222|
|&gt;| colspan |
| rowspan |left|
|~| right|
|bgcolor(#a0ffa0):colored| center |
|caption|c
*another sample: see PeriodicTable.]]></description>
        <pubDate>Wed, 25 May 2005 06:08:03 -0700</pubDate>
        <category>joerg</category>
    </item>
    <item>
        <title>TiddlyTagWiki</title>
        <description><![CDATA[An adaptation that supports associating tags to tiddlers. Find it at http://www.digitaldimsum.co.uk]]></description>
        <pubDate>Wed, 01 Jun 2005 13:08:38 -0700</pubDate>
        <category>KamalFariz</category>
    </item>
    <item>
        <title>KamalFariz</title>
        <description><![CDATA[kamal dot fariz at gmail dot com

Adding some stuff TiddlyWikiRemote to scratch some itches:
* Single page mode (complete)
* Tags (mostly there)

Looking forward to see how VersionZeroDotThree is like]]></description>
        <pubDate>Thu, 18 Aug 2005 16:03:00 -0700</pubDate>
        <category>HeiniM%FCller</category>
    </item>
    <item>
        <title>NewNew</title>
        <description><![CDATA[Testingagainok
12121212
SandBox
works
fadsfasd
fdsfasdfdsa]]></description>
        <pubDate>Sat, 28 Oct 2006 00:12:54 -0700</pubDate>
        <category>lucky17</category>
    </item>
    <item>
        <title>HelloTherea</title>
        <description><![CDATA[NewNew


Welcome
to TiddlyWikiRemote, an adaptation of JeremyRuston's TiddlyWiki! This
version is different in the following ways:
* ServerSide saving of Tiddlers
* UserInterfaceChanges
* Tiddler SaveHistory
If you're curious about the TiddlySyntax, you can always try using the
SandBox. Editing no longer requires a password, but unless you specify
a username in the 'Options' panel, your changes won't be saved onto the
server.
----
VersionZeroDotThree is now available for download, but is still a bit
under development. I'm going to wait at least one more release to
replace the code running this TiddlyWikiRemote instance. You can still
test the new stuff in a [[separate namespace|0.3/]].]]></description>
        <pubDate>Sun, 22 Jan 2006 06:18:22 -0800</pubDate>
        <category>FooBar</category>
    </item>
    <item>
        <title>I</title>
        <description><![CDATA[You see, a tiddler with the title &quot;I&quot; would be less informative. So I think.]]></description>
        <pubDate>Mon, 11 Jul 2005 09:25:43 -0700</pubDate>
        <category>ESpringer</category>
    </item>
    <item>
        <title>GiGi</title>
        <description><![CDATA[base64 stuff
[img[data:image/jpeg;base64,iVBORw0KGgoAAAANSUhE]]]]></description>
        <pubDate>Sat, 16 Jul 2005 06:25:39 -0700</pubDate>
        <category>SamU</category>
    </item>
    <item>
        <title>BadThing</title>
        <description><![CDATA[A significant other that your life as a whole would have been better without.
*k
*l]]></description>
        <pubDate>Mon, 31 Oct 2005 17:36:49 -0800</pubDate>
        <category>wolf</category>
    </item>
    <item>
        <title>JeremyRuston</title>
        <description><![CDATA[Jeremy Ruston]]></description>
        <pubDate>Wed, 03 Aug 2005 14:17:04 -0700</pubDate>
        <category>Jim McLaughlin</category>
    </item>
    <item>
        <title>tssst</title>
        <description><![CDATA[TEST

test2

!!!!header color
TTTTTT
this is fun ey!

* testing 123
** test
*** testing again.
jyhguyguguyuyguyguyguyguyguyguyguyguyuyguyg

*alyssa...

oh, just playing with a serverside tiddler
testing

me too
* hi
** hihi
!I am not a fish or am I?...

@&amp;t@ foo

* Vorlesungsverzeichnis Humanbiologie/Diplom 2. Semester Sommersemester 2005 Uni Greifswald:
|!|!Montag|!Dienstag|!Mittwoch|!Donnerstag|!Freitag|
|!07:00-08:00|  |  |  |  |  |
|!08:00-09:00|  |bgcolor(#a0ffa0):Experimentelle Physik II| Physikalische Chemie |  |  |
|!09:00-10:00|  |bgcolor(#a0ffa0):Experimentelle Physik II| Anatomie II |  |  |
|!10:00-11:00|bgcolor(#ffdead):Biochemie I|  | Anatomie II |bgcolor(#c0ffff):Zoologische &Uuml;bungen|  |
|!11:00-12:00|bgcolor(#ffdead):Biochemie I| Physikalische Chemie | Morphologie II |bgcolor(#c0ffff):Zoologische &Uuml;bungen|  |
|!12:00-13:00|bgcolor(#ffbfff):&Ouml;kol.der Mikroorg.| Physikalische Chemie | Morphologie II |  |  |
|!13:00-14:00| Biometrie &Uuml;bungen |  |  | Biometrie |  |
|!14:00-15:00| Biometrie &Uuml;bungen |  | Allgemeine Virologie | Biometrie |  |
|!15:00-16:00|  | Biochemie I | Allgemeine Virologie |  |  |
|!16:00-17:00|  |  |  |  |  |

Mepo is half tangerine / half banana.
----

|Standard Periodic Table (ref. Wikipedia)|c
|| !1 | !2 |!| !3 | !4 | !5 | !6 | !7 | !8 | !9 | !10 | !11 | !12 | !13 | !14 | !15 | !16 | !17 | !18 |
|!1|bgcolor(#a0ffa0): @@color(red):H@@ |&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;||bgcolor(#c0ffff): @@color(red):He@@ |
|!2|bgcolor(#ff6666): Li |bgcolor(#ffdead): Be |&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;||bgcolor(#cccc99): B |bgcolor(#a0ffa0): C |bgcolor(#a0ffa0): @@color(red):N@@ |bgcolor(#a0ffa0): @@color(red):O@@ |bgcolor(#ffff99): @@color(red):F@@ |bgcolor(#c0ffff): @@color(red):Ne@@ |
|!3|bgcolor(#ff6666): Na |bgcolor(#ffdead): Mg |&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;|&gt;||bgcolor(#cccccc): Al |bgcolor(#cccc99): Si |bgcolor(#a0ffa0): P |bgcolor(#a0ffa0): S |bgcolor(#ffff99): @@color(red):Cl@@ |bgcolor(#c0ffff): @@color(red):Ar@@ |
|!4|bgcolor(#ff6666): K |bgcolor(#ffdead): Ca ||bgcolor(#ffc0c0): Sc |bgcolor(#ffc0c0): Ti |bgcolor(#ffc0c0): V |bgcolor(#ffc0c0): Cr |bgcolor(#ffc0c0): Mn |bgcolor(#ffc0c0): Fe |bgcolor(#ffc0c0): Co |bgcolor(#ffc0c0): Ni |bgcolor(#ffc0c0): Cu |bgcolor(#ffc0c0): Zn |bgcolor(#cccccc): Ga |bgcolor(#cccc99): Ge |bgcolor(#cccc99): As |bgcolor(#a0ffa0): Se |bgcolor(#ffff99): @@color(green):Br@@ |bgcolor(#c0ffff): @@color(red):Kr@@ |
|!5|bgcolor(#ff6666): Rb |bgcolor(#ffdead): Sr ||bgcolor(#ffc0c0): Y |bgcolor(#ffc0c0): Zr |bgcolor(#ffc0c0): Nb |bgcolor(#ffc0c0): Mo |bgcolor(#ffc0c0): Tc |bgcolor(#ffc0c0): Ru |bgcolor(#ffc0c0): Rh |bgcolor(#ffc0c0): Pd |bgcolor(#ffc0c0): Ag |bgcolor(#ffc0c0): Cd |bgcolor(#cccccc): In |bgcolor(#cccccc): Sn |bgcolor(#cccc99): Sb |bgcolor(#cccc99): Te |bgcolor(#ffff99): I |bgcolor(#c0ffff): @@color(red):Xe@@ |
|!6|bgcolor(#ff6666): Cs |bgcolor(#ffdead): Ba |bgcolor(#ffbfff):^^*1^^|bgcolor(#ffc0c0): Lu |bgcolor(#ffc0c0): Hf |bgcolor(#ffc0c0): Ta |bgcolor(#ffc0c0): W |bgcolor(#ffc0c0): Re |bgcolor(#ffc0c0): Os |bgcolor(#ffc0c0): Ir |bgcolor(#ffc0c0): Pt |bgcolor(#ffc0c0): Au |bgcolor(#ffc0c0): @@color(green):Hg@@ |bgcolor(#cccccc): Tl |bgcolor(#cccccc): Pb |bgcolor(#cccccc): Bi |bgcolor(#cccc99): Po |bgcolor(#ffff99): At |bgcolor(#c0ffff): @@color(red):Rn@@ |
|!7|bgcolor(#ff6666): Fr |bgcolor(#ffdead): Ra |bgcolor(#ff99cc):^^*2^^|bgcolor(#ffc0c0): Lr |bgcolor(#ffc0c0): Rf |bgcolor(#ffc0c0): Db |bgcolor(#ffc0c0): Sq |bgcolor(#ffc0c0): Bh |bgcolor(#ffc0c0): Hs |bgcolor(#ffc0c0): Mt |bgcolor(#ffc0c0): Ds |bgcolor(#ffc0c0): Rg |bgcolor(#ffc0c0): @@color(green):Uub@@ |bgcolor(#cccccc): Uut |bgcolor(#cccccc): Uuq |bgcolor(#cccccc): Uup |bgcolor(#cccccc): Uuh |bgcolor(#fcfecc): @@color(#cccccc):Uus@@ |bgcolor(#ecfefc): @@color(#cccccc):Uuo@@ |

| !Lanthanides^^*1^^|bgcolor(#ffbfff): La |bgcolor(#ffbfff): Ce |bgcolor(#ffbfff): Pr |bgcolor(#ffbfff): Nd |bgcolor(#ffbfff): Pm |bgcolor(#ffbfff): Sm |bgcolor(#ffbfff): Eu |bgcolor(#ffbfff): Gd |bgcolor(#ffbfff): Tb |bgcolor(#ffbfff): Dy |bgcolor(#ffbfff): Ho |bgcolor(#ffbfff): Er |bgcolor(#ffbfff): Tm |bgcolor(#ffbfff): Yb |
| !Actinides^^*2^^|bgcolor(#ff99cc): Ac |bgcolor(#ff99cc): Th |bgcolor(#ff99cc): Pa |bgcolor(#ff99cc): U |bgcolor(#ff99cc): Np |bgcolor(#ff99cc): Pu |bgcolor(#ff99cc): Am |bgcolor(#ff99cc): Cm |bgcolor(#ff99cc): Bk |bgcolor(#ff99cc): Cf |bgcolor(#ff99cc): Es |bgcolor(#ff99cc): Fm |bgcolor(#ff99cc): Md |bgcolor(#ff99cc): No |


*Legende zum Vorlesungsverzeichnis
**@@bgcolor(#a0ffa0): bedeutet hier@@
**@@bgcolor(#ffdead): etwas anderes@@
**@@bgcolor(#ffbfff): Lanthanides@@
**@@bgcolor(#ff99cc): Actinides@@
**@@bgcolor(#ffc0c0): Transition metals@@
**@@bgcolor(#cccccc): Poor metals@@
**@@bgcolor(#cccc99): Metalloids@@
**@@bgcolor(#a0ffa0): Nonmetals@@
**@@bgcolor(#ffff99): Halogens@@
**@@bgcolor(#c0ffff): Noble gases@@

*State at standard temperature and pressure
**those in @@color(red):red@@ are gases
**those in @@color(green):green@@ are liquids
**those in black are solids

Very nice table!
Indeed, gotta love the potential of this.
I agree.
Test to show a friend of mine :)
Adding this

FooFighters

provo dall'Italia

!!I am tired of the PBS begathon...

%u65E5%u672C%u8A9E

Testing!

Act always as an aardvark and all apples are available afterwards.

This is a test
toast...]]></description>
        <pubDate>Sun, 21 Aug 2005 07:27:28 -0700</pubDate>
        <category>dan</category>
    </item>
    <item>
        <title>SaveChanges</title>
        <description/>
        <pubDate>Fri, 14 Jul 2006 00:24:37 -0700</pubDate>
        <category>Pascal%20Hofstee</category>
    </item>
    <item>
        <title>StyleSheet</title>
        <description/>
        <pubDate>Sun, 26 Nov 2006 13:14:04 -0800</pubDate>
        <category>ksjdkksdjksjk</category>
    </item>
    <item>
        <title>Just Test</title>
        <description><![CDATA[H&eacute;h&eacute; et voila owned le wiki =)
&lt;&lt;version&gt;&gt;]]></description>
        <pubDate>Sun, 18 Sep 2005 03:43:48 -0700</pubDate>
        <category>MeOne</category>
    </item>
    <item>
        <title>NexOne</title>
        <description><![CDATA[Hello NexOne
fdsafasd]]></description>
        <pubDate>Sat, 28 Oct 2006 00:13:18 -0700</pubDate>
        <category>lucky17</category>
    </item>
    <item>
        <title>HelloEveryone</title>
        <description><![CDATA[Type the text for 'HelloThere' here.]]></description>
        <pubDate>Fri, 16 Dec 2005 11:17:20 -0800</pubDate>
        <category>YourNamejhihn</category>
    </item>
    <item>
        <title>newone</title>
        <description><![CDATA[heresdfdsfasd]]></description>
        <pubDate>Sat, 28 Oct 2006 00:13:50 -0700</pubDate>
        <category>lucky17</category>
    </item>
    <item>
        <title>booya</title>
        <description><![CDATA[but will this save?2 yup]]></description>
        <pubDate>Mon, 20 Feb 2006 13:06:59 -0800</pubDate>
        <category>mupp</category>
    </item>
    <item>
        <title>mmhhh</title>
        <description><![CDATA[hi.....
Seems someone is testing :) hehe

how nice!]]></description>
        <pubDate>Mon, 20 Feb 2006 21:29:08 -0800</pubDate>
        <category>bogus</category>
    </item>
    <item>
        <title/>
        <description/>
        <pubDate>Fri, 02 Dec 2005 06:35:32 -0800</pubDate>
        <category>Lobo</category>
    </item>
    <item>
        <title>yes this is the one</title>
        <description><![CDATA[whooohooooo!!! wwwwww

ljlkjlkjlkjlk]]></description>
        <pubDate>Sun, 26 Mar 2006 07:38:22 -0800</pubDate>
        <category>AnToine</category>
    </item>
    <item>
        <title>TO CALL</title>
        <description><![CDATA[whooohooooo!!!]]></description>
        <pubDate>Thu, 05 Jan 2006 13:28:05 -0800</pubDate>
        <category>Marianne</category>
    </item>
    <item>
        <title>SaveChanges12</title>
        <description><![CDATA[Type the text for 'SaveChanges' here.ssp de Lionnel testing]]></description>
        <pubDate>Tue, 24 Jan 2006 02:15:35 -0800</pubDate>
        <category>Gilles</category>
    </item>
    <item>
        <title>Gille_SaveChanges12</title>
        <description><![CDATA[Type the text for 'SaveChanges' here.ssp de Lionnel testing]]></description>
        <pubDate>Tue, 24 Jan 2006 02:16:19 -0800</pubDate>
        <category>Gilles</category>
    </item>
    <item>
        <title>CamelCase</title>
        <description><![CDATA[We all know about 'CamelCase2' 
yxxycycxyc]]></description>
        <pubDate>Sat, 18 Oct 2008 08:16:31 -0700</pubDate>
        <category>Test</category>
    </item>
    <item>
        <title>hrumph</title>
        <description><![CDATA[hi.....
Seems someone is testing :) hehe

how nice!

I am editing it too! :)

%u8A66%u8A66%u4E2D%u6587
]]></description>
        <pubDate>Sat, 25 Feb 2006 08:14:19 -0800</pubDate>
        <category>OCat</category>
    </item>
    <item>
        <title>darcs_record.bat</title>
        <description/>
        <pubDate>Sun, 12 Mar 2006 10:08:56 -0800</pubDate>
        <category>Nigel%20Bray%20phiffer.org.nrb@spamgourmet.com</category>
    </item>
    <item>
        <title>UI-tool</title>
        <description/>
        <pubDate>Sun, 12 Mar 2006 10:08:40 -0800</pubDate>
        <category>Nigel%20Bray%20phiffer.org.nrb@spamgourmet.com</category>
    </item>
    <item>
        <title>ImportTiddlersPlugin</title>
        <description><![CDATA[Original at: http://simonbaird.com/mptw/#ImportTiddlersPlugin

Copy for convenience here:
/***
''Import Tiddlers Plugin for TiddlyWiki version 1.2.x and 2.0''
^^author: Eric Shulman - ELS Design Studios
source: http://www.TiddlyTools.com/#ImportTiddlersPlugin
license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^

When many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. This plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. It can also be very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)

!!!!!Inline interface (live)
&lt;&lt;&lt;
&lt;&lt;importTiddlers inline&gt;&gt;
&lt;&lt;&lt;
!!!!!Macro Syntax
&lt;&lt;&lt;
{{{&lt;&lt;importTiddlers&gt;&gt;}}}
creates &quot;import tiddlers&quot; link. click to show/hide import control panel

{{{&lt;&lt;importTiddlers inline&gt;&gt;}}}
creates import control panel directly in tiddler content

{{{&lt;&lt;importTiddlers filter source quiet ask&gt;&gt;}}}
non-interactive 'automatic' import.
''filter'' determines which tiddlers will be automatically selected for importing. Use one of the following keywords:
&gt;''&quot;new&quot;'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document
&gt;''&quot;changes&quot;'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler
&gt;''&quot;updates&quot;'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)
&gt;''&quot;all&quot;'' retrieves ALL tiddlers from the import source document, even if they have not been changed.
''source'' is the location of the imported document. It can be either a local document or an URL:
&gt;filename is any local path/file, in whatever format your system requires
&gt;URL is any remote web location that starts with &quot;http://&quot; or &quot;https://&quot;
''&quot;quiet&quot;'' (optional)
&gt;supresses all status message during the import processing (e.g., &quot;opening local file...&quot;, &quot;found NN tiddlers...&quot; etc). Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified. This ensures that changes to your document cannot occur without any visible indication at all.
''&quot;ask&quot;'' (optional)
&gt;adds interactive confirmation. A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.

''Special tag values: importReplace and importPublic''

By adding these special tags to an existing tiddler, you can precisely control whether or not to allow updates to that tiddler as well as decide which tiddlers in your document can be automatically imported by others.
*''For maximum safety, the default action is to prevent existing tiddlers from being unintentionally overwritten by incoming tiddlers.'' To allow an existing tiddler to be overwritten by an imported tiddler, you must tag the existing tiddler with ''&lt;&lt;tag importReplace&gt;&gt;''
*''For maximum privacy, the default action for //outgoing// tiddlers is to NOT automatically share your tiddlers with others.'' To allow a tiddler in your document to be shared via auto-import actions by others, you must tag it with ''&lt;&lt;tag importPublic&gt;&gt;''
//Note: these tags are only applied when using the auto-import processing. When using the interactive control panel, all tiddlers in the imported document are available in the listbox, regardless of their tag values.//
&lt;&lt;&lt;
!!!!!Interactive Usage
&lt;&lt;&lt;
When used interactively, a control panel is displayed consisting of an &quot;import source document&quot; filename input (text field plus a ''[Browse...]'' button), a listbox of available tiddlers, a &quot;differences only&quot; checkbox, an &quot;add tags&quot; input field and four push buttons: ''[open]'', ''[select all]'', ''[import]'' and ''[close]''.

Press ''[browse]'' to select a TiddlyWiki document file to import. You can also type in the path/filename or a remote document URL (starting with http://)and press ''[open]''. //Note: There may be some delay to permit the browser time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//

Select one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[,]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.

''select: all, new, changes, or differences''

You can click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in:
&gt;''&quot;all&quot;'' selects ALL tiddlers from the import source document, even if they have not been changed.
&gt;''&quot;new&quot;'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document
&gt;''&quot;changes&quot;'' selects only tiddlers that exist in both documents but that are newer in the source document
&gt;''&quot;differences&quot;'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)

''Import Tagging:''

Tiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the &quot;add tags&quot; input field, and then //added// to the existing tags for each tiddler as it is imported.

''Skip, Rename, Merge, or Replace:''

When importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.

To bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.

//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//

''Import Report History''

When tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.

When the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.

If a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.

Note: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the &quot;create a report&quot; checkbox before beginning the import processing.

&lt;&lt;&lt;
!!!!!Installation
&lt;&lt;&lt;
copy/paste the following tiddlers into your document:
''ImportTiddlersPlugin'' (tagged with &lt;&lt;tag systemConfig&gt;&gt;)

create/edit ''SideBarOptions'': (sidebar menu items) 
^^Add &quot;&lt; &lt; ImportTiddlers &gt; &gt;&quot; macro^^

''Quick Installation Tip #1:''
If you are using an unmodified version of TiddlyWiki (core release version &lt;&lt;version&gt;&gt;), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW,ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.
&lt;&lt;&lt;
!!!!!Revision History
&lt;&lt;&lt;
''2006.02.17 [2.6.0]''
Removed &quot;differences only&quot; listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for &quot;add new tags&quot; so that checkbox state is correctly tracked when panel is first displayed.
''2006.02.16 [2.5.4]''
added checkbox options to control &quot;import remote tags&quot; and &quot;keep existing tags&quot; behavior, in addition to existing &quot;add new tags&quot; functionality.
''2006.02.14 [2.5.3]''
FF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()
''2006.02.10 [2.5.2]''
corrected unintended global variable in importReport().
''2006.02.05 [2.5.1]''
moved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals
''2006.01.18 [2.5.0]''
added checkbox for &quot;create a report&quot;. Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.
''2006.01.15 [2.4.1]''
added &quot;importPublic&quot; tag and inverted default so that auto sharing is NOT done unless tagged with importPublic
''2006.01.15 [2.4.0]''
Added support for tagging individual tiddlers with importSkip, importReplace, and/or importPrivate to control which tiddlers can be overwritten or shared with others when using auto-import macro syntax. Defaults are to SKIP overwriting existing tiddlers with imported tiddlers, and ALLOW your tiddlers to be auto-imported by others.
''2006.01.15 [2.3.2]''
Added &quot;ask&quot; parameter to confirm each tiddler before importing (for use with auto-importing)
''2006.01.15 [2.3.1]''
Strip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. Makes loading more efficient by reducing the document size and by preventing the import document from executing its TW initialization (including plugins). Seems to resolve the &quot;Found 0 tiddlers&quot; problem. Also, when importing local documents, use convertUTF8ToUnicode() to convert the file contents so support international characters sets.
''2006.01.12 [2.3.0]''
Reorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest. Let's processing continue while waiting for remote hosts to respond to URL requests. Added non-interactive 'batch' macro mode, using parameters to specify which tiddlers to import, and from what document source. Improved error messages and diagnostics, plus an optional 'quiet' switch for batch mode to eliminate //most// feedback.
''2006.01.11 [2.2.0]''
Added &quot;[by tags]&quot; to list of tiddlers, based on code submitted by BradleyMeck
''2006.01.09 [2.1.1]''
When a URL is typed in, and then the &quot;open&quot; button is pressed, it generates both an onChange event for the file input and a click event for open button. This results in multiple XMLHttpRequest()'s which seem to jam things up quite a bit. I removed the onChange handling for file input field. To open a file (local or URL), you must now explicitly press the &quot;open&quot; button in the control panel.
''2006.01.08 [2.1.0]''
IMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements. Adapted from example code and techniques courtesy of Jonny LeRoy.
''2006.01.06 [2.0.2]''
When refreshing list contents, fixed check for tiddlerExists() when &quot;show differences only&quot; is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.
''2006.01.04 [2.0.1]''
When &quot;show differences only&quot; is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.
''2005.12.27 [2.0.0]''
Update for TW2.0
Defer initial panel creation and only register a notification function when panel first is created
''2005.12.22 [1.3.1]''
tweak formatting in importReport() and add 'discard report' link to output
''2005.12.03 [1.3.0]''
Dynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding. Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)
''2005.11.29 [1.2.1]''
fixed formatting of 'detail info' in importReport()
''2005.11.11 [1.2.0]''
added 'inline' param to embed controls in a tiddler
''2005.11.09 [1.1.0]''
only load HTML and CSS the first time the macro handler is called. Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.
''2005.10.25 [1.0.5]''
fixed typo in importReport() that prevented reports from being generated
''2005.10.09 [1.0.4]''
combined documentation with plugin code instead of using separate tiddlers
''2005.08.05 [1.0.3]''
moved CSS and HTML definitions into plugin code instead of using separate tiddlers
''2005.07.27 [1.0.2]''
core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()
''2005.07.23 [1.0.1]''
added parameter checks and corrected addNotification() usage
''2005.07.20 [1.0.0]''
Initial Release
&lt;&lt;&lt;
!!!!!Credits
&lt;&lt;&lt;
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
&lt;&lt;&lt;
!!!!!Code
***/

// // Version
//{{{
version.extensions.importTiddlers = {major: 2, minor: 6, revision: 0, date: new Date(2006,2,17)};
//}}}

// // 1.2.x compatibility
//{{{
if (!window.story) window.story=window;
if (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}
if (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}
if (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}
//}}}

// // IE needs explicit global scoping for functions/vars called from browser events
//{{{
window.onClickImportButton=onClickImportButton;
window.loadImportFile=loadImportFile;
window.refreshImportList=refreshImportList;
//}}}

// // default cookie/option values
//{{{
if (!config.options.chkImportReport) config.options.chkImportReport=true;
//}}}


// // ''MACRO DEFINITION''

//{{{
config.macros.importTiddlers = { };
config.macros.importTiddlers = {
 label: &quot;import tiddlers&quot;,
 prompt: &quot;Copy tiddlers from another document&quot;,
 countMsg: &quot;%0 tiddlers selected for import&quot;,
 src: &quot;&quot;, // path/filename or URL of document to import
 inbound: null, // hash-indexed array of tiddlers from other document
 newTags: &quot;&quot;, // text of tags added to imported tiddlers
 addTags: true, // add new tags to imported tiddlers
 listsize: 8, // # of lines to show in imported tiddler list
 importTags: true, // include tags from remote source document when importing a tiddler
 keepTags: true, // retain existing tags when replacing a tiddler
 index: 0, // current processing index in import list
 sort: &quot;&quot; // sort order for imported tiddler listbox
};

config.macros.importTiddlers.handler = function(place,macroName,params) {
 // LINK WITH FLOATING PANEL
 if (!params[0]) {
 createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);
 return;
 }
 // INLINE TIDDLER CONTENT
 if (params[0]==&quot;inline&quot;) {
 createImportPanel(place);
 document.getElementById(&quot;importPanel&quot;).style.position=&quot;static&quot;;
 document.getElementById(&quot;importPanel&quot;).style.display=&quot;block&quot;;
 return;
 }
 // NON-INTERACTIVE BATCH MODE
 switch (params[0]) {
 case 'all':
 case 'new':
 case 'changes':
 case 'updates':
 var filter=params.shift();
 break;
 default:
 var filter=&quot;updates&quot;;
 break;
 } 
 if (!params[0]||!params[0].length) return; // filename is required
 config.macros.importTiddlers.src=params.shift();
 var quiet=(params[0]==&quot;quiet&quot;); if (quiet) params.shift();
 var ask=(params[0]==&quot;ask&quot;); if (ask) params.shift();
 config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer
 // load storeArea from a hidden IFRAME, then apply import rules and add/replace tiddlers
 loadImportFile(config.macros.importTiddlers.src,filter,quiet,ask,autoImportTiddlers);
}
//}}}

// // ''READ TIDDLERS FROM ANOTHER DOCUMENT''

//{{{
function loadImportFile(src,filter,quiet,ask,callback) {
 if (!quiet) clearMessage();
 // LOCAL FILE
 if ((src.substr(0,7)!=&quot;http://&quot;)&amp;&amp;(src.substr(0,8)!=&quot;https://&quot;)) {
 if (!quiet) displayMessage(&quot;Opening local document: &quot;, src);
 var txt=loadFile(src);
 if(!txt) { if (!quiet) displayMessage(&quot;Could not open local document: &quot;,src); }
 else {
 var s=&quot;&lt;html&gt;&lt;body&gt;&quot;,txt.substr(txt.indexOf('&lt;div id=&quot;storeArea&quot;&gt;'));
 if (!quiet) displayMessage(txt.length,&quot; bytes in document. (&quot;,s.length,&quot; bytes used for tiddler storage)&quot;);
 config.macros.importTiddlers.inbound = readImportedTiddlers(convertUTF8ToUnicode(s));
 var count=config.macros.importTiddlers.inbound?config.macros.importTiddlers.inbound.length:0;
 if (!quiet) displayMessage(&quot;Found &quot;,count,&quot; tiddlers in &quot;,src);
 if (callback) callback(src,filter,quiet,ask);
 }
 return;
 }
 // REMOTE FILE
 var x; // XML object
 try {x = new XMLHttpRequest()}
 catch(e) {
 try {x = new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;)}
 catch (e) {
 try {x = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;)}
 catch (e) { return }
 }
 }
 x.onreadystatechange = function() {
 if (x.readyState == 4) {
 if (x.status == 200) {
 var sa=&quot;&lt;html&gt;&lt;body&gt;&quot;,x.responseText.substr(x.responseText.indexOf('&lt;div id=&quot;storeArea&quot;&gt;'));
 if (!quiet) displayMessage(x.responseText.length,&quot; bytes in document. (&quot;,sa.length,&quot; bytes used for tiddler storage)&quot;);
 config.macros.importTiddlers.inbound = readImportedTiddlers(sa);
 var count=config.macros.importTiddlers.inbound?config.macros.importTiddlers.inbound.length:0;
 if (!quiet) displayMessage(&quot;Found &quot;,count,&quot; tiddlers in &quot;,src);
 if (callback) callback(src,filter,quiet,ask);
 }
 else
 if (!quiet) displayMessage(&quot;Could not open remote document:&quot;, src,&quot; (error=&quot;,x.status,&quot;)&quot;);
 }
 }
 if (document.location.protocol==&quot;file:&quot;) { // UniversalBrowserRead only works from a local file context
 try {netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead')}
 catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }
 }
 if (!quiet) displayMessage(&quot;Opening remote document: &quot;, src);
 try {
 var url=src,(src.indexOf('?')&lt;0?'?':'&amp;'),'nocache=',Math.random();
 x.open(&quot;GET&quot;,url,true);
 x.overrideMimeType('text/html');
 x.send(null);
 }
 catch (e) {
 if (!quiet) {
 displayMessage(&quot;Could not open remote document: &quot;,src);
 displayMessage(e.description?e.description:e.toString());
 }
 }
}

function readImportedTiddlers(txt)
{
 var importedTiddlers = [];
 // create frame
 var f=document.getElementById(&quot;importFrame&quot;);
 if (f) document.body.removeChild(f);
 f=document.createElement(&quot;iframe&quot;);
 f.id=&quot;importFrame&quot;;
 f.style.width=&quot;0px&quot;; f.style.height=&quot;0px&quot;; f.style.border=&quot;0px&quot;;
 document.body.appendChild(f);
 // get document
 var d=f.document;
 if (f.contentDocument) d=f.contentDocument; // For NS6
 else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6
 // load source into document
 d.open(); d.writeln(txt); d.close();
 // read tiddler DIVs from storeArea DOM element 
 var importStore = [];
 var importStoreArea = d.getElementById(&quot;storeArea&quot;);
 if (!importStoreArea || !(importStore=importStoreArea.childNodes) || (importStore.length==0)) { return null; }
 importStoreArea.normalize();
 for(var t = 0; t &lt; importStore.length; t,,) {
 var e = importStore[t];
 var title = null;
 if(e.getAttribute)
 title = e.getAttribute(&quot;tiddler&quot;);
 if(!title &amp;&amp; e.id &amp;&amp; (e.id.substr(0,5) == &quot;store&quot;))
 title = e.id.substr(5);
 if(title &amp;&amp; title != &quot;&quot;) {
 var theImported = new Tiddler();
 theImported.loadFromDiv(e,title);
 importedTiddlers.push(theImported);
 }
 }
 return importedTiddlers;
}
//}}}

// // ''NON-INTERACTIVE IMPORT''

// // import all/new/changed tiddlers into store, replacing or adding tiddlers as needed
//{{{
function autoImportTiddlers(src,filter,quiet,ask)
{
 var count=0;
 if (config.macros.importTiddlers.inbound) for (var t=0;t&lt;config.macros.importTiddlers.inbound.length;t,,) {
 var theImported = config.macros.importTiddlers.inbound[t];
 var theExisting = store.getTiddler(theImported.title);

 // only import tiddlers if tagged with &quot;importPublic&quot;
 if (theImported.tags &amp;&amp; theImported.tags.find(&quot;importPublic&quot;)==null)
 { config.macros.importTiddlers.inbound[t].status=&quot;&quot;; continue; } // status==&quot;&quot; means don't show in report

 // never import the &quot;ImportedTiddlers&quot; history from the other document...
 if (theImported.title=='ImportedTiddlers')
 { config.macros.importTiddlers.inbound[t].status=&quot;&quot;; continue; } // status==&quot;&quot; means don't show in report

 // check existing tiddler for importReplace, or systemConfig tags
 config.macros.importTiddlers.inbound[t].status=&quot;added&quot;; // default - add any tiddlers not filtered out
 if (store.tiddlerExists(theImported.title)) {
 config.macros.importTiddlers.inbound[t].status=&quot;replaced&quot;;
 if (!theExisting.tags||(theExisting.tags.find(&quot;importReplace&quot;)==null))
 { config.macros.importTiddlers.inbound[t].status=&quot;not imported - tiddler already exists (use importReplace to allow changes)&quot;; continue; }
 if ((theExisting.tags.find(&quot;systemConfig&quot;)!=null)||(theImported.tags.find(&quot;systemConfig&quot;)!=null))
 config.macros.importTiddlers.inbound[t].status,=&quot; - WARNING: an active systemConfig plugin has been added or updated&quot;;
 }

 // apply the all/new/changes/updates filter 
 if (filter!=&quot;all&quot;) {
 if ((filter==&quot;new&quot;) &amp;&amp; store.tiddlerExists(theImported.title))
 { config.macros.importTiddlers.inbound[t].status=&quot;not imported - tiddler already exists&quot;; continue; }
 if ((filter==&quot;changes&quot;) &amp;&amp; !store.tiddlerExists(theImported.title))
 { config.macros.importTiddlers.inbound[t].status=&quot;not imported - new tiddler&quot;; continue; }
 if (store.tiddlerExists(theImported.title) &amp;&amp; ((theExisting.modified.getTime()-theImported.modified.getTime())&gt;=0))
 { config.macros.importTiddlers.inbound[t].status=&quot;not imported - tiddler is unchanged&quot;; continue; }
 }

 // get confirmation if required
 if (ask &amp;&amp; !confirm(&quot;Import &quot;,(theExisting?&quot;updated&quot;:&quot;new&quot;),&quot; tiddler '&quot;,theImported.title,&quot;'\nfrom &quot;,src))
 { config.macros.importTiddlers.inbound[t].status=&quot;skipped - cancelled by user&quot;; continue; }

 // DO THE IMPORT!!
 store.addTiddler(theImported); count,,;
 }
 importReport(quiet); // generate a report (as needed) and display it if not 'quiet'
 if (count) store.setDirty(true); 
 // always show final message when tiddlers were actually imported
 if (!quiet||count) displayMessage(&quot;Imported &quot;,count,&quot; tiddler&quot;,(count!=1?&quot;s&quot;:&quot;&quot;),&quot; from &quot;,src);
}
//}}}

// // ''REPORT GENERATOR''

//{{{
function importReport(quiet)
{
 if (!config.macros.importTiddlers.inbound) return;
 // DEBUG alert('importReport: start');

 // if import was not completed, the Ask panel will still be open... close it now.
 var askpanel=document.getElementById('importAskPanel'); if (askpanel) askpanel.style.display='none'; 
 // get the alphasorted list of tiddlers
 var tiddlers = config.macros.importTiddlers.inbound;
 tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] &lt; b['title']) ? -1 : ,1; });
 // gather the statistics
 var count=tiddlers.length;
 var added=0; var replaced=0; var renamed=0; var skipped=0; var merged=0;
 for (var t=0; t&lt;count; t,,)
 if (tiddlers[t].status)
 {
 if (tiddlers[t].status=='added') added,,;
 if (tiddlers[t].status.substr(0,7)=='skipped') skipped,,;
 if (tiddlers[t].status.substr(0,6)=='rename') renamed,,;
 if (tiddlers[t].status.substr(0,7)=='replace') replaced,,;
 if (tiddlers[t].status.substr(0,6)=='merged') merged,,;
 }
 var omitted=count-(added,replaced,renamed,skipped,merged);
 // DEBUG alert('stats done: ',count,' total, ',added,' added, ',skipped,' skipped, ',renamed,' renamed, ',replaced,' replaced, ',merged,' merged');
 // skip the report if nothing was imported
 if (added,replaced,renamed,merged==0) return;
 // skip the report if not desired by user
 if (!config.options.chkImportReport) {
 // reset status flags
 for (var t=0; t&lt;count; t,,) config.macros.importTiddlers.inbound[t].status=&quot;&quot;;
 // refresh display since tiddlers have been imported
 store.notifyAll();
 // quick message area summary report
 var msg=(added,replaced,renamed,merged),' of ',count,' tiddler',((count!=1)?'s':&quot;&quot;);
 msg,=' imported from ',config.macros.importTiddlers.src.replace(/\\/g,'/')
 displayMessage(msg);
 return;
 }
 // create the report tiddler (if not already present)
 var tiddler = store.getTiddler('ImportedTiddlers');
 if (!tiddler) // create new report tiddler if it doesn't exist
 {
 tiddler = new Tiddler();
 tiddler.title = 'ImportedTiddlers';
 tiddler.text = &quot;&quot;;
 }
 // format the report header
 var now = new Date();
 var newText = &quot;&quot;;
 newText ,= &quot;On &quot;,now.toLocaleString(),&quot;, &quot;,config.options.txtUserName,&quot; imported tiddlers from\n&quot;;
 newText ,= &quot;[[&quot;,config.macros.importTiddlers.src,&quot;|&quot;,config.macros.importTiddlers.src,&quot;]]:\n&quot;;
 newText ,= &quot;&lt;&quot;,&quot;&lt;&quot;,&quot;&lt;\n&quot;;
 newText ,= &quot;Out of &quot;,count,&quot; tiddler&quot;,((count!=1)?&quot;s &quot;:&quot; &quot;),&quot; in {{{&quot;,config.macros.importTiddlers.src.replace(/\\/g,'/'),&quot;}}}:\n&quot;;
 if (added,renamed&gt;0)
 newText ,= (added,renamed),&quot; new tiddler&quot;,(((added,renamed)!=1)?&quot;s were&quot;:&quot; was&quot;),&quot; added to your document.\n&quot;;
 if (merged&gt;0)
 newText ,= merged,&quot; tiddler&quot;,((merged!=1)?&quot;s were&quot;:&quot; was&quot;),&quot; merged with &quot;,((merged!=1)?&quot;&quot;:&quot;an &quot;),&quot;existing tiddler&quot;,((merged!=1)?&quot;s&quot;:&quot;&quot;),&quot;.\n&quot;; 
 if (replaced&gt;0)
 newText ,= replaced,&quot; existing tiddler&quot;,((replaced!=1)?&quot;s were&quot;:&quot; was&quot;),&quot; replaced.\n&quot;; 
 if (skipped&gt;0)
 newText ,= skipped,&quot; tiddler&quot;,((skipped!=1)?&quot;s were&quot;:&quot; was&quot;),&quot; skipped after asking.\n&quot;; 
 if (omitted&gt;0)
 newText ,= omitted,&quot; tiddler&quot;,((omitted!=1)?&quot;s&quot;:&quot;&quot;),((omitted!=1)?&quot; were&quot;:&quot; was&quot;),&quot; not imported.\n&quot;;
 if (config.macros.importTiddlers.addTags &amp;&amp; config.macros.importTiddlers.newTags.trim().length)
 newText ,= &quot;imported tiddlers were tagged with: \&quot;&quot;,config.macros.importTiddlers.newTags,&quot;\&quot;\n&quot;;
 // output the tiddler detail and reset status flags
 for (var t=0; t&lt;count; t,,)
 if (tiddlers[t].status!=&quot;&quot;)
 {
 newText ,= &quot;#[&quot;,&quot;[&quot;,tiddlers[t].title,&quot;]&quot;,&quot;]&quot;;
 newText ,= ((tiddlers[t].status!=&quot;added&quot;)?(&quot;^^\n&quot;,tiddlers[t].status,&quot;^^&quot;):&quot;&quot;),&quot;\n&quot;;
 config.macros.importTiddlers.inbound[t].status=&quot;&quot;;
 }
 newText ,= &quot;&lt;&quot;,&quot;&lt;&quot;,&quot;&lt;\n&quot;;
 // output 'discard report' link
 newText ,= &quot;&lt;html&gt;&lt;input type=\&quot;button\&quot; href=\&quot;javascript:;\&quot; &quot;;
 newText ,= &quot;onclick=\&quot;story.closeTiddler('&quot;,tiddler.title,&quot;'); store.deleteTiddler('&quot;,tiddler.title,&quot;');\&quot; &quot;;
 newText ,= &quot;value=\&quot;discard report\&quot;&gt;&lt;/html&gt;&quot;;
 // update the ImportedTiddlers content and show the tiddler
 tiddler.text = newText,((tiddler.text!=&quot;&quot;)?'\n----\n':&quot;&quot;),tiddler.text;
 tiddler.modifier = config.options.txtUserName;
 tiddler.modified = new Date();
 store.addTiddler(tiddler);
 if (!quiet) story.displayTiddler(null,&quot;ImportedTiddlers&quot;,1,null,null,false);
 story.refreshTiddler(&quot;ImportedTiddlers&quot;,1,true);
 // refresh the display
 store.notifyAll();
}
//}}}

// // ''INTERFACE DEFINITION''

// // Handle link click to create/show/hide control panel
//{{{
function onClickImportMenu(e)
{
 if (!e) var e = window.event;
 var parent=resolveTarget(e).parentNode;
 var panel = document.getElementById(&quot;importPanel&quot;);
 if (panel==undefined || panel.parentNode!=parent)
 panel=createImportPanel(parent);
 var isOpen = panel.style.display==&quot;block&quot;;
 if(config.options.chkAnimate)
 anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,&quot;none&quot;));
 else
 panel.style.display = isOpen ? &quot;none&quot; : &quot;block&quot; ;
 e.cancelBubble = true;
 if (e.stopPropagation) e.stopPropagation();
 return(false);
}
//}}}

// // Create control panel: HTML, CSS, register for notification
//{{{
function createImportPanel(place) {
 var panel=document.getElementById(&quot;importPanel&quot;);
 if (panel) { panel.parentNode.removeChild(panel); }
 setStylesheet(config.macros.importTiddlers.css,&quot;importTiddlers&quot;);
 panel=createTiddlyElement(place,&quot;span&quot;,&quot;importPanel&quot;,null,null)
 panel.innerHTML=config.macros.importTiddlers.html;
 store.addNotification(null,refreshImportList); // refresh listbox after every tiddler change
 refreshImportList();
 return panel;
}
//}}}

// // CSS
//{{{
config.macros.importTiddlers.css = '\
#importPanel {\
 display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\
 padding: 0.5em; margin:0em; text-align:left; font-size: 8pt;\
 background-color: #eee; color:#000000; \
 border:1px solid black; border-bottom-width: 3px; border-right-width: 3px; -moz-border-radius:1em;\
}\
#importPanel a { color:#009; }\
#importPanel input { width: 98%; margin: 1px; font-size:8pt; }\
#importPanel select { width: 98%; margin: 1px; font-size:8pt; }\
#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\
#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\
#importAskPanel { display:none; margin:0.5em 0em 0em 0em; }\
';
//}}}

// // HTML
//{{{
config.macros.importTiddlers.html = '\
&lt;span style=&quot;float:left; padding:1px; white-space:nowrap&quot;&gt;\
 import from source document\
&lt;/span&gt;\
&lt;span style=&quot;float:right; padding:1px; white-space:nowrap&quot;&gt;\
 &lt;input type=checkbox id=&quot;chkImportReport&quot; checked style=&quot;height:1em; width:auto&quot;\
 onClick=&quot;config.options[\'chkImportReport\']=this.checked;&quot;&gt;create a report\
&lt;/span&gt;\
&lt;input type=&quot;file&quot; id=&quot;fileImportSource&quot; size=56\
 onKeyUp=&quot;config.macros.importTiddlers.src=this.value&quot;\
 onChange=&quot;config.macros.importTiddlers.src=this.value;&quot;&gt;\
&lt;span style=&quot;float:left; padding:1px; white-space:nowrap&quot;&gt;\
 select:\
 &lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectAll&quot;\
 onclick=&quot;onClickImportButton(this)&quot; title=&quot;select all tiddlers&quot;&gt;\
 &amp;nbsp;all&amp;nbsp;&lt;/a&gt;\
 &lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectNew&quot;\
 onclick=&quot;onClickImportButton(this)&quot; title=&quot;select tiddlers not already in destination document&quot;&gt;\
 &amp;nbsp;added&amp;nbsp;&lt;/a&gt; \
 &lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectChanges&quot;\
 onclick=&quot;onClickImportButton(this)&quot; title=&quot;select tiddlers that have been updated in source document&quot;&gt;\
 &amp;nbsp;changes&amp;nbsp;&lt;/a&gt; \
 &lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectDifferences&quot;\
 onclick=&quot;onClickImportButton(this)&quot; title=&quot;select tiddlers that have been added or are different from existing tiddlers&quot;&gt;\
 &amp;nbsp;differences&amp;nbsp;&lt;/a&gt; \
 &lt;a href=&quot;JavaScript:;&quot; id=&quot;importToggleFilter&quot;\
 onclick=&quot;onClickImportButton(this)&quot; title=&quot;show/hide selection filter&quot;&gt;\
 &amp;nbsp;filter&amp;nbsp;&lt;/a&gt; \
&lt;/span&gt;\
&lt;span style=&quot;float:right; padding:1px; white-space:nowrap&quot;&gt;\
 &lt;a href=&quot;JavaScript:;&quot; id=&quot;importListSmaller&quot;\
 onclick=&quot;onClickImportButton(this)&quot; title=&quot;reduce list size&quot;&gt;\
 &amp;nbsp;&amp;#150;&amp;nbsp;&lt;/a&gt;\
 &lt;a href=&quot;JavaScript:;&quot; id=&quot;importListLarger&quot;\
 onclick=&quot;onClickImportButton(this)&quot; title=&quot;increase list size&quot;&gt;\
 &amp;nbsp;,&amp;nbsp;&lt;/a&gt;\
 &lt;a href=&quot;JavaScript:;&quot; id=&quot;importListMaximize&quot;\
 onclick=&quot;onClickImportButton(this)&quot; title=&quot;maximize/restore list size&quot;&gt;\
 &amp;nbsp;=&amp;nbsp;&lt;/a&gt;\
&lt;/span&gt;\
&lt;select id=&quot;importList&quot; size=8 multiple\
 onchange=&quot;setTimeout(\'refreshImportList(\',this.selectedIndex,\')\',1)&quot;&gt;\
 &lt;!-- NOTE: delay refresh so list is updated AFTER onchange event is handled --&gt;\
&lt;/select&gt;\
&lt;input type=checkbox id=&quot;chkAddTags&quot; checked style=&quot;height:1em; width:auto&quot;\
 onClick=&quot;config.macros.importTiddlers.addTags=this.checked;&quot;&gt;add new tags &amp;nbsp;\
&lt;input type=checkbox id=&quot;chkImportTags&quot; checked style=&quot;height:1em; width:auto&quot;\
 onClick=&quot;config.macros.importTiddlers.importTags=this.checked;&quot;&gt;import source tags &amp;nbsp;\
&lt;input type=checkbox id=&quot;chkKeepTags&quot; checked style=&quot;height:1em; width:auto&quot;\
 onClick=&quot;config.macros.importTiddlers.keepTags=this.checked;&quot;&gt;keep existing tags\
&lt;input type=text id=&quot;txtNewTags&quot; size=15 onKeyUp=&quot;config.macros.importTiddlers.newTags=this.value&quot; autocomplete=off&gt;\
&lt;div align=center&gt;\
 &lt;input type=button id=&quot;importOpen&quot; class=&quot;importButton&quot; style=&quot;width:32%&quot; value=&quot;open&quot;\
 onclick=&quot;onClickImportButton(this)&quot;&gt;\
 &lt;input type=button id=&quot;importStart&quot; class=&quot;importButton&quot; style=&quot;width:32%&quot; value=&quot;import&quot;\
 onclick=&quot;onClickImportButton(this)&quot;&gt;\
 &lt;input type=button id=&quot;importClose&quot; class=&quot;importButton&quot; style=&quot;width:32%&quot; value=&quot;close&quot;\
 onclick=&quot;onClickImportButton(this)&quot;&gt;\
&lt;/div&gt;\
&lt;div id=&quot;importAskPanel&quot;&gt;\
 tiddler already exists:\
 &lt;input type=text id=&quot;importNewTitle&quot; size=15 autocomplete=off&quot;&gt;\
 &lt;div align=center&gt;\
 &lt;input type=button id=&quot;importSkip&quot; class=&quot;importButton&quot; style=&quot;width:23%&quot; value=&quot;skip&quot;\
 onclick=&quot;onClickImportButton(this)&quot;&gt;\
 &lt;input type=button id=&quot;importRename&quot; class=&quot;importButton&quot; style=&quot;width:23%&quot; value=&quot;rename&quot;\
 onclick=&quot;onClickImportButton(this)&quot;&gt;\
 &lt;input type=button id=&quot;importMerge&quot; class=&quot;importButton&quot; style=&quot;width:23%&quot; value=&quot;merge&quot;\
 onclick=&quot;onClickImportButton(this)&quot;&gt;\
 &lt;input type=button id=&quot;importReplace&quot; class=&quot;importButton&quot; style=&quot;width:23%&quot; value=&quot;replace&quot;\
 onclick=&quot;onClickImportButton(this)&quot;&gt;\
 &lt;/div&gt;\
&lt;/div&gt;\
';
//}}}

// // refresh listbox
//{{{
function refreshImportList(selectedIndex)
{
 var theList = document.getElementById(&quot;importList&quot;);
 if (!theList) return;
 // if nothing to show, reset list content and size
 if (!config.macros.importTiddlers.inbound) 
 {
 while (theList.length &gt; 0) { theList.options[0] = null; }
 theList.options[0]=new Option('please open a document...',&quot;&quot;,false,false);
 theList.size=config.macros.importTiddlers.listsize;
 return;
 }
 // get the sort order
 if (!selectedIndex) selectedIndex=0;
 if (selectedIndex==0) config.macros.importTiddlers.sort='title'; // heading
 if (selectedIndex==1) config.macros.importTiddlers.sort='title';
 if (selectedIndex==2) config.macros.importTiddlers.sort='modified';
 if (selectedIndex==3) config.macros.importTiddlers.sort='tags';
 if (selectedIndex&gt;3) {
 // display selected tiddler count
 for (var t=0,count=0; t &lt; theList.options.length; t,,) count,=(theList.options[t].selected&amp;&amp;theList.options[t].value!=&quot;&quot;)?1:0;
 clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));
 return; // no refresh needed
 }

 // get the alphasorted list of tiddlers (optionally, filter out unchanged tiddlers)
 var tiddlers=config.macros.importTiddlers.inbound;
 tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] &lt; b['title']) ? -1 : ,1; });
 // clear current list contents
 while (theList.length &gt; 0) { theList.options[0] = null; }
 // add heading and control items to list
 var i=0;
 var indent=String.fromCharCode(160),String.fromCharCode(160);
 theList.options[i,,]=new Option(tiddlers.length,' tiddler',((tiddlers.length!=1)?'s are':' is'),' in the document',&quot;&quot;,false,false);
 theList.options[i,,]=new Option(((config.macros.importTiddlers.sort==&quot;title&quot; )?&quot;&gt;&quot;:indent),' [by title]',&quot;&quot;,false,false);
 theList.options[i,,]=new Option(((config.macros.importTiddlers.sort==&quot;modified&quot;)?&quot;&gt;&quot;:indent),' [by date]',&quot;&quot;,false,false);
 theList.options[i,,]=new Option(((config.macros.importTiddlers.sort==&quot;tags&quot;)?&quot;&gt;&quot;:indent),' [by tags]',&quot;&quot;,false,false);
 // output the tiddler list
 switch(config.macros.importTiddlers.sort)
 {
 case &quot;title&quot;:
 for(var t = 0; t &lt; tiddlers.length; t,,)
 theList.options[i,,] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
 break;
 case &quot;modified&quot;:
 // sort descending for newest date first
 tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] &gt; b['modified']) ? -1 : ,1; });
 var lastSection = &quot;&quot;;
 for(var t = 0; t &lt; tiddlers.length; t,,) {
 var tiddler = tiddlers[t];
 var theSection = tiddler.modified.toLocaleDateString();
 if (theSection != lastSection) {
 theList.options[i,,] = new Option(theSection,&quot;&quot;,false,false);
 lastSection = theSection;
 }
 theList.options[i,,] = new Option(indent,indent,tiddler.title,tiddler.title,false,false);
 }
 break;
 case &quot;tags&quot;:
 var theTitles = {}; // all tiddler titles, hash indexed by tag value
 var theTags = new Array();
 for(var t=0; t&lt;tiddlers.length; t,,) {
 var title=tiddlers[t].title;
 var tags=tiddlers[t].tags;
 for(var s=0; s&lt;tags.length; s,,) {
 if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
 theTitles[tags[s]].push(title);
 }
 }
 theTags.sort();
 for(var tagindex=0; tagindex&lt;theTags.length; tagindex,,) {
 var theTag=theTags[tagindex];
 theList.options[i,,]=new Option(theTag,&quot;&quot;,false,false);
 for(var t=0; t&lt;theTitles[theTag].length; t,,)
 theList.options[i,,]=new Option(indent,indent,theTitles[theTag][t],theTitles[theTag][t],false,false);
 }
 break;
 }
 theList.selectedIndex=selectedIndex; // select current control item
 if (theList.size&lt;config.macros.importTiddlers.listsize) theList.size=config.macros.importTiddlers.listsize;
 if (theList.size&gt;theList.options.length) theList.size=theList.options.length;
}
//}}}

// // Control interactions
//{{{
function onClickImportButton(which)
{
 // DEBUG alert(which.id);
 var theList = document.getElementById('importList');
 if (!theList) return;
 var thePanel = document.getElementById('importPanel');
 var theAskPanel = document.getElementById('importAskPanel');
 var theNewTitle = document.getElementById('importNewTitle');
 var count=0;
 switch (which.id)
 {
 case 'fileImportSource':
 case 'importOpen': // load import source into hidden frame
 importReport(); // if an import was in progress, generate a report
 config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer
 refreshImportList(); // reset/resize the listbox
 if (config.macros.importTiddlers.src==&quot;&quot;) break;
 // Load document into hidden iframe so we can read it's DOM and fill the list
 loadImportFile(config.macros.importTiddlers.src,&quot;all&quot;,null,null,function(src,filter,quiet,ask){window.refreshImportList(0);});
 break;
 case 'importSelectAll': // select all tiddler list items (i.e., not headings)
 importReport(); // if an import was in progress, generate a report
 for (var t=0,count=0; t &lt; theList.options.length; t,,) {
 if (theList.options[t].value==&quot;&quot;) continue;
 theList.options[t].selected=true;
 count,,;
 }
 clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));
 break;
 case 'importSelectNew': // select tiddlers not in current document
 importReport(); // if an import was in progress, generate a report
 for (var t=0,count=0; t &lt; theList.options.length; t,,) {
 theList.options[t].selected=false;
 if (theList.options[t].value==&quot;&quot;) continue;
 theList.options[t].selected=!store.tiddlerExists(theList.options[t].value);
 count,=theList.options[t].selected?1:0;
 }
 clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));
 break;
 case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers
 importReport(); // if an import was in progress, generate a report
 for (var t=0,count=0; t &lt; theList.options.length; t,,) {
 theList.options[t].selected=false;
 if (theList.options[t].value==&quot;&quot;||!store.tiddlerExists(theList.options[t].value)) continue;
 for (var i=0; i&lt;config.macros.importTiddlers.inbound.length; i,,) // find matching inbound tiddler
 { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }
 theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified&gt;0); // updated tiddler
 count,=theList.options[t].selected?1:0;
 }
 clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));
 break;
 case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers
 importReport(); // if an import was in progress, generate a report
 for (var t=0,count=0; t &lt; theList.options.length; t,,) {
 theList.options[t].selected=false;
 if (theList.options[t].value==&quot;&quot;) continue;
 if (!store.tiddlerExists(theList.options[t].value)) { theList.options[t].selected=true; count,,; continue; }
 for (var i=0; i&lt;config.macros.importTiddlers.inbound.length; i,,) // find matching inbound tiddler
 { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }
 theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified!=0); // changed tiddler
 count,=theList.options[t].selected?1:0;
 }
 clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));
 break;
 case 'importToggleFilter': // show/hide filter
 case 'importFilter': // apply filter
 alert(&quot;coming soon!&quot;);
 break;
 case 'importStart': // initiate the import processing
 importReport(); // if an import was in progress, generate a report
 config.macros.importTiddlers.index=0;
 config.macros.importTiddlers.index=importTiddlers(0);
 importStopped();
 break;
 case 'importClose': // unload imported tiddlers or hide the import control panel
 // if imported tiddlers not loaded, close the import control panel
 if (!config.macros.importTiddlers.inbound) { thePanel.style.display='none'; break; }
 importReport(); // if an import was in progress, generate a report
 config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer
 refreshImportList(); // reset/resize the listbox
 break;
 case 'importSkip': // don't import the tiddler
 var theItem = theList.options[config.macros.importTiddlers.index];
 for (var j=0;j&lt;config.macros.importTiddlers.inbound.length;j,,)
 if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;
 var theImported = config.macros.importTiddlers.inbound[j];
 theImported.status='skipped after asking'; // mark item as skipped
 theAskPanel.style.display='none';
 config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index,1); // resume with NEXT item
 importStopped();
 break;
 case 'importRename': // change name of imported tiddler
 var theItem = theList.options[config.macros.importTiddlers.index];
 for (var j=0;j&lt;config.macros.importTiddlers.inbound.length;j,,)
 if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;
 var theImported = config.macros.importTiddlers.inbound[j];
 theImported.status = 'renamed from ',theImported.title; // mark item as renamed
 theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title
 theItem.value = theNewTitle.value; // change the listbox item text
 theItem.text = theNewTitle.value; // change the listbox item text
 theAskPanel.style.display='none';
 config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item
 importStopped();
 break;
 case 'importMerge': // join existing and imported tiddler content
 var theItem = theList.options[config.macros.importTiddlers.index];
 for (var j=0;j&lt;config.macros.importTiddlers.inbound.length;j,,)
 if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;
 var theImported = config.macros.importTiddlers.inbound[j];
 var theExisting = store.getTiddler(theItem.value);
 var theText = theExisting.text,'\n----\n^^merged from: [[',config.macros.importTiddlers.src,'#',theItem.value,'|',config.macros.importTiddlers.src,'#',theItem.value,']]^^\n^^',theImported.modified.toLocaleString(),' by ',theImported.modifier,'^^\n',theImported.text;
 var theDate = new Date();
 var theTags = theExisting.getTags(),' ',theImported.getTags();
 theImported.set(null,theText,null,theDate,theTags);
 theImported.status = 'merged with ',theExisting.title; // mark item as merged
 theImported.status ,= ' - ',theExisting.modified.formatString(&quot;MM/DD/YYYY hh:mm:ss&quot;);
 theImported.status ,= ' by ',theExisting.modifier;
 theAskPanel.style.display='none';
 config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with this item
 importStopped();
 break;
 case 'importReplace': // substitute imported tiddler for existing tiddler
 var theItem = theList.options[config.macros.importTiddlers.index];
 for (var j=0;j&lt;config.macros.importTiddlers.inbound.length;j,,)
 if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;
 var theImported = config.macros.importTiddlers.inbound[j];
 var theExisting = store.getTiddler(theItem.value);
 theImported.status = 'replaces ',theExisting.title; // mark item for replace
 theImported.status ,= ' - ',theExisting.modified.formatString(&quot;MM/DD/YYYY hh:mm:ss&quot;);
 theImported.status ,= ' by ',theExisting.modifier;
 theAskPanel.style.display='none';
 config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item
 importStopped();
 break;
 case 'importListSmaller': // decrease current listbox size, minimum=5
 if (theList.options.length==1) break;
 theList.size-=(theList.size&gt;5)?1:0;
 config.macros.importTiddlers.listsize=theList.size;
 break;
 case 'importListLarger': // increase current listbox size, maximum=number of items in list
 if (theList.options.length==1) break;
 theList.size,=(theList.size&lt;theList.options.length)?1:0;
 config.macros.importTiddlers.listsize=theList.size;
 break;
 case 'importListMaximize': // toggle listbox size between current and maximum
 if (theList.options.length==1) break;
 theList.size=(theList.size==theList.options.length)?config.macros.importTiddlers.listsize:theList.options.length;
 break;
 }
}
//}}}

// // re-entrant processing for handling import with interactive collision prompting
//{{{
function importTiddlers(startIndex)
{
 if (!config.macros.importTiddlers.inbound) return -1;

 var theList = document.getElementById('importList');
 if (!theList) return;
 var t;
 // if starting new import, reset import status flags
 if (startIndex==0)
 for (var t=0;t&lt;config.macros.importTiddlers.inbound.length;t,,)
 config.macros.importTiddlers.inbound[t].status=&quot;&quot;;
 for (var i=startIndex; i&lt;theList.options.length; i,,)
 {
 // if list item is not selected or is a heading (i.e., has no value), skip it
 if ((!theList.options[i].selected) || ((t=theList.options[i].value)==&quot;&quot;))
 continue;
 for (var j=0;j&lt;config.macros.importTiddlers.inbound.length;j,,)
 if (config.macros.importTiddlers.inbound[j].title==t) break;
 var theImported = config.macros.importTiddlers.inbound[j];
 var theExisting = store.getTiddler(theImported.title);
 // avoid redundant import for tiddlers that are listed multiple times (when 'by tags')
 if (theImported.status==&quot;added&quot;)
 continue;
 // don't import the &quot;ImportedTiddlers&quot; history from the other document...
 if (theImported.title=='ImportedTiddlers')
 continue;
 // if tiddler exists and import not marked for replace or merge, stop importing
 if (theExisting &amp;&amp; (theImported.status.substr(0,7)!=&quot;replace&quot;) &amp;&amp; (theImported.status.substr(0,5)!=&quot;merge&quot;))
 return i;
 // assemble tags (remote , existing , added)
 var newTags = &quot;&quot;;
 if (config.macros.importTiddlers.importTags)
 newTags,=theImported.getTags() // import remote tags
 if (config.macros.importTiddlers.keepTags &amp;&amp; theExisting)
 newTags,=&quot; &quot;,theExisting.getTags(); // keep existing tags
 if (config.macros.importTiddlers.addTags &amp;&amp; config.macros.importTiddlers.newTags.trim().length)
 newTags,=&quot; &quot;,config.macros.importTiddlers.newTags; // add new tags
 theImported.set(null,null,null,null,newTags.trim());
 // set the status to 'added' (if not already set by the 'ask the user' UI)
 theImported.status=(theImported.status==&quot;&quot;)?'added':theImported.status;
 // do the import!
 store.addTiddler(theImported);
 store.setDirty(true);
 }
 return(-1); // signals that we really finished the entire list
}
//}}}

//{{{
function importStopped()
{
 var theList = document.getElementById('importList');
 var theNewTitle = document.getElementById('importNewTitle');
 if (!theList) return;
 if (config.macros.importTiddlers.index==-1)
 importReport(); // import finished... generate the report
 else
 {
 // DEBUG alert('import stopped at: ',config.macros.importTiddlers.index);
 // import collision... show the ask panel and set the title edit field
 document.getElementById('importAskPanel').style.display='block';
 theNewTitle.value=theList.options[config.macros.importTiddlers.index].value;
 }
}
//}}}
]]></description>
        <pubDate>Sun, 12 Mar 2006 09:53:20 -0800</pubDate>
        <category>Nigel Bray phiffer.org.nrb@spamgourmet.com</category>
    </item>
    <item>
        <title>NigelBray</title>
        <description><![CDATA[Contact me by email at [[spamgourmet.com|http://spamgourmet.com]], my user name is nrb.
Anything.nrb sent there will get straight to me.]]></description>
        <pubDate>Sun, 12 Mar 2006 10:08:18 -0800</pubDate>
        <category>Nigel%20Bray%20phiffer.org.nrb@spamgourmet.com</category>
    </item>
    <item>
        <title>MonkeyPirateTiddlyWiki</title>
        <description/>
        <pubDate>Sun, 12 Mar 2006 10:10:02 -0800</pubDate>
        <category>Nigel%20Bray%20phiffer.org.nrb@spamgourmet.com</cate