<<list missing>>
<<option chkOpenInNewWindow>> OpenLinksInNewWindow\n<<option chkSaveEmptyTemplate>> SaveEmptyTemplate
<<list all>>
<<list orphans>>
These 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 chkGenerateAnRssFeed>> GenerateAnRssFeed\n<<option chkRegExpSearch>> RegExpSearch\n<<option chkCaseSensitiveSearch>> CaseSensitiveSearch\n<<option chkAnimate>> EnableAnimations\n\nSee AdvancedOptions
<<allTags>>
<<tabs txtMoreTab\nAll "All tiddlers" TabMoreAll\nMissing "Missing tiddlers" TabMoreMissing\nOrphans "Orphaned tiddlers" TabMoreOrphans\n>>
//Move the messageArea back to the top\nvar contentWrapper = document.getElementById('contentWrapper');\ncontentWrapper.insertBefore(document.getElementById('messageArea'),document.getElementById('mainMenu'));
<<tabs txtMainTab\nTimeline Timeline TabTimeline\nTags "All tags" TabTags\nMore "More lists" TabMore\n>>
<<timeline>>
#popup{\n padding-left: 2px !important;\n padding-bottom: 2px !important;\n}\n\n#popup *{\n border: 0 !important;\n}\n\n#popup hr {\n border-top: solid 1px #ccc !important; \n border-left: none;\n border-right: none;\n border-bottom: none;\n height: 1px;\n color: #ccc;\n width: 98%;\n}\n\n#popup a:hover{\n color: black !important;\n}\n\nbody {\n margin: 0px;\n background-color: #e4e4e4;\n font-size: 9pt;\n font-family: tahoma,arial,helvetica;\n}\n\na:link, a:visited, a:hover, a:active {\n text-decoration: none;\n}\n\n#header {\n border-bottom: 1px solid #458;\n margin-bottom: 0em;\n}\n\n#titleLine {\n color: #fff;\n background: #bcd;\n padding: 0.7em 1em 1em 1em;\n}\n\n#titleLine a {\n text-decoration: none;\n color: #9ab;\n}\n\n#siteTitle {\n font-size: 40pt;\n font-weight: bold;\n padding-left: 20px;\n color: #9ab;\n}\n\n#siteSubtitle {\n font-size: 12pt;\n font-family: georgia,times;\n font-style: italic;\n color: #457;\n display: block;\n position: relative;\n bottom: 5px;\n left: 0px;\n padding-left: 70px;\n}\n\n#mainMenu {\n font-size: 12px;\n float: left;\n width: 13em;\n border: 1px solid #aaa;\n margin: .5em 1em .5em 1em;\n background: #f3f3f3;\n line-height: 125%;\n color: black;\n text-align: right;\npadding: 0;\n}\n\n#mainMenu .tiddlyLink, #mainMenu a.button{\n display: block; \n text-decoration: none;\n width: 12em;\n padding: .25em .5em;\n color: #444;\n text-transform: capitalize;\n}\n\n#mainMenu a:hover {\n color: #000 !important;\n background-color: #bcd !important;\n}\n\n#displayArea {\n margin: 1em 14em 0em 15em;\n}\n\n#messageArea {\n background-color: #5a84ad;\n color: #fff;\n padding: 0.5em 0.5em 0.5em 0.5em;\n margin: 0em 0em 0.6em 0em;\n border-bottom: 1px solid #458;\n display: none;\n}\n\n#messageArea a:link, #messageArea a:visited {\n display: inline;\n text-decoration: underline;\n color: #ddf;\n}\n\n#messageArea a:hover, #messageArea a:active{\n color: #fff;\n}\n\n.tiddler {\n border: 1px solid #aaa;\n margin: 0pt 10px 20px;\n padding: 8px;\n padding-top:0;\n font-family: arial,georgia,times;\n background-color: white;\n}\n\n.innerTiddler {\n padding: 0.7em 1em 1em 0.8em;\n font-size: 9pt;\n}\n\n#displayArea .tiddlyLinkExisting {\n font-weight: bold;\n}\n\n#displayArea .tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n#displayArea .externalLink {\n text-decoration: underline;\n}\n/*============================================================================== */\n.title {\n font-family: tahoma,arial,helvetica;\n font-size: 13pt;\n color: #469;\n font-weight: bold;\n }\n\n.toolbar {\n font-family: tahoma,arial,helvetica;\n font-weight: normal;\n font-size: 8pt;\n padding: 0em 0em 0em 1em;\n color: #aaa !important;\n visibility: hidden;\n position: relative;\n bottom: -1.5em;\n}\n\n.toolbar a{\n padding: 0.2em 0.4em 0.2em 0.4em;\n color: #888 !important;\n}\n\n.toolbar a:hover{\n color: black;\n background-color: #e4e4e4 !important;\n border: 1px solid #aaa !important;\n margin-left: -1px; \n margin-right: -1px;\n}\n\n.toolbar a:active{\n color: #666;\n}\n\n.viewer a.button{\n border: 0;\n background-color: transparent !important;\n padding: 0em;\n color: #888 !important;\n border: 1px solid transparent;\n}\n\n.editorFooter a:hover, .footer a.button {\n color: #888 !important;\n}\n\n.editorFooter a:hover, .footer a:hover{\n color: black;\n background-color: #e4e4e4 !important;\n border: 1px solid #aaa !important;\n margin-left: -1px; \n margin-right: -1px;\n}\n\n.viewer a.button:hover{\n color: black;\n background-color: #e4e4e4 !important;\n border: 1px solid #aaa !important;\n}\n\n.viewer a.button,.editorFooter a:hover, .footer a.button {\n color: #666;\n}\n\n#popup {\n display: none;\n position: absolute;\n top: 1.5em;\n left: 13.25em;\n font-size: 8pt;\n color: #888;\n background-color: #e4e4e4;\n padding: 0;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #330000;\n border-right: 1px solid #330000;\n border-left: 1px solid #aaa;\n}\n\n#popup a {\n display: block;\n color: #888;\n min-width: 8em;\n border: 0;\n margin: 0;\n}\n\n#popup a:hover {\n background-color: #e4e4e4;\n color: black;\n}\n\n.body {\n border-top:1px solid #ccc;\n padding-top: 0.5em;\n margin-top:0.3em;\n}\n\n.viewer {\n color: black;\n line-height: 140%;\n}\n\n.viewer a:link, .body a:visited{\n color: #922;\n}\n\n.viewer a:hover {\n color: #b44;\n background-color: transparent;\n text-decoration: none;\n}\n\n.viewer blockquote {\n font-size: 8pt;\n line-height: 150%;\n border-left: 1px solid #ccc;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul {\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer ol {\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer h2,h3,h4,h5,h6 {\n font-weight: bold;\n text-decoration: none;\n color: #469;\n padding-left: .6em;\nbackground-color: transparent;\nborder-bottom: 3px dotted #ccc;\n}\n\n.viewer h2 {\n font-size: 12pt;\n}\n\n.viewer h3 {\n font-size: 11pt;\n}\n\n.viewer h4 {\n font-size: 10pt;\n}\n\n.viewer h5 {\n font-size: 9pt;\n}\n\n.viewer h6 {\n font-size: 8pt;\n}\n\n.viewer table {\n font-size: 10pt;\n border-collapse: collapse;\n border: 2px solid #303030;\n margin-left: 1.0em;\n margin-right: 1.0em;\n margin-top: 0.8em;\n margin-bottom: 0.8em;\n}\n\n.viewer th {\n background-color: #bcd;\n border: 1px solid #606060;\n padding: 3px;\n}\n\n.viewer td, tr {\n border: 1px solid #606060;\n padding: 3px;\n}\n\n.viewer caption {\n font-size: smaller;\n padding: 3px;\n}\n\n.viewer hr {\n border-top: dashed 1px #606060;\n border-left: none;\n border-right: none;\n border-bottom: none;\n height: 1px;\n color: #666666;\n}\n\n.highlight {\n color: #000000;\n background-color: #bcd;\n}\n\n.editor {\n font-size: 8pt;\n color: #402c74;\n font-weight: normal;\n}\n\n.editor input {\n display: block;\n border: 1px solid black;\n}\n\n.editor textarea {\n display: block;\n font: inherit;\n border: 1px solid black;\n}\n\n/*\n=================Sidebar==========\n=================================\n*/\n\n#sidebar {\n float: right;\n width: 14em;\n font-size: 8pt;\n border-left: 1px solid #aaa;\n border-bottom:1px solid #aaa;\n}\n\n#sidebarOptions {\n color: #666 !important;\n background-color: #f3f3f3 !important;\n}\n\n#sidebar #sidebarOptions a:hover{\n background-color: #f3f3f3;\n}\n\n#contentWrapper #sidebar a:hover{\n color: #b44;\n text-decoration: underline;\n}\n\n#contentWrapper .sidebarSubHeading {\n font-size: 0.95em;\n color: #236;\n}\n\n#contentWrapper #commandPanel {\n padding-top: 0.5em;\n background-color: #f3f3f3;\n color: black;\n font-size: 8pt;\n}\n\n#contentWrapper #commandPanel a {\n display: block;\n padding: 0.3em 0.2em 0.3em 1em;\n color: #666;\n text-decoration: none;\n}\n\n#contentWrapper #commandPanel a:hover {\n color: #922;\n text-decoration: underline;\n background-color: transparent;;\n}\n\n#contentWrapper #commandPanel input {\n margin: 0.4em 0em 0.3em 1em;\n border: 1px solid black;\n}\n\n#contentWrapper #optionsPanel {\n display: none;\n background-color: #f3f8ff;\n padding: 0.5em 0.5em 0em 0.5em;\n font-size: 7pt;\n color: black;\n}\n\n#contentWrapper #optionsPanel a:link, #optionsPanel a:visited {\n color: #666;\n font-weight: bold;\n}\n\n#contentWrapper #optionsPanel a:hover {\n color: #922;\n text-decoration: underline;\n background-color: transparent;\n}\n\n.optionsText {\n margin-top: 0.25em;\n margin-bottom: 0.75em;\n}\n\n.optionsItem {\n}\n/*========================================================================*/\n#contentWrapper #sidebarTabs {\n background-color: #f3f3f3;\n padding: 0em;\n}\n\n#contentWrapper #sidebarTabs a {\n color: black;\n background-color: transparent;\n}\n\n#contentWrapper #sidebarTabs a:hover {\n color: #922; text-decoration: underline;\n background-color: transparent;\n}\n\n#contentWrapper #sidebarTabs a:active {\n color: black;\n}\n\n#contentWrapper .tabContentTags #popup {\n display: none;\n position: absolute;\n top: 1em;\n left: 13.25em;\n font-size: 8pt;\n color: #888;\n background-color: #e4e4e4;\n padding: 0;\n margin-top: -2px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #330000;\n border-right: 1px solid #330000;\n border-left: 1px solid #aaa;\n}\n\n#contentWrapper .tabContentTags #popup hr {\n color: #ccc;\n}\n\nhr{\n color: black !important;\n}\n\n#contentWrapper .tabContentTags #popup a {\n display: block;\n color: #888;\n min-width: 8em;\n border: 0;\n margin: 0;\n height: 1.2em;\n}\n\n#contentWrapper .tabContentTags #popup a:hover {\n background-color: #e4e4e4;\n color: black;\n}\n\n#contentWrapper a.tab {\n font-weight: normal;\n display: inline;\n margin: 0px 1px; \n border:1px solid #aaa;\n border-bottom:none;\n}\n\n#contentWrapper a.tabSelected {\n background-color: #e6e6e6 !important;\n padding: 2px 4px 2px 4px;\n}\n\n#contentWrapper a.tabUnselected {\n background-color: #ccc;\n padding: 2px 4px 0px 4px;\n}\n\n/*===========================================================================================*/\n/*===========================================================================================*/\n#sidebarTabs{\n margin: 0;\n padding: 0;\n}\n\n#contentWrapper .tabContents {\n background-color: #e6e6e6;\n border-bottom: solid #aaa 1px;\n}\n\n#contentWrapper .tabContents a.tiddlyLink, #contentWrapper .tabContents a.button{\n background-color: #e6e6e6;\n color: #922 !important;\n}\n\n#contentWrapper .tabContents a:hover{\n color: #b44 !important;\n}\n\n#contentWrapper .txtMoreTab a.tabUnselected {\n background-color: #e6e6e6;\n padding: 2px 4px 0px 4px;\n}\n\n#contentWrapper .txtMoreTab a.tabSelected {\n background-color: #ccc !important;\n padding: 2px 4px 2px 4px;\n}\n\n.txtMoreTab .tabContents {\n background-color: #ccc !important;\n border-bottom: solid #aaa 1px;\n\n}\n\n#licensePanel {\n padding: 0.5em 0.2em 0.5em 0.2em;\n}\n\n#licensePanel a {\n display: block;\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: #555;\n}\n\n#licensePanel a:hover {\n text-decoration: none;\n color: #922;\n background-color: transparent;\n}\n\n#storeArea, #copyright {\n display: none;\n}\n\n#floater {\n font-size: 10pt;\n visibility: hidden;\n color: white;\n border: 1px solid #666;\n background-color: white;\n position: absolute;\n padding: 1em 1em 1em 1em;\n display:none;\n}\n*/\n@media print {\n\n#mainMenu {\n display: none;\n}\n\n#displayArea {\n margin: 1em 1em 0em 1em;\n}\n\n#sidebar {\n display: none;\n}\n\n}
This change makes the formatString function change all occurances of each pattern instead of only the first. This allows for date formats like YYYY0MM0DD - DD MMM YYYY to work correctly.\n{{{\n// Substitute date components into a string\nDate.prototype.formatString = function(template)\n{\n template = template.replace(/YYYY/g,this.getFullYear());\n template = template.replace(/YY/g,String.zeroPad(this.getFullYear()-2000,2));\n template = template.replace(/MMM/g,config.messages.dates.months[this.getMonth()]);\n template = template.replace(/0MM/g,String.zeroPad(this.getMonth()+1,2));\n template = template.replace(/MM/g,this.getMonth()+1);\n template = template.replace(/DDD/g,config.messages.dates.days[this.getDay()]);\n template = template.replace(/0DD/g,String.zeroPad(this.getDate(),2));\n template = template.replace(/DD/g,this.getDate());\n template = template.replace(/hh/g,this.getHours());\n template = template.replace(/mm/g,this.getMinutes());\n template = template.replace(/ss/g,this.getSeconds());\n return template;\n}\n}}}
\nwindow.onClickToolbarCloseOthers = function(e) {\n if (!e) var e = window.event;\n clearMessage();\n if(this.parentNode.id)\n closeAllOtherTiddlers(this.parentNode.id.substr(7));\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n\nfunction closeAllOtherTiddlers(thisTitle) {\n clearMessage();\n var place = document.getElementById("tiddlerDisplay");\n var tiddler = place.firstChild;\n var nextTiddler;\n while(tiddler) {\n nextTiddler = tiddler.nextSibling;\n if(tiddler.id) {\n if(tiddler.id.substr(0,7) == "tiddler") {\n var title = tiddler.id.substr(7);\n if(!document.getElementById("editorWrapper" + title) && title != thisTitle) {\n place.removeChild(tiddler);\n }\n }\n }\n tiddler = nextTiddler;\n }\n window.scrollTo(0,0);\n}\n\nconfig.views.wikified.toolbarCloseOthers = {text: "close others", tooltip: "Close all tiddlers except this one"};\n\nwindow.createTiddlerToolbar_orig_mptw_closeothers = window.createTiddlerToolbar;\nwindow.createTiddlerToolbar = function(title,isEditor) {\n createTiddlerToolbar_orig_mptw_closeothers(title,isEditor);\n var theToolbar = document.getElementById("toolbar" + title);\n var lingo = config.views.wikified;\n if(!isEditor) {\n createTiddlyButton(theToolbar, lingo.toolbarCloseOthers.text, lingo.toolbarCloseOthers.tooltip, onClickToolbarCloseOthers);\n insertSpacer(theToolbar);\n \n // this gets a little hacky\n // want to put my new button next to close button\n closeOthersButton = theToolbar.childNodes[9];\n spacer = theToolbar.childNodes[10];\n secondButton = theToolbar.childNodes[3];\n\n\n theToolbar.insertBefore(spacer,secondButton);\n theToolbar.insertBefore(closeOthersButton,spacer);\n\n }\n}\n
config.options["defaultLeadTime"] = 6000;\nconfig.macros["reminder"] = {};\nconfig.macros["showReminders"] = {};\nconfig.macros["displayTiddlersWithReminders"] = {};\nconfig.options["defaultReminderMessage"] = "DIFF: TITLE on DATE ANNIVERSARY";\nconfig.options["defaultAnniversaryMessage"] = "(DIFF)";\n\nconfig.macros.showReminders.handler = function(place,macroName,params)\n{\n var now = new Date().getMidnight();\n var paramHash = {};\n var type = "";\n var num = 0;\n var leadtime = 14;\n var paramHash = getParamsForReminder(params);\n var bProvidedDate = (paramHash["year"] != null) || (paramHash["month"] != null) || (paramHash["day"] != null) || (paramHash["dayofweek"] != null)\n if (paramHash["leadtime"] != null)\n {\n leadtime = paramHash["leadtime"];\n if (bProvidedDate)\n//If they've entered a day, we need to make sure to find it. We'll reset the leadtime a few lines down.\n paramHash["leadtime"] = 10000\n }\n var matchedDate = now;\n if (bProvidedDate)\n{\n matchedDate = findDateForReminder(paramHash); \n}\n\n var arr = findTiddlersWithReminders(matchedDate, leadtime, paramHash["tag"], paramHash["limit"]);\n for (j = 0; j < arr.length; j++)\n {\n var mess = getReminderMessageForDisplay(arr[j]["diff"], arr[j]["params"], arr[j]["matchedDate"]);\n if (paramHash["nolinks"] == null)\n mess += " -- ";\n createTiddlyElement(place,"span",null,null, mess);\n if (paramHash["nolinks"] == null)\n createTiddlyLink(place, arr[j]["tiddler"], arr[j]["tiddler"]);\n place.appendChild(document.createElement("br"));\n }\n \n}\n\n\nconfig.macros.displayTiddlersWithReminders.handler = function(place,macroName,params)\n{\n var now = new Date().getMidnight();\n var paramHash = {};\n var type = "";\n var num = 0;\n var leadtime = 14;\n var paramHash = getParamsForReminder(params);\n var bProvidedDate = (paramHash["year"] != null) || (paramHash["month"] != null) || (paramHash["day"] != null) || (paramHash["dayofweek"] != null)\n if (paramHash["leadtime"] != null)\n {\n leadtime = paramHash["leadtime"];\n if (bProvidedDate)\n//If they've entered a day, we need to make sure to find it. We'll reset the leadtime a few lines down.\n paramHash["leadtime"] = 10000\n }\n var matchedDate = now;\n if (bProvidedDate)\n {\n matchedDate = findDateForReminder(paramHash); \n }\n\n var arr = findTiddlersWithReminders(matchedDate, leadtime, paramHash["tag"], paramHash["limit"]);\n for (j = 0; j < arr.length; j++)\n {\n displayTiddler(null,arr[j]["tiddler"],0,null,false,false,false)\n }\n}\n\nconfig.macros.reminder.handler = function(place,macroName,params)\n{\n var dateHash = getParamsForReminder(params);\n if (dateHash["hidden"] != null)\n return;\n var matchedDate = findDateForReminder(dateHash);\n var leadTime = dateHash["leadtime"];\n if (leadTime == null)\n leadTime = config.options["defaultLeadTime"]; \n\n if (matchedDate != null)\n {\n var diff = matchedDate.getDifferenceInDays(new Date())\n createTiddlyElement(place,"span",null,null, getReminderMessageForDisplay(diff, dateHash, matchedDate));\n }\n else\n createTiddlyElement(place,"span",null,null, "Couldn't find a match for " + dateHash["title"] + " in the next " + leadTime + " days.");\n}\n\nDate.prototype.getMidnight = function()\n{\n return Date.convertFromYYYYMMDDHHMM("" + this.getFullYear() + String.zeroPad(this.getMonth()+1,2) + String.zeroPad(this.getDate(),2) + "0000");\n}\n// Add the specified number of days to a date.\nDate.prototype.addDays = function(numberOfDays)\n{\n return(new Date(this.getTime() + (86400000 * numberOfDays)));\n}\n// Add the specified number of days to a date.\nDate.prototype.getDifferenceInDays = function(otherDate)\n{\n return Math.floor((this.getMidnight().getTime() - otherDate.getMidnight().getTime()) / 86400000);\n \n}\n\nfindTiddlersWithReminders = function(baseDate, leadtime, tags, limit)\n{\n var matches = store.search("reminder",false,false,"title","excludeSearch");\n var structureRegExp = new RegExp(structurePatterns,"mg");\n var arr = [];\n for(var t=matches.length-1; t>=0; t--)\n {\n if (tags != null)\n {\n var bHasTag = false;\n for(var t2=0; t2<matches[t].tags.length; t2++)\n {\n if (matches[t].tags[t2] == tags)\n {\n bHasTag = true;\n break;\n }\n }\n if (! bHasTag)\n continue;\n }\n\n var targetText = matches[t].text;\n do {\n // Get the next formatting match\n var formatMatch = structureRegExp.exec(targetText);\n var matchPos = formatMatch ? formatMatch.index : targetText.length;\n var level;\n var theBlockquote;\n if(formatMatch)\n {\n if (formatMatch[14] != null && formatMatch[14].toLowerCase() == "reminder")\n {\n //Find the matching date.\n var params = formatMatch[15].readMacroParams();\n var dateHash = getParamsForReminder(params);\n\n if (limit != null || dateHash["leadtime"] == null)\n dateHash["leadtime"] = leadtime;\n \n\n var matchedDate = findDateForReminder(dateHash, baseDate);\n if (matchedDate != null)\n {\n var hash = {};\n var diff = matchedDate.getDifferenceInDays(baseDate)\n hash["diff"] = diff;\n hash["matchedDate"] = matchedDate;\n hash["params"] = dateHash;\n hash["tiddler"] = matches[t].title;\n hash["tags"] = matches[t].tags;\n arr.pushUnique(hash);\n }\n }\n }\n }while(formatMatch);\n }\n arr.sort(function (a,b) {if(a["diff"] == b["diff"]) return(0); else return (a["diff"] < b["diff"]) ? -1 : +1; });\n return arr;\n}\ngetReminderMessageForDisplay = function(diff, params, matchedDate)\n{\n var anniversaryString = "";\n var reminderTitle = params["title"];\n if (reminderTitle == null)\n reminderTitle = "Untitled Reminder";\n else if (reminderTitle[0] == "\s"" && reminderTitle[reminderTitle.length -1] == "\s"")\n reminderTitle = reminderTitle.substr(1, reminderTitle.length - 2);\n if (params["firstyear"] != null)\n anniversaryString = config.options["defaultAnniversaryMessage"].replace("DIFF", (matchedDate.getFullYear() - params["firstyear"]));\n var mess = "";\n if (diff == 0)\n diffString = "Today";\n else if (diff == 1)\n diffString = "Tomorrow";\n else\n diffString = diff + " days";\n mess = config.options["defaultReminderMessage"].replace("DIFF", diffString).replace("TITLE", reminderTitle).replace("DATE", matchedDate.formatString("DDD MMM DD, YYYY")).replace("ANNIVERSARY", anniversaryString);\n return mess;\n}\ngetParamsForReminder = function(params)\n{\n var dateHash = {};\n var type = "";\n var num = 0;\n var title = "";\n for(var t=0; t<params.length; t++)\n {\n type = params[t].split(":")[0].toLowerCase();\n if (type != "title" && type != "tag")\n num = parseInt(params[t].split(":")[1]);\n else if (type == "nolinks" || type == "limit" || type == "hidden")\n num = 1;\n else\n {\n title = params[t].split(":")[1];\n while (title[0] == '"' && title[title.length - 1] != '"')\n title += " " + params[++t];\n num = title;\n }\n dateHash[type] = num;\n }\n //date is synonymous with day\n if (dateHash["day"] == null)\n dateHash["day"] = dateHash["date"];\n return dateHash;\n}\nfindDateForReminder = function( dateHash, baseDate)\n{\n if (baseDate == null)\n baseDate = new Date().getMidnight();\n var leadTime = dateHash["leadtime"];\n if (leadTime == null)\n leadTime = config.options["defaultLeadTime"]; \n var matchedDate = baseDate.findMatch(dateHash, leadTime);\n if (matchedDate != null)\n {\n var newMatchedDate = matchedDate;\n if (dateHash["recurdays"] != null)\n {\n while (newMatchedDate.getTime() < baseDate.getTime())\n {\n newMatchedDate = newMatchedDate.addDays(dateHash["recurdays"]);\n }\n }\n else if (dateHash["offsetyear"] != null \n || dateHash["offsetmonth"] != null\n || dateHash["offsetday"] != null\n || dateHash["offsetdayofweek"] != null)\n {\n dateHash["year"] = dateHash["offsetyear"];\n dateHash["month"] = dateHash["offsetmonth"];\n dateHash["day"] = dateHash["offsetday"];\n dateHash["dayofweek"] = dateHash["offsetdayofweek"];\n newMatchedDate = matchedDate.findMatch(dateHash, leadTime);\n }\n var diff2 = newMatchedDate.getDifferenceInDays(baseDate);\n if (diff2 <= leadTime)\n return newMatchedDate;\n }\n return null;\n}\n// Add the specified number of days to a date.\nDate.prototype.findMatch = function(dateHash, leadTime)\n{\n var bSpecifiedYear = (dateHash["year"] != null);\n var bSpecifiedMonth = (dateHash["month"] != null);\n var bSpecifiedDay = (dateHash["day"] != null);\n var bSpecifiedDayOfWeek = (dateHash["dayofweek"] != null);\n if (bSpecifiedYear && bSpecifiedMonth && bSpecifiedDay)\n return Date.convertFromYYYYMMDDHHMM("" + dateHash["year"] + String.zeroPad(dateHash["month"],2) + String.zeroPad(dateHash["day"],2) + "0000");\n var bMatchedYear = !bSpecifiedYear;\n var bMatchedMonth = !bSpecifiedMonth;\n var bMatchedDay = !bSpecifiedDay;\n var bMatchedDayOfWeek = !bSpecifiedDayOfWeek;\n var searchInterval = 1;\n if (bSpecifiedDayOfWeek && dateHash["dayofweek"] < 0)\n {\n dateHash["dayofweek"] = dateHash["dayofweek"] * -1;\n searchInterval = -1;\n }\n if (bSpecifiedDay && bSpecifiedMonth && !bSpecifiedYear && !bSpecifiedDayOfWeek)\n {\n //Shortcut -- First try this year. If it's too small, try next year.\n var tmpMidnight = this.getMidnight();\n var tmpDate = Date.convertFromYYYYMMDDHHMM("" + this.getFullYear() + String.zeroPad(dateHash["month"],2) + String.zeroPad(dateHash["day"],2) + "0000");\n if (tmpDate.getTime() < tmpMidnight.getTime())\n tmpDate = Date.convertFromYYYYMMDDHHMM("" + (this.getFullYear() + 1) + String.zeroPad(dateHash["month"],2) + String.zeroPad(dateHash["day"],2) + "0000");\n var diff2 = tmpDate.getDifferenceInDays(tmpMidnight);\n if (diff2 <= leadTime && diff2 >= 0)\n return tmpDate;\n else\n return null;\n }\n for (i = 0; i <= leadTime; i+=searchInterval)\n {\n var newDate = this.addDays(i);\n if (bSpecifiedYear)\n bMatchedYear = ((dateHash["year"] - 1900) == newDate.getYear());\n if (bSpecifiedMonth)\n bMatchedMonth = ((dateHash["month"] - 1) == newDate.getMonth() );\n if (bSpecifiedDay)\n bMatchedDay = (dateHash["day"] == newDate.getDate());\n if (bSpecifiedDayOfWeek)\n bMatchedDayOfWeek = (dateHash["dayofweek"] == newDate.getDay());\n\n if (bMatchedYear && bMatchedMonth && bMatchedDay && bMatchedDayOfWeek)\n return newDate;\n }\n}\n\n// Convert a date to UTC YYYYMMDD string format\nDate.prototype.convertToYYYYMMDD = function()\n{\n return(String.zeroPad(this.getFullYear(),4) + String.zeroPad(this.getMonth()+1,2) + String.zeroPad(this.getDate(),2));\n}\n
// adjust this to your preference:\nconfig.mptw_autopre = {\n tiddlers: "StyleSheet",\n tags: "stylesheets,CSS,javascript,systemConfig"\n};\n\nwindow.createTiddlerViewer_orig_mptw_autopre = window.createTiddlerViewer;\n\nwindow.createTiddlerViewer = function(title,highlightText,highlightCaseSensitive) {\n \n var tiddler = store.tiddlers[title];\n var trigger = false; \n\n if (tiddler) {\n\n // check for title match\n var titlestocheck = config.mptw_autopre.tiddlers.split(",");\n for (var j=0;j<titlestocheck.length;j++) {\n if (titlestocheck[j] == title) {\n trigger = true;\n }\n }\n\n // check for tag match\n var tags = tiddler.getTags().readBracketedList();\n for (var i=0;i<tags.length;i++) {\n var tagstocheck = config.mptw_autopre.tags.split(",");\n for (var j=0;j<tagstocheck.length;j++) {\n if (tagstocheck[j] == tags[i]) {\n trigger = true;\n }\n }\n }\n }\n\n if (trigger) {\n var realText = store.getTiddlerText(title);\n var tweakedText = "{{{\sn" + realText + "\sn}}}\sn";\n tiddler.text = tweakedText;\n createTiddlerViewer_orig_mptw_autopre(title,highlightText,highlightCaseSensitive);\n tiddler.text = realText;\n }\n else {\n createTiddlerViewer_orig_mptw_autopre(title,highlightText,highlightCaseSensitive);\n }\n}
// Eric Shulman - ELS Design Studios\n// "Mixed HTML and wiki-style rendering" Plug-in for TiddlyWiki version 1.2.25 or above\nversion.extensions.HTMLFormatting = {major: 1, minor: 0, revision: 1, date: new Date(2005,7,26)};\nwindow.coreWikify=window.wikify;\nwindow.wikify = function(tiddlerText,theViewer,highlightText,highlightCaseSensitive)\n{\n var startHTML = tiddlerText.indexOf('<'+'html'+'>');\n var endHTML = tiddlerText.lastIndexOf('<'+'/html'+'>');\n if (startHTML==-1) // bypass HTML parsing\n { coreWikify(tiddlerText,theViewer,highlightText,highlightCaseSensitive); return; }\n if (startHTML>0) // wikify everything up to HTML tag\n coreWikify(tiddlerText.substr(0,startHTML-1),theViewer,highlightText,highlightCaseSensitive);\n if (startHTML!=-1) // browser parse everything between HTML and /HTML tags (or end of text)\n {\n var HTMLText = tiddlerText.substr(startHTML);\n if (endHTML!=-1) HTMLText = tiddlerText.substring(startHTML,endHTML+7);\n // suppress wiki-style literal handling of newlines\n if (HTMLText.indexOf('<hide linebreaks>')!=-1) HTMLText=HTMLText.replace(regexpNewLine,' ');\n // strip any carriage returns added by Internet Explorer's textarea edit field\n HTMLText=HTMLText.replace(regexpCarriageReturn,'');\n // encode newlines as \sn so Internet Explorer's HTML parser won't eat them\n HTMLText=HTMLText.replace(regexpNewLine,'\s\sn');\n // encode macro brackets (<< and >>) so HTML parser won't eat them\n HTMLText=HTMLText.replace(/<</g,'%macro(').replace(/>>/g,')%');\n // create a span to hold browser-parsed DOM objects\n var newSpan = createTiddlyElement(theViewer,"span",null,null,null);\n // give HTML source to browser's parser (builds DOM nodes)\n newSpan.innerHTML=HTMLText;\n newSpan.normalize();\n // walk resulting node tree and call wikify() on each text node\n wikifyTextNodes(newSpan,highlightText,highlightCaseSensitive);\n }\n if (endHTML!=-1) // wikify everything after HTML tag\n coreWikify(tiddlerText.substr(endHTML+8),theViewer,highlightText,highlightCaseSensitive);\n // DEBUG showNodeTree(theViewer.parentNode,theViewer);\n\n}\n\nfunction wikifyTextNodes(theNode,highlightText,highlightCaseSensitive)\n{\n // pre-order traversal\n for (var i=0;i<theNode.childNodes.length;i++)\n {\n var theChild=theNode.childNodes.item(i);\n wikifyTextNodes(theChild,highlightText,highlightCaseSensitive);\n if (theChild.nodeName=='#text')\n {\n // don't bother to wikify pure whitespace nodes (if any)\n if (theChild.nodeValue.replace(/\ss+/,"").replace(/\st+/,"").length!=0)\n {\n // DEBUG alert('wikify text: "'+theChild.nodeValue.replace(regexpBackSlashEn,'\sn')+'"');\n var theClass = theNode.id.substr(0,6)=="viewer"?"viewer":theNode.id;\n var newNode = createTiddlyElement(null,"span",null,theClass,null);\n // decode newlines and macro brackets for wikification\n var theText = theChild.nodeValue.replace(regexpBackSlashEn,'\sn').replace(/\s%macro\s(/g,'<<').replace(/\s)\s%/g,'>>');\n coreWikify(theText,newNode,highlightText,highlightCaseSensitive);\n theNode.replaceChild(newNode,theChild);\n }\n }\n }\n}\n\n// Use this function to generate a report of the DOM tree objects starting from a given node.\n// place = where to display DOM object report, theNode = root of DOM object tree to be reported\nfunction showNodeTree(place,theNode)\n{\n createTiddlyElement(place,"HR",null,null,null);\n var theReport = createTiddlyElement(place,"div",null,null,null);\n walkNodeTree(theReport,theNode,'');\n}\nfunction walkNodeTree(theOutput,theNode,thePrefix)\n{\n var msg=thePrefix+':'+((theNode.nodeName=='#text')?' ':theNode.nodeName);\n var href = (theNode.href)?' href='+theNode.href:'';\n var id = (theNode.id)?' id='+theNode.id:'';\n var val = (theNode.name)?' '+theNode.name+((theNode.value)?'='+theNode.value:''):'';\n var text = (theNode.nodeName=='#text')?'"'+theNode.nodeValue.replace(regexpBackSlashEn,'\sn')+'"':'';\n if ( (theNode.nodeName!='B')\n &&(theNode.nodeName!='I')\n &&(theNode.nodeName!='TBODY')\n &&(theNode.nodeName!='SPAN'))\n createTiddlyElement(theOutput,"div",null,null,msg+val+id+href+text);\n for (var i=0;i<theNode.childNodes.length;i++)\n {\n var theChild=theNode.childNodes.item(i);\n var childmsg=msg;\n if (theNode.childNodes.length>1) childmsg+='['+(i+1)+']';\n walkNodeTree(theOutput,theChild,childmsg);\n }\n}\n
The reminder macro can take the following arguments.\n\n!!!!date syntax\n* @@{{{year:NUMBER}}}@@ - The four digit representation of the year (for example {{{year:2046}}} or {{{year:1999}}}\n* @@{{{month:NUMBER}}}@@ - The numerical representation of the month (for example {{{month:1}}} for January, {{{month:12}}} for December)\n* @@{{{day:NUMBER}}}@@ - The numerical representation of the day of the month (for example {{{day:15}}} will match the 15th day of the month)\n* @@{{{dayofweek:NUMBER}}}@@ - The numerical representation of the day of the week. Valid values are in the range of 0-6. {{{dayofweek:0}}} will match Sunday, and {{{dayofweek:6}}} will match Saturday.\n\n!!!!offsets\n* @@{{{offsetdayofweek:NUMBER}}}@@ - The numerical representation of a day of the week. Valid values are in the range of 0-6. 0 will match Sunday, and 6 will match Saturday. If offsetdayofweek is specified, the year, month, day and dayofweek will be matched as usual, and the reminder will be set to the next occurence of the day of the week specified by offsetdayofweek. For example, the first Thursday of the month can be specified as {{{day:1 offsetdayofweek:4}}} and the second Thursday can be specified as {{{day:8 offsetdayofweek4}}} If offsetdayofweek is negative, the search will be performed backward. For example, the last Thursday in August can be found by {{{month:8 day:31 offsetdayofweek:-4}}}\n* @@{{{recurdays:NUMBER}}}@@ - If recurdays is set, then the reminder will fire on the base date specified by year, month, day, and dayofweek and also every N days afterward. For example, if the reminder is specified with {{{year:2005 month:8 day:16 recurdays:2}}} it will match August 16, 18, 20, etc. Please make sure that you fully specify year, month and day in any recurring reminder.\n\n!!!!leadtime\n* @@{{{leadtime:NUMBER}}}@@ - Use this to specify when this reminder will appear in [[showReminders]]. If a reminder has a leadtime of 2, it will only show up in showReminders if it will be matched in the next two days. Likewise, a reminder with a leadtime of 60 will show up in showReminders even if showReminders has a lower leadtime. showReminders can override this behavior with the limit argument.\n\n!!!!Reminder display options\n* @@{{{title:"STRING"}}}@@ - A string used to identify this reminder when it is shown in a list of reminders. For example, {{{title:"New Year's Day"}}} or {{{title:"Elvis' Birthday"}}}\n* @@{{{format:"STRING"}}}@@ - Use this argument to override the default string used for display. The following substitutions will be made in the string before it is displayed.\n** DIFF will be replaced with the one of the strings "Today", "Tommorrow", or "N days", where N is the number of days between now and the date of the reminder. \n** TITLE will be replaced with the title of the reminder\n** DATE will be replaced with the matched date of the reminder.\n** ANNIVERSARY will be replaced with the number of years since between the matched date and firstyear\nThe default string is "DIFF: TITLE on DATE ANNIVERSARY"\n* @@{{{firstyear:NUMBER}}}@@ - The first year that a reminder occurred, in four digit format. For example {{{firstyear:2001}}}\n* @@{{{hidden}}}@@ - If this option is present, the reminder will not be displayed in the regular view of the tiddler. You can use this to have reminders for [[displayTiddlersWithReminders]] to find, without having the countdown appear. See [[Season's Greetings example]] for an example.\n\n
The shorthand Wiki-style formatting syntax of ~TiddlyWiki is very convenient and enables most content to be reasonably well presented. However, there are times when tried-and-true HTML formatting syntax allows more more precise control of the content display. The ~HTMLFormatting plugin allows you to ''embed standard HTML syntax in your content'' simply by, umm, well... //embedding them in your content// (duh!).\n\n''Usage:''\n<<<\nWhen a tiddler is about to be displayed, the ~HTMLFormatting plugin looks for tiddler content contained within ''<{{{html}}}>'' and ''<{{{/html}}}>'' HTML tags. This content (if any) is passed directly to the browser's internal "rendering engine" to process as ~HTML-formatted content. Once the HTML formatting has been processed, all the pieces of text occuring in between the HTML formatting are processed by the ~TiddlyWiki rendering engine, one piece at a time, so that normal wiki-style formatting can be applied to the text pieces.\n\nNote: content preceding the ''<{{{html}}}>'' tag or following the ''<{{{/html}}}>'' tag is always processed as normal wiki-style formatted content, without any additional HTML rendering.\n<<<\n''Line breaks:''\n<<<\nOne major difference between Wiki formatting and HTML formatting is how "line breaks" are processed. Wiki formatting treats all line breaks as literal content to be displayed //as-is//. However, because HTML normally ignores line breaks and actually processes them as simple "word separators" instead, many people who write HTML include extra line breaks in their documents, just to make the "source code" easier to read.\n\nEven though you can now use HTML tags within your tiddler content, the default treatment for line breaks still follows the Wiki-style rule (i.e., all new lines are displayed as-is). When adding HTML content to a tiddler (especially if you cut-and-paste it from another web page), you should take care to avoid adding extra line breaks to the text.\n\nIf removing all the extra line breaks from your HTML content would be a big hassle, you can quickly //override the default Wiki-style line break rule// so that the line breaks use the standard HTML rules instead. Placing a ''<{{{hide newlines}}}>'' tag within the tiddler's HTML content changes all line breaks to to spaces before rendering the content, so that the literal line breaks will be processed as simple word-breaks instead.\n\nNote: this does //not// alter the actual tiddler content that is stored in the document, just the manner in which it is displayed. Any line breaks contained in the tiddler will still be there when you edit its content. Also, to include a literal line break when the ''<{{{hide newlines}}}>'' tag is present, you will need to use a ''<{{{br}}}>'' or ''<{{{p}}}>'' HTML tag instead of simply typing a line break.\n<<<\n''Installation:''\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''HTMLFormattingPlugin'' (tagged with <<tag systemConfig>>)\n^^javascript for HTMLFormatting handling^^\n''HTMLFormattingHelp''\n^^end-user documentation for this plugin^^\n\n''Obsolete tiddlers:''\n//Note: ''The HTMLFormattingPanel and HTMLFormattingStyleSheet tiddlers included in previous releases are no longer required for this plugin to operate'', and can be safely deleted from your document once you have upgraded to the current plugin release.//\n<<<\n''Revision History:''\n<<<\n''2005.08.05 [1.1.0]''\nmoved HTML and CSS definitions into plugin code instead of using separate tiddlers\n''2005.07.26 [1.0.1]''\nRe-released as a plugin.\nAdded <{{{html}}}>...</{{{nohtml}}}> and <{{{hide newlines}}}> handling\n''2005.07.20 [1.0.0]''\nInitial Release (as code adaptation)\n<<<\n''Credits:''\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n
!!!!Simple reminders that fire on the same month/day of every year.\n*<<reminder month:1 day:1 title:"New Year's Day" >>\n*<<reminder month:2 day:2 title:"Groundhog Day" >>\n\n!!!!Offset reminders\nThese are all holidays that are specified as the Nth DAYOFWEEK in Month.\n*President's Day is the third Monday of February\n**<<reminder month:2 day:15 offsetdayofweek:1 title:"President's Day">>\n*Mother's Day is the second Sunday of May\n**<<reminder month:5 day:8 offsetdayofweek:0 title:"Mother's Day">>\n\n*Memorial Day is the last Monday of May (note that offsetdayofweek is a negative number, meaning match backwards)\n**<<reminder month:5 day:31 offsetdayofweek:-1 title:"Memorial Day">>\n\n!!!!The next two reminders flag the 15th and 27th of every month to pay bills\nThe low leadtime keeps these from showing up in the showReminders macro until 2 days before they are due.\n*<<reminder day:15 title:"Bill Day" leadtime:2>>\n*<<reminder day:27 title:"Bill Day" leadtime:2>>\n\n!!!Reminder that fires once every N days\n*This is a reminder that fires every three weeks. It's imperative to specify a base date with year, month and day if you want this to return consistent dates.\n**<<reminder year:2005 month:7 day:31 recurdays:27 title:"Haircut Day" leadtime:2>>\n\n!!!!Tracking the number of years that a reminder has happened\n*This is a reminder that uses firstyear to specify when something started. Very useful for birthdays and anniversaries.\n**<<reminder month:9 day:20 title:"TiddlyWiki's First Release Anniversary" leadtime:60 firstyear:2004>>\n\n!!!!Use the showReminders macro to show upcoming reminders\nNote that leadtime is 14 days by default, but below, it is specified as 30 days.\n<<showReminders leadtime:30>>\n!!!Ignore these\nThese are just here to fill in the common US holidays\n*<<reminder month:2 day:14 title:"Valentine's Day" >>\n*<<reminder month:3 day:1 title:"April Fool's Day" >>\n*<<reminder month:3 day:15 title:"Tax day">>\n*<<reminder month:3 day:22 title:"Earth Day">>\n*<<reminder month:6 day:14 title:"Flag Day" >>\n*Father's Day is the third Sunday of June\n**<<reminder month:6 day:15 offsetdayofweek:0 title:"Father's Day">>\n*<<reminder month:7 day:4 title:"Independence Day" >>\n*Labor Day is the first Monday of September\n**<<reminder month:9 day:1 offsetdayofweek:1 title:"Labor Day">>\n*Columbus Day is the second Monday of October\n**<<reminder month:10 day:8 offsetdayofweek:1 title:"Columbus Day">>\n*<<reminder month:10 day:31 title:"Halloween" >>\n*<<reminder month:11 day:11 title:"Veteran's Day" >>\n*Thanksgiving(US) is the third Thursday of November\n**<<reminder month:11 day:22 offsetdayofweek:4 title:"Thanksgiving (US)">>\n*<<reminder month:12 day:25 title:"Christmas Day" >>
#popup{\n padding-left: 2px !important;\n padding-bottom: 2px !important;\n}\n\n#popup *{\n border: 0 !important;\n}\n\n#popup hr {\n border-top: solid 1px #ccc !important; \n border-left: none;\n border-right: none;\n border-bottom: none;\n height: 1px;\n color: #ccc;\n width: 98%;\n}\n\n#popup a:hover{\n color: black !important;\n}\n\nbody {\n margin: 0px;\n background-color: #e4e4e4;\n font-size: 9pt;\n font-family: tahoma,arial,helvetica;\n}\n\na:link, a:visited, a:hover, a:active {\n text-decoration: none;\n}\n\n#header {\n border-bottom: 1px solid #458;\n margin-bottom: 0em;\n}\n\n#titleLine {\n color: #fff;\n background: #bcd;\n padding: 0.7em 1em 1em 1em;\n}\n\n#titleLine a {\n text-decoration: none;\n color: #9ab;\n}\n\n#siteTitle {\n font-size: 40pt;\n font-weight: bold;\n padding-left: 20px;\n color: #9ab;\n}\n\n#siteSubtitle {\n font-size: 12pt;\n font-family: georgia,times;\n font-style: italic;\n color: #457;\n display: block;\n position: relative;\n bottom: 5px;\n left: 0px;\n padding-left: 70px;\n}\n\n#mainMenu {\n font-size: 12px;\n float: left;\n width: 13em;\n border: 1px solid #aaa;\n margin: .5em 1em .5em 1em;\n background: #f3f3f3;\n line-height: 125%;\n color: black;\n text-align: right;\npadding: 0;\n}\n\n#mainMenu .tiddlyLink, #mainMenu a.button{\n display: block; \n text-decoration: none;\n width: 12em;\n padding: .25em .5em;\n color: #444;\n text-transform: capitalize;\n}\n\n#mainMenu a:hover {\n color: #000 !important;\n background-color: #bcd !important;\n}\n\n#displayArea {\n margin: 1em 14em 0em 15em;\n}\n\n#messageArea {\n background-color: #5a84ad;\n color: #fff;\n padding: 0.5em 0.5em 0.5em 0.5em;\n margin: 0em 0em 0.6em 0em;\n border-bottom: 1px solid #458;\n display: none;\n}\n\n#messageArea a:link, #messageArea a:visited {\n display: inline;\n text-decoration: underline;\n color: #ddf;\n}\n\n#messageArea a:hover, #messageArea a:active{\n color: #fff;\n}\n\n.tiddler {\n border: 1px solid #aaa;\n margin: 0 10px 20px;\n padding: 8px;\n padding-top:0;\n font-family: arial,georgia,times;\n background-color: white;\n width: auto;\n overflow: hidden;\n}\n\n.innerTiddler {\n padding: 0.7em 1em 1em 0.8em;\n font-size: 9pt;\n}\n\n#displayArea .tiddlyLinkExisting {\n font-weight: bold;\n color: #03b\n}\n\n#displayArea .tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n#displayArea .externalLink {\n text-decoration: underline;\n}\n.title {\n font-family: tahoma,arial,helvetica;\n font-size: 13pt;\n color: #469;\n font-weight: bold;\n }\n\n.toolbar {\n font-family: tahoma,arial,helvetica;\n font-weight: normal;\n font-size: 8pt;\n padding: 0em 0em 0em 1em;\n color: #aaa !important;\n visibility: hidden;\n}\n\n.toolbar a{\n padding: 0.2em 0.4em 0.2em 0.4em;\n color: #888 !important;\n}\n\n.toolbar a:hover{\n color: black;\n background-color: #e4e4e4 !important;\n border: 1px solid #aaa !important;\n margin-left: -1px; \n margin-right: -1px;\n}\n\n.toolbar a:active{\n color: #666;\n}\n\n.viewer a.button{\n border: 0;\n background-color: transparent !important;\n padding: 0em;\n color: #888 !important;\n border: 1px solid transparent;\n}\n\n.editorFooter a:hover, .footer a.button {\n color: #888 !important;\n}\n\n.editorFooter a:hover, .footer a:hover{\n color: black;\n background-color: #e4e4e4 !important;\n border: 1px solid #aaa !important;\n margin-left: -1px; \n margin-right: -1px;\n}\n\n.viewer a.button:hover{\n color: black;\n background-color: #e4e4e4 !important;\n border: 1px solid #aaa !important;\n}\n\n.viewer a.button,.editorFooter a:hover, .footer a.button {\n color: #666;\n}\n\n#popup {\n display: none;\n position: absolute;\n top: 1.5em;\n left: 13.25em;\n font-size: 8pt;\n color: #888;\n background-color: #e4e4e4;\n padding: 0;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #330000;\n border-right: 1px solid #330000;\n border-left: 1px solid #aaa;\n}\n\n#popup a {\n display: block;\n color: #888;\n min-width: 8em;\n border: 0;\n margin: 0;\n}\n\n#popup a:hover {\n background-color: #e4e4e4;\n color: black;\n}\n\n.body {\n border-top:1px solid #ccc;\n padding-top: 0.5em;\n margin-top:0.3em;\n overflow: hidden;\n}\n\n.viewer {\n color: black;\n line-height: 140%;\n}\n\n.viewer a:link, .body a:visited{\n color: #922;\n}\n\n.viewer a:hover {\n color: #b44;\n background-color: transparent;\n text-decoration: none;\n}\n\n.viewer blockquote {\n font-size: 8pt;\n line-height: 150%;\n border-left: 1px solid #ccc;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul {\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer ol {\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n/*==============================================Headings================*/\n/*\n.viewer h1,.viewer h2,h3,h4,h5,h6 {\n font-weight: bold;\n text-decoration: none;\n color: #469;\n padding-left: .6em;\n background-color: transparent !important;\n}\n border-top: 1px solid #000;\n border-bottom: 1px solid #000;\n border-left: 1px solid #000;\n border-right: 1px solid #000;\n*/\n.viewer h1,.viewer h2, .viewer h3, .viewer h4, .viewer h5, .viewer h6 {\n font-weight: bold;\n text-decoration: none;\n color: #000;\n padding-left: .6em;\n background-color: #bcd;\n border-bottom: 1px solid #444;\n border-right: 1px solid #444;\n}\n\n.viewer h2 {\n font-size: 12pt;\n}\n\n.viewer h3 {\n font-size: 11pt;\n}\n\n.viewer h4 {\n font-size: 10pt;\n}\n\n.viewer h5 {\n font-size: 9pt;\n}\n\n.viewer h6 {\n font-size: 8pt;\n}\n\n.viewer table {\n font-size: 10pt;\n border-collapse: collapse;\n border: 2px solid #303030;\n margin-left: 1.0em;\n margin-right: 1.0em;\n margin-top: 0.8em;\n margin-bottom: 0.8em;\n}\n\n.viewer th {\n background-color: #bcd;\n border: 1px solid #606060;\n padding: 3px;\n}\n\n.viewer td, tr {\n border: 1px solid #606060;\n padding: 3px;\n}\n\n.viewer caption {\n font-size: smaller;\n padding: 3px;\n}\n\n.viewer hr {\n border-top: solid 1px #606060;\n border-left: none;\n border-right: none;\n border-bottom: none;\n height: 1px;\n color: #666666;\n}\n\n.highlight {\n color: #000000;\n background-color: #bcd;\n}\n\n.editor {\n font-size: 8pt;\n color: #402c74;\n font-weight: normal;\n}\n\n.editor input {\n display: block;\n border: 1px solid black;\n}\n\n.editor textarea {\n display: block;\n font: inherit;\n border: 1px solid black;\n}\n\n/*\n=================Sidebar==========\n=================================\n*/\n\n\n#sidebar {\n float: right;\n width: 14em;\n font-size: 8pt;\n border-left: 1px solid #aaa;\n border-bottom:1px solid #aaa;\n}\n\n#sidebarOptions {\n color: #666 !important;\n background-color: #f3f3f3 !important;\n}\n\n#sidebar #sidebarOptions a:hover{\n background-color: #f3f3f3;\n}\n\n#contentWrapper #sidebar a:hover{\n color: #b44;\n text-decoration: underline;\n}\n\n#contentWrapper .sidebarSubHeading {\n font-size: 0.95em;\n color: #236;\n}\n\n#contentWrapper #commandPanel {\n padding-top: 0.5em;\n background-color: #f3f3f3;\n color: black;\n font-size: 8pt;\n}\n\n#contentWrapper #commandPanel a {\n display: block;\n padding: 0.3em 0.2em 0.3em 1em;\n color: #666;\n text-decoration: none;\n}\n\n#contentWrapper #commandPanel a:hover {\n color: #922;\n text-decoration: underline;\n background-color: transparent;;\n}\n\n#contentWrapper #commandPanel input {\n margin: 0.4em 0em 0.3em 1em;\n border: 1px solid black;\n}\n\n#contentWrapper #optionsPanel {\n display: none;\n background-color: #f3f8ff;\n padding: 0.5em 0.5em 0em 0.5em;\n font-size: 7pt;\n color: black;\n}\n\n#contentWrapper #optionsPanel a:link, #optionsPanel a:visited {\n color: #666;\n font-weight: bold;\n}\n\n#contentWrapper #optionsPanel a:hover {\n color: #922;\n text-decoration: underline;\n background-color: transparent;\n}\n\n.optionsText {\n margin-top: 0.25em;\n margin-bottom: 0.75em;\n}\n\n.optionsItem {\n}\n/*========================================================================*/\n#contentWrapper #sidebarTabs {\n background-color: #f3f3f3;\n padding: 0em;\n}\n\n#contentWrapper #sidebarTabs a {\n color: black;\n background-color: transparent;\n}\n\n#contentWrapper #sidebarTabs a:hover {\n color: #922; text-decoration: underline;\n background-color: transparent;\n}\n\n#contentWrapper #sidebarTabs a:active {\n color: black;\n}\n\n#contentWrapper .tabContentTags #popup {\n display: none;\n position: absolute;\n top: 1em;\n left: 13.25em;\n font-size: 8pt;\n color: #888;\n background-color: #e4e4e4;\n padding: 0;\n margin-top: -2px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #330000;\n border-right: 1px solid #330000;\n border-left: 1px solid #aaa;\n}\n\n#contentWrapper .tabContentTags #popup hr {\n color: #ccc;\n}\n\nhr{\n color: black !important;\n}\n\n#contentWrapper .tabContentTags #popup a {\n display: block;\n color: #888;\n min-width: 8em;\n border: 0;\n margin: 0;\n height: 1.2em;\n}\n\n#contentWrapper .tabContentTags #popup a:hover {\n background-color: #e4e4e4;\n color: black;\n}\n\n#contentWrapper a.tab {\n font-weight: normal;\n display: inline;\n margin: 0px 1px; \n border:1px solid #aaa;\n border-bottom:none;\n}\n\n#contentWrapper a.tabSelected {\n background-color: #e6e6e6 !important;\n padding: 2px 4px 2px 4px;\n}\n\n#contentWrapper a.tabUnselected {\n background-color: #f3f3f3;\n padding: 2px 4px 0px 4px;\n}\n\n/*===========================================================================================*/\n/*===========================================================================================*/\n#sidebarTabs{\n margin: 0;\n padding: 0;\n}\n\n#contentWrapper .tabContents {\n background-color: #e6e6e6;\n border-bottom: solid #aaa 1px;\n}\n\n#contentWrapper .tabContents a.tiddlyLink, #contentWrapper .tabContents a.button{\n background-color: #e6e6e6;\n color: #922 !important;\n}\n\n#contentWrapper .tabContents a:hover{\n color: #b44 !important;\n}\n\n#contentWrapper .txtMoreTab a.tabUnselected {\n background-color: #e6e6e6;\n padding: 2px 4px 0px 4px;\n}\n\n#contentWrapper .txtMoreTab a.tabSelected {\n background-color: #ccc !important;\n padding: 2px 4px 2px 4px;\n}\n\n.txtMoreTab .tabContents {\n background-color: #ccc !important;\n border-bottom: solid #aaa 1px;\n}\n\n.txtMoreTab .tabContents a{\n background-color: transparent !important;\n}\n\n#licensePanel {\n padding: 0.5em 0.2em 0.5em 0.2em;\n}\n\n#licensePanel a {\n display: block;\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: #555;\n}\n\n#licensePanel a:hover {\n text-decoration: none;\n color: #922;\n background-color: transparent;\n}\n\n#storeArea, #copyright {\n display: none;\n}\n\n#floater {\n font-size: 10pt;\n visibility: hidden;\n color: white;\n border: 1px solid #666;\n background-color: white;\n position: absolute;\n padding: 1em 1em 1em 1em;\n display:none;\n}\n\n@media print {\n\n#mainMenu {\n display: none;\n}\n\n#displayArea {\n margin: 1em 1em 0em 1em;\n}\n\n#sidebar {\n display: none;\n}\n\n}
// ---------------------------------------------------------------------------------\n// openTiddlers macro\n// <<openTiddlers "button title" "tiddler one,tiddler two"] >>\n// ---------------------------------------------------------------------------------\nversion.extensions.openTiddlers = {major: 0, minor: 1, revision: 1, date: new Date("Sep 3, 2005")};\nconfig.macros.openTiddlers = {}\nconfig.macros.openTiddlers.handler = function(place,macroName,params)\n{\n var reverseOrder = "";\n var openAll = createTiddlyButton(place,params[0],null,onClickOpenTiddlers);\n openAll.setAttribute("csv",params[1]);\n}\n\n// Event handler for 'openTiddlers' macro\nfunction onClickOpenTiddlers(e)\n{\n closeAllTiddlers();\n if (!e) var e = window.event;\n var tiddlers = this.getAttribute("csv").split(',');\n for(var t=tiddlers.length-1; t>=0; t--)\n displayTiddler(this,tiddlers[t],0,null,null,false,e.shiftKey || e.altKey);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n
!Description\nThe openTiddlers macro allows you to select a group of tiddlers to open in one shot. All other tiddlers will close first.\n\n!Parameters\nThe first parameter is the title and the second is a comma seperated list of tiddlers to display.\n\n!Example usage\nThis will create a link with the title "openTiddlers Macro". When clicked, the link will close all open tiddlers and display OpenTiddlersDocumentation followed by OpenTiddlersMacro.\n{{{\n<<openTiddlers "openTiddlers Macro" "OpenTiddlersDocumentation,OpenTiddlersMacro">>\n}}}\n\n!Known bug\nAlthough this macro works fine in the side menu, it does not work correctly if clicked inside another tiddler. Instead of working as expected, the tiddlers are in reverse order and the page scrolls until the first tiddler listed is displayed.\n
http://Mainly28s.com/Blog.html
The ''//Mainly28s//'' Blog
<<search>><<permaview>><<newJournal "YYYY0MM0DD - DD MMM YYYY" Journal>><<newTiddler>><<closeAll>><<slider chkSliderOptionsPanel OptionsPanel options "Change TiddlyWiki advanced options">><<saveChanges>>\n\n
Welcome
Wheeeeeeee! \n\nOff to a start, then. I guess I might as well kick off with a run-down of my current projects.\n\nI have (on my paint tray already) three Universal Carriers- two BAM and one S&S. They have all been base-coated, and I have the main decals (stars) for the Carriers ready to apply. I'm still looking for suitable generic markings like those the Brits applied to the mudguards, front and back, of all vehicles that I can add before I get too far along. I suspect I'll end up using the ones from the Chieftain Sultan and Saracen for this.\n\nThen there are the three T-34/85s from the review- all undercoated, in the same basic state as the Carriers. As soon as I decide on markings (which I guess I'll be hand-painting), they can be finished at the same time as the Carriers.\n\nI also have some odds and ends from the BAM scenery range part-painted, along with a few odds and ends rom various other companies.\n\nA little further back on the table are some Acheson/Arrow buildings and the Chiltern Farm and the Monolith temple. Oh, and some vacuform buildings too- for a forthcoming review.\n\nOf course, I also do regular maintenance on the Mainly 28s site, as well as my personal page; the odd solo game and also my PC games of the moment- //Sniper Elite// and //Day of Defeat//- also take up a fair bit of time.\n\nOn a different note- my 1:1 scale modelling is also taking off again. We've decided to refurbish nd sell so that we can move to a more countrified setting. I don't personally care, as long as I have good access to broadband and ~WHSmiths as well as regular mail deliveries.
This is a simple cheat sheet gleened from the [[TiddlyWiki Tutorial|http://www.blogjones.com/TiddlyWikiTutorial.html]]. It's also helpful when you are working on your StyleSheet.\n\n!Text formatting\n|!Example|>|>|!How|\n|''Bold Text''|' ' (without space)|words|' '|\n|==strikethrough text==| ==|words|==|\n|__underlined text__| __|words|__|\n|//italic text//| //|word|//|\n|^^superscript text^^| ^^|words|^^|\n|~~subscript text~~| ~~|words|~~|\n|@@color(green):colored text@@| @@|color(yourcolorhere):words|@@|\n|@@bgcolor(green):Background@@| @@|bgcolor(yourcolorhere):words|@@|\n|{{{Monospaced}}}| {{{|words|}}}|\n|~DewikifyAWikiWord| ~|~WikiLikeWord||\n|[[wikify a word]] | [[|non-wiki words|]]|\n\n!Monospaced block\n{{{\n {{{\n Just a silly example\n }}}\n}}}\n{{{\nJust a silly example\n}}}\n\n!Horizontal line\n{{{\n----\n}}}\n----\n\n!Lists and outlines\n{{{\n* Begin a list\n* List with subitems\n** Sub item 1\n** Sub item 2\n}}}\n* Begin a list\n* List with subitems\n** Sub item 1\n** Sub item 2\n\n!Numbered lists and outlines\n{{{\n# Begin a list\n# List with subitems\n## Sub item 1\n## Sub item 2\n}}}\n# Begin a list\n# List with subitems\n## Sub item 1\n## Sub item 2\n\n!External link\n{{{\n[[alternate text|image URL]]\n[[TiddlyWiki|http://tiddlywiki.com]]\n}}}\n[[TiddlyWiki|http://tiddlywiki.com]]\n\n!Embed image\n{{{\n[img[alternate text|image URL]]\n}}}\n\n!Tables\nYou can create a table by enclosing text in sets of vertical bars (||, or shift-backslash on your keyboard). \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(green):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|!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(green):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!Block quotes\n{{{\n<<<\n"Beware the Jabberwock, my son!\nThe jaws that bite, the claws that catch!\nBeware the Jubjub bird, and shun\nThe frumious Bandersnatch!"\n<<<\n}}}\n<<<\n"Beware the Jabberwock, my son!\nThe jaws that bite, the claws that catch!\nBeware the Jubjub bird, and shun\nThe frumious Bandersnatch!"\n<<<\n\n!Headings\n{{{\n!Heading\n!!Sub-heading\n!!!Sub-heading 2\n!!!!Sub-heading 3\n!!!!!Sub-heading 4\n}}}\n!Heading\n!!Sub-heading\n!!!Sub-heading 2\n!!!!Sub-heading 3\n!!!!!Sub-heading 4
While I'm fairly tolerant of many things, the one wargames thing that really gets to me is the way people massacre scales. 1:72 is, most definitely ''NOT'' 25mm. It is near enough 20mm (that's what it's been called from as far back as I can remember being interested in models and such. Or call it 1:72nd.\n25mm is reserved for figures that, in modern palance, are +/- 25mm foot to eye. Not foot to head, or anything else.
Well, I've had a chat with Crouchie at Chieftain Models, and will be getting those "generic" decals for the Carriers I mentioned. A decalling and painting session is in order for later this week, using those and VVV stars.\n\nI've decided to do one of the T-34's as a Romanian machine (probably the S&S one) as I already have the three that I want to allocate to my Soviets, and my Germans are waiting for the promised BAM ~PzKpfw IV. I'll be assembling the early BAM T-34/76 for the Romanians too.
The openAll macro will open all tiddlies with the given tag. Optionally it may close all currently open tiddlies first (sorted by title), reverse the sorting and/or set the ~WikiButton's title. This was originally written to allow me to show my Journal entries in a pseudo blog style. By adding a few options openAll has many more uses.\n\n//New feature//\nI've added a new 'limit:' option to allow you to set a limit to the number of tiddlies opened. I use it with the journal feature of TiddlyWiki to keep my pseudo blog from displaying too much.\n\nThis is now public domain and free for all to use/add/modify/fix/enhance/sell/add-to-macro-site. The code is based on ~TiddlyWiki version 1.2.32 but may work on earlier versions that supported tags.\n\n!Format\n{{{\n<<openAll <tag> [options] >>\n}}}\n\n!Options\nAlthough the tag is required for any openAll macro, all of the options are optional and may appear in any order.\n|!Option|!Description|\n|closeAllFirst|Closes all other tiddlies first|\n|title:Title|Text to use as the Wiki button|\n|limit:#| Replace # with a number to limit the number of entries shown (default is limit:10000)|\n|reversOrder|Sorts by title in reverse order|\n\n!Examples (all non-working unless you have the given tags)\n{{{\n<<openAll Journal "title:Last weeks journal" limit:7 reverseOrder closeAllFirst>>\n<<openAll Journal "title:All journal entries" reverseOrder closeAllFirst>>\n<<openAll systemConfig closeAllFirst "title:All Plugins">>\n<<openAll Help closeAllFirst>>\n}}}\n<<openAll Journal "title:Last weeks journal" limit:7 reverseOrder closeAllFirst>>\n<<openAll Journal "title:All journal entries" reverseOrder closeAllFirst>>\n<<openAll systemConfig closeAllFirst "title:All Plugins">>\n<<openAll Help closeAllFirst>>\n
// ---------------------------------------------------------------------------------\n// openAll plug-in\n// ---------------------------------------------------------------------------------\nversion.extensions.openAll = {major: 0, minor: 1, revision: 1, date: new Date("Sep 1, 2005")};\nconfig.macros.openAll = {}\nconfig.macros.openAll.handler = function(place,macroName,params)\n{\n var title = "Open all " + params[0];\n var closeAllFirst = "";\n var limit = 10000;\n var reverseOrder = "";\n for(i=1; i<params.length; i++) { // Skip the first param\n if(params[i]=="closeAllFirst") closeAllFirst = "closeAllFirst";\n if(params[i]=="reverseOrder") reverseOrder = "reverseOrder";\n if(params[i].substring(0,6)=="limit:") limit = parseInt(params[i].substring(6));\n if(params[i].substring(0,6)=="title:") title = params[i].substring(6);\n }\n var openAll = createTiddlyButton(place,title,null,onClickOpenAllMacro);\n openAll.setAttribute("tag",params[0]);\n openAll.setAttribute("closeAllFirst",closeAllFirst);\n openAll.setAttribute("limit",limit);\n openAll.setAttribute("reverseOrder",reverseOrder);\n}\n\n// Event handler for 'openAll' macro\nfunction onClickOpenAllMacro(e)\n{\n if (!e) var e = window.event;\n var tag = this.getAttribute("tag");\n var limit = this.getAttribute("limit");\n var tagged = store.getTaggedTiddlers(tag);\n if(this.getAttribute("closeAllFirst")=="closeAllFirst") closeAllTiddlers();\n if(this.getAttribute("reverseOrder")=="reverseOrder") {\n var t=tagged.length-limit;\n if(t<0) t=0;\n for(; t<tagged.length && limit>0; t++) {\n displayTiddler(this,tagged[t].title,0,null,null,false,e.shiftKey || e.altKey);\n }\n }else{\n for(var t=tagged.length-1; t>=0 && limit>0; limit--,t--)\n displayTiddler(this,tagged[t].title,0,null,null,false,e.shiftKey || e.altKey);\n }\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n
I've added a few bits to [[TiddlyWiki|http://www.tiddlywiki.com]] for my own use and decided to share the little bits that I've come up with.\n\nFirst off the bat is the openAll macro. You can read the OpenAllMacroDocumentation and see the source for the OpenAllMacro. The main menu (to the left) contains several more examples (click the "Edit Menu" link at the bottom to see how they are setup).\n\n|''//New feature//'': I've added a new 'limit:' option that allows you to set a limit to the number of tiddlies opened. I use it with the journal feature of TiddlyWiki to keep my pseudo blog from displaying too much. The main menu shows an example with Last Weeks Journal.|\n\nNext up is the openTiddlers Macro (link in left menu). It acts like the openAll macro, but you give it a list of tiddlers to open instead of using a tag. It will always close the other tiddlers first.\n\nAlso, I've created a simple TiddlyWikiCheatSheet to help remember the wiki notation.\n\n\nLike the style? It's a slightly modified [[Blue Mist|http://15black.bluedepot.com/styles/misttiddlywiki.html]].
Here's my newest little soapbox.\n\nI plan to add info here more regularly than on the main //Mainly 28s// site, things like rants, gripes and progress with wargaming projects.\nNote that any rants here should be taken as a seperate issue to whatever I write on the main site. This is just a safety-valve, while on the Mainly 28s site I will try to mainltain a fairly objective view.
Last night I corresponded with Vincent at AGNM regarding a 7,5cm gun (ex-FoA) that I need, as well as some proper AGNM samples for Mainly 28s.\nI also began assembly of an Almera vacu-cast building as part of the review process- the decals I wanted to use on the Carriers haven't arrived yet, and I'm runing into a bit of difficulty finding markings references for captured T-34s as used by the Romanians.
//by John ~McCrae, May 1915//\n\nIn Flanders fields the poppies blow\nBetween the crosses, row on row,\nThat mark our place; and in the sky\nThe larks, still bravely singing, fly\nScarce heard amid the guns below.\n\nWe are the Dead. Short days ago\nWe lived, felt dawn, saw sunset glow,\nLoved and were loved, and now we lie\nIn Flanders fields.\n\nTake up our quarrel with the foe:\nTo you from failing hands we throw\nThe torch; be yours to hold it high.\nIf ye break faith with us who die\nWe shall not sleep,\nthough poppies grow\nIn Flanders fields.\n\n
//by Moina Michael//\n\nOh! You who sleep in Flanders' Fields\nSleep sweet - to rise anew;\nWe caught the torch you threw,\nAnd holding high we kept\nThe faith with those who died.\n\nWe cherish, too, the Poppy red\nThat grows on fields where valor led.\nIt seems to signal to the skies\nThat blood of heroes never dies.\nBut lends a lustre to the red\nOn the flower that blooms above the dead\n In Flanders' fields.\n\nAnd now the torch and Poppy red\nWear in honour of our dead.\nFear not that ye have died for naught:\nWe've learned the lesson that ye taught\n In Flanders' fields.\n\n
Well, due to some rather inclement weather I wasn't able to undercoat the two assembled Amera buildings (I spray-undercoat my wargames things outside).\nI must say, though, that they look nice so far. I'm not sure how well they'll stand up to the rigours of wargaming, but the price is definitely good enough that it shouldn't be a problem.\n\nI've also arranged to get one of the "Hobby Masters" Tiger 1 tanks. Die-cast (not something I usually buy), but apparently 1:56th scale. Let's see- after all, to quote a friend, it's not a proper ~WW2 game unless there's a Tiger on the table.\n\nOh- and to prove my fickle nature, I've decided to do the "spare" T-34/85 plus some of the early T-34s I have as Finnish vehicles. The rather nice three-colour scheme of dark green, dark brown and pale grey with haakkaristi on the turret is interesting enough that they'll definitely stand out- ''plus'', having a mixed bag of T-34s won't look out of place: the Finns used all of the captured ones pretty much side-by-side with each other.\n\n
Well, it's been a few days since my last entry here. This is down to a few factors, chief of which is that I spent most of the last while cleaning, preparing (and assembling, where appropriate), undercoating and beginning to paint a small Finnish force.\nI have one pack of every Finnish Baker Company offering, two of the rifle packs. As I've been fairly immersed in a few Finnish war movies again recently, and as I had a "spare" T-34, I decided to paint these guys up. Part way through I ran out of washers, and couldn't find more of the 30mm ones I decided to use for the Finns, so I had to locate more. Guess what- every shop in my area was out of 30mm washers...\n\nMy Finnish T-34/85 is the S&S one I reviewed recently, and it will eventually be joined by any other "spare" tanks that fit in the Finnish ~ToE as I get them. This will, however, be secondary to the main combatants. The nice thing is that I will be able to use the Finns agains the Russians (Winter War and Continuation War) as well as the Germans (Lappland War) by simply varying the proportion of the troops and vehicles I have.\nSo far, the tank is painted and has markings, but needs wear and tear applied, and the figures have had the skin and some trousers done. I expect that these will go fairly fast now, as they will be mostly dressed in white snow camo, with just some head gear and weapons and equipment to break the white.
I got a useful link from Richard Ansell (thanks, Richard) for an online supplier of washers. As it stands, I managed to locate a few, so the Finns are all based and moving along. After this update, I'll be painting the bases on those. They may even be ready for photographing after the weekend (although I wouldn't hold my breath on that as I have a fair bit of real-life work to finish too).\n\nThe current rate of progress stands at:\nall the Finns are based and their skins and uniforms are done. The T-34 is painted and based.\nPlans:\nthe webbing and belts, head gear and shoes as well as weapons need to be painted. Then the bases need to be painted and flocked (I'll be doing the bases with paint, some static grass and GW "snow" to reflect the wintery feel of the figures).
I guess I need to make a little list of what I have so I can decide on what to keep and what to "move along" to finance purchases of things I want/need.\nIf you're interested in any of these items, please email me at\n~AdminSPAM@~SPAMMainly28s.com (just remove the SPAM!)\n\n__Items I'll Definitely Sell (for reasonable offers) are:__\n1. A fairly extensive (unpainted) collection of 1st Corps German Fallschirmjäger and British Paras.\n2. Tony Greenland's "Panzer Modelling"\n3. +/- 2200 Points'-worth of ECW Royalists/30 Years' War from Redoubt and Bicorne
<<openAll Welcome closeAllFirst reverseOrder "title:Welcome">>\n----\n<<openAll Journal "title:Last week's journal" limit:7 reverseOrder closeAllFirst>><<openAll Journal "title:All journal entries" reverseOrder closeAllFirst>>\n<<closeAll>>\n\n[[For Sale]]\n[[Rants]]\n----\n[[In Flanders' Fields]][[We Shall Keep the Faith]]\n----\n[[TiddlyWiki|http://tiddlywiki.com]] version <<version>>^^[[edit menu|MainMenu]]^^
[[Rant no 1]]
where I chart my wargaming progress and rant about life in general
Well, SELWG was quite a good success as far as I'm concerned. I got to see quite a few new items (reviews will be following on the Mainly 28s site as I get time to do them between all the normal daily activities).\n\nI think I can safely say that I prefer the SELWG show to Salute. Although I missed the new venue this year, when I compare the conditions at SELWG with those at Salute, I can't help but wonder if Salute isn't a victim of its' own success? Salute has become too big and unfriendly- one cannot get to see the items one wants, and everyone is pushing in all directions.\n\nSELWG, on the other hand, (even though it has lost some floorspace and there were a few less traders this year) is still a wargames show. One can get to speak with the traders, there isn't a constant crush of backpacks and rude gamers. The only downside (this is true of Salute too, though) was the lack of adequate food and drinks, which seems to plague most UK venues.\n\nThe main areas I was interested in was the traders (I'm sorry, but many of the demo games were, while well-presented and laid-out, simply weren't my cup of tea), and I had a field day there. The most notable ones I visited were- in no specific order- Black Cat Bases, Bolt Action Miniatures and Chieftain Models, TSS, ~EM-4, Figures in Comfort, Parkfield Miniatures, Newline Miniatures, Old Crow, Wargames Illustrated and Redoubt Enterprises. I managed to wheedle some info on forthcoming releases from some of these guys, and had a good look at what they have. In some cases I got samples (either donated or purchased) which I will be reviewing on the main site in teh next few days and weeks.\n\nThe Finns are also progressing- after I vacuum the excess static grass off the bases, I can add GW "snow" to portions of the ground. I decided on this approach, because I didn't want "all-white" bases. They will now have about 1/3 static grass and 2/3 snow, which will hopefully look like the ground shown in the movie Talvisota in the main battle scenes.\n\nI think the next project I'll be doing is the Outpost Wargames Services Romanians- it's a small group of figures, so should also be pretty fast.
Well, I had a closer look at the die-cast Tigers from Hobby Master last night. I //am// impressed. How do they keep the price so low?\n\nI also got a problem with my camera, so I can't do any real photo-reviews until I figure out how to fix it. I managed to get the last photos (the HM Tiger and a couple of TSS tile shots) off the camera, but it does mean I'm a little unprepared for pictures at present.\n\nNo further progress on the Finns, unfortunately.\n\nI think I'll also be finishing off a few more of the vehicles in the vehicle-park on my painting table- specifically the assorted Company B goodies and T-34s still there.
I absolutely //detest// gadgets. I've managed to get a few more pictures out of the camera, but at the rate of one useful picture for every ten or eleven useless ones, it's just not worth trying. Admittedly my photography leaves a lot to be desired, but having the shutter on the camera not co-operating is turning into a real pain.\nOf the useful ones, more than half are under-exposed because the flash and the camera don't neccessary operate at the same time- I've had a delay of over half a second between the shutter and the flash!\nAh, well, the better half's off to Hong Kong next week.\n\n
Well, the camera's sort of working. I couldn't get //any// pictures out of it. The upside is that my better half has agreed to get me a new camera when she's in Hong Kong in a few weeks' time. Of course, that means my photography is limited to whatever I can get out of the !"£$%^&*@:<>! thing I've got at present, so I'll just have to take some pictures and hope for the best.\n\nMy Finns are now officially done- painted, based, flocked and varnished. If I can coax the camera into giving me a few pictures, I'll add them to the main site. That means my painting table is now ready to take on the Company B vehicles and the BAM and WWP T-34s, as well as a few more ~SdKfz 251's. \nI think I'll also be doing the Outpost Wargames Services Romanians at the same time- there are just a few of them, after all- as a quickie project, as well as some of those figures that I only have one or two of.
OK, it's settled. my bloody camera has packed up to the point where it takes me about 15 shots to get one useful one. The batteries pack up after about 10, the flash only co-operates when it feels like it and it beeps at me every time I open the lens-cap.\nENOUGH!\nAs the better half is off to Hong Kong next week (the flight was postponed for a week), I've asked her to buy a new camera while she's there. I've already given her a list of specs, so maybe by the first weekend of December I'll be able to get back to photographing vehicles and scenery again.\n\nMeanwhile, I've added a bunch more figure reviews, and have already done a load more work on the vehicles in the vehicle park; The Company B Stuarts and ~LVT-4, BAM and S&S Universal Carriers and BAM and West Wind T-34/85s and BAM Daimler Dingo have all been painted, and have had basic markings applied. I need to get some nice white numbers for the US and UK vehicles for their serials, and need to apply the colourful British markings to the Carriers (I have some via Dom's Decals) before weathering these...\n\nI've dug out the Romanians and begun cleaning those off too.