<<slider [[00001 Tasks]] 'Tasks'>>\n<<slider [[00001 Notes]] 'Notes'>>\n<<slider [[00001 Links]] 'Links'>>\n<<slider [[00001 Results]] 'Results'>>\n
* Take out the trash\n* Wash the dishes\n* Mow the lawn\n* Shower & shave\n* Become enlightened
[[How to use this guide]]\n[[Introduction to Arch Linux]]\n[[Getting Started]]\n[[Installing from CD]]\n[[Installing from FTP]]\n[[Partitioning the Hard Disk Drive]]\n[[Selecting packages]]\n[[Installing packages]]\n[[Changing configuration files]]\n[[Installing the kernel]]\n[[Configuring the boot-loader]]\n[[Installation tips]]\n[[First boot-up]]\n[[Installing xorg]]\n[[Installing KDE]]\n[[Adding desktop applications]]\n
<<tagging [[Archives]]>>
<<calendar thismonth>>\n[[Full Calendar Year]]\n
/***\n|''Name:''|Based on CalendarPlugin|\n|''Source:''|http://www.TiddlyTools.com/#CalendarPlugin|\n|''Author:''|SteveRumsby|\n|''License:''|unknown|\n|''~CoreVersion:''|2.0.10|\n\n// // Removed reminders support; Added Journal auto-tag support; Removed legacy code\n// // ''Changes by JOS 2006.10.11:''\n// // updated by Jeremy Sheeley to add cacheing for reminders\n// // see http://www.geocities.com/allredfaq/reminderMacros.html\n// // ''Changes by ELS 2006.08.23:''\n// // added handling for weeknumbers (code supplied by Martin Budden. see "wn**" comment marks)\n// // ''Changes by ELS 2005.10.30:''\n// // config.macros.calendar.handler()\n// // ^^use "tbody" element for IE compatibility^^\n// // ^^IE returns 2005 for current year, FF returns 105... fix year adjustment accordingly^^\n// // createCalendarDays()\n// // ^^use showDate() function (if defined) to render autostyled date with linked popup^^\n// // calendar stylesheet definition\n// // ^^use .calendar class-specific selectors, add text centering and margin settings^^\n\n\n!!!!!Configuration:\n<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//\n|''First day of week:''|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|\n|''First day of weekend:''|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|\n\n!!!!!Syntax:\n|{{{<<calendar>>}}}|Produce a full-year calendar for the current year|\n|{{{<<calendar year>>}}}|Produce a full-year calendar for the given year|\n|{{{<<calendar year month>>}}}|Produce a one-month calendar for the given month and year|\n|{{{<<calendar thismonth>>}}}|Produce a one-month calendar for the current month|\n|{{{<<calendar lastmonth>>}}}|Produce a one-month calendar for last month|\n|{{{<<calendar nextmonth>>}}}|Produce a one-month calendar for next month|\n\n***/\n// //Modify this section to change the text displayed for the month and day names, to a different language for example. You can also change the format of the tiddler names linked to from each date, and the colours used.\n\n//{{{\nconfig.macros.calendar = {};\n\nconfig.macros.calendar.monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];\nconfig.macros.calendar.daynames = ["M", "T", "W", "T", "F", "S", "S"];\n\nconfig.macros.calendar.weekendbg = "#c0c0c0";\nconfig.macros.calendar.monthbg = "#e0e0e0";\nconfig.macros.calendar.holidaybg = "#ffc0c0";\n\n//}}}\n// //''Code section:''\n// (you should not need to alter anything below here)//\n//{{{\nif(config.options.txtCalFirstDay == undefined)\n config.options.txtCalFirstDay = 0;\nif(config.options.txtCalStartOfWeekend == undefined)\n config.options.txtCalStartOfWeekend = 5;\nif(config.options.chkDisplayWeekNumbers == undefined)//wn**\n config.options.chkDisplayWeekNumbers = false;\nif(config.options.chkDisplayWeekNumbers)\n config.options.txtCalFirstDay = 0;\n\nconfig.macros.calendar.tiddlerformat = "0DD/0MM/YYYY"; // This used to be changeable - for now, it isn't// <<smiley :-(>> \n\nversion.extensions.calendar = { major: 0, minor: 6, revision: 0, date: new Date(2006, 1, 22)};\nconfig.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n//}}}\n\n// //The main entry point - the macro handler.\n// //Decide what sort of calendar we are creating (month or year, and which month or year)\n// // Create the main calendar container and pass that to sub-ordinate functions to create the structure.\n// ELS 2005.10.30: added creation and use of "tbody" for IE compatibility and fixup for year >1900//\n// ELS 2005.10.30: fix year calculation for IE's getYear() function (which returns '2005' instead of '105')//\n// ELS 2006.05.29: add journalDateFmt handling//\n//{{{\nconfig.macros.calendar.handler = function(place,macroName,params)\n{\n var calendar = createTiddlyElement(place, "table", null, "calendar", null);\n var tbody = createTiddlyElement(calendar, "tbody", null, null, null);\n var today = new Date();\n var year = today.getYear();\n if (year<1900) year+=1900;\n \n // get format for journal link by reading from SideBarOptions (ELS 5/29/06 - based on suggestion by Martin Budden)\n var text = store.getTiddlerText("SideBarOptions");\n this.journalDateFmt = "DD-MMM-YYYY";\n var re = new RegExp("<<(?:newJournal)([^>]*)>>","mg"); var fm = re.exec(text);\n if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }\n\n if (params[0] == "thismonth")\n createCalendarOneMonth(tbody, year, today.getMonth());\n else if (params[0] == "lastmonth") {\n var month = today.getMonth()-1; if (month==-1) { month=11; year--; }\n createCalendarOneMonth(tbody, year, month);\n }\n else if (params[0] == "nextmonth") {\n var month = today.getMonth()+1; if (month>11) { month=0; year++; }\n createCalendarOneMonth(tbody, year, month);\n }\n else {\n if (params[0]) year = params[0];\n if(params[1])\n createCalendarOneMonth(tbody, year, params[1]-1);\n else\n createCalendarYear(tbody, year);\n }\n}\n//}}}\n//{{{\nfunction createCalendarOneMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n//{{{\nfunction createCalendarMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n//{{{\nfunction createCalendarYear(calendar, year)\n{\n var row;\n row = createTiddlyElement(calendar, "tr", null, null, null);\n var back = createTiddlyElement(row, "td", null, null, null);\n var backHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year-1);\n };\n createTiddlyButton(back, "<", "Previous year", backHandler);\n back.align = "center";\n\n var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);\n yearHeader.align = "center";\n yearHeader.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?22:19);//wn**\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n var fwdHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year+1);\n };\n createTiddlyButton(fwd, ">", "Next year", fwdHandler);\n fwd.align = "center";\n\n createCalendarMonthRow(calendar, year, 0);\n createCalendarMonthRow(calendar, year, 3);\n createCalendarMonthRow(calendar, year, 6);\n createCalendarMonthRow(calendar, year, 9);\n}\n//}}}\n//{{{\nfunction createCalendarMonthRow(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDayHeader(row, 3);\n createCalendarDayRows(cal, year, mon);\n}\n//}}}\n//{{{\nfunction createCalendarMonthHeader(cal, row, name, nav, year, mon)\n{\n var month;\n if(nav) {\n var back = createTiddlyElement(row, "td", null, null, null);\n back.align = "center";\n back.style.background = config.macros.calendar.monthbg;\n var backMonHandler = function() {\n var newyear = year;\n var newmon = mon-1;\n if(newmon == -1) { newmon = 11; newyear = newyear-1;}\n removeChildren(cal);\n //cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(back, "<", "Previous month", backMonHandler);\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n month.setAttribute("colSpan", config.options.chkDisplayWeekNumbers?6:5);//wn**\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n fwd.align = "center";\n fwd.style.background = config.macros.calendar.monthbg; \n\n var fwdMonHandler = function() {\n var newyear = year;\n var newmon = mon+1;\n if(newmon == 12) { newmon = 0; newyear = newyear+1;}\n removeChildren(cal);\n //cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(fwd, ">", "Next month", fwdMonHandler);\n } else {\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n month.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?8:7);//wn**\n }\n month.align = "center";\n month.style.background = config.macros.calendar.monthbg;\n}\n//}}}\n//{{{\nfunction createCalendarDayHeader(row, num)\n{\n var cell;\n for(var i = 0; i < num; i++) {\n if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, "td");//wn**\n for(var j = 0; j < 7; j++) {\n var d = j + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);\n if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))\n cell.style.background = config.macros.calendar.weekendbg;\n }\n }\n}\n//}}}\n//{{{\nfunction createCalendarDays(row, col, first, max, year, mon)\n{\n var i;\n if (config.options.chkDisplayWeekNumbers){\n if (first<=max) {\n var ww = new Date(year,mon,first);\n createTiddlyElement(row, "td", null, null, "w"+ww.getWeek());//wn**\n }\n else createTiddlyElement(row, "td", null, null, null);//wn**\n }\n for(i = 0; i < col; i++) {\n createTiddlyElement(row, "td", null, null, null);\n }\n var day = first;\n for(i = col; i < 7; i++) {\n var d = i + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n var daycell = createTiddlyElement(row, "td", null, null, null);\n var isaWeekend = ((d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))? true:false);\n\n if(day > 0 && day <= max) {\n var celldate = new Date(year, mon, day);\n // ELS 2005.10.30: use <<date>> macro's showDate() function to create popup\n if (window.showDate) {\n showDate(daycell,celldate,"popup","DD",config.macros.calendar.journalDateFmt,true, isaWeekend); // ELS 5/29/06 - use journalDateFmt \n } else {\n if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;\n var title = celldate.formatString(config.macros.calendar.tiddlerformat);\n /* if(calendarIsHoliday(celldate)) {\n daycell.style.background = config.macros.calendar.holidaybg;\n }\n if(window.findTiddlersWithReminders == null) {\n var link = createTiddlyLink(daycell, title, false);\n link.appendChild(document.createTextNode(day));\n } else {\n var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);\n } */\n var btn = createTiddlyButton(daycell,day,title,config.macros.newJournal.onClickNewTiddler);\n btn.setAttribute("params","");\n btn.setAttribute("newTitle",title);\n btn.setAttribute("newFocus","text");\n btn.setAttribute("newTemplate",DEFAULT_EDIT_TEMPLATE);\n }\n }\n day++;\n }\n}\n//}}}\n//{{{\nfunction calendarMaxDays(year, mon)\n{\n var max = config.macros.calendar.monthdays[mon];\n if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) {\n max++;\n }\n return max;\n}\n//}}}\n//{{{\nfunction createCalendarDayRows(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1 + 7;\n var day1 = -first1 + 1;\n var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first2 < 0) first2 = first2 + 7;\n var day2 = -first2 + 1;\n var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first3 < 0) first3 = first3 + 7;\n var day3 = -first3 + 1;\n\n var max1 = calendarMaxDays(year, mon);\n var max2 = calendarMaxDays(year, mon+1);\n var max3 = calendarMaxDays(year, mon+2);\n\n while(day1 <= max1 || day2 <= max2 || day3 <= max3) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;\n createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;\n }\n}\n//}}}\n//{{{\nfunction createCalendarDayRowsSingle(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1+ 7;\n var day1 = -first1 + 1;\n var max1 = calendarMaxDays(year, mon);\n\n while(day1 <= max1) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n }\n}\n//}}}\n\n// //ELS 2005.10.30: added styles\n//{{{\nsetStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }", "calendarStyles");\n//}}}\n
/***\n|''Name:''|Based on CollapseTiddlersPlugin|\n|''Source:''|http://gensoft.revhost.net/Collapse.html|\n|''Author:''|Bradley Meck|\n|''License:''|unknown|\n|''~CoreVersion:''|2.0.10|\n\n|JOS 9/14/2006: changed text for 'collapse all' and 'expand all' to lower-case (consistency's sake); cleanned-up syntax (readability's sake) |\n|JOS 9/14/2006: removed "WebCollapsedTemplate" altogether; added compat code for topOfPageMode; added tool tips for collapseAll and expandAll |\n|ELS 2/24/2006: added fallback to "CollapsedTemplate if "WebCollapsedTemplate" is not found |\n|ELS 2/6/2006: added check for 'readOnly' flag to use alternative "WebCollapsedTemplate" |\n***/\n//{{{\nconfig.commands.collapseTiddler = {\n text: "fold",\n tooltip: "Collapse this tiddler",\n handler: function(event,src,title){\n var e = story.findContainingTiddler(src);\n var t = "CollapsedTemplate";\n if (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }\n if (config.options.chkTopOfPageMode!=undefined) {\n var pm=config.options.chkTopOfPageMode;\n config.options.chkTopOfPageMode=false;\n }\n if(e.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE]){\n if(e.getAttribute("template") != t ){\n e.setAttribute("oldTemplate",e.getAttribute("template"));\n story.displayTiddler(null,title,t);\n }\n }\n if (config.options.chkTopOfPageMode!=undefined) config.options.chkTopOfPageMode=pm;\n }\n}\n\nconfig.commands.expandTiddler = {\n text: "unfold",\n tooltip: "Expand this tiddler",\n handler: function(event,src,title){\n if (config.options.chkTopOfPageMode!=undefined) {\n var pm=config.options.chkTopOfPageMode;\n config.options.chkTopOfPageMode=false;\n }\n var e = story.findContainingTiddler(src);\n story.displayTiddler(null,title,e.getAttribute("oldTemplate"));\n if (config.options.chkTopOfPageMode!=undefined) config.options.chkTopOfPageMode=pm;\n }\n}\n\nconfig.macros.collapseAll = {\n handler: function(place,macroName,params,wikifier,paramString,tiddler){\n createTiddlyButton(place,"collapse all","Collapse all tiddlers",function(){\n var t = "CollapsedTemplate";\n if (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }\n if (config.options.chkTopOfPageMode!=undefined) {\n var pm=config.options.chkTopOfPageMode;\n config.options.chkTopOfPageMode=false;\n }\n story.forEachTiddler(function(title,tiddler){\n if(tiddler.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE])\n story.displayTiddler(null,title,t);\n })\n if (config.options.chkTopOfPageMode!=undefined) config.options.chkTopOfPageMode=pm;\n })\n }\n}\n\nconfig.macros.expandAll = {\n handler: function(place,macroName,params,wikifier,paramString,tiddler){\n createTiddlyButton(place,"expand all","",function(){\n var t = "CollapsedTemplate";\n if (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }\n if (config.options.chkTopOfPageMode!=undefined) {\n var pm=config.options.chkTopOfPageMode;\n config.options.chkTopOfPageMode=false;\n }\n story.forEachTiddler(function(title,tiddler){\n if(tiddler.getAttribute("template") == t) story.displayTiddler(null,title,tiddler.getAttribute("oldTemplate"));\n })\n if (config.options.chkTopOfPageMode!=undefined) config.options.chkTopOfPageMode=pm;\n })\n }\n}\n\nconfig.commands.collapseOthers = {\n text: "focus",\n tooltip: "Expand this tiddler and collapse all others",\n handler: function(event,src,title){\n var e = story.findContainingTiddler(src);\n var t = "CollapsedTemplate";\n if (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }\n if (config.options.chkTopOfPageMode!=undefined) {\n var pm=config.options.chkTopOfPageMode;\n config.options.chkTopOfPageMode=false;\n }\n story.forEachTiddler(function(title,tiddler){\n if(tiddler.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE]){\n if (tiddler!=e) story.displayTiddler(null,title,t);\n }\n })\n if (config.options.chkTopOfPageMode!=undefined) config.options.chkTopOfPageMode=pm;\n }\n}\n//}}}\n
<!--{{{-->\n<div class='toolbar' macro='toolbar closeTiddler closeOthers +expandTiddler collapseOthers editTiddler permalink'></div>\n<div class='title' macro='view title'></div>\n<!--}}}-->\n
The [[author|Jon Scully]] really did try to keep customization to a minimum. However, some things just needed //work//!\n\nFirst, the [[author|Jon Scully]] included [[other peoples'|http://www.tiddlytools.com/]] //brilliant// plugins, including:\n* [[CalendarPlugin|http://www.tiddlytools.com/#CalendarPlugin]]*\n* [[CollapseTiddlersPlugin|http://www.tiddlytools.com/#CollapseTiddlersPlugin]]**\n* [[DisableWikiLinksPlugin]]\n* [[RearrangeTiddlersPlugin]]\n\nThen the [[author|Jon Scully]] incorporated additional plugins, including:\n* *[[CalendarPlusPlugin]]\n* **[[CollapseTiddlersPlusPlugin]]\n* [[CustomizationsPlugin]]\n\nNext, the [[author|Jon Scully]] made some changes to the following 'shadow' (or system) tiddlers:\n\n!DefaultTiddlers\nThe [[author|Jon Scully]] wanted [[Overview]] to be the first and only tiddler to appear on startup.\n\n!EditTemplate\nSome style-related and menu layout changes were made to the [[EditTemplate]].\n\n!MainMenu\nThe [[author|Jon Scully]] wanted to organize goals, projects, tasks, notes and other thoughts in one place. When the [[author|Jon Scully]] discovered TiddlyWiki, it seemed like the perfect tool for this purpose. So, the first thing the [[author|Jon Scully]] did was to create a sort of "loose and shallow" hierarchical infrastructure, starting with the [[MainMenu]] tiddler. See [[MainMenu Customizations]] for more details.\n\n!MarkupPostBody\nA little extra space has been added to the end of the viewer page, by adding a paragraph to the [[MarkupPostBody]] tiddler. (Otherwise, when a view's length is greater than the height of the browser, the bottom of the page appears "slammed" against the bottom of the browser -- not very easy on the eyes.)\n\n!OptionsPanel\nSince the [[author|Jon Scully]] included the [[DisableWikiLinksPlugin]] plugin in this wiki, the [[OptionsPanel]] needed square brackets added to the [[AdvancedOptions]] reference ({{{[[AdvancedOptions]]}}} so it appears as a link).\n\n!PageTemplate\nSince the [[author|Jon Scully]] added a contents slider to the [[SideBarOptions]] tiddler, the contents panel was removed from the [[PageTemplate]] tiddler.\n\n!SideBarOptions\nThe [[author|Jon Scully]] changed the number and order of options available to the [[SideBarOptions]] tiddler.\n\n!SiteSubtitle\nSince the [[author|Jon Scully]] maintains several TiddlyWiki sites at once, it seemed appropriate to use '<<tiddler SiteSubtitle>>' as the [[site's subtitle|SiteSubtitle]] (to differentiate it from others).\n\n!SiteTitle\nThe [[site's title|SiteTitle]] is '<<tiddler SiteTitle>>' because the [[author|Jon Scully]] isn't all that fond of the name "TiddlyWiki".\n\n!ViewTemplate\nSome style-related and menu layout changes were made to the [[ViewTemplate]]. In addition, the 'tag' and 'tagging' menus were hidden from view.\n\n!CollapsedTemplate\nThe [[author|Jon Scully]] created the [[CollapsedTemplate]] tiddler to support the [[CollapseTiddlersPluginPlus]] plugin.\n\n!StyleSheet\nThe [[author|Jon Scully]] created the [[StyleSheet]] tiddler to include additional style customizations.\n\n!Future Customizations\nFuture customizations may include:\n* fix "creeping text" — e.g. when two edit tiddlers are open and the top one is closed\n\n''Next Step''\n\nSee [[MainMenu Customizations]].\n
// // Override cookie settings\n/*{{{*/\n// personal preferences\nif (config.options.txtUserName=="Jon Scully") {\n config.options.chkSaveBackups=false;\n}\nconfig.options.txtCalFirstDay=6;\nconfig.options.txtCalStartOfWeekend=5;\nconfig.options.chkDisableWikiLinks=true;\nconfig.options.chkDontDisableShadowWikiLinks=true;\n/*}}}*/\n// // Date format customizations\n/*{{{*/\nmerge(config.macros.timeline,{\n dateFormat: "MMM DD, YYYY"});\nconfig.macros.calendar.tiddlerformat = "MMM DD, YYYY";\n/*}}}*/\n// // Remove initial text, {{{Type the text for 'New Tiddler'}}}, in a New Tiddler's text area\n/*{{{*/\nmerge(config.views.editor,{\n tagPrompt: "Type tags separated with spaces, [[use double square brackets]] if necessary, or add existing",\n defaultText: ""});\n/*}}}*/\n// // Replace "new journal" with "today's journal"\n/*{{{*/\nmerge(config.macros.newJournal,{\n label: "today's journal",\n prompt: "Create a new tiddler from the current date and time",\n accessKey: "J"});\n/*}}}*/\n// // Replace "close others" with "solo"\n/*{{{*/\nmerge(config.commands.closeOthers,{\n text: "solo",\n tooltip: "Close all other tiddlers"});\n\n/*}}}*/\n// // Open tiddlers at top of page\n/*{{{*/\nStory.prototype.positionTiddler = function(srcElement)\n{\n var before = document.getElementById(this.container).firstChild;\n if (typeof srcElement == "string" && srcElement == "bottom") before = null;\n return before;\n}\n/*}}}*/\n// // Suppress animation when opening multiple tiddlers\n/*{{{*/\nStory.prototype.displayTiddlers = function(srcElement,titles,template,animate,slowly) {\n for(var t = titles.length-1;t>=0;t--)\n this.displayTiddler(srcElement,titles[t],template,false,false);\n}\n/*}}}*/\n// // Timeout the messageArea and remove "close" link\n/*{{{*/\nfunction getMessageDiv() {\n var msgArea = document.getElementById("messageArea");\n if (!msgArea)\n return null;\n// "close" link code was here (JOS) //\n msgArea.style.display = "block";\n setTimeout("clearMessage();",3000); // ms (JOS)\n return createTiddlyElement(msgArea,"div");\n}\n/*}}}*/\n// // Open permalink or permaview URL in new window (e.g. or new tab)\n/*{{{*/\nconfig.commands.permalink.handler = function(event,src,title)\n{\n var url = window.location.hash;\n if (window.location.hash.indexOf("#")!=-1)\n url = window.location.hash.substr(0,window.location.hash.indexOf("#"));\n var t = encodeURIComponent(String.encodeTiddlyLink(title));\n window.open(url+"#"+t);\n return false;\n}\n\nStory.prototype.permaView = function()\n{\n var url = window.location.hash;\n if (window.location.hash.indexOf("#")!=-1)\n url = window.location.hash.substr(0,window.location.hash.indexOf("#"));\n var links = [];\n this.forEachTiddler(function(title,element) {\n links.push(String.encodeTiddlyLink(title));\n });\n var t = encodeURIComponent(links.join(" "));\n window.open(url+"#"+t);\n}\n/*}}}*/\n// // Slider customizations\n/*{{{*/\nconfig.macros.slider.handler = function(place,macroName,params)\n{\n /* support greater simplification:\n <<slider [[Slider Name]]>> becomes <<slider chkSliderSliderName [[Slider Name]] 'Slider Name' 'toggle open/close'>>\n params.4: cookie,tiddler,title,tooltip -- legacy\n params.3: tiddler,title,tooltip\n params.2: tiddler,title\n params.1: tiddler\n */\n var tiddler,text,panel;\n if (params.length > 3) {\n tiddler = params[1];\n text = store.getTiddlerText(tiddler);\n panel = this.createSlider(place,params[0],params[2]+"...",params[3]);\n } else {\n tiddler = params[0];\n text = store.getTiddlerText(tiddler);\n var title,tooltip,btitle;\n if (params.length > 1)\n title = params[1];\n else title = tiddler;\n if (params.length > 2)\n tooltip = params[2];\n else tooltip = "toggle open/close";\n var a = tiddler.split(" ");\n cookie = "chkSlider"+a.join("");\n panel = this.createSlider(place,cookie,title,tooltip);\n var btn = createTiddlyButton(place,text?"»":"«","edit",this.onClickOpen);\n btn.setAttribute("newTitle",tiddler);\n }\n panel.setAttribute("refresh", "content");\n panel.setAttribute("tiddler", tiddler);\n if (!text) text = "* None";\n wikify(text,panel,null,store.getTiddler(tiddler));\n}\n\nconfig.macros.slider.onClickOpen = function(e) {\n var title = this.getAttribute("newTitle");\n var theTarget = resolveTarget(e);\n story.displayTiddler(theTarget,title,DEFAULT_EDIT_TEMPLATE);\n}\n/*}}}*/\n
[[Overview]]
/***\n|''Name:''|DisableWikiLinksPlugin|\n|''Source:''|http://www.TiddlyTools.com/#DisableWikiLinksPlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nThis plugin allows you to disable TiddlyWiki's automatic WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links. To create a tiddler link when automatic linking is disabled, you must enclose the link text within {{{[[...]]}}}. Note: WikiWords contained in default ''shadow'' tiddlers will still be automatically linked. An additional checkbox option lets you disable these automatic links as well, though this is not recommended, since it can make it more difficult to access some TiddlyWiki standard default content (such as AdvancedOptions or SideBarTabs)\n\n!!!!!Configuration\n<<<\nSelf-contained control panel:\n<<option chkDisableWikiLinks>> Disable automatic WikiWord tiddler links\n<<option chkDontDisableShadowWikiLinks>> ... except in shadow tiddler content\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''DisableWikiLinksPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.05.24 [1.1.0]'' added option to NOT bypass automatic wikiword links when displaying default shadow content (default is to auto-link shadow content)\n''2006.02.05 [1.0.1]'' wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2005.12.09 [1.0.0]'' initial release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.disableWikiLinks= {major: 1, minor: 1, revision: 0, date: new Date(2006,5,24)};\n\nif (config.options.chkDisableWikiLinks==undefined) config.options.chkDisableWikiLinks= false;\nif (config.options.chkDontDisableShadowWikiLinks==undefined) config.options.chkDontDisableShadowWikiLinks=true;\n\n// find the formatter for wikiLink and replace handler with 'pass-thru' rendering\ninitDisableWikiLinksFormatter();\nfunction initDisableWikiLinksFormatter() {\n for (var i=0; i<config.formatters.length && config.formatters[i].name!="wikiLink"; i++);\n config.formatters[i].coreHandler=config.formatters[i].handler;\n config.formatters[i].handler=function(w) {\n // if not enabled, just do standard WikiWord link formatting\n var skipShadow=(config.options.chkDontDisableShadowWikiLinks && w.tiddler && store.isShadowTiddler(w.tiddler.title) && !store.tiddlerExists(w.tiddler.title));\n if (!config.options.chkDisableWikiLinks || skipShadow) return this.coreHandler(w);\n // supress any leading "~" (if present)\n var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;\n w.outputText(w.output,w.matchStart+skip,w.nextMatch)\n }\n}\n//}}}\n
/**************************************************\n * dom-drag.js\n * 09.25.2001\n * www.youngpup.net\n **************************************************\n * 10.28.2001 - fixed minor bug where events\n * sometimes fired off the handle, not the root.\n **************************************************/\n/*{{{*/\nvar Drag = {\n obj:null,\n\n init:\n function(o, oRoot, minX, maxX, minY, maxY) {\n o.onmousedown = Drag.start;\n o.root = oRoot && oRoot != null ? oRoot : o ;\n if (isNaN(parseInt(o.root.style.left))) o.root.style.left="0px";\n if (isNaN(parseInt(o.root.style.top))) o.root.style.top="0px";\n o.minX = typeof minX != 'undefined' ? minX : null;\n o.minY = typeof minY != 'undefined' ? minY : null;\n o.maxX = typeof maxX != 'undefined' ? maxX : null;\n o.maxY = typeof maxY != 'undefined' ? maxY : null;\n o.root.onDragStart = new Function();\n o.root.onDragEnd = new Function();\n o.root.onDrag = new Function();\n },\n\n start:\n function(e) {\n var o = Drag.obj = this;\n e = Drag.fixE(e);\n var y = parseInt(o.root.style.top);\n var x = parseInt(o.root.style.left);\n o.root.onDragStart(x, y, Drag.obj.root);\n o.lastMouseX = e.clientX;\n o.lastMouseY = e.clientY;\n if (o.minX != null) o.minMouseX = e.clientX - x + o.minX;\n if (o.maxX != null) o.maxMouseX = o.minMouseX + o.maxX - o.minX;\n if (o.minY != null) o.minMouseY = e.clientY - y + o.minY;\n if (o.maxY != null) o.maxMouseY = o.minMouseY + o.maxY - o.minY;\n document.onmousemove = Drag.drag;\n document.onmouseup = Drag.end;\n Drag.obj.root.style["z-index"] = "10";\n return false;\n },\n\n drag:\n function(e) {\n e = Drag.fixE(e);\n var o = Drag.obj;\n var ey = e.clientY;\n var ex = e.clientX;\n var y = parseInt(o.root.style.top);\n var x = parseInt(o.root.style.left);\n var nx, ny;\n if (o.minX != null) ex = Math.max(ex, o.minMouseX);\n if (o.maxX != null) ex = Math.min(ex, o.maxMouseX);\n if (o.minY != null) ey = Math.max(ey, o.minMouseY);\n if (o.maxY != null) ey = Math.min(ey, o.maxMouseY);\n nx = x + (ex - o.lastMouseX);\n ny = y + (ey - o.lastMouseY);\n Drag.obj.root.style["left"] = nx + "px";\n Drag.obj.root.style["top"] = ny + "px";\n Drag.obj.lastMouseX = ex;\n Drag.obj.lastMouseY = ey;\n Drag.obj.root.onDrag(nx, ny, Drag.obj.root);\n return false;\n },\n\n end:\n function() {\n document.onmousemove = null;\n document.onmouseup = null;\n Drag.obj.root.style["z-index"] = "0";\n Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style["left"]), parseInt(Drag.obj.root.style["top"]), Drag.obj.root);\n Drag.obj = null;\n },\n\n fixE:\n function(e) {\n if (typeof e == 'undefined') e = window.event;\n if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;\n if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;\n return e;\n }\n};\n/*}}}*/\n
<!--{{{-->\n<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'><span macro='tagChooser'></span></div>\n<div class='title' macro='view title'></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div>\n<div macro='resize'></div>\n<!--}}}-->\n
// // Excludes any tiddlers from timeline that have been tagged with ''excludeTimeline''\n/*{{{*/\nconfig.macros.timeline.handler = function(place,macroName,params)\n{\n var field = params[0] ? params[0] : "modified";\n var tiddlers = store.reverseLookup("tags","excludeTimeline",false,field);\n var lastDay = "";\n var last = params[1] ? tiddlers.length-Math.min(tiddlers.length,parseInt(params[1])) : 0;\n for(var t=tiddlers.length-1; t>=last; t--)\n {\n var tiddler = tiddlers[t];\n var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);\n if(theDay != lastDay)\n {\n var theDateList = document.createElement("ul");\n place.appendChild(theDateList);\n createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));\n lastDay = theDay;\n }\n var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink");\n theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));\n }\n}\n/*}}}*/\n
/***\n|''Name:''|ExpandEditPlugin|\n|''Author:''|Jon Scully|\n|''License:''|unknown|\n|''~CoreVersion:''|2.1.2|\n!!!!!OBSOLETE\nPlease see [[ResizeEditTextPlugin]].\n!!!!!Purpose\nProvide an 'expand' button in edit mode that increases the textarea by 10 rows per click.\n!!!!!Configuration\nAlter [[EditTemplate]] as follows:\n{{{<div class='toolbar' macro='toolbar ...'>}}}@@<span macro='expandEdit'></span>@@{{{</div>}}}\n!!!!!Code\n***/\n/*{{{*/\nconfig.macros.expandEdit = {}\n\nconfig.macros.expandEdit.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n if(!tiddler instanceof Tiddler) return;\n var btn = createTiddlyButton(place,"expand","expand text area",this.onClickExpand);\n btn.setAttribute("newTitle",tiddler.title);\n}\n\nconfig.macros.expandEdit.onClickExpand = function(e) {\n var title = this.getAttribute("newTitle");\n var rows = story.getTiddlerField(title,"text").rows;\n rows += 10;\n story.getTiddlerField(title,"text").rows = rows;\n}\n/*}}}*/\n
<<calendar>>\n
<<tagging [[Help]]>>
''NOTE:'' If you //don't// see any images in this tiddler, it may be that {{{www.flickr.com}}} is down (unlikely) or is blocked by your organization's firewal or proxy server. Contact you Systems Administrator if you are unsure.\n\n{{{\n[img[title|filename]]\n[img[filename]]\n[img[title|filename][link]]\n[img[filename][link]]\n}}}\nImages can be included by their filename or full URL. It's good practice to include a title to be shown as a tooltip, and when the image isn't available. An image can also link to another tiddler or or a URL\n[img[Romanesque broccoli|fractalveg.jpg][http://www.flickr.com/photos/jermy/10134618/]]\n{{{\n[img[Fractal vegetable|fractalveg.jpg]]\n[img[This is shown as a tooltip|http://example.com/image.jpg]]\n[img[http://example.com/image.jpg]]\n[img[http://example.com/image.jpg][ExampleDotCom]]\n}}}\nThe tooltip is optional.\n\n[<img[Forest|forest.jpg][http://www.flickr.com/photos/jermy/8749660/]][>img[Field|field.jpg][http://www.flickr.com/photos/jermy/8749285/]]You can also float images to the left or right: the forest is left aligned with {{{[<img[}}}, and the field is right aligned with {{{[>img[}}}.\n@@clear(left):clear(right):display(block):You can use CSS to clear the floats@@\n{{{\n[<img[A woody bit of Hampstead Heath|forest.jpg]]\n[>img[A field near Milton Keynes|field.jpg]]\n}}}\n\n''Next Step''\n\nSee [[Howto Make Tables]].\n\n
''Text Formatting''\n\nThe following formatting options are available:\n*You can create ''Bold'' text by enclosing it in pairs of single quotes: {{{''bold text''}}}\n*You can create --Strikethrough-- text by enclosing it in pairs of hyphens: {{{--strikethrough text--}}}\n*You can __Underline__ text by enclosing it in pairs of underscores: {{{__underlined text__}}}\n*You can create //Italic// text by enclosing it in pairs of forward slashes: {{{//italic text//}}}\n*You can create ^^superscript^^ text by enclosing it in pairs of carets: {{{^^superscript text^^}}}\n*You can create ~~subscript~~ text by enclosing it in pairs of tildes: {{{~~subscript text~~}}}\n*You can @@highlight text@@ by enclosing it in pairs of at-signs: {{{@@highlighted text@@}}}\n*You can also change many other CSS attributes by adding arguments to the highlight command. For example, you can change the @@color:red;text color to red@@ or give it a @@background-color:blue;color:white;background-color of blue@@: {{{@@CSS attributes separated by semicolons;text to be changed@@}}}\n*Finally, you can add new CSS classes to the Tiddlywiki so that you can style a number of items with the same CSS formatting. Simply add the new class to the [[StyleSheet]] tiddler, such as: {{{.rightjust { text-align: right; } }}}\n\nThen, when you want to use that CSS class, use the following formatting: {{{{{classname{text to be formatted}}}@@color:#fe8;}}}@@ for 'inline' (span) text or for 'block' (div) text, use:\n{{{\n {{classname{\n text to be formatted\n }}}\n}}}\n\n{{rightjust{\nFor example, this block paragraph has been formatted using the above 'rightjust' CSS class.\n}}}\n\nYou can find out more about CSS from the excellent [[w3schools tutorial|http://w3schools.com/css/default.asp]].\n\n''Headings''\n\nLet's say that, for some reason, you need to have a single Tiddler with multiple headings. Put the headings on lines by themselves and add an exclamation point (!) at the beginning of the line. If you want a subheading, use two exclamation points, like so:\n\n!Heading1\n!!Subheading1\n!!!Subsubheading1\n\nHere's the code for the above stack of subheadings:\n{{{\n!Heading1\n!!Subheading1\n!!!Subsubheading1\n}}}\n\n''Dividers''\n\nNeed a dividing line? Type four hyphens in a row on a line by themselves.\n----\nThat'll keep your sheep and goats separated.\n\nHere's the code to create that line:\n{{{\n----\n}}}\n\n''Next Step''\n\nSee [[Howto Make Lists]].\n
Lists are one of the easiest things to do in TiddlyWiki, and that's saying a lot. Put an asterisk (*) at the beginning of any line you want added to a bulleted list. If you use two or three asterisks, you'll create second and third level bullets. Like this:\n*Entry One\n**Sub-entry A\n***Sub-sub-entry i\n***Sub-sub-entry ii\n**Sub-entry B\n*Entry Two\n*Entry Three\n\nHere's the code for the above list:\n{{{\n*Entry One\n**Sub-entry A\n***Sub-sub-entry i\n***Sub-sub-entry ii\n**Sub-entry B\n*Entry Two\n*Entry Three\n}}}\n\nNumbered lists are pretty easy too: Just use number signs (#'s) instead of asterisks:\n#Entry One\n##Sub-entry A\n###Sub-sub-entry i\n###Sub-sub-entry ii\n##Sub-entry B\n#Entry Two\n#Entry Three\n\nAnd, once again, here's the code:\n{{{\n#Entry One\n##Sub-entry A\n###Sub-sub-entry i\n###Sub-sub-entry ii\n##Sub-entry B\n#Entry Two\n#Entry Three\n}}}\n\n''Next Step''\n\nSee [[Howto Quote Text]].\n
You can create a table by enclosing text in sets of vertical bars (||, or shift-backslash on your keyboard):\n|!Headings: add an exclamation point (!) right after the vertical bar.|!Heading2|!Heading3|\n|Row 1, Column 1|Row 1, Column 2|Row 1, Column 3|\n|>|>|Have one row span multiple columns by using a >|\n|Have one column span multiple rows by using a ~|>|Use a space to right-align text in a cell|\n|~|>| Enclose text in a cell with spaces to center it |\n|>|>|bgcolor(lightgreen):Add color to a cell using bgcolor(yourcolorhere):|\n|Add a caption by ending the table with a vertical bar followed by a c|c\n\nHere's the code for the above table:\n{{{\n|!Headings: add an exclamation point (!) right after the vertical bar.|!Heading2|!Heading3|\n|Row 1, Column 1|Row 1, Column 2|Row 1, Column 3|\n|>|>|Have one row span multiple columns by using a >|\n|Have one column span multiple rows by using a ~|>|Use a space to right-align text in a cell|\n|~|>| Enclose text in a cell with spaces to center it |\n|>|>|bgcolor(lightgreen):Add color to a cell using bgcolor(yourcolorhere):|\n|Add a caption by ending the table with a vertical bar followed by a c|c\n}}}\n\n''Next Step''\n\nSee [[Howto Make a New Tiddler]]. Or, if you've already read the other [[Help]] tiddlers, start making some informative content!\n
''Getting Started''\n\nThe easiest way to make a new tiddler is to click the<<newTiddler>>link in the right-hand menu. An editing template will open, with the default tittle, ''New Tiddler''. In the title text bar (highlighted), type a unique tiddler name (e.g. New Tiddler Name).\n\n''Internal Links''\n\nTo link to a tiddler (whether it exists yet or not), enclose a word or prase in double square brackets, as follows:\n{{{\n[[Another Tiddler Name]]\n}}}\n\nIf a tiddler doesn't exist, its link will appear italicized: [[New Tiddler]]. If a tiddler does exist, its link will appear bold: [[Howto Make a New Tiddler]]. You can create a new tiddler by clicking its link to open it, then click 'edit'.\n\n''External Links''\n\nTo create an external link (i.e. another web site), use the following format:\n{{{\n[[Google Search Engine|http://www.google.com/]]\n}}}\n\nNote the bar ({{{|}}}), separating the text ({{{Google Search Engine}}}) from the URL ({{{http://www.google.com/}}}).\n\n''Internal Reference''\n\nTo make reference to a tiddler, use the external link format:\n{{{\n[[Click here to open this terrific Howto!|Howto Make a New Tiddler]]\n}}}\n\nThis would appear as follows: [[Click here to open this terrific Howto!|Howto Make a New Tiddler]]\n\n''Next Step''\n\nSee [[Howto Format Text]].\n
''Blockquote''\n\nIf you want to quote a long passage of someone else's work, you'll need blockquotes. At the line before the passage begins, add three less-than signs (<<<). On the line after the passage ends, add three more less-than signs. Like so:\n\n[[Bill Whittle|http://www.ejectejecteject.com/archives/000091.html]] said:\n<<<\nWe need a map. Several are for sale. How do we choose?\n\nWell, it seems like a good idea to choose the map that best conforms to the coastline we see unveiling before us. We choose the map that best fits the territory. We choose the map that best matches ''reality'' – the objective, external, indisputable reality of bays and promontories, capes and gulfs and rivers and shoals.\n<<<\n\nHere's the code for a blockquote:\n{{{\n<<<\nQuoted text.\n<<<\n}}}\n\n''Monospace Text''\n\nIn monospace text, also known as non-proportional text, all the characters are of an equal width. So while in a normal font, 'i' is thinner than 'W', in {{{monospaced text, 'i' and 'W' are the same width}}}. It is primarily used in programming manuals and sites to identify blocks of code.\n\nTo add in-line monotype text, enclose the text in triple curly-brackets:\n{{{\n{{{This is in-line monotype text}}}\n}}}\n\n''Monospace Blockquote''\n\nA block of monospace text is useful for quoting a body of text that may otherwise render Wiki text artifacts:\n{{{\n#include <stdio.h>\nvoid main(int argc, char *argv) {\n if (argc > 3) {\n printf("ERROR: Too many parameters.\sn");\n return;\n }\n ....\n}\n}}}\n\nTo add block of monospace text, enclose the text in triple curly-brackets that are on separate lines:\n{{{\n {{{\n This is a block of monospace text\n }}}\n}}}\n\n''Next Step''\n\nSee [[Howto Embed Images]].\n
!What's this "<<tiddler SiteTitle>> <<tiddler SiteSubtitle>>" thing?\nWhat you have here as a [[TiddlyWiki|http://www.tiddlywiki.com/]] that's been [[greatly-enhanced|Customizations]] and [[filled with content|Archives]].\n!What do I do with it?\nFollow these steps:\n1. Navigate as you would any web site\n2. Look for the content the [[author|Jon Scully]] may have wanted you to review -- or just browse around\n3. Optionally, add your own new content or make changes\n!How can I add new content or make changes?\nFollow these steps:\n1. Enter your name here <<option txtUserName>> to help keep track of your contributions\n2. Read the helpful Howtos starting with [[this one|Howto Make a New Tiddler]]\n3. Create new tiddlers or edit existing ones\n!What do I do when I'm finished?\nFollow these steps:\n1. Click the<<saveChanges>>link to save your changes\n2. Note that a backup copy is also saved -- this feature can be turned off under 'options'\n3. Optionally, share your changes with others by sending an e-mail with your saved file attached\n
<<tagging [[Journal]]>>
[[Overview]]\n<<tag Journal>>\n<<tag Schedule>>\n<<tag Archives>>\n<<tag Help>>\n
!Overview\n[[Overview]] offers one-stop-access to virtuall all wiki content. It heavily relies on 'sliders' to create a cascading menu system.\n!!Projects\n[[Projects]] lists the active projects the [[author|Jon Scully]] is working on for <<tiddler SiteSubtitle>>. The name of a project tiddler is preceded by a reference number, such as {{{000001 Latest Idea}}}. (In some views, project tiddler links may appear sans reference number.)\n\nThis naming convention supports simplified organization through numeric reference. For example, tasks and subtasks for the {{{Latest Idea}}} project would be listed in a tiddler called {{{000001 Tasks}}}. Other related tiddlers would include {{{000001 Notes}}}, {{{000001 Links}}} and {{{000001 Results}}}. Managing several projects would result in tiddlers named {{{000001 Tasks}}}, {{{000002 Tasks}}}, {{{000003 Tasks}}}, etc.\n\nWithin a Project, {{{Tasks}}} tiddlers help organise and prioritize work. {{{Notes}}} tiddlers help collect and organize information gathered throughout the life of a project. {{{Links}}} tiddlers list web sites discovered throughout the life of a project, or point to internal web sites where more information may have been published. {{{Results}}} tiddlers are similar to Notes, however, the information collected is typically about a project's conclusions (e.g. Test Results) or other final thoughts (e.g. Design Specification).\n!!Tasks\n[[Tasks]] lists routine or generic tasks (not project-related e.g. Fill out new Insurance forms).\n!!Notes\n[[Notes]] lists other tiddlers that contain interesting or commonly used information (not project-specific).\n!!Links\n[[Links]] lists other tiddlers that contain a collection of web links (usually related).\n!!Results\n[[Results]] lists Projects that are complete (or are on-hold).\n!Journal\n[[Journal]] lists tiddlers that were date-stamped and associated with the 'Journal' tag. Usually Journal tiddlers include a record of arrival, lunch and departure times as well as a list of the day's accomplishments.\n!Schedule\n[[Schedule]] lists tiddlers that are associated with the 'Schedule' tag. These are Journal or Calendar tiddlers that may also include meeting times or other appointment information for a specific day.\n!Archives\n[[Archives]] lists tiddlers that are associated with the 'Archives' tag. These tiddlers are not infrastructure related, therefore, 'Archives' has become a catch-all tag for virtually every tiddler that has //real// content. If the wiki's infrastructure is like the trunk and branches of a tree, Archives would be the tree's leaves.\n!Help\n[[Help]] lists the tiddlers that, well, help! If you're looking for help, you might want to [[start here|Howto Make a New Tiddler]].\n
<p>&nbsp;</p>\n
tiddlyspot password:\n<<option pasUploadPassword>>\n\nThese InterfaceOptions for customising TiddlyWiki are saved in your browser\n\nYour username for signing your edits. Write it as a WikiWord (eg JoeBloggs)\n\n<<option txtUserName>>\n<<option chkSaveBackups>> SaveBackups\n<<option chkAutoSave>> AutoSave\n<<option chkRegExpSearch>> RegExpSearch\n<<option chkCaseSensitiveSearch>> CaseSensitiveSearch\n<<option chkAnimate>> EnableAnimations\n\n----\n[[AdvancedOptions]]\n[[PluginManager]]\n[[ImportTiddlers]]
<<slider [[Projects]]>>\n<<slider [[Tasks]]>>\n<<slider [[Notes]]>>\n<<slider [[Links]]>>\n<<slider [[Results]]>>\n\n[[What's this|Introduction]] <<tiddler SiteTitle>> ~~<<tiddler SiteSubtitle>>~~ [[thing?|Introduction]]
<!--{{{-->\n<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<!-- <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div> -->\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>\n<!--}}}-->
* <<slider [[00001 Project]] 'Flash in the Pan: Cooking Dinner in Under 10 Seconds'>>\n* <<slider [[00002 Project]] 'Bogofilters: How to Deliver More Bulk E-Mail in Less Time'>>\n* <<slider [[00003 Project]] 'Ultra Sneers: The Fine Art of Offending Everyone'>>\n
/***\n|''Name:''|RearrangeTiddlersPlugin|\n|''Source:''|http://www.TiddlyTools.com/#AttachFilePlugin|\n|''Author:''|Joe Raii|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nadapted from: http://www.cs.utexas.edu/~joeraii/dragn/#Draggable\nchanges by ELS:\n* hijack refreshTiddler() instead of overridding createTiddler()\n* find title element by className instead of elementID\n* set cursor style via code instead of stylesheet\n* set tooltip help text\n* set tiddler "position:relative" when starting drag event, restore saved value when drag ends\n* update 2006.08.07: use getElementsByTagName("*") to find title element, even when it is 'buried' deep in tiddler DOM elements (due to custom template usage)\n\n***/\n//{{{\n\nStory.prototype.rearrangeTiddlersHijack_refreshTiddler = Story.prototype.refreshTiddler;\nStory.prototype.refreshTiddler = function(title,template,unused1,unused2,unused3,unused4,unused5)\n{\n this.rearrangeTiddlersHijack_refreshTiddler(title,template,unused1,unused2,unused3,unused4,unused5);\n var theTiddler = document.getElementById(this.idPrefix + title); if (!theTiddler) return;\n var theHandle;\n var children=theTiddler.getElementsByTagName("*");\n for (var i=0; i<children.length; i++) if (hasClass(children[i],"title")) { theHandle=children[i]; break; }\n if (!theHandle) return theTiddler;\n\n Drag.init(theHandle, theTiddler, 0, 0, null, null);\n theHandle.style.cursor="move";\n theHandle.title="drag title to re-arrange tiddlers"\n theTiddler.onDrag = function(x,y,myElem) {\n if (this.style.position!="relative")\n { this.savedstyle=this.style.position; this.style.position="relative"; }\n y = myElem.offsetTop;\n var next = myElem.nextSibling;\n var prev = myElem.previousSibling;\n if (next && y + myElem.offsetHeight > next.offsetTop + next.offsetHeight/2) { \n myElem.parentNode.removeChild(myElem);\n next.parentNode.insertBefore(myElem, next.nextSibling);//elems[pos+1]);\n myElem.style["top"] = -next.offsetHeight/2+"px";\n }\n if (prev && y < prev.offsetTop + prev.offsetHeight/2) { \n myElem.parentNode.removeChild(myElem);\n prev.parentNode.insertBefore(myElem, prev);\n myElem.style["top"] = prev.offsetHeight/2+"px";\n }\n };\n theTiddler.onDragEnd = function(x,y,myElem) {\n myElem.style["top"] = "0px";\n if (this.savedstyle!=undefined)\n this.style.position=this.savedstyle;\n }\n return theTiddler;\n}\n\n/**************************************************\n * dom-drag.js\n * 09.25.2001\n * www.youngpup.net\n **************************************************\n * 10.28.2001 - fixed minor bug where events\n * sometimes fired off the handle, not the root.\n **************************************************/\n\nvar Drag = {\n obj:null,\n\n init:\n function(o, oRoot, minX, maxX, minY, maxY) {\n o.onmousedown = Drag.start;\n o.root = oRoot && oRoot != null ? oRoot : o ;\n if (isNaN(parseInt(o.root.style.left))) o.root.style.left="0px";\n if (isNaN(parseInt(o.root.style.top))) o.root.style.top="0px";\n o.minX = typeof minX != 'undefined' ? minX : null;\n o.minY = typeof minY != 'undefined' ? minY : null;\n o.maxX = typeof maxX != 'undefined' ? maxX : null;\n o.maxY = typeof maxY != 'undefined' ? maxY : null;\n o.root.onDragStart = new Function();\n o.root.onDragEnd = new Function();\n o.root.onDrag = new Function();\n },\n\n start:\n function(e) {\n var o = Drag.obj = this;\n e = Drag.fixE(e);\n var y = parseInt(o.root.style.top);\n var x = parseInt(o.root.style.left);\n o.root.onDragStart(x, y, Drag.obj.root);\n o.lastMouseX = e.clientX;\n o.lastMouseY = e.clientY;\n if (o.minX != null) o.minMouseX = e.clientX - x + o.minX;\n if (o.maxX != null) o.maxMouseX = o.minMouseX + o.maxX - o.minX;\n if (o.minY != null) o.minMouseY = e.clientY - y + o.minY;\n if (o.maxY != null) o.maxMouseY = o.minMouseY + o.maxY - o.minY;\n document.onmousemove = Drag.drag;\n document.onmouseup = Drag.end;\n Drag.obj.root.style["z-index"] = "10";\n return false;\n },\n\n drag:\n function(e) {\n e = Drag.fixE(e);\n var o = Drag.obj;\n var ey = e.clientY;\n var ex = e.clientX;\n var y = parseInt(o.root.style.top);\n var x = parseInt(o.root.style.left);\n var nx, ny;\n if (o.minX != null) ex = Math.max(ex, o.minMouseX);\n if (o.maxX != null) ex = Math.min(ex, o.maxMouseX);\n if (o.minY != null) ey = Math.max(ey, o.minMouseY);\n if (o.maxY != null) ey = Math.min(ey, o.maxMouseY);\n nx = x + (ex - o.lastMouseX);\n ny = y + (ey - o.lastMouseY);\n Drag.obj.root.style["left"] = nx + "px";\n Drag.obj.root.style["top"] = ny + "px";\n Drag.obj.lastMouseX = ex;\n Drag.obj.lastMouseY = ey;\n Drag.obj.root.onDrag(nx, ny, Drag.obj.root);\n return false;\n },\n\n end:\n function() {\n document.onmousemove = null;\n document.onmouseup = null;\n Drag.obj.root.style["z-index"] = "0";\n Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style["left"]), parseInt(Drag.obj.root.style["top"]), Drag.obj.root);\n Drag.obj = null;\n },\n\n fixE:\n function(e) {\n if (typeof e == 'undefined') e = window.event;\n if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;\n if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;\n return e;\n }\n};\n//}}}\n
/***\n|''Name:''|ResizeEditTextPlugin|\n|''Author:''|Jon Scully|\n|''~CoreVersion:''|2.1.2|\n!!!!!Purpose\nAdds a handle below the textarea of a tiddler, in edit mode, that the user can drag with the mouse to resize the textarea.\n!!!!!Configuration\nAdd the following div to the end of the [[EditTemplate]] tiddler:\n{{{<div macro='resize'></div>}}}\n!!!!!Code\n***/\n/*{{{*/\nconfig.macros.resize = {\n handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n if (story.getTiddlerField(tiddler.title,"text"))\n new TextAreaResizer(story.getTiddlerField(tiddler.title,"text"));\n }\n}\n/*}}}*/\n/***\n!!!!!TextAreaResizer\nTextAreaResizer script by Jason Johnston (jj@lojjic.net)\nCreated August 2003. Use freely, but give me credit.\n\nThis script adds a handle below textareas that the user can drag with the mouse to resize the textarea.\n***/\n/*{{{*/\nfunction TextAreaResizer(elt) {\n this.element = elt;\n this.create();\n}\nTextAreaResizer.prototype = {\n create : function() {\n var elt = this.element;\n var thisRef = this;\n\n var h = this.handle = document.createElement("div");\n //h.className = "textarea-resizer"; // optional: replace the next 3 lines\n h.style.height = "4px";\n h.style.background = "#ddd";\n h.style.cursor = "s-resize";\n h.title = "Drag to resize text box";\n h.addEventListener("mousedown", function(evt){thisRef.dragStart(evt);}, false);\n elt.parentNode.insertBefore(h, elt.nextSibling);\n },\n \n dragStart : function(evt) {\n var thisRef = this;\n this.dragStartY = evt.clientY;\n this.dragStartH = parseFloat(document.defaultView.getComputedStyle(this.element, null).getPropertyValue("height"));\n document.addEventListener("mousemove", this.dragMoveHdlr=function(evt){thisRef.dragMove(evt);}, false);\n document.addEventListener("mouseup", this.dragStopHdlr=function(evt){thisRef.dragStop(evt);}, false);\n },\n \n dragMove : function(evt) {\n this.element.style.height = this.dragStartH + evt.clientY - this.dragStartY + "px";\n },\n \n dragStop : function(evt) {\n document.removeEventListener("mousemove", this.dragMoveHdlr, false);\n document.removeEventListener("mouseup", this.dragStopHdlr, false);\n },\n \n destroy : function() {\n var elt = this.element;\n elt.parentNode.removeChild(this.handle);\n elt.style.height = "";\n }\n};\n//TextAreaResizer.scriptSheetSelector = "textarea";\n/*}}}*/\n
<<tagging [[Schedule]]>>
<<search>><<saveChanges>><<closeAll>><<collapseAll>><<expandAll>><<newTiddler>><<newJournal title:'MMM DD, YYYY' tag:Journal>><<upload http://soloport.tiddlyspot.com/store.cgi index.html . . soloport>><html><a href='http://soloport.tiddlyspot.com/download' class='button'>download</a></html><<permaview>><<slider chkSliderCalendar Calendar 'calendar' 'show calendar'>><<slider chkSliderOptionsPanel OptionsPanel 'options' 'Change TiddlyWiki advanced options'>><<slider chkSliderSideBarTabs SideBarTabs 'contents' 'show contents'>>\n[img[Archer Fish|http://jonscully.googlepages.com/archer.gif/archer-medium;init:.jpg]]
by Soloport
Wiki
/***\nCSS customizations:\n***/\n/*{{{*/\n.headerShadow { padding-top: 1em; }\n.headerForeground { padding-top: 1em; }\n#mainMenu { padding-top: 0.6em;}\n#displayArea { margin-top: 0em; margin-right: 18em; }\n#sidebar { width: 17em; }\n#sidebarOptions { padding-top: 0.6em; }\n#sidebarTabs .tabContents { width: 16em; }\n.toolbar { vertical-align: bottom; line-height: 2.5em; float: right; } \n.tagged { display: none; }\n.isTag .tagging { display: none; }\n.tiddler .tagging { display: none; }\n.viewer .button { border: 0px; }\n.viewer tr { vertical-align: top; }\n\n.monospace { font-family: monospace, courier; white-space: pre; }\n.rightjust { text-align: right; }\n.centerjust { text-align: center; }\n.fulljust { text-align: justify; }\n\n.tablecenter { text-align: center; }\n.tablecenter table { margin-left: auto; margin-right: auto; text-align: left; }\n\n.colorpalette span { font-family: monospace, courier; font-size: 1em; }\n/*}}}*/\n/***\nColorPalette illustrated:\n|{{colorpalette{@@padding:0.4em;background-color:#fff;color:#000;&nbsp;ColorPalette::Foreground&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|Foreground | #000 |\n|{{colorpalette{@@padding:0.4em;background-color:#000;color:#fff;&nbsp;ColorPalette::Foreground&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#730;color:#8cf;&nbsp;ColorPalette::PrimaryPale&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|Foreground | #8cf |\n|{{colorpalette{@@padding:0.4em;background-color:#8cf;color:#730;&nbsp;ColorPalette::PrimaryPale&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#e70;color:#18f;&nbsp;ColorPalette::PrimaryLight&nbsp;&nbsp;&nbsp;@@}}}|Foreground | #18f |\n|{{colorpalette{@@padding:0.4em;background-color:#18f;color:#e70;&nbsp;ColorPalette::PrimaryLight&nbsp;&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#fb4;color:#04b;&nbsp;ColorPalette::PrimaryMid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|Foreground | #04b |\n|{{colorpalette{@@padding:0.4em;background-color:#04b;color:#fb4;&nbsp;ColorPalette::PrimaryMid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#feb;color:#014;&nbsp;ColorPalette::PrimaryDark&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|Foreground | #014 |\n|{{colorpalette{@@padding:0.4em;background-color:#014;color:#feb;&nbsp;ColorPalette::PrimaryDark&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#003;color:#ffc;&nbsp;ColorPalette::SecondaryPale&nbsp;&nbsp;@@}}}|Foreground | #ffc |\n|{{colorpalette{@@padding:0.4em;background-color:#ffc;color:#003;&nbsp;ColorPalette::SecondaryPale&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#017;color:#fe8;&nbsp;ColorPalette::SecondaryLight&nbsp;@@}}}|Foreground | #fe8 |\n|{{colorpalette{@@padding:0.4em;background-color:#fe8;color:#017;&nbsp;ColorPalette::SecondaryLight&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#24b;color:#db4;&nbsp;ColorPalette::SecondaryMid&nbsp;&nbsp;&nbsp;@@}}}|Foreground | #db4 |\n|{{colorpalette{@@padding:0.4em;background-color:#db4;color:#24b;&nbsp;ColorPalette::SecondaryMid&nbsp;&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#7be;color:#841;&nbsp;ColorPalette::SecondaryDark&nbsp;&nbsp;@@}}}|Foreground | #841 |\n|{{colorpalette{@@padding:0.4em;background-color:#841;color:#7be;&nbsp;ColorPalette::SecondaryDark&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#111;color:#eee;&nbsp;ColorPalette::TertiaryPale&nbsp;&nbsp;&nbsp;@@}}}|Foreground | #eee |\n|{{colorpalette{@@padding:0.4em;background-color:#eee;color:#111;&nbsp;ColorPalette::TertiaryPale&nbsp;&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#ccc;color:#333;&nbsp;ColorPalette::TertiaryLight&nbsp;&nbsp;@@}}}|Foreground | #333 |\n|{{colorpalette{@@padding:0.4em;background-color:#333;color:#ccc;&nbsp;ColorPalette::TertiaryLight&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#666;color:#999;&nbsp;ColorPalette::TertiaryMid&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|Foreground | #999 |\n|{{colorpalette{@@padding:0.4em;background-color:#999;color:#666;&nbsp;ColorPalette::TertiaryMid&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#999;color:#666;&nbsp;ColorPalette::TertiaryDark&nbsp;&nbsp;&nbsp;@@}}}|Foreground | #666 |\n|{{colorpalette{@@padding:0.4em;background-color:#666;color:#999;&nbsp;ColorPalette::TertiaryDark&nbsp;&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n|{{colorpalette{@@padding:0.4em;background-color:#177;color:#f88;&nbsp;ColorPalette::Error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|Foreground | #f88 |\n|{{colorpalette{@@padding:0.4em;background-color:#f88;color:#177;&nbsp;ColorPalette::Error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@}}}|@@background-color:#eee;Background@@ |~|\n***/\n
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |\n| 6/10/2006 13:23:42 | Jon Scully | [[tiddlyspot.html|file:///U:/Projects/tiddlyspot.html]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/10/2006 13:35:41 | Soloport | [[tiddlyspot.html|file:///U:/Projects/tiddlyspot.html]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/10/2006 13:37:25 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/10/2006 13:51:36 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/10/2006 13:51:43 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/10/2006 13:52:13 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/10/2006 13:53:22 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/10/2006 13:55:15 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/10/2006 13:56:26 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/10/2006 14:1:8 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/10/2006 14:3:58 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/10/2006 14:41:35 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/10/2006 14:45:36 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/10/2006 15:3:48 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 9/10/2006 15:5:44 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/10/2006 15:13:27 | Soloport | [[/|http://soloport.tiddlyspot.com/#ExcludeTimelinePlugin]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 9/10/2006 15:19:3 | Soloport | [[/|http://soloport.tiddlyspot.com/#ExcludeTimelinePlugin]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/10/2006 11:36:4 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/10/2006 11:36:34 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/10/2006 16:24:36 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/10/2006 16:26:1 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/10/2006 16:13:4 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 17/10/2006 16:14:31 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/10/2006 16:15:35 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 17/10/2006 16:23:53 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 11:18:38 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 11:18:47 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 11:20:1 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 11:20:10 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 11:22:31 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 11:35:4 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 11:54:6 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 18/10/2006 11:56:47 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 18/10/2006 12:8:6 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 18/10/2006 12:13:36 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 12:14:53 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 18/10/2006 12:23:11 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 12:38:51 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 18/10/2006 12:39:2 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 18/10/2006 12:39:54 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 16:25:23 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 16:28:20 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/10/2006 16:30:21 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin%20DragPlugin%20EditTemplate]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/10/2006 7:32:52 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 20/10/2006 8:50:8 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 20/10/2006 8:51:53 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 20/10/2006 8:54:16 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 20/10/2006 8:58:16 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:37:15 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:39:34 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:39:42 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:44:21 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:48:29 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/10/2006 14:48:37 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:50:5 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:51:50 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:53:8 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:53:50 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:55:22 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:56:24 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 14:59:46 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/10/2006 15:0:20 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:2:34 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:3:49 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:6:25 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:9:42 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/10/2006 15:9:51 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:10:46 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:11:29 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:19:18 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:21:49 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:23:16 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:28:27 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:34:28 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:36:44 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/10/2006 15:37:50 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:38:22 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:39:21 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:46:14 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 15:53:38 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/10/2006 16:10:14 | Soloport | [[/|http://soloport.tiddlyspot.com/#ResizeEditTextPlugin]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/10/2006 11:19:7 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/10/2006 13:29:31 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/10/2006 13:30:26 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/10/2006 13:33:18 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/10/2006 13:49:29 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/10/2006 13:50:54 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/10/2006 13:51:36 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 31/10/2006 15:8:10 | Soloport | [[/|http://soloport.tiddlyspot.com/]] | [[store.cgi|http://soloport.tiddlyspot.com/store.cgi]] | . | index.html | . |
/***\n<<tiddler UploadPluginDoc>>\n!Code\n***/\n//{{{\nversion.extensions.UploadPlugin = {\n major: 3, minor: 3, revision: 3, \n date: new Date(2006,6,30),\n type: 'macro',\n source: 'http://tiddlywiki.bidix.info/#UploadPlugin',\n docs: 'http://tiddlywiki.bidix.info/#UploadPluginDoc'\n};\n//}}}\n\n////+++!![config.lib.file]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.file) config.lib.file= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.file.dirname = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(0, lastpos);\n } else {\n return filePath.substring(0, filePath.lastIndexOf("\s\s"));\n }\n};\nconfig.lib.file.basename = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("#")) != -1) \n filePath = filePath.substring(0, lastpos);\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(lastpos + 1);\n } else\n return filePath.substring(filePath.lastIndexOf("\s\s")+1);\n};\nwindow.basename = function() {return "@@deprecated@@";};\n//}}}\n////===\n\n////+++!![config.lib.log]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.log) config.lib.log= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.Log = function(tiddlerTitle, logHeader) {\n if (version.major < 2)\n this.tiddler = store.tiddlers[tiddlerTitle];\n else\n this.tiddler = store.getTiddler(tiddlerTitle);\n if (!this.tiddler) {\n this.tiddler = new Tiddler();\n this.tiddler.title = tiddlerTitle;\n this.tiddler.text = "| !date | !user | !location |" + logHeader;\n this.tiddler.created = new Date();\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[tiddlerTitle] = this.tiddler;\n else\n store.addTiddler(this.tiddler);\n }\n return this;\n};\n\nconfig.lib.Log.prototype.newLine = function (line) {\n var now = new Date();\n var newText = "| ";\n newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";\n newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";\n newText += config.options.txtUserName + " | ";\n var location = document.location.toString();\n var filename = config.lib.file.basename(location);\n if (!filename) filename = '/';\n newText += "[["+filename+"|"+location + "]] |";\n this.tiddler.text = this.tiddler.text + "\sn" + newText;\n this.addToLine(line);\n};\n\nconfig.lib.Log.prototype.addToLine = function (text) {\n this.tiddler.text = this.tiddler.text + text;\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[this.tiddler.tittle] = this.tiddler;\n else {\n store.addTiddler(this.tiddler);\n story.refreshTiddler(this.tiddler.title);\n store.notify(this.tiddler.title, true);\n }\n if (version.major < 2)\n store.notifyAll(); \n};\n//}}}\n////===\n\n////+++!![config.lib.options]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.options) config.lib.options = {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\n\nconfig.lib.options.init = function (name, defaultValue) {\n if (!config.options[name]) {\n config.options[name] = defaultValue;\n saveOptionCookie(name);\n }\n};\n//}}}\n////===\n\n////+++!![PasswordTweak]\n\n//{{{\nversion.extensions.PasswordTweak = {\n major: 1, minor: 0, revision: 2, date: new Date(2006,3,11),\n type: 'tweak',\n source: 'http://tiddlywiki.bidix.info/#PasswordTweak'\n};\n//}}}\n/***\n!!config.macros.option\n***/\n//{{{\nconfig.macros.option.passwordCheckboxLabel = "Save this password on this computer";\nconfig.macros.option.passwordType = "password"; // password | text\n\nconfig.macros.option.onChangeOption = function(e)\n{\n var opt = this.getAttribute("option");\n var elementType,valueField;\n if(opt) {\n switch(opt.substr(0,3)) {\n case "txt":\n elementType = "input";\n valueField = "value";\n break;\n case "pas":\n elementType = "input";\n valueField = "value";\n break;\n case "chk":\n elementType = "input";\n valueField = "checked";\n break;\n }\n config.options[opt] = this[valueField];\n saveOptionCookie(opt);\n var nodes = document.getElementsByTagName(elementType);\n for(var t=0; t<nodes.length; t++) {\n var optNode = nodes[t].getAttribute("option");\n if (opt == optNode) \n nodes[t][valueField] = this[valueField];\n }\n }\n return(true);\n};\n\nconfig.macros.option.handler = function(place,macroName,params)\n{\n var opt = params[0];\n var size = 15;\n if (params[1])\n size = params[1];\n if(config.options[opt] === undefined) {\n return;}\n var c;\n switch(opt.substr(0,3)) {\n case "txt":\n c = document.createElement("input");\n c.onkeyup = this.onChangeOption;\n c.setAttribute ("option",opt);\n c.size = size;\n c.value = config.options[opt];\n place.appendChild(c);\n break;\n case "pas":\n // input password\n c = document.createElement ("input");\n c.setAttribute("type",config.macros.option.passwordType);\n c.onkeyup = this.onChangeOption;\n c.setAttribute("option",opt);\n c.size = size;\n c.value = config.options[opt];\n place.appendChild(c);\n // checkbox link with this password "save this password on this computer"\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option","chk"+opt);\n place.appendChild(c);\n c.checked = config.options["chk"+opt];\n // text savePasswordCheckboxLabel\n place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));\n break;\n case "chk":\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option",opt);\n place.appendChild(c);\n c.checked = config.options[opt];\n break;\n }\n};\n//}}}\n/***\n!! Option cookie stuff\n***/\n//{{{\nwindow.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;\nwindow.loadOptionsCookie = function()\n{\n var cookies = document.cookie.split(";");\n for(var c=0; c<cookies.length; c++) {\n var p = cookies[c].indexOf("=");\n if(p != -1) {\n var name = cookies[c].substr(0,p).trim();\n var value = cookies[c].substr(p+1).trim();\n switch(name.substr(0,3)) {\n case "txt":\n config.options[name] = unescape(value);\n break;\n case "pas":\n config.options[name] = unescape(value);\n break;\n case "chk":\n config.options[name] = value == "true";\n break;\n }\n }\n }\n};\n\nwindow.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;\nwindow.saveOptionCookie = function(name)\n{\n var c = name + "=";\n switch(name.substr(0,3)) {\n case "txt":\n c += escape(config.options[name].toString());\n break;\n case "chk":\n c += config.options[name] ? "true" : "false";\n // is there an option link with this chk ?\n if (config.options[name.substr(3)]) {\n saveOptionCookie(name.substr(3));\n }\n break;\n case "pas":\n if (config.options["chk"+name]) {\n c += escape(config.options[name].toString());\n } else {\n c += "";\n }\n break;\n }\n c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";\n document.cookie = c;\n};\n//}}}\n/***\n!! Initializations\n***/\n//{{{\n// define config.options.pasPassword\nif (!config.options.pasPassword) {\n config.options.pasPassword = 'defaultPassword';\n window.saveOptionCookie('pasPassword');\n}\n// since loadCookies is first called befor password definition\n// we need to reload cookies\nwindow.loadOptionsCookie();\n//}}}\n////===\n\n////+++!![config.macros.upload]\n\n//{{{\nconfig.macros.upload = {\n accessKey: "U",\n formName: "UploadPlugin",\n contentType: "text/html;charset=UTF-8",\n defaultStoreScript: "store.php"\n};\n\n// only this two configs need to be translated\nconfig.macros.upload.messages = {\n aboutToUpload: "About to upload TiddlyWiki to %0",\n errorDownloading: "Error downloading",\n errorUploadingContent: "Error uploading content",\n fileNotFound: "file to upload not found",\n fileNotUploaded: "File %0 NOT uploaded",\n mainFileUploaded: "Main TiddlyWiki file uploaded to %0",\n urlParamMissing: "url param missing",\n rssFileNotUploaded: "RssFile %0 NOT uploaded",\n rssFileUploaded: "Rss File uploaded to %0"\n};\n\nconfig.macros.upload.label = {\n promptOption: "Save and Upload this TiddlyWiki with UploadOptions",\n promptParamMacro: "Save and Upload this TiddlyWiki in %0",\n saveLabel: "save to web", \n saveToDisk: "save to disk",\n uploadLabel: "upload" \n};\n\nconfig.macros.upload.handler = function(place,macroName,params){\n // parameters initialization\n var storeUrl = params[0];\n var toFilename = params[1];\n var backupDir = params[2];\n var uploadDir = params[3];\n var username = params[4];\n var password; // for security reason no password as macro parameter\n var label;\n if (document.location.toString().substr(0,4) == "http")\n label = this.label.saveLabel;\n else\n label = this.label.uploadLabel;\n var prompt;\n if (storeUrl) {\n prompt = this.label.promptParamMacro.toString().format([this.dirname(storeUrl)]);\n }\n else {\n prompt = this.label.promptOption;\n }\n createTiddlyButton(place, label, prompt, \n function () {\n config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password); \n return false;}, \n null, null, this.accessKey);\n};\nconfig.macros.upload.UploadLog = function() {\n return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );\n};\nconfig.macros.upload.UploadLog.prototype = config.lib.Log.prototype;\nconfig.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {\n var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";\n line += uploadDir + " | " + toFilename + " | " + backupDir + " |";\n this.newLine(line);\n};\nconfig.macros.upload.UploadLog.prototype.endUpload = function() {\n this.addToLine(" Ok |");\n};\nconfig.macros.upload.basename = config.lib.file.basename;\nconfig.macros.upload.dirname = config.lib.file.dirname;\nconfig.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)\n{\n // parameters initialization\n storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);\n toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);\n backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);\n uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);\n username = (username ? username : config.options.txtUploadUserName);\n password = config.options.pasUploadPassword; // for security reason no password as macro parameter\n if (storeUrl === '') {\n config.macros.upload.defaultStoreScript;\n }\n if (config.lib.file.dirname(storeUrl) === '') {\n storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;\n }\n if (toFilename === '') {\n toFilename = config.lib.file.basename(document.location.toString());\n }\n\n clearMessage();\n // only for forcing the message to display\n if (version.major < 2)\n store.notifyAll();\n if (!storeUrl) {\n alert(config.macros.upload.messages.urlParamMissing);\n return;\n }\n \n var log = new this.UploadLog();\n log.startUpload(storeUrl, toFilename, uploadDir, backupDir);\n if (document.location.toString().substr(0,5) == "file:") {\n saveChanges();\n }\n displayMessage(config.macros.upload.messages.aboutToUpload.format([this.dirname(storeUrl)]), this.dirname(storeUrl));\n this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);\n if(config.options.chkGenerateAnRssFeed) {\n //var rssContent = convertUnicodeToUTF8(generateRss());\n var rssContent = generateRss();\n var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";\n this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password, \n function (responseText) {\n if (responseText.substring(0,1) != '0') {\n displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));\n }\n else {\n if (uploadDir) {\n rssPath = uploadDir + "/" + config.macros.upload.basename(rssPath);\n } else {\n rssPath = config.macros.upload.basename(rssPath);\n }\n displayMessage(config.macros.upload.messages.rssFileUploaded.format(\n [config.macros.upload.dirname(storeUrl)+"/"+rssPath]), config.macros.upload.dirname(storeUrl)+"/"+rssPath);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n });\n }\n return;\n};\n\nconfig.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var original;\n if (document.location.toString().substr(0,4) == "http") {\n original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);\n return;\n }\n else {\n // standard way : Local file\n \n original = loadFile(getLocalPath(document.location.toString()));\n if(window.Components) {\n // it's a mozilla browser\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]\n .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);\n converter.charset = "UTF-8";\n original = converter.ConvertToUnicode(original);\n }\n catch(e) {\n }\n }\n }\n //DEBUG alert(original);\n this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password);\n};\n\nconfig.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it\n var endSaveArea = '</d' + 'iv>';\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n {\n alert(config.messages.invalidFileError.format([document.location.toString()]));\n return;\n }\n var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + \n allTiddlersAsHtml() + "\sn\st\st" +\n original.substr(posClosingDiv);\n var newSiteTitle;\n if(version.major < 2){\n newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();\n } else {\n newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();\n }\n revised = revised.replace(new RegExp("<title>[^<]*</title>", "im"),"<title>"+ newSiteTitle +"</title>");\n var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir, \n username, password, function (responseText) {\n if (responseText.substring(0,1) != '0') {\n alert(responseText);\n displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));\n }\n else {\n if (uploadDir !== '') {\n toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);\n } else {\n toFilename = config.macros.upload.basename(toFilename);\n }\n displayMessage(config.macros.upload.messages.mainFileUploaded.format(\n [config.macros.upload.dirname(storeUrl)+"/"+toFilename]), config.macros.upload.dirname(storeUrl)+"/"+toFilename);\n var log = new config.macros.upload.UploadLog();\n log.endUpload();\n store.setDirty(false);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n }\n );\n};\n\nconfig.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir, \n username, password, callbackFn) {\n var boundary = "---------------------------"+"AaB03x"; \n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n if (window.netscape){\n try {\n if (document.location.toString().substr(0,4) != "http") {\n netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}\n }\n catch (e) { }\n } \n //DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");\n // compose headers data\n var sheader = "";\n sheader += "--" + boundary + "\sr\snContent-disposition: form-data; name=\s"";\n sheader += config.macros.upload.formName +"\s"\sr\sn\sr\sn";\n sheader += "backupDir="+backupDir\n +";user=" + username \n +";password=" + password\n +";uploaddir=" + uploadDir\n + ";;\sr\sn"; \n sheader += "\sr\sn" + "--" + boundary + "\sr\sn";\n sheader += "Content-disposition: form-data; name=\s"userfile\s"; filename=\s""+toFilename+"\s"\sr\sn";\n sheader += "Content-Type: " + config.macros.upload.contentType + "\sr\sn";\n sheader += "Content-Length: " + content.length + "\sr\sn\sr\sn";\n // compose trailer data\n var strailer = new String();\n strailer = "\sr\sn--" + boundary + "--\sr\sn";\n var data;\n data = sheader + content + strailer;\n //request.open("POST", storeUrl, true, username, password);\n request.open("POST", storeUrl, true);\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if (request.status == 200)\n callbackFn(request.responseText);\n else\n alert(config.macros.upload.messages.errorUploadingContent);\n }\n };\n request.setRequestHeader("Content-Length",data.length);\n request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);\n request.send(data); \n};\n\n\nconfig.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir, \n username, password) {\n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n try {\n if (uploadUrl.substr(0,4) == "http") {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n else {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n }\n } catch (e) { }\n //request.open("GET", document.location.toString(), true, username, password);\n request.open("GET", document.location.toString(), true);\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if(request.status == 200) {\n config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl, \n uploadToFilename, uploadDir, uploadBackupDir, username, password);\n }\n else\n alert(config.macros.upload.messages.errorDownloading.format(\n [document.location.toString()]));\n }\n };\n request.send(null);\n};\n\n//}}}\n////===\n\n////+++!![Initializations]\n\n//{{{\nconfig.lib.options.init('txtUploadStoreUrl','store.php');\nconfig.lib.options.init('txtUploadFilename','');\nconfig.lib.options.init('txtUploadDir','');\nconfig.lib.options.init('txtUploadBackupDir','');\nconfig.lib.options.init('txtUploadUserName',config.options.txtUserName);\nconfig.lib.options.init('pasUploadPassword','');\nconfig.shadowTiddlers.UploadPluginDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadPluginDoc ]]\sn"; \n\n\n//}}}\n////===\n\n////+++!![Core Hijacking]\n\n//{{{\nconfig.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;\nconfig.macros.saveChanges.label = config.macros.upload.label.saveToDisk;\n\nconfig.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;\n\nconfig.macros.saveChanges.handler = function(place)\n{\n if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))\n createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);\n}\n\n//}}}\n////===
<!--{{{-->\n<div class='toolbar' macro='toolbar closeTiddler closeOthers collapseTiddler collapseOthers +editTiddler permalink'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[MMM DD, YYYY]]'></span> (created <span macro='view created date [[MMM DD, YYYY]]'></span>)</div>\n<div class='tagged' macro='tags'></div>\n<div class='tagging' macro='tagging'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>\n<!--}}}-->
| tiddlyspot password:|<<option pasUploadPassword>>|\n| site management:|<<upload http://soloport.tiddlyspot.com/store.cgi index.html . . soloport>>//(requires tiddlyspot password)//<<br>>[[control panel|http://soloport.tiddlyspot.com/controlpanel]], [[download (go offline)|http://soloport.tiddlyspot.com/download]]|\n| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://tiddlyspot.com/faq/]], [[announcements|http://tiddlyspot.com/announce/]], [[blog|http://tiddlyspot.com/blog/]], [[email feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|