Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<<importTiddlers>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<!--{{{-->
<div class='header' role='banner' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
''To add your own TiddlyWiki'', e-mail me at giffmex (at) gmail (dot) com and give me the following stats for your site:

**Category (if the current categories aren't adequate, feel free to invent a category)
**Site url
**Site name, if any
**Site creator's name (that should be you - please don't send me links to sites other than your own)
**Subject matter that the site deals with
**Any brief description and notes you want mentioned

I will do my best to get your site info up within a day or two of your submitting it. Entries in each list are posted in alphabetical order by creators' last name.

Thanks and blessings to you.

config.options.chkHttpReadOnly = false;
/***
| Name:|CloseOnCancelPlugin|
| Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
| Version:|6.9.3|
| Date:|30-Sep-2006|
| Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| CoreVersion:|2.1.x|
***/
//{{{
merge(config.commands.cancelTiddler,{

	handler_orig_closeUnsaved: config.commands.cancelTiddler.handler,

	handler: function(event,src,title) {
		this.handler_orig_closeUnsaved(event,src,title);
		if (!store.tiddlerExists(title) && !store.isShadowTiddler(title))
			story.closeTiddler(title,true);
	 	return false;
	}

});

//}}}

//{{{
config.options.chkHttpReadOnly = false; // means web visitors can experiment with your site by clicking edit
config.views.wikified.defaultText = ""; // don't need message when a tiddler doesn't exist
config.views.editor.defaultText = "";   // don't need message when creating a new tiddler 
//}}}
[[TiddlyWiki Showcase]]
[[MptwEditTemplate]]
/***
| Name:|HideWhenPlugin|
| Description:|Allows conditional inclusion/exclusion in templates|
| Version:|6.9.3|
| Date:|30-Sep-2006|
| Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
For use in ViewTemplate and EditTemplate. Eg
{{{<div macro="showWhen tiddler.tags.contains('Task')">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{
merge(config.macros,{

	hideWhen: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		if (eval(paramString)) {
			removeChildren(place);
			place.parentNode.removeChild(place);
		}
	}},

	showWhen: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		config.macros.hideWhen.handler(place,macroName,params,wikifier,'!('+paramString+')',tiddler);
	}}

});

//}}}

/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for  legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.1|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|

***/

//{{{

// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin)
	{
	version.extensions.LegacyStrikeThroughPlugin = true;

config.formatters.push(
{
	name: "legacyStrikeByChar",
	match: "==",
	termRegExp: /(==)/mg,
	element: "strike",
	handler: config.formatterHelpers.createElementAndWikify
});

} // end of "install only once"
//}}}
[[TiddlyWiki Showcase]]     [[Add your TiddlyWiki to the showcase]]
{{niceTable{
|!Title/link|[[Tiddlyspot's FAQ|http://faq.tiddlyspot.com]]|
|!Creator|Daniel Baird|
|!Subject matter| FAQ |
|!Description/notes|A nice example of a lightly modified TiddlyWiki serving<br> up FAQs |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/tiddlyspotfaq.png]]|
}}}

{{niceTable{
|!Title/link|[[TiddlyWiki User's Guide|http://danielbaird.com/tiddlywikiguides/userguide-sample.html#%5B%5BTiddlyWiki%20User's%20Guide%5D%5D]]|
|!Creator|Daniel Baird|
|!Subject matter|Single-page design|
|!Description/notes|An example of a TW that uses SinglePagePlugin and<br> substantially modifies the page layout to look more<br> like a single page website.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/twusersguide.png]]|
}}}
/***
| Name:|MptwLayoutPlugin|
| Description:|A package containing templates and css for the MonkeyPirateTiddlyWiki layout|
| Version:|6.1.1|
| Date:|01-Oct-2006|
| Source:|http://mptw.tiddlyspot.com/#MptwLayoutPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| CoreVersion:|2.1.x|
!Notes
Presumes you have TagglyTaggingPlugin installed.
***/
//{{{
config.shadowTiddlers.GettingStarted += "\n\nSee also MonkeyPirateTiddlyWiki.";
//}}}

//{{{
merge(config.shadowTiddlers,{

MonkeyPirateTiddlyWiki:[
 "[[MonkeyPirateTiddlyWiki|http://mptw.tiddlyspot.com]] is a distribution of [[TiddlyWiki|http://www.tiddlywiki.com/]] created by Simon Baird. See [[the web site|http://mptw.tiddlyspot.com/]] for more information.",
 "!!Upgrading ~MonkeyPirateTiddlyWiki",
 "This \"empty\" ~MonkeyPirateTiddlyWiki file comes pre-installed with the core ~MonkeyPirateTiddlyWiki plugins. You can upgrade these core plugins to the latest version by doing the following:",
 "# Click ImportTiddlers",
 "# Click \"Choose...\" and select \"~MptwUpgradeURL\"",
 "# Click \"fetch\"",
 "# Click the checkbox in the first column heading to select all tiddlers",
 "# Click \"More actions...\" and select \"Import these tiddlers\"",
 "# Click \"OK\" to confirm you want to overwrite the tiddlers",
 ""
].join("\n"),

MptwStyleSheet:[
 "/*{{{*/",
 "/* a contrasting background so I can see where one tiddler ends and the other begins */",
 "body {",
 "	background: [[ColorPalette::TertiaryLight]];",
 "}",
 "",
 "/* sexy colours and font for the header */",
 ".headerForeground {",
 "	color: [[ColorPalette::PrimaryLight]];",
 "}",
 ".headerShadow {",
 "	color: [[ColorPalette::PrimaryMid]];",
 "}",
 ".headerForeground, .headerShadow {",
 "	padding: 1em 1em 0;",
 "	font-family: 'Trebuchet MS' sans-serif;",
 "	font-weight:bold;",
 "}",
 "",
 "/* make shadow go and down right instead of up and left */",
 ".headerShadow {",
 "	left: 1px;",
 "	top: 1px;",
 "}",
 "",
 "/* prefer monospace for editing */",
 ".editor textarea {",
 "	font-family: 'Consolas' monospace;",
 "}",
 "",
 "/* sexy tiddler titles */",
 ".title {",
 "	font-size: 250%;",
 "	color: [[ColorPalette::PrimaryLight]];",
 "	font-family: 'Trebuchet MS' sans-serif;",
 "}",
 "",
 "/* more subtle tiddler subtitle */",
 ".subtitle {",
 "	padding:0px;",
 "	margin:0px;",
 "	padding-left:0.5em;",
 "	font-size: 90%;",
 "	color: [[ColorPalette::TertiaryMid]];",
 "}",
 ".subtitle .tiddlyLink {",
 "	color: [[ColorPalette::TertiaryMid]];",
 "}",
 "",
 "/* a little bit of extra whitespace */",
 ".viewer {",
 "	padding-bottom:3px;",
 "}",
 "",
 "/* don't want any background color for headings */",
 "h1,h2,h3,h4,h5,h6 {",
 "	background: [[ColorPalette::Background]];",
 "	color: [[ColorPalette::Foreground]];",
 "}",
 "",
 "/* give tiddlers 3d style border and explicit background */",
 ".tiddler {",
 "	background: [[ColorPalette::Background]];",
 "	border-right: 2px [[ColorPalette::TertiaryMid]] solid;",
 "	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;",
 "	margin-bottom: 1em;",
 "	padding-bottom: 2em;",
 "}",
 "",
 "/* make options slider look nicer */",
 "#sidebarOptions .sliderPanel {",
 "	border:solid 1px [[ColorPalette::PrimaryLight]];",
 "}",
 "",
 "",
 "/* the borders look wrong with the body background */",
 "#sidebar .button {",
 "	border-style: none;",
 "}",
 "",
 "/* displays the list of a tiddler's tags horizontally. used in ViewTemplate */",
 ".tagglyTagged li.listTitle {",
 "	display:none",
 "}",
 ".tagglyTagged li {",
 "	display: inline; font-size:90%;",
 "}",
 ".tagglyTagged ul {",
 "	margin:0px; padding:0px;",
 "}",
 "",
 "/* horizontal main menu stuff */",
 "#displayArea {",
 "	margin: 1em 15.7em 0em 1em; /* use the freed up space */",
 "}",
 "#topMenu br {",
 "	display: none;",
 "}",
 "#topMenu {",
 "	background: [[ColorPalette::PrimaryMid]];",
 "	color:[[ColorPalette::PrimaryPale]];",
 "}",
 "#topMenu {",
 "	padding:2px;",
 "}",
 "#topMenu .button, #topMenu .tiddlyLink, #topMenu a {",
 "	margin-left: 0.5em;",
 "	margin-right: 0.5em;",
 "	padding-left: 3px;",
 "	padding-right: 3px;",
 "	color: [[ColorPalette::PrimaryPale]];",
 "	font-size: 115%;",
 "}",
 "#topMenu .button:hover, #topMenu .tiddlyLink:hover {",
 "	background: [[ColorPalette::PrimaryDark]];",
 "}",
 "@media print {",
 "	#topMenu {",
 "		display: none ! important;",
 "	}",
 "}",
 "/*}}}*/",
 ""
].join("\n"),

MptwViewTemplate:[
 "<!--{{{-->",
 "<div class='toolbar'>",
 "	<!-- some custom contextual checkboxes -->",
 "	<span style=\"padding-right:2em;\" macro=\"showWhen tiddler.tags.contains('systemConfig')\">",
 "		<span macro=\"toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'\"></span>",
 "		<!-- <span macro=\"toggleTag systemConfigForce . '[[force|systemConfigForce]]'\"></span> -->",
 "	</span>",
 "	<!-- regular toolbar -->",
 "	<span macro='toolbar closeTiddler closeOthers +editTiddler deleteTiddler undoChanges permalink references jump newHere newJournalHere'></span>",
 "</div>",
 "<!-- regular tags macro but uses taggly css -->",
 "<div class=\"tagglyTagged\" macro=\"tags\"></div>",
 "<div>",
 "	<span class='title' macro='view title'></span>",
 "	<span macro=\"miniTag\"></span>",
 "</div>",
 "<div class='subtitle'>",
 "	<span macro='view modifier link'></span>,",
 "	<span macro='view modified date [[DD-mmm-YY]]'></span>",
 "	(<span macro='message views.wikified.createdPrompt'></span>",
 "	<span macro='view created date [[DD-mmm-YY]]'></span>)",
 "</div>",
 "<!-- using taggly versions of these two",
 "<div class='tagging' macro='tagging'></div>",
 "<div class='tagged' macro='tags'></div> -->",
 "<div macro=\"hideWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')\">",
 "	<div class='viewer' macro='view text wikified'></div>",
 "</div>",
 "<div macro=\"showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')\">",
 "	<div class='viewer'><pre macro='view text'></pre></div>",
 "</div>",
 "<div class=\"tagglyTagging\" macro=\"tagglyTagging\"></div>",
 "<div class='tagClear'></div>",
 "<!--}}}-->",
 ""
].join("\n"),

MptwPageTemplate:[
 "<!--{{{-->",
 "<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>",
 "	<div class='headerShadow'>",
 "		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;",
 "		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>",
 "	</div>",
 "	<div class='headerForeground'>",
 "		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;",
 "		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>",
 "	</div>",
 "</div>",
 "<!-- horizontal MainMenu -->",
 "<div id='topMenu' refresh='content' tiddler='MainMenu'></div>",
 "<!-- original MainMenu menu -->",
 "<!-- <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> -->",
 "<div id='sidebar'>",
 "	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>",
 "	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>",
 "</div>",
 "<div id='displayArea'>",
 "	<div id='messageArea'></div>",
 "	<div id='tiddlerDisplay'></div>",
 "</div>",
 "<!--}}}-->",
 ""
].join("\n"),

MptwEditTemplate:[
 "<!--{{{-->",
 "<div class=\"toolbar\" macro=\"toolbar +saveTiddler closeOthers cancelTiddler deleteTiddler\"></div>",
 "<div class=\"title\" macro=\"view title\"></div>",
 "<div class=\"editLabel\">Title</div><div class=\"editor\" macro=\"edit title\"></div>",
 "<div class=\"editLabel\">Tags</div><div class=\"editor\" macro=\"edit tags\"></div>",
 "<div class=\"editorFooter\"><span macro=\"message views.editor.tagPrompt\"></span><span macro=\"tagChooser\"></span></div>",
 "<div class=\"editor\" macro=\"edit text\"></div>",
 "<!--}}}-->",
 ""
].join("\n")

});
//}}}
URL: http://mptw.tiddlyspot.com/upgrade.html
/***
| Name:|NewHerePlugin|
| Description:|Creates the new here and new journal toolbar commands|
| Version:|6.9.3|
| Date:|30-Sep-2006|
| Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| CoreVersion:|2.1.x|
To use edit your ViewTemplate and add newHere to the toolbar div, eg
{{{<div class='toolbar' macro='toolbar ... newHere'></div>}}}
Note: would be good if we could do this instead some day
{{{<<newTiddler tag:{{tiddler.title}} label:'new here'>>}}}
***/
//{{{
merge(config.commands,{

	newHere: {
		text: 'new here',
		tooltip: 'Create a new tiddler tagged as this tiddler',
		hideReadOnly: true,
		handler: function(e,src,title) {
			if (!readOnly) {
				clearMessage();
				var t=document.getElementById('tiddler'+title);
				story.displayTiddler(t,config.macros.newTiddler.title,DEFAULT_EDIT_TEMPLATE);
				story.setTiddlerTag(config.macros.newTiddler.title, title, 0);
				story.focusTiddler(config.macros.newTiddler.title,"title"); // doesn't work??
				return false;
			}
		}
	},

	newJournalHere: {
		//text: 'new journal here',  // too long
		text: 'new journal',
		hideReadOnly: true,
		dataFormat: 'YYYY-0MM-0DD 0hh:0mm', // adjust to your preference
		tooltip: 'Create a new journal tiddler tagged as this tiddler',
		handler: function(e,src,title) {
			if (!readOnly) {
				clearMessage();
				var now = new Date();
				var t=document.getElementById('tiddler'+title);
				var newtitle = now.formatString(this.dataFormat)
				story.displayTiddler(t,newtitle,DEFAULT_EDIT_TEMPLATE);
				story.setTiddlerTag(newtitle, title, 0);
				story.focusTiddler(newtitle,"title");
				return false;
			}
		}
	}

});
//}}}
[[MptwPageTemplate]]
/***
| Name:|QuickOpenTagPlugin|
| Description:|Changes tag links to make it easier to open tags as tiddlers|
| Version:|6.1.1|
| Date:|01-Oct-2006|
| Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| CoreVersion:|2.1.x|
***/
//{{{
config.quickOpenTag = {

	dropdownChar: (document.all ? "\u25bc" : "\u25be"), // the little one doesn't work in IE

	createTagButton: function(place,tag,excludeTiddler) {
		// little hack so we can to <<tag PrettyTagName|RealTagName>>
		var splitTag = tag.split("|");
		var pretty = tag;
		if (splitTag.length == 2) {
			tag = splitTag[1];
			pretty = splitTag[0];
		}
		
		var sp = createTiddlyElement(place,"span",null,"quickopentag");
		createTiddlyText(createTiddlyLink(sp,tag,false),pretty);
		
		var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
                        config.views.wikified.tag.tooltip.format([tag]),onClickTag);
		theTag.setAttribute("tag",tag);
		if (excludeTiddler)
			theTag.setAttribute("tiddler",excludeTiddler);
    		return(theTag);
	},

	miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var tagged = store.getTaggedTiddlers(tiddler.title);
		if (tagged.length > 0) {
			var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
                        	config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
			theTag.setAttribute("tag",tiddler.title);
			theTag.className = "miniTag";
		}
	},

	allTagsHandler: function(place,macroName,params) {
		var tags = store.getTags();
		var theDateList = createTiddlyElement(place,"ul");
		if(tags.length == 0)
			createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);
		for (var t=0; t<tags.length; t++) {
			var theListItem = createTiddlyElement(theDateList,"li");
			var theLink = createTiddlyLink(theListItem,tags[t][0],true);
			var theCount = " (" + tags[t][1] + ")";
			theLink.appendChild(document.createTextNode(theCount));
			var theDropDownBtn = createTiddlyButton(theListItem," " +
			config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
			theDropDownBtn.setAttribute("tag",tags[t][0]);
		}
	},

	// todo fix these up a bit
	styles: 
"/*{{{*/\n"+
"/* created by QuickOpenTagPlugin */\n"+
".tagglyTagged .quickopentag, .tagged .quickopentag \n"+
"	{ margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }\n"+
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }\n"+
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}\n"+
"/* extra specificity to make it work right */\n"+
"#displayArea .viewer .quickopentag a.button, \n"+
"#displayArea .viewer .quickopentag a.tiddyLink, \n"+
"#mainMenu .quickopentag a.tiddyLink, \n"+
"#mainMenu .quickopentag a.tiddyLink \n"+
"	{ border:0px solid black; }\n"+
"#displayArea .viewer .quickopentag a.button, \n"+
"#mainMenu .quickopentag a.button \n"+
"	{ margin-left:0px; padding-left:2px; }\n"+
"#displayArea .viewer .quickopentag a.tiddlyLink, \n"+
"#mainMenu .quickopentag a.tiddlyLink \n"+
"	{ margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }\n"+
"a.miniTag {font-size:150%;} \n"+
"#mainMenu .quickopentag a.button \n"+
"	/* looks better in right justified main menus */\n"+
"	{ margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }\n" + 
"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }\n" +
"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }\n" +
"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }\n" +
"/*}}}*/\n"+
		"",

	init: function() {
		// we fully replace these builtins. can't hijack them easily
		window.createTagButton = this.createTagButton;
		config.macros.allTags.handler = this.allTagsHandler;
		config.macros.miniTag = { handler: this.miniTagHandler };
		config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;
		if (store)
			store.addNotification("QuickOpenTagStyles",refreshStyles);
		else
			config.notifyTiddlers.push({name:"QuickOpenTagStyles", notify: refreshStyles});
	}

}

config.quickOpenTag.init();

//}}}
/***
| Name:|RenameTagsPlugin|
| Description:|Allows you to easily rename or delete tags across multiple tiddlers|
| Version:|6.9.3|
| Date:|30-Sep-2006|
| Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| CoreVersion:|2.1.x|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
***/
//{{{
config.renameTags = {

	prompts: {
		rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
		remove: "Remove the tag '%0' from %1 tidder%2?"
	},

	removeTag: function(tag,tiddlers) {
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,tag);
		}
	},

	renameTag: function(oldTag,newTag,tiddlers) {
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old
			store.setTiddlerTag(tiddlers[i].title,true,newTag);  // add new
		}
	},

	storeMethods: {

		saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,

		saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields) {
			if (title != newTitle) {
				var tagged = this.getTaggedTiddlers(title);
				if (tagged.length > 0) {
					// then we are renaming a tag
					if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))
						config.renameTags.renameTag(title,newTitle,tagged);

					if (!this.tiddlerExists(title) && newBody == "")
						// dont create unwanted tiddler
						return null;
				}
			}
			return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields);
		},

		removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,

		removeTiddler: function(title) {
			var tagged = this.getTaggedTiddlers(title);
			if (tagged.length > 0)
				if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
					config.renameTags.removeTag(title,tagged);
			return this.removeTiddler_orig_renameTags(title);
		}

	},

	init: function() {
		merge(TiddlyWiki.prototype,this.storeMethods);
	}
}

config.renameTags.init();

//}}}

A showcase of TiddlyWikis used creatively around the world
{{niceTable{
|!Title/link|@@font-weight:bold;font-size:150%;[[$1|$2]]@@|
|!Creator|$3|
|!Subject matter|$4|
|!Description/notes|$6|
|!Screenshot|[img[screenshot|$5]]|
}}}
[[TiddlyWiki|http://www.tiddlywiki.com]] in Action
[[MptwStyleSheet]]
.title { color:[[ColorPalette::SecondaryDark]]; }

.niceTable td, .niceTable th, .niceTable tr {
  border-style:none;
}

.niceTable td, .niceTable th {
  vertical-align:top;
  padding:0.5em;
}

.niceTable table {
  border:1px #aaa solid;
  background-color:#f8f8f8;
}

.niceTable td img {
  border:1px solid #555;
  text-align:center;
  margin:0 1em 1em 0;
}

.niceTable th {
  background-color:#f8f8f8;
  color:#555;
  font-size:90%;
  font-weight:bold;
  text-align:right;
}
/***
| Name:|TagglyTaggingPlugin|
| Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
| Version:|6.9.3|
| Date:|30-Sep-2006|
| Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| CoreVersion:|2.1.x|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{
config.taggly = {

	// for translations
	lingo: {
		labels: {
			asc:      "\u2191", // down arrow
			desc:     "\u2193", // up arrow
			title:    "title",
			modified: "modified",
			created:  "created",
			show:     "+",
			hide:     "-",
			normal:   "normal",
			group:    "group",
			commas:   "commas",
			sitemap:  "sitemap",
			numCols:  "cols\u00b1", // plus minus sign
			label:    "Tagged as %0:"
		},

		tooltips: {
			title:    "Click to sort by title",
			modified: "Click to sort by modified date",
			created:  "Click to sort by created date",
			show:     "Click to show tagging list",
			hide:     "Click to hide tagging list",
			normal:   "Click to show a normal ungrouped list",
			group:    "Click to show list grouped by tag",
			sitemap:  "Click to show a sitemap style list",
			commas:   "Click to show a comma separated list",
			numCols:  "Click to change number of columns"
		}
	},

	config: {
		showTaggingCounts: true,
		listOpts: {
			// the first one will be the default
			sortBy:     ["title","modified","created"],
			sortOrder:  ["asc","desc"],
			hideState:  ["show","hide"],
			listMode:   ["normal","group","sitemap","commas"],
			numCols:    ["1","2","3","4","5","6"]
		},
		valuePrefix: "taggly."
	},

	getTagglyOpt: function(title,opt) {
		var val = store.getValue(title,this.config.valuePrefix+opt);
		return val ? val : this.config.listOpts[opt][0];
	},

	setTagglyOpt: function(title,opt,value) {
		if (!store.tiddlerExists(title))
			// create it silently
			store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),null);
		// if value is default then remove it to save space
		return store.setValue(title,
			this.config.valuePrefix+opt,
			value == this.config.listOpts[opt][0] ? null : value);
	},

	getNextValue: function(title,opt) {
		var current = this.getTagglyOpt(title,opt);
		var pos = this.config.listOpts[opt].indexOf(current);
		// a little usability enhancement. actually it doesn't work right for grouped or sitemap
		var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);
		var newPos = (pos + 1) % limit;
		return this.config.listOpts[opt][newPos];
	},

	toggleTagglyOpt: function(title,opt) {
		var newVal = this.getNextValue(title,opt);
		this.setTagglyOpt(title,opt,newVal);
	}, 

	createListControl: function(place,title,type) {
		var lingo = config.taggly.lingo;
		var label;
		var tooltip;
		var onclick;

		if ((type == "title" || type == "modified" || type == "created")) {
			// "special" controls. a little tricky. derived from sortOrder and sortBy
			label = lingo.labels[type];
			tooltip = lingo.tooltips[type];

			if (this.getTagglyOpt(title,"sortBy") == type) {
				label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
				onclick = function() {
					config.taggly.toggleTagglyOpt(title,"sortOrder");
					return false;
				}
			}
			else {
				onclick = function() {
					config.taggly.setTagglyOpt(title,"sortBy",type);
					config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
					return false;
				}
			}
		}
		else {
			// "regular" controls, nice and simple
			label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
			tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
			onclick = function() {
				config.taggly.toggleTagglyOpt(title,type);
				return false;
			}
		}

		// hide button because commas don't have columns
		if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
			createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
	},

	makeColumns: function(orig,numCols) {
		var listSize = orig.length;
		var colSize = listSize/numCols;
		var remainder = listSize % numCols;

		var upperColsize = colSize;
		var lowerColsize = colSize;

		if (colSize != Math.floor(colSize)) {
			// it's not an exact fit so..
			upperColsize = Math.floor(colSize) + 1;
			lowerColsize = Math.floor(colSize);
		}

		var output = [];
		var c = 0;
		for (var j=0;j<numCols;j++) {
			var singleCol = [];
			var thisSize = j < remainder ? upperColsize : lowerColsize;
			for (var i=0;i<thisSize;i++) 
				singleCol.push(orig[c++]);
			output.push(singleCol);
		}

		return output;
	},

	drawTable: function(place,columns,theClass) {
		var newTable = createTiddlyElement(place,"table",null,theClass);
		var newTbody = createTiddlyElement(newTable,"tbody");
		var newTr = createTiddlyElement(newTbody,"tr");
		for (var j=0;j<columns.length;j++) {
			var colOutput = "";
			for (var i=0;i<columns[j].length;i++) 
				colOutput += columns[j][i];
			var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
			wikify(colOutput,newTd);
		}
		return newTable;
	},

	createTagglyList: function(place,title) {
		switch(this.getTagglyOpt(title,"listMode")) {
			case "group":  return this.createTagglyListGrouped(place,title); break;
			case "normal": return this.createTagglyListNormal(place,title,false); break;
			case "commas": return this.createTagglyListNormal(place,title,true); break;
			case "sitemap":return this.createTagglyListSiteMap(place,title); break;
		}
	},

	getTaggingCount: function(title) {
		// thanks to Doug Edmunds
		if (this.config.showTaggingCounts) {
			var tagCount = store.getTaggedTiddlers(title).length;
			if (tagCount > 0)
				return " ("+tagCount+")";
		}
		return "";
	},

	// this is for normal and commas mode
	createTagglyListNormal: function(place,title,useCommas) {

		var list = store.getTaggedTiddlers(title,this.getTagglyOpt(title,"sortBy"));

		if (this.getTagglyOpt(title,"sortOrder") == "desc")
			list = list.reverse();

		var output = [];
		for (var i=0;i<list.length;i++) {
			var countString = this.getTaggingCount(list[i].title);
			if (useCommas)
				output.push((i > 0 ? ", " : "") + "[[" + list[i].title + "]]" + countString);
			else
				output.push("*[[" + list[i].title + "]]" + countString + "\n");
		}

		return this.drawTable(place,
			this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
			useCommas ? "commas" : "normal");
	},

	// this is for the "grouped" mode
	createTagglyListGrouped: function(place,title) {
		var sortBy = this.getTagglyOpt(title,"sortBy");
		var sortOrder = this.getTagglyOpt(title,"sortOrder");

		var list = store.getTaggedTiddlers(title,sortBy);

		if (sortOrder == "desc")
			list = list.reverse();

		var leftOvers = []
		for (var i=0;i<list.length;i++)
			leftOvers.push(list[i].title);

		var allTagsHolder = {};
		for (var i=0;i<list.length;i++) {
			for (var j=0;j<list[i].tags.length;j++) {

				if (list[i].tags[j] != title) { // not this tiddler

					if (!allTagsHolder[list[i].tags[j]])
						allTagsHolder[list[i].tags[j]] = "";

					allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
									+ this.getTaggingCount(list[i].title) + "\n";
					leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers
				}
			}
		}

		var allTags = [];
		for (var t in allTagsHolder)
			allTags.push(t);

		var sortHelper = function(a,b) {
			if (a == b) return 0;
			if (a < b) return -1;
			return 1;
		};

		allTags.sort(function(a,b) {
			var tidA = store.getTiddler(a);
			var tidB = store.getTiddler(b);
			if (sortBy == "title") return sortHelper(a,b);
			else if (!tidA && !tidB) return 0;
			else if (!tidA) return -1;
			else if (!tidB) return +1;
			else return sortHelper(tidA[sortBy],tidB[sortBy]);
		});

		var leftOverOutput = "";
		for (var i=0;i<leftOvers.length;i++)
			leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + "\n";

		var output = [];

		if (sortOrder == "desc")
			allTags.reverse();
		else if (leftOverOutput != "")
			// leftovers first...
			output.push(leftOverOutput);

		for (var i=0;i<allTags.length;i++)
			output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(leftOvers[i]) + "\n" + allTagsHolder[allTags[i]]);

		if (sortOrder == "desc" && leftOverOutput != "")
			// leftovers last...
			output.push(leftOverOutput);

		return this.drawTable(place,
				this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
				"grouped");

	},

	// used to build site map
	treeTraverse: function(title,depth,sortBy,sortOrder) {

		var list = store.getTaggedTiddlers(title,sortBy);
		if (sortOrder == "desc")
			list.reverse();

		var indent = "";
		for (var j=0;j<depth;j++)
			indent += "*"

		var childOutput = "";
		for (var i=0;i<list.length;i++)
			if (list[i].title != title)
				childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder);

		if (depth == 0)
			return childOutput;
		else
			return indent + "[["+title+"]]" + this.getTaggingCount(title) + "\n"+childOutput;
	},

	// this if for the site map mode
	createTagglyListSiteMap: function(place,title) {
		var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"));
		return this.drawTable(place,
				this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
				"sitemap"
				);
	},

	macros: {
		tagglyTagging: {
			handler: function (place,macroName,params,wikifier,paramString,tiddler) {
				var refreshContainer = createTiddlyElement(place,"div");
				// do some refresh magic to make it keep the list fresh - thanks Saq
				refreshContainer.setAttribute("refresh","macro");
				refreshContainer.setAttribute("macroName",macroName);
        			refreshContainer.setAttribute("title",tiddler.title);
				this.refresh(refreshContainer);
			},

			refresh: function(place) {
				var title = place.getAttribute("title");
				removeChildren(place);
				if (store.getTaggedTiddlers(title).length > 0) {
					var lingo = config.taggly.lingo;
					config.taggly.createListControl(place,title,"hideState");
					if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
						createTiddlyElement(place,"span",null,"tagglyLabel",lingo.labels.label.format([title]));
						config.taggly.createListControl(place,title,"title");
						config.taggly.createListControl(place,title,"modified");
						config.taggly.createListControl(place,title,"created");
						config.taggly.createListControl(place,title,"listMode");
						config.taggly.createListControl(place,title,"numCols");
						config.taggly.createTagglyList(place,title);
					}
				}
			}
		}
	},

	// todo fix these up a bit
	styles: 
"/*{{{*/\n"+
"/* created by TagglyTaggingPlugin */\n"+
".tagglyTagging { padding-top:0.5em; }\n"+
".tagglyTagging li.listTitle { display:none; }\n"+
".tagglyTagging ul {\n"+
"	margin-top:0px; padding-top:0.5em; padding-left:2em;\n"+
"	margin-bottom:0px; padding-bottom:0px;\n"+
"}\n"+
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }\n"+
".tagglyTagging table { margin:0px; padding:0px; }\n"+
".tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }\n"+
".tagglyTagging .button, .tagglyTagging .hidebutton {\n"+
"	color:[[ColorPalette::TertiaryLight]]; font-size:90%;\n"+
"	border:0px; padding-left:0.3em;padding-right:0.3em;\n"+
"}\n"+
".tagglyTagging .button:hover, .hidebutton:hover {\n"+
"	background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];\n"+
"}\n"+
".selected .tagglyTagging .button {\n"+
"	display:inline;\n"+
"}\n"+
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }\n"+
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }\n"+
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }\n"+
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }\n"+
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}\n"+
".tagglyTagging ul ul li {margin-left:0.5em; }\n"+
".editLabel { font-size:90%; padding-top:0.5em; }\n"+
".tagglyTagging .commas { padding-left:1.8em; }\n"+
"/*}}}*/\n"+
		"",

	init: function() {
		merge(config.macros,this.macros);
		config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
		if (store)
			store.addNotification("TagglyTaggingStyles",refreshStyles);
		else
			config.notifyTiddlers.push({name:"TagglyTaggingStyles", notify: refreshStyles});
	}
};

config.taggly.init();

//}}}

''~TiddlyWiki in Action'' is meant to be a way to connect you to as many ~TiddlyWikis around the world as possible. When you see what others are doing with ~TiddlyWiki, it should give you fresh ideas for our own ~TiddlyWikis. This site is also meant to serve as a link repository for ~TiddlyWikis. So feel free to add your own ~TiddlyWiki sites.

For a categorized index of ~TiddlyWiki plugins, macros and themes, see our ~TiddlyVault at http://tiddlyvault.tiddlyspot.com.

[[TiddlyWiki documentation and tutorials]]
[[TiddlyWiki goodies: themes, colors and special goodies]]
[[TiddlyWiki hosting sites]]

[[TiddlyWiki used for to-do lists and productivity]]
[[TiddlyWiki used for blogs, personal websites, and non-profit websites]]
[[TiddlyWiki used for photos and presentations]]
[[TiddlyWiki used for education]]
[[TiddlyWiki used for health care]]
[[TiddlyWiki used for publishing]]
[[TiddlyWiki used for commercial use]]
[[TiddlyWiki used to organize data on various topics]]
[[Miscellaneous special functions and designs using TiddlyWiki]]
[[TiddlyWiki in other languages]]
! Documentation

{{niceTable{
|!Title/link|[[TiddlyWiki|http://www.tiddlywiki.com]]|
|!Creator|Jeremy Ruston|
|!Description/notes|The official home of TiddlyWiki|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/tiddlywiki.png]]|
}}}

{{niceTable{
|!Title/link|[[TiddlyDoc|http://doc.tiddlywiki.org/]]|
|!Creator|Jeremy Ruston|
|!Description/notes|Official documentation site for TiddlyWiki|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/TiddlyDoc.png]]|
}}}

!Tutorials

{{niceTable{
|!Title/link|[[TiddlyWiki Guides|http://tiddlywikiguides.org/index.php?title=TiddlyWiki_Guides]]|
|!Creator|Simon and Daniel Baird|
|!Description/notes||
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/twguides.png]]|
}}}

{{niceTable{
|!Title/link|[[TiddlyWikiFAQ|http://twfaq.tiddlyspot.com/]]|
|!Creator|Simon Baird|
|!Description/notes||
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/twfaqtspot.png]]|
}}}

{{niceTable{
|!Title/link|[[TiddlyWiki for the rest of us|http://www.giffmex.org/twfortherestofus.html]]|
|!Creator|Dave Gifford|
|!Subject matter|Tutorial|
|!Description/notes|A simple, entry-level tutorial for non-programmers.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/twfortherestofus.png]]|
}}}

{{niceTable{
|!Title/link|[[Tutorial Básico de TiddlyWiki|http://www.giffmex.org/twtutorialespanol.html]]|
|!Creator|Dave Gifford|
|!Subject matter|Tutorial|
|!Description/notes|Una versión incompleta del tutorial en inglés|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/tutorialbasico.png]]|
}}}

{{niceTable{
|!Title/link|[[TW Help|http://twhelp.tiddlyspot.com]]|
|!Creator|Morris Gray|
|!Subject matter|Tutorial|
|!Description/notes||
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/twhelp.png]]|
}}}

{{niceTable{
|!Title/link|[[Guida a TiddlyWiki|http://pollio.maurizio.googlepages.com/MiniGuidaTiddlyWiki.html]]|
|!Creator|Maurizio Pollio|
|!Subject matter|An italian TiddlyWiki tutorial with samples|
|!Description/notes|On this TiddlyWiki is available italian translation plugin for<br> TiddlyWiki version 2.1.3 |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/guidatw.GIF]]|
}}}

{{niceTable{
|!Title/link|[[TiddlyWikiHandbuch|http://tiddlywikihandbuch.de/tiddlywikihandbuch.html]]|
|!Creator|Swen Schneider|
|!Subject matter|Tutorial|
|!Description/notes|A TiddlyWiki manual in German |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/twhandbuch.png]]|
}}}

{{niceTable{
|!Title/link|[[Mijn Nederlandse TiddlyWiki Handleiding|http://www.ton-van-rooijen.nl/TW/TWhandleiding.html]]|
|!Creator|Ton van Rooijen|
|!Description/notes|A Dutch tutorial and reference for the usage of TiddlyWiki.<br> Of course it also contains a link to download a ready-to-use<br> empty Dutch TiddlyWiki."<br>"Een Nederlandstalige handleiding voor het werken met<br> TiddlyWiki. Natuurlijk met een link voor het downloaden van <br>een lege Nederlandstalige TiddlyWiki, klaar voor gebruik.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/nederlandse.PNG]]|
}}}
For a categorized index of TiddlyWiki macros and plugins, see our TiddlyVault at http://tiddlyvault.tiddlyspot.com.

!Collections of themes and color schemes

{{niceTable{
|!Title/link|[[TiddlyFolio|http://tiddlyfolio.tiddlyspot.com]]|
|!Creator|EatsWombats|
|!Description/notes|Electronic wallet. TiddlyFolio is a wiki wallet -- for storing copies<br> of your passwords, credit card details and other important<br> personal information in an encrypted form. For the USB memory<br> stick on your keyring. |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/tiddlyfolio.png]]|
}}}

{{niceTable{
|!Title/link|[[Color combinations|http://www.giffmex.org/twfortherestofus.html#ColorSchemes]]|
|!Creator|Dave Gifford|
|!Description/notes|Several color palettes to choose from|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/tutorialcolorschemes.png]]|
}}}

{{niceTable{
|!Title/link|[[TiddlyThemes|http://tiddlythemes.com/#Home]]|
|!Creator|Saq Imtiaz|
|!Description/notes|Growing collection of themes for TiddlyWiki|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/tiddlythemes.png]]|
}}}

{{niceTable{
|!Title/link|[[Tiddlyspot|http://tiddlyspot.com]]|
|!Creator|Daniel and Simon Baird|
|!Description/notes|Free TiddlyWiki hosting|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/tiddlyspot.png]]|
}}}
!Catalan

{{niceTable{
|!Title/link|[[TiddlyWiki in Català|http://tw.pacoriviere.cat]]|
|!Creator|Paco Rivière|
|!Subject matter|Blog|
|!Description/notes|Blog with Catalan TW resources|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/twcatalan.GIF]]|
}}}

! Dutch

{{niceTable{
|!Title/link|[[Ton's eigen website!|http://www.ton-van-rooijen.nl]]|
|!Creator|Ton van Rooijen|
|!Description/notes|My site is about everything I'm proud of: my sons and their <br>wives/girlfriends, my little grandson, my family, my life. <br>And not to forget, it is at the same time a promotion for TW as <br>such and features the Dutch ~TW-translation and a Dutch <br>~TW-tutorial (both of which I am the author) and provides links to <br>download them.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/vanrooijen.png]]|
}}}

! German / deutsch

{{niceTable{
|!Title/link|[[TiddlyWikiHandbuch|http://tiddlywikihandbuch.de/tiddlywikihandbuch.html]]|
|!Creator|Swen Schneider|
|!Subject matter|Tutorial|
|!Description/notes|A TiddlyWiki manual in German |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/twhandbuch.png]]|
}}}

! Italian / Italiano

{{niceTable{
|!Title/link|[[Corax|http://corax.altervista.org/]]|
|!Creator|Oscar Collini|
|!Subject matter|My blog about, well, anything and everything|
|!Description/notes|Probably the first Italian blog using TiddlyWiki, <br>hopefully there will be many more|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/corax.jpg]]|
}}}

{{niceTable{
|!Title/link|[[Guida a TiddlyWiki|http://pollio.maurizio.googlepages.com/MiniGuidaTiddlyWiki.html]]|
|!Creator|Maurizio Pollio|
|!Subject matter|An italian TiddlyWiki tutorial with samples|
|!Description/notes|On this TiddlyWiki is available italian translation plugin for TiddlyWiki version 2.1.3 |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/guidatw.GIF]]|
}}}

{{niceTable{
|!Title/link|[[d3 - un GTD in italiano semplice da usare|http://pollio.maurizio.googlepages.com/it-d3-gtd-sample.html]]|
|!Creator|Maurizio Pollio|
|!Subject matter|an italian adaptation of d-cubed GTD|
|!Description/notes|Based on version 1.0.10 of d-cubed GTD|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/d3italiano.GIF]]|
}}}

! Portuguese

{{niceTable{
|!Title/link|[[Escriba|http://escriba.tiddlyspot.com]]|
|!Creator|Marcelo Stein de Lima Sousa|
|!Subject matter|Environmental Epistemology and Sociology|
|!Description/notes|Homepage of the Environmental Epistemology & Sociology<br>Group, Graduate Program of Environment & Development<br> (Doutorado em Meio Ambiente & Desenvolvimento, MADE),<br> Federal University of Paraná at Curitiba, Brazil. |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/escriba.GIF]]|
}}}

! Spanish / español

{{niceTable{
|!Title/link|[[Tutorial Básico de TiddlyWiki|http://www.giffmex.org/twtutorialespanol.html]]|
|!Creator|Dave Gifford|
|!Subject matter|Tutorial|
|!Description/notes|Una versión incompleta del tutorial en inglés|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/tutorialbasico.png]]|
}}}

! Vietnamese

{{niceTable{
|!Title/link|[[nikenh|http://nikenhn.moved.in/cc/]]|
|!Creator|nikenhn|
|!Description/notes|Very nice looking Vietnamese blog|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/nikenhn.GIF]]|
}}}
{{niceTable{
|!Title/link|[[StealthBus|http://www.stealthbus.net]]|
|!Creator|Peter Chave|
|!Description/notes|A place to dump all my notes and design ideas,<br> progress, success, failures in converting a 1973<br> VW microbus to all electric.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/stealthbus.png]]|
}}}

{{niceTable{
|!Title/link|[[Firemaker Primitive Skills Society |http://www.firemaker.org]]|
|!Creator|Firemaker Council|
|!Description/notes|Primitive Skills|
|!Screenshot|[img[http://www.giffmex.org/images/primitive.jpg]]|
}}}


{{niceTable{
|!Title/link|[[The Church of Christ the King|http://www.christthekingfortworth.org]]|
|!Creator|Rob Boss|
|!Subject matter|This is a church website in Fort Worth, Texas|
|!Description/notes|Notes: I combined a Presentation tiddlywiki with <br>a tweaked Kubrick theme.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/christtheking.GIF]]|
}}}


{{niceTable{
|!Title/link|[[Corax|http://corax.altervista.org/]]|
|!Creator|Oscar Collini|
|!Subject matter|My blog about, well, anything and everything|
|!Description/notes|Probably the first Italian blog using TiddlyWiki,<br> hopefully there will be many more|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/corax.jpg]]|
}}}

{{niceTable{
|!Title/link|[[Japanese Haiku|http://www.ako.net.nz/wiki/haiku/index.html]]|
|!Creator|Lynsey Gedye|
|!Subject matter|Classical Japanese Haiku|
|!Description/notes|PA short collection of a couple of hundred<br>Japanese haiku, originally printed by the art book small press, <br>Peter Pauper. Each haiku is accompanied by one of 59 Japanese<br> seals. I wrote this presentation of classic haiku using a Tiddlywiki <br>engine to begin exploring to possibility of using Tiddlywiki to <br>create hypertext fiction.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/haiku.png]]|
}}}

{{niceTable{
|!Title/link|[[~EdgarJ's web notebook of thoughts, rants & raves|http://elj.tiddlyspot.com/]]|
|!Creator|~EdgarJ|
|!Description/notes|Thoughts, rants & raves|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/edgarjpotpourri.png]]|
}}}

{{niceTable{
|!Title/link|[[nikenh|http://nikenhn.moved.in/cc/]]|
|!Creator|nikenhn|
|!Description/notes|Very nice looking Vietnamese blog|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/nikenhn.GIF]]|
}}}

{{niceTable{
|!Title/link|[[The Glass Atlas|http://theglassatlas.tiddlyspot.com/]]|
|!Creator|Dave Parker|
|!Description/notes|My thoughts on the Christian Worldview. Although I do hope to<br>win Christians away from old-earthism and pre-millennial<br>dispensationalism (and therefore make them more effective <br>ambassadors for Christ's Kingdom), this is mainly an unedited <br>(i.e. in need of editing) place for me to capture my thoughts on <br>my favorite topics.  I've put the comments thing in there mainly <br>to see if I could do it, but hesitantly because, if anyone actually <br>reads this, I'm not sure if I have the time to respond much.  Oh, <br>yeah, I am open to being corrected in errant views, but I'll want <br>some scripture to back up arguments against me (and I have a <br>stubborness character flaw- hopefully God will use that for the<br> good ;-).  On the technical side, I slightly modified the <br>//~ESVInlineMacro// by Jeremy Cowgar so it brought back scripture <br>as text instead of html, and left only text instead of the <br>{{{<<macro>>}}} thingie so I could bold / highlight the scripture where <br>needed.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/glassatlas.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Keith's Web Sites Home Page|http://www.keithrichardson.co.uk]]|
|!Creator|Keith Richardson|
|!Description/notes|A portal that deals with politics, lifestyles, nature and<br> e-learning. I am using TiddlyWiki as a blog and portal <br>to my other Joomla base web-sites.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/keithshomepage.GIF]]|
}}}

{{niceTable{
|!Title/link|[[RatbagMedia|http://ratbagradio.tiddlyspot.com/]]|
|!Creator|Dave Riley|
|!Description/notes|~RatbagMedia ~TiddlyWiki is a new component in a blog and <br>podcasting network which also functions as a log of various<br> projects. So it archives information, showcases published<br> material in various media formats and backs up an active <br>blogging lifestyle. It more or less serves as a personal  wiki space <br>whose contents can be quickly searched,  accessed and shared<br> if required.<br><br>~RatbagMedia ~TiddlyWiki is also an exercise in mastering the <br>application and exploring how far the envelope can be advanced<br> especially in way of sharing media.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/ratbag.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Ethics Salamanca, portal de ética de la Universidad de Salamanca|http://ethicsalamanca.usal.es]]|
|!Creator|David ~Rodríguez-Arias & Alberto Molina Pérez|
|!Subject matter|Ethics, bioethics, applied ethics, environmental ethics, <br>feminism, end of life, etc.|
|!Description/notes|Homepage of the department of ethics of the University of <br>Salamanca, with information on publications, courses, events,<br> and much more.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/ethicssalamanca.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Fiveprime|http://www.fiveprime.org]]|
|!Creator|Nathan Siemers|
|!Description/notes|Home page for Nathan Siemers with various clippings from<br> Pharmaceutical News, Politics, and Software development.  Tools<br> for programmatic Tiddlywiki generation and Flickr Data Mining. |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/fiveprime.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Taellik's Asylum|http://www.geocities.com/chainpunch]]|
|!Creator|Greg Smith|
|!Description/notes|Personal website of hobbies, interests, etc.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/taellik.GIF]]|
}}}

{{niceTable{
|!Title/link|[[StempWiki|http://www.stemp.org.uk]]|
|!Creator|Richard Stemp|
|!Description/notes|Personal reminders / blogs / bookmarks / testing<br> Tiddlywiki ideas and pluginsAdded. Content Slider.<br> Continually updating site. Half the fun is playing <br>with and changing my Tiddlywiki, not just adding<br> more content.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/stempwiki.png]]|
}}}

{{niceTable{
|!Title/link|[[Ton's eigen website!|http://www.ton-van-rooijen.nl]]|
|!Creator|Ton van Rooijen|
|!Description/notes|My site is about everything I'm proud of: my sons and their <br>wives/girlfriends, my little grandson, my family, my life. <br>And not to forget, it is at the same time a promotion for TW as <br>such and features the Dutch ~TW-translation and a Dutch <br>~TW-tutorial (both of which I am the author) and provides links to <br>download them.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/vanrooijen.png]]|
}}}

{{niceTable{
|!Title/link|[[The Ultimate-Bookmark|http://theultimatebookmark.tiddlyspot.com]]|
|!Creator|Morris Gray|
|!Subject matter|An invention for marking book pages|
|!Description/notes|A commercial/charity venture for the underprivileged <br>and unemployed.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/ubook.PNG]]|
}}}

{{niceTable{
|!Title/link|[[SparxFly|http://www.sparxfly.co.nz]]|
|!Creator|Stuart Parker|
|!Subject matter|Microlight instruments, microlight and motorcycle intercoms, <br>microlight build project|
|!Description/notes|Tiddlers are a tidy way of presenting info for each instrument.<br>Slicing pulls in individual prices from a master pricelist tiddler<br>Plugins: accordion menu,  table calculator, jump to top of tiddler<br>TW is an easy way to provide a clean, consistent, intuitive user<br> interface.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/sparxfly.png]]|
}}}

{{niceTable{
|!Title/link|[[BCQ support|http://bcgprintonline.com/faq/index.html]]|
|!Creator|Richard Stemp|
|!Subject matter|FAQ knowledge base and support for our online ordering<br> website|
|!Description/notes|Used Toggle Sidebar Plugin to hide sidebar and <br> WebTemplatePluginto hide editing features and tiddler<br> titles. Also using ExcludeSearchand ExcludeList - basically<br> hiding anything that might freak out the end user.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/bcqsupport.png]]|
}}}

||
{{niceTable{
|!Title/link|[[Pacific Northwest Amateur Astronomy Thesaurus|http://students.washington.edu/adcockm/amateurastronomythesaurus/]]|
|!Creator|Michael Adcock, Sonja Sutherland and Tim Shockley|
|!Subject matter|Amateur astronomy; thesaurus; grad school class project|
|!Description/notes|This was created during a course project in Fall 2007 involving a <br>group of 3 graduate students (mentioned above) in the MLIS <br>program at the University of Washington Information School. <br>The project assignment was to construct a thesaurus.  The <br>~TiddlyWiki I adapted includes a fair amount of custom code and <br>some layout changes that made the thesaurus construction <br>process easier. It also functions as an end-user tool, being an <br>interactive version of the thesaurus.<br><br>The instructor was so pleased with it that I’m planning to do an<br> independent study in summer 2008 to make this into an<br> instructional tool. The end result will likely be used when teaching<br> future courses, and I plan to rework the custom code as proper <br>plugins which can be reused more easily. Ultimately I’d like to end<br> up with a starter ~TiddlyThesaurus that others can repurpose for<br> their use.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/amateurastronomy.GIF]]|
}}}

{{niceTable{
|!Title/link|[[iA SUMMIT 2008 TiddlyWiki|http://students.washington.edu/adcockm/IASummit/IASummit2008.html]]|
|!Creator|Michael Adcock|
|!Subject matter|Information Architecture Summit 2008|
|!Description/notes|I wanted a way to easily review the conference sessions and<br> decide which of the talks I was most interested in, etc. The official<br> website contained all the information, but I wanted to manipulate<br> it. It includes a “favorites” feature so you can easily build a custom<br> schedule out of the sessions you are interested in. Since it’s a<br> ~TiddlyWiki, the search feature is very useful as well.<br><br>Includes an ~InsertStar plugin that I created based on <br>~InsertSmiley.I hand edited the star graphic that is displayed.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/iasummit.GIF]]|
}}}

{{niceTable{
|!Title/link|[[BibblyWiki|http://www.giffmex.org/bibblywiki.html]]|
|!Creator|Dave Gifford|
|!Subject matter|Bibliographies, notetaking, personal library organization|
|!Description/notes|~BibblyWiki creates pre-formatted bibliographies and several helpful<br> indexes using the data you enter for your books. You can take <br>notes on each book as well.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/bibblywiki.GIF]]|
}}}

{{niceTable{
|!Title/link|[[EC Moodlings|http://www.earlham.edu/~markp/moodle_dox/]]|
|!Creator|Mark Pearson|
|!Subject matter|Moodle and associated Instructional Technologies|
|!Description/notes|This is due for a revamp. I found Alan Heckt's FAQlist macro very<br> useful, eg Moodle FAQ [[See here|http://www.earlham.edu/%7Emarkp/moodle_dox/#%5B%5BMoodle%20FAQ%5D%5D]]|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/ecmoodlings.GIF]]|
}}}

{{niceTable{
|!Title/link|[[The Plaid Fedora|http://plaidfedora.info/]]|
|!Creator|A.C. Reisner|
|!Subject matter|Languages, Linguistics|
|!Description|The Plaid Fedora is a collection of bits of interesting information about <br>languages and the science and art behind them.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/plaidfedora.GIF]]|
}}}

{{niceTable{
|!Title/link|[[EarWicki - Auditory Physics Group|http://mit.edu/apg/]]|
|!Creator|Christopher Shera|
|!Subject matter|Auditory physics|
|!Description/notes|Homepage of the Harvard/MIT Auditory Physics Group |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/earwicki.GIF]]|
}}}

{{niceTable{
|!Title/link|[[E Springer|http://espringer.web.wesleyan.edu]]|
|!Creator|E Springer|
|!Subject matter|Philosophy, ethics|
|!Description/notes|My basic site, with a web of philosophical ideas|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/elisespringer.png]]|
}}}

{{niceTable{
|!Title/link|[[American Pragmatist Philosophy|http://parmenides.objectis.net/321]]|
|!Creator|E Springer|
|!Subject matter|Philosophy|
|!Description/notes|[[ZiddlyWiki|http://www.ziddlywiki.com]] site for seminar discussion|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/ampragphil.png]]|
}}}

{{niceTable{
|!Title/link|[[InformationR.net|http://informationr.net/tdw/publ/chain_indexing/chain_indexing.html ]]|
|!Creator|Professor Tom Wilson|
|!Subject matter|Library Science|
|!Description/notes|A conversion to TiddlyWiki of an out-of-print 'programmed text'<br> - an early attempt to realise 'hypertext' in traditional print form.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/infoRnet.GIF]]|
}}}
{{niceTable{
|!Title/link|[[AMBIT Core content (Adolescent Mentalization-Based Integrative Therapy)|http://ambit.tiddlyspace.com]]|
|!Creator|Dr Dickon Bevington|
|!Subject matter|Therapy with highly vulnerable "hard to reach" adolescents.|
|!Description/notes|AMBIT has been developed at the Anna Freud Centre charity<br>(http://annafreud.org) and is a new "manualized" approach to<br> therapeutic work with extremely vulnerable chaotic, and complex<br> adolescents (with combinations of problems like drug and alcohol<br> addiction, abuse, mental health problems, family breakdown and<br> homelessness) based on a novel therapeutic approach called<br> "Mentalization".  It uses this concept to structure work with the individual,<br> the family, the wider professional network and to support the individual<br> outreaching "keyworker" via strong supervisory structures in the team<br> (and access to online "how to do it" manuals like this!)  Currently being<br> used in nearly 20 teams across the UK.  Via www.tiddlymanuals.com,<br> there are multiple local variants to this "core" manual - that allow local<br> teams to compare, share, adapt and shape its content to their local<br> needs - developing an open source community of practitioners.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/ambit.png]]|
}}}

{{niceTable{
|!Title/link|[[MBTF (Mentalization-Based Treatment for Families)|http://mbtf.tiddlyspace.com]]|
|!Creator|Dr Dickon Bevington|
|!Subject matter|A version of Family therapy, based on the concept of "Mentalization"|
|!Description/notes|MBTF is a novel way of working with families - a form of family therapy,<br> if you like, that stresses the value (and difficulty!) in coming to shared<br> understandings in the here-and-now of why people behave the way<br> they do.  It has been developed at the Anna Freud Centre charity<br> (http://annafreud.org) and practitioners from across the world have<br> received training in it, which is based on the methods described in this<br> manual.  The manual is accessed by practitioners all over the world.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/mbtf.png]]|
}}}
{{niceTable{
|!Title/link|[[The Gospel Worthy of All Acceptation|http://gospelworthy.tiddlyspot.com]]|
|!Creator|Rob Boss|
|!Subject matter|The teachings of Andrew Fuller|
|!Description/notes|The tiddlywiki is the beginnings of a study on Andrew Fuller (the<br> intended focus of my PhD studies here at Southwestern Baptist<br> Theological Seminary, www.swbts.edu ).  It highlights the<br> LightboxPlugin and a plugin for the Simile Timeline.  The theme is<br> Kubrick.  The wiki contains the entire text of an Andrew Fuller<br> treatise, which I intend to annotate and highlight over time.  It will<br> serve as a notebook or repository for my Fuller studies.  I think this<br> implementation will display the "non-linear reusable notebook" <br>aspect of TiddlyWiki. |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/gospelworthy.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Giffr|http://www.giffmex.org/giffr.html]]|
|!Creator|Dave Gifford|
|!Subject matter|Photo album|
|!Description/notes|A simple, modest "Flickr"-style photo album that<br> grabs photos from Flickr and other sites by linking<br> to image locations.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/giffr.png]]|
}}}

{{niceTable{
|!Title/link|[[Tears of the Sun|http://lewcid.googlepages.com/tots.html]]|
|!Creator|Saq Imtiaz|
|!Subject matter|Presentation|
|!Description/notes|A case study of Africa in Hollywood film|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/willistots.png]]|
}}}

{{niceTable{
|!Title/link|[[A House in Hungary|http://houseinhungary.tiddlyspot.com]]|
|!Creator|Joseph Molnar|
|!Subject matter|Virtual Tour of a house for sale|
|!Description/notes|Based on Presentation TW by Saq Imtiaz. Photos <br>hosted on Flickr |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/househung.png]]|
}}}

{{niceTable{
|!Title/link|[[Super Physique|http://www.superphysique.net]]|
|!Creator|Fabrice Proudhon|
|!Subject matter|Weight training|
|!Description/notes|Gallery of French weight trainers that want to achieve the best<br> from their bodies without the use of drug enhancement|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/superphysique.png]]|
}}}

{{niceTable{
|!Title/link|[[RatbagMedia|http://ratbagradio.tiddlyspot.com/]]|
|!Creator|Dave Riley|
|!Description/notes|~RatbagMedia ~TiddlyWiki is a new component in a blog and <br>podcasting network which also functions as a log of various<br> projects. So it archives information, showcases published<br> material in various media formats and backs up an active <br>blogging lifestyle. It more or less serves as a personal  wiki space <br>whose contents can be quickly searched,  accessed and shared<br> if required.<br><br>~RatbagMedia ~TiddlyWiki is also an exercise in mastering the <br>application and exploring how far the envelope can be advanced<br> especially in way of sharing media.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/ratbag.GIF]]|
}}}
{{niceTable{
|!Title/link|[[Japanese Haiku|http://www.ako.net.nz/wiki/haiku/index.html]]|
|!Creator|Lynsey Gedye|
|!Subject matter|Classical Japanese Haiku|
|!Description/notes|PA short collection of a couple of hundred<br>Japanese haiku, originally printed by the art book small press, <br>Peter Pauper. Each haiku is accompanied by one of 59 Japanese<br> seals. I wrote this presentation of classic haiku using a Tiddlywiki <br>engine to begin exploring to possibility of using Tiddlywiki to <br>create hypertext fiction.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/haiku.png]]|
}}}

{{niceTable{
|!Title/link|[[RatbagMedia|http://ratbagradio.tiddlyspot.com/]]|
|!Creator|Dave Riley|
|!Description/notes|~RatbagMedia ~TiddlyWiki is a new component in a blog and <br>podcasting network which also functions as a log of various<br> projects. So it archives information, showcases published<br> material in various media formats and backs up an active <br>blogging lifestyle. It more or less serves as a personal  wiki space <br>whose contents can be quickly searched,  accessed and shared<br> if required.<br><br>~RatbagMedia ~TiddlyWiki is also an exercise in mastering the <br>application and exploring how far the envelope can be advanced<br> especially in way of sharing media.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/ratbag.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Web Campaigning|http://mitpress.mit.edu/webcampaigning]]|
|!Creator|Steve Schneider, Kirsten Foot & Meghan Dougherty|
|!Description/notes|Companion to the book, //Web Campaigning//.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/webcampaigning.GIF]]|
}}}

{{niceTable{
|!Title/link|[[InformationR.net|http://informationr.net/ir/author2.html]]|
|!Creator|Professor Tom Wilson|
|!Subject matter|Editing|
|!Description/notes|A typical "Instructions for authors" page converted to a TiddlyWiki|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/infoRnetpub.GIF]]|
}}}

! List #1: TiddlyWiki templates for to-do lists and productivity

{{niceTable{
|!Title/link|[[MonkeyGTD|http://monkeygtd.tiddlyspot.com/]]|
|!Creator|Simon Baird|
|!Description/notes|An adaptation of the Getting Things Done system<br><br>[Giffmex]: A really cool new version of this ~TiddlyWiki is available.<br>See details [[here|http://tiddlywikiguides.org/index.php?title=Getting_started_with_MonkeyGTD_2.1_alpha]].|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/monkeygtd.png]]|
}}}

{{niceTable{
|!Title/link|[[Time Journal|http://http://ttj.wombatdiet.net/]]|
|!Creator|~EatsWombats|
|!Description/notes|TiddlyTimeJournal is a wiki that you can run in a <br>FireFox tab for keeping track of where your time goes.<br> It has a built-in stopwatch and activity<br>recording facilities. Easy. Simple.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/timejournal.GIF]]|
}}}

{{niceTable{
|!Title/link|[[CognyWiki|http://www.oliviergeorgeon.com/cognywiki.html]]|
|!Creator|OlivierGeorgeon|
|!Description/notes|CognyWiki is a customisation of TiddlyWiki inspired<br> by cognitive theories. Use the CognyWiki method<br> to organize notes and blogs the way your brain<br> actually works. |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/cognywiki.png]]|
}}}

{{niceTable{
|!Title/link|[[TiddlyDu2|http://www.giffmex.org/tiddlydu2.html]]|
|!Creator|Dave Gifford|
|!Description/notes|Personal planner to organize to-do list, contacts,<br>important information, calendars, and more.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/tiddlydu2.png]]|
}}}

{{niceTable{
|!Title/link|[[d3 - un GTD in italiano semplice da usare|http://pollio.maurizio.googlepages.com/it-d3-gtd-sample.html]]|
|!Creator|Maurizio Pollio|
|!Subject matter|an italian adaptation of d-cubed GTD|
|!Description/notes|Based on version 1.0.10 of d-cubed GTD|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/d3italiano.GIF]]|
}}}

!List #2: Examples of TiddlyWikis being used for to-do lists and productivity


{{niceTable{
|!Title/link|[[SAGApedia - Guía rápida del Sistema SAGA para DragonLance|http://sagapedia.tiddlyspot.com/]]|
|!Creator|Orestes G. Manzanilla-Salazar|
|!Subject matter|Roleplaying Games (pen & paper)|
|!Description/notes|This is an online guide to play a roleplaying game named <br>Dragonlance, with a rules-system out of print by the publisher. The <br>system is called "SAGA System", as published by TSR and Wizards<br> of the Coast. The site is almost entirely written in spanish. No<br> violation of copyright is intended, and no profit is generated by its<br> use. A lot of house rules are given, and fan-art is showed properly,<br> giving respectfull credits on the roll-over on the images. The images<br> are linked from the TW to the site where the images are posted.<br> Plugins for hidding the side-bar are used, in order to simplify the<br> interface to the viewers/players.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/sagapedia.png]]|
}}}

{{niceTable{
|!Title/link|[[Michael's SIFF page|http://adcockm.serversidewiki.com/]]|
|!Creator|Michael Adcock|
|!Subject matter|Seattle International Film Festival 2007 (movies that I am <br>interested in)|
|!Description/notes|I added a few custom features, mostly around the dates and <br>calendar.  The existing calendar plugins I tried did not work<br> with the serversidewiki version of TiddlyWiki, so I hacked together<br> something that worked.  A link will appear at the top of the main<br> menu on days when movies are showing, and it will open a tiddler<br> for that day.  The "selected showings" link is also populated<br> through code.  I created my own code to hide the sidebar, before<br> realizing some other people had done that. |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/SIFF.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Nanette's Public KnowledgeBase|http://nluoma.tiddlyspot.com]]|
|!Creator|Nanette Andrusiak|
|!Subject matter|~TiddlyWiki, html, Javascript|
|!Description/notes|A 'brain dump' of information to keep handy for ~TiddlyWiki,<br> html, Javascript and other items.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/nluoma.GIF]]|
}}}

{{niceTable{
|!Title/link|[[RPG Maker XP FAQs|http://rpgmakerxpfaq.tiddlyspot.com]]|
|!Creator|Nanette Andrusiak|
|!Subject matter|RPG Maker XP|
|!Description/notes|A 'brain dump' of information for a specific tool (RPGMaker XP)<br> that Nanette is assembling for her daughter who is learning to<br> write games using that product.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/rpgxp.GIF]]|
}}}

{{niceTable{
|!Title/link|[[The Gospel Worthy of All Acceptation|http://gospelworthy.tiddlyspot.com]]|
|!Creator|Rob Boss|
|!Subject matter|The teachings of Andrew Fuller|
|!Description/notes|The tiddlywiki is the beginnings of a study on Andrew Fuller (the<br> intended focus of my PhD studies here at Southwestern Baptist<br> Theological Seminary, www.swbts.edu ).  It highlights the<br> LightboxPlugin and a plugin for the Simile Timeline.  The theme is<br> Kubrick.  The wiki contains the entire text of an Andrew Fuller<br> treatise, which I intend to annotate and highlight over time.  It will<br> serve as a notebook or repository for my Fuller studies.  I think this<br> implementation will display the "non-linear reusable notebook" <br>aspect of TiddlyWiki. |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/gospelworthy.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Cook This!|http://tiddlywiki.googlegroups.com/web/cookthis.html?gda=nzkkBD4AAAAwIZ1DjZaeGspf475oHIF5s_VHrbaoGXwC-sKye8NWQmG1qiJ7UbTIup-M2XPURDT1ic4Doc92AWPwY1s41K33]]|
|!Creator|~LJCohen|
|!Subject matter|Recipes|
|!Description/notes|Beginnings of a recipe list. Currently uploaded as a file to<br> the ~TiddlyWiki Google Group.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/cookthis.png]]|
}}}

{{niceTable{
|!Title/link|[[Discourse - On Politics, International Relations and Economics|http://discourse.tiddlyspot.com]]|
|!Creator|Sam Carson|
|!Subject matter|International relations|
|!Description/notes|This site gets updated almost every day. It is built<br>on MonkeyPirate, and contains Haloscan plugin for commenting.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/discourse.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Seantaclaus' Recipes|http://no-sin.com/wiki/Recipies.htm]]|
|!Creator|Ken Girard|
|!Subject matter|Recipes|
|!Description/notes|A ~TiddlyWiki for creating recipes and shopping lists.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/seantaclaus.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Science-Matters|http://science.tiddlyspot.com/]]|
|!Creator|Morris Gray|
|!Subject matter|Science|
|!Description/notes|A wonderful collection of science facts. Also contains many other<br> items such as an introduction to logic and even how to make<br> origami rabbits!|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/sciencematters.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Larry's Cookbook|http://cookbook.tiddlyspot.com]]|
|!Creator|Larry|
|!Subject matter|Recipes|
|!Description/notes|Lots of recipes. Note the modification of the <br>tabbed lists.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/larrycookbook.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Instructional Technology Innovations|http://www.earlham.edu/~markp/ITI_wiki/]]|
|!Creator|Mark Pearson|
|!Subject matter|Everything to do with Elgg, MySQL, managing Ubuntu server etc|
|!Description/notes|Where I record all my techie stuff with Open Source<br> s/w. The taggly tagging system is brilliant!|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/iti.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Moodle Issues|http://ec281.lly.earlham.edu/tw/miss/]]|
|!Creator|Mark Pearson|
|!Subject matter|Moodle support problems and solutions. <br>Collaboration stuff with other institutions|
|!Description/notes|This uses Taggly tagging is really useful. This uses<br> Lew Cid's MiniTiddlyServer which is brilliant. I can log in to <br>this from home and add stuff online. Also uses the Lew Cid <br>Haemoglobin theme.|
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/moodleissues.GIF]]|
}}}

{{niceTable{
|!Title/link|[[Escriba|http://escriba.tiddlyspot.com]]|
|!Creator|Marcelo Stein de Lima Sousa|
|!Subject matter|Environmental Epistemology and Sociology|
|!Description/notes|Homepage of the Environmental Epistemology & Sociology<br>Group, Graduate Program of Environment & Development<br> (Doutorado em Meio Ambiente & Desenvolvimento, MADE),<br> Federal University of Paraná at Curitiba, Brazil. |
|!Screenshot|[img[http://www.giffmex.org/twinactionimgs/escriba.GIF]]|
}}}

/***
| Name:|ToggleTagMacro|
| Description:|Makes a checkbox which toggles a tag in a tiddler|
| Version:|6.9.3|
| Date:|30-Sep-2006|
| Source:|http://tiddlyspot.com/mptw/#ToggleTagMacro|
| Author:|SimonBaird|
| License:|[[BSD open source license]]|
| CoreVersion:|2.1|
!Usage
{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}
* TagName - the tag to be toggled, default value "checked"
* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler
* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'
(If a parameter is '.' then the default will be used)

Examples:

|Code|Description|Example|h
|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|
|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|
|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|
|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|
|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|
(Note if TiddlerName doesn't exist it will be silently created)

!Known issues
* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing. Should it stick the tag in the edit box?

***/
//{{{

merge(config.macros,{

	toggleTag: {

		doRefreshAll: true,
		createIfRequired: true,
		shortLabel: "[[%0]]",
		longLabel: "[[%0]] [[%1]]",

		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			var tag = (params[0] && params[0] != '.') ? params[0] : "checked";
			var title = (params[1] && params[1] != '.') ? params[1] : tiddler.title;
			var defaultLabel = (title == tiddler.title ? this.shortLabel : this.longLabel);
			var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;
			var theTiddler =  title == tiddler.title ? tiddler : store.getTiddler(title);
			var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {
				if (!theTiddler) {
					if (config.macros.toggleTag.createIfRequired)
						store.saveTiddler(title,title,"",config.options.txtUserName,new Date(),null);
					else
						return false;
				}
				// suspendNotifications suggested by Saq
				// don't need to notify since doing a refreshDisplay
				store.suspendNotifications(); 
				store.setTiddlerTag(title,this.checked,tag);
				refreshDisplay(); 
				store.resumeNotifications();
				return true;
			});
		}
	}
});

//}}}

| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 21/1/2013 21:23:29 | giffmex | [[giffmex.html|file:///C:/Users/Dave/Desktop/giffmex.html]] | [[store.cgi|http://giffmex.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 21/1/2013 21:25:32 | giffmex | [[giffmex.html|file:///C:/Users/Dave/SkyDrive/Documents/WEB/GIFFMEX.ORG/giffmex.html]] | [[store.cgi|http://giffmex.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 2/4/2015 14:48:37 | giffmex | [[giffmex.html|file:///C:/Users/Dave/Desktop/giffmex.html]] | [[store.cgi|http://giffmex.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 2/4/2015 14:51:14 | giffmex | [[giffmex.html|file:///C:/Users/Dave/Desktop/giffmex.html]] | [[store.cgi|http://giffmex.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 2/4/2015 14:52:23 | giffmex | [[index.html|file:///C:/Users/Dave/Desktop/index.html]] | [[store.cgi|http://giffmex.tiddlyspot.com/store.cgi]] | . | index.html | . |
/***
<<tiddler UploadPluginDoc>>
!Code
***/
//{{{
version.extensions.UploadPlugin = {
	major: 3, minor: 3, revision: 3, 
	date: new Date(2006,6,30),
	type: 'macro',
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	docs: 'http://tiddlywiki.bidix.info/#UploadPluginDoc'
};
//}}}

////+++!![config.lib.file]

//{{{
if (!config.lib) config.lib = {};
if (!config.lib.file) config.lib.file= {
	author: 'BidiX',
	version: {major: 0, minor: 1, revision: 0}, 
	date: new Date(2006,3,9)
};
config.lib.file.dirname = function (filePath) {
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};
config.lib.file.basename = function (filePath) {
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};
window.basename = function() {return "@@deprecated@@";};
//}}}
////===

////+++!![config.lib.log]

//{{{
if (!config.lib) config.lib = {};
if (!config.lib.log) config.lib.log= {
	author: 'BidiX',
	version: {major: 0, minor: 1, revision: 0}, 
	date: new Date(2006,3,9)
};
config.lib.Log = function(tiddlerTitle, logHeader) {
	if (version.major < 2)
		this.tiddler = store.tiddlers[tiddlerTitle];
	else
		this.tiddler = store.getTiddler(tiddlerTitle);
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = tiddlerTitle;
		this.tiddler.text = "| !date | !user | !location |" + logHeader;
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
	if (version.major < 2)
		store.tiddlers[tiddlerTitle] = this.tiddler;
	else
		store.addTiddler(this.tiddler);
	}
	return this;
};

config.lib.Log.prototype.newLine = function (line) {
	var now = new Date();
	var newText = "| ";
	newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";
	newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";
	newText += config.options.txtUserName + " | ";
	var location = document.location.toString();
	var filename = config.lib.file.basename(location);
	if (!filename) filename = '/';
	newText += "[["+filename+"|"+location + "]] |";
	this.tiddler.text = this.tiddler.text + "\n" + newText;
	this.addToLine(line);
};

config.lib.Log.prototype.addToLine = function (text) {
	this.tiddler.text = this.tiddler.text + text;
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	if (version.major < 2)
	store.tiddlers[this.tiddler.tittle] = this.tiddler;
	else {
		store.addTiddler(this.tiddler);
		story.refreshTiddler(this.tiddler.title);
		store.notify(this.tiddler.title, true);
	}
	if (version.major < 2)
		store.notifyAll(); 
};
//}}}
////===

////+++!![config.lib.options]

//{{{
if (!config.lib) config.lib = {};
if (!config.lib.options) config.lib.options = {
	author: 'BidiX',
	version: {major: 0, minor: 1, revision: 0}, 
	date: new Date(2006,3,9)
};

config.lib.options.init = function (name, defaultValue) {
	if (!config.options[name]) {
		config.options[name] = defaultValue;
		saveOptionCookie(name);
	}
};
//}}}
////===

////+++!![PasswordTweak]

//{{{
version.extensions.PasswordTweak = {
	major: 1, minor: 0, revision: 2, date: new Date(2006,3,11),
	type: 'tweak',
	source: 'http://tiddlywiki.bidix.info/#PasswordTweak'
};
//}}}
/***
!!config.macros.option
***/
//{{{
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordType = "password"; // password | text

config.macros.option.onChangeOption = function(e)
{
	var opt = this.getAttribute("option");
	var elementType,valueField;
	if(opt) {
		switch(opt.substr(0,3)) {
			case "txt":
				elementType = "input";
				valueField = "value";
				break;
			case "pas":
				elementType = "input";
				valueField = "value";
				break;
			case "chk":
				elementType = "input";
				valueField = "checked";
				break;
		}
		config.options[opt] = this[valueField];
		saveOptionCookie(opt);
		var nodes = document.getElementsByTagName(elementType);
		for(var t=0; t<nodes.length; t++) {
			var optNode = nodes[t].getAttribute("option");
			if (opt == optNode) 
				nodes[t][valueField] = this[valueField];
		}
	}
	return(true);
};

config.macros.option.handler = function(place,macroName,params)
{
    var opt = params[0];
	var size = 15;
	if (params[1])
		size = params[1];
    if(config.options[opt] === undefined) {
        return;}
    var c;
    switch(opt.substr(0,3)) {
		case "txt":
			c = document.createElement("input");
			c.onkeyup = this.onChangeOption;
			c.setAttribute ("option",opt);
			c.size = size;
			c.value = config.options[opt];
			place.appendChild(c);
			break;
		case "pas":
			// input password
			c = document.createElement ("input");
			c.setAttribute("type",config.macros.option.passwordType);
			c.onkeyup = this.onChangeOption;
			c.setAttribute("option",opt);
			c.size = size;
			c.value = config.options[opt];
			place.appendChild(c);
			// checkbox link with this password "save this password on this computer"
			c = document.createElement("input");
			c.setAttribute("type","checkbox");
			c.onclick = this.onChangeOption;
			c.setAttribute("option","chk"+opt);
			place.appendChild(c);
			c.checked = config.options["chk"+opt];
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
			break;
		case "chk":
			c = document.createElement("input");
			c.setAttribute("type","checkbox");
			c.onclick = this.onChangeOption;
			c.setAttribute("option",opt);
			place.appendChild(c);
			c.checked = config.options[opt];
			break;
	}
};
//}}}
/***
!! Option cookie stuff
***/
//{{{
window.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;
window.loadOptionsCookie = function()
{
	var cookies = document.cookie.split(";");
	for(var c=0; c<cookies.length; c++) {
		var p = cookies[c].indexOf("=");
		if(p != -1) {
			var name = cookies[c].substr(0,p).trim();
			var value = cookies[c].substr(p+1).trim();
			switch(name.substr(0,3)) {
				case "txt":
					config.options[name] = unescape(value);
					break;
				case "pas":
					config.options[name] = unescape(value);
					break;
				case "chk":
					config.options[name] = value == "true";
					break;
			}
		}
	}
};

window.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;
window.saveOptionCookie = function(name)
{
	var c = name + "=";
	switch(name.substr(0,3)) {
		case "txt":
			c += escape(config.options[name].toString());
			break;
		case "chk":
			c += config.options[name] ? "true" : "false";
			// is there an option link with this chk ?
			if (config.options[name.substr(3)]) {
				saveOptionCookie(name.substr(3));
			}
			break;
		case "pas":
			if (config.options["chk"+name]) {
				c += escape(config.options[name].toString());
			} else {
				c += "";
			}
			break;
	}
	c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";
	document.cookie = c;
};
//}}}
/***
!! Initializations
***/
//{{{
// define config.options.pasPassword
if (!config.options.pasPassword) {
	config.options.pasPassword = 'defaultPassword';
	window.saveOptionCookie('pasPassword');
}
// since loadCookies is first called befor password definition
// we need to reload cookies
window.loadOptionsCookie();
//}}}
////===

////+++!![config.macros.upload]

//{{{
config.macros.upload = {
	accessKey: "U",
	formName: "UploadPlugin",
	contentType: "text/html;charset=UTF-8",
	defaultStoreScript: "store.php"
};

// only this two configs need to be translated
config.macros.upload.messages = {
	aboutToUpload: "About to upload TiddlyWiki to %0",
	errorDownloading: "Error downloading",
	errorUploadingContent: "Error uploading content",
	fileNotFound: "file to upload not found",
	fileNotUploaded: "File %0 NOT uploaded",
	mainFileUploaded: "Main TiddlyWiki file uploaded to %0",
	urlParamMissing: "url param missing",
	rssFileNotUploaded: "RssFile %0 NOT uploaded",
	rssFileUploaded: "Rss File uploaded to %0"
};

config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.handler = function(place,macroName,params){
	// parameters initialization
	var storeUrl = params[0];
	var toFilename = params[1];
	var backupDir = params[2];
	var uploadDir = params[3];
	var username = params[4];
	var password; // for security reason no password as macro parameter
	var label;
	if (document.location.toString().substr(0,4) == "http")
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (storeUrl) {
		prompt = this.label.promptParamMacro.toString().format([this.dirname(storeUrl)]);
	}
	else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, 
						function () {
							config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password); 
							return false;}, 
						null, null, this.accessKey);
};
config.macros.upload.UploadLog = function() {
	return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );
};
config.macros.upload.UploadLog.prototype = config.lib.Log.prototype;
config.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";
	line += uploadDir + " | " + toFilename + " | " + backupDir + " |";
	this.newLine(line);
};
config.macros.upload.UploadLog.prototype.endUpload = function() {
	this.addToLine(" Ok |");
};
config.macros.upload.basename = config.lib.file.basename;
config.macros.upload.dirname = config.lib.file.dirname;
config.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)
{
	// parameters initialization
	storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);
	toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);
	backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);
	uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);
	username = (username ? username : config.options.txtUploadUserName);
	password = config.options.pasUploadPassword; // for security reason no password as macro parameter
	if (storeUrl === '') {
		config.macros.upload.defaultStoreScript;
	}
	if (config.lib.file.dirname(storeUrl) === '') {
		storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;
	}
	if (toFilename === '') {
		toFilename = config.lib.file.basename(document.location.toString());
	}

	clearMessage();
	// only for forcing the message to display
	 if (version.major < 2)
		store.notifyAll();
	if (!storeUrl) {
		alert(config.macros.upload.messages.urlParamMissing);
		return;
	}
	
	var log = new this.UploadLog();
	log.startUpload(storeUrl, toFilename, uploadDir,  backupDir);
	if (document.location.toString().substr(0,5) == "file:") {
		saveChanges();
	}
	displayMessage(config.macros.upload.messages.aboutToUpload.format([this.dirname(storeUrl)]), this.dirname(storeUrl));
	this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);
	if(config.options.chkGenerateAnRssFeed) {
		//var rssContent = convertUnicodeToUTF8(generateRss());
		var rssContent = generateRss();
		var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";
		this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password, 
			function (responseText) {
				if (responseText.substring(0,1) != '0') {
					displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));
				}
				else {
					if (uploadDir) {
						rssPath = uploadDir + "/" + config.macros.upload.basename(rssPath);
					} else {
						rssPath = config.macros.upload.basename(rssPath);
					}
					displayMessage(config.macros.upload.messages.rssFileUploaded.format(
						[config.macros.upload.dirname(storeUrl)+"/"+rssPath]), config.macros.upload.dirname(storeUrl)+"/"+rssPath);
				}
				// for debugging store.php uncomment last line
				//DEBUG alert(responseText);
			});
	}
	return;
};

config.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir, 
		username, password) {
	var original;
	if (document.location.toString().substr(0,4) == "http") {
		original =  this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);
		return;
	}
	else {
		// standard way : Local file
		
		original = loadFile(getLocalPath(document.location.toString()));
		if(window.Components) {
			// it's a mozilla browser
			try {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
				var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
									.createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
				converter.charset = "UTF-8";
				original = converter.ConvertToUnicode(original);
			}
			catch(e) {
			}
		}
	}
	//DEBUG alert(original);
	this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir, 
		username, password);
};

config.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir, 
		username, password) {
	var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it
	var endSaveArea = '</d' + 'iv>';
	// Locate the storeArea div's
	var posOpeningDiv = original.indexOf(startSaveArea);
	var posClosingDiv = original.lastIndexOf(endSaveArea);
	if((posOpeningDiv == -1) || (posClosingDiv == -1))
		{
		alert(config.messages.invalidFileError.format([document.location.toString()]));
		return;
		}
	var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + 
				allTiddlersAsHtml() + "\n\t\t" +
				original.substr(posClosingDiv);
	var newSiteTitle;
	if(version.major < 2){
		newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();
	} else {
		newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();
	}
	revised = revised.replace(new RegExp("<title>[^<]*</title>", "im"),"<title>"+ newSiteTitle +"</title>");
	var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir, 
		username, password, function (responseText) {
					if (responseText.substring(0,1) != '0') {
						alert(responseText);
						displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));
					}
					else {
						if (uploadDir !== '') {
							toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);
						} else {
							toFilename = config.macros.upload.basename(toFilename);
						}
						displayMessage(config.macros.upload.messages.mainFileUploaded.format(
							[config.macros.upload.dirname(storeUrl)+"/"+toFilename]), config.macros.upload.dirname(storeUrl)+"/"+toFilename);
						var log = new config.macros.upload.UploadLog();
						log.endUpload();
						store.setDirty(false);
					}
					// for debugging store.php uncomment last line
					//DEBUG alert(responseText);
				}
			);
};

config.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir, 
		username, password, callbackFn) {
	var boundary = "---------------------------"+"AaB03x";		
	var request;
	try {
		request = new XMLHttpRequest();
		} 
	catch (e) { 
		request = new ActiveXObject("Msxml2.XMLHTTP"); 
		}
	if (window.netscape){
			try {
				if (document.location.toString().substr(0,4) != "http") {
					netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}
			}
			catch (e) { }
		}		
	//DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += config.macros.upload.formName +"\"\r\n\r\n";
	sheader += "backupDir="+backupDir
				+";user=" + username 
				+";password=" + password
				+";uploaddir=" + uploadDir
				+ ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+toFilename+"\"\r\n";
	sheader += "Content-Type: " + config.macros.upload.contentType + "\r\n";
	sheader += "Content-Length: " + content.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	var data;
	data = sheader + content + strailer;
	//request.open("POST", storeUrl, true, username, password);
	request.open("POST", storeUrl, true);
	request.onreadystatechange = function () {
				if (request.readyState == 4) {
				     if (request.status == 200)
						callbackFn(request.responseText);
					else
						alert(config.macros.upload.messages.errorUploadingContent);
				}
		};
	request.setRequestHeader("Content-Length",data.length);
	request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);
	request.send(data); 
};


config.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir, 
	username, password) {
	var request;
	try {
		request = new XMLHttpRequest();
	} 
	catch (e) { 
		request = new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	try {
		if (uploadUrl.substr(0,4) == "http") {
			netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
			}
		else {
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		}
	} catch (e) { }
	//request.open("GET", document.location.toString(), true, username, password);
	request.open("GET", document.location.toString(), true);
	request.onreadystatechange = function () {
		if (request.readyState == 4) {
			if(request.status == 200) {
				config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl, 
					uploadToFilename, uploadDir, uploadBackupDir, username, password);
			}
			else
				alert(config.macros.upload.messages.errorDownloading.format(
					[document.location.toString()]));
		}
	};
	request.send(null);
};

//}}}
////===

////+++!![Initializations]

//{{{
config.lib.options.init('txtUploadStoreUrl','store.php');
config.lib.options.init('txtUploadFilename','');
config.lib.options.init('txtUploadDir','');
config.lib.options.init('txtUploadBackupDir','');
config.lib.options.init('txtUploadUserName',config.options.txtUserName);
config.lib.options.init('pasUploadPassword','');
config.shadowTiddlers.UploadPluginDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadPluginDoc ]]\n"; 


//}}}
////===

////+++!![Core Hijacking]

//{{{
config.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;
config.macros.saveChanges.label = config.macros.upload.label.saveToDisk;

config.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;

config.macros.saveChanges.handler = function(place)
{
	if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))
		createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);
}

//}}}
////===
[[MptwViewTemplate]]
This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.

@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://giffmex.tiddlyspot.com/controlpanel]] (your control panel username is //giffmex//).
<<tiddler tiddlyspotControls>>
@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the "save to web" button in the column on the right.

@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click "upload" and your ~TiddlyWiki will be saved back to tiddlyspot.com.

@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki Guides|http://tiddlywikiguides.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].

@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions.
| tiddlyspot password:|<<option pasUploadPassword>>|
| site management:|<<upload http://giffmex.tiddlyspot.com/store.cgi index.html . .  giffmex>>//(requires tiddlyspot password)//<<br>>[[control panel|http://giffmex.tiddlyspot.com/controlpanel]], [[download (go offline)|http://giffmex.tiddlyspot.com/download]]|
| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|