Welcome to TiddlyWiki by Jeremy Ruston, Copyright © 2005 Osmosoft Limited
HelloThere TiddlyWiki MyTiddlyWikiVariant NewFeatures UsingThisSite ReusingThisSite DownloadSoftware\n\n© [[osmosoft|http://www.osmosoft.com]] 2005\n+2¢ : [[christianhauck|http://www.christianhauck.net]]
LatestAndGreatestNews MigrationPlan
In this version of April 13, 2005: A number of parameters ar now possible in the url for ExternalControl: not only PermaLink (one tiddler e.g. #HelloThere) and PermaView (several Tiddlers e.g. #HelloThere TiddlyWiki ), but also a searchstring (PermaSearch e.g. #?text or #*text ; PermaSearch is not really a good name for that ; #? does not work on my MS IE explorer, but in Firefox), TiddlerGroups (e.g. #_Jeremys Original) or a date ( e.g. #!20050409 ; uses DailyTiddlers functionality).
April 10, 2005: the new DateTab is similar to a calendar, it might be good for Blog-like use of TiddlyWiki. DailyTiddlers: a functionality to click on the date in the Timeline Tab and display all tiddlers from that day.
ExternalControl of TiddlyWiki via parameters in the url: not only PermaLink (one tiddler e.g. #HelloThere) and PermaView (several Tiddlers e.g. #HelloThere TiddlyWiki ), but also a searchstring (PermaSearch e.g. #?text or #*text ; PermaSearch is not really a good name for that; #? does not work on my MS IE explorer, but in Firefox), TiddlerGroups (e.g. #_Jeremys Original) or a date ( e.g. #!20050409 ; uses DailyTiddlers functionality).Examples which will open in new windows: http://www.christianhauck.net/html/14300.html#HelloThere%20TiddlyWiki ; http://www.christianhauck.net/html/14300.html#?text ; http://www.christianhauck.net/html/14300.html#*text ; http://www.christianhauck.net/html/14300.html#_Jeremys%20Original ; http://www.christianhauck.net/html/14300.html#!20050409 .
PermaSearch would ne similar to Permalink or PermaView, but instead of understanding the extra text in the url as a TiddlerTitle, it should be used as a search string, and all Tiddlers containing that text should be displayed.
DailyTiddlers: click on the date in the Timeline Tab and display all tiddlers from that day. Also used in the DateTab. In MS IE, unfortunately, the black font function for the text of the DailyTiddlers in the DateTab does not work. In Firefox, it's fine.
the DateTab is similar to a calendar. By year, then by month, all days are shown where tiddlers have been edited. Click on the day to show all these tiddlers. This is the new DailyTiddlers functionality, which, by the way, is also available from the TimelineTab.
Similar to DefaultTiddlers or MainMenu, but generic: Tiddlers (name starts with underscore) which contain names of other tiddlers. When clicked in the groups tab, all tiddlers mentioned in the content of the respective Tiddler are displayed at once. When clicked from the Time Tab (I shortened Timeline to Time) or All Tab, it behaves as usual, and can be editied. Similar also to PermaView, but internally, not als an external url.
Ironically, delaying the start of the search using a timeout makes it faster. Otherwise, with many tiddlers present, the IncrementalSearch starting at keyup of the third letter would delay input of futher letters and slow down the search.
WikiWord EmailMe SiteTitle SiteSubtitle SkeletonInTheCloset WikiWikiWeb TiddlyWikiDev
To make a tiddler that doesn't have a WikiWord as it's name, you can enclose the name in [[double square brackets]] - edit this tiddler to see an example. After saving the tiddler you can then click on the link to create the new tiddler. NonWikiWordLinks permits tiddlers to be created with names that are made from character sets that don't have upper and lower case. Here is a [[non wiki word link]].
Now it does exist. The non wiki word link. The [[non wiki word link]]. An example for NonWikiWordLinks.
Somewhat tricky. I'd prefer to adjust it.\n* the new Tab\n* the new function to create the button,\n* the new event handler\n* the new function itself:\n\n!! a new the tab for the TiddlerGroups\n// Groups tab\nfunction refreshTabGroups()\n {\n // Get names and dates of all tiddlers from the store\n var allTiddlers = new Array(); // Will be an array of 2-entry arrays, where entry 0 = name, 1 = date\n var storeNodes = document.getElementById("storeArea").childNodes;\n for (var t = 0; t < storeNodes.length; t++)\n {\n var n = storeNodes[t];\n if(n.id)\n if(n.id.substr(0,6) == "store_") // ChristianHauck from 5 to 6 and added "_" : TiddlerGroups start with underscore(workaround), improve later\n allTiddlers.push(new Array(n.id.substr(5),n.getAttribute("modified")));\n }\n // Sort the tiddlers by name\n allTiddlers.sort(function (a,b) { if(a[0] == b[0]) return(0); else return (a[0] > b[0]) ? +1 : -1; });\n // Delete any existing entries in the 'all' list\n var place = document.getElementById("sidebarContent");\n while(place.firstChild != null)\n place.removeChild(place.firstChild);\n // Output the links: its TiddlerGroupLink not TiddlerLink\n for (t = 0; t < allTiddlers.length; t++)\n {\n createTiddlerGroupLink(place,allTiddlers[t][0],true);\n place.appendChild(document.createElement("br"));\n }\n}\n\n\n!! a new function to create Tiddlergrouplinks\nfunction createTiddlerGroupLink(place,title,includeText)\n{\n var btn;\n var text = includeText ? title : null;\n var subTitle = getTiddlerSubtitle(title);\n var theClass = subTitle ? "tiddlyLinkExisting" : "tiddlyLinkNonExisting";\n if(!subTitle)\n subTitle = title + " doesn't yet exist";\n var btn = createTiddlyButton(place,text,subTitle,onClickTiddlerGroupLink);\n btn.className = theClass;\n btn.setAttribute("TiddlerGroupLink",title);\n return(btn);\n}\n\n\n!! a new event handler for clicking on the TiddlerGroupLink\nfunction onClickTiddlerGroupLink(e)\n{\n if (!e) var e = window.event;\n hideMessage();\n // Get the text of the link\n var title = this.getAttribute("TiddlerGroupLink");\n // Display that tiddler\n restartTiddlerGroup(title);\n}\n\n!! a new function to show all tiddlers in a tiddler group\nfunction restartTiddlerGroup(ThisTiddlerGroup)\n{\n closeAllTiddlers();\n hideMessage();\n refreshAll();\n onClearSearch();\n displayTiddlers(null,getTiddlerText(ThisTiddlerGroup),1,null,null);\n displayMessage(ThisTiddlerGroup);\n searchText.focus();\n}\n\n
in in the style area\n #titleLine \n!!!! change from:\npadding: 5em 1em 1em 1em;\n!!!! change to:\npadding: 1em;
FINISHED. Change the code and add some code\n\n!! in the style area. \n!!!! change from:\n.tiddler {\n padding: 0em 0em 0em 0em;\n}\n!!!! change to:\n.tiddler {\n padding: 0em 0em 0em 0em;\n background-color: #ffffff;\n}\n\n.tiddlerSelected {\n padding: 0em 0em 0em 0em;\n background-color: #f0fcd0;\n}\n\n!! in the Function Area\n!!!! change from:\nfunction selectTiddler(title)\n{\n var e = document.getElementById("toolbar" + title);\n if(e != null)\n e.style.visibility = "visible";\n}\n\n!!!! change to:\nfunction selectTiddler(title)\n{\n // Change the background colour\n var e = document.getElementById("tiddler" + title);\n if(e != null)\n e.className = "tiddlerSelected";\n // Make the toolbar visible\n e = document.getElementById("toolbar" + title);\n if(e != null)\n e.style.visibility = "visible";\n}\n\n!!!! change from\nfunction deselectTiddler(title)\n{\n e = document.getElementById("toolbar" + title);\n if(e != null)\n e.style.visibility = "hidden";\n}\n!!!! change to\nfunction deselectTiddler(title)\n{\n // Change the background colour\n var e = document.getElementById("tiddler" + title);\n if(e != null)\n e.className = "tiddler";\n // Make the toolbar invisible\n e = document.getElementById("toolbar" + title);\n if(e != null)\n e.style.visibility = "hidden";\n}\n
FINISHED, BUT: #_ and #! depend on these functionalities ChMig11 and ChMig12\n\n!! In main(),\n!!! change from:\n var start = getTiddlerText("DefaultTiddlers");\n if(window.location.hash)\n displayTiddlers(null,decodeURI(window.location.hash.substr(1)),1,null,null);\n else if(start)\n displayTiddlers(null,start,1,null,null);\n!!!! change to:\n // check for parameters in the URI\n if(window.location.hash) // different cases for parameters in URI: # #? #* #_ #!\n {\n var theSwitch = decodeURI(window.location.hash.substr(1,1));\n switch(theSwitch)\n {\n case "?": // #? triggers a search of the rest of the URI\n {\n var theSearchText = decodeURI(window.location.hash.substr(2));\n searchTiddlers(decodeURI(window.location.hash.substr(2)),null);\n var text = document.getElementById("searchText");\n text.value = theSearchText;\n break;\n }\n case "*": // #? triggers a search of the rest of the URI; for MS IE explorer which does not accept "?"\n {\n var theSearchText = decodeURI(window.location.hash.substr(2));\n searchTiddlers(decodeURI(window.location.hash.substr(2)),null);\n var text = document.getElementById("searchText");\n text.value = theSearchText;\n break;\n }\n case "!": // #! triggers a diplay of Tiddlers for that day in YYYYMMDD format\n showTiddlersPerDay(decodeURI(window.location.hash.substr(2,8)));\n break;\n case "_": // #_ triggers display of the tiddlers in that TiddlerGroup\n {\n var theTiddlerGroup = decodeURI(window.location.hash.substr(1));\n displayTiddlers(null,getTiddlerText(theTiddlerGroup),1,null,null);\n displayMessage(theTiddlerGroup);\n }\n break;\n default: // # triggers display of the tiddlers whose tiddler titles follow\n displayTiddlers(null,decodeURI(window.location.hash.substr(1)),1,null,null);\n break;\n } // switch\n } // if window location hash\n else displayTiddlers(null,getTiddlerText("DefaultTiddlers"),1,null,null);\n searchText.focus();\n\nnote: The last line \n searchText.focus();\nis actually ChMig05; here is the place where this line has to go
!! add code at the end of function main()\n searchText.focus();\n
FINISHED. Added code at three places:\n* the new button in the body\n* the new event handler\n* and the new function itself \n\n!! In the body, add the button to trigger it (close to the "search" part, but could be anywhere)\n@@color(red):go and get that one line of code by yourself from the source, I have troubles when pasting it here into this tiddler.@@\n\n!! in the scripts part: \n!!! a new event handler for clicking on random\nfunction onRandomTiddler()\n{\n hideMessage(); \n randomTiddler();\n}\n!!! and the new function itself:\n// RandomTiddler\nfunction randomTiddler()\n{\n // Get names and dates of all tiddlers from the store\n var allTiddlers = new Array(); // Will be an array of 2-entry arrays, where entry 0 = name, 1 = date\n var storeNodes = document.getElementById("storeArea").childNodes;\n for (var t = 0; t < storeNodes.length; t++)\n {\n var n = storeNodes[t];\n if(n.id)\n if(n.id.substr(0,5) == "store")\n allTiddlers.push(new Array(n.id.substr(5),n.getAttribute("modified")));\n }\n // find a random tiddler and output it\n var r = Math.round((allTiddlers.length * Math.random()));\n displayTiddler(null,allTiddlers[r][0],0,null,null,null);\n}\n\n
change code\nIn the body, embed the onSearch in a setTimeout as follows:\n onKeyUp="setTimeout('onSearch()',1500)"\n
My email address is jeremy (at) osmosoft (dot) com
TiddlyWiki
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.
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.
When it loads, TiddlyWiki looks for the names of tiddlers to open as a space-separated list after the # in the URL. If there are no tiddlers in the URL it instead loads the tiddlers named in DefaultTiddlers, one of the SpecialTiddlers.
You can divide a tiddler into\n----\nsections by typing four dashes on a line by themselves
IsaoSonobe's TiddlyWikiPod is a nifty utility for Mac OS X that copies the content of a TiddlyWiki to an iPod where it can be read, and links followed, using the touch wheel. Isao has also added the ability to link to songs from the TiddlyWiki text which enables some interesting applications. At the moment, it only works with the older SecondVersion of TiddlyWiki. It can be found at http://www8.ocn.ne.jp/~sonoisa/TiddlyWikiPod/index.html
!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n
start\n#item1\n#item2\n##item2.1\n##item2.2\n##item2.3\n#item3\n##item3.1\n###item3.1.1\n###item3.1.2\n\nend
Putting TiddlyWiki on a USB thumb drive lets you carry around a SelfContained notebook that you can update wherever there's a reasonably modern computer, whether it's a Mac, Linux or a PC. (To be even more independent you can [[install FireFox on the drive|http://www.mozilla.org/support/firefox/tips#oth_usb]] as well).
Edit this tiddler to see how to create BulletPoints\n* Like this one\n* And this one\n** And this second-level one\n* And a final one
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.
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.
I'm Jeremy Ruston, a technologist based in London. I do consultancy work through my company [[Osmosoft|http://www.osmosoft.com]], as well as pursuing some independent projects like TiddlyWiki.
TiddlyWiki is a spare time project that I'm making available under an OpenSourceLicense. Accordingly, there's no warranty on it, and you can only use it at your own risk. I am interested in hearing about new bugs to add to the rather rapidly growing pile; just EmailMe.
Released in September 2004, the [[first version|firstversion.html]] was pretty basic, weighing in at 52KB.
Released in December 2004, the [[second version|secondversion.html]] of TiddlyWiki grew 50% over the FirstVersion to 76KB. It added IncrementalSearch, the ReferencesButton, the PermaLinkButton, PermaView, CloseAll, SmoothScrolling, an ImprovedSidebar, an animation for the CloseButton and a tiny EasterEgg in homage to Macintosh OS X. It also introduced a new SiteDesign.
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.
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.
Thank you to everybody who has helped me with support and suggestions for TiddlyWiki, but especially IsaoSonobe for his cunning regular expression code, and to my friend RebeccaWelby for the SiteDesign.
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'.
A row of ToolbarButtons appears to the right of a tiddler title when the mouse is hovered over it. The buttons are:\n* ''close'' - close the current tiddler\n* ''edit'' - edit the current tiddler\n* ''permalink'' - puts a link direct to the current tiddler into the address bar\n* ''references'' - displays all the tiddlers that link to the current tiddler\n* ''done'' - save changes to a tiddler being editted\n* ''cancel'' - cancel changes to a tiddler being editted\n* ''delete'' - delete the current tiddler
I'm hoping that after using TiddlyWiki for a while a new WritingStyle will emerge that is appropriate for this medium. Jakob Neilsen wrote an article about [[writing styles|http://www.useit.com/alertbox/980906.html]] for MicroContent back in 1998 that still seems surprisingly relevant.
TiddlyWiki doesn't have a server-side back end at the moment, so when you SaveChanges you're saving the whole document, as you would with Microsoft Word. That means that it is essentially only really a SingleUser thing (unless it gets passed round as a ChainTiddlyWiki). There are several TiddlyWikiAdaptations that //do// have a ServerSide, though.
It's easy to make your own TiddlyWiki that you can publish yourself - see how to SaveChanges for details. If you want to change the layout or the colour scheme, you'll need some basic HTML and CSS knowledge.
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'.\n\nThere are a couple of ways around the problem:\n* save the TiddlyWiki HTML file to a FAT drive (eg a USB thumb drive)\n* open the downloaded file with a text editor and save it again under a different name\n\nIn 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.\n\nThis is all a bit frustrating. An easy alternative is to use FireFox, which seems to do the trick on all platforms.
You can SaveChanges if you're using FireFox or InternetExplorer:\n# if you're using Windows XP you might run into ServicePack2Problems\n# right click on [[this link|#]] and select 'Save link as...' or 'Save target as...'\n** choose where to save the file, and what to call it (but keep the .HTML extension)\n# open the newly downloaded file in your browser\n# click the 'options' button on the right to set your username\n# edit, create and delete the tiddlers you want\n** you can change the SpecialTiddlers to change the SiteTitle and MainMenu etc.\n# click the 'save changes' button on the right to save your changes\n# TiddlyWiki will make a backup copy of the existing file, and then replace it with the new version\n
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.
A TiddlyWiki is like a blog because it's divided up into neat little chunks, but it encourages you to read it by hyperlinking rather than sequentially: if you like, a non-linear blog analogue that binds the individual microcontent items into a cohesive whole. I think that TiddlyWiki represents a novel medium for writing, and will promote it's own distinctive WritingStyle. This is the ThirdVersion of TiddlyWiki, which adds several NewFeatures. There are also several TiddlyWikiAdaptations by other developers based on earlier versions.
I think this feature from the SecondVersion of TiddlyWiki is quite original. It's a button in the right-hand sidebar that sets the browser address bar to a URL embodying all the currently open tiddlers in the order that they are currently shown. To use it, arrange the open tiddlers that you want, click the permaview button, copy the URL from the browser address bar, and then paste it into an email, web page or whatever.
When you type more than three characters in the search box at the upper right, any matching tiddlers are automatically displayed with the text highlighted. There's a couple of minor issues: the highlights don't get removed when you clear the search, and occasionally, on some browsers, keystrokes get missed if you type quickly so you may need to click the 'search' button to manually trigger the search.
TiddlyWiki has been used as the basis of a couple of experiments in hypertext fiction. GinaTrapani created [[Baby Dog Sitter|http://scribbling.net/tiddlywiki-and-non-linear-fiction]] with the FirstVersion of TiddlyWiki, followed by "[[Die, Vampire! Die!|http://www.davidvanwert.com/wiki/dievampiredie.html]]" from DavidVanWert.
The rules governing where a tiddler is displayed sound complicated written down. When you click on a tiddler link within another tiddler, the new one is opened immediately below the current one. If the target tiddler is already open, TiddlyWiki just uses SmoothScrolling to bring it into view. More or less the same thing happens when clicking on a tiddler link within the menu or sidebar, except that the tiddler opens at the top of the page if it is not already open.
Try holding down the alt- or shift-key while clicking on a link to a tiddler, on the 'options' button or on the CloseButton for a tiddler. Kind of a respectful homage to Mac OS X, which does something similar for many of its system animations. (On browsers like InternetExplorer that use the shift key to open a new window, it's best to use the alt-key).
InterfaceOptions are displayed when you click the 'options' button on the right. They are saved in a cookie on your browser, making them sticky between visits. RegExpSearch allows more complex search expressions; CaseSensitiveSearch does as it's name implies. The user name for edits should be set //before// starting to edit things (ouch. another bug).
RegExpSearch uses JavaScript's [[RegExp syntax|http://www.programmershelp.co.uk/docs/javascript/regexp.html#1193188]] to allow flexible searches.
JeremyRuston said:\n<<<\nA TiddlyWiki is like a blog because it's divided up into neat little chunks, but it encourages you to read it by hyperlinking rather than sequentially: if you like, a non-linear blog analogue that binds the individual microcontent items into a cohesive whole. I think that TiddlyWiki represents a novel medium for writing, and will promote it's own distinctive WritingStyle. This is the first version of TiddlyWiki and so, as discussed in TiddlyWikiDev, it's bound to be FullOfBugs, have many MissingFeatures and fail to meet all of the DesignGoals. And of course there's NoWarranty, and it might be judged a StupidName.\n<<<\n\n>level 1\n>level 1\n>>level 2\n>>level 2\n>>>level 3\n>>>level 3\n>>level 2\n>level 1\n
While editing a tiddler:\n* Control-Enter accepts your changes and switches out of editing mode\n* Escape abandons your changes and reverts the tiddler to it's previous state
Within the main story column you can click on bold links to read a linked tiddler. Click on italic links to create a new tiddler. When you hover the mouse over a tiddler several ToolbarButtons appear. You can edit the text of any tiddler by double-clicking on it (or selecting 'edit' from the toolbar), but your changes won't get saved permanently until you make your own copy of TiddlyWiki, as described in SaveChanges.
Welcome to the ThirdVersion of TiddlyWiki, an experimental MicroContent WikiWikiWeb built by JeremyRuston. It's written in HTML, CSS and JavaScript to run on any modern browser without needing any ServerSide logic. It allows anyone to create personal SelfContained hypertext documents that can be posted to any web server, sent by email or kept on a USB thumb drive to make a WikiOnAStick. If you like it, do please EmailMe and let me know.
This ThirdVersion of TiddlyWiki fixes a problem with line breaks within tiddlers under InternetExplorer. It also tries to avoid closing tiddlers while they are being edited. There's a bunch of smaller BugFixes as well, but they are somewhat balanced by the KnownBugs.
This list is probably dwarfed by the UnknownBugs, but anyway:\n* InternetExplorer on Windows has a habit of merging consecutive spaces into one. This normally doesn't matter too much, but would trip you up if you tried to use NonWikiWordLinks to create a tiddler title with multiple consecutive spaces.\n* Interleaving lists of BulletPoints with SubHeadings doesn't work properly
There's now an option under InterfaceOptions to allow TiddlyWiki's animation effects to be turned off.
This ThirdVersion of TiddlyWiki adds:\n* the ability to easily SaveChanges on FireFox and InternetExplorer\n* a new liquid CSS layout that fills the width of the browser window\n* InterfaceOptions revealed by clicking the new 'options' button on the right\n* some BugFixes\n* KeyboardShortcuts so you can finish editing a tiddler with Control-Enter or abandon it with Escape\n* a more flexible OpenSourceLicense\n* a bunch of features from IsaoSonobe's [[adaptation|http://www-gauge.scphys.kyoto-u.ac.jp/~sonobe/OgreKit/OgreKitWiki.html]] of TiddlyWiki including ExtendedFormatting, NonWikiWordLinks, PrettyLinks, SubHeadings, BulletPoints, NumberedLists, HtmlTables, BlockQuotes, HorizontalRules and...\n* ...EmbeddedImages:\n[img[brixhamharbour.jpg]]\n* some KnownBugs
*sample:\n|!th1111111111|!th2222222222|\n|>| colspan |\n| rowspan |left|\n|~| right|\n|bgcolor(#a0ffa0):colored| center |\n|caption|c\n*another sample: see PeriodicTable.\n
|Standard Periodic Table (ref. Wikipedia)|c\n|| !1 | !2 |!| !3 | !4 | !5 | !6 | !7 | !8 | !9 | !10 | !11 | !12 | !13 | !14 | !15 | !16 | !17 | !18 |\n|!1|bgcolor(#a0ffa0): @@color(red):H@@ |>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>||bgcolor(#c0ffff): @@color(red):He@@ |\n|!2|bgcolor(#ff6666): Li |bgcolor(#ffdead): Be |>|>|>|>|>|>|>|>|>|>||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@@ |\n|!3|bgcolor(#ff6666): Na |bgcolor(#ffdead): Mg |>|>|>|>|>|>|>|>|>|>||bgcolor(#cccccc): Al |bgcolor(#cccc99): Si |bgcolor(#a0ffa0): P |bgcolor(#a0ffa0): S |bgcolor(#ffff99): @@color(red):Cl@@ |bgcolor(#c0ffff): @@color(red):Ar@@ |\n|!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@@ |\n|!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@@ |\n|!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@@ |\n|!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@@ |\n\n| !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 |\n| !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 |\n\n*Chemical Series of the Periodic Table\n**@@bgcolor(#ff6666): Alkali metals@@\n**@@bgcolor(#ffdead): Alkaline earth metals@@\n**@@bgcolor(#ffbfff): Lanthanides@@\n**@@bgcolor(#ff99cc): Actinides@@\n**@@bgcolor(#ffc0c0): Transition metals@@\n**@@bgcolor(#cccccc): Poor metals@@\n**@@bgcolor(#cccc99): Metalloids@@\n**@@bgcolor(#a0ffa0): Nonmetals@@\n**@@bgcolor(#ffff99): Halogens@@\n**@@bgcolor(#c0ffff): Noble gases@@\n\n*State at standard temperature and pressure\n**those in @@color(red):red@@ are gases\n**those in @@color(green):green@@ are liquids\n**those in black are solids\n
The first and original was [[PhpTiddlyWiki|http://www.patrickcurry.com/tiddly/]] from PatrickCurry and GabrielJeffrey that adds a simple ServerSide in PHP with MySQL. Patrick's site allows anyone to create and edit tiddlers, and has become the de facto community site around TiddlyWiki.\n\nSome of the other adaptations include:\n* DanPhiffer's TiddlyWikiRemote at http://phiffer.org/tiddly/\n* KamiWiki at http://rakusai.org/kamiwiki/\n* HenrikAastedSorensen's at http://aasted.org/wiki\n* IsaoSonobe's OgreKitWiki at http://www-gauge.scphys.kyoto-u.ac.jp/~sonobe/OgreKit/OgreKitWiki.html \n* JacquesTurbé's TidliPo, in French at http://avm.free.fr/IMG/html/carnet_gt_BigCo.html\n* ChristianHauck's at http://www.christianhauck.net/html/14300.html\n* TonyLownds's at http://tony.lownds.com/home/\n* PoulStaugaard and IvanMetalnikov's at http://poul.staugaard.dk/IeWiki.htm\n\n* There's also KevemBuangga's TiddlyWikiClone at http://www.kevembuangga.com/hwk/hailiwiki.htm (caution: on Safari, it seems to get locked up with error alerts)
A Tab showing all titles of the TiddlerGroups.
The TimelineTab shows all tiddlers sorted by edit date.
''Bold''\n==Strike==\n__Underline__\n//Italic//\n2^^3^^=8\na~~ij~~ = -a~~ji~~\n@@highlight@@\n@@color(green):green colored@@\n@@bgcolor(#ff0000):red background@@\n@@bgcolor(#ff0000):color(#ffffff):red colored@@
Date to upper right corner of tidder: "frames" the tidler nicely with something somewhat meaningful. Grey unless hover, should not disturb too much.\n* add twice a line to the function createTiddlerTitle\n* add a line to the function createTiddlerSkeleton\n* a new function createTiddlerTitleRight\n* a new function createTitleRight\n* two new styles: titleright and titlerightSelected\n* modify two styles .title and .toolbar : add line-height: 0em to work around the issue of aligning right on the same line\n* modify one style: padding of body of tiddler, in order to compensate for the line-height 0 workaround\n!! add lines to function createTiddlerTitle; the one with createTiddlerTitleRight(title)\n!!!! change to\n case 0:\n if(!theViewer && !theEditor)\n {\n createTiddlerToolbar(title,false);\n createTiddlerTitleRight(title); // added by ChristianHauck\n createTiddlerViewer(title,highlightText,highlightCaseSensitive);\n }\n break;\n case 1: // Viewer\n if(theViewer)\n theViewer.parentNode.removeChild(theViewer);\n if(theEditor)\n theEditor.parentNode.removeChild(theEditor);\n createTiddlerToolbar(title,false);\n createTiddlerTitleRight(title); // added by ChristianHauck\n createTiddlerViewer(title,highlightText,highlightCaseSensitive);\n break;\n!! add a line to the function createTiddlerSkeleton: the one with theTitleRight\n!!!! change to\nfunction createTiddlerSkeleton(place,before,title)\n{\n var theTiddler = document.getElementById("tiddler" + title);\n if(!theTiddler)\n {\n theTiddler = createTiddlyElement(null,"div","tiddler" + title,"tiddler",null);\n theTiddler.onmouseover = onMouseOverTiddler;\n theTiddler.onmouseout = onMouseOutTiddler;\n theTiddler.ondblclick = onDblClickTiddler;\n var theInnerTiddler = createTiddlyElement(theTiddler,"div",null,"innerTiddler",null);\n var theTitle = createTiddlyElement(theInnerTiddler,"div","title" + title,"title",null);\n var theToolbar = createTiddlyElement(theInnerTiddler,"div","toolbar" + title,"toolbar", null);\n var theTitleRight = createTiddlyElement(theInnerTiddler,"div","titleright" + title,"titleright",null); // added by ChristianHauck\n var theBody = createTiddlyElement(theInnerTiddler,"div","body" + title,"body",null);\n place.insertBefore(theTiddler,before);\n }\n return(theTiddler);\n}\n!! the new function createTiddlerTitleRight(title)\nfunction createTiddlerTitleRight(title)\n{\n var theTitleRight = document.getElementById("titleright" + title);\n if(theTitleRight)\n {\n removeChildren(theTitleRight);\n createTitleRight(theTitleRight,getTiddlerMonthYear(title),null,null); // null, null might be taken out, also from createTitleRight\n }\n}\n!! the new function createTitleRight\nfunction createTitleRight(theParent,theText,theTooltip,theAction)\n{\n var theTitleRight = document.createElement("a");\n if(theAction)\n {\n theTitleRight.onclick = theAction;\n theTitleRight.setAttribute("href","JavaScript:;");\n }\n if(theText)\n {\n theTitleRight.appendChild(document.createTextNode(theText));\n }\n theParent.appendChild(theTitleRight);\n return(theTitleRight);\n}\n!! the two new styles: titleright and titlerightSelected\n.titleright {\n font-size: 10pt;\n font-weight: bold;\n color: #C0C0C0;\n text-align: right;\n line-height: 0em;\n}\n\n.titlerightSelected {\n font-size: 10pt;\n font-weight: bold;\n color: black;\n text-align: right;\n line-height: 0em;\n}\n!! * modify two styles .title and .toolbar : add line-height: 0em to work around the issue of aligning right on the same line\n!!!! change to:\n.title {\n font-size: 10pt;\n font-weight: bold;\n display: inline;\n line-height: 0em;\n}\n!!!! change to:\n.toolbar {\n font-weight: normal;\n font-size: 8pt;\n padding: 0em 0em 0em 0em;\n color: #aaaaaa;\n display: inline;\n visibility: hidden;\n line-height: 0em;\n}\n!! modify padding of body of tiddler in order to compensate for the line-height 0 workaround\n!!!! change from\n.body {\n padding-top: 0.5em;\n}\n!!!! change to\n.body {\n padding-top: 1em;\n}\n\n
This is the ThirdVersion of TiddlyWiki, released in April 2005. The SecondVersion was released in December 2004, and before that the FirstVersion in September 2004.\n\nSee the RevisionHistory for details of minor changes and bug-fixes since the ThirdVersion. See HowToUpgrade an earlier version of TiddlyWiki to the latest revision.
You can now link to [[external sites|http://www.osmosoft.com]] with ordinary words, without the messiness of the full URL appearing. Edit this tiddler to see how.\n\nYou can also LinkToFolders.
The format for PrettyLinks allows for links that open local or network folders. Depending on your browser and operating system, the folders are opened in Windows Explorer, the OS X Finder, or the browser itself.\n\nEdit this tiddler to see [[this link to a Windows network share|file://server/share/folder/path/name]], [[this link to a Windows drive-mapped folder|file:///c:/folder/path/name]] and [[this link to a Unix-style folder|file:///folder/path/name]].
Revision history for the ThirdVersion:\n* Revision 1.2.0, 14 April 2005\n** No code changes\n* Revision 1.2.1, 14 April 2005\n** Fixed problem with spaces in pathnames on Mac/Unix\n* Revision 1.2.2, 14 April 2005 \n** No code changes\n* Revision 1.2.3, 15 April 2005\n** Fixed problem with positioning of tiddlers opened from last displayed tiddler\n** Added KeyboardShortcuts\n* Revision 1.2.4, 17 April 2005\n** Fixed Control-Enter on IE PC\n** Fixed UTF-8 encoding on SaveChanges\n** Fixed regular expressions to permit basic accented characters in WikiWords\n** Fixed problem with completely blank tiddlers\n** Added set focus on edit tiddler\n* Revision 1.2.5, 19 April 2005\n** Fixed problem with the search results summary message\n** Fixed problem with clicking on highlighted links\n** Fixed problem with non-ANSI unicode characters in permalinks\n* Revision 1.2.6, 6 May 2005\n** Added CSS stylesheet to suppress menu and sidebar when printing\n** Fixed saving to network shares on FireFox on Windows\n** Fixed use of NonWikiWordLinks in DefaultTiddlers and PermaView\n** Fixed problem with clicking more than once on the PermaLinkButton\n** Added EnableAnimations to the InterfaceOptions
!! a new function to go to the top of the screen\n// go to top added by ChristianHauck\nfunction toTop()\n{\n window.scrollTo(0,0);\n}\n\nused e.g. at the end of function displayMessage(text) or function closeAllTiddlers\n!!!! add one line:\n toTop();
Because TiddlyWiki is a single HTML file, you've actually already downloaded the entire software just by viewing this site. If you want to be able to SaveChanges, you can save your own TiddlyWiki to your local drive by right clicking on [[this link|#]] and selecting 'Save link as...' or 'Save target as...'. You can choose where to save the file, and what to call it (but keep the .HTML or .htm extension).
Somewhat tricky. I'd prefer to adjust it.\n* the change in the TimelineTab\n* the new function to convert YYYYMMDD date format without MMSS\n* the new function to create the button\n* the new event handler\n* the new function itself:\n\n!! TimelineTab in the body:\nit's quite long, the what follows first are the really crucial lines:\n!!!! change from static date display\n theDateElement.appendChild(document.createTextNode(theDateCaption));\n!!!! change to a date button\n createDateElementLink(place,theDateYYYYMMDD,"000000");\n!!! in much more details:\n!!!! change from\nfunction refreshTabTimeline()\n{\n var allTiddlers = new Array(); // An array of 2-entry arrays, where entry 0 = name, 1 = date\n var storeNodes = document.getElementById("storeArea").childNodes;\n for (var t = 0; t < storeNodes.length; t++)\n {\n var n = storeNodes[t];\n if(n.id)\n if(n.id.substr(0,5) == "store")\n allTiddlers.push(new Array(n.id.substr(5),n.getAttribute("modified")));\n }\n allTiddlers.sort(function (a,b) { if(a[1] == b[1]) return(1); else return (a[1] < b[1]) ? +1 : -1; }); // Sort by date\n var place = document.getElementById("sidebarContent");\n while(place.firstChild != null)\n place.removeChild(place.firstChild);\n var lastDay = "";\n for (t = 0; t < allTiddlers.length; t++)\n {\n var theDay = allTiddlers[t][1].substr(0,8);\n if(theDay != lastDay)\n {\n var theDateElement = document.createElement("span");\n var theDateCaption = ConvertFromYYYYMMDDHHMM(allTiddlers[t][1]).toLocaleDateString();\n theDateElement.appendChild(document.createTextNode(theDateCaption));\n theDateElement.className = "sidebarSubHeading";\n place.appendChild(theDateElement);\n place.appendChild(document.createElement("br")); \n lastDay = theDay;\n }\n place.appendChild(document.createTextNode(String.fromCharCode(160)));\n place.appendChild(document.createTextNode(String.fromCharCode(160)));\n createTiddlyLink(place,allTiddlers[t][0],true);\n place.appendChild(document.createElement("br"));\n }\n}\n\n!!!! change to:\n// Timeline tab\nfunction refreshTabTimeline()\n{\n // Get names and dates of all tiddlers from the store\n var allTiddlers = new Array(); // Will be an array of 2-entry arrays, where entry 0 = name, 1 = date\n var storeNodes = document.getElementById("storeArea").childNodes;\n for (var t = 0; t < storeNodes.length; t++)\n {\n var n = storeNodes[t];\n if(n.id)\n if(n.id.substr(0,5) == "store")\n allTiddlers.push(new Array(n.id.substr(5),n.getAttribute("modified")));\n }\n // Sort the tiddlers by date\n allTiddlers.sort(function (a,b) { if(a[1] == b[1]) return(1); else return (a[1] < b[1]) ? +1 : -1; });\n // Delete any existing entries in the tab\n var place = document.getElementById("sidebarContent");\n while(place.firstChild != null)\n place.removeChild(place.firstChild);\n // Output the links\n var lastDay = "";\n for (t = 0; t < allTiddlers.length; t++)\n {\n var theDay = allTiddlers[t][1].substr(0,8);\n if(theDay != lastDay)\n {\n var theDateElement = document.createElement("span");\n var theDateYYYYMMDD = (allTiddlers[t][1].substr(0,8));\n createDateElementLink(place,theDateYYYYMMDD,"000000"); // added by ChristianHauck\n place.appendChild(document.createElement("br")); \n lastDay = theDay;\n }\n place.appendChild(document.createTextNode(String.fromCharCode(160)));\n place.appendChild(document.createTextNode(String.fromCharCode(160)));\n createTiddlyLink(place,allTiddlers[t][0],true);\n place.appendChild(document.createElement("br"));\n }\n}\n\n!! the new function to convert YYYYMMDD date format without MMSS\n// Convert a date in UTC YYYYMMDD format to date type , added by ChristianHauck\nfunction ConvertFromYYYYMMDD(d)\n{\n var theDate = new Date(parseInt(d.substr(0,4),10),\n parseInt(d.substr(4,2),10)-1,\n parseInt(d.substr(6,2),10),0,0,0,0);\n return(theDate);\n}\n\n!! the new function to create the button\n// added by ChristianHauck copied from createTiddlyLink, then modified, to create the date in the Tab \nfunction createDateElementLink(place,theDateYYYYMMDD,fontcolor,extraCaption)\n{\n var btn;\n var dateCaption = ConvertFromYYYYMMDD(theDateYYYYMMDD).toLocaleDateString();;\n var subTitle = "click to show all tiddlers from " + dateCaption;\n var theCaption = dateCaption;\n if(extraCaption)\n {\n theCaption = extraCaption;\n }\n var btn = createTiddlyButton(place,theCaption,subTitle,onClickTiddlersPerDay,fontcolor); // fifth parameter fontcolor: added by ChristianHauck\n btn.className = "sidebarSubHeading";\n btn.setAttribute("DateElementLink",theDateYYYYMMDD);\n return(btn);\n}\n\n!! the new event handler\n// Event handler for clicking on the DailyTiddlersLink added by ChristianHauck copied from onClickTiddlerLink and modified\nfunction onClickTiddlersPerDay(e)\n{\n if (!e) var e = window.event;\n hideMessage();\n // Get the text of the link\n var thisDate = this.getAttribute("DateElementLink");\n // Display that tiddler\n showTiddlersPerDay(thisDate);\n}\n\n!! the new function itself\n// Display all Tiddlers for a specific day; copied from function refreshTimeline by ChristianHauck, then modified\nfunction showTiddlersPerDay(DateYYYYMMDD)\n{\n // Clean it up\n closeAllTiddlers();\n onClearSearch();\n // Get names and dates of all tiddlers from the store\n var allTiddlers = new Array(); // Will be an array of 2-entry arrays, where entry 0 = name, 1 = date\n var storeNodes = document.getElementById("storeArea").childNodes;\n for (var t = 0; t < storeNodes.length; t++)\n {\n var n = storeNodes[t];\n if(n.id)\n if(n.id.substr(0,5) == "store")\n allTiddlers.push(new Array(n.id.substr(5),n.getAttribute("modified")));\n }\n // Sort the tiddlers by date, reverse\n allTiddlers.sort(function (a,b) { if(a[1] == b[1]) return(1); else return (a[1] > b[1]) ? +1 : -1; });\n // Output the tiddlers\n for (t = 0; t < allTiddlers.length; t++)\n {\n var theDay = allTiddlers[t][1].substr(0,8);\n if(theDay == DateYYYYMMDD.substr(0,8))\n {\n displayTiddler(null,allTiddlers[t][0],0,null,null,null);\n // Output a message with the Date\n var dateCaption = ConvertFromYYYYMMDD(DateYYYYMMDD).toLocaleDateString();;\n displayMessage(dateCaption);\n }\n }\n}
* the new Groups Tab\n* add Groups Tab to function refreshSidebar()\n* add two new styles\n* add button to Tab\n!! the new Groups Tab\n!!!! add this\n// Groups tab\nfunction refreshTabGroups()\n {\n // Get names and dates of all tiddlers from the store\n var allTiddlers = new Array(); // Will be an array of 2-entry arrays, where entry 0 = name, 1 = date\n var storeNodes = document.getElementById("storeArea").childNodes;\n for (var t = 0; t < storeNodes.length; t++)\n {\n var n = storeNodes[t];\n if(n.id)\n if(n.id.substr(0,6) == "store_") // ChristianHauck from 5 to 6 and added "_" : TiddlerGroups start with underscore(workaround), improve later\n allTiddlers.push(new Array(n.id.substr(5),n.getAttribute("modified")));\n }\n // Sort the tiddlers by name\n allTiddlers.sort(function (a,b) { if(a[0] == b[0]) return(0); else return (a[0] > b[0]) ? +1 : -1; });\n // Delete any existing entries in the list\n var place = document.getElementById("sidebarContent");\n while(place.firstChild != null)\n place.removeChild(place.firstChild);\n // Output the links: its TiddlerGroupLink not TiddlerLink\n for (t = 0; t < allTiddlers.length; t++)\n {\n createTiddlerGroupLink(place,allTiddlers[t][0],true);\n place.appendChild(document.createElement("br"));\n }\n}\n\n!! add Groups Tab to function refreshSidebar()\n!!!! add this somewhere under "switch"\n case "tabGroups":\n tabContent.className = "tabContentGroups";\n refreshTabGroups();\n break;\n!! add two new styles\n #tabGroups {\n font-weight: bold;\n display: inline;\n background-color: #994400;\n padding: 2px 3px 0px 3px;\n margin: 0px 1px 0px 1px;\n}\n\n.tabContentGroups {\n background-color: #994400;\n padding: 0.5em 0.5em 0.5em 0.5em;\n}\n\n!! add button to Tab\n!!!! in body, add code one line to div id="sidebarTabs": it's html code, not visible here..\n
documented together with ChMig08, see there.
This means editing the regular expresiosn for the parsing. For me, ExplicitTiddlerTitles and EightDigitNumbers are similar. If you don't need the esoteric EightDigitNumbers functionality (ChMig09), leave out the linkNum stuff below.\n\n!! add code to function setupRegexp\n* var linkNumPattern\n* var theExplicitTiddlerTitles\n* var explicitPattern\n* and add them to the var patterns \n!!!! modify in function setupRegexp()\n\n // Link patterns\n var wikiNamePattern = "(?:" + upperLetter + "+" + lowerLetter + "+" + upperLetter + anyLetter + "*)|(?:" + upperLetter + "{2,}" + lowerLetter + "+)";\n var urlPattern = "(?:http|https|mailto|ftp):[^\s\"']*";\n var explicitLinkPattern = "\[\[([^\[\]\|]+)\|([^\[\]\|]+)\]\]";\n var bracketNamePattern = "\[\[([^\]]+)\]\]";\n var linkNumPattern = "(" + anyDigit +anyDigit + anyDigit + anyDigit + anyDigit + anyDigit + anyDigit + anyDigit + ")\b"; // added by ChristianHauck ;\n var theExplicitTiddlerTitles = getTiddlerText("ExplicitTiddlerTitles").replace(/\s/g,"|");\n var explicitPattern = "\b(" + theExplicitTiddlerTitles + ")\b"; // explicitPattern added by ChristianHauck ;\n var patterns = "(" + wikiNamePattern + \n ")|(" + urlPattern + \n ")|(?:" + explicitLinkPattern + \n ")|(?:" + bracketNamePattern + \n ")|(?:" + linkNumPattern + \n ")|(?:" + explicitPattern + \n ")";\n wikiNameRegExp = new RegExp(patterns,"mg");\n invalidPreWikiNamePattern = anyLetter;\n\n!! add code to function wikifyLinks\n* if(formatMatch[6])\n* if(formatMatch[7]) \n!!!! modify in function wikifyLinks\nin function wikifyLinks(parent,text,targetText,startPos,endPos,highlightRegExp,highlightMatch)\n\n else if(formatMatch[6])\n {\n if(matchPos > 0 && new RegExp(invalidPreWikiNamePattern,"").exec(targetText.charAt(matchPos - 1)))\n {\n theLink = parent;\n }\n else\n {\n theLink = createTiddlyLink(parent,formatMatch[0],false);\n }\n highlightMatch = subWikify(theLink,text,startPos+matchPos,startPos+wikiNameRegExp.lastIndex,highlightRegExp,highlightMatch);\n }\n else if(formatMatch[7])\n {\n if(matchPos > 0 && new RegExp(invalidPreWikiNamePattern,"").exec(targetText.charAt(matchPos - 1)))\n {\n theLink = parent;\n }\n else\n {\n theLink = createTiddlyLink(parent,formatMatch[0],false);\n }\n highlightMatch = subWikify(theLink,text,startPos+matchPos,startPos+wikiNameRegExp.lastIndex,highlightRegExp,highlightMatch);\n }\n }\n
MyTiddlyWikiVariant recognizes EightDigitNumbers like 12345678 as (internal) links to another Tiddler. I need/want it like that for reasons too esoteric to explain.\n
Just to show that MyTiddlyWikiVariant recognizes EightDigitNumbers like 12345678 as (internal) links.
Help Welcome
Welcome to ChristianHauck 's MyTiddlyWikiVariant. The "Welcome" is an example for ExplicitTiddlerTitles: a WikiWord that is not in CamelCase.
added various extras listed in MyTiddlyWikiVariant to JeremyRuston 's ThirdVersion of TiddlyWiki. Homepage: http://www.christianhauck.net/tiddly_wiki.htm
Full calculation from a bookmarklet, unfortunately I don't remember the source:\nWhen shown in a message, it informs the user about the effort to read: how many pages/scrrens full of text are there.
ScreenFull calculation from a bookmarklet, unfortunately I don't remember the source:\ne.g.\n displayMessage(ThisTiddlerGroup+" "+" : approximately "+Math.round(document.body.scrollHeight/document.body.clientHeight*10)/10+' pages');\n
* the new DateLine Tab\n* add DateLine Tab to function refreshSidebar()\n* add two new styles\n* add button to Tab\n!! the new DateLine Tab\n!!!! add this\n// Dateline tab copied from Timeline Tab by ChristianHauck, modifier for calendar-like functionality\nfunction refreshTabDateline()\n{\n // Get names and dates of all tiddlers from the store and count how many tiddlers are there\n var allTiddlers = new Array(); // Will be an array of 2-entry arrays, where entry 0 = name, 1 = date\n var storeNodes = document.getElementById("storeArea").childNodes;\n var tiddlercount = -1; \n for (var t = 0; t < storeNodes.length; t++)\n {\n var n = storeNodes[t];\n if(n.id)\n if(n.id.substr(0,5) == "store")\n { allTiddlers.push(new Array(n.id.substr(5),n.getAttribute("modified")));\n tiddlercount = tiddlercount + 1;\n }\n }\n // Sort the tiddlers by date\n allTiddlers.sort(function (a,b) { if(a[1] == b[1]) return(1); else return (a[1] < b[1]) ? +1 : -1; });\n // Delete any existing entries in the tab\n var place = document.getElementById("sidebarContent");\n while(place.firstChild != null)\n place.removeChild(place.firstChild);\n // get info about of oldest and youngest tiddlers\n var youngest = allTiddlers[0][1].substr(0,4);\n var youngestM = allTiddlers[0][1].substr(4,2);\n if (allTiddlers[0][1].substr(4,1) == 0)\n youngestM = allTiddlers[0][1].substr(5,1);\n var oldest = allTiddlers[tiddlercount][1].substr(0,4);\n var oldestM = allTiddlers[tiddlercount][1].substr(4,2);\n if (allTiddlers[tiddlercount][1].substr(4,1) == 0)\n oldestM = allTiddlers[tiddlercount][1].substr(5,1);\n // Names of months\n Mnames = new Array("dummy", "Jan ","Feb ","Mar ","Apr ","May ","Jun ","Jul ","Aug ","Sep ","Oct ","Nov ","Dec ");\n // Loop through the years, output year\n for (y = youngest; y >= oldest ; y--)\n {\n var ye = "" + y;\n place.appendChild(document.createTextNode(ye));\n place.appendChild(document.createElement("br"));\n // Loop through the months, output month\n // for the oldest and youngest years, we start and end at the months where tiddlers exist at all\n var firstM = 12;\n if(ye == youngest)\n firstM = youngestM; \n var lastM = 1;\n if(ye == oldest)\n lastM = oldestM; \n for (m = firstM; m >= lastM; m--)\n {\n if(m < 10)\n var mo = "0" + m;\n if(m > 9)\n var mo = "" + m;\n place.appendChild(document.createTextNode(Mnames[m]));\n // Loop through the days\n for (d = 1; d <= 31; d++)\n { \n if(d < 10)\n var da = "0" + d;\n if(d > 9)\n var da = "" + d;\n var ymd = ye + mo + da;\n // Loop through tiddlers, output days if a tiddler exisits\n for (t = 0; t < allTiddlers.length; t++)\n {\n var theDay = allTiddlers[t][1].substr(0,8);\n if(theDay == ymd)\n {\n createDateElementLink(place,theDay,"FFFFFF",da);\n place.appendChild(document.createTextNode(" "));\n break;\n } // if theDay\n } // for t loop through tiddlers\n } // for d loop through days\n place.appendChild(document.createElement("br"));\n } // for m loop through months\n place.appendChild(document.createElement("br"));\n } // for y loop through years\n} // end function\n\n!! add DateLine Tab to function refreshSidebar()\n!!!! add this somewhere under "switch"\n case "tabDateline":\n tabContent.className = "tabContentDateline";\n refreshTabDateline();\n break;\n!! add two new styles\n #tabDateline {\n font-weight: bold;\n display: inline;\n background-color: #994422;\n padding: 2px 3px 0px 3px;\n margin: 0px 1px 0px 1px;\n}\n\n.tabContentDateline {\n background-color: #994422;\n padding: 0.5em 0.5em 0.5em 0.5em;\n}\n!! add button to Tab\n!!!! in body, add a line to div id="sidebarTabs": it's html code, not visible here.\n
A tab with tiddlers sorted by Authors / modifiers. See ChMig16.
!! the function\n// Authors tab\nfunction refreshTabAuthors()\n{\n // Get names and dates of all tiddlers from the store\n var allTiddlers = new Array(); // Will be an array of 2-entry arrays, where entry 0 = name, 1 = author\n var storeNodes = document.getElementById("storeArea").childNodes;\n for (var t = 0; t < storeNodes.length; t++)\n {\n var n = storeNodes[t];\n if(n.id)\n if(n.id.substr(0,5) == "store")\n allTiddlers.push(new Array(n.id.substr(5),n.getAttribute("modifier")));\n }\n // Sort the tiddlers by author\n allTiddlers.sort(function (a,b) { if(a[1] == b[1]) return(1); else return (a[1] < b[1]) ? +1 : -1; });\n // Delete any existing entries in the tab\n var place = document.getElementById("sidebarContent");\n while(place.firstChild != null)\n place.removeChild(place.firstChild);\n // Output the links\n var lastAuthor = "";\n for (t = 0; t < allTiddlers.length; t++)\n {\n var theAuthor = allTiddlers[t][1];\n if(theAuthor != lastAuthor)\n {\n var theAuthorElement = document.createElement("span");\n var theAuthorCaption = (allTiddlers[t][1]);\n theAuthorElement.appendChild(document.createTextNode(theAuthorCaption));\n theAuthorElement.className = "sidebarSubHeading";\n place.appendChild(theAuthorElement);\n place.appendChild(document.createElement("br")); \n lastAuthor = theAuthor;\n }\n place.appendChild(document.createTextNode(String.fromCharCode(160)));\n place.appendChild(document.createTextNode(String.fromCharCode(160)));\n createTiddlyLink(place,allTiddlers[t][0],true);\n place.appendChild(document.createElement("br"));\n }\n}\n!! the new case in refreshSidebar\n case "tabAuthors":\n tabContent.className = "tabContentAuthors";\n refreshTabAuthors();\n break;\n\n!! two styles\n #tabAuthors {\n font-weight: bold;\n display: inline;\n background-color: #993333;\n padding: 2px 3px 0px 3px;\n margin: 0px 1px 0px 1px;\n}\n\n.tabContentAuthors {\n background-color: #993333;\n padding: 0.5em 0.5em 0.5em 0.5em;\n}\n!! and the code in the body, can not be shown here
* a new Tab MyList\n* a new function createTiddlerListLink\n* a new event handler\n* two new styles\n* the new html code in the body, which can not be shown here\n\n!! the new MyList tab\n// MyList tab\nfunction refreshTabMyList()\n{\n // Delete any existing entries\n var place = document.getElementById("sidebarContent");\n while(place.firstChild != null)\n place.removeChild(place.firstChild);\n // output the Tiddler links\n var allTiddlersText = getTiddlerText("__MyList");\n var tiddlers = allTiddlersText.split(" ");\n var tmax = tiddlers.length-1;\n if (tmax > 9) tmax = 9;\n var topTen = tiddlers[0];\n for(var t=1;t
A list of tiddlers, stored in a SpecialTiddler _MyList. A button in the toolbar (still missing: ChMig18) to add the current tiddler to MyList by simply clicking o the button. A Tab (MyList) to show all tiddlers in MyList, sorted: Top 10, and the rest. Still missing (ChMig18): a way to organize MyList (move tiddlers up, down, out) easier than editing the SpecialTiddler _MyList manually using copy and paste. \nThe idea is to have MyList as TiddlyWiki internal bookmarks. It should add as a BumpList: A new tiddler enters at position/rank 11. The previous number 11 becomes 12, previous 12 becomes 13, and so on. And the last one (19, or 99?) falls off the list. The top 10 are not influenced by this bumping. Thus:if the user wants to prevent his favorite bookmarks on mylist from disappearing, the list must be maintained. The precious ones should go to the Top 10, which are protected from bumping.\nI developed this idea based upon my own expertise with my own poorly organized bookmarks, and ever growing, poorly maintained lists.
In the DateTab, more details are shown for recent entries, and less and less details for older ones.\n* Last active day = the last day when a tiddler was created: all tiddlers are shown with their titles. \n* For the five previous active days, the names of the days are shown, and the number of tiddlers per day.\n* For the month of the last active day, all days are shown, calendar-like, and active days have another color and work as DailyTiddlers links.\n* All other months are shown in a yearly view, by year then by month, with only the active days shown at all.
TiddlyWiki AuthorsTab MissingFeatures DownloadSoftware LatestNews MainMenu MicroContent NoWarranty RevisionHistory NumberedLists HelloThere EasterEgg HorizontalRules DelayedSearch MissingFeatures
To show the initial = first leter of the author / modifier:\n* a new function\n* modify that part of function refresh dateline and function refresh timeline where the output of the individual tiddlers are handeled: call function getTiddlerIniMod instead of simply outputting a nonbreaking space\n\n! the new function getTiddlerIniMod\nfunction getTiddlerIniMod(title)\n{\n var tiddlerStore = document.getElementById("store" + title);\n if(tiddlerStore != null)\n {\n var theModifier = tiddlerStore.getAttribute("modifier");\n if(!theModifier)\n theModifier = "(unknown)";\n var theModifierInitial = theModifier.substr(0,1);\n return(theModifierInitial);\n }\n else\n return(null);\n}\n\n\n\n! the change in the functions refreshTabTimeline() and refreshTabDateline() ChMig03\n!!! not all the code is shown, it's too much.\n!!!! change from\n place.appendChild(document.createTextNode(String.fromCharCode(160)));\n place.appendChild(document.createTextNode(String.fromCharCode(160)));\n createTiddlyLink(place,allTiddlers[t][0],true);\n place.appendChild(document.createElement("br"));\n!!! change to\n place.appendChild(document.createTextNode(getTiddlerIniMod(allTiddlers[t][0])));\n place.appendChild(document.createTextNode(String.fromCharCode(160)));\n createTiddlyLink(place,allTiddlers[t][0],true);\n place.appendChild(document.createElement("br"));\n
* the new function itself\n* calling the function, e.g. from the DateTab\n!! the new function\nfunction getTiddlerAge(title)\n{\n var tiddlerStore = document.getElementById("store" + title);\n if(tiddlerStore != null)\n {\n var nowDate = new Date();\n var nowDay = new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate(),23,59,0);\n var theModified = tiddlerStore.getAttribute("modified");\n if(theModified) theModified = ConvertFromYYYYMMDDHHMM(theModified)\n else theModified = "(unknown)";\n var age = Math.floor((nowDay - theModified) / 86400000);\n var ageShown =age + " DAYS AGO";\n if (age == 0) ageShown = "TODAY"\n else if (age == 1) ageShown = "YESTERDAY";\n return(ageShown);\n }\n else\n return(null);\n}\n!! in the date Tab, add/modofy e.g.\nfunction refreshTabDateline()\n .... quite a number of other lines ... \n\n\n // latest active day tiddlers\n var lastDay = youngestYYYYMMDD;\n place.appendChild(document.createTextNode("LAST ACTIVE: "));\n var tiddlerAge = getTiddlerAge(allTiddlers[0][0]);\n place.appendChild(document.createTextNode(tiddlerAge));\n place.appendChild(document.createElement("br")); \n createDateElementLink(place,lastDay);\n place.appendChild(document.createElement("br"));
The age of a tiddler in whole days: shown e.g in the DateTab for the last active day: how long ago was "last active"? Today, yesterday, or x days ago?
- quite CompleXimple InDeed !
CompleXimple is a descriptive name for my (ChristianHauck) homepage at http://www.christianhauck.net
Doing by Doing.\nThink about it - or - just do it?
TiddlyWikis tagged at del.icio.us with "tiddlywikis" . See http://del.icio.us/tag/tiddlywikis
TiddlyWikis with an S at the end: the individual instances of a TiddlyWiki. They may be different in (text) content, in layout, style, functionality, and - a little bit - in underlying Technology.
Adding more and more possibilities and features can ruin an elegant design. FeatureCreep is a danger for TiddlyWiki, if everyone (like me, ChristianHauck, or others, just adds code and functionalities). See also http://en.wikipedia.org/wiki/Feature_creep.\n\nPriniples for TamingFeatureCreep, managing the issues, living with it:\n* backward compatibility\n** extras should be optional, not mandatory\n** still allow plain text entry without fancy formatting tags/markup. Even editing of the source file via e.g. Windows notepad text editor should always be possible without too much confusion/effort.\n* no explosion\n** extra functions which, if not used, just sit around doing nothing except for slowing down loading (increaded file size) and using up some bytes or kBytes of main memory are acceptable. Functions which are always executed when someone does something should be avoided.\n** functions that scale linearly with size, e.g. with number of tiddlers, are not ideal, but acceptable. Functions that scale overproportionally should be avoided. Example for that: in my own DateTab, nested loops cycle several times through all tiddlers. Double the number of tidders with three nested loops slows down by a factor of 2^^3^^=8.\n* avoid cognitive hurdles\n** the beauty of javascript is the fact that using "view source" it is open source. And if it's well written and well commented, it is actually a great tool for learning, motivation, and even self-development ( uuuh). Thus even if cryptic code (think bookmarklets) might be more efficent, it's too difficult to digest and understand.\n* a comment to server-side things (just my humble opinion)\n** the beauty of TiddlyWiki is the fact that it is self-contained in one file. Yes, server-side things have their advantages, and please, geeks, continue your quest there. However, everything running remotely is, well, how shall I say, it is remote. The code may be obsucre, I may non know the respective language, my provider may not support it, I might have a different one (MySQL vs Oracle in business environment), etc.
The Random funtion close to the search bar displays a tiddler selected at random. Good for serendipitous discoveries; might also cause confusion due to lack of context, though.
Welcome to my (ChristianHauck)'s variant of JeremyRuston 's TiddlyWiki. What's different? See the MigrationPlan for the extra features and how to copy them to your TiddlyWiki.
see TiddlerGroups. (this see "... " is just a workaround for the lack of aliases or synonyms).
TiddlyWiki is still known mainly to geeks, neophiles, programmers, etc. Not really used by the average user. There are ideas (passive voice pun intended) what could be done with such a simple flexible great tool: TiddlyWikiFiction, WikiOnAStick, using it as a personal or group blog, or as a classical wiki. One might, one could, one should ...\nAnd then there are these bloggers writing about TiddlyWiki and how cool it is. 1000 delicious tags: http://del.icio.us/tag/tiddlywiki. When I visitsed the zoo with my daughter, years ago, we spent a lot of time watching the monkeys and the apes. I remember one case: a whole family came, and they said to each other: "Look, how nice, how interesting. I could watch the monkeys for hours!" And five seconds later, they were gone.\n\nSerious use of TiddlyWiki that I am considering, started working on it InDeed:\n* Using a TiddlyWiki for FAQs for a particular software application. One or few writers. TiddlyWiki's special WritingStyle makes maintenance easy. Standard bits of MicroContent in single tiddlers. Answers to a particular FAQ composed of several tiddlers. For custom answers, the expert composed the answer to the question from several tiddlers and sends a permaview url, e.g. in a mail. If this question re-appears, the permaview can just as well be stored in a TiddlerGroup, which also could be sent via mail to a user using the ExternalControl functionality. Alternative ways to navigate are also easy to generate, e.g. an explicit Table of Contents in a tiddler, which is added to the DefaultTiddlers and the MainMenu. Full-text search is there anyway.\n* using TiddlyWiki for storing and retrieving anecdotes.
Some functionalities would be good to have, approximately in descending order: \n* _MyList maintenance other than manually editing the tiddler\n** add button: in the toolbar to add (or insert) the active tiddler to _MyList at position 11.\n** maintenance, move tiddlers up / down / out , ideally drag and drop\n** store _MyList locally in a cookie, and retrieve it from there\n* different style for tiddlers on _MyList: border left, a line to differentiate these tiddlers as "marked" from the others.\n* Better search \n** 1: AND search: Allow search for several words as AND combination: they must be in the same tiddler, but not exactly close together, "unless in quotes" \n** 2: neural search: search each word in the search input independently. Then display those tiddlers where the relative maximal number of hits is achieved. \n* Tags to Tiddlers \n* Filter such that only tagged tiddlers are the search space/local universe for further searches or filters \n* Change colors in stylesheet
As you can see in the RevisionHistory, I've been occasionally updating TiddlyWiki with bug fixes and minor new features. If you've been using an earlier revision of TiddlyWiki, here's how to upgrade to the latest version:\n* Open your TiddlyWiki file in FireFox (say it's called "mystuff.html")\n* SaveChanges to make sure that you've got a backup of it\n* Without closing that page, right-click on [[this link|http://www.tiddlywiki.com]], select 'Save target' or 'Save link' and save it as "mystuff.html", replacing your existing file\n* Now go back to the previously opened copy of "mystuff.html" in your browser and SaveChanges again. It will inherit the newly saved code\n* Refresh the page in the browser to verify that the upgrade has worked\n\nNote that this is JeremyRuston's text above; ChristianHauck's modificatiosn are described in the MigrationPlan.
Edit this tiddler to see how to insert images.\nThe first one is a separate file residing somewhere:\n[img[Fractal vegetable|fractalveg.jpg]]\n(This curious vegetable is called 'Romanesque broccoli' and is one of [[JeremyRuston's photos|http://www.flickr.com/photos/jermy/]])\nThe second one is really and deeply embedded into the html code, in this tiddler:\n[img[deep|data:image/png;base64,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]]\nThanks to DanPhiffer for this tip. Sorry for re-using the "Rife" image: I don't have another one, and have not yet understood how to generate/convert them.
Update Mid June 2005: This CompleXimple TiddlyWikiAdaptations is still based upon JeremyRuston's version 1.2.6. In a way, it's part of my (ChristianHauck's) history. In April and May 2005, I was quite active, writing code, developing ideas, some of which have gone mainstream, some of which still wait to be adapted or exploited, and some of which might have been bad ideas to start with.\nIn the meantime, others have taken it up, and I'm happy to step back. It was exciting to be involved in this burst of activity, even if I'm not sure how much I could help TiddlyWiki to cross the chasm. But it's done, and that's a good thing.\n\nI think I leave this page it as is: there is some code (outdated), some ideas, some weird tabs and functionalities. Some have been superseeded by the newer TiddlyWikiAdaptations.\n\nI focus on localization :\nhttp://www.tiddlywiki.de\nhttp://www.tiddlywiki.de/qwikiweb\nAnd on practical applications in my local environment.\n\nSee you at the http://www.tiddlywiki.com#GoogleGroups
Status mid June 2005, LatestAndGreatestNews: MigrationPlan put on hold. Others are better at writing code and cleaning things up, and merging code and functionalities. I focus on localization: http://www.tiddlywiki.de.\n----\nThe ThirdVersion (rev 1.2.6, see RevisionHistory) of TiddlyWiki will be the basis, my (ChristianHauck) code will be embedded, documented here, using the new ExtendedFormatting options.\nRelated tiddlers cover TamingFeatureCreep, MissingFeatures, and UsingTiddlyWiki.\n* Layout aspects\n** thinner header bar (ChMig01) @@bgcolor(lime):O.K.@@\n** backgroundcolor for active tiddler (ChMig02) @@bgcolor(lime):O.K.@@\n** rename "Timeline" tab to "Time" to save space @@bgcolor(lime):O.K.@@\n* Layout and function\n** DateTab (ChMig03) @@bgcolor(lime):O.K.@@ (uses DailyTiddlers ChMig12) @@color(red): new DatePerspectiveView is implemented, but needs cleanup of the code and doumentation. See also ChMig19, which is a small extra functionality not documented here yet.@@\n** GroupsTab (ChMig04) @@bgcolor(lime):O.K.@@ (uses TiddlerGroups ChMig11)\n** AuthorsTab (ChMig16): tiddlers by author/modifiers @@bgcolor(lime):O.K.@@ @@color(red): needs some polishing: sort order, style.@@\n** MyList Functionality, Tab, Tiddler Style (ChMig17) @@bgcolor(lime):O.K.@@ @@color(red): some extensions needed (ChMig18).@@\n** show date in the upper right corner of the tiddler ChMig15 @@bgcolor(lime):O.K.@@\n** show first letter of modifier/author name in the TimelineTab and DateTab, before the tiddler title. ChMig19\n* Small functionality changes\n** at start set focus in search (ChMig05) @@bgcolor(lime):O.K.@@\n* Simple functions\n** RandomTiddler (ChMig06) @@bgcolor(lime):O.K.@@\n** DelayedSearch (ChMig07) @@bgcolor(lime):O.K.@@\n** ExplicitTiddlerTitles (ChMig08) @@bgcolor(lime):O.K.@@\n** EightDigitNumbers as tiddlers (ChMig09) @@bgcolor(lime):O.K.@@\n** ScreenFull calculation (ChMig10) @@color(green): documented,@@ @@color(red): but not yet implemented.@@\n** Go To Top (ChMig14) @@bgcolor(lime):O.K.@@\n** GetTiddlerAge (ChMig20); used in DateTab, depending on age, it shows "Today", Yesterday", or "x days old".@@bgcolor(lime):O.K.@@\n* More difficult/complicated functions\n** TiddlerGroups (ChMig11) @@bgcolor(lime):O.K.@@\n** DailyTiddlers (ChMig12) @@bgcolor(lime):O.K.@@\n** ExternalControl (ChMig13) @@bgcolor(lime):O.K.@@ @@ # #? #* work with any TiddlyWiki, #_ and #! require ChMig11 and ChMig12.@@\n* Future plans\n** addToMyList button (ChMig18) to add tiddler to MyList in toolbar, easier maintainance for MyList @@color(red):not yet started.@@\n** see also MissingFeatures