Just a very few seconds :
TiddlyWiki is setting your PimliPoche database.

! Tips\n!!To help good habits ans improve processes.\n<<tag Tips>>
!Presentation of services and expertise @@5s31@@\n!!<<reminder day:10 year:2005 title:"Open TW Notebook to collect and dump approaches, themes, testimonies..." >>
Marseille
Marseille
Marseille
<<tagCloud :Agenda -Modèles Aide index Syntaxe archiver english excludeLists excludeSearch ideas macros module myGTD plugins posts stylesheets systemConfig systemTiddlers tidlipoche todo turbe.com usage \n ~5w41 ~5w38 ~Samedi ~Vendredi ~mdp>>
<<listTags :Agenda title #>>
![[Just a phone to put these on the move|:Call]]\n~~//List of notes currently tagged ":Call" ://~~\n<<showReminders tag:":Call" leadtime:30 format:"|!TITLE |TIDDLER |">>
![[Computer needed (or PDA)|:Computer]]\n<<showReminders tag:":Computer" leadtime:30 format:"|!TITLE |TIDDLER |">>
Address:\n\nWork: \nCell:
![[End customers or organisations I'm in service of|:Customers]]\n~~//Tiddlers currently tagged with '':Customers' ://~~\n<<listOnlyTags :Customers>>
![[Errands that need about one hour or more|:Errands]]\n<<showReminders tag:":Errands" format:"TITLE TIDDLER">>
![[:Hot]]\n!!!!!@@[[What is :Hot ?]]@@\n<<showReminders tag:":Hot" format:"|!TITLE |TIDDLER |">>
![[To complete today|:Hotest]]\n* X @@[[Write WeeklyReview checklist]]@@\n* Write @@ToCompleteToday@@ tip\n* Give @@[[Download PimliPoche]] link@@\n* Camera to repair\n* Pick chidren at Beatrix's before 5:30 pm\n<<tiddler ":Hot">> \n!Coming now\n<<showReminders leadtime:0 tag:"!:Hot" format:"|!TITLE |TIDDLER |">>\n----
![[Collected stuff to process|:InBox]]\n<<listOnlyTags :inBox>>\n!!All new stuff is tagged //:inBox//.\n[[Process with PimliPoche]]\n
<<tagCloud :Agenda -Modèles Aide index Syntaxe archived archiver english excludeLists excludeSearch ideas index macro macros macrotest module myGTD plugins posts stylesheets systemConfig systemTiddlers tidlipoche tips todo turbe.com usage ~5w38 ~Samedi ~Vendredi ~mdp>>\n
![[Others are waiting a message from me|:Mail]]\n~~//List of notes currently tagged ":Mail" ://\n<<showReminders tag:":Mail" leadtime:30 format:"|!TITLE |TIDDLER |">>
![[Mails and docs to post|:Mails]]\n<<listTags :Mail modified #>>
![[Nothing now, but not to forget|:Maybe]]\n~~//Tiddlers currently tagged with ':Maybe' ://~~\n<<listOnlyTags :Maybe>>
![[Can make these progress when in my Office|:MyOffice]]\n<<showReminders tag:":MyOffice" format:"|!TITLE |TIDDLER |">>\n~~//List of notes currently tagged ":MyOffice" ://~~
![[Errands within 10 minutes walk|:Near]]\n<<showReminders tag:":Near" format:"TITLE TIDDLER">>
![[Methods, procedures & usefull tips|:Process]]\n<<list withTags :Process>>
![[Activated projects|:Projects]]\n<<listOnlyTags :Project>>
<<tabs txtFavourite\n'How' 'List tiddlers currently tagged with :Process' [[:Process]]\n'Who' 'List tiddlers currently tagged with :Persons' [[:Who]]\n"For" "List tiddlers currently tagged with :Clients" [[:Customers]]\n"What" "List tiddlers currently tagged with :Projects" [[:Projects]]\n"Where" "List tiddlers currently tagged with :Places" [[:Places]]\n"Quotes" "List tiddlers currently tagged with Quotes" [[Quotes]]\n'Journal' 'List tiddlers currently tagged with Journal' [[Journal]]\n'Links' 'List tiddlers currently tagged with :Links' [[:Links]]\n"Maybe" "List tiddlers currently tagged with :Maybe" [[:Maybe]]\n>>
| Checklists and ideas for recurring time buckets|c\n|!| !^^Monday^^ | !^^Tuesday^^ | !^^Wednesday^^ | !^^Thursday^^ | !^^Friday^^ | !^^Saturday^^ | !^^Sunday^^ |\n|!^^Before 8:00^^| ^^[[:Hotest]]^^ | ^^[[:Hotest]]^^ | ^^[[:Hotest]]^^ | ^^[[:Hotest]]^^ | ^^[[:Hotest]]^^ |bgcolor(#DEDEAD):|bgcolor(#DEDEAD): |\n|!^^8:00-10:00^^| ^^[[Prospecting]]^^ |||| ^^WeeklyReview 1<html><br></html>[[Admin]]^^ |bgcolor(#DEDEAD): ^^[[:Hotest]]^^ |bgcolor(#DEDEAD): |\n|!^^10:00-12:00^^|| ^^[[Market]]^^ || ^^[[Market]]^^ |~|bgcolor(#DEDEAD): ^^[[Market]]^^ |bgcolor(#DEDEAD): ^^[[Expo]]^^ |\n|!^^12:00-14:00^^||||||bgcolor(#DEDEAD): |bgcolor(#DEDEAD): |\n|!^^14:00-16:00^^||||||bgcolor(#DEDEAD): |bgcolor(#DEDEAD): ^^[[Entertainment]]^^ |\n|!^^16:00-18:00^^||||||bgcolor(#DEDEAD): ^^[[Shopping]]^^ |bgcolor(#DEDEAD):~|\n|!^^18:00-20:00^^| ^^[[DailyReview]]^^ | ^^[[DailyReview]]^^ | ^^[[DailyReview]]^^ | ^^[[DailyReview]]^^ | ^^[[DailyReview]]^^ |bgcolor(#DEDEAD): |bgcolor(#DEDEAD): ^^WeeklyReview^^ 2 |\n|!^^20:00-22:00^^||||| ^^[[Social]]^^ |bgcolor(#DEDEAD): ^^[[Family]]^^ |bgcolor(#DEDEAD):^^[[EoW]]^^ |
![[What I've decided to work on this week|:ThisWeek]]\n~~//List of notes currently tagged ":ThisWeek" ://~~\n\n| !I want to complete next Outcome on these| <<showReminders tag:":ThisWeek" leadtime:7 format:"| !DDD| TITLE|TIDDLER |">> |
![[:To complete this week]]\n<<listOnlyTags :ThisWeek>>
![[These are still in a suspend state|:Waiting for]]\n<<showReminders tag:":WaitingFor" format:"|!TITLE |TIDDLER |">>\n~~//List of notes currently tagged ":WaitingFor" ://~~\n
| Weeks 2005 |c\n|>|>|>|>|>|>|>| !Septembre |!|>|>|>|>|>|>|>| !Octobre |\n|Sem| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |!|Sem| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |\n|[[5s35]]|>|>|!| 1 | 2 |bgcolor(#DEDEAD): 3 |bgcolor(#DEDEAD): 4 |!|[[5s39]]|>|>|>|>|!|bgcolor(#DEDEAD): 1 |bgcolor(#DEDEAD): 2 |\n|[[5s36]]| 5 | 6 | 7 | 8 | 9 |bgcolor(#DEDEAD): 10 |bgcolor(#DEDEAD): 11 |!|[[5s40]]| 3 | 4 | 5 | 6 | 7 |bgcolor(#DEDEAD): 8 |bgcolor(#DEDEAD): 9 |\n|[[5s37]]| 12 | 13 | 14 | 15 | 16 |bgcolor(#DEDEAD): 17 |bgcolor(#DEDEAD): 18 |!|[[5s41]]| 10 | 11 | 12 | 13 | 14 |bgcolor(#DEDEAD): 15 |bgcolor(#DEDEAD): 16 |\n|[[5s38]]| 19 | 20 | 21 | 22 | 23 |bgcolor(#DEDEAD): 24 |bgcolor(#DEDEAD): 25 |!|[[5s42]]| 17 | 18 | 19 | 20 | 21 |bgcolor(#DEDEAD): 22 |bgcolor(#DEDEAD): 23 |\n|[[5s39]]| 26 | 27 | 28 | 29 | 30 |>|!|!|[[5s43]]| 24 | 25 | 26 | 27 | 28 |bgcolor(#DEDEAD): 29 |bgcolor(#DEDEAD): 30 |\n|>|>|>|>|>|>|>|!|!|[[5s44]]| 31 |>|>|>|>|>|!|\n|>|>|>|>|>|>|>| !Novembre |!|>|>|>|>|>|>|>| !Décembre |\n|Sem| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |!|Sem| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |\n|[[5s44]]|!| @@color(#FDBD20):1@@ | 2 | 3 | 4 |bgcolor(#DEDEAD): 5 |bgcolor(#DEDEAD): 6 |!|[[5s48]]|>|>|!| 1 | 2 |bgcolor(#DEDEAD): 3 |bgcolor(#DEDEAD): 4 |\n|[[5s45]]| 7 | 8 | 9 | 10 | @@color(#FDBD20):11@@ |bgcolor(#DEDEAD): 12 |bgcolor(#DEDEAD): 13 |!|[[5s49]]| 5 | 6 | 7 | 8 | 9 |bgcolor(#DEDEAD): 10 |bgcolor(#DEDEAD): 11 |\n|[[5s46]]| 14 | 15 | 16 | 17 | 18 |bgcolor(#DEDEAD): 19 |bgcolor(#DEDEAD): 20 |!|[[5s50]]| 12 | 13 | 14 | 15 | 16 |bgcolor(#DEDEAD): 17 |bgcolor(#DEDEAD): 18 |\n|[[5s47]]| 21 | 22 | 23 | 24 | 25 |bgcolor(#DEDEAD): 26 |bgcolor(#DEDEAD): 27 |!|[[5s51]]| 19 | 20 | 21 | 22 | 23 |bgcolor(#DEDEAD): 24 |bgcolor(#DEDEAD): @@color(#FDBD20):25@@ |\n|[[5s48]]| 28 | 29 | 30 |>|>|>|!|!|[[5s52]]| 26 | 27 | 28 | 29 | 30 |bgcolor(#DEDEAD): 31 |!|
![[Persons with whom I am dealing|:Who]]\n~~//Tiddlers currently tagged with '':Who' ://~~\n<<tableTags :Who>>
!All this new stuff has not yet been processed !\n!!<<reminder year:2005 month:10 day:31 title:"nextAction" >>
<<tabs txtFavourite\nØ "Close tabs" Ø \n'Cette Semaine' 'List tiddlers currently tagged with :ThisWeek' [[:To complete this week]]\n"Aujourd'hui" "Affiche l'élément :Priorités*" [[:Priorités*]]\n"Call" "List tiddlers currently tagged with :Call" [[:Call]]\n"Mails" "List tiddlers currently tagged with :Mails" [[:Mails]]\nComputer "Eléments marqués comme nécessitant l'ordinateur" [[:Computer]]\n"Waiting for" "Eléments marqués :En Attente" [[:Waiting for]]\n>>
@@color:#008080;font-size:9px;font-weight:bold;line-height:1em;text-align:left;<<tiddler AffirmationOfTheWeek>>@@
@@''Action Reminder :@@\n><<reminder month:12 day:31 year:2005 title:"yourFirstAction">>\n{{{\n<<reminder \nmonth:12\nday:31\nyear:2005 \ntitle:"yourFirstAction">>\n}}}\n~~//then <<tiddler "reminder name instruction">>//~~~~
![[Do not procrastinate these !|Admin]]\n<<list withTag Admin>>
<<option chkOpenInNewWindow>> OpenLinksInNewWindow\n<<option chkSaveEmptyTemplate>> SaveEmptyTemplate\n<<option chkToggleLinks>> Clicking on links to tiddlers that are already open causes them to close\n^^(override with Control or other modifier key)^^\n<<option chkHttpReadOnly>> HideEditingFeatures when viewed over HTTP\n<<option chkForceMinorUpdate>> Treat edits as MinorChanges by preserving date and time\n^^(override with Shift key when clicking 'done' or by pressing Ctrl-Shift-Enter^^\n<<option chkSinglePageMode>> Display one tiddler at a time\n<<batchprocess asButton>>
|!| @@''My AffirmationOfTheWeek''@@ |!|\n!Affirmations examples\n!!Affirmations are a motto you give yourself for a time. Dare not be true : they aim to propell you where you want to be better !\n>I've put an example here, above Calendar : but you'd maybe prefer to put them as your SiteSubtitle : they'll appear on taskbar when PimliPoche is hidden, and flash at you each time you put your PimliPoche in focus. That's automotivation <<smiley>>\n!!!I stole the following from [["Introduction to Affirmations"|http://members.optusnet.com.au/~charles57/Creative/Resources/affirmations.htm]] from [[Charles Cave's "Creativity Web"|http://members.optusnet.com.au/~charles57/Creative/index2.html]]\n@@''Affirmations''@@\n* I am allowed to nurture my artist\n* I am tolerant of the ambiguity in problems.\n* I am willing to be of service through my creativity.\n* I am willing to learn to let myself create\n* I begin every task by thinking of new and better ways to accomplish it.\n* I consider many possible solutions from many diverse sources.\n* I deserve a rewarding creative life.\n* I have a constant flow of new and interesting ideas.\n* I have an adventurous mind and seen new experiences regularly.\n* I have the courage and self-confidence necessary to put my solutions into practice.\n* I have the strength and persistence necessary to work ideas through to solutions.\n* I play with partial, incomplete and sometimes foolish ideas.\n* I recognise the task of making mistakes but learn from my failures.\n* I spend ten minutes each morning and evening, thinking over problems.\n* I treat each new problem I encounter as a new door to be opened, and an opportunity to be creative.\n* I trust my feelings and unconscious thoughts.\n* My creativity heals myself and others\n* Through the use of a few simple tools, my creativity will flourish.\n!!!@@color(lightgray):Mail to@@ <<email jacques.turbe at gmail dot com?subject=[PimliPoche] - AffirmationForTheWeek &body=Enter your comment here, thanks ;)>>\n!!!<<reminder year:2005 month:10 day:31 title:"Add more examples" >>
If I have this to do again, what will I change ?\n\n<<reminder dayofweek:6 title:"Write" hidden>>
!!!<<today>><<gradient vert #aabbfd #fefeff #fff4ef #ffeecf>>\n<<<\nSince the beginning (99 !) CyberPoche has been playing with //free form//, //plain text// __[[microcontents|http://www.tiddlywiki.com/#JeremyRuston]]__ (well, I didn't know the word for it before [[Jeremy|http://www.tiddlywiki.com/#JeremyRuston]]), linked as needs arise by tags : nature, category, usage, context, etc. It started with Palm memos, and now it can be runned and demonstrated as a Wiki here, thanks to TiddlyWiki.\n\nPimliPoche is, firstly, my individual tool, made to be used offline (although it is easily uploaded as you see here). Here I've filled it with mockup data, to illustrate how it can be a tool for time and action management, notetaking and journalizing.\n\nSo, when I met TiddlyWiki (late 2004) it stroke me how its concept exactly fit on a desktop what was my practice on Palm. The progress of TiddlyWiki is fantastic : I'd say it is today the easiest and more versatile notetaking facilility available (and I've tested many, and practiced the best). You drop your thoughts and nots as they come, do not organize, just tag. You bring under your eyes just the data you need at the moment. With the many plugins you hav\n\n\nI am absolutely not a coder (just a management and time management consultant :)\n\nSo almost all you see here was made with pieces built by others.\n\nFirst [[JeremyRuston|http://www.osmosoft.com/#JeremyRuston]] the creator of this awesome nifty [[TiddlyWiki|http://www.osmosoft.com/#HelloThere%20TiddlyWiki%20TiddlyWikiAdaptations%20TiddlyWikiExamples]]. which is the engine that brings this page to life.\n\nThen, this page uses many plugins and macros provided by numerous developpers that play with javascript and CSS as they breathe. Here are [[permalinks|TW plugins and macros]] to their artworks :)\n\nPimliPoche can be updated with last TW releases (with no data loss, of course !)\nThen, you see, I did no more than putting my GTD practice and CyberPoche approach in motion with this marvelous tool.\n<<<\n!!!Mail to <<email jacques.turbe at gmail dot com?subject=[PimliPoche] - Aknowledgements &body=Enter your comment here, thanks ;)>>
/***\n''[[AliasPlugin|http://www.elsdesign.com/tiddlywiki/#AliasPlugin]] for TiddlyWiki version 1.2.31 or above''\n''Eric Shulman - ELS Design Studios''\n\nCreate text-substitution macros that define abbreviations and other "aliases", and then embed them in the rest of your tiddler content to quickly insert common terms, phrases and links without a lot of repetitive typing.\n\n!!!Usage\n<<<\nFirst, decide upon a suitable "alias" for the text to be substituted. This is usually a short keyword or other abbreviated term that is easily input with just a few keystrokes. You can use any alias you like, but don't include any spaces in the alias name, since it will be used as the name of the 'alias macro' that is created, and macro names cannot contain spaces.\n\n//Note: If you use an alias name that ''does'' contain spaces, they will be automatically replaced with underscores ("_"), so that the resulting alias name will still be a valid macro name//\n\nTo create alias definitions, embed << {{{alias //newname// //"text to display"//}}} >> macros in a tiddler. These macros don't actually produce any visible output, but simply define the alias macros that you want to use in your document, and thus they can be safely added to practically any tiddler without producing a change in that tiddler's appearance.\n\nIn order to ensure that your aliases are defined and available for use throughout your document, you should add your definitions to a tiddler that you are certain will be displayed when your TW is first loaded, such as MainMenu or SiteTitle (or, any tiddler listed in DefaultTiddlers).\n<<<\n!!!Examples\n<<<\n<<alias>> {{{<<alias>>}}}\nmissing alias name: fail safe, do nothing\n\n<<alias alias1>> {{{<<alias alias1>>}}}\nmissing text params, default to text=name (e.g., "<<alias1>>")\n\n<<alias alias2 simple multi-word text substitution>> {{{<<alias alias2 simple multi-word text substitution>>}}}\n<<alias2>>\n\n<<alias "alias3 with spaces" "spaces in aliasname converted to _">> {{{<<alias "alias3 with spaces" "spaces in aliasname converted to _ ">>}}}\n<<alias3_with_spaces>>\n\n<<alias alias4 "multi-line \ntext\nsubstitution">> {{{<<alias alias4 "multi-line\ntext\nsubstitution">>}}}\n<<alias4>>\n<<<\n!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''AliasPlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for this plugin^^\n<<<\n!!!Revision History\n<<<\n''2005.10.09 [1.0.3]''\ncombined documentation and code into a single tiddler\n''2005.08.12 [1.0.0]''\ninitial 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.alias= {major: 1, minor: 0, revision: 3, date: new Date(2005,10.9)};\nconfig.macros.alias= { };\nconfig.macros.alias.handler = function(place,macroName,params) {\n var alias=params.shift(); if (!alias) return; alias=alias.replace(/ /g,"_"); // don't allow spaces in alias\n if (config.macros[alias]==undefined) // create new macro (as needed)\n { \n config.macros[alias] = { };\n config.macros[alias].handler =\n function (place,macroName,params)\n { wikify(config.macros[macroName].text,place,null,null); }\n }\n config.macros[alias].text = params[0]?params.join(' '):alias; // set alias text\n}\n//}}}\n
!!!10, 9 2005 14:43\n\nAnonymous call, no message\n032 696 241\n!!<<reminder year:2005 month:10 day:24 title:"find who called">>[[ • ]][[ ~ ]][[ ? ]]
/***\nAutoTaggerPlugin\n''~AutoTagger plugin settings:''\n<<option chkAutoTagAuthor>> add 'creator' tag to new tiddlers.\n<<option chkAutoTagDate>> add 'creation date' tag to new tiddlers. Format: <<option txtAutoTagFormat>>\n^^//''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero//^^\n^^//''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero//^^\n^^//''YYYY'' - full year, ''YY'' - two digit year//^^\nTag keyword for triggering 'auto-scan': <<option txtAutoTagTrigger>>\n\n''~AutoTagger plugin code:''\nEric Shulman - ELS Design Studios\nAutoTagger Plug-in for TiddlyWiki version 1.2.31 or above\n***/\n/*\n{{{\n*/\nversion.extensions.autoTagger = {major: 1, minor: 2, revision: 1, date: new Date(2005,8,16)};\n\nif (config.options.chkAutoTagDate==undefined)\n config.options.chkAutoTagDate=true;\nif (config.options.chkAutoTagAuthor==undefined)\n config.options.chkAutoTagAuthor=true;\nif (config.options.txtAutoTagTrigger==undefined)\n config.options.txtAutoTagTrigger="auto";\nif (config.options.txtAutoTagFormat==undefined)\n config.options.txtAutoTagFormat="YYYY.0MM.0DD";\n\n// hijack store.saveTiddler()\nstore.coreSaveTiddler = store.saveTiddler;\nstore.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags)\n{\n // get the tags as passed from the tiddler editor\n var newTags = [];\n if (tags) newTags = (typeof tags == "string") ? tags.readBracketedList() : tags;\n\n // if saving a new tiddler, add 'creation date' tag\n if (config.options.chkAutoTagDate && (store.tiddlers[title]==undefined))\n newTags.pushUnique(new Date().formatString(config.options.txtAutoTagFormat));\n // if saving a new tiddler, add 'creator' tag\n if (config.options.chkAutoTagAuthor && (store.tiddlers[title]==undefined))\n// newTags.pushUnique(config.options.txtUserName);\n\n newTags.pushUnique(":inBox");\n// if tagged for scanning, find tags embedded in text of tiddler title/body\n var allTags = store.getTags();\n if ((config.options.txtAutoTagTrigger!="") && (newTags.find(config.options.txtAutoTagTrigger)!=null))\n for (var t=0; t<allTags.length; t++)\n {\n // note: don't automatically tag a tiddler with 'systemConfig' or 'systemTiddler'\n if ((allTags[t][0]=='systemConfig') || (allTags[t][0]=='systemTiddler'))\n continue;\n if ((newBody.indexOf(allTags[t][0])!=-1) || (newTitle.indexOf(allTags[t][0])!=-1))\n newTags.pushUnique(allTags[t][0]);\n }\n\n // pass it all on to the core TW to be saved in the data store.\n return store.coreSaveTiddler(title,newTitle,newBody,modifier,modified,newTags);\n}\n/*\n}}}\n*/
// //''Name:'' Batch Processing Utility\n\n// //''Version:'' <<getversion batchprocess>> (<<getversiondate batchprocess "DD MMM YYYY">>)\n// //''Author:'' AlanHecht\n// //''Type:'' [[Macro|Macros]]\n// //''TiddlyWiki Version:'' 1.2.23 or higher\n\n// //''Description:'' This Batch Processing Utility (BPU) allows you to select a group of tiddlers by title, tag, author, or date and perform an action on the entire group (open, edit, add/remove a tag, delete, etc.). Other features include renaming a tag across all the tiddlers that use it and importing/exporting tiddlers via copy/paste. \n\n// //''Usage Tips:'' Add the BPU macro to the end of your AdvancedOptions tiddler to always have it handy without taking up another tiddler. Also, there are two ways the BPU can be displayed: as a form or as a button that toggles the form (see the syntax examples below). The dateFormat and asButton flag are both optional and can occur in any order.\n\n// //''Syntax:'' << {{{batchprocess dateFormat asButtonFlag}}} >>\n// //Examples:\n// //<< {{{batchprocess "MMM DD, YYYY" asButton}}} >> displays BPU as a button with dates showing as "August 12, 2005."\n// //<< {{{batchprocess}}} >> displays BPU as a form and uses the default format of DD MMM YYYY (e.g. 12 August 2005).\n// //<< {{{batchprocess asButton}}} >> displays BPU as a button and uses the default format of DD MMM YYYY.\n\n// //''Directions:'' <<tiddler StartupBehaviorDirections>> <<tiddler MacroDirections>>\n// //You will also need to add the above syntax to an existing tiddler. Read the Usage Tips (above) for more information.\n\n// //''Notes:'' Two actions: Save as Text and Save as TiddlyWiki do not yet work. I'll get these working in the next week or so, but I wanted to let folks take a peek at the rest.\n\n// //''Known Issues:'' Works with FireFox. Does not work with IE. I'm not sure of other browsers. Also, there is a bug that sometimes prevents an action from being applied to the entire selection of tiddlers. If you "redo" the action to those same tiddlers, then they all are affected. I plan to fix this with a complete rewrite of the tiddler selection/action code, but that will take me a little while.\n\n// //''Size:'' 23K.\n\n// //''Revision History:''\n// // v0.1.0 (31 July 2005): preview release\n// // v0.1.1 (15 August 2005): corrected an issue that prevented tiddlers with macros from importing properly.\n\n// //''Code section:''\nversion.extensions.none = {major: 0, minor: 1, revision: 0, date: new Date("Jul 31, 2005")};\nconfig.macros.none = {}\nconfig.macros.none.handler = function(place,macroName,params)\n{\n\n}\nversion.extensions.batchprocess = {major: 0, minor: 1, revision: 1, date: new Date("Aug 15, 2005")};\nconfig.macros.batchprocess = {\n title: "Tiddler Batch Processing Utility",\n tooltip: "Import/export/delete/change multiple tiddlers at once",\n noAutosave: "Notes: Changes made with this utility are not automatically saved. You need to save changes manually when you are satisfied with them.",\n compatiblity: "(This utility is not compatible with InternetExplorer.)",\n buttonModeSwitch: "asButton",\n mode: {\n prompt: "Select tiddlers by:",\n options: ["title","tag","author","date","tiddler"],\n plurals: ["titles","tags","authors","dates","tiddlers"]\n },\n selectBox: {\n prompt: "Select",\n hint: "(You can select or deselect mutiple entries using Ctrl-click/Apple-click)"\n },\n selectAll: {\n prompt: "Select all"\n },\n action: {\n options: ["Select an Action","Open for viewing","Open for editing","Import from Clipboard","Export to Clipboard","Export to text file (not yet)","Save to new TiddlyWiki (not yet)","Change author","Change date","Add tags","Remove tags","Rename a single tag","Delete(use with caution!)"],\n button: "Go!",\n renameTagError: "The 'Rename a single tag' option is only available when selecting by tags and when only one tag is selected.",\n duplicateError: "already exists in this wiki. Do you want to overwrite it with the new, imported tiddler?",\n importConfirm: "imported",\n noneSelectedError: "An action cannot be performed because you have not chosen enough settings. Please select at least one tiddler item from the list and also select a single action.",\n deleteConfirm: "Deleting these tiddlers will be permanent. Do you still want to continue? (Note: for safety, your changes will not be saved even if you have AutoSave turned on. Please save manually when you are satisfied with your deletion.)",\n clipboardCopy: "Copy the contents of the highlighted textbox below to the clipboard to complete this action.",\n clipboardPaste: "Paste your tiddler text into the textbox below. Text must be in the same format as 'Export to Clipboard' (i.e. HTML Divs).",\n authorPrompt: "Enter a new author in the form of a WikiWord (example: JoeBloggs).",\n datePrompt: "Enter a new date in the format YYYYMMDDHHMM. Hours and minutes are optional (examples: 200703310842 or 20070331).",\n dateError: "Invalid date. Please try again.",\n addTagsPrompt: "Enter the tags you wish to add to the selected tiddlers. Type a space between each tag and [[double brackets]] around tags with spaces.",\n removeTagsPrompt: "Enter the tags you wish to remove from the selected tiddlers. Type a space between each tag and [[double brackets]] around tags with spaces.",\n removeTagsError: "No tiddlers contained the specified tags",\n renameTagPrompt: "Enter the new name for this tag.",\n editTagWarning: "Some of the tiddlers that were processed are currently being edited. You will see the old tag name in the editor box until you choose to cancel or save your edits.",\n success: "The process has completed.",\n failure: "The process failed."\n },\n tally: {\n prompt: "currently selected"\n }\n};\n\nconfig.macros.batchprocess.handler = function(place,macroName,params)\n{\n var lingo = config.macros.batchprocess;\n var buttonMode = false;\n if(params[1] == lingo.buttonModeSwitch)\n {\n buttonMode = true;\n var dateFormat = params[0];\n }\n else if(params[0] == lingo.buttonModeSwitch)\n {\n buttonMode = true;\n if(params[1])\n var dateFormat = params[1];\n else var dateFormat = null;\n }\n if(buttonMode)\n var toggleButton = createTiddlyButton(place,lingo.title,lingo.tooltip,bpToggleForm);\n var bpFrm = createTiddlyElement(place,"form",null,null,null);\n bpFrm.name = "bpForm"; bpFrm.id = "bpForm";\n if(buttonMode)\n bpFrm.style.display = "none";\n else\n {\n var formHeading = document.createElement("h2");\n var title = formHeading.appendChild(document.createTextNode(lingo.title));\n bpFrm.appendChild(formHeading);\n }\n var datePref = document.createElement("none");\n datePref.type = "hidden"; datePref.id = "bpDatePref"; datePref.value = dateFormat;\n bpFrm.appendChild(datePref);\n bpFrm.appendChild(document.createElement("p"));\n bpFrm.appendChild(document.createTextNode(lingo.mode.prompt));\n var selectMode = document.createElement("select");\n selectMode.id = "bpModes"; selectMode.style.marginLeft = "10px";\n selectMode.setAttribute("onChange","bpRefreshSelectBox()");\n for(t=0; t<lingo.mode.options.length-1; t++)\n selectMode.options[t] = new Option(lingo.mode.options[t]);\n var currentMode = 0;\n selectMode.options[currentMode].selected = true;\n bpFrm.appendChild(selectMode);\n bpFrm.appendChild(document.createElement("p"));\n bpFrm.appendChild(document.createTextNode(lingo.selectBox.prompt + " "));\n var selectPrompt = (document.createElement("span"));\n selectPrompt.id = "bpSelectPrompt";\n selectPrompt.innerHTML = lingo.mode.plurals[currentMode];\n bpFrm.appendChild(selectPrompt);\n insertSpacer(bpForm);\n bpFrm.appendChild(document.createTextNode(lingo.selectBox.hint));\n bpFrm.appendChild(document.createElement("br"));\n var selectBox = document.createElement("select");\n selectBox.id = "bpSelectBox"; selectBox.setAttribute("Multiple",null);\n selectBox.style.verticalAlign = "top"; selectBox.style.marginLeft = "50px";\n selectBox.setAttribute("OnChange","bpTallyItems()");\n bpFrm.appendChild(selectBox);\n var selectAll = document.createElement("input");\n selectAll.type = "checkbox"; selectAll.id = "bpSelectAll";\n selectAll.style.marginLeft = "5px"; selectAll.style.verticalAlign = "top";\n selectAll.setAttribute("onChange","bpSelectDeselectAll()");\n bpFrm.appendChild(selectAll);\n bpFrm.appendChild(document.createTextNode(lingo.selectAll.prompt));\n bpFrm.appendChild(document.createElement("p"));\n var selectAction = document.createElement("select");\n selectAction.id = "bpActions"; selectAction.style.marginLeft = "50px";\n selectAction.setAttribute("OnChange","bpCheckAction()");\n for(t=0; t<lingo.action.options.length; t++)\n selectAction.options[t] = new Option(lingo.action.options[t]);\n selectAction.value = "";\n bpFrm.appendChild(selectAction);\n var goButton = document.createElement("input");\n goButton.type = "button"; goButton.value = lingo.action.button;\n goButton.name = "Go"; goButton.style.marginLeft = "10px";\n goButton.setAttribute("OnClick","bpExecute()");\n bpFrm.appendChild(goButton);\n var tallyArea = document.createElement("span");\n tallyArea.id = "bpTally"; tallyArea.style.marginLeft = "10px";\n bpFrm.appendChild(tallyArea);\n var footnotes = document.createElement("span");\n footnotes.id = "bpFootnotes";\n footnotes.appendChild(document.createElement("hr"));\n footnotes.appendChild(document.createTextNode(lingo.noAutosave));\n footnotes.appendChild(document.createTextNode(" " + lingo.compatiblity));\n bpFrm.appendChild(footnotes);\n bpRefreshSelectBox();\n}\n\nfunction bpToggleForm()\n{\n var bpFrm = document.getElementById("bpForm");\n if(bpFrm.style.display != "none")\n bpFrm.style.display = "none";\n else\n bpFrm.style.display = "block";\n}\n\nfunction bpRefreshSelectBox()\n{\n var list = [];\n var lingo = config.macros.batchprocess;\n var bpFrm = document.getElementById("bpForm");\n var selectMode = document.getElementById("bpModes");\n var currentMode = selectMode.selectedIndex;\n var selectPrompt = document.getElementById("bpSelectPrompt");\n selectPrompt.innerHTML = lingo.mode.plurals[currentMode];\n var selectBox = document.getElementById("bpSelectBox");\n var selectAll = document.getElementById("bpSelectAll");\n var prevResults = document.getElementById("bpResults");\n if(prevResults)\n bpFrm.removeChild(prevResults);\n if(selectAll.checked == true)\n {\n selectAll.checked = false;\n bpSelectDeselectAll()\n }\n while(selectBox.options.length>0)\n selectBox.removeChild(selectBox.options[0]);\n switch(currentMode)\n {\n case 0: //by title\n var tiddlers = store.getTiddlers("title");\n for(s=0; s<tiddlers.length; s++)\n list.push([tiddlers[s].title,null]);\n break;\n case 1: //by tag\n var list = store.getTags();\n break;\n case 2: //by author\n var list = store.getAuthors();\n break;\n case 3: //by date\n var list = store.getDates();\n break;\n }\n var listHeight = (list.length < 6) ? list.length : 6;\n listHeight = (list.length < 2) ? 2 : listHeight;\n selectBox.setAttribute("size",listHeight);\n for(u=0; u<list.length; u++)\n {\n if(list[u][1])\n var count = " ("+list[u][1]+")";\n else\n {\n var count = "";\n list[u][1] = 1;\n }\n selectBox.options[u] = new Option(list[u][0]+count);\n selectBox.options[u].value = list[u][0];\n if(list[u][2])\n selectBox.options[u].value = list[u][2];\n selectBox.options[u].label = list[u][1];\n }\n bpTallyItems()\n}\n\nfunction bpTallyItems()\n{\n var lingo = config.macros.batchprocess;\n var selectMode = document.getElementById("bpModes");\n var currentMode = selectMode.selectedIndex;\n var selectBox = document.getElementById("bpSelectBox");\n var selectAll = document.getElementById("bpSelectAll");\n var tallyArea = document.getElementById("bpTally");\n while(tallyArea.childNodes.length > 0)\n tallyArea.removeChild(tallyArea.childNodes[0]);\n var itemCount = 0;\n var tiddlerCount = 0;\n for(t=0; t<selectBox.options.length; t++)\n {\n if(selectBox.options[t].selected)\n {\n itemCount++;\n tiddlerCount = tiddlerCount + parseInt(selectBox.options[t].label);\n }\n }\n tallyArea.appendChild(document.createTextNode(itemCount + " "));\n if(itemCount == 1)\n tallyArea.appendChild(document.createTextNode(lingo.mode.options[currentMode]));\n else \n tallyArea.appendChild(document.createTextNode(lingo.mode.plurals[currentMode]));\n if(currentMode != 0)\n {\n tallyArea.appendChild(document.createTextNode(" / " + tiddlerCount + " "));\n if(tiddlerCount == 1)\n tallyArea.appendChild(document.createTextNode(lingo.mode.options[lingo.mode.options.length-1]));\n else\n tallyArea.appendChild(document.createTextNode(lingo.mode.plurals[lingo.mode.plurals.length-1]));\n }\n tallyArea.appendChild(document.createTextNode(" " + lingo.tally.prompt));\n if(itemCount < selectBox.options.length)\n document.getElementById("bpSelectAll").checked = false;\n bpCheckAction();\n}\n\nfunction bpSelectDeselectAll()\n{\n var selectAll = document.getElementById("bpSelectAll");\n var selectBox = document.getElementById("bpSelectBox");\n for(t=0; t<selectBox.options.length; t++)\n {\n if(selectAll.checked)\n {\n selectBox.options[t].selected = true;\n }\n else\n {\n selectBox.options[t].selected = false;\n }\n }\n bpTallyItems();\n}\n\nfunction bpCheckAction()\n{\n var importFlag = 3; //the index of the "import from clipboard" action\n var renameFlag = 11; //the index of the "rename a tag" action\n var lingo = config.macros.batchprocess;\n var bpFrm = document.getElementById("bpForm");\n var selectMode = document.getElementById("bpModes");\n var currentMode = selectMode.selectedIndex;\n var selectAction = document.getElementById("bpActions");\n var currentAction = selectAction.selectedIndex;\n var selectBox = document.getElementById("bpSelectBox");\n var renameWarning = false;\n var prevResults = document.getElementById("bpResults");\n if(prevResults)\n bpFrm.removeChild(prevResults);\n if(currentAction == importFlag)\n {\n var bpText = document.createElement("textarea");\n bpText.id = "bpText"; bpText.style.width = "600"; bpText.rows = "6";\n var bpResults = document.createElement("span");\n bpResults.id = "bpResults";\n bpResults.appendChild(document.createElement("hr"));\n bpResults.appendChild(document.createTextNode(lingo.action.clipboardPaste));\n bpResults.appendChild(bpText);\n bpFrm.insertBefore(bpResults,document.getElementById("bpFootnotes"));\n bpText.focus();\n }\n else if(currentAction == renameFlag)\n {\n if(currentMode != 1)\n {\n renameWarning = true;\n selectAction.options[renameFlag].selected = false;\n }\n else\n {\n var itemCount = 0;\n for(t=0; t<selectBox.options.length; t++)\n if(selectBox.options[t].selected)\n itemCount++;\n if(itemCount > 1)\n renameWarning = true;\n }\n if(renameWarning)\n alert(lingo.action.renameTagError);\n }\n return renameWarning;\n}\n\nfunction bpExecute()\n{\n var lingo = config.macros.batchprocess;\n var bpFrm = document.getElementById("bpForm");\n var selectMode = document.getElementById("bpModes");\n var currentMode = selectMode.selectedIndex;\n var selectBox = document.getElementById("bpSelectBox");\n var selectAction = document.getElementById("bpActions");\n var currentAction = selectAction.selectedIndex;\n var targets = bpGetTargetTiddlers();\n var success = false;\n var refresh = true;\n if(targets.length == 0 && currentAction != 3)\n alert(lingo.action.noneSelectedError);\n else\n {\n try\n {\n switch(currentAction)\n {\n case 0: //no action selected\n alert(lingo.action.noneSelectedError);\n return;\n break;\n case 1: //open for viewing\n for(t=0; t<targets.length; t++)\n displayTiddler(null,targets[t].title,1,null,null,null,false);\n break;\n case 2: //open for editing\n for(t=0; t<targets.length; t++)\n displayTiddler(null,targets[t].title,2,null,null,null,false);\n break;\n case 3: //import from clipboard\n var importTiddlers = [];\n var importText = document.getElementById("bpText").value;\n var tempMarker = "@@" + "bpMarker" + "@@";\n var importString = importText.replace(/<\s/div>\sn<div\ss/g,"</div>"+tempMarker+"<div ");\n importTiddlers = importString.split(tempMarker);\n var importCount = 0;\n for(t=0; t<importTiddlers.length; t++)\n {\n var divString = importTiddlers[t];\n var titleStart = divString.indexOf("tiddler=\s"")+9;\n var modifiedStart = divString.indexOf("modified=\s"")+10;\n var modifierStart = divString.indexOf("modifier=\s"")+10;\n var tagsStart = divString.indexOf("tags=\s"")+6;\n var contentStart = divString.indexOf("\s">")+2;\n var contentStop = divString.lastIndexOf("</div>");\n var title = divString.substring(titleStart,modifiedStart-12);\n var modified = divString.substring(modifiedStart,modifierStart-12);\n modified = Date.convertFromYYYYMMDDHHMM(modified);\n var modifier = divString.substring(modifierStart,tagsStart-8);\n var tags = divString.substring(tagsStart,contentStart-2);\n var content = divString.substring(contentStart,contentStop);\n content = content.replace(/&lt;/g,"<").replace(/&gt;/g,">");\n content = content.replace(regexpBackSlashEn,"\sn").replace(regexpBackSlashEss,"\s\s").replace(regexpCarriageReturn,"");\n var writeOk = true;\n var tiddler = store.tiddlers[title];\n if(tiddler)\n writeOk = false;\n if(!writeOk)\n writeOk = confirm("'" + title + "' " + lingo.action.duplicateError);\n if(writeOk)\n {\n if(tiddler)\n delete store.tiddlers[title];\n else\n tiddler = new Tiddler();\n tiddler.set(title,content,modifier,modified,tags);\n store.tiddlers[title] = tiddler;\n store.dirty = true;\n importCount++;\n }\n }\n alert(importCount + " " + lingo.mode.plurals[4] + " " + lingo.action.importConfirm);\n refresh = false;\n break;\n case 4: //export to clipboard\n var exportText = "";\n var exportTiddlers = [];\n var prevResults = document.getElementById("bpResults");\n if(prevResults)\n bpFrm.removeChild(prevResults);\n for(t=0; t<targets.length; t++)\n exportTiddlers.push(getSaveDiv(targets[t]));\n exportText = exportTiddlers.join("\sn");\n var bpText = document.createElement("textarea");\n bpText.id = "bpText"; bpText.style.width = "600"; bpText.rows = "6";\n bpText.value = exportText;\n var bpResults = document.createElement("span");\n bpResults.id = "bpResults";\n bpResults.appendChild(document.createElement("hr"));\n bpResults.appendChild(document.createTextNode(lingo.action.clipboardCopy));\n bpResults.appendChild(bpText);\n bpFrm.insertBefore(bpResults,document.getElementById("bpFootnotes"));\n bpText.focus();\n bpText.select();\n refresh = false;\n break;\n case 5: //export to text file\n alert("This feature is not implemented yet.");\n return;\n break;\n case 6: //save new TiddlyWiki\n alert("This feature is not implemented yet.");\n return;\n break;\n case 7: //change author\n var changeTo = prompt(lingo.action.authorPrompt);\n for(t=0; t<targets.length; t++)\n targets[t].modifier = changeTo;\n success = true;\n break;\n case 8: //change date\n var changeTo = prompt(lingo.action.datePrompt);\n if(changeTo.length == 8)\n changeTo = changeTo.substring(0) + "0000";\n if(changeTo.length != 12)\n {\n alert(lingo.action.dateError);\n break;\n }\n else\n {\n changeTo = Date.convertFromYYYYMMDDHHMM(changeTo);\n for(t=0; t<targets.length; t++)\n targets[t].modified = changeTo;\n }\n success = true;\n break;\n case 9: //add tags\n var changeTo = prompt(lingo.action.addTagsPrompt);\n var showWarning = false;\n if(changeTo != "" && changeTo != null)\n {\n var newTags = changeTo.split(" ");\n for(s=0; s<newTags.length; s++)\n {\n for(t=0; t<targets.length; t++)\n {\n var tiddler = targets[t];\n var needsTag = true;\n for(g=0; g<tiddler.tags.length; g++)\n {\n if(tiddler.tags[g] == newTags[s])\n needsTag = false;\n }\n if(needsTag)\n {\n tiddler.tags[g] = newTags[s];\n var theViewer = document.getElementById("viewer" + tiddler.title);\n var theEditor = document.getElementById("editorBody" + tiddler.title);\n if(theViewer)\n displayTiddler(null,tiddler.title,1,null,null,null,false);\n if(theEditor)\n showWarning = true;\n }\n }\n }\n } \n if(showWarning)\n alert(lingo.action.editTagWarning);\n success = true;\n break;\n case 10: //remove tags\n var changeTo = prompt(lingo.action.removeTagsPrompt);\n var showWarning = false;\n var removeCount = 0;\n if(changeTo != "" && changeTo != null)\n {\n var newTags = changeTo.split(" ");\n for(s=0; s<newTags.length; s++)\n {\n for(t=0; t<targets.length; t++)\n {\n var tiddler = targets[t];\n for(g=0; g<tiddler.tags.length; g++)\n if(tiddler.tags[g] == newTags[s])\n {\n tiddler.tags.splice(g,1);\n removeCount++;\n var theViewer = document.getElementById("viewer" + tiddler.title);\n var theEditor = document.getElementById("editorBody" + tiddler.title);\n if(theViewer)\n displayTiddler(null,tiddler.title,1,null,null,null,false);\n if(theEditor)\n showWarning = true;\n }\n }\n }\n }\n if(showWarning)\n alert(lingo.action.editTagWarning);\n else if(removeCount == 0)\n alert(lingo.action.removeTagsError);\n success = true;\n break;\n case 11: //rename a single tag\n var invalidTags = bpCheckAction();\n var oldTag = selectBox.options[selectBox.selectedIndex].value;\n var showWarning = false;\n if(!invalidTags)\n {\n var changeTo = prompt(lingo.action.renameTagPrompt,oldTag);\n if(changeTo != "" && changeTo != null)\n {\n for(t=0; t<targets.length; t++)\n {\n var tiddler = targets[t];\n for(g=0; g<tiddler.tags.length; g++)\n if(tiddler.tags[g] == oldTag)\n {\n tiddler.tags[g] = changeTo;\n var theViewer = document.getElementById("viewer" + tiddler.title);\n var theEditor = document.getElementById("editorBody" + tiddler.title);\n if(theViewer)\n displayTiddler(null,tiddler.title,1,null,null,null,false);\n if(theEditor)\n showWarning = true;\n }\n }\n if(showWarning)\n alert(lingo.action.editTagWarning);\n }\n }\n success = true;\n break;\n case 12: //delete\n var userConfirm = confirm(lingo.action.deleteConfirm);\n if(userConfirm)\n for(t=0; t<targets.length; t++)\n {\n title = targets[t].title;\n if(document.getElementById("editor"+title) || document.getElementById("viewer"+title))\n closeTiddler(title,false);\n store.removeTiddler(title);\n }\n success = true;\n break;\n }\n }\n catch(e)\n {\n alert(lingo.action.failure + "\sn\sn" + e.toString());\n return(null);\n }\n finally\n {\n if(refresh)\n bpRefreshSelectBox();\n refreshTabs();\n }\n }\n return success;\n}\n\nfunction getSaveDiv(tiddler)\n{\n return '<div tiddler="' + tiddler.title + '" modified="' +\n tiddler.modified.convertToYYYYMMDDHHMM() + '" modifier="' + tiddler.modifier +\n '" tags="' + tiddler.getTags() + '">' +\n tiddler.escapeLineBreaks().htmlEncode() + '</div>';\n}\n\n\nfunction bpGetTargetTiddlers()\n{\n var lingo = config.macros.batchprocess;\n var selectMode = document.getElementById("bpModes");\n var currentMode = selectMode.selectedIndex;\n var selectBox = document.getElementById("bpSelectBox");\n var results = [];\n var thisTiddler;\n for(t=0; t<selectBox.options.length; t++)\n {\n if(selectBox.options[t].selected)\n {\n switch(currentMode)\n {\n case 0: //by title\n results.push(store.tiddlers[selectBox.options[t].value]);\n break;\n case 1: //by tag\n tiddlerSet = store.getTaggedTiddlers(selectBox.options[t].value);\n for(s=0; s<tiddlerSet.length; s++)\n results.push(tiddlerSet[s]);\n break;\n case 2: //by author\n tiddlerSet = store.getAuthoredTiddlers(selectBox.options[t].value);\n for(s=0; s<tiddlerSet.length; s++)\n results.push(tiddlerSet[s]);\n break;\n case 3: //by date\n tiddlerSet = store.getDatedTiddlers(selectBox.options[t].value);\n for(s=0; s<tiddlerSet.length; s++)\n results.push(tiddlerSet[s]);\n break;\n }\n }\n }\n return results;\n}\n\nTiddlyWiki.prototype.getAuthors = function()\n{\n var results = [];\n for(var t in this.tiddlers)\n {\n var author = this.tiddlers[t].modifier;\n var f = false;\n for(var c=0; c<results.length; c++)\n if(results[c][0] == author)\n {\n f = true;\n results[c][1]++;\n }\n if(!f)\n results.push([author,1]);\n }\n results.sort(function (a,b) {if(a[0] == b[0]) return(0); else return (a[0] < b[0]) ? -1 : +1; });\n return results;\n}\n\nTiddlyWiki.prototype.getDates = function()\n{\n dateFormat = document.getElementById("bpDatePref").value;\n if(!dateFormat)\n dateFormat = "DD MMM YYYY";\n var results = [];\n var tiddlers = store.getTiddlers("modified");\n var lastDay = "";\n for (t=0; t<tiddlers.length; t++)\n {\n var theDay = tiddlers[t].modified.convertToYYYYMMDDHHMM().substr(0,8);\n var f = false;\n for(var c=0; c<results.length; c++)\n if(results[c][0] == theDay)\n {\n f = true;\n results[c][1]++;\n }\n if(!f)\n {\n results.push([theDay,1]);\n lastDay = theDay;\n }\n }\nresults.sort(function (a,b) {if(a[0] == b[0]) return(0); else return (a[0] > b[0]) ? -1 : +1; });\n for(s=0; s<results.length; s++)\n {\n results[s][2] = results[s][0];\n results[s][0] = Date.convertFromYYYYMMDDHHMM("" + results[s][0] + "0000").formatString(dateFormat);\n }\n return results;\n}\n\n// Return an array of the tiddlers with a given modifier (author)\nTiddlyWiki.prototype.getAuthoredTiddlers = function(author,sortField)\n{\n var results = [];\n for(var t in this.tiddlers)\n if(this.tiddlers[t].modifier == author)\n results.push(this.tiddlers[t]);\n return results;\n}\n\n// Return an array of the tiddlers that were modified on a given date (time of day not evaluated)\nTiddlyWiki.prototype.getDatedTiddlers = function(date,sortField)\n{\n var results = [];\n for(var t in this.tiddlers)\n if(this.tiddlers[t].modified.convertToYYYYMMDDHHMM().substr(0,8) == date)\n results.push(this.tiddlers[t]);\n return results;\n}\n
/*\n! Start Calendar CSS\n{{{\n*/\n#mainMenu #calendarWrapper { display: block; }\n.viewer #calendarArea { width: 220px; }\n#calendarWrapper { background-color: #4682B4; font-size: 8pt; }\n#calendarWrapper table { width: 100%; background-color: #4682B4; border-collapse: collapse; padding: 0px; margin: 0px; border: none; cursor: pointer; }\n#calendarWrapper td { border: 1px solid #4682b4; }\n#calendarWrapper #calendarArea {}\n#calendarWrapper #calendarTable .calendarCell { display: block; width: 100%; cursor: pointer; text-align: inherit; }\n#calendarWrapper #calendarHeader { font-weight: normal; width: 100%; text-align: center; font-size: 8pt; color: #ffffff; }\n#calendarWrapper #calendarHeader tr { width: 100%; }\n#calendarWrapper #calendarHeader td { padding: 1px 2px 1px 2px; }\n#calendarWrapper #calendarHeader .selectMonth {}\n#calendarWrapper #calendarHeader .selectYear {}\n#calendarWrapper #calendarHeader .selectToday { width: 100%; }\n#calendarWrapper #calendarTable { width: 100%; text-align: center; color: #000000; background-color: #ffffff; font-size: 8pt; }\n#calendarWrapper #calendarTable td { width: 14%; }\n#calendarWrapper #calendarTable .weekNames { color: #ffffff; background-color: #87cefa; }\n#calendarWrapper #calendarTable .weekDay { background-color: #dbeaf5; }\n#calendarWrapper #calendarTable .currentDay { background-color: #ffb6c1; }\n#calendarWrapper #calendarTable .workingDay { background-color: #ffffff; }\n#calendarWrapper #calendarTable .scheduledDay { background-color: #444444; color: #ffffff; }\n/*\n}}}\n! End Calendar CSS\n*/\n.class { }
\n// //''Name:'' Calendar Plugin\n// //''Version:'' <<getversion calendar>> (<<getversiondate calendar "DD MMM YYYY">>)\n// //''Author:'' Tiago Dionízio\n\n// //''Syntax:'' \n// //<< {{{calendar}}} >> or << {{{calendar //thismonth//}}} >> or << {{{calendar ''year'' ''month''}}} >> or << {{{calendar ''year'' ''month'' ''day''}}} >>\n\n// //''Description:'' \n// // Create a calendar view for a specific month.\n// // * << {{{calendar}}} >> creates a calendar displaying the current month and current day selected.\n// // * << {{{calendar ''thismonth''}}} >> creates a calendar displaying the current month.\n// // * << {{{calendar ''year'' ''month''}}} >> creates a calendar displaying a specific month.\n// // * << {{{calendar ''year'' ''month'' ''day''}}} >> creates a calendar displaying a specific month with the day highlighted.\n// // All calendars will also show associated tiddlers with a different color (configurable in CSS).\n\n// //''Code section:''\n// (you should not need to alter anything below here)//\n{{{\nversion.extensions.calendar = { major: 1, minor: 0, revision: 0, date: new Date(2005, 07, 15)};\n\n\n// --------------------------------------------------------------------\n// Calendar\n// --------------------------------------------------------------------\n\nconfig.macros.calendar = {\n\n // months as they appear in the calendar's title\n calendarMonths: [\n "Jan", "Feb", "March", "April", "May", "June",\n "July", "August", "Sept", "Oct", "Nov", "Dec"\n ],\n\n // week day titles as they appear on the calendar\n calendarWeekDays: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],\n\n // day week starts from (normally 0-Su or 1-Mo)\n calendarWeekStart: 1\n};\n\nconfig.macros.calendar.createLink = function(theParent,theText,theAction) {\n var link = createTiddlyElement(theParent,"span",null,"calendarCell",theText);\n if (theAction != null) {\n link.onclick = theAction;\n }\n return link;\n}\n\n/***************************************************************************\n** Internal functions\n***************************************************************************/\n\nconfig.macros.calendar.findCalendar = function(child) {\n var parent;\n while (child && child.parentNode) {\n parent = child.parentNode;\n if (parent.id == "calendarWrapper") {\n return parent;\n }\n child = parent;\n }\n return null;\n}\n\nconfig.macros.calendar.selectDate = function(e) {\n if (!e) var e = window.event;\n var cm = config.macros.calendar;\n\n var calendar = cm.findCalendar(this);\n if (calendar) {\n var d = this.getAttribute("date");\n if (d != null) {\n cm.makeCalendar(calendar, new Date(new Number(d)));\n }\n }\n\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nconfig.macros.calendar.dateTiddler = function(date) {\n var cm = config.macros.calendar;\n var y = date.getFullYear();\n var m = date.getMonth()+1;\n var d = date.getDate();\n var title = y + "/" + (m < 10 ? "0" : "") + m + "/" + (d < 10 ? "0" : "") + d;\n return title;\n}\n\nconfig.macros.calendar.makeCalendar = function(calendar, dt_current) {\n var cm = config.macros.calendar;\n var dt_today = new Date(new Number(calendar.getAttribute("today")));\n var select_today = calendar.getAttribute("selectToday") == "yes";\n calendar.setAttribute("date", dt_current.valueOf());\n\n while (calendar.hasChildNodes())\n calendar.removeChild(calendar.firstChild);\n\n // get same date in the previous year\n var dt_prev_year = new Date(dt_current);\n dt_prev_year.setFullYear(dt_prev_year.getFullYear() - 1);\n if (dt_prev_year.getDate() != dt_current.getDate())\n dt_prev_year.setDate(0);\n\n // get same date in the next year\n var dt_next_year = new Date(dt_current);\n dt_next_year.setFullYear(dt_next_year.getFullYear() + 1);\n if (dt_next_year.getDate() != dt_current.getDate())\n dt_next_year.setDate(0);\n\n // get same date in the previous month\n var dt_prev_month = new Date(dt_current);\n dt_prev_month.setMonth(dt_prev_month.getMonth() - 1);\n if (dt_prev_month.getDate() != dt_current.getDate())\n dt_prev_month.setDate(0);\n\n // get same date in the next month\n var dt_next_month = new Date(dt_current);\n dt_next_month.setMonth(dt_next_month.getMonth() + 1);\n if (dt_next_month.getDate() != dt_current.getDate())\n dt_next_month.setDate(0);\n\n // get first day to display in the grid for current month\n var dt_firstday = new Date(dt_current);\n dt_firstday.setDate(1);\n dt_firstday.setDate(1 - (7 + dt_firstday.getDay() - cm.calendarWeekStart) % 7);\n\n var area, header, table;\n var line, cell, i;\n\n // 1 - calendar header table\n // 2 - calendar days table\n area = createTiddlyElement(calendar, "table", "calendarArea");\n area = createTiddlyElement(area, "tbody");\n\n // 1 - calendar header table\n header = createTiddlyElement(\n createTiddlyElement(\n createTiddlyElement(\n area,\n "tr"\n ),\n "td"\n ),\n "table",\n "calendarHeader"\n );\n header = createTiddlyElement(header, "tbody");\n line = createTiddlyElement(header, "tr", null, null, null);\n\n var headerValues = [\n [ "<<", "selectYear", dt_prev_year.valueOf() ],\n [ "<", "selectMonth", dt_prev_month.valueOf() ],\n [ cm.calendarMonths[dt_current.getMonth()] + ' ' + dt_current.getFullYear(),\n "selectToday", dt_today.valueOf() ],\n [ ">", "selectMonth", dt_next_month.valueOf() ],\n [ ">>", "selectYear", dt_next_year.valueOf() ]\n ];\n\n for (i = 0; i < headerValues.length; ++i) {\n cm.createLink(\n createTiddlyElement(\n line,\n "td",\n null,\n headerValues[i][1]\n ),\n headerValues[i][0],\n cm.selectDate\n ).setAttribute("date", headerValues[i][2]);\n }\n\n // 2 - calendar days table\n table = createTiddlyElement(\n createTiddlyElement(\n createTiddlyElement(\n area,\n "tr"\n ),\n "td"\n ),\n "table",\n "calendarTable"\n );\n table = createTiddlyElement(table, "tbody");\n\n // print weekdays titles\n line = createTiddlyElement(table, "tr", "calendarLine", "weekNames", null);\n for (var n = 0; n < 7; ++n) {\n createTiddlyElement(line, "td", null, null, cm.calendarWeekDays[(cm.calendarWeekStart + n)%7]);\n }\n\n // print calendar table\n var dt_current_day = new Date(dt_firstday);\n var day_class;\n var title;\n while (dt_current_day.getMonth() == dt_current.getMonth() ||\n dt_current_day.getMonth() == dt_firstday.getMonth()) {\n\n // print row heder\n line = createTiddlyElement(table, "tr", "calendarLine", null, null);\n for (var n_current_wday = 0; n_current_wday < 7; ++n_current_wday) {\n title = cm.dateTiddler(dt_current_day);\n if (store.tiddlers[title] != null)\n // day has a tiddler associated with it\n day_class = "scheduledDay";\n else if (select_today && dt_current_day.valueOf() == dt_today.valueOf())\n // print current date\n day_class = "currentDay";\n else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)\n // weekend days\n day_class = "weekDay";\n else\n // print working days of current month\n day_class = "workingDay";\n\n var text = dt_current_day.getDate();\n var cell = createTiddlyElement(line, "td", null, day_class, null);\n\n if (dt_current_day.getMonth() == dt_current.getMonth()) {\n var link = cm.createLink(cell, text, onClickTiddlerLink);\n link.setAttribute("date", dt_current_day.valueOf());\n link.setAttribute("tiddlyLink", title);\n }\n\n dt_current_day.setDate(dt_current_day.getDate()+1);\n }\n }\n}\n\nconfig.macros.calendar.handler = function(place, macroName, params) {\n var date = null;\n var sel = "yes";\n if (params.length == 2) {\n date = new Date(\n params[0],\n params[1]-1,\n 1\n );\n sel = "no";\n }\n else if (params.length == 3) {\n date = new Date(\n params[0],\n params[1]-1,\n params[2]\n );\n }\n else if (params.length == 1 && params[0] == "thismonth") {\n date = new Date();\n date = new Date(date.getFullYear(), date.getMonth(), 1);\n sel = "no";\n }\n else {\n date = new Date();\n // filter time values off\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n var cm = config.macros.calendar;\n calendar = createTiddlyElement(place, "span", "calendarWrapper");\n calendar.setAttribute("name", "calendarWrapper");\n calendar.setAttribute("today", date.valueOf());\n calendar.setAttribute("selectToday", sel);\n\n cm.makeCalendar(calendar, date);\n}\n\n\nfunction refreshCalendars(hint) {\n var calendars = document.getElementsByName("calendarWrapper");\n var cm = config.macros.calendar;\n var i, c;\n for (i = 0; i < calendars.length; ++i) {\n c = calendars.item(i);\n if (c.id == "calendarWrapper") {\n cm.makeCalendar(c, new Date(new Number(c.getAttribute("date"))));\n }\n }\n}\nconfig.notifyTiddlers.push(refreshCalendars);\n\n}}}
// //''Name:'' Calendar plugin\n// //''Version:'' <<getversion calendar>> (<<getversiondate calendar "DD MMM YYYY">>)\n// //''Author:'' SteveRumsby, with contributions from Eric Shulman\n\n// //''Syntax:'' \n// //{{{calendar}}}\n// //{{{calendar year}}}\n// //{{{calendar year month}}}\n// //{{{calendar thismonth}}}\n\n// //''Description:'' \n// //The first form produces an full-year calendar for the current year. The second produces a full-year calendar for the given year. The third produces a single month calendar for the given month and year. The fourth form produces a single month calendar for the current month.\n// // Weekends and holidays are highlighted (see below for how to specify holdays).\n\n// //''Todo:''\n// //* Improve the formatting, especially when included in MainMenu\n// //* Find a better way of specifying holidays. It would be good to support calculated dates (e.g. Easter), and dates for different countries.\n// //* Add browsing facilities like jscalendar has\n// //* Highlight "today", if visible...\n// //* Integrate with the ReminderMacros\n\n// //''Configuration:''\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/*\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";\nconfig.macros.calendar.tiddlerformat = "YYYY.0MM.0DD";\nconfig.macros.calendar.modifiedsbg = "#c0ffee";\nconfig.macros.calendar.remindersbg = "";\n\n// //''Code section:''\n// (you should not need to alter anything below here)//\n\nversion.extensions.calendar = { major: 0, minor: 3, revision: 0, date: new Date(2005, 09, 28)};\nconfig.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconfig.macros.calendar.holidays = [ "01/01", "25/12", "03/01/2005", "02/05/2005", "30/05/2005", "29/08/2005" ];\n\n// ELS ------------------------ START\nfunction calendarIsHoliday(date) // returns true if date is a holiday\n{\n var longHoliday = date.formatString("0DD/0MM/YYYY");\n var shortHoliday = date.formatString("0DD/0MM");\n for(var i = 0; i < config.macros.calendar.holidays.length; i++) {\n var holiday=config.macros.calendar.holidays[i];\n if (holiday==longHoliday||holiday==shortHoliday) return true;\n }\n return false;\n}\n\nfunction calendarIsWeekend(date) // returns true if date is a weekend\n { return ((date.getDay()==0)||(date.getDay()==6)); }\n\nfunction calendarIndexModifieds() // build list of tiddlers, hash indexed by modification date\n{\n config.macros.calendar.modifieds= { };\n for(var t in store.tiddlers) {\n date = store.tiddlers[t].modified.formatString("YYYY0MM0DD")\n if (!config.macros.calendar.modifieds[date])\n config.macros.calendar.modifieds[date]=new Array();\n config.macros.calendar.modifieds[date].push(t);\n }\n}\nfunction calendarHasModifieds(date) // returns true if date has modified tiddlers\n { return (config.macros.calendar.modifieds[date.formatString("YYYY0MM0DD")]!=undefined); }\n\nfunction calendarIndexReminders() // build list of tiddlers with reminders, hash indexed by reminder date\n{\n config.macros.calendar.reminders = { };\n\n if(window.findTiddlersWithReminders==undefined) return; // reminders plugin not installed\n\n var matches = store.search("reminder",false,false,"title","excludeSearch");\n var macroPattern = "<<([^>\s\ss]+)(?:\s\ss*)([^>]*)>>";\n var macroRegExp = new RegExp(macroPattern,"mg");\n var arr = [];\n for(var t=matches.length-1; t>=0; t--)\n {\n var targetText = matches[t].text;\n do {\n // Get the next formatting match\n var formatMatch = macroRegExp.exec(targetText);\n if(formatMatch)\n {\n if (formatMatch[1] != null && formatMatch[1].toLowerCase() == "reminder")\n {\n //Find the matching date.\n var params = formatMatch[2].readMacroParams();\n var dateHash = getParamsForReminder(params);\n var date = findDateForReminder(dateHash);\n if (date != null)\n {\n var dateindex = date.formatString("YYYY0MM0DD")\n if (!config.macros.calendar.reminders[dateindex])\n config.macros.calendar.reminders[dateindex]=new Array();\n config.macros.calendar.reminders[dateindex].pushUnique(t);\n }\n }\n }\n } while(formatMatch);\n }\n}\nfunction calendarHasReminders(date) // returns true if date has reminders\n { return (config.macros.calendar.reminders[date.formatString("YYYY0MM0DD")]!=undefined); }\n// ELS ------------------------ END\n\nconfig.macros.calendar.handler = function(place,macroName,params)\n{\n // construct list of changes by date\n calendarIndexModifieds();\n // construct list of reminders by date\n calendarIndexReminders();\n\n var calendar = createTiddlyElement(place, "table", null, "calendar", null);\n var year = (new Date()).getYear(); year+=(year<1900)?1900:0;\n if (params[0] == "thismonth")\n createCalendarOneMonth(calendar, year, (new Date()).getMonth());\n else {\n if (params[0]) year = params[0];\n if (params[1])\n createCalendarOneMonth(calendar, year, params[1]-1);\n else\n createCalendarYear(calendar, year);\n }\n}\n\nfunction createCalendarOneMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(row, config.macros.calendar.monthnames[mon] + " " + year, true);\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(row, config.macros.calendar.monthnames[mon] + " " + year, false);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n\nfunction createCalendarYear(calendar, year)\n{\n var row;\n\n row = createTiddlyElement(calendar, "tr", null, null, null);\n var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);\n yearHeader.align = "center";\n yearHeader.setAttribute("colSpan", 21);\n\n createCalendarMonthRow(calendar, year, 0);\n createCalendarMonthRow(calendar, year, 3);\n createCalendarMonthRow(calendar, year, 6);\n createCalendarMonthRow(calendar, year, 9);\n}\n\nfunction createCalendarMonthRow(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarMonthHeader(row, config.macros.calendar.monthnames[mon]);\n createCalendarMonthHeader(row, config.macros.calendar.monthnames[mon+1]);\n createCalendarMonthHeader(row, config.macros.calendar.monthnames[mon+2]);\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDayHeader(row, 3);\n createCalendarDayRows(cal, year, mon);\n}\n\nfunction createCalendarMonthHeader(row, name, nav)\n{\n var month;\n if(nav) {\n var back = createTiddlyElement(row, "td", null, null, null);\n createTiddlyButton(back, "<", "Back", onClickCalendarBack)\n back.align = "center";\n back.style.background = config.macros.calendar.monthbg; \n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n month.setAttribute("colSpan", 5);\n var fwd = createTiddlyElement(row, "td", null, null, null);\n createTiddlyButton(fwd, ">", "Fwd", onClickCalendarFwd)\n fwd.align = "center";\n fwd.style.background = config.macros.calendar.monthbg; \n } else {\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n month.setAttribute("colSpan", 7);\n }\n month.align = "center";\n month.style.background = config.macros.calendar.monthbg;\n}\n\nfunction onClickCalendarBack(e)\n{\n\n}\n\nfunction onClickCalendarFwd(e)\n{\n\n}\n\nfunction createCalendarDayHeader(row, num)\n{\n var cell;\n for(var i = 0; i < num; i++) {\n for(var j = 0; j < 7; j++) {\n cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[j]);\n if(j > 4) cell.style.background = config.macros.calendar.weekendbg;\n }\n }\n}\n\n// ELS ------------------------ START\nfunction createCalendarDays(row, col, first, max, year, mon)\n{\n for(var i = 0; i < col; i++) createTiddlyElement(row, "td", null, null, null);\n var day = first;\n for(i = col; i < 7; i++) {\n var daycell = createTiddlyElement(row, "td", null, null, null);\n if(day > 0 && day <= max) \n createCalendarDay(daycell,year,mon,day);\n day++;\n }\n}\n\nfunction createCalendarDay(place,year,mon,day)\n{\n var celldate = new Date(year, mon, day);\n var title = celldate.formatString(config.macros.calendar.tiddlerformat);\n var now = new Date();\n\n place.title = title;\n place.date = celldate;\n place.onclick=onClickCalendarDay;\n if(calendarIsWeekend(celldate))\n place.style.background = config.macros.calendar.weekendbg;\n if(calendarIsHoliday(celldate))\n place.style.background = config.macros.calendar.holidaybg;\n if (calendarHasModifieds(celldate)&&(config.macros.calendar.modifiedsbg!=""))\n place.style.background = config.macros.calendar.modifiedsbg;\n if (calendarHasReminders(celldate)&&(config.macros.calendar.remindersbg!=""))\n place.style.background = config.macros.calendar.remindersbg;\n\n var link = createTiddlyLink(place, title, false);\n link.appendChild(document.createTextNode(day));\n link.onclick=null;\n link.title=null;\n // if there are tiddlers modified on this date, make text bold\n if (calendarHasModifieds(celldate))\n { link.style.fontStyle="normal"; link.style.fontWeight="bold"; }\n // if this is the current date, add border around text\n if ((now-celldate>=0) && (now-celldate<86400000))\n { link.style.border="1px solid black"; }\n // if there are reminders on this date, add underline\n if (calendarHasReminders(celldate))\n { link.style.textDecoration="underline"; }\n}\n\n// Event handler for clicking on a calendar day\nfunction onClickCalendarDay(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var popup = createTiddlerPopup(this);\n if(popup) {\n var e=createTiddlyLink(popup,this.title,true); // always show dated tiddler link at the top...\n createTiddlyElement(popup,"hr",null,null,null);\n addRemindersToPopup(popup,this.date);\n addModifiedsToPopup(popup,this.date);\n if (adjustPopupWidth) adjustPopupWidth(); // resize popup after filling with content\n }\n scrollToTiddlerPopup(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n\nfunction addModifiedsToPopup(popup,when)\n{\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n var mods = config.macros.calendar.modifieds[when.formatString("YYYY0MM0DD")];\n if (mods) {\n mods.sort();\n var e=createTiddlyElement(popup,"div",null,null,"changes:");\n for(var t=0; t<mods.length; t++) {\n var link=createTiddlyLink(popup,mods[t],false);\n link.appendChild(document.createTextNode(indent+mods[t]));\n }\n }\n}\n\nfunction addRemindersToPopup(popup,when)\n{\n if(window.findTiddlersWithReminders == null) return; // reminder plugin not installed\n var title = when.formatString(config.macros.calendar.tiddlerformat);\n var indent = String.fromCharCode(160)+String.fromCharCode(160);\n var e=createTiddlyElement(popup,"div",null,null,"reminders:");\n var reminders=findTiddlersWithReminders(when, [0,31],null,null);\n for(var t=0; t<reminders.length; t++) {\n link = createTiddlyLink(popup,reminders[t].tiddler,false);\n var diff=reminders[t].diff;\n diff=(!diff)?"Today":((diff==1)?"Tomorrow":diff+" days");\n var txt=reminders[t].params["title"]\n txt=(!txt)?reminders[t].matchedDate.formatString(config.macros.calendar.tiddlerformat):txt;\n link.appendChild(document.createTextNode(indent+diff+" - "+txt));\n }\n var link = createTiddlyLink(popup,indent+"new reminder...",true);\n link.title="add a reminder to '"+title+"'";\n link.onclick = function() {\n displayTiddler(null, title, 2, null, null, false, false);\n if(store.tiddlers[title])\n document.getElementById("editorBody" + title).value += "\sn";\n else\n document.getElementById("editorBody" + title).value = ""; // override default editor text\n document.getElementById("editorBody" + title).value\n += "<<reminder day:" + when.getDate()\n +" month:" + (when.getMonth()+1)\n +" year:" + (when.getYear()+1900)\n + " title: >>";\n };\n\n}\n// ELS ------------------------ END\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\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;\n if(first1 < 0) first1 = 6;\n var day1 = -first1 + 1;\n var first2 = (new Date(year, mon+1, 1)).getDay() -1;\n if(first2 < 0) first2 = 6;\n var day2 = -first2 + 1;\n var first3 = (new Date(year, mon+2, 1)).getDay() -1;\n if(first3 < 0) first3 = 6;\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\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;\n if(first1 < 0) first1 = 6;\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\nsetStylesheet("#popup { text-align:left; } .calendar, .calendar table, .calendar th, .calendar tr, .calendar td { font-size:10pt; text-align:center; } .calendar { margin:0px !important; }", "calendarStyles");\n/*\n}}}\n*/
A list of calls made or to be made can be placed here.
![[Celia Dolittle]]\n:tél. direct : 01 55 80 50 54\n*<<email cdolittle at bigco dot com?subject=[] - &body=Bonjour Celia, xxx Cordialement,Jacques Turbé>>\n<<<\nBigCo inc\n23, bd du Crime - 75021 Paris\ntél. : 01 76 54 32 19\nfax : 01 76 54 32 99\nwww.bigcompany.com\n<<<
//Chris doen't like curtains we bought for our toom, but would like curtains in her home too...//\n* ==Chat as we browse some home magazines...==\n* ==Choose where when to shop== HomeSweetOrama !!\n* Spend a morning with Chris at HomeSweetOrama and around\n* Design how her room will be : paper, curtains..\nSpend morning with Chris at HomeSweetOrama and around\n!!<<reminder day:15 title:"Spend morning with Chris at HomeSweetOrama and around" >>
!We settle a new collaborating process [[Karin]] agrees @@5w42@@\n~~//She deeply misses not attending IO meetings, too late and long for her constrainsts//~~\n* Informal face to face (congrats for her report, show high confidence in her, better know her expectations)\n* List below delegation ideas to better involve her\n!!^^MoreActions^^\n!!Opportunity to review our meetings organisation ?\n!!\n!!<<reminder day:14 title:"List delegation ideas to better involve her" >>\n''Notes''\n<<<\n!!!Karin's Jivaro report 8-23-05\nI hope the Comittee will find here ideas valuable enough for their decision next week.\n!!!Karin\n<<<\n!!!~~@@color:gray;-> [[GTD Project template]]@@~~
// //__Macros for toolbar button__\nconfig.macros.toolbarCloseOthers = {};\n\nconfig.views.wikified["toolbarCloseOthers"] = { text: "close others", tooltip: "Close other tiddlers"};\n\nconfig.macros.toolbarCloseOthers = {};\nconfig.macros.toolbarCloseOthers.handler = function(place,macroName,params)\n{\n lingo = config.views.wikified;\n createTiddlyButton(place,lingo.toolbarCloseOthers.text,lingo.toolbarCloseOthers.tooltip,onClickToolbarCloseOthers);\n}\n\n// //__Event handler for clicking on toolbar close others button__\nfunction onClickToolbarCloseOthers(e)\n{\n if (!e) var e = window.event;\n clearMessage();\n if(this.parentNode.id)\n closeAllBut(this.parentNode.id.substr(7));\n}\n\nfunction closeAllBut(keeptitle)\n{\n clearMessage();\n var place = document.getElementById("tiddlerDisplay");\n var tiddler = place.firstChild;\n var nextTiddler;\n while(tiddler)\n {\n nextTiddler = tiddler.nextSibling;\n if(tiddler.id)\n if(tiddler.id.substr(0,7) == "tiddler")\n {\n var title = tiddler.id.substr(7);\n if(title != keeptitle && !document.getElementById("editor" + title))\n place.removeChild(tiddler);\n }\n tiddler = nextTiddler;\n }\n}\n
// // __Macro for the toolbar button__ \nconfig.views.wikified.toolbarCollapse = {text: "collapse", tooltip: "Collapse this tiddler", toggleText: "expand", toggleTooltip: "Expand this tiddler"};\n\nconfig.macros.toolbarCollapse = {};\n\nconfig.macros.toolbarCollapse.handler = function(place,macroName,params)\n{\n lingo = config.views.wikified;\n createTiddlyButton(place,lingo.toolbarCollapse.text,lingo.toolbarCollapse.tooltip,onClickToolbarCollapse);\n}\n\n// //__Event handler on toolbar button press__\nfunction onClickToolbarCollapse(e)\n{\n if (!e) var e = window.event;\n title = this.parentNode.id.substr(7);\n if(title)\n {\n var viewerStatus = document.getElementById("viewer" + title).style.display\n var displayStyle;\n var buttonText;\n var buttonTooltip;\n var lingo = config.views\n lingo = lingo.wikified;\n if(viewerStatus == "none")\n {\n displayStyle = "block";\n buttonText = lingo.toolbarCollapse.text;\n buttonTooltip = lingo.toolbarCollapse.tooltip;\n }\n else\n {\n displayStyle = "none";\n buttonText = lingo.toolbarCollapse.toggleText;\n buttonTooltip = lingo.toolbarCollapse.toggleTooltip;\n }\n document.getElementById("viewer" + title).style.display = displayStyle; \n document.getElementById("footer" + title).style.display = displayStyle; \n this.innerHTML = buttonText;\n this.title = buttonTooltip;\n }\n}\n
// ---------------------------------------------------------------------------------\n// comma separated tags\nconfig.views.editor.tagPrompt = "Type tags above separated by commas, or";\nfunction uncommafyTags(tagsString) {\n // converts from "foo,bar,baz qux" to "[[foo]] [[bar]] [[baz qux]]"\n var trimmed = tagsString.trim();\n if (trimmed == "" || trimmed == null) {\n return "";\n }\n else {\n if (trimmed.substring(trimmed.length-1) == ",") {\n // remove trailing comma to be nice\n trimmed = trimmed.substring(0,trimmed.length-1);\n }\n var tagsArray = trimmed.split(",");\n var result = "";\n for (var i=0;i<tagsArray.length;i++) {\n // put square brackets on all of them because readBracketedList can handle it\n // don't want leading or trailing spaces\n result = result + (i==0?"":" ") + "[[" + tagsArray[i].trim() + "]]";\n }\n return result;\n }\n}\nfunction commafyTags(tagsString) {\n var tagsArray = tagsString.readBracketedList();\n return tagsArray.join(", ");\n}\nwindow.saveTiddler_orig_mptw_commatags = window.saveTiddler;\nwindow.saveTiddler = function(title)\n{\n // tweak the tags text in the tags input box after editing\n var tagsBox = document.getElementById("editorTags" + title);\n tagsBox.style.display = "none"; // otherwise you see it flash up briefly\n tagsBox.value = uncommafyTags(tagsBox.value);\n saveTiddler_orig_mptw_commatags(title);\n}\nwindow.createTiddlerEditor_orig_mptw_commatags = window.createTiddlerEditor;\nwindow.createTiddlerEditor = function(title)\n{\n // tweak the tags text in the tags input box before editing\n createTiddlerEditor_orig_mptw_commatags(title);\n var tagsBox = document.getElementById("editorTags" + title);\n tagsBox.value = commafyTags(tagsBox.value);\n}\n// Event handler for clicking on a tag in the 'add tag' popup\nwindow.onClickAddTagPopup = function(e) {\n // here we'll just replace the whole lot\n // hopefull this won't hurt too much during upgrades\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var tiddler = this.getAttribute("tiddler");\n var tag = this.getAttribute("tag");\n var tagsBox = document.getElementById("editorTags" + tiddler);\n //// mod\n if(tagsBox) {\n if (tagsBox.value.trim() == "") {\n tagsBox.value = tag;\n }\n else {\n tagsBox.value += ", " + tag;\n }\n }\n //// end mod\n //// replaced bit\n /*\n if(tagsBox)\n tagsBox.value += " " + String.encodeTiddlyLink(tag);\n */\n //// end replaced bit\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n
Votre acces privilegie a notre site \n!www.jm-bruneau.fr\n\nDonnees sont personnelles et confidentielles :\n!!------------------------------------------------------\n!!VOTRE COMPTE INTERNET\n!!Votre numero client est : DU6G54067\n!!Votre mot de passe est : I9IJ09SW\n!!------------------------------------------------------
window.saveTiddler_orig_mptw_confirmoverwrite = window.saveTiddler;\nwindow.saveTiddler = function(title) {\n var newTitle = document.getElementById("editorTitle" + title).value;\n if(newTitle != title && store.tiddlers[newTitle]) {\n var overwrite = confirm("A tiddler with that name already exists. Do you want to overwrite it?");\n if(!overwrite) {\n document.getElementById("editorTitle" + title).select();\n return;\n }\n }\n saveTiddler_orig_mptw_confirmoverwrite(title);\n}\n
<<list withTags Contacts>>
<<tabs txtContexts\n'In' 'List tiddlers entered in :InBox' [[:InBox]]\n"Off" "List tiddlers tagged with :MyOffice" [[:MyOffice]]\n"Call" "List tiddlers tagged with :Call" [[:Call]]\n"Mail" "List tiddlers tagged with :Mail" [[:Mail]]\nComp "List tiddlers tagged with :Computer" [[:Computer]]\n"Wfor" "List tiddlers tagged with :WaitingFor" [[:WaitingFor]]\n" »» " "More contexts" [[MoreContexts]]\n>>
!!<<reminder year:2005 month:11 day:15 title:"Payer xx1€">>
!!!Oct 11, 2005\n<<<\nDe: kalnel \nTo: Getting_Things_Done@yahoogroups.com\nObjet: [Getting_Things_Done] Aesthetics (was Re: handwritten tasks--an observation)\n\nYour comments [Daly] made me wonder if we could make a set of "@@''best practices''@@" for a great GTD system:\n<<<\n| !Low maintenance | !Low management | !Initially engaging | !Supports any other priorities |\n|The system needs to "maintain itself" to the greatest degree possible|You want to spend your time getting things done, not spoon-feeding a tedious system that gives you "something else to do."|Got to be interesting enough to capture your attention/imagination long enough for the GTD process -- not the system's demands -- to become part of your thinking.|Whether it's traveling, ADD, cost, or whatever, the system needs to work in tandem with other issues. |\n!!!kal\n!!<<reminder year:2005 month:10 day:29 title:"Review PimliPoche usage under those criteria" >>
<<gradient horiz #eeeeff ##ddcdef>>//~~Prospecting~~//\n<<list withTags :ThisWeek and Prospecting>>\n//~~Operations~~//\n<<list withTags :ThisWeek and Operations>>\n//~~Admin~~//\n<<list withTags :ThisWeek and Admin>>\n//~~Family~~//\n<<list withTags :ThisWeek and Family>>\n//~~Self~~//<<list withTags :ThisWeek and ( =Health= or Friends or PimliPoche or Self) >>\n<<email jacques.turbe at gmail dot com?subject=[TW] - Current Goals&body=Please, enter your comments, questions or suggestions. Thanks ;)>>~~ @@[[ • ]] [[?|Current Goals?]]@@
<<gradient vert #eeeeaa #ddbbfa #faeeff>>Why have a menu, always the same, because in computer softwares menus are hard coded ?\nTiddlyWiki allows you to have everything dynamic : so I put in my left panel menu what I have the most frequently to access in the current period.\n|Applying to this GTD ideas, I drop in it my//to work on, this week items//. I've labelled this "//where am I going ?//"panel : [[Current Goals]]. |\n<<<\nI update it when:\n* one of its items is completed (or differed, or dropped), \n* and at least at each Weekly Review.\n<<<
| !Journaux | !Listes | !Local | !Carnets Pro | !Google |\n|[[Le Monde Desk|http://abonnes.lemonde.fr/web/desk/0,26-3424,1-0,0.html]]|[[TiddlyWiki group|http://groups-beta.google.com/group/TiddlyWiki]]|[[TidliPo offline|file:///c:/_logs/2005/Tidlis/tidlipo.html]]|[[Formation|file:///c:/_logs/2005/_Formation/FormationsJacquesTurbe.html]]|[[Cherche textes|http://www.google.fr/]]|\n|[[Les Echos|http://www.lesechos.fr/]]|[[DavidCo|http://www.davidco.com/forum/]]|[[EN PimliPoche|file:///c:/_logs/2005/English%20TWs/EN-PimliPoche.html]]|[[Carnet ComTechs|http://avm.free.fr/bau.php]]|[[Images|http://www.google.fr/imghp?hl=fr&amp;tab=wi&amp;q=]]|\n|[[Page Favoris|file:///c:/_logs/2005/Favoris%20Jacques.html]]|[[EverNote|http://www.evernote.com/phpbb/index.php]]|[[FR PimliPoche|file:///c:/_logs/2005/Francais/FR-PimliPoche.html]]|[[CP cms|http://avm.free.fr/jt.php]]|[[Actualités|http://news.google.fr/nwshp?hl=fr&amp;gl=fr]]|\n|[[Le Nouvel Obs|http://www.pegros.net/scpt/nouvelobs.php]] |~|[[Jacques's english tidlies|file:///c:/_logs/2005/English%20TWs/_jet.html]] |~|[[News US|http://news.google.com/nwshp?hl=en&amp;gl=us]] |\n|[[Hebdo|http://www.nouvelobs.com/index2.html]] |~|[[PimlPoche 2.36|file:///c:/_logs/2005/Jim%20IT%20Notes/JIMS_PimliPo.html]]|~|[[Free News|http://www.freenews.fr/nat.html]] |\n| !Carnets Web |>| !Tiddly Wiki sites | !Détente |~|\n|[[TidliPo|http://avm.free.fr/tidlipo.html]]|[[TiddlyWiki|http://www.tiddlywiki.com]] |[[Eric|http://www.elsdesign.com/tiddlywiki/]] |[[TéléObs|http://telecineobs.nouvelobs.com/]]|~|\n|[[Jet|http://avm.free.fr/en/_jet.html]]|[[TiddlyWiki/Dev|http://www.tiddlywiki.com/dev/]]|[[Paul's Notepad|http://thepettersons.org/PaulsNotepad.html ]] |[[TVmag : maintenant|http://www.tvmag.com/jsp/prog/grilleUtil.jspx;jsessionid=F66A9BC7F3F01E083022426D212BAC49.frt5_1]]|~|\n|[[EN PimliPoche|http://avm.free.fr/en/EN-PimliPoche.html]]|[[Alan|http://www.personal.psu.edu/staff/a/c/ach12/tiddlywiki/extensions.htm]]|[[Steve YATWA|http://www.rumsby.org/yatwa/]]|[[Voilà soirée|http://tv.voila.fr/index.html?current_page=soir]]|~|\n|~|[[Clint|http://checketts.objectis.net/wiki/]] |[[SimonBaird's MonkeyPirate|http://homes.jcu.edu.au/~ccscb/mptw/]]|[[Le site cityvox|http://www.fra.cityvox.com/cinema_paris/Cinema]]|~|\n|~|[[skins|http://15black.bluedepot.com/#%5B%5BFavorite%20Styles%5D%5D]]|[[Calendrier|http://33ad.org/tools/gtdtwcal.php]]|[[Séances cinéphiles|http://www.seances.org/fr/actualite.asp]]|~|
!Have a selling cv on the net for new 2006 customers @@5w41@@\n~~//Devote at least one day worth a week//~~\n==Collect former handouts, proposals and asessments==\n** Gather testimonies to publish \n** Brainstorm readers possible needs, questions, doubts...\n* TW Draft for products/services\n* TW Draft for benefits and confidence\n* \n!!<<reminder year:2005 month:11 day:12 title:"Gather testimonies">>\n[[CV book|file:///c:/_logs/2005/Notebooks/CV2006.html]]
[[New PimliPoche Release]]
[[New Dump]]\n
version.extensions.displayAllTiddlers = {major: 0, minor: 1, revision: 0, date:new Date(2005,8,23)};\nconfig.macros.displayAllTiddlers= {label: "last tiddlers", prompt: "Display last updated tiddlers"};\n\nconfig.macros.displayAllTiddlers.handler = function(place,macroName,params)\n{\nvar displayAllTiddlersFunc = function () {\nvar limit=10;\nfor(var t=0; t<params.length; t++) {\ntype = params[t].split(":")[0].toLowerCase();\nif (type == "limit")\nlimit = parseInt(params[t].split(":")[1]);\nif (type == "lastfirst")\nlastfirst= true;\nelse\nlastfirst= false;\n}\nvar matches = store.search("",false,false,"modified","excludeSearch");\nvar j=0;\nvar arr = [];\nfor(var t=matches.length-1;t>=0&&j<limit; t--) {\nvar hash = {};\nhash["diff"] = matches[t].modified;\nhash["title"] = matches[t].title;\narr.pushUnique(hash);\nj=j+1;\n}\nif (lastfirst==true) {\nfor(var t=arr.length-1;t>=0; t--)\ndisplayTiddler(null, arr[t].title,0,null,false,false,false);\n} else {\nfor(var t=0;t<=arr.length; t++)\ndisplayTiddler(null, arr[t].title,0,null,false,false,false);\n}\n}\ncreateTiddlyButton(place,this.label,this.prompt,displayAllTiddlersFunc);\n}
<<tabs txtActions\nØ "Close tabs" Ø \n'InBox' 'List tiddlers entered in :InBox' [[:InBox]]\n'All NAs' 'Lists NAs and their projects by tickler order' [[ R ]]\n'This Week' 'List tiddlers entered in :ThisWeek' [[:ThisWeek]]\n"Today" "Display :Hotest tiddler" [[:Hotest]]\n"Office" "List tiddlers tagged with :MyOffice" [[:MyOffice]]\n"Call" "List tiddlers tagged with :Call" [[:Call]]\n"Mail" "List tiddlers tagged with :Mail" [[:Mail]]\nComputer "List tiddlers tagged with :Computer" [[:Computer]]\n"Waiting for" "List tiddlers tagged with :Waiting for" [[:Waiting for]]\n>>
<<gradient vert #aa6666 #cc8844>>PimliPoche is a TidlyWiki distribution.|\n\nBecause TiddlyWiki is a single HTML file, you've actually already downloaded the entire software just by viewing this site. You can ''Save Changes'' if you're using PimliPoche offline with FireFox, InternetExplorer or Safari. You can save your own blank PimliPoche to your local drive by right clicking on ''[[this link|empty.html]]'' and selecting //'Save link as...'// or //'Save target as...'//. You can choose where to save the file, and what to call it (but keep the .HTML extension).\n\nDo ''not'' use the File/Save command in your browser to save PimliPoche, because of [[SaveUnpredictabilities|http://www.tiddlywiki.com/#SaveUnpredictabilities]].\n\n<<reminder year:2005 month:10 day:29 title:"Revamp Welcome and Download" hidden>>
config.views.editor.toolbarDuplicate = {text: "duplicate", tooltip: "Duplicate this tiddler", suffix: "Copy"};\n\nconfig.macros.toolbarDuplicate = {};\n\nconfig.macros.toolbarDuplicate.handler = function(place,macroName,params)\n{\n lingo = config.views.editor;\n createTiddlyButton(place,lingo.toolbarDuplicate.text,lingo.toolbarDuplicate.tooltip,onClickToolbarDuplicate);\n}\n\nfunction onClickToolbarDuplicate()\n{\n clearMessage();\n var lingo = config.views\n lingo = lingo.editor;\n var thisSrc = document.getElementById(this.parentNode.id);\n var thisTiddler = this.parentNode.id.substr(7);\n var dupTitle = thisTiddler + lingo.toolbarDuplicate.suffix;\n var dupBody = document.getElementById("editorBody" + thisTiddler).value;\n var dupTags = document.getElementById("editorTags" + thisTiddler).value;\n displayTiddler(thisSrc,dupTitle,2,null,null,false);\n document.getElementById("editorBody" + dupTitle).value = dupBody;\n document.getElementById("editorTags" + dupTitle).value = dupTags;\n // If you want the original tiddler to close completely after you click 'duplicate,' then remove the slashes at the start of the next line\n //closeTiddler(thisTiddler,false);\n}\n
<<toolbarDone>><<toolbarCancel>><<toolbarClose>><<toolbarReferences>><<toolbarDelete>><<toolbarDuplicate>><<tag Tp>><<newTiddler>><<newJournal "yourTitle - DDD DD MMM YYYY hh:mm" Journal>> [[ ~ ]]
// //''Name:'' EmailLink\n// //''Version:'' <<getversion email>> (<<getversiondate email "DD MMM YYYY">>)\n// //''Author:'' AlanHecht\n// //''Type:'' [[Macro|Macros]]\n\n// //''Description:'' email lets you list a "email" address without displaying it as readable text. This helps prevent your email address from being harvested by search engines and other web crawlers that read your page's contents. Using email, you type in the words "at" and "dot" instead of the punctuation symbols and add spaces inbetween words to disguise your address. However, email will display your email address in a web browser so that humans can read it. And email turns the address into a hyperlink that can be clicked to send you an instant email.\n\n// //''Syntax:'' << {{{email yourname at yourdomain dot com "?optional parameters"}}} >>\n// //Example 1: <<email sample at nowhere dot com>> (standard)\n// //Example 2: <<email sample at nowhere dot com "?subject=Submission&body=Type your message here.">> (with optional parameters)\n\n// //''Directions:'' <<tiddler MacroDirections>>\n\n// //''Notes:'' You can use the optional email parameters to stipulate a subject or message body for the message. Most (not all) email clients will use this information to construct the email message.\n\n// //''Related Links:'' none\n\n// //''Revision History:''\n// // v0.1.0 (20 July 2005): initial release\n// // v0.1.1 (22 July 2005): renamed the macro from "mailto" to "email" to further thwart email harvesters.\n\n// //''Code section:''\nversion.extensions.email = {major: 0, minor: 1, revision: 1, date: new Date("Jul 22, 2005")};\nconfig.macros.email = {}\nconfig.macros.email.handler = function(place,macroName,params)\n{\nvar temp = params.join(" ");\ndata = temp.split("?");\nvar recipient = data[0];\nrecipient = recipient.replace(" at ","@").replace(" dot ",".");\nrecipient = recipient.replace(/\ss/g,"");\nvar optional = data[1] ? "?" + data[1] : "";\nvar theLink = createExternalLink(place,"ma"+"il"+"to:"+recipient+optional);\ntheLink.appendChild(document.createTextNode(recipient))\n}\n
!PEPS seminar @@~5w43@@\n!!''Eurocopter dates: november 7- 9, 2005.''\n<<reminder month:10 day:27 title:"Custom flight order">>\n<<<\n!!!Tuesday, oct 3 2005\nWe'll post your mis sion order next week.\n \nSincerely,\n<<<\n!!![[Celia Dolittle]]
// //''Name:'' FAQ List\n// //''Version:'' <<getversion faqlist>> (<<getversiondate faqlist "DD MMM YYYY">>)\n// //''Author:'' AlanHecht\n// //''Type:'' [[Macro|Macros]]\n\n// //''Syntax:'' << {{{ faqlist mode source sortBy hrSeparator }}} >>\n\n// // ''faqlist:'' the macro call (required)\n// // ''mode:'' either "byTag" or "byTitle" (required)\n// // ''source:'' the associated tag or tiddler title (required)\n// // ''sortBy:'' if byTag, sort can be "title," "modifier," "modified." If byTitle, sort can be "question" and will reorder the questions in alphabetical order. (this parameter is optional; use "null" if you don't want a sort order, but want to use "hr" as the last paramter)\n// // ''hrSeparator:'' if "hr" is included at the end of the call string, each question/answer set will be separated by a horizontal rule.\n\n// //Examples: (edit these two tiddlers to see the syntax used for each)\n// // • [[FAQ Method One]]\n// // • [[FAQ Method Two]]\n\n// //''Notes:'' If you choose to use byTitle mode where the entire set of questions/answers comes from a single tiddler, the syntax for the tiddler content is as follows:\n// // • Each question must be a single line (i.e. no hard returns) but can wrap as needed\n// // • The answer to a question begins on the next line after the question and can be as long as needed. It can also include hard returns as part of the answer text, but it cannot include empty lines (i.e. an empty line is the result of pressing enter twice).\n// // • Each question/answer set must be seperated by two hard returns (i.e. must have a single, blank line between them.\n// // Refer to [[FAQ Tiddler Sample]] for an example.\n\n// //''Known Issues:'' If a user clicks too quickly to toggle a FAQ entry on/off, they will go into tiddler edit mode. This should be corrected in the future by allowing web-hosted versions of the faq to disable double-clicking.\n\n// // v0.1.1 (04 August 2005): Fixed an endless loop bug (thanks to Kevin Kleinfelter).\n\n// //''Code section:''\nversion.extensions.faqlist = {major: 0, minor: 1, revision: 1, date: new Date(2005,08,04)};\nconfig.macros.faqlist = {\n bulletCollapse: ">",\n bulletExpand: "•",\n expandButton: {title: "+", tooltip: "Open all items for reading"},\n collapseButton: {title: "—", tooltip: "Close all items"}\n};\nconfig.macros.faqlist.handler = function(place,macroName,params)\n{\n lingo = config.macros.faqlist;\n var mode = params[0].toLowerCase();\n var list = [];\n switch(mode)\n {\n case "bytag":\n var tagged = store.getTaggedTiddlers(params[1], params[2]);\n for(t=0; t<tagged.length; t++)\n {\n var title = tagged[t].title;\n list[t] = [title,store.getTiddlerText(title)];\n }\n var subTitle = store.tiddlers[title].getSubtitle();\n break;\n case "bytitle":\n var faqText = store.getTiddlerText(params[1]);\n var faqItems = faqText.split("\sn\sn");\n if(params[2] == "question")\n faqItems.sort();\n for(t=0; t<faqItems.length; t++)\n {\n list[t] = [faqItems[t].substring(0,faqItems[t].indexOf("\sn")),faqItems[t].substring(faqItems[t].indexOf("\sn")+1)];\n }\n var subTitle = null;\n break;\n }\n \n var faqHeading = place.appendChild(document.createElement("span"));\n faqHeading.appendChild(createTiddlyButton(faqHeading,lingo.expandButton.title,lingo.expandButton.tooltip,faqExpandAll));\n faqHeading.appendChild(createTiddlyButton(faqHeading,lingo.collapseButton.title,lingo.collapseButton.tooltip,faqCollapseAll));\n faqHeading.appendChild(document.createElement("p"));\n var faqBody = place.appendChild(document.createElement("span"));\n for(var t=0; t<list.length; t++)\n {\n var title = list[t][0];\n\n var content = "<<<\sn" + list[t][1] + "\sn<<<";\n var theClass = "tiddlyLinkExisting tiddlyLink";\n var itemHeading = faqBody.appendChild(document.createElement("span"));\n itemHeading.appendChild(document.createTextNode(config.macros.faqlist.bulletCollapse + " "));\n createTiddlyButton(itemHeading,title,subTitle,faqToggleThis,theClass);\n var itemBody = faqBody.appendChild(document.createElement("span"));\n itemBody.style.display = "none";\n itemBody.className = "itemBody";\n wikify(content,itemBody,null,null);\n faqBody.appendChild(itemBody);\n faqBody.appendChild(document.createElement("p"));\n if(params[3] == "hr")\n faqBody.appendChild(document.createElement("hr"));\n }\n}\n\nfunction faqToggleThis(e)\n{\n var content = this.parentNode.nextSibling;\n var shown = content.style.display;\n if(shown == "none")\n {\n content.style.display = "inline";\n this.previousSibling.nodeValue = config.macros.faqlist.bulletExpand + " ";\n }\n else\n {\n content.style.display = "none";\n this.previousSibling.nodeValue = config.macros.faqlist.bulletCollapse + " ";\n }\n}\n\nfunction faqExpandAll()\n{\n for(t=0; t<this.parentNode.nextSibling.childNodes.length; t++)\n {\n item = this.parentNode.nextSibling.childNodes[t];\n if(item.className == "itemBody")\n {\n item.style.display = "inline";\n item.previousSibling.childNodes[0].nodeValue = config.macros.faqlist.bulletExpand + " ";\n }\n }\n}\n\nfunction faqCollapseAll()\n{\n for(t=0; t<this.parentNode.nextSibling.childNodes.length; t++)\n {\n item = this.parentNode.nextSibling.childNodes[t];\n if(item.className == "itemBody")\n {\n item.style.display = "none";\n item.previousSibling.childNodes[0].nodeValue = config.macros.faqlist.bulletCollapse + " ";\n }\n }\n}\n
// Display a tiddler with animation and scrolling, as though a link to it has been clicked on\n// src = source element object (eg link) for animation effects and positioning\n// title = title of tiddler to display\n// state = 0 is default or current state, 1 is read only and 2 is edittable\n// highlightText = text to highlight in the displayed tiddler\n// highlightCaseSensitive = flag for whether the highlight text is case sensitive\nfunction displayTiddler(src,title,state,highlightText,highlightCaseSensitive,animate,slowly)\n{\n var place = document.getElementById("tiddlerDisplay");\n var after = findContainingTiddler(src); // Which tiddler this one will be positioned after\n var before;\n if(after == null)\n before = place.firstChild;\n else if(after.nextSibling)\n before = after.nextSibling;\n else\n before = null;\n var theTiddler = createTiddler(place,before,title,state,highlightText,highlightCaseSensitive);\n if(src)\n {\n if(config.options.chkAnimate && (animate == undefined || animate == true))\n anim.startAnimating(new Zoomer(title,src,theTiddler,slowly),new Scroller(theTiddler,slowly));\n else\n window.scrollTo(0,ensureVisible(theTiddler));\n Fat.fade_element(theTiddler.id);\n }\n}\n\n// ---------------------------------------------------------------------------------\n// @name The Fade Anything Technique\n// @namespace http://www.axentric.com/aside/fat/\n// http://www.axentric.com/posts/default/7\n// @version 1.0-RC1\n// @author Adam Michela\n// ---------------------------------------------------------------------------------\n\nvar Fat = {\n make_hex : function (r,g,b) \n {\n r = r.toString(16); if (r.length == 1) r = '0' + r;\n g = g.toString(16); if (g.length == 1) g = '0' + g;\n b = b.toString(16); if (b.length == 1) b = '0' + b;\n return "#" + r + g + b;\n },\n\n fade_element : function (id, fps, duration, from, to) \n {\n if (!fps) fps = 30;\n if (!duration) duration = 600;\n// if (!from || from=="#") from = "#FFFF66"; // Yellow\n if (!from || from=="#") from = "#97CED5"; // Light Green\n \n if (!to) to = this.get_bgcolor(id);\n \n var frames = Math.round(fps * (duration / 1000));\n var interval = duration / frames;\n var delay = interval;\n var frame = 0;\n \n if (from.length < 7) from += from.substr(1,3);\n if (to.length < 7) to += to.substr(1,3);\n \n var rf = parseInt(from.substr(1,2),16);\n var gf = parseInt(from.substr(3,2),16);\n var bf = parseInt(from.substr(5,2),16);\n var rt = parseInt(to.substr(1,2),16);\n var gt = parseInt(to.substr(3,2),16);\n var bt = parseInt(to.substr(5,2),16);\n \n var r,g,b,h;\n while (frame < frames)\n {\n r = Math.floor(rf * ((frames-frame)/frames) + rt * (frame/frames));\n g = Math.floor(gf * ((frames-frame)/frames) + gt * (frame/frames));\n b = Math.floor(bf * ((frames-frame)/frames) + bt * (frame/frames));\n h = this.make_hex(r,g,b);\n \n setTimeout("Fat.set_bgcolor('"+id+"','"+h+"')", delay);\n\n frame++;\n delay = interval * frame; \n }\n setTimeout("Fat.set_bgcolor('"+id+"','"+to+"')", delay);\n },\n set_bgcolor : function (id, c)\n {\n var o = document.getElementById(id);\n o.style.backgroundColor = c;\n },\n get_bgcolor : function (id)\n {\n var o = document.getElementById(id);\n while(o)\n {\n var c;\n if (window.getComputedStyle) c = window.getComputedStyle(o,null).getPropertyValue("background-color");\n if (o.currentStyle) c = o.currentStyle.backgroundColor;\n if ((c != "" && c != "transparent") || o.tagName == "BODY") { break; }\n o = o.parentNode;\n }\n if (c == undefined || c == "" || c == "transparent") c = "#FFFFFF";\n var rgb = c.match(/rgb\ss*\s(\ss*(\sd{1,3})\ss*,\ss*(\sd{1,3})\ss*,\ss*(\sd{1,3})\ss*\s)/);\n if (rgb) c = this.make_hex(parseInt(rgb[1]),parseInt(rgb[2]),parseInt(rgb[3]));\n return c;\n }\n}\n
[[Christine's new room]]\n[[End of year Kenya]]
[ ] Check 2006 calendar\n:TVS :\n>3 seminars this year asked by Celia\n:Eurocopter :\n>Seminar november full : propose a duplicate \n!!<<reminder year:2005 month:10 Day:28 title:"Check 2006 calendar" >>
window.createTiddlerEditor_orig_mptw_focustweak = window.createTiddlerEditor;\nwindow.createTiddlerEditor = function(title)\n{\n // open the window\n createTiddlerEditor_orig_mptw_focustweak(title);\n // get the input boxes\n var theTitleBox = document.getElementById("editorTitle" + title);\n var theBodyBox = document.getElementById("editorBody" + title);\n // tweak the focus\n if (title == 'New Dump') {\n theTitleBox.focus();\n theTitleBox.select();\n }\n else if (theBodyBox.value == config.views.editor.defaultText.format([title]) ||\n theBodyBox.value == config.views.editor.defaultText.format(["New Dump"])) {\n theBodyBox.focus();\n theBodyBox.select();\n }\n else {\n theBodyBox.focus();\n }\n}\n
Like most wikis, TiddlyWiki supports a range of simplified character formatting:\n| !To get | !Type this |h\n| ''Bold'' | {{{''Bold''}}} |\n| ==Strikethrough== | {{{==Strikethrough==}}} |\n| __Underline__ | {{{__Underline__}}} (that's two underline characters) |\n| //Italic// | {{{//Italic//}}} |\n| Superscript: 2^^3^^=8 | {{{2^^3^^=8}}} |\n| Subscript: a~~ij~~ = -a~~ji~~ | {{{a~~ij~~ = -a~~ji~~}}} |\n| @@highlight@@ | {{{@@highlight@@}}} |\n<<<\nThe highlight can also accept CSS syntax to directly style the text:\n@@color:green;green coloured@@\n@@background-color:#ff0000;color:#ffffff;red coloured@@\n@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;border:1px solid black;Access any CSS style@@\n<<<\n\n//For backwards compatibility, the following highlight syntax is also accepted://\n{{{\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@\n}}}\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@
//Thanks to Roman Porotnikov\n//http://www.jroller.com/page/deep/20030701\n\n//NB this systemConfig needs to be evaluated before other ones \n//that use the Aspects so the name starts with "."\n//since they're loaded alphabetically\n//should really put it into the main source code, but\n//wanted to keep everything upgrade-proof\n\nAspects = new Object();\n\nAspects.addBefore = function(obj, fname, before) {\n var oldFunc = obj[fname];\n obj[fname] = function() {\n return oldFunc.apply(this, before(arguments, oldFunc, this));\n };\n};\n\nAspects.addAfter = function(obj, fname, after) {\n var oldFunc = obj[fname];\n obj[fname] = function() {\n return after(oldFunc.apply(this, arguments), arguments, oldFunc, this);\n };\n};\n\nAspects.addAround = function(obj, fname, around) {\n var oldFunc = obj[fname];\n obj[fname] = function() {\n return around(arguments, oldFunc, this);\n };\n};
| Outcome still to define |\n\n!!<<reminder month:10 day:22 year:2005 title:"Review their doc to draft a SWOT" >>
!Getting Things Done
!Good practices and easy tips for Getting Things Done\n\n!!<<reminder year:2005 month:10 day:31 title:"Organise GTD stuff" >>
See [[Example|Clarify uncertainties with Karin]]\n\n!successfullOutcome @@firstWeekToReviewThisProject@@\n~~//toConsiderWhenThinkingAboutActions//~~\n** action\n** action\n* notToForget\n* \n* \n!!<<reminder year:2005 month:10 day:31 title:"dragHereActionToDoFirst" >>\n''Notes''\n<<<\n!!!eventWithDate\nclipOrWrite\n!!!source\n<<<\n^^ :Project ^^\n\n
config.macros.getversion = {}\nconfig.macros.getversion.handler = function(place,macroName,params)\n{\nvar versionData = version.extensions[params].major + "." + version.extensions[params].minor + "." + version.extensions[params].revision;\ncreateTiddlyElement(place,"span",null,null,versionData);\n}\n\nconfig.macros.getversiondate = {}\nconfig.macros.getversiondate.handler = function(place,macroName,params)\n{\nvar versionDate = version.extensions[params[0]].date.formatString(params[1].trim());\ncreateTiddlyElement(place,"span",null,null,versionDate);\n}\n
| !Links to GTD pages |[[Ian's Messy Desk (GTD)|http://www.ismckenzie.com/index.php/archives/category/getting-things-done]] |[[Organizational Euphoria|http://higherproductivity.com/euphoria/index.php?cat=6]] |\n|~|[[Jacques english tiddlers|http://avm.free.fr/en/_jet.html]] |[[PigPog|http://pigpog.com/blog/tag/productivity/gtd/]] |\n|[[43 Folders|http://www.43folders.com]] |[[Jeff Sandquist (GTD &amp; email)|http://www.jeffsandquist.com/PermaLink,guid,dc140887-2288-4b0b-943e-c919fcef669a.aspx]] |[[Punkey - What's the Next Action|http://www.punkey.com/gtd/]] |\n|[[All About: GTD|http://creative-mobs.com/portal/tag/gtd]] |[[Jeff Sandquist|http://wiki.jeffsandquist.com/default.aspx/GTD/HomePage.html]] |[[Rousette|http://www.rousette.org.uk/projects/]] |\n|[[Arranger Palm Software|http://www.olivebr.com/arranger/arranger.zip]] |[[Life Balance|http://www.llamagraphics.com/]] |[[Shadow Plan|http://www.codejedi.com/]] |\n|[[Big Nosed Ugly Guy (Task Management and Personal Productivity)|http://www.bignoseduglyguy.com/bnugwiki/TaskManagementAndPersonalProductivity]] |[[Lifehack.org</font>|http://www.lifehack.org/"><font color="#ffff00]] |[[Steve Lawson (GTD)|http://www.coloradocollege.edu/library/Instruction/gtd.html]] |\n|[[Coach's Corner|http://www.davidco.com/coaches_corner.php]] |[[Lunch and Learn (GTD)|http://www.coloradocollege.edu/library/Instruction/gtd.html]] |[[TaskTask|http://nextactioncards.blogspot.com]] |\n|[[en PimliPoche • Current Goals, Hotest now, First actions, Reference data, Routines, Interests and Lists|http://avm.free.fr/en/EN-PimliPoche.html]] |[[M Vance (Getting Things Done)|http://www.minezone.org/wiki/MVance/GettingThingsDone]] |[[Technorati|http://www.technorati.com/tag/gtd]] |\n|[[eProductivity Template for Lotus Notes|http://www.ica.com/web/eprodtvy.nsf/pages/lotusnotesintro]] |[[Marc's Outlook on Productivity|http://blogs.officezealot.com/marc/]] |[[TiddlyWiki a reusable non-linear personal web notebook|http://www.tiddlywiki.com/]] |\n|[[Excel Personal Dashboard|http://www.bellc.com/productivity_management.html]] |[[MarkTaw.Com (GTD)|http://www.marktaw.com/blog/GettingThingsDone.html]] |[[To-Done!|http://www.to-done.com/]] |\n|[[Getting Things Done - David Allen Co. Website|http://www.davidco.com/]] |[[Michael Hyatt (GTD)|http://www.michaelhyatt.com/workingsmart/getting_things_done/index.html]] |[[Workflow Summary|http://www.davidco.com/pdfs/gtd_workflow_advanced.pdf]] |\n|[[Getting Things Done, The Broad View|http://law4pda.org/wp/]] |[[Nibbles and Bits|http://www.hal-pc.org/journal/may02/Column/nibbles/nibbles.html]] |[[Yahoo - Getting_Things_Done|http://finance.groups.yahoo.com/group/Getting_Things_Done/]] |\n|[[Google - 43 Folders|http://groups-beta.google.com/group/43Folders/]] |[[Note Studio|http://www.dogmelon.com.au/ns/GTD_google.shtml]] |[[Yahoo - GTD_Palm|http://groups.yahoo.com/group/GtD_Palm/]] |\n|[[GTD Outlook Add-In|http://www.davidco.com/productDetail.php?id=63]] |[[Office Zealot|http://www.officezealot.com/gtd/]] |[[Yahoo - GTD_PPC|http://groups.yahoo.com/group/GTD_PPC/]] |\n|[[GTD with GMail Whitepaper|http://saw.themurdaughs.com/gtd%20with%20gmail.pdf]] |[[Open Loops|http://hwebbjr.typepad.com/openloops/]] |[[Yahoo - Ready4Anything|http://finance.groups.yahoo.com/group/Ready4Anything/]] |\n\n\n\n\n!!<<reminder year:2005 month:10 day:31 title:"nextAction" >>
|Gmail Shortcuts|c\n|!Shortcut Key |!Definition |!Action |\n|c |Compose |Allows you to compose a new message. <Shift> + c allows you to compose a message in a new window. |\n|/ |Search |Puts your cursor in the search box. |\n|k |Move to newer conversation |Opens or moves your cursor to a more recent conversation. You can hit <Enter> to expand a conversation. |\n|j |Move to older conversation |Opens or moves your cursor to the next oldest conversation. You can hit <Enter> to expand a conversation. |\n|n |Next message |Moves your cursor to the next message. You can hit <Enter> to expand or collapse a message. (Only applicable in 'Conversation View.') |\n|p |Previous message |Moves your cursor to the previous message. You can hit <Enter> to expand or collapse a message. (Only applicable in 'Conversation View.') |\n|o or <Enter> |Open |Opens your conversation. Also expands or collapses a message if you are in 'Conversation View.' |\n|u |Return to conversation list |Refreshes your page and returns you to the inbox, or list of conversations. |\n|y |Archive* ^^Remove from current view^^ |Automatically removes the message or conversation from your current view. |\n|~|~|• From 'Inbox,' 'y' means Archive |\n|~|~|• From 'Starred,' 'y' means Unstar |\n|~|~|• From 'Trash,' 'y' means move to 'Inbox' |\n|~|~|• From any label, 'y' means Remove the label |\n|~|~|'y' has no effect if you're in 'Spam,' 'Sent' or 'All Mail.' |\n|x |Select conversation |Automatically checks and selects a conversation so that you can archive, apply a label, or choose an action from the drop-down menu to apply to that conversation. |\n|s |Star a message or conversation |Adds or removes a star to a message or conversation. Stars allow you to give a message or conversation a special status. |\n|////! |Report spam |Marks a message as spam and removes it from your conversation list. |\n|r |Reply |Reply to the message sender. <Shift> + r allows you to reply to a message in a new window. (Only applicable in 'Conversation View.') |\n|a |Reply all |Reply to all message recipients. <Shift> +a allows you to reply to all message recipients in a new window. (Only applicable in 'Conversation View.') |\n|f |Forward |Forward a message. <Shift> + f allows you to forward a message in a new window. (Only applicable in 'Conversation View.') |\n|<Esc> |Escape from input field |Removes the cursor from your current input field. |\nCombo-keys - Use the following combinations of keys to navigate through Gmail. \n|!Shortcut Key |!Definition |!Action |\n|<tab> then <Enter> |Send message |After composing your message, use this combination to send it automatically. (Supported only in Internet Explorer.) |\n|y then o |Archive and next |Archive your conversation and move to the next one. |\n|g then a |Go to 'All Mail' |Takes you to 'All Mail,' the storage site for all mail you've ever sent or received (and have not deleted). |\n|g then s |Go to 'Starred' |Takes you to all conversations you have starred. |\n|g then c |Go to 'Contacts' |Takes you to your Contacts list. |\n|g then d |Go to 'Drafts' |Takes you to all drafts you have saved. |\n|g then i |Go to 'Inbox' |Returns you to the inbox. |\n\n\n!!!<<reminder year:2006 month:1 day:2 title:"Keep this (rather a link!) ?" >>
!!<<reminder month:10 day:21 title:"emails participants">>\n<<<\nLa prochaine session de Bouygues approche (21 au 23 octobre) et je souhaite envoyer les questionnaires.\n:on envoie le document Word (Talents et Risques + Situations cible) \n:L'envoi des toutes dernières versions des documents ne ferait pas de mal je pense.*\n\n01 55 80 50 56 \ng-Dwater@bigcompany.com\n!!!Greg Dwater\n!!!Project Manager\n<<<\n
!!''Greg Dwater''\n!!//Project Manager//\n!!01 55 80 50 56\n!!!g-Dwater@bigcompany.com\n----\n!!!A Maria Cheemney 26 8 05\n<<<\nNous organisons le mois prochain une nouvelle session de la formation de Jacques Turbé "Project Management Training", du 21 au 23 novembre.\nPouvez-vous s'il vous plaît nous adresser la liste des participants de votre entreprise, ainsi que leurs emails afin que l'on puisse leur envoyer le questionnaire préalable ?\n<<<\n[[TT7 Attendees list]]\n----
<<list withTags Help>>
<<list withTags PimliPoche>>\n<<reminder year:2005 month:10 day:31 title:"Revamp help" hidden>>
!Agree on changes for 2006 New Managers @@5w44@@\n!!<<reminder year:2005 day:19 title:"Meeting with Eve" >>\n*[[Hexagon debrief]]
:AdvancedOptions\n:MainMenu\n:OptionsPanel\n:SideBarOptions\n:SideBarTabs\n:StyleSheet\n:TabAll\n:TabMore\n:TabMoreMissing\n:TabMoreOrphans \n:TabTags\n:TabTimeline\n:TaskHelp\n*[[Help]]\n*[[Tools]]\n
When many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. This function is also very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\n''Usage:''\n<<<\nThe ''import tiddlers'' sidebar menu lets you combine tiddlers from any two TiddlyWiki documents. When selected, a control panel is displayed consisting of an "import source document" filename input (text field plus a ''[Browse...]'' button), a listbox of available tiddlers, a "differences only" checkbox, an "add tags" input field and four push buttons: ''[open]'', ''[select all]'', ''[import]'' and ''[close]''.\n\nPress ''[browse]'' to select a TiddlyWiki document file to import. You can also type in the path/filename (or URL) of the document you want to import and press ''[open]''. //Note: there is a 1-second delay built in to the import function to allow the browser some time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//\n\nSelect one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.\n\n''Differences Only:''\n\nThe "differences only" checkbox allows you to filter the list so that you only see tiddlers that either A) don't exist in the current document, or B) have a different date/time stamp (indicating that the tiddler has been changed in some way). This makes it very quick and easy to find and import just the updated tiddlers you are interested in.\n\n''Import Tagging:''\n\nTiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the "add tags" input field, and then //added// to the existing tags for each tiddler as it is imported.\n\n''Skip, Rename, Merge, or Replace:''\n\nWhen importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.\n\nTo bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.\n\n//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//\n<<<\n''Import Report History'':\n<<<\nWhenever tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.\n\nWhen the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.\n\nIf a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.\n<<<\n''Installation:''\n<<<\ncopy/paste the following tiddlers into your document:\n''ImportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n^^javascript for ImportTiddlers handling^^\n''ImportTiddlersHelp''\n^^end-user documentation for this plugin^^\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < ImportTiddlers > >" macro^^\n\n''Quick Installation Tip #1:''\nIf you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportTiddlers.html]]''), and then simply import all your content from your old document into this new, empty document.\n\n''Quick Installation Tip #2:''\nIf you are developing a TiddlyWiki custom code adaptation, you may want to copy/paste the plugin tiddlers directly into the 'storeArea' of your document's source code. To simplify this process, here's a file containing just the storeArea DIV's for the tiddlers you need to install: ''[[import.html|import.html]]''\n\n''Obsolete tiddlers:''\n//Note: ''The ImportTiddlersPanel and ImportTiddlersStyleSheet 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 CSS and HTML definitions into plugin code instead of using separate tiddlers\n''2005.07.27 [1.0.2]''\ncore update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()\n''2005.07.23 [1.0.1]''\nadded parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]''\nInitial Release\n<<<\n''Credits:''\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n
// // ''[[Import Tiddlers Plugin|http://www.elsdesign.com/tiddlywiki/#ImportTiddlersPlugin]] for TiddlyWiki version 1.2.25 or above''\n// // ''Eric Shulman - ELS Design Studios''\n\n/*\n{{{\n*/\n// define macro "importTiddlers" to render controls\nversion.extensions.importTiddlers = {major: 1, minor: 0, revision: 3, date: new Date(2005,9,28)};\nconfig.macros.importTiddlers = {\n label: "import tiddlers", prompt: "Copy selected tiddlers from another document"\n};\n\nconfig.macros.importTiddlers.css = '\s\n#importPanel {\s\n display: none;\s\n background-color: #eeeeaa;\s\n position:absolute; z-index:11; width:25em; left:28em; top:3em;\s\n padding: 0.5em; margin:0em;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n -moz-border-radius:1em;\s\n font-size: 7pt;\s\n}\s\n#importPanel input { width: 100%; margin: 1px; font-size:8pt; }\s\n#importPanel select { width: 100%; margin: 1px; font-size:8pt; }\s\n#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\s\n#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; }\s\n#importAskPanel { display:none; margin:0.5em 0em 0em 0em; }\s\n';\n\nconfig.macros.importTiddlers.html = '\s\n<div id="importPanel">\s\nimport from source document:\s\n<input type="file" id="fileImportSource" size=31\s\n onKeyUp="window.importSource=this.value"\s\n onChange="window.importSource=this.value; onClickImportButton(this)">\s\n<span style="float:left; padding:1px; white-space:nowrap">\s\n <input type=checkbox id="chkImportDiffsOnly" checked style="height:1em; width:auto"\s\n onClick="window.importDiffsOnly=this.checked; refreshImportList();">show differences only\s\n</span>\s\n<span style="float:right; padding:1px; white-space:nowrap">\s\n <a href="JavaScript:;" id="importSmaller" class="importListButton"\s\n onclick="onClickImportButton(this)" title="reduce list size">&#150;</a>\s\n <a href="JavaScript:;" id="importLarger" class="importListButton"\s\n onclick="onClickImportButton(this)" title="increase list size">+</a>\s\n <a href="JavaScript:;" id="importMaximize" class="importListButton"\s\n onclick="onClickImportButton(this)" title="maximize/restore list size">=</a>\s\n</span>\s\n<select id="importList" size=1 multiple\s\n onchange="setTimeout(\s'refreshImportList(\s'+this.selectedIndex+\s')\s',1)">\s\n <!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\s\n</select>\s\nadd tags:\s\n<input type=text id="txtImportTags" size=15 onKeyUp="window.importTags=this.value" autocomplete=off>\s\n<div align=center>\s\n <input type=button id="importOpen" class="importButton" style="width:23%" value="open"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importSelectAll" class="importButton" style="width:23%" value="select all"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importStart" class="importButton" style="width:23%" value="import"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importClose" class="importButton" style="width:23%" value="close"\s\n onclick="onClickImportButton(this)">\s\n</div>\s\n<div id="importAskPanel">\s\n tiddler already exists:\s\n <input type=text id="importNewTitle" size=15 autocomplete=off">\s\n <div align=center>\s\n <input type=button id="importSkip" class="importButton" style="width:23%" value="skip"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importRename" class="importButton" style="width:23%" value="rename"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importMerge" class="importButton" style="width:23%" value="merge"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importReplace" class="importButton" style="width:23%" value="replace"\s\n onclick="onClickImportButton(this)">\s\n </div>\s\n</div>\s\n</div>\s\n<!-- hidden frame for remote page load -->\s\n<span style="position:absolute; display:none;">\s\n<iframe name="importFrame" id="importFrame" src="" height=0 width=0></iframe>\s\n</span>\s\n';\n\nconfig.macros.importTiddlers.handler = function(place,macroName,params) {\n createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);\n setStylesheet(config.macros.importTiddlers.css,"importTiddlers");\n var newspan=createTiddlyElement(place,"span",null,null,null)\n newspan.innerHTML=config.macros.importTiddlers.html;\n store.addNotification(null,refreshImportList); // refresh listbox after every tiddler change\n}\n\n// IE needs explicit global scoping for functions/vars called from browser events\nwindow.refreshImportList=refreshImportList;\nwindow.onClickImportButton=onClickImportButton;\nwindow.getImportedTiddlers=getImportedTiddlers;\nwindow.importSource=""; // path/filename or URL of document to import\nwindow.importedTiddlers; // hash-indexed array of tiddlers from other document\nwindow.importTags=""; // text of tags added to imported tiddlers\n\nwindow.importListSize=10; // # of lines to show in imported tiddler list\nwindow.importDiffsOnly=true; // show differences option (toggle)\nwindow.importIndex=0; // current processing index in import list\n\n// Import menu item (show/hide import panel)\nfunction onClickImportMenu(e)\n{\n if (!e) var e = window.event;\n var thePanel = document.getElementById("importPanel");\n if (thePanel==undefined) return;\n var isOpen = thePanel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(thePanel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n thePanel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n\nfunction onClickImportButton(which)\n{\n // DEBUG alert(which.id);\n var theList = document.getElementById('importList');\n if (!theList) return;\n var thePanel = document.getElementById('importPanel');\n var theAskPanel = document.getElementById('importAskPanel');\n var theNewTitle = document.getElementById('importNewTitle');\n switch (which.id)\n {\n case 'fileImportSource':\n case 'importOpen': // load import source into hidden frame\n importReport(); // if an import was in progress, generate a report\n window.importedTiddlers=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n if (window.importSource=="") break;\n try\n {\n // Load document into hidden iframe so we can read it's DOM\n // set timeout for 1 second and return to browser processing, so it has\n // some time to finish loading the document before we try to read the storeArea\n var url=window.importSource;\n if (url.charAt(1)==":") url="file://"+url; // fixup pc local filename\n window.frames['importFrame'].location.href=url;\n setTimeout('getImportedTiddlers()',1000);\n }\n catch(e)\n {\n clearMessage();\n displayMessage("Error opening "+window.importSource+": " + ((e.message)?e.message:e));\n }\n break;\n case 'importSelectAll': // select all tiddler list items (i.e., not headings)\n importReport(); // if an import was in progress, generate a report\n for (var t = 0; t < theList.options.length; t++)\n theList.options[t].selected=(theList.options[t].value!="");\n break;\n case 'importStart': // initiate the import processing\n importReport(); // if an import was in progress, generate a report\n window.importIndex=0;\n window.importIndex=importTiddlers(0);\n importStopped();\n break;\n case 'importClose': // unload imported tiddlers or hide the import control panel\n // if imported tiddlers not loaded, close the import control panel\n if (!window.importedTiddlers) { thePanel.style.display='none'; break; }\n importReport(); // if an import was in progress, generate a report\n window.importedTiddlers=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n break;\n case 'importSkip': // don't import the tiddler\n var theItem = theList.options[window.importIndex];\n for (var j=0;j<window.importedTiddlers.length;j++)\n if (window.importedTiddlers[j].title==theItem.value) break;\n var theImported = window.importedTiddlers[j];\n theImported.status='skipped after asking'; // mark item as skipped\n theAskPanel.style.display='none';\n window.importIndex=importTiddlers(window.importIndex+1); // resume with NEXT item\n importStopped();\n break;\n case 'importRename': // change name of imported tiddler\n var theItem = theList.options[window.importIndex];\n for (var j=0;j<window.importedTiddlers.length;j++)\n if (window.importedTiddlers[j].title==theItem.value) break;\n var theImported = window.importedTiddlers[j];\n theImported.status = 'renamed from '+theImported.title; // mark item as renamed\n theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title\n theItem.value = theNewTitle.value; // change the listbox item text\n theItem.text = theNewTitle.value; // change the listbox item text\n theAskPanel.style.display='none';\n window.importIndex=importTiddlers(window.importIndex); // resume with THIS item\n importStopped();\n break;\n case 'importMerge': // join existing and imported tiddler content\n var theItem = theList.options[window.importIndex];\n for (var j=0;j<window.importedTiddlers.length;j++)\n if (window.importedTiddlers[j].title==theItem.value) break;\n var theImported = window.importedTiddlers[j];\n var theExisting = store.tiddlers[theItem.value];\n var theText = theExisting.text+'\sn----\sn^^merged from: [['+window.importSource+'#'+theItem.value+'|'+window.importSource+'#'+theItem.value+']]^^\sn^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\sn'+theImported.text;\n var theDate = new Date();\n var theTags = theExisting.getTags()+' '+theImported.getTags();\n theImported.set(null,theText,null,theDate,theTags);\n theImported.status = 'merged with '+theExisting.title; // mark item as merged\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY hh:mm:ss");\n theImported.status += ' by '+theExisting.modifier;\n theAskPanel.style.display='none';\n window.importIndex=importTiddlers(window.importIndex); // resume with this item\n importStopped();\n break;\n case 'importReplace': // substitute imported tiddler for existing tiddler\n var theItem = theList.options[window.importIndex];\n for (var j=0;j<window.importedTiddlers.length;j++)\n if (window.importedTiddlers[j].title==theItem.value) break;\n var theImported = window.importedTiddlers[j];\n var theExisting = store.tiddlers[theItem.value];\n theImported.status = 'replaces '+theExisting.title; // mark item for replace\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY hh:mm:ss");\n theImported.status += ' by '+theExisting.modifier;\n theAskPanel.style.display='none';\n window.importIndex=importTiddlers(window.importIndex); // resume with THIS item\n importStopped();\n break;\n case 'importSmaller': // decrease current listbox size, minimum=5\n if (theList.options.length==1) break;\n theList.size-=(theList.size>5)?1:0;\n window.importListSize=theList.size;\n break;\n case 'importLarger': // increase current listbox size, maximum=number of items in list\n if (theList.options.length==1) break;\n theList.size+=(theList.size<theList.options.length)?1:0;\n window.importListSize=theList.size;\n break;\n case 'importMaximize': // toggle listbox size between current and maximum\n if (theList.options.length==1) break;\n theList.size=(theList.size==theList.options.length)?window.importListSize:theList.options.length;\n break;\n }\n}\n\nfunction getImportedTiddlers()\n{\n try\n {\n // make sure document has valid tiddler store area\n var importDocument = window.frames['importFrame'].document;\n if (!importDocument)\n { throw("could not get file contents from importFrame"); }\n var importStoreArea = importDocument.getElementById("storeArea");\n if (!importStoreArea || !(importStore=importStoreArea.childNodes) || (importStore.length==0))\n { throw("no tiddlers found in file"); }\n importStoreArea.normalize();\n var link=unescape(window.frames['importFrame'].location.href).replace(/\s\s/g,"/")\n clearMessage();\n displayMessage('read '+importStoreArea.innerHTML.length+' bytes from ',link);\n }\n catch(e)\n {\n clearMessage();\n displayMessage("Error reading "+window.importSource+": " + ((e.message)?e.message:e));\n }\n window.importedTiddlers = new Array();\n for(var t = 0; t < importStore.length; t++)\n {\n var e = importStore[t];\n var title = null;\n if(e.getAttribute)\n title = e.getAttribute("tiddler");\n if(!title && e.id && (e.id.substr(0,5) == "store"))\n title = e.id.substr(5);\n if(title && title != "")\n {\n var theImported = new Tiddler();\n theImported.loadFromDiv(e,title);\n window.importedTiddlers.push(theImported);\n }\n }\n refreshImportList();\n}\n\nfunction importStopped()\n{\n var theList = document.getElementById('importList');\n var theNewTitle = document.getElementById('importNewTitle');\n if (!theList) return;\n if (window.importIndex==-1)\n importReport(); // import finished... generate the report\n else\n {\n // DEBUG alert('import stopped at: '+window.importIndex);\n // import collision... show the ask panel and set the title edit field\n document.getElementById('importAskPanel').style.display='block';\n theNewTitle.value=theList.options[window.importIndex].value;\n }\n}\n\nfunction refreshImportList(selectedIndex)\n{\n var theList = document.getElementById("importList");\n if (!theList) return;\n // if nothing to show, reset list content and size\n if (!window.importedTiddlers) \n {\n while (theList.length > 0) { theList.options[0] = null; }\n theList.options[0]=new Option('please open a document...',"",false,false);\n theList.size=1; // show one line only\n return;\n }\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) importSortBy='title'; // heading\n if (selectedIndex==1) importSortBy='title';\n if (selectedIndex==2) importSortBy='modified';\n if (selectedIndex>2) return; // heading or tiddler item, no refresh needed\n // get the alphasorted list of tiddlers (optionally, filter out unchanged tiddlers)\n var tiddlers = [];\n\n // don't import tiddler if title/date/time match (i.e., no changes)\n for (t=0;t<window.importedTiddlers.length;t++)\n {\n if ( window.importDiffsOnly\n && store.tiddlers[window.importedTiddlers[t].title]\n && (window.importedTiddlers[t].modified-store.tiddlers[window.importedTiddlers[t].title].modified==0))\n continue;\n tiddlers.push(window.importedTiddlers[t]);\n }\n tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=new Option('Select tiddlers to import',"",false,false);\n theList.options[i++]=new Option(((importSortBy=="title" )?">":indent)+' [by title]',"",false,false);\n theList.options[i++]=new Option(((importSortBy=="modified")?">":indent)+' [by date]',"",false,false);\n theList.options[i++]=new Option(tiddlers.length+' tiddler'+((tiddlers.length!=1)?'s are ':' is ')+(window.importDiffsOnly?'different':'in the document'),"",false,false);\n // output the tiddler list\n switch(importSortBy)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modified":\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++)\n {\n var tiddler = tiddlers[t];\n var theSection = tiddler.modified.toLocaleDateString();\n if (theSection != lastSection)\n {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n if (theList.size<window.importListSize)\n theList.size=window.importListSize;\n if (theList.size>theList.options.length)\n theList.size=theList.options.length;\n}\n\nfunction importTiddlers(startIndex)\n{\n if (!window.importedTiddlers) return -1;\n\n var theList = document.getElementById('importList');\n if (!theList) return;\n // if starting new import, reset import status flags\n if (startIndex==0)\n for (var t=0;t<window.importedTiddlers.length;t++)\n window.importedTiddlers[t].status="";\n for (var i=startIndex; i<theList.options.length; i++)\n {\n // if list item is not selected or is a heading (i.e., has no value), skip it\n if ((!theList.options[i].selected) || ((t=theList.options[i].value)==""))\n continue;\n for (var j=0;j<window.importedTiddlers.length;j++)\n if (window.importedTiddlers[j].title==t) break;\n var theImported = window.importedTiddlers[j];\n var theExisting = store.tiddlers[theImported.title];\n // don't import the "ImportedTiddlers" history from the other document...\n if (theImported.title=='ImportedTiddlers')\n continue;\n // don't import tiddler if title/date/time match (i.e., no changes)\n if (theExisting && ((theImported.modified-theExisting.modified)==0))\n continue;\n // if tiddler exists and import not marked for replace or merge, stop importing\n if (theExisting && (theImported.status.substr(0,7)!="replace") && (theImported.status.substr(0,5)!="merge"))\n return i;\n // append importation tags (if any)\n if (window.importTags!="")\n theImported.set(null,null,null,null,theImported.getTags()+' '+window.importTags)\n // set the status to 'added' (if not already set by the 'ask the user' UI)\n theImported.status=(theImported.status=="")?'added':theImported.status;\n // do the import!\n store.tiddlers[theImported.title] = theImported;\n store.dirty=true;\n }\n return(-1); // signals that we really finished the entire list\n}\n\nfunction importReport()\n{\n\n if (!window.importedTiddlers) return;\n // DEBUG alert('importReport: start');\n\n // if import was not completed, the Ask panel will still be open... close it now.\n document.getElementById('importAskPanel').style.display='none'; \n // get the alphasorted list of tiddlers\n var tiddlers = window.importedTiddlers;\n window.importedTiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // gather the statistics\n var count=window.importedTiddlers.length; var added=0; var replaced=0; var renamed=0; var skipped=0; var merged=0;\n for (var t=0; t<count; t++)\n if (window.importedTiddlers[t].status)\n {\n if (window.importedTiddlers[t].status=='added') added++;\n if (window.importedTiddlers[t].status.substr(0,7)=='skipped') skipped++;\n if (window.importedTiddlers[t].status.substr(0,6)=='rename') renamed++;\n if (window.importedTiddlers[t].status.substr(0,7)=='replace') replaced++;\n if (window.importedTiddlers[t].status.substr(0,6)=='merged') merged++;\n }\n var omitted=count-(added+replaced+renamed+skipped+merged);\n // DEBUG alert('stats done: '+count+' total, '+added+' added, '+skipped+' skipped, '+renamed+' renamed, '+replaced+' replaced, '+merged+' merged');\n // skip the report if nothing was imported\n if (added+replaced+renamed+merged==0) return;\n // quick message area summary report\n clearMessage();\n displayMessage((added+replaced+renamed+merged)+' of '+count+' tiddler'+((count!=1)?'s':"")+' imported from ',window.importSource)\n // create the report tiddler (if not already present)\n var tiddler = store.tiddlers['ImportedTiddlers'];\n if (!tiddler) // create new report tiddler if it doesn't exist\n {\n tiddler = new Tiddler();\n tiddler.title = 'ImportedTiddlers';\n tiddler.text = "";\n }\n // format the report header\n var now = new Date();\n newText = "";\n newText += "On "+now.toLocaleString()+", "+config.options.txtUserName+" ";\n newText += "imported tiddlers from ["+"["+window.importSource+"|"+window.importSource+"]"+"]:\sn";\n newText += "<"+"<"+"<\sn";\n newText += "Out of "+count+" tiddler"+((count!=1)?"s ":" ")+" in "+window.importSource+":\sn";\n if (added+renamed>0)\n newText += (added+renamed)+" new tiddler"+(((added+renamed)!=1)?"s were":" was")+" added to your document.\sn";\n if (merged>0)\n newText += merged+" tiddler"+((merged!=1)?"s were":" was")+" merged with "+((merged!=1)?"":"an ")+"existing tiddler"+((merged!=1)?"s":"")+".\sn"; \n if (replaced>0)\n newText += replaced+" existing tiddler"+((replaced!=1)?"s were":" was")+" replaced.\sn"; \n if (skipped>0)\n newText += skipped+" tiddler"+((skipped!=1)?"s were":" was")+" skipped after asking.\sn"; \n if (omitted>0)\n newText += omitted+" tiddler"+((omitted!=1)?"s":"")+((omitted!=1)?" were":" was")+" unchanged/not selected, and "+((omitted!=1)?"were":"was")+" not imported.\sn";\n if (window.importTags!="")\n newText += "imported tiddlers were tagged with: \s""+window.importTags+"\s"\sn";\n // output the tiddler detail and reset status flags\n for (var t=0; t<count; t++)\n if (window.importedTiddlers[t].status!="")\n {\n newText += "#["+"["+window.importedTiddlers[t].title+"]"+"]";\n newText += ((window.importedTiddlers[t].status!="added")?("\sn^"+"^"+window.importedTiddlers[t].status+"^"+"^"):"")+"\sn";\n window.importedTiddlers[t].status="";\n }\n newText += "<"+"<"+"<\sn";\n // update the ImportedTiddlers content and show the tiddler\n tiddler.text = newText+((tiddler.text!="")?'----\sn':"")+tiddler.text;\n tiddler.modifier = config.options.txtUserName;\n tiddler.modified = new Date();\n store.tiddlers[tiddler.title] = tiddler;\n displayTiddler(document.getElementById('sidebar'),"ImportedTiddlers",1,null,null,false);\n // update the page display\n store.notifyAll();\n}\n/*\n}}}\n*/
On Sunday, October 16, 2005 16:06:43, JacquesTurbé imported tiddlers from [[C:\s_logs\s2005\s_JT\sJT_PimliPo.html|C:\s_logs\s2005\s_JT\sJT_PimliPo.html]]:\n<<<\nOut of 309 tiddlers in C:\s_logs\s2005\s_JT\sJT_PimliPo.html:\n3 new tiddlers were added to your document.\n306 tiddlers were unchanged/not selected, and were not imported.\n#[[@Contributions Sociales rev. fonciers 2004]]\n#[[@Impôts]]\n#[[@ShowReminders erratic display ?]]\n<<<\n----\nOn Thursday, October 13, 2005 00:08:39, JacquesTurbé imported tiddlers from [[C:\s_logs\s2005\sTidlis\stidlipo.html|C:\s_logs\s2005\sTidlis\stidlipo.html]]:\n<<<\nOut of 287 tiddlers in C:\s_logs\s2005\sTidlis\stidlipo.html:\n1 new tiddler was added to your document.\n286 tiddlers were unchanged/not selected, and were not imported.\n#[[TagCloudPlugin]]\n<<<\n----\nOn Thursday, October 06, 2005 12:37:07, JacquesTurbé imported tiddlers from [[C:\s_logs\s2005\sYatwa\sPimliPoche.html|C:\s_logs\s2005\sYatwa\sPimliPoche.html]]:\n<<<\nOut of 256 tiddlers in C:\s_logs\s2005\sYatwa\sPimliPoche.html:\n1 new tiddler was added to your document.\n255 tiddlers were unchanged/not selected, and were not imported.\n#[[AutoTaggerPlugin]]\n<<<\n----\nOn Thursday, October 06, 2005 12:12:14, JacquesTurbé imported tiddlers from [[C:\s_logs\s2005\sYatwa\sPimliPoche.html|C:\s_logs\s2005\sYatwa\sPimliPoche.html]]:\n<<<\nOut of 256 tiddlers in C:\s_logs\s2005\sYatwa\sPimliPoche.html:\n1 new tiddler was added to your document.\n255 tiddlers were unchanged/not selected, and were not imported.\n#[[tableTags]]\n<<<\n----\nOn Tuesday, October 04, 2005 15:27:44, JacquesTurbé imported tiddlers from [[C:\s_logs\s2005\sEnglish TWs\sEN-PimliPoche.html|C:\s_logs\s2005\sEnglish TWs\sEN-PimliPoche.html]]:\n<<<\nOut of 134 tiddlers in C:\s_logs\s2005\sEnglish TWs\sEN-PimliPoche.html:\n1 new tiddler was added to your document.\n133 tiddlers were unchanged/not selected, and were not imported.\n#[[ReminderMacros]]\n<<<\n----\nOn Tuesday, October 04, 2005 15:22:17, JacquesTurbé imported tiddlers from [[C:\s_logs\s2005\sEnglish TWs\sEN-PimliPoche.html|C:\s_logs\s2005\sEnglish TWs\sEN-PimliPoche.html]]:\n<<<\nOut of 134 tiddlers in C:\s_logs\s2005\sEnglish TWs\sEN-PimliPoche.html:\n77 new tiddlers were added to your document.\n2 existing tiddlers were replaced.\n55 tiddlers were unchanged/not selected, and were not imported.\n#[[ ? ]]\n#[[ R ]]\n#[[ • ]]\n#[[ ? ]]\n#[[:Hot]]\n#[[:Active Lists]]\n#[[:Agenda]]\n#[[:Call]]\n#[[:Computer]]\n#[[:Customers]]\n#[[:Hotest]]\n#[[:Links]]\n#[[:Lists]]\n#[[:Mail]]\n#[[:Mails]]\n#[[:Maybe]]\n#[[:MyOffice]]\n#[[:Projects]]\n#[[:Reference data]]\n#[[:Routines]]\n#[[:To complete this week]]\n#[[:Waiting for]]\n#[[:Weeks]]\n#[[:Who]]\n#[[2006 eBooklet]]\n#[[21/9/2005]]\n#[[22/9/2005]]\n#[[23/9/2005]]\n#[[A Faire]]\n#[[AffirmationForTheWeek]]\n#[[Aknowledgements]]\n#[[Celia Dolittle]]\n#[[Christine's new room]]\n#[[Clarify uncertainties with Karin]]\n#[[Compte Bruneau]]\n#[[Current Goals]]\n#[[Current Goals?]]\n#[[Curriculum]]\n#[[Do First]]\n#[[Eurocopter 7 nov 2005]]\n#[[FAQ List]]\n#[[Fix agenda with BigCo]]\n#[[Greg : docs TT7]]\n#[[GregDwater]]\n#[[Hexagon]]\n#[[JoeJJeecy]]\n#[[Journal, Friday September 2005 10:43]]\n#[[Journal, Vendredi 9 Septembre 2005 14:43]]\n#[[Karin]]\n#[[Kate Hackate]]\n#[[Letter to Clara]]\n#[[Liste :Téléphones à faire]]\n#[[Liste systemConfig]]\n#[[Liste systemTiddlers]]\n#[[New email for Asso]]\n#[[Next10daysReminders]]\n#[[NextWeek]]\n#[[Nokia log]]\n#[[PimliPoche]]\n#[[PimliPoche download link]]\n#[[PimliPocheAdaptation]]\n#[[Populis low quality]]\n#[[Prepare TT7 Conference]]\n#[[Quotes]]\n#[[SiteSubtitle]]\n^^replaces SiteSubtitle - 9/30/2005 2:37:0 by YourName^^\n#[[SiteTitle]]\n^^replaces SiteTitle - 9/30/2005 2:36:0 by YourName^^\n#[[TT7 Attendees list]]\n#[[TW plugins and macros]]\n#[[Taxes]]\n#[[Thank Mike]]\n#[[ToCompleteToday]]\n#[[Tony buys my T5]]\n#[[WeeklyReview]]\n#[[What is :Hot ?]]\n#[[Write WeeklyReview checklist, - October3, 2005 ]]\n#[[XTechs support]]\n#[[rv Hexagon]]\n#[[Ø]]\n#[[•]]\n<<<\n
!!<<reminder year:2005 month:10 day:25 title:"nextAction" >>
!Avis d'imposition\n!!<<showReminders leadtime:300 tag:"Impôts" format:"|DD.0MM|DIFF|TITLE|TIDDLER|">>\n
!!!2005, October 23\n!GTD ch6 - Incubate | Are Someday/Maybe lists really necessary ?\n!!Reading [[Charles GTD chapter 6 summary|http://groups.yahoo.com/group/Getting_Things_Done/files/Chapter%20notes%20from%20GTD/Notes%20by%20Charles/gtd_chapter6.txt]] and checking my practice against it, I quote this (for incubate) :\n<<<\nTwo options:\n Write them on a Someday/Maybe Lists\n Put them on your calendar or tickler file (interesting that the tickler is not mentioned on the diagram) Either method will get it off your mind RIGHT NOW and you will be confident that the item will appear in the future.\n<<<\nI realize I __never__ tag or file anything as //someday maybe//, but rather put a reminder to everything I do not trash, even if it is reference data (no action). \nThe use of the reminder is :\n*"no need to bother before. just process again :\n**decide action (do, schedule, delegate),\n**differ again (keep with an updated reminder),\n**trash ? "\nThat way I am sure nothing slips out of my attention, whilst, with Someday/Maybe I'm pretty sure some of them would remain buried at risk of being forgotten for a too long time and having missed opportunities.\n!!What are your pros and cons between the two options : S/M or ticklering reminders ?\n<<<\nPS - Charles, I believe this is a typo for the less than 2 min action (that alters the meaning) :\nYou wrote : "It is more efficient to do it, then schedule it into your system."\nI believe you meant : "It is more efficient to do it than schedule it into your system."\n<<<\n<<reminder year:2005 month:10 day:31 title:"Summarize" hidden>>
Michael Langford : if you repeatedly tickled your someday maybe's\n\n<michael.langford@gmail.com>:\n<<<\n I think if you repeatedly tickled your someday maybe's (which is what you're doing), two things happen:\n<<<\nInteresting (I didn't thought as that, but I don't think I fall in the traps you tell either !)\n<<<\n 1> Things in the tickler now are not now "Commitments I have chosen to honor".\n<<<\nYes they are because SM or reference reminders are WR dated (ie 5w42, or saturday 22) : they are a //review// action, ticklered for WR times. So there is no mismatch with ordinary commitments.\nAnd hard rock commitments are in my HardLandscape too !\n<<<\nSounds like you turned the tickler into a pile of inboxes when you put it that way.\n<<<\nMy saturday tickler is a selected-from-pile inbox of SM to put in review, yes :)\n<<<\n 2> You are taking the "it is okay if I don't commit to every possibility in the world" theme out of GTD when you remove the someday maybe list and "juice" the tickler with recurring nags of things that you or someone feels you ought to do.\n<<<\nHope my detailed howto in my answer to Charles tells it is not the case : I have "in my face" at WR only a selection of SM that are in position to be effectively review. And more time to dream, brainstorm about them.\nAnd for those that do ot need a frequent check, they are scattered all along the weeks of the year, so that makes a de facto leveling.\n<<<\nBy repeatedly putting things forward in your tickler like this, you are continually confronted with things you have not done yet, yet you feel you should do.\n<<<\nNo : "...with ideas that came of something possibly doable." For most of them, not shoulds.\nI have the habit when I write, or clip, something to almost always write something I could one day do with, do about, do for, or do alike, or make of it. Hence numerous SM in my case. Probably 90% of them will never be done. I don't feel guilty. But when an opportunity comes, I'm faster (than before) to react with grown ideas. I feel "rich" !!\n\nBefore GTD I had too many commitments and open loops. \nWith GTD I still have open loops, but quite less (plus : <I know and track them). My number of active projects fell down, and my SMs rocketted up !\n\nSo, thanks Michael for your thoughts : good to know the dangers, and check our system against each other to better monitor it.\n
[[GTD tips]]\n!!<<reminder year:2005 month:10 day:31 title:"nextAction" >>
xxx xxx xxx
Confidence or motivation problem ?\n<<<\n!!!Karin's Jivaro report 8-23-05\nI hope the Comittee will find here ideas valuable enough for thei decision next week.\n!!!Karin\n<<<
__''Karin Krudson''__\n//TIO product manager//\n<<<\nAliquam pharetra. \nNulla in tellus eget odio sagittis blandit. \nMaecenas at nisl. \n<<<\n!!<<reminder month:10 day:23 title:Birthday firstyear:1972>>\n!!!Nullam lorem mi, eleifend a, fringilla vel, semper at, ligula. \n!!Note\n* 8/23/05 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque sed felis. Aliquam sit amet felis. Mauris semper, velit semper laoreet dictum, quam diam dictum urna, nec placerat elit nisl in quam. \nEtiam augue pede, molestie eget, rhoncus at, convallis ut, eros. \nNullam lorem mi, eleifend a, fringilla vel, semper at, ligula. \n\n\n\n\n
!Kate Hackate\n!!''Managing managers dpt manager''\n*01.55.80.50.57\n*<<email khakate at bigco dot com>>\n\n
<html><iframe src="http://www.levenger.com/Scene7/levengerhtml_zoom.asp?ID=Zoom&Company=Levenger&SKU=AL5945s1_1105&imageS=img.levenger.com" width=100% height=80%></iframe></html>\n!!<<reminder year:2006 month:5 day:31 title:"Check products" >>
!!Lorem ipsum dolor sit amet, consectetuer adipiscing elit\n<<<\nQuisque sed felis. Aliquam sit amet felis. Mauris semper, velit semper laoreet dictum, quam diam dictum urna, nec placerat elit nisl in quam. Etiam augue pede, molestie eget, rhoncus at, convallis ut, eros. \n<<<\n!!<<reminder year:2005 month:11 day:2 title:"Have Susan advice on draft">>\n!!![[Draft ../..|file:///C:/Docs/2005/59b Clara What to do.rtf]]
/***\n|''Name:''|ListWithTagsPlugin |\n|''Version:''|0.8 |\n|''Source:''|http://thePettersons.org/PaulsNotepad.html#ListWithTagsPlugin |\n|''Author:''|[[Paul Petterson]] |\n|''Type:''|List Macro Extension |\n|''Requires:''|TiddlyWiki 1.2.32 or higher |\n!Description\nExtends the TiddlyWiki ''list'' macro by adding the capability to list tiddlers that have a tag, a set of tags, or a complex criteria of tags. You can use tags, AND, OR, NOT (or && for AND, || for OR, and ! for NOT) as well as paranthese when building your expression.\n\n!Syntax\n* {{{<<list withTags Projects and Todo and not done>>}}}\n* {{{<<list withTags Tasks and (Urgent or Important)>>}}}\n\n!Known issues\n* If a tag used in the expression doesn't exist (no tiddlers have that tag) then nothing will get listed.\n* If a tag //contains// another tag, then using the shorter tag will list results from the shorter and longer tags.\nFor example if you have the tags ''test'' and ''testing'' and use ''test'' in an expression it will match tiddlers with both ''test'' and ''testing'' tags.\n\n!Notes\n\n!Revision history\nv0.7 first accidental public release (no comment block on that one)\nv0.7.5 fixed some bugs relating to non-existant tags throwing exceptions (simple comment block)\nv0.8 first public release (on purpose!)\n\n!Code\n***/\n/*\n{{{\n*/\nconfig.macros.list.withTags = {}\nconfig.macros.list.withTags.handler = function(params)\n{\n var results = [];\n if ( !params || !params[1] )\n return config.macros.list.all.handler(params);\n \n // build us a regex of all our tags as a big-old regex that \n // OR's the tags together (tag1|tag2|tag3...)\n var tags = store.getTags();\n if ( tags.length == 0 ) return results ;\n var exp = "(" + tags.join("|") + ")" ;\n exp = exp.replace( /(,[\sd]+)/g, "" ) ;\n\n var regex = new RegExp( exp, "ig" );\n\n // build us string such that an expression that looks like this:\n // tag1 AND tag2 OR NOT tag3\n // turns into :\n // /tag1/.test(...) && /tag2/.test(...) || ! /tag2/.test(...)\n var cond = params.slice(1).join(" ");\n cond = cond.replace( regex, "/$1/.test( tiddlerTags )" );\n cond = cond.replace( /\ssand\ss/ig, " && " ) ;\n cond = cond.replace( /\ssor\ss/ig, " || " ) ;\n cond = cond.replace( /\ssnot\ss/ig, " ! " ) ;\n //displayMessage( "condition='" + cond + "'" );\n // look through the tiddlers, make a string of the tags in the tiddler\n // and eval the 'cond' string we made against that string - \n // if it's TRUE then the tiddler qualifies!\n \n for( var t in store.tiddlers ) {\n var tiddler = store.tiddlers[t];\n var tiddlerTags = tiddler.tags?tiddler.tags.join():"" ;\n try {\n if ( eval( cond ) ) results.push( tiddler );\n } catch( e ) {\n //displayMessage( "Exception = '" + e + "'" ) ;\n }\n }\n results.sort(function (a,b) {\n if(a["title"] == b["title"]) return(0); \n else return (a["title"] < b["title"]) ? -1 : +1; \n });\n return results;\n}\n/*\n}}}\n*/\n
<<listTags :tel title #>>
<<listTags systemConfig title #>>
<<listTags systemTiddlers title #>>
!Links\n\n!!!<<reminder year:2005 month:12 day:27 title:"Review" >>
<<gradient horiz #AAAFEF #eeefff>><<tiddler AOWinTopOfMenu>>\n<<calendar thismonth>>\n<<newTiddler>> • <<newJournal "yourTitle - DDD DD MMM YYYY hh:mm" Journal>> • <<tag Tp>> • <<tag Lk>> • <<permaview>> • <<saveChanges>> •<<closeAll>>\n~~<<search>>~~\n<<tableOfContents>><<tiddler "Current Goals">>[[<-|MainMenu]] [[ ^ |SiteSubtitle]] [[v|SideBarOptions]] // //~~[[© AVM!|http://avm.free.fr]]~~\n~~TiddlyWiki <<version>> [[© osmosoft|http://www.tiddlywiki.com]]~~\n<<alias mn "''@@color:red;[[ • ]]@@''">>
!How do you make a weekly review feel "complete?"\n<<<\n!!!kalnel to Getting_Things.\nI slacked and did only a quick loose ends mop-up -- no deep thoughts\nor long-term goals. (..) Took all of about 5 minutes.\nIn some ways, I feel like this is a sufficient review, but in other ways, I feel like I'm missing the "energizing buzz" most GTD processes offer.(...)\nAnyone have any tips, tricks, etc.?\n!!!kal\n<<<\nMy right out my hat answers to your question :\n<<faqlist byTitle mawrfc>>\n----\n!!<<reminder year:2005 month:10 day:24 title:"Prune this to a GTD topics tree" >>\n!!!@@color(lightgray):Mail to@@ <<email jacques.turbe at gmail dot com?subject=[PimliPoche-EN] - Make a weekly review feel complete&body=Enter your comment here, thanks ;)>>
<<tabs txtMoreContexts\n"Near" "Errands within 10 minutes walk" [[:Near]]\n"Errands" "Errands that need about one hour or more" [[:Errands]]\n"Air" "Open air only activities" [[:Openair]]\n"Quiet" "What needs a period of time without interruption" [[:Quiet]]\n>>\n
!!!<<today>><<gradient horiz #789aff #abcdfd #eefafb #fffbea>>\n//This is just a test of macros in a table with TiddlyWiki <<version>> : Fantastic !//\n| !This week goals | !Next days |\n| <<tiddler " • ">> <<tiddler AOWinTopOfMenu>> <<tableTags :ThisWeek>>@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;border:1px solid red;background-color:aqua;PimliPoche@@ |<<showReminders leadtime:3 format:"|DIFF|TITLE|TIDDLER|">>|\n| !A Vos Marques ! |~|\n|<html><iframe src="http://avm.free.fr/" width=100% height=100%></iframe></html>|~|\n\n!!![[ • ]]
@@Daily review@@\nProc\n|Current InBox|c\n<<tableTags :inBox>>\n~~//Delete inBox tag after processing each item//~~\n!!<<reminder year:2005 month:10 title:"Proces s inBox" >>
// // ---------------------------------------------------------------------------------------------\n// //''Name:'' Navigator_PIM plugin\n// //''Author:'' GeoffSlocock (adapted from code by Alan Hecht which created the breadcrumbs area and accumulated a simple history for display)\n\n// //''__* * ... S E T T I N G S ... S E C T I O N ... * *__'' \n\nvar minLinksToShow = 6;\nvar medLinksToShow = 12;\nvar EntireLinks = 30; // This enables access to the otherwise hidden history. \n\nvar home = "Do First"; // No [[]]'s. This enables the display line to contain, as a first entry, the prime tiddler that is also in defaultTiddlers. Without this arrangement, this would not be so.\n\nyourNameForHome = "Action";\n\nopenTiddlersDisplayCols = 3;// If you have lots of long tiddlers, 2 would be a better choice. The plugin which abbreivates titles might help, also. "1" does not work.\n\n// //''__* * ... C O D E ... S E C T I O N ... * *__'' \n\nDisplayCols = openTiddlersDisplayCols;\nseparator = " @@color(red):''>''@@ ";\nvar h_bar = "@@color(red):''|''@@";\n\nvar menu = h_bar + "[[clear|#clear]]" + h_bar;\nvar h1_min = menu + "[[min|#min]]=";\nvar h1_med = menu + "[[med|#med]]=";\nvar h1_max = menu + "[[max|#max]]=";\nvar h1_home = menu + "[[" + yourNameForHome + "|#home]]/";\n\ninitialise();\n\n\n// if (chkSinglePageMode) alert();\n\nvar crumbArea = document.createElement("div");\ncrumbArea.id = "breadCrumbs";\nvar targetArea = document.getElementById("tiddlerDisplay");\ntargetArea.parentNode.insertBefore(crumbArea,targetArea);\n//crumbArea.appendChild("display");\n\n\nwindow.onClickTiddlerLink_orig_breadCrumbs = window.onClickTiddlerLink;\nwindow.onClickTiddlerLink = function(e)\n{\nonClickTiddlerLink_orig_breadCrumbs(e);\nprocessCrumb(e);\n}\ndisplay();\n\n \nfunction processCrumb(e)\n//==================\n{//1\nplace = document.getElementById("tiddlerDisplay");\n\nappendage();\n\nvar thisTiddler = place.firstChild;\nvar thisTitle = thisTiddler.id;\nvar prospective_thisCrumb = "[[" + thisTitle.substring(7) + "]]";\n\nif (prospective_thisCrumb == "[[ HTMLDivElement]]]") \n {//2\n if (e.target) prospective_thisCrumb = "[[" + e.target.text + "]]"\n else return;\n }\n\n\nif (prospective_thisCrumb.substring(0,3) == "[[#")\n {//2\n var blockDisplayOfTiddler = 1;\nif (prospective_thisCrumb == "[[#refresh]]")\n {//3\n place = document.getElementById("tiddlerDisplay");\n // naked_xx = place.childNodes[1].id.substr(7);\n place.removeChild(place.childNodes[0]);\n place.removeChild(place.childNodes[place.childNodes.length - 1]);\n\n var naked_thisCrumb = thisCrumb.substring(2,thisCrumb.length - 2);\n//displayTiddler(document.getElementById('sidebar'),naked_xx,1,null,null,false);\ndisplayTiddler(document.getElementById('sidebar'),naked_thisCrumb,1,null,null,false);\n blockDisplayOfTiddler = -1;\n }//3\nelse if (prospective_thisCrumb == "[[#clear]]")\n//--------------------------------------------------------------------\n {//3\n linksToShow = minLinksToShow;\n prospective_thisCrumb = "[[" + home + "]]";\n place.removeChild(thisTiddler);\n displayTiddler(document.getElementById('sidebar'),(home),1,null,null,false);\n blockDisplayOfTiddler = -1;\n handyTab = h1_home + linksToShow + h_bar;\n initialise()\n }\n\nelse if (prospective_thisCrumb == "[[#min]]")\n//---------------------------------------------------------\n {//3\n linksToShow = medLinksToShow;\n handyTab = h1_med + linksToShow + h_bar;\n }\nelse if (prospective_thisCrumb == "[[#med]]") \n//-------------------------------------------------------\n {//3\n linksToShow = EntireLinks;\n handyTab = h1_max + linksToShow +h_bar;\n }\nelse if (prospective_thisCrumb == "[[#max]]") \n//----------------------------------------------------------\n {//3\n linksToShow = minLinksToShow;\n prospective_thisCrumb = "[[" + home + "]]";\n place.removeChild(thisTiddler);\n displayTiddler(document.getElementById('sidebar'),(home),1,null,null,false);\n blockDisplayOfTiddler = -1;\n handyTab = h1_home + linksToShow + h_bar;\n }\nelse if (prospective_thisCrumb == "[[#home]]") \n//------------------------------------------------------------\n {//3\n linksToShow = minLinksToShow;\n handyTab = h1_min + linksToShow + h_bar;\n }\nif (blockDisplayOfTiddler == 1 && (thisCrumb != "" || thisCrumb != "[[]]"))\n {\n place.removeChild(thisTiddler);\n var naked_thisCrumb = thisCrumb.substring(2,thisCrumb.length - 2);\ndisplayTiddler(document.getElementById('sidebar'),naked_thisCrumb,1,null,null,false);\n\n }\n display();\n }//2\nelse if (prospective_thisCrumb != thisCrumb)// Conventional Cycle but no need to process if last link is clicked.\n//-----------------------------------------------------------------------------------------\n\n {//2\n if (handyTab.substring(0,6) == "[[home") \n {//3\n handyTab = h1_min + linksToShow + h2;\n blockDisplayOfTiddler = 1;\n }\n var isDuplicate = 0;\n for (t=EntireLinks - 2; t>-1; t--) if (prospective_thisCrumb == backCrumb[t]) isDuplicate = 1;\n if (isDuplicate == 0 && thisCrumb != "" && thisCrumb != "[[]]")\n {//3\n for (t=EntireLinks - 1; t>-1; t--) backCrumb[t + 1] = backCrumb[t];\n backCrumb[0] = thisCrumb; // Shuffling the items back to accomadate \n thisCrumb = prospective_thisCrumb;\n }//3\n\n else // duplicate present\n//----------------------------------\n {\n var eliminate = -1;\n for (t=EntireLinks - 1; t>-1; t--) \n if (prospective_thisCrumb != backCrumb[t]) backCrumb[t + 1] = backCrumb[t]\n else\n {\n backCrumb[t + 1] = "";\n eliminate = t + 1; // enables elimination\n }\n if (eliminate != -1) for (t=eliminate; t<(EntireLinks - 1); t++) backCrumb[t] = backCrumb[t + 1];\n backCrumb[0] = thisCrumb; \n thisCrumb = prospective_thisCrumb;\n }\n\ndisplay();\n }//2\n\n}//1\n\nfunction initialise()\n//===============\n{\nlinksToShow = minLinksToShow;\nlinksToShowIncr = 0;\nhandyTab = h1_min + linksToShow + h_bar;\nthisCrumb = "[[" + home + "]]";\nbackCrumb = [];\nfor(t=0; t<(EntireLinks); t++) backCrumb[t] = "";\nxtraLinks = [];\nplace = "";\n//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nxtraApp = "\sn\sn@@color(gray):''|> [[REFRESH|#refresh]] <|''@@ @@color(gray):Open Tiddlers List - - - - - - - - - - @@<<option chkSinglePageMode>> @@color(gray):spm. |[[Help_PIM]]|@@\sn";\nextraAppendage = xtraApp;\n}\n\n\nfunction appendage()\n//=================\n{\nplace = document.getElementById("tiddlerDisplay");\nextraAppendage = "";\nfor(tt=0;tt<place.childNodes.length;tt++)\n xtraLinks[tt] = "[[" + place.childNodes[tt].id.substr(7) + "]]";\nif (tt != 0) \n {//2\n var rowCount = 0;\n var lbr = "@@color(gray):''(''@@";\n var rbr = "@@color(gray):'')''@@ ";\n var chv = "@@color(gray):''>>''@@ ";\n for (n=1;n<tt;n++)\n if (xtraLinks[n] != "[[]]") \n {//3\n extraAppendage = extraAppendage + lbr + xtraLinks[n] + rbr + "|";\n rowCount++;\n if (rowCount == DisplayCols) extraAppendage = extraAppendage + "\sn" + "|";\n if (rowCount == (DisplayCols + 1)) rowCount = 1;\n xtraLinks[n] == ""; \n }\nif (tt >= 2) extraAppendage = xtraApp + "|" + extraAppendage \nelse extraAppendage = "";\n\n }\n}\n\n\nfunction display()\n//==============\n{\nvar crumbArea = document.getElementById("breadCrumbs");\ncrumbArea.style.visibility = "visible";\nremoveChildren(crumbArea);\n\nvar chevronNeeded = 0;// The oldest displayed link should not be prefixed with " >". Also empty items do not need to be prefixed.\ncrumbLine = "";\nassemblage = ""; // This will become the display.\n\nif (linksToShowIncr == 1) \n {\n linksToShow--;\n linksToShowIncr = 0;\n }\nif (thisCrumb == "[[]]") \n {\n thisCrumb = "";\n linksToShow++;\n linksToShowIncr == 1;\n }\nfor (t=linksToShow - 2; t>-1; t--)\n {\n if (backCrumb[t] == "") // first iems read are likely to be empty.\n {\n assemblage = assemblage + backCrumb[t];\n }\n else if (chevronNeeded == 0) //detection of first non-empty item\n {\n assemblage = assemblage + backCrumb[t] + " ";\n chevronNeeded = 1;\n }\n else assemblage = assemblage + separator + backCrumb[t];\n }\n\nif (chevronNeeded == 0) assemblage = assemblage + " " + thisCrumb\nelse if (thisCrumb != "") assemblage = assemblage + separator + thisCrumb;\n\ncrumbArea.createTextNode(wikify(crumbLine + handyTab + assemblage + extraAppendage,crumbArea));\n\n}\n\n
!Enhanced PimliPoche upgradable with core TW @@~5s42@@\n~~//toConsiderWhenThinkingAboutActions//~~\n** Tutorial example from Domingo\n** How to plugin my autotag tweak\n** Ask for a 'with tag' reminder\n* ==Repair List withTags macro== 10 10 05\n* Aknowledgments ../..\n* Slides ?\n* \n!!<<reminder month:10 day:26 year:2005 title:"Tutorial example from Domingo" >>\n!!<<reminder title:"How to plugin my autotag tweak" >>\n==Ask for a 'with tag' reminder== 10.11.05\n\n''Notes''\n<<<\n!!!See Domingo's [[project support materials and hard edges]] original thread.\n^^ :Project ^^\n<<<
[ ] Letter to Populis\n[ ] Choose a new provider\n* Mail "My new adress"\n!!<<reminder year:2005 month:10 day:21 title:"Letter to Populis">>
<<newerTiddler button:"Projet" name:"Projet - DD/0MM/YY" tags:":Project" template:"GTDProjectTemplate">>\n\n\n\n\n\n!!<<reminder year:2005 month:10 day:31 title:"nextAction" >>
/***\n|NewerTiddlerPlugin|[[Paul Petterson|http://thePettersons.org/tiddlywiki.html#NewerTiddlerPlugin]] |\n!Syntax\n* {{{<<newerTiddler button:"Inbox" name:"Inbox YYYY/MM/DD" tags:"Journal, inbox" text:"New stuff for today:">>}}}\n* {{{<<newerTiddler button:"@Action" name:"Action: what" tags:"@Action" text:"Add project and describe action">>}}}\n* {{{<<newerTiddler button:"New Project" name:"Project Name?" tags:"My Projects, My Inbox, Journal" template:"MyTemplate">>}}}\n!!Parameters\n* name:"Name of Tiddler"\n* tags:"Tag1 Tag2 Tag3" - tags for new tiddler\n* button:"name for button" - the name to display instead of "new tiddler"\n* body:"what to put in the tiddler body"\n* template:"Name of a tiddler containing the text to use as the body of the new tiddler"\n!Code\n***/\n//{{{\n// Newer Tiddler...\nconfig.macros.newerTiddler = { \nname:"New(er) Tiddler",\ntags:"",\ntext:"Type Tiddler Contents Here.",\nbutton:"new(er) tiddler",\nhandler: function(place,macroName,params) {\n if ( readOnly ) return ;\n\n var input = reparse( params ) ;\n var tiddlerName = input["name"]?input["name"].trim():config.macros.newerTiddler.name ;\n var tiddlerTags = input["tags"]?makeTags( input["tags"] ):config.macros.newerTiddler.tags ;\n var tiddlerBody = input["text"]?input["text"]:config.macros.newerTiddler.text ;\n var buttonText = input["button"]?input["button"]:config.macros.newerTiddler.button ;\n var template = input["template"]?input["template"]:null;\n\n // if there is a template, use it - otherwise use the tiddlerBody text\n if ( template ) {\n tiddlerBody = store.getTiddlerText( template );\n }\n\n var now = new Date() ;\n tiddlerName = now.formatString( tiddlerName ) ;\n\n createTiddlyButton( place, buttonText, "", function() {\n displayTiddler(null,tiddlerName,2,null,null,false,false);\n if ( store.tiddlers[tiddlerName] != null ) return ;\n var tagsBox = document.getElementById("editorTags" + tiddlerName);\n if(tagsBox && tiddlerTags ) tagsBox.value = tiddlerTags.readBracketedList();\n var editBox = document.getElementById("editorBody" + tiddlerName);\n if(editBox && tiddlerBody ) editBox.value = tiddlerBody ;\n} );\n\n function reparse( params ) {\n var s = "", sep = "";\n for( var i = 0; i<params.length; i++ ) {\n s = s + sep + params[i] ;\n sep = " " ;\n }\n\n var re = /([^:\ss]*):["]([^"]*)["]/g ;\n var ret = new Array() ;\n var m ;\n while( (m = re.exec( s )) != null ) ret[ m[1] ] = m[2] ;\n\n return ret ;\n}\n\nfunction makeTags( tags ) {\n var ret = "", sep = "" ;\n var csvRegex=/([^,]*),?/g ;\n var match = csvRegex.exec( tags );\n while( match ) {\n ret = ret + sep + String.encodeTiddlyLink( match[1].trim() ) ;\n sep = " " ;\n csvRegex.LastIndex = csvRegex.LastIndex + 1 ;\n match = csvRegex.exec( tags );\n }\n return ret ;\n}\n}\n}\n//}}}\n
!!Currently entered\n<<showReminders leadtime:10 format:"|DIFF|TITLE|TIDDLER|" >>
<<listTags ~5w41 title *>>
config.views.editor.defaultText = ""; // instead of "Type the text for '%0'"
!!!Saturday, September 2005 10:55\n|!Date|!Heure|!Numéro|!Contact|\n|8/9|16:54|02 38 43 74 22 |William|\n|5/9 |10:30 |01 55 80 50 63 |Greg |\n|30/7 |19:38 |06 72 04 12 37|->|\n|7/7 |15:26 ||Pat|\n|4/7 |11:19 |06 10 54 75 54||\n|30/6 |13:04 |06 20 54 58 42 |Eve ?|\n|30/6 |11:18 |06 72 04 12 37|Bob|\n|30/6 |11:21 |06 72 04 12 37|Bob|\n|||01 42 82 37 82|-> JFTrim|\n<<reminder title:"Check lost calls" hidden>>\n[ ] Update contacts
Notes can go here
![[Managing business commitments to success|Operations]]\n[[XTechs support]]\n[[Clarify uncertainties with Karin]]
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\nSee AdvancedOptions
var sidebar = document.getElementById('sidebar');\nsidebar.insertBefore(document.getElementById('mainMenu'),document.getElementById('sidebarOptions'));
!Pending Tasks:\n<<list withTags Pending>>\n^^Open [[TaskList]]^^
This is a test.
This is a test.
This is a test.
<<gradient vert #ddccff #ffeedf>>''Tidli PIM,''\n''Wiki CyberPoche,''\n''USB //dans la poche//,''\n''that's PimliPoche :''\n<<<\n*TiddlyWiki engine,\n*CyberPoche organisation,\n*GTD profiled:\n<<<\n!!!@@background-color:yellow;color:red;''See [[PimliPoche|http://avm.free.fr/en/EN-PimliPoche.html]]''@@\n!!!@@background-color:aqua;color:marroon;''[[Download PimliPoche]]''@@\n!![img[Personal notebook and review dashboard|http://avm.free.fr/images/pimlipochebeta.png]]\n\nThe second release is coming, fully TiddlyWiki upgradable, a tremendous dynamic database for your microcontents of all kinds, with many new features, thanks to the many plugins plugmen !\n<<<\n|!|bgcolor(white):[[La version française est téléchargeable !|http://avm.free.fr/apps/PimliPocheFr.zip ]] |!|\n<<<\n!!!@@color:lightgray;Post your comments : @@ <<email jacques.turbe at gmail dot com?subject=[TidliPo] - PimliPoche&body=Thanks for your words :)>>
<<tiddler SideBarTabs>>
''PimliPoche Last News :''\n\nDownload this version :\nhttp://avm.free.fr/apps/En-PimliPoche.zip \n>//(keep the calendar directory in the same directory than PimliPoche).//\n!!!Mailto <<email jacques.turbe at gmail dot com?subject=[PimliPoche] - Download &body=Enter your comment here, thanks ;)>>\n!!<<reminder year:2005 month:10 day:29 title:"Update" >>
/***\n|''Name:''|PimliPocheHeaders |\n|''Version:''|0.0 |\n|''Source:''|http://avm.free.fr/en/EN-PimliPoche.html#PimliPocheHeaders|\n|''Author:''|[[Paul Petterson|http://thepettersons.org/PaulsNotepad.html]] has made it for me ! |\n|''Type:''|Wikifier Extension |\n|''Requires:''|TiddlyWiki 1.2.32 or higher |\n!Description\nConverts the headings into styled spans\n\n!Syntax\n* {{{!!}}}\n* {{{!!!}}}\n* {{{!!!!}}}\n* {{{!!!!!}}}\n\n!Samples\n!! Two\n!!! Three\n!!!! Four\n!!!!! Five\n\n!Revision history\n\n!Code\n***/\n//{{{\nfor( var i=0; i<config.formatters.length; i++ )\nif ( config.formatters[i].name=='heading') break ;\n\nif ( i >= config.formatters.length ) {\nvar e = "Can't find formatter for heading!" ;\ndisplayMessage( e ) ;\nthrow( e ) ;\n\n}\n\nif ( config.formatters[i].match != "^!{1,5}" ) {\nvar e = "Found unexpected expression: '" + config.formatters[i].match + "'expected '^!{1,5}'" ;\ndisplayMessage( e ) ;\nthrow( e ) ;\n\n}\n\nconfig.formatters[i].match = "^!"\n\nconfig.formatters.splice( i, 0, {\nname: "pimliPocheStyles",\nmatch: "^!{2,5}",\nterminator: "\s\sn",\nhandler: function(w) {\nvar e = createTiddlyElement(w.output,"span", null, "jsty" + w.matchLength );\nw.subWikify(e,this.terminator);\n\n}\n});\n\n//}}}
<<tiddler :Hotest>>\n//PinBoard and flyers [[ ~ ]] [[ ~~ ]] [[ ~~~ ]]//\n@@color:lightgreen;//Back to ''START'' screen with ''Refresh'' button@@\n----\n<<tiddler ContextLists>>\n!!<<tag GTD>> <<tag "GTD tips">>\n!!GTD :[[Make a weekly review feel complete]]\n[[Incubate : Are Someday/Maybe lists really necessary ?]]\n!Coming :\n<<showReminders leadtime:8 format:"|DD |TITLE |TIDDLER |">>\n----\n<<newTiddler>> //PinBoard and flyers [[ ~ ]] [[ ~~ ]] [[ ~~~ ]]//
function onClickDefaultView(e) {\n closeAllTiddlers();\n config.options.txtDefaultTiddlers = "";\n saveOptionCookie('txtDefaultTiddlers');\n var start = store.getTiddlerText("DefaultTiddlers");\n if(start)\n displayTiddlers(null,start,1,null,null);\n\n} \n
/***\n|''Name:''|NewerTiddlerPlugin|\n|''Version:''|0.7|\n|''Source:''|http://thePettersons.org/PaulsNotepad.html#NewerTiddlerPlugin|\n|''Author:''|[[Paul Petterson]] |\n|''Type:''|Macro Extension |\n|''Requires:''|TiddlyWiki 1.2.32 or higher |\n!Description\nCreate a 'new tiddler' button with lots more options! Specify the text to show on the button, the name of the new tiddler (with date macro expansion), one or more tags for the new tiddlers, and what text if any to include in the new tiddler body! Uses a named parameter format, simalar to the reminder plugin.\n\nAlso - if the tiddler already exists it won't replace any of it's existing data (like tags).\n\n!Syntax\n* {{{<<newerTiddler button:"Inbox" name:"Inbox YYYY/MM/DD" tags:"Journal, inbox" text:"New stuff for today:">>}}}\n* {{{<<newerTiddler button:"@Action" name:"Action: what" tags:"@Action" text:"Add project and describe action">>}}}\n''Parameters''\n* name:"Name of Tiddler"\n* tags:"Tag1 Tag2 Tag3" - tags for new tiddler\n* button:"name for button" - the name to display instead of "new tiddler"\n* body:"what to put in the tiddler body"\n\n!Sample Output\n* <<newerTiddler button:"Inbox" name:"Inbox YYYY/MM/DD" tags:"Journal, inbox" text:"New stuff for today:">>\n* <<newerTiddler button:"@Action" name:"Action: what" tags:"@Action" text:"Add project and describe action">>\n\n!Known issues\n* Must use double quotes (") around tag values if they contain a space, can't use single quotes (').\n* Adding multiple tags to a new tiddler is still broken...\n\n!Todo\n* Want to be able to include another tiddler as a template.\n\n!Notes\n* It works fine, and I use it daily, however I haven't really tested edge cases or multiple platforms. If you run into bugs or problems, let me know!\n\n!Revision history\nv0.7 Initial public preview\n\n!Code\n***/\n/*{{{*/\n\nconfig.macros.newerTiddler = { \nname:"New(er) Tiddler",\ntags:"",\ntext:"Type Tiddler Contents Here.",\nbutton:"new(er) tiddler"\n}\nconfig.macros.newerTiddler.handler = function(place,macroName,params) {\n if ( readOnly ) return ;\n\n var input = reparse( params ) ;\n var tiddlerName = input["name"]?input["name"].trim():config.macros.newerTiddler.name ;\n var tiddlerTags = input["tags"]?input["tags"]:config.macros.newerTiddler.tags ;\n var tiddlerBody = input["text"]?input["text"]:config.macros.newerTiddler.text ;\n var buttonText = input["button"]?input["button"]:config.macros.newerTiddler.button ;\n\n\n var now = new Date() ;\n tiddlerName = now.formatString( tiddlerName ) ;\n\n createTiddlyButton( place, buttonText, "", function() {\n displayTiddler(null,tiddlerName,2,null,null,false,false);\n if ( store.tiddlers[tiddlerName] != null ) return ;\n var tagsBox = document.getElementById("editorTags" + tiddlerName);\n if(tagsBox && tiddlerTags ) tagsBox.value = String.encodeTiddlyLink(tiddlerTags);\n var editBox = document.getElementById("editorBody" + tiddlerName);\n if(editBox && tiddlerBody ) editBox.value = tiddlerBody ;\n} );\n\n}\n\nfunction reparse( params ) {\n var s = "", sep = "";\n for( var i = 0; i<params.length; i++ ) {\n s = s + sep + params[i] ;\n sep = " " ;\n }\n\n var re = /([^:\ss]*):["]([^"]*)["]/g ;\n var ret = new Array() ;\n var m ;\n while( (m = re.exec( s )) != null ) ret[ m[1] ] = m[2] ;\n\n return ret ;\n}\n\nminidumper = function( place, obj ) {\n var key, s = "";\n var ul = createTiddlyElement( place, "ul", null, null, "");\n\n for (key in obj) {\n s = "'" + key + "' : typeof(" + typeof( obj[key] ) + ") " ;\n switch( typeof( obj[key] )) {\n case "number":\n case "boolean":\n case "string":\n s += obj[key] ;\n var li = createTiddlyElement( ul, "li", null, null, s);\n break;\n\n case "object":\n case "function":\n var li = createTiddlyElement( ul, "li", null, null, s);\n break;\n }\n }\n}\n/*}}}*/\n
!!<<reminder year:2005 month:10 day:29 title:"Refuse their bill" >>
[ ] Mail to attendees [[AttendeesList]]\n* Copy to Greg\n* Integrate "timed leadership" to handouts.\n!!!<<reminder year:2005 month:10 day:23 title:Mail auxparticipants>>[[ • ]][[ ~ ]][[ ? ]]
!Priority Tasks:\n<<list withTags Priority>>\n^^Open [[TaskList]]^^
This is a test
This is a test
This is a test
To process with PimliPoche is :\n*Link the content to related tiddlers (commitments, outcomes, persons, reference data), or cut and paste in appropriate existing tiddler.\n*Tag to appropriate lists\n*Hilite NextAction in a reminder (with tickler date or not)\n*Tag the NextAction context,\nNow, you can delete the //:inBox// tag : nothing to organize, the computer will display it where/when you have asked !\n\n<<reminder year:2005 month:10 day:31 title:"nextAction" hidden>>
<<list withTags Family OR Christine>>
![[They said or they wrote|Quotes]]\n<<list withTags :Quote>>
!Reminders\n!!''Deadlines, Events and ticklers'' //(do not bother before)//\n<<showReminders leadtime:370 format:"|DIFF|TITLE|TIDDLER|" >>
// //''Name:'' Reminder plugin\n// //''Version:'' 2.2 (Sept 9, 2005)\n// //''Author:'' JeremySheeley\n// //''Contact:'' pop1280 [at] excite [dot] com\n\n// //''Installation'' \n// //1. Create a new tiddler in your tiddlywiki titled\n// // ReminderPlugin and give it the {{{systemConfig}}} \n// // tag. The tag is important because it tells TW \n// // that this is executable code.\n// //2. Double click this tiddler, and copy all the \n// // text from the tiddler's body.\n// //3. Paste the text into the body of the new tiddler \n// // in your TW.\n// //4. Save and reload your TW.\n// //5. You can copy some examples into your TW as well. // // See [[Simple Examples]], [[Holidays]], [[showReminders]] and [[Personal Reminders]]\n\n// //''Syntax:'' \n// // There are three macros defined here\n// //* reminder - see [[ReminderSyntax]]\n// //* showReminders - see [[showRemindersSyntax]]\n// //* displayTiddlersWithReminders - see [[showRemindersSyntax]]\n\n// //''Description:'' \n// // This plugin provides macros for tagging a date with \n// // a reminder. Use the {{{reminder}}} macro to do \n// // this. The {{{showReminders}}} and \n// // {{{displayTiddlersWithReminder}}} macros \n// // automatically search through all available tiddlers \n// // looking for upcoming reminders.\n\n// //''Todo:''\n// //* Provide a user interface to creating a reminder.\n// //* \n\n// //''Configuration:''\n// //Modify this section to change the defaults for \n// //leadtime and display strings\n\nconfig.macros.reminders = {};\nconfig.macros["reminder"] = {};\nconfig.macros["showReminders"] = {};\nconfig.macros["displayTiddlersWithReminders"] = {};\n\nconfig.macros.reminders["defaultLeadTime"] = [0,6000];\nconfig.macros.reminders["defaultReminderMessage"] = "DIFF: TITLE on DATE ANNIVERSARY";\nconfig.macros.reminders["defaultShowReminderMessage"] = "DIFF: TITLE on DATE ANNIVERSARY -- TIDDLER";\nconfig.macros.reminders["defaultAnniversaryMessage"] = "(DIFF)";\nconfig.macros.reminders["untitledReminder"] = "Untitled Reminder";\nconfig.macros.reminders["noReminderFound"] = "Couldn't find a match for TITLE in the next LEADTIMEUPPER days."\nconfig.macros.reminders["todayString"] = "Today";\nconfig.macros.reminders["tomorrowString"] = "Tomorrow";\nconfig.macros.reminders["ndaysString"] = "DIFF days";\n\n// // Code section. You should not need to edit anything // // below this. Make sure to edit this tiddler and copy \n// // the code from the text box, to make sure that \n// // tiddler rendering doesn't interfere with the copy \n// // and paste.\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 = [0,14];\n var paramHash = getParamsForReminder(params);\n var bProvidedDate = (paramHash["year"] != null) \n || (paramHash["month"] != null) \n || (paramHash["day"] != null) \n || (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 \n //sure to find it. We'll reset the \n //leadtime a few lines down.\n paramHash["leadtime"] = [-10000, 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 var elem = createTiddlyElement(place,"span",null,null, null);\n var mess = "";\n for (j = 0; j < arr.length; j++)\n {\n if (paramHash["format"] != null)\n arr[j]["params"]["format"] = paramHash["format"];\n else\n arr[j]["params"]["format"] = config.macros.reminders["defaultShowReminderMessage"];\n mess += getReminderMessageForDisplay(arr[j]["diff"], arr[j]["params"], arr[j]["matchedDate"], arr[j]["tiddler"]);\n mess += "\sn";\n }\n wikify(mess, elem, null, null);\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 = [0,14];\n var paramHash = getParamsForReminder(params);\n var bProvidedDate = (paramHash["year"] != null) \n || (paramHash["month"] != null) \n || (paramHash["day"] != null) \n || (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 \n //sure to find it. We'll reset the leadtime \n //a few lines down.\n paramHash["leadtime"] = [-10000,10000];\n }\n var matchedDate = now;\n if (bProvidedDate)\n {\n matchedDate = findDateForReminder(paramHash); \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.macros.reminders["defaultLeadTime"]; \n\n if (matchedDate != null)\n {\n var diff = matchedDate.getDifferenceInDays(new Date())\n var elem = createTiddlyElement(place,"span",null,null, null);\n var mess = getReminderMessageForDisplay(diff, dateHash, matchedDate);\n wikify(mess, elem, null, null);\n }\n else\n createTiddlyElement(place,"span",null,null, config.macros.reminders["noReminderFound"].replace("TITLE", dateHash["title"]).replace("LEADTIMEUPPER", leadTime[1]).replace("LEADTIMELOWER", leadTime[0]) );\n}\n\nhasTag = function(tiddlerTags, tagFilters)\n{\n var bHasTag = false;\n var bNegative = false;\n for (var t3 = 0; t3 < tagFilters.length; t3++)\n {\n if (tagFilters[t3].length > 1 && tagFilters[t3].charAt(0) == '!')\n bHasTag = true;\n for(var t2=0; t2<tiddlerTags.length; t2++)\n {\n if (tagFilters[t3].length > 1 && tagFilters[t3].charAt(0) == '!')\n {\n if (tiddlerTags[t2] == tagFilters[t3].substring(1))\n {\n bHasTag = false;\n return false;\n }\n else\n bHasTag = true;\n }\n else if (tiddlerTags[t2] == tagFilters[t3])\n {\n bHasTag = true;\n return true;\n }\n }\n }\n return bHasTag;\n}\n\n//This function searches all tiddlers for the reminder //macro. It is intended that other plugins (like //calendar) will use this function to query for \n//upcoming reminders.\n//The arguments to this function filter out reminders //based on when they will fire.\n//\n//ARGUMENTS:\n//baseDate is the date that is used as "now". \n//leadtime is a two element int array, with leadtime[0] \n// as the lower bound and leadtime[1] as the\n// upper bound. A reasonable default is [0,14]\n//tags is a space-separated list of tags to use to filter \n// tiddlers. If a tag name begins with an !, then \n// only tiddlers which do not have that tag will \n// be considered. For example "examples holidays" \n// will search for reminders in any tiddlers that \n// are tagged with examples or holidays and \n// "!examples !holidays" will search for reminders \n// in any tiddlers that are not tagged with \n// examples or holidays. Pass in null to search \n// all tiddlers.\n//limit. If limit is null, individual reminders can \n// override the leadtime specified earlier. \n// Pass in 1 in order to override that behavior.\n\nfindTiddlersWithReminders = function(baseDate, leadtime, tags, limit)\n{\n var matches = store.search("reminder",false,false,"title","excludeSearch");\n var macroPattern = "<<([^>\s\ss]+)(?:\s\ss*)([^>]*)>>";\n var macroRegExp = new RegExp(macroPattern,"mg");\n var arr = [];\n var tagsArray = null;\n if (tags != null)\n tagsArray = tags.split(" ");\n for(var t=matches.length-1; t>=0; t--)\n {\n if (tagsArray != null)\n {\n //If they specified tags to filter on, and this tiddler doesn't \n //match, skip it entirely.\n if ( ! hasTag(matches[t].tags, tagsArray))\n continue;\n }\n\n var targetText = matches[t].text;\n do {\n // Get the next formatting match\n var formatMatch = macroRegExp.exec(targetText);\n var matchPos = formatMatch ? formatMatch.index : targetText.length;\n var level;\n var theBlockquote;\n if(formatMatch && formatMatch[1] != null && formatMatch[1].toLowerCase() == "reminder")\n {\n //Find the matching date.\n var params = formatMatch[2].readMacroParams();\n var dateHash = getParamsForReminder(params);\n\n if (limit != null || dateHash["leadtime"] == null)\n dateHash["leadtime"] = leadtime;\n\n var matchedDate = findDateForReminder(dateHash, baseDate);\n if (matchedDate != null)\n {\n var hash = {};\n hash["diff"] = matchedDate.getDifferenceInDays(baseDate);\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 }while(formatMatch);\n }\n if(arr.length > 1) //Sort the array by number of days remaining.\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}\n\n//This function takes the reminder macro parameters and\n//generates the string that is used for display.\n//This function is not intended to be called by \n//other plugins.\ngetReminderMessageForDisplay = function(diff, params, matchedDate, tiddlerTitle)\n{\n var anniversaryString = "";\n var reminderTitle = params["title"];\n if (reminderTitle == null)\n reminderTitle = config.macros.reminders["untitledReminder"];\n if (params["firstyear"] != null)\n anniversaryString = config.macros.reminders["defaultAnniversaryMessage"].replace("DIFF", (matchedDate.getFullYear() - params["firstyear"]));\n var mess = "";\n if (diff == 0)\n diffString = config.macros.reminders["todayString"];\n else if (diff == 1)\n diffString = config.macros.reminders["tomorrowString"];\n else\n diffString = config.macros.reminders["ndaysString"].replace("DIFF", diff);\n var format = config.macros.reminders["defaultReminderMessage"];\n if (params["format"] != null)\n format = params["format"];\n mess = format;\n if (tiddlerTitle != null)\n mess = mess.replace("TIDDLER", "[[" + tiddlerTitle + "]]");\n mess = matchedDate.formatString(mess.replace("DIFF", diffString).replace("TITLE", reminderTitle).replace("DATE", matchedDate.formatString("DDD MMM DD, YYYY")).replace("ANNIVERSARY", anniversaryString));\n return mess;\n}\n\n// Parse out the macro parameters into a hashtable. This\n// handles the arguments for reminder, showReminders and \n// displayTiddlersWithReminders.\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 split = params[t].split(":");\n type = split[0].toLowerCase();\n var value = split[1];\n for (i=2; i < split.length; i++)\n value += ":" + split[i];\n if (type == "nolinks" || type == "limit" || type == "hidden")\n num = 1;\n else if (type == "leadtime")\n {\n leads = value.split("...");\n if (leads.length == 1)\n {\n leads[1]= leads[0];\n leads[0] = 0;\n }\n leads[0] = parseInt(leads[0]);\n leads[1] = parseInt(leads[1]);\n num = leads;\n }\n else if (type != "title" && type != "tag" && type != "format")\n num = parseInt(value);\n else\n {\n title = value;\n while (title.substr(0,1) == '"' && title.substr(title.length - 1,1) != '"')\n title += " " + params[++t];\n //Trim off the leading and trailing quotes\n if (title.substr(0,1) == "\s"" && title.substr(title.length - 1,1)== "\s"")\n title = title.substr(1, title.length - 2);\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}\n\n//This function finds the date specified in the reminder \n//parameters. It will return null if no match can be\n//found. This function is not intended to be used by\n//other plugins.\nfindDateForReminder = function( dateHash, baseDate)\n{\n if (baseDate == null)\n baseDate = new Date().getMidnight();\n var leadTime = dateHash["leadtime"];\n var bOffsetSpecified = dateHash["offsetyear"] != null \n || dateHash["offsetmonth"] != null\n || dateHash["offsetday"] != null\n || dateHash["offsetdayofweek"] != null\n || dateHash["recurdays"] != null;\n \n if (leadTime == null)\n leadTime = config.macros.reminders["defaultLeadTime"]; \n var matchedDate = baseDate.findMatch(dateHash, bOffsetSpecified ? [0, 6000] : 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 //The offset couldn't be matched. return null.\n if (newMatchedDate == null)\n return null;\n }\n var diff2 = newMatchedDate.getDifferenceInDays(baseDate);\n if (diff2 <= leadTime[1] && diff2 >= leadTime[0])\n return newMatchedDate;\n }\n return null;\n}\n\n//This does much the same job as findDateForReminder, but\n//this one doesn't deal with offsets or recurring \n//reminders.\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\n //Shortcut -- First try this year. If it's too small, try next year.\n var tmpMidnight = this.getMidnight();\n var tmpLeadTime = this.addDays(leadTime[0]).getMidnight();\n var tmpDate = Date.convertFromYYYYMMDDHHMM("" + this.getFullYear() + String.zeroPad(dateHash["month"],2) + String.zeroPad(dateHash["day"],2) + "0000");\n if (tmpDate.getTime() < tmpLeadTime.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\n if (diff2 <= leadTime[1] && diff2 >= leadTime[0])\n return tmpDate;\n else\n return null;\n }\n\n for (i = 0; i <= leadTime[1]; 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//Only search backwards if we're not just trying to match the dayofweek\nif (leadTime[0] < 0 && (bSpecifiedYear || bSpecifiedMonth || bSpecifiedDay))\n for (i = 0; i >= leadTime[0]; i+=(searchInterval * -1))\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//Return a new date, with the time set to midnight (0000)\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//Return the number of days between two dates.\nDate.prototype.getDifferenceInDays = function(otherDate)\n{\n return Math.floor((this.getMidnight().getTime() - otherDate.getMidnight().getTime()) / 86400000);\n \n}\n
//The reminder macro can take the following arguments ://\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!!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!!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!!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"}}}. You can put standard TiddlyWiki formatting in the title.\n* @@{{{format:"STRING"}}}@@ - Use this argument to override the default string used for display. You can put standard TiddlyWiki formatting in the format. 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}}}. This is used when calculating the number of years that a reminder has happened.\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!!![[JeremySheeley|http://www.geocities.com/allredfaq/reminderMacros.html]]
Wooh, you're back from week-end !\nSome miscellanous comments to last posts :\n\n''Deb :''\n<<<\nOr perhaps you meant:\n 1. I appear to have come up with a new and innovative way to deal with my SMs that may help others\n<<<\nNot so : it was already part of the organisation system I first promoted on Palm lists (labeled CyberPoche) since 2000 (maybe before I got really aquainted with GTD ! ). __If__ computerized, //dump//, //tag// and leave as is : //do not organize// (that's computer's job)!\n<<<\n 2. This may advance how people use GTD\n<<<\nThat's the benefit of sharing ideas, tips and practices on such a list !\n<<<\nThis may be something that people who are finding it hard to trust their SM list can use!\n<<<\nThanks.\nI decided to participate more when Charles and Steve publish their chapter summaries : when reading Charles'ch6 I was delighted to read :\n>...incubate\n> Two options:\n> Write them on a Someday/Maybe Lists\n> Put them on your calendar or tickler file (interesting that the tickler is not mentioned on the diagram)\n>Either method will get it off your mind RIGHT NOW and you will be confident that the item will appear in the future. \nBecause I didn't remembered the two options were proposed by David in his book, and because I've long ago choosen the second option. So, when I started this thread, it really was a genuine check from my part : "//Do we all need SM lists ?//"\n----\n''Nico :''\n<<<\nsynthesize what is actually discussed ?\nPlease ?\n<<<\n<kidding (half)>\nWeel, you might browse the thread from the beginning : not that long :)\n<kidding (/half)>\nMaybe it depends of the mailer we use : I'm using Gmail for lists, where browsing (or, at times, skipping) "//conversations//" is a pleasure.\nBut, when this thread will have died, I'll use it to write a summary (clearer than my first post was, thanks !)\n----\n''Dennis :''\n<<<\nMaybe I could deal with it if I had the S/Ms grouped by some higher altitude categories. I could dip into categories that might add what I needed to balance my projects list.\n<<<\nThis probably is a good idea, but it wouldn't work for me, as I know me : \n# That is already spending process time to organize what are often only a down feather in the sky,\n# There might be categories I'd like to, er, procrastinate, whilst with reminder system you don't organize, and any dumped comes one day or the other back to your face (and probably in a more relaxed context).\n----\n''Dennis :''\n<<<\nJacques:\nYou've inspired me. I have very little in 12 of my 43 folders. What a great place to put paper lists or groups of index cards for projects that are now Someday/Maybes.\n<<<\nWell, Dennis, you inspire me too :\nI never thought doing the same for the __physical__ tickler: I think I won't enter as much collected stuff in computer now, but, quite often, leave the original note as it is, or the (hilighted) doc that triggers SM thoughts. Nice idea !\n----\n''kal :''\n<<<\nSort of a place to note your dreams and crazy wishes so you get one step closer to actually making them happen.\n\nIn the sense that such a function is both fun and effective, I say the S/M lists are very necessary!\n<<<\nI'm fully tuned with this. Less effort, more fun.\nThe point is not to make a closure on what you //should// one day do, but to keep //producing// maybe-dos : even if they're never done as you wrote them, you'll get much more productive when - if a block - you need to find a new idea. Creativity is the result of an every day training (or way of being). But that was a former thread.\n<<<\nI would think the longer-term S/Ms could\nbe a good starting point for a higher-level review.\n<<<\nSure. Either SM list, either reminders, you have to cross WR with higher reviewes : project assessment review, quarterly,.. annual reviewes, life change review, etc.\n\n\nThanks to all,\n5An
Charles Cave : ''Someday/One Day items should be reviewed''\n\n2005/10/23, Charles Cave <charlesweb@optusnet.com.au>:\n<<<\n All of the Someday/One Day items should be reviewed at each weekly review so there shouldn't be any reason for them to be forgotten.\n<<<\nSo, that is the "//law//". Can't be bad, surely good to start with.\nWhat if it was written slightly differently :\n<<<\nAll of the Someday/One Day items should be reviewed at a weekly review so no opportunity to activate them would be missed.\n<<<\nThe objective is the same, but not the work.\n\nMaybe this is a question of volume, maybe it depends what each other catalogs as a S/M : I'm presently with over 270 SM. Reviewing all of them each week would be overhelming, tedious, and 80% a waste of time !\n\n!!Reminder to process option\nSay, these three items are differed at process time :\n__Processed item : ''//Hire ressources//''__\n#If I do not need it now, but could very soon have to consider it, I would put my reminder to next week review: 5w44 (and I would probably already dump in it first actions that come to mind).\n#If I wrote it because I'm running a biz that has a peek volume at Xmas, I could put my reminder in four weeks : 5w47 because I know I will not have foresight for such a decision before : I won't waste time in my 5w44, 5w45, 5w46 WR for this.\n#If I wrote it because I spotted a usefull story on "//Hiring ressources//", and want to keep it as reference with no hiring project in sight now, I'll maybe put a reminder (although there is no action) in 6 months, say 6w13 (can be approximated !) or one year 6w43 : at those reviewes, if I didn't knocked on it before I'll ask myself : is it worth to still keep it, should I update it, or have better to trash it ?\n\nWith the "pure" SM system I would have reviewed #1 (ok), I would have reviewed #2 three times for nothing, and I would probably never have checked thouroughly enough my fattening files, among which "//Hiring ressources//".\n\nYou can say : "//and if some event arise which calls to activate a SM far before your reminder date ?//"\nWell, here is the use of other tags (I consider Reminders as a timescale tag). For instance #1 and #2 could have also those three tags along :\n"//~MyToyBiz, Profit, Staff//" and #3 "//Clips, Management, Staff//". So, at WR, I review active projects, reminders for that WR, and __all my tags__ (not all my SM !) : then if a tag is felt somewhat "critical" now, it's easy to drag all that is related to it, and review what's appropriate (should I say I'm computerized at process and review times).\n\nI knew my title for this thread was somewhat provocative : I do not question the use or S/M concept, but its "stick-to-the-text" practice. I understand David has to remain simple and not get learners lost by too many options and subtelties, and provide rules anybody can share and practice, that is without a computing aid. As in my computing tool I'm polishing (PimliPoche) I realized, reading your summary, I didn't have a SM tab (because I myself never use it as such). I tickler not only NAs, but everything I let stay in my system.\n\nMoreover, yourself are summarizing them as two //options// !\n<<<\n I am finding it very beneficial to review the Somedays each week for a few reasons: ( ... )\n<<<\nHere, of course I fully agree with what you write : I'm singing the same song around me :)\nYou said : \n<<<\n The tickler system is used to schedule Next Action items which are part of your current projects. The Someday/One Day items at this point are just ideas and thoughts about things to do in the future.\n<<<\nHere is (maybe?) our difference :\nIs GTD book a law to comply to, or a guide to build our own system ?\n\n--\n\nJacques\n• Demo : http://avm.free.fr/en/EN-PimliPoche.html\n• French : http://avm.free.fr/apps/PimliPocheFr.zip\n• bLog : http://avm.online.fr/tidlipo.html\n• site : http://avm.online.fr\n5Ah\n\n\n\n5Ah\n!!<<reminder year:2005 month:10 day:31 title:"nextAction" >>
config.macros.timeline.handler = function(place,macroName,params)\n{\nvar tiddlers = store.reverseLookup("tags","excludeLists",false,"modified");\nvar lastDay = "";\nvar nbTLitemmax=23;\nvar nbTLitem=0;\nfor (t=tiddlers.length-1; t>=0; t--)\n{\nif (nbTLitem>=nbTLitemmax) break; else nbTLitem++;\nvar tiddler = tiddlers[t];\nvar theDay = tiddler.modified.convertToYYYYMMDDHHMM().substr(0,8);\nif(theDay != lastDay)\n{\nvar theDateElement = document.createElement("span");\nvar theDateCaption = tiddler.modified.toLocaleDateString();\ntheDateElement.appendChild(document.createTextNode(theDateCaption));\nplace.appendChild(theDateElement);\nplace.appendChild(document.createElement("br"));\nlastDay = theDay;\n}\n\nplace.appendChild(document.createTextNode(String.fromCharCode(160)));\nplace.appendChild(document.createTextNode(String.fromCharCode(160)));\ncreateTiddlyLinkShortened(place,tiddler.title,true);\nplace.appendChild(document.createElement("br"));\n\n}\n}\n\nfunction createTiddlyLinkShortened(place,title,includeText)\n{\nvar maxLen = 25;\nvar displayTitle;\n\nif (title.length > maxLen)\ndisplayTitle = title.substring(0,maxLen).trim()+"...";\nelse\ndisplayTitle = title;\n\nvar text = includeText ? displayTitle : null;\nvar subTitle;\nvar tiddler = store.tiddlers[title];\nif(tiddler)\nsubTitle = tiddler.getSubtitle();\nelse\nsubTitle = title + config.messages.undefinedTiddlerToolTip;\nvar theClass = tiddler ? "tiddlyLinkExisting tiddlyLink" :\n"tiddlyLinkNonExisting tiddlyLink";\nvar btn =\ncreateTiddlyButton(place,text,subTitle,onClickTiddlerLink,theClass);\nbtn.setAttribute("tiddlyLink",title);\nreturn(btn);\n\n}
!!<<reminder year:2005 month:10 day:31 title:"nextAction" >>\n\nI do a systematic use of Reminder macro for Next actions, and filtered reminders lists. Thanks Jeremy Sheeley :)\n\n=> Could I ask for :\n* a TAG variable in output format : would display the tag (if any) of the calling reminder.\n* a TAGS variable : would displays all the tags of the reminded tiddlers.\n\nIMHO, Reminder/showReminders deserve a button in editor toolbar that would display a dialogbox ala "Import", and then paste the completed macro at cursor position ;)
I do a systematic use of Reminder macro for Next actions, and filtered reminders lists. Thanks Jeremy Sheeley :)\n\n=> Could I ask for :\n* a TAG variable in output format : would display the tag (if any) of the calling reminder.\n* a TAGS variable : would displays all the tags of the reminded tiddlers.\n\nIMHO, Reminder/showReminders deserve a button in editor toolbar taht would display a dialogbox ala "Import", and then paste the completed macro at cursor position ;)\n\nBut here is a problem I buimped into this morning and didn't diagnose :\n<<<\nXP sp2, FF 1.07, TW 1.2.35,Reminder plugin 2.2 \n\nReminder created in this tiddler displays well :\n\ntitle: Contributions Sociales\ntags: Impôts, Payer, ~05.10.16, :inBox\nbody: !!!!<< reminder year:2005 month:11 day:15 title:"Payer xx1€">>\n\nBut showReminders doesn't display this reminder in :\ntitle: Impôts\ntags: index, ~05.10.16, :inBox\nbody: <<showReminders leadtime:600 tag:"Impôts" format:"|DD.0MM|DIFF|TAG|TITLE|TIDDLER|">>\n\nIf I replace "Impôts" by ":Office" in this, then I get all right my tag:":Office" reminders.\n\nIf I replace "Impôts" by "Impots" (everywhere in the TW file)), then again I don't get my "Impot" tagged reminder.\n\nSame, if I list all my reminders :\n\nbody: <<showReminders leadtime:600 format:"|DD.0MM|DIFF|TITLE|TIDDLER|">>\n\nI have a nice display, but still without my new "Payer xx1€" ?\n\nI just import the case in here :\n<<<\n\n\ntitle:\ntags:\nbody:\n\ntitle:\ntags:\nbody:\n\n
<<importTiddlers>><<slider chkSliderOptionsPanel OptionsPanel options 'Change TiddlyWiki advanced options'>>
// // ''[[Single Page Mode Plugin|http://www.elsdesign.com/tiddlywiki/#SinglePageModePlugin]] for TiddlyWiki version 1.2.31 or above''\n// // ''Eric Shulman - ELS Design Studios''\n\nversion.extensions.SinglePageMode= {major: 1, minor: 0, revision: 0, date: new Date(2005,8,13)};\n\nif (config.options.chkSinglePageMode==undefined) config.options.chkSinglePageMode=false;\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSinglePageMode>> Display one tiddler at a time";\n\nwindow.coreDisplayTiddler=window.displayTiddler;\nwindow.displayTiddler = function(src,title,state,highlightText,highlightCaseSensitive,animate,slowly)\n{\n if (config.options.chkSinglePageMode) closeAllTiddlers();\n coreDisplayTiddler(src,title,state,highlightText,highlightCaseSensitive,animate,slowly);\n}\n\n
[[ • ]] ''[[Current Goals]], [[ Hotest now|:Hotest]], [[First actions|Do First]]'', [[:Reference data]], [[Routines|:Routines]], [[Interests]] and [[Lists|:Lists]] [[ ~ ]]
<<tag PimliPoche>> <html><br></html>~~^^//GTD styled TiddlyWiki//^^~~
http://www.tiddlywiki.com/
/* Stylesheet\n! PimliPoche stylesheet for Core TiddlyWiki\n{{{\n*/\nbody { background-color: #fdfcff; font: 8pt sans-serif, "Lucida Grande", "Trebuchet MS", "Bitstream Vera Sans", Verdana, Helvetica }\n\ndiv[tags~="-Modèles"].viewer { background-color: #e6e6fa }\ndiv[tags~="Aide"].viewer { background-color: #dfd }\ndiv[tags~="Citations"].viewer {background-color: #FFFFFF; color: #006000;}\ndiv[tags~="Faq"].viewer {background-color: #E8FFEC;}\ndiv[tags~="Suggestions"].viewer {background-color: #FFF0BD; color: #004000;}\ndiv[tags~="z"]#titleLine { display: none; }\nhr { color: #008080; margin: 7px 0; height: 1px; border-style: dotted none none; border-width: 1px medium medium; border-color: #777 }\n\n#mainMenu { font-size: 8pt; line-height: 1.2em;background-color: #f8f8ff; margin-top: 5px; margin-bottom: 5px; margin-left: 5px; padding: 5px; position: static; width: 12em; border-style: none solid solid none; border-width: 0 1px 1px 0; border-color: #add8e6; -moz-border-radius: 10px }\n#mainMenu .externalLink:hover {background-color: #ddddff;color: #ffffff; text-decoration: underline;}\n#mainMenu .externalLink{color: #4275A8;text-decoration: none}\n#mainMenu .tiddlyLink {color: #4682b4;}\n#mainMenu .tiddlyLink:hover {background-color: #4444ff;color: #ffffff;}\n#mainMenu h1 { font-size: 9pt }\n#mainMenu h1 .tiddlyLink { color: #fff; font-size: 9pt }\n#mainMenu jsty2 { font-size: 8pt }\n#mainMenu jsty2 .tiddlyLink { color: #fff; font-size: 8pt }\n\n#displayArea { margin: 1em 17em 0 12.5em; padding-left: 3em }\n\n#popup { background-color: #4275A8; color: #FFF;border-right: 2px solid #BCBCBC;border-bottom: 2px solid #BCBCBC;}\n#popup a {color: #EEE;}\n#popup a:hover {background-color: #6699CC;color: #FFF;}\n\nspan th {border: 0;padding: 1px; font-size:6pt;background-color: #DCF;}\nspan td {border: 0;padding: 1px; font-size:6pt;}\n.tabContents { background-color: #9999f9; padding: 0.5em }\n\n.tiddler .button { color: #6699cc; border-style: solid; border-width: 1px 2px 2px 1px; border-color: #cfcfcf #d6e7ff #d6e7ff #cfcfcf }\n.tiddler .button:active {background-color: #FFF;color: #4275A8; }\n.tiddler .button:hover { color: #fff; background-color: #6699cc; border-style: solid; border-width: 2px 1px 1px 2px; border-color: #b0e0e6 #ddd #cfcfcf #b0e0e6 }\n.title { color: #483d8b; font-size: 10pt; font-weight: bold; background-color: #d6e7ff; display: inline; margin: 0; padding-right: 30px; padding-left: 30px; border-style: solid; border-width: 1px 2px 2px 1px; border-color: #dcdcdc #87ceeb #87ceeb #dcdcdc; -moz-border-radius: 10px }\n.toolbar { color: #000000; font-size: 8px; background-color: #f4ffff; margin-bottom: 2px; margin-left: 50%; padding: 5px 8px 3px 5px; height: 1.3em; border-right: 2px solid #dcdcdc; border-bottom: 2px solid #dcdcdc; -moz-border-radius: 6px }\n.toolbar #popup {color: #ffffff; background-color: #4275A8; border-right: 2px solid #BCBCBC; border-bottom: 2px solid #BCBCBC;}\n.toolbar #popup a {color: #EEE; }\n.toolbar #popup a:hover {color: #ffffff; background-color: #6699CC; }\n.toolbar A {color: #4275A8;}\n.toolbar A:active {color: #ffffff; background-color: #4275A8;}\n.toolbar A:hover {color: #ffffff; background-color: #6699CC;}\n\n.unselectedTiddler {padding: 0px 2px 0px 2px;}\n\n.viewer #popup {background-color: #4275A8; color: #FFF;border-right: 2px solid #BCBCBC;border-bottom: 2px solid #BCBCBC;}\n.viewer #popup a {color: #6699CC;}\n.viewer #popup a:hover {background-color: #6699CC;color: #FFF;}\n.viewer .button {background-color: transparent;}\n.viewer .button:active {background-color: #FFF;color: #4275A8;}\n.viewer .button:hover {background-color: #6699CC;color: #FFF;}\n.viewer .tabContents {border: 1px solid #555; padding: 0px 3px 3px 3px; background-color: #FBFBFB;}\n.viewer .tabContents #popup {background-color: #4275A8; color: #FFF;border-right: 2px solid #BCBCBC; border-bottom: 2px solid #BCBCBC;}\n.viewer .tabContents #popup a {color: #EEE;}\n.viewer .tabContents #popup a:hover {background-color: #6699CC;color: #FFF;}\n.viewer .tabContents .button {color: #4275A8;}\n.viewer .tabContents .button:active {background-color: #FBFBFB; color: #4275A8;}\n.viewer .tabContents .button:hover {background-color: #6699CC; color: #FFF;}\n.viewer .tabContents .tiddlyLink {color: #4275A8;}\n.viewer .tabContents .tiddlyLink:hover {color: #FFF;background-color: #4275A8;}\n.viewer .tabContents hr{color: #FFF;}\n.viewer .tabContents span {font-weight: bold;}\n.viewer .tabSelected { color: 4275A8; background-color: #f0ffff; padding: 0 3px 3px; border-style: solid; border-width: 1px 1px 0 0; border-color: #6495ed }\n.viewer .tabUnselected { color: #03c; background-color: #add8e6; padding: 0 3px; border-style: solid; border-width: 1px 1px 0 0; border-color: #555 }\n.viewer .txtMoreTab .tabContents .tiddlyLink {color: #4275A8;}\n.viewer .txtMoreTab .tabContents .tiddlyLink:hover {color: #FFFFFF;}\n.viewer .txtMoreTab .tabContents { color: #000;background-color: #FBFBFB;}\n.viewer .txtMoreTab .tabSelected {border-top: 1px solid #555; border-left: 1px solid #555; border-right: 1px solid #555; border-bottom: 0px solid #555; font-weight: bold; color: #4275A8; background-color: #F2F2F2; padding: 0px 3px 3px 3px; }\n.viewer .txtMoreTab .tabUnselected {border-top: 1px solid #555; border-left: 1px solid #555; border-right: 1px solid #555; border-bottom: 0px solid #555; font-weight: normal; color: #4275A8; background-color: #DCDCDC; padding: 0px 3px 0px 3px;}\n.viewer { background-color: #f0f8ff; padding: 10px; z-index: -2; border: solid 1px #dcdcdc }\n.viewer { background-color: #f0ffff; padding: 10px; z-index: -2; border-style: solid; border-width: 1px; border-color: #dcdcdc #d6e7ff #afeeee #dcdcdc; -moz-border-radius: 10px }\n.viewer a:hover { color: #ffffff; background-color: #4275A8;}\n.viewer a:link, .body a:visited {text-decoration: none; color: #4275A8;}\n.viewer caption { color: #03c; font-size: 10pt; padding: 3px }\n.viewer code {background: #EAEAEA;color:#3C6FA2;}\n.viewer h1 { color: #000000; background-color: #d6e7ff; text-align: center }span h1 { font-size:100%; color: #FFF; text-align: center; }\n.jsty2 { color: #005; font-size: 80%; font-weight: normal; display: block; margin: 0.2em 0 0; padding-right: 5em; padding-left: 5em; background-color: transparent; }\n.jsty3 { color: #000000; background-color: #d6e7ff; text-align: center }\n.jsty4 { color: #000000; font-size: 8pt; background-color: #ffffbb; text-align: center; margin-right: 2px !important; margin-left: 2px; padding: 0.2em 0.4em; border-style: solid; border-width: 1px; border-color: #ffffcc #330000 #330000 #ffffcc }\n.jsty5 { color: #552222; font-size: smaller; font-weight: normal; background-color: transparent; text-align: right; display: block; margin: 0 0 1em }\n.viewer hr { color: #777; margin: 7px 0; height: 1px; border-style: dotted none none; border-width: 1px medium medium; border-color: #4682b4 }\n.viewer input { border: 0px solid black;color:#4275A8;}\n.viewer pre { border:1px solid #CBCBCB; margin:5px;padding: 2px;background: #EAEAEA;color:#3C6FA2;}\n.viewer table { font-size: 8pt; margin: 5px; border: solid 1px #87ceeb; border-collapse: collapse }\n.viewer td { font-size: 8pt; padding: 3px; border: solid 1px #87cefa }\n.viewer th { color: #f0ffff; font-size: 8pt; font-weight: bold; background: #6a5acd; padding: 3px; border: solid 1px #aaa }\n\n#sidebar { color: #000; font-size: 8pt; background-color: #efefff; margin-top: 5px; margin-right: 5px; padding: 5px; left: 5; width: 13.5em; border-style: none solid solid none; border-width: 1px; border-color: #87ceeb; -moz-border-radius: 10px }\n#sidebar a {color: #4275A8;}\n#sidebar a:active {background-color: #FFF;color: #4275A8;}\n#sidebar a:hover {background-color: #6699CC;color: #FFF;}\n#sidebar input { color: #4275a8; background-color: #fff; border: solid 1px #00ced1 }\n\n#sidebarOptions .button {color: #6699CC;}\n#sidebarOptions .button:active {background-color: #FFF;color: #4275A8;}\n#sidebarOptions .button:hover {background-color: #6699CC;color: #FFF;}\n#sidebarOptions .sliderPanel { background-color: #f8f8ff }\n#sidebarOptions .sliderPanel A {color: #4275A8;}\n#sidebarOptions .sliderPanel A:active {color: #FFF;background-color: #4275A8;}\n#sidebarOptions .sliderPanel A:hover {color: #FFF;background-color: #6699CC;}\n#sidebarOptions {padding-top: 3px; background-color: #FBFBFB;color:#000; -moz-border-radius: 10px;}\n#sidebarTabs { color: #880000; background-color: #f0ffff; padding: 0 3px 3px }\n#SidebarTabs .listTitle {font-weight: bold; color: #4275A8;}\n#sidebarTabs .tabContents { background-color: #f8f8ff; padding: 0 3px 3px; border: solid 1px #87ceeb }\n#sidebarTabs .tabContents #popup {background-color: #4275A8; color: #FFF;border-right: 2px solid #BCBCBC; border-bottom: 2px solid #BCBCBC;}\n#sidebarTabs .tabContents #popup a {color: #EEE;}\n#sidebarTabs .tabContents #popup a:hover {background-color: #6699CC;color: #FFF;}\n#sidebarTabs .tabContents .button {color: #4275A8;}\n#sidebarTabs .tabContents .button:active {background-color: #FFF;color: #4275A8;}\n#sidebarTabs .tabContents .button:hover {background-color: #6699CC; color: #FFF;}\n#sidebarTabs .tabContents .tiddlyLink {color: #4275A8;}\n#sidebarTabs .tabContents .tiddlyLink:hover {color: #FFF;background-color: #4275A8;}\n#sidebarTabs .tabContents hr{color: #FFF;}\n#sidebarTabs .tabContents span {font-weight: bold;}\n#sidebarTabs .tabSelected { color: #00c; font-weight: bold; background-color: #fbfbfb; padding: 0 3px 3px; border-style: solid; border-width: 1px 1px 0 0; border-color: #87cefa #87cefa #555 #555 }\n#sidebarTabs .tabUnselected { color: #4275a8; background-color: #d6e7ff; padding: 0 3px; border-top: 1px solid #cfcfcf; border-right: 1px solid #cfcfcf; border-bottom: 0 none; border-left: 0 none }\n#sidebarTabs .txtMoreTab .tabContents { color: #008800; background-color: #d6e7ff }\n#sidebarTabs .txtMoreTab .tabContents .tiddlyLink {color: #efeffe;}\n#sidebarTabs .txtMoreTab .tabContents .tiddlyLink:hover {color: #FFFFFF;}\n#sidebarTabs .txtMoreTab .tabSelected { color: #4275a8; font-weight: bold; background-color: #f0f8ff; padding: 0 3px 3px; border-style: solid; border-width: 1px 1px 0 0; border-color: #add8e6 }\n#sidebarTabs .txtMoreTab .tabUnselected { color: #4275a8; font-weight: normal; background-color: #add8e6; padding: 0 3px; border-style: solid; border-width: 1px 1px 0 0; border-color: #888 }\n#sidebarTabs a {color: #4275A8;}\n#sidebarTabs a:active { color: #cff; background-color: #4275a8 }\n#sidebarTabs a:hover {color: #FFF; background-color: #4275A8;}\n\n#pinBoard { color: #ffc; font-size: 7pt; line-height: 1.2em; background-color: #39c; visibility: visible; margin: 0.5em; position: absolute; top: 3.3em; right: 0; width: 18em; float: right; border-left: 4px solid #03c; border-bottom: 4px solid #03c;-moz-border-radius: 10px }\n#pinBoard .button { color: #993300; }\n#pinBoard .button:hover { color: #ccff66; background-color: #993300; }\n#pinBoard .externalLink { color: #996633; text-decoration: underline; }\n#pinBoard .externalLink:hover { background-color: #996633; color: #ffffff; }\n#pinBoard .tiddlyLink { color: #deefff; }\n#pinBoard .tiddlyLink:hover { background-color: #996633; color: #ffffff; }\n\n\n#pinboard a {color: #A87542;}\n#pinboard a:active {background-color: #FFF;color: #A87542;}\n#pinboard a:hover {background-color: #6699CC;color: #def;}\n\n\n#pinboard input { color: #4275a8; background-color: #def; border: solid 1px #00ced1 }\n\n#siteTitle { color: #fafad2; font-size: 20pt }\n#titleLine { color: #ffffff; background-color: #408 !important; padding: 5px }\n\n.editor input {font-family: Courier, MS Courier New, Prestige, Everson Mono; background:#ffe; border:solid #aa9 2px; margin:4px; font-size: 8pt;}\n.editor textarea {font-family: Courier, MS Courier New, Prestige, Everson Mono; background:#ffe; border:solid #aa9 2px; margin:4px; font-size: 8pt; height: 350;}\n.selectedTiddler {padding: 0px 2px 0px 2px;}\n\n.sidebarSubHeading {font-size: 7pt;color: #FBFBFB;}\n\n.span, span.marked {background-color: transparent;}\n\n\n.zoomer{ visibility: hidden;\n}\n/*\n}}}\n*/\n/*\n/*\n! Start Calendar CSS\n{{{\n*/\n#mainMenu #calendarWrapper { display: block; }\n.viewer #calendarArea { width: 220px; }\n#calendarWrapper { background-color: #4682B4; font-size: 8pt; }\n#calendarWrapper table { width: 100%; background-color: #4682B4; border-collapse: collapse; padding: 0px; margin: 0px; border: none; cursor: pointer; }\n#calendarWrapper td { border: 1px solid #4682b4; }\n#calendarWrapper #calendarArea {}\n#calendarWrapper #calendarTable .calendarCell { display: block; width: 100%; cursor: pointer; text-align: inherit; }\n#calendarWrapper #calendarHeader { font-weight: normal; width: 100%; text-align: center; font-size: 8pt; color: #ffffff; }\n#calendarWrapper #calendarHeader tr { width: 100%; }\n#calendarWrapper #calendarHeader td { padding: 1px 2px 1px 2px; }\n#calendarWrapper #calendarHeader .selectMonth {}\n#calendarWrapper #calendarHeader .selectYear {}\n#calendarWrapper #calendarHeader .selectToday { width: 100%; }\n#calendarWrapper #calendarTable { width: 100%; text-align: center; color: #000000; background-color: #ffffff; font-size: 8pt; }\n#calendarWrapper #calendarTable td { width: 14%; }\n#calendarWrapper #calendarTable .weekNames { color: #ffffff; background-color: #87cefa; }\n#calendarWrapper #calendarTable .weekDay { background-color: #dbeaf5; }\n#calendarWrapper #calendarTable .currentDay { background-color: #ffb6c1; }\n#calendarWrapper #calendarTable .workingDay { background-color: #ffffff; }\n#calendarWrapper #calendarTable .scheduledDay { background-color: #444444; color: #ffffff; }\n/*\n}}}\n! End Calendar CSS\n*/\n.class { }\n\n
| !''JT law :''| ''system usage value = k / (system loseness)²'' |
!!!Jeudi 8 Septembre 2005 9:46\n<<<\n# Lorem ipsum \n# dolor sit amet\n# consectetuer adipiscing \n# Quisque sed felis\n# Mauris semper\n# semper laoreet dictum\n# diam dictum \n<<<\nTu trouveras ci-dessous la liste des participants, ainsi que leurs mails.\nTu peux donc lancer les questionnaires.\nA ta dispo pour toute autre info.\nA bientôt.\n!!Greg Dwater\n!!Project Manager\n!!01 55 80 50 56\n!!g-Dwater@bigcompany.com\n!!<<reminder year:2005 month:10 day:23 title:"Doc TT7">>
''[[ Macros|http://checketts.objectis.net/wiki/#Macros]] • [[Internal macros|http://phpetterson.objectis.net/#%5B%5BInternal%20Macros%5D%5D]]'' • [[Alias|http://www.elsdesign.com/tiddlywiki/#AliasPlugin]] • [[AllTagsExcept macro|http://checketts.objectis.net/wiki/#%5B%5BallTagsExcept%20Macro%5D%5D]] • [[Attach File|http://www.elsdesign.com/tiddlywiki/#AttachFilePlugin]] • [[Auto Pre formating|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BAuto%20Pre%20Formatting%20Plugin%5D%5D]] • [[AutoTagger|http://www.elsdesign.com/tiddlywiki/#AutoTaggerPlugin]] • [[Batch processing|http://www.personal.psu.edu/staff/a/c/ach12/tiddlywiki/extensions.htm#%5B%5BBatch%20Processing%20Demo%20(try%20it%20out)%5D%5D]] • [[batchprocess macro|http://checketts.objectis.net/wiki/#%5B%5Bbatchprocess%20Macro%5D%5D]] • [[Blog|http://checketts.objectis.net/wiki/#%5B%5BBlog%20Plugin%5D%5D]] • [[Calendar macro|http://checketts.objectis.net/wiki/#%5B%5BCalendar%20Macro%5D%5D]] • [[Calendar|http://www.rumsby.org/yatwa/#CalendarPlugin]] • [[Close others|http://www.rumsby.org/yatwa/#CloseOthersPlugin]] • [[Close unsaved cancel|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BClose%20Unsaved%20On%20Cancel%20Plugin%5D%5D]] • [[Collapse|http://checketts.objectis.net/wiki/#%5B%5BCollapse%20Plugin%5D%5D]] • [[Collapse|http://www.rumsby.org/yatwa/#CollapsePlugin]] • [[Comma separated tags|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BComma%20Separated%20Tags%20Plugin%5D%5D]] • [[Custom hover dates|http://www.personal.psu.edu/staff/a/c/ach12/tiddlywiki/extensions.htm#%5B%5BCustom%20hover%20dates%5D%5D]] • [[Dump macro|http://phpetterson.objectis.net/#config.macros.dump]] • [[Duplicate|http://checketts.objectis.net/wiki/#%5B%5BDuplicate%20Plugin%5D%5D]] • [[Duplicate|http://www.rumsby.org/yatwa/#DuplicatePlugin]] • [[email macro|http://www.personal.psu.edu/staff/a/c/ach12/tiddlywiki/extensions.htm#EmailLink]] • [[Encryption|http://www.rumsby.org/yatwa/#EncryptionPlugin]] • [[Extra custom style|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BExtra%20Custom%20Styles%20Plugin%5D%5D]] • [[FaqList macro|http://checketts.objectis.net/wiki/#%5B%5BfaqList%20Macro%5D%5D]] • [[Favicon|http://www.personal.psu.edu/staff/a/c/ach12/tiddlywiki/extensions.htm#Favicon]] • [[Favorite styles|http://15black.bluedepot.com/#%5B%5BFavorite%20Styles%5D%5D]] • [[Focus tweak|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BFocus%20Tweak%20Plugin%5D%5D]] • [[Get version and date macro|http://checketts.objectis.net/wiki/#%5B%5BGet%20Version%20and%20Date%20Macro%5D%5D]] • [[Gmail|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BGmail%20Plugin%5D%5D]] • [[History Navigator|http://gslocock.pwp.blueyonder.co.uk/Navigator_1.0.html#Navigator]] • [[HTML formatting|http://www.elsdesign.com/tiddlywiki/#HTMLFormattingPlugin]] • [[Image link|http://www.personal.psu.edu/staff/a/c/ach12/tiddlywiki/extensions.htm#EmailLink]] • [[Import tiddlers plugins|http://www.elsdesign.com/tiddlywiki/#ImportTiddlersPlugin]] • [[List macro|http://checketts.objectis.net/wiki/#%5B%5Blist%20Macro%5D%5D]] • [[listTags|http://www.rumsby.org/yatwa/#listTagsPlugin]] • [[List with tags|http://phpetterson.objectis.net/#%5B%5BPlugin%20list.withTags%5D%5D]] • [[Move message area|http://www.rumsby.org/yatwa/#%5B%5BMoveMessageArea%20plugin%5D%5D]] • [[New Here button|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BNew%20Here%20Button%20Plugin%5D%5D]] • [[New journal macro|http://checketts.objectis.net/wiki/#%5B%5BnewJournal%20Macro%5D%5D]] • [[No default text|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BNo%20Default%20Text%20Plugin%5D%5D]] • [[Reminders macro|http://checketts.objectis.net/wiki/#%5B%5BReminders%20Macro%5D%5D]] • [[Reminders|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BReminders%20Plugin%5D%5D]] • [[Select stylesheet|http://www.elsdesign.com/tiddlywiki/#SelectStylesheetPlugin]] • [[Shorten tab links|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BShorten%20Tab%20Links%5D%5D]] • [[Shorten tabs links|http://www.rumsby.org/yatwa/#ShortenTabLinksPlugin]] • [[Single page mode|http://www.elsdesign.com/tiddlywiki/#SinglePageModePlugin]] • [[Slider macro|http://checketts.objectis.net/wiki/#%5B%5Bslider%20Macro%5D%5D]] • [[Smiley|http://www.rumsby.org/yatwa/#SmileyPlugin]] • [[Smileys insert|http://www.personal.psu.edu/staff/a/c/ach12/tiddlywiki/extensions.htm#InsertSmiley]]\n• [[StudentEdition package|http://15black.bluedepot.com/twtests/tiddlywikise.htm#%5B%5BTiddlyWikiSE%20Package%5D%5D]] • \n[[StudentEdition stylesheet|http://15black.bluedepot.com/twtests/tiddlywikise.htm#StyleSheet]] • [[Stylesheets|http://www.rumsby.org/yatwa/#StyleSheets]] • [[Table of contents|http://www.elsdesign.com/tiddlywiki/#TableOfContentsPlugin]] • [[TableTags macro|http://phpetterson.objectis.net/#tableTags]] • [[Tabs macro|http://checketts.objectis.net/wiki/#%5B%5Btabs%20Macro%5D%5D]] • [[Tag macro|http://checketts.objectis.net/wiki/#%5B%5Btag%20Macro%5D%5D]] • [[TagCloud|http://www.elsdesign.com/tiddlywiki/#%5B%5BtagCloud%20plugin%5D%5D]] • [[Tagglywiki style|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BTagglyWiki%20Style%20Tagging%20Plugin%5D%5D]] • [[Tags box at top|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BTags%20Box%20At%20Top%20Plugin%5D%5D]] • [[Tiddler macro|http://checketts.objectis.net/wiki/#%5B%5Btiddler%20Macro%5D%5D]] • [[Tiddler stats|http://phpetterson.objectis.net/#%5B%5BTiddlerStats%20Plugin%5D%5D]] • [[Today macro|http://checketts.objectis.net/wiki/#%5B%5Btoday%20Macro%5D%5D]] • [[Toolbar creation|http://www.rumsby.org/yatwa/#ToolbarCreationPlugin]] • [[Untagged tiddlers|http://www.rumsby.org/yatwa/#UntaggedTiddlersPlugin]] • [[Version macro|http://checketts.objectis.net/wiki/#%5B%5Bversion%20Macro%5D%5D]] • [[Webview|http://www.personal.psu.edu/staff/a/c/ach12/tiddlywiki/extensions.htm#WebView]] • [[Wikify fixer|http://phpetterson.objectis.net/#wikifyFixer]] • \n''[[Function highjacking tips|http://homes.jcu.edu.au/~ccscb/mptw/#%5B%5BFunction%20Hijacking%5D%5D]]''\n!!![[ • ]] [[ ~ ]] [[ ? ]]
<<tabs txtSideBarTabMore\nOrphans "Orphans" TabMoreOrphans\nMissing "Missing" TabMoreMissing\n>>
<<list all>>
<<list missing>>
<<list orphans>>
<<list untagged>>
<<allTags>>
<<tabs txtSideBarTabTags\nTags "Tags" TabTagged\nUntagged "Untagged" TabMoreUntagged\n>>
<<timeline>>
// Eric Shulman - ELS Design Studios\n// Table of Contents Plug-in for TiddlyWiki version 1.2.29 or above\n\n// define defaults for cookie-based option values\nif (config.options.txtTOCSortBy==undefined) config.options.txtTOCSortBy="modified";\nif (config.options.txtTOCListSize==undefined) config.options.txtTOCListSize=12;\nif (config.options.chkTOCShow==undefined) config.options.chkTOCShow=true;\n\n// define macro "tableOfContents" to render controls\nversion.extensions.tableOfContents = {major: 2, minor: 0, revision: 0, date: new Date(2005,8,7)};\nconfig.macros.tableOfContents = { label: "contents" };\n\nconfig.macros.tableOfContents.css = '\s\n.TOC { padding:0.5em 1em 0.5em 1em; }\s\n.TOC a { padding:0em 0.25em 0em 0.25em; color:inherit; }\s\n.TOCList { width: 100%; font-size:8pt; margin:0em; }\s\n';\n\nconfig.macros.tableOfContents.html = '\s\n<div style="text-align:right">\s\n <span style="float:left">\s\n <a href="JavaScript:;" id="TOCMenu" class="button" style="padding: 0em;"\s\n onclick="onClickTOCMenu(this)" title="show/hide table of contents">%label%</a>\s\n </span>\s\n <a href="JavaScript:;" id="TOCSmaller"\s\n onclick="resizeTOC(this)" title="reduce list size">&#150;</a>\s\n <a href="JavaScript:;" id="TOCLarger"\s\n onclick="resizeTOC(this)" title="increase list size">+</a>\s\n <a href="JavaScript:;" id="TOCMaximize"\s\n onclick="resizeTOC(this)" title="maximize/restore list size">=</a>\s\n</div>\s\n';\n\nconfig.macros.tableOfContents.handler = function(place,macroName,params) { \n setStylesheet(config.macros.tableOfContents.css,"tableOfContents");\n var newTOC=createTiddlyElement(place,"div",null,"TOC",null)\n var theLabel=this.label;\n if (params[0] && (params[0].substr(0,6)=="label:")) theLabel=(params.shift()).substr(6);\n newTOC.innerHTML=config.macros.tableOfContents.html.replace(/%label%/,theLabel);\n refreshTOCList(createTOCList(newTOC,params));\n document.getElementById('sidebarTabs').style.display=(params[0]=="showtabs")?"block":"none";\n if (!store.blanketNotifications.find(reloadTOCLists))\n store.addNotification(null,reloadTOCLists); // reload listbox after every tiddler change\n}\n\n// IE needs explicit global scoping for functions/vars called from browser events\nwindow.onChangeTOCList=onChangeTOCList;\nwindow.onDblClickTOCList=onDblClickTOCList;\nwindow.reloadTOCLists=reloadTOCLists;\nwindow.refreshTOCList=refreshTOCList;\nwindow.onClickTOCMenu=onClickTOCMenu;\nwindow.resizeTOC=resizeTOC;\n \nfunction createTOCList(place,params)\n{\n var theList = createTiddlyElement(place,"select",null,"TOCList",null)\n theList.onchange=onChangeTOCList;\n theList.ondblclick=onDblClickTOCList;\n theList.style.display=config.options.chkTOCShow ? "block" : "none" ;\n theList.sortBy=config.options.txtTOCSortBy;\n theList.dateFormat="DD MMM YYYY";\n theList.requestedSize=config.options.txtTOCListSize;\n if (params[0] && (params[0].substr(0,5)=="sort:"))\n { theList.sortBy=(params.shift()).substr(5); theList.noSortCookie=true; }\n if (params[0] && (params[0].substr(0,5)=="date:"))\n { theList.dateFormat=(params.shift()).substr(5); }\n if ((params[0]=="size:auto")||(params[0]=="size:0"))\n { theList.autosize=true; params.shift(); theList.noSizeCookie=true; }\n if (params[0] && (params[0].substr(0,5)=="size:"))\n { theList.requestedSize=(params.shift()).substr(5); theList.noSizeCookie=true; }\n if (params[0] && (params[0].substr(0,6)=="width:"))\n { theList.style.width=(params.shift()).substr(6); }\n if (params[0]=="hidelist")\n { theList.style.display ="none" ; params.shift(); theList.noShowCookie=true; }\n return theList;\n}\n\nfunction onChangeTOCList()\n{\n var thisTiddler=this.options[this.selectedIndex].value;\n if ((this.size==1)&&(thisTiddler!=''))\n displayTiddler(document.getElementById('sidebar'),thisTiddler,0,null,null,false);\n refreshTOCList(this);\n return false;\n}\n\nfunction onDblClickTOCList()\n{\n var thisTiddler=this.options[this.selectedIndex].value;\n if (thisTiddler!='')\n displayTiddler(document.getElementById('sidebar'),thisTiddler,0,null,null,false);\n return false;\n}\n\nfunction reloadTOCLists()\n{\n var all=document.all? document.all : document.getElementsByTagName("*");\n for (var i=0; i<all.length; i++)\n if (all[i].className=="TOCList")\n { all[i].selectedIndex=-1; refreshTOCList(all[i]); }\n}\n\nfunction refreshTOCList(theList)\n{\n var selectedIndex = theList.selectedIndex;\n if (selectedIndex==-1) selectedIndex=0;\n var sortBy = theList.sortBy;\n\n if (selectedIndex==0) sortBy=theList.sortBy; // "nnn tiddlers" heading\n if (selectedIndex==1) sortBy='title';\n if (selectedIndex==2) sortBy='modified';\n if (selectedIndex==3) sortBy='modifier';\n if (selectedIndex==4) sortBy='tags';\n if (selectedIndex==5) sortBy='missing';\n if (selectedIndex==6) sortBy='orphans';\n if (selectedIndex==7) sortBy='system';\n if (selectedIndex>7)\n {\n if (theList.options[theList.selectedIndex].value=='')\n expandTOC(theList);\n return;\n }\n theList.sortBy = sortBy;\n if (!theList.noSortCookie)\n { config.options.txtTOCSortBy=sortBy; saveOptionCookie("txtTOCSortBy"); }\n\n // get the list of tiddlers\n var tiddlers = store.getTiddlers(sortBy);\n if (sortBy=="missing") tiddlers = store.getMissingLinks();\n if (sortBy=="orphans") tiddlers = store.getOrphans();\n if (sortBy=="tags") tiddlers = store.getTags();\n if (sortBy=="system")\n {\n tiddlers=new Array();\n var temp = store.getTaggedTiddlers("systemTiddlers");\n for (var t in temp) if (temp[t].title!=undefined) tiddlers.pushUnique(temp[t].title,true);\n var temp = store.getTaggedTiddlers("systemConfig");\n for (var t in temp) if (temp[t].title!=undefined) tiddlers.pushUnique(temp[t].title,true);\n for (var t in config.shadowTiddlers) tiddlers.pushUnique(t,true);\n tiddlers.sort();\n }\n\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n theList.saved=null;\n\n // add heading and control items to list\n var i=0;\n var theHeading=tiddlers.length+' tiddlers:';\n if (sortBy=='missing') theHeading=tiddlers.length+' missing tiddlers:';\n if (sortBy=='orphans') theHeading=tiddlers.length+' orphaned tiddlers:';\n if (sortBy=='tags') theHeading=tiddlers.length+' tags:';\n if (sortBy=='system') theHeading=tiddlers.length+' system tiddlers:';\n theList.options[i++]=new Option(theHeading,'',false,false);\n theList.options[i++]=new Option(((sortBy=="title" )?">":indent)+' [by title]', '',false,false);\n theList.options[i++]=new Option(((sortBy=="modified")?">":indent)+' [by date]', '',false,false);\n theList.options[i++]=new Option(((sortBy=="modifier")?">":indent)+' [by author]','',false,false);\n theList.options[i++]=new Option(((sortBy=="tags" )?">":indent)+' [by tags]', '',false,false);\n theList.options[i++]=new Option(((sortBy=="missing" )?">":indent)+' [missing]', '',false,false);\n theList.options[i++]=new Option(((sortBy=="orphans" )?">":indent)+' [orphans]', '',false,false);\n theList.options[i++]=new Option(((sortBy=="system" )?">":indent)+' [system]', '',false,false);\n // output the tiddler list\n switch(sortBy)\n {\n case "title":\n for (var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modified":\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });\n // continue with same logic as for 'modifier'...\n case "modifier":\n var lastSection = "";\n for (var t = 0; t < tiddlers.length; t++)\n {\n var tiddler = tiddlers[t];\n var theSection = "";\n if (sortBy=="modified") theSection = tiddler.modified.formatString(theList.dateFormat);\n if (sortBy=="modifier") theSection = tiddler.modifier;\n if (theSection != lastSection)\n {\n theList.options[i++] = new Option('+ '+theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n expandTOC(theList);\n break;\n case "tags":\n // tagged tiddlers, by tag\n var lastSection = "";\n for (var t = 0; t < tiddlers.length; t++)\n {\n var theSection = tiddlers[t][0];\n var tagged = store.getTaggedTiddlers(theSection);\n if (theSection != lastSection)\n {\n theList.options[i++] = new Option('+ '+theSection+" ("+tiddlers[t][1]+")","",false,false);\n lastSection = theSection;\n }\n for(var r in tagged)\n if (tagged[r].tags!=undefined)\n theList.options[i++] = new Option(indent+indent+tagged[r].title,tagged[r].title,false,false);\n }\n // count untagged tiddlers\n tiddlers = store.getTiddlers("title");\n var c=0;\n for(var r in tiddlers) if ((tiddlers[r].tags!=undefined) && (tiddlers[r].tags.length==0)) c++;\n // create 'pseudo-tag' listing untagged tiddlers (if any)\n if (c>0)\n {\n theList.options[i++] = new Option("+ untagged ("+c+")","",false,false);\n for(var r in tiddlers)\n if ((tiddlers[r].tags!=undefined) && (tiddlers[r].tags.length==0))\n theList.options[i++] = new Option(indent+indent+tiddlers[r].title,tiddlers[r].title,false,false);\n }\n expandTOC(theList);\n break;\n case "missing":\n case "orphans":\n case "system":\n for (var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t],tiddlers[t],false,false);\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n theList.size = (theList.autosize)?theList.options.length:theList.requestedSize;\n}\n\n// show/hide branch of TOCList based on current selection\nfunction expandTOC(theList)\n{\n var selectedIndex = theList.selectedIndex;\n if (selectedIndex==-1) selectedIndex=0;\n var sortBy = theList.sortBy;\n\n // don't expand for alpha-sorted "flatlist" TOC contents\n // or list control items\n if ((sortBy=="title")||(sortBy=="missing")||(sortBy=="orphans")||(sortBy=="system"))\n return;\n if ((selectedIndex>0)&&(selectedIndex<=7))\n return;\n\n var theText = theList.options[selectedIndex].text;\n var theValue = theList.options[selectedIndex].value;\n // save fully expanded list contents (if not already saved)\n if (!theList.saved)\n {\n theList.saved = new Array();\n for (var i=0; i < theList.length; i++)\n {\n opt = theList.options[i];\n theList.saved[i] = new Option(opt.text, opt.value, opt.defaultSelected, opt.selected);\n }\n }\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // put back heading items until item text matches current selected heading\n var i=0;\n for (var t=0; t<theList.saved.length; t++)\n {\n opt=theList.saved[t];\n if (opt.value=='')\n theList.options[i++] = new Option(opt.text,opt.value,opt.defaultSelected,opt.selected);\n if (opt.text==theText)\n break;\n }\n var selectedIndex=i-1; // this is the NEW index of the current selected heading\n // put back items with value!='' until value==''\n for ( t++; t<theList.saved.length; t++)\n {\n opt=theList.saved[t];\n if (opt.value!='')\n theList.options[i++] = new Option(opt.text,opt.value,opt.defaultSelected,opt.selected);\n if (opt.value=='')\n break;\n }\n // put back remaining items with value==''\n for ( ; t<theList.saved.length; t++)\n {\n opt=theList.saved[t];\n if (opt.value=='')\n theList.options[i++] = new Option(opt.text,opt.value,opt.defaultSelected,opt.selected);\n }\n theList.selectedIndex = selectedIndex;\n theList.size = (theList.autosize)?theList.options.length:theList.requestedSize;\n}\n\n// these functions process clicks on the 'control links' the are displayed above the listbox\nfunction getTOCListFromButton(which)\n{\n var theList = null;\n switch (which.id)\n {\n case 'TOCMenu':\n var theSiblings = which.parentNode.parentNode.parentNode.childNodes;\n var thePlace=which.parentNode.parentNode.parentNode.parentNode.parentNode.id;\n break;\n case 'TOCSmaller':\n case 'TOCLarger':\n case 'TOCMaximize':\n var theSiblings = which.parentNode.parentNode.childNodes;\n var thePlace=which.parentNode.parentNode.parentNode.parentNode.id;\n break;\n }\n for (k=0; k<theSiblings.length; k++)\n if (theSiblings[k].className=="TOCList") { theList=theSiblings[k]; break; }\n // DEBUG if (theList) alert('found '+theList.className+' for '+which.id+' button in '+thePlace);\n return theList;\n}\n\nfunction onClickTOCMenu(which)\n{\n var theList=getTOCListFromButton(which);\n if (!theList) return;\n var opening = theList.style.display=="none";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theList,opening,false,"none"));\n else\n theList.style.display = opening ? "block" : "none" ;\n if (!theList.noShowCookie)\n { config.options.chkTOCShow = opening; saveOptionCookie("chkTOCShow"); }\n return(false);\n}\n\nfunction resizeTOC(which)\n{\n var theList=getTOCListFromButton(which);\n if (!theList) return;\n\n var size = theList.size;\n if (theList.style.display=="none") // make sure list is visible\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theList,true,false,"none"));\n else\n theList.style.display = "block" ;\n switch (which.id)\n {\n case 'TOCSmaller': // decrease current listbox size\n if (theList.autosize) { theList.autosize=false; size=config.options.txtTOCListSize; }\n if (size==1) break;\n size -= 1; // shrink by one line\n theList.requestedSize = theList.size = size;\n break;\n case 'TOCLarger': // increase current listbox size\n if (theList.autosize) { theList.autosize=false; size=config.options.txtTOCListSize; }\n if (size>=theList.options.length) break;\n size += 1; // grow by one line\n theList.requestedSize = theList.size = size;\n break;\n case 'TOCMaximize': // toggle autosize\n theList.autosize = (theList.size!=theList.options.length);\n theList.size = (theList.autosize)?theList.options.length:theList.requestedSize;\n break;\n }\n if (!theList.noSizeCookie && !theList.autosize)\n { config.options.txtTOCListSize=size; saveOptionCookie("txtTOCListSize"); }\n}\n
// //''Name:'' tagCloud plugin\n// //''Version:'' <<getversion tagCloud>> (<<getversiondate tagCloud "DD MMM YYYY">>)\n// //''Author:'' ClintChecketts\n\n// //''Syntax:'' << {{{tagCloud}}} >>\n\n// //''Code section''\nversion.extensions.tagCloud = {major: 0, minor: 1, revision: 0, date: new Date(2005,7,31)};\n\nconfig.macros.tagCloud = {\n noTags: "No tag cloud created because there are no tags."\n };\n\nconfig.macros.tagCloud.handler = function(place,macroName,params)\n{\nvar tagCloudWrapper = createTiddlyElement(place,"ul",null,"tagCloud",null);\nvar tags = store.getTags();\nif(tags.length == 0) createTiddlyElement(tagCloudWrapper,"li",null,null,this.noTags);\n//Findout the maximum number of tags\nvar mostTags = 0;\nfor (t=0; t<tags.length; t++) {\n if (tags[t][1] > mostTags) mostTags = tags[t][1];\n}\n//divide the mostTags into 6 segments for the 6 different tagCloud sizes\nvar tagSegment = mostTags / 4;\nfor (t=0; t<tags.length; t++) {\n var tagCloudElement =createTiddlyElement(tagCloudWrapper,"li",null,null,null);\n var theTag = createTiddlyButton(tagCloudElement,tags[t][0],this.tooltip + tags[t][0],onClickTag,"tagCloudtag tagCloud"+(Math.round(tags[t][1]/tagSegment)+1));\n theTag.setAttribute("tag",tags[t][0]);\n}\n createTiddlyElement(place,"p",null,"clearer",null);\n};\n\nsetStylesheet(".tagCloud li{height: 1.8em; float:left; margin: 3px; list-style: none;}.tagCloud1{font-size: 1.2em;}.tagCloud2{font-size: 1.4em;}.tagCloud3{font-size: 1.6em;}.tagCloud4{font-size: 1.8em;}.tagCloud5{font-size: 1.8em;font-weight: bold;}.clearer{clear:left;}#mainMenu .tagCloud{ font-size: .5em; margin: 0; padding: 0; font-weight: bold; } #mainMenu .tagCloudtag:hover{ text-decoration: underline; }","tagCloudsStyles");\n
/***\n|''Name:''|TagglyTagging|\n|''Version:''|1.0.3 (11-Oct-2005)|\n|''Source:''|MonkeyPirateTiddlyWiki (http://homes.jcu.edu.au/~ccscb/mptw/#TagglyTagging)|\n|''Author:''|SimonBaird|\n|''Type:''|Plugin|\n!Description\nSee TagglyTaggingFAQ (http://homes.jcu.edu.au/~ccscb/mptw/#TagglyTaggingFAQ)\n\n!Issues\n* Suffers from the same mouseover glitch in IE as the tiddler toolbar buttons. Makes it hard to get your sort controls visible in IE. You have to put the mouse over the "Tagged as" label.\n\n!Directions\n* You can changed your preferred default sort order and format by editing defaultOptions below.\n\n!Revision history\n* v1.0.0 (Jul-2005)\n** first working version\n** (probably a bunch of unrecorded changes between 1.0.0 and 1.0.1)\n* v1.0.1 (9-Oct-2005)\n** added this doco\n** add ability to change sort and format\n* v1.0.2 (10-Oct-2005)\n** fixed missing tag count in tags tab (thanks [[Clint]] for this fix)\n* v1.0.3 (11-Oct-2005)\n** fixed bug in part that interacts with [[ShortenTabLinks]]. (Thanks to [[Paul Petterson]] for locating this.)\n\n!Code\n***/\n//{{{\nif (!config.plugins) config.plugins = [];\n\nconfig.plugins.TagglyTagging = {\n\n // edit this to your preference. name|date-asc|desc-bullets|commas\n defaultOptions: "name-asc-bullets", \n\n formats: {\n bullets: "*[[%0]]\sn",\n commas: "[[%0]], "\n },\n\n tiddlerFields: {\n name: "title",\n date: "modified"\n }\n\n};\n\nfunction TagglyOptions(optionsString) {\n var opts = optionsString.split("-");\n this.sortField = opts[0];\n this.sortOrder = opts[1];\n this.listFormat = opts[2];\n return this;\n}\n\nTagglyOptions.prototype.toggleListFormat = function() {\n return (this.listFormat == "bullets")?"commas":"bullets";\n}\n\nTagglyOptions.prototype.optionsString = function() {\n return [this.sortField,this.sortOrder,this.listFormat].join("-");\n}\n\nTagglyOptions.prototype.toggleSortOrder = function() {\n return (this.sortOrder == "asc")?"desc":"asc";\n}\n\nTagglyOptions.prototype.formatString = function() {\n return config.plugins.TagglyTagging.formats[this.listFormat];\n}\n\nTagglyOptions.prototype.tiddlerField = function() {\n return config.plugins.TagglyTagging.tiddlerFields[this.sortField];\n}\n\n\nTagglyOptions.prototype.buttonLabels = function() {\n var upArrow = "?";\n var downArrow = "?";\n var result = { name: "name", date: "date", format: this.toggleListFormat() };\n // asc means down the page hence arrows are reverse what you might first expect\n if (this.sortField == "name")\n result.name += (this.sortOrder == "desc")?upArrow:downArrow;\n else if (this.sortField == "date")\n result.date += (this.sortOrder == "desc")?upArrow:downArrow; \n return result;\n}\n\n// override function in prototype to allow asc or desc sorting\nstore.reverseLookup_mptw_ascdesc = store.reverseLookup;\nstore.reverseLookup = function(lookupField,lookupValue,lookupMatch,sortField,sortAscDesc) {\n var results = this.reverseLookup_mptw_ascdesc(lookupField,lookupValue,lookupMatch,sortField);\n if (sortAscDesc && sortAscDesc == "desc")\n results.reverse();\n return results;\n}\n\n// This is a short function I will just replace it rather than try to hijack. hence may break in future TWs\nstore.getTaggedTiddlers = function(tag,sortField,ascdesc) {\n return this.reverseLookup("tags",tag,true,sortField,ascdesc);\n}\n\nsetStylesheet(\n".tiny {color:#bbb; font-size:80%;padding:0px;margin:0px;margin-right:0.7em;}\sn"+\n"a.tiny {color:#999!important; padding:2px; }\sn"+\n"a.tiny:hover {background:#ddd!important; }\sn"+\n".hideTaggedControls {display:none;}\sn"+\n".showTaggedControls { }\sn"+\n"","taggedControls");\n\nfunction getTaggedTiddlersText(title,options) {\n var tags = store.getTaggedTiddlers(title,options.tiddlerField(),options.sortOrder)\n var str=""; \n for (i=0; i<tags.length; i++)\n str += options.formatString().format([tags[i].title]);\n return str;\n}\n\nfunction getTagglyOptionsString(theTiddler) {\n var element = document.getElementById("taggedOptions"+theTiddler);\n if (element)\n return element.firstChild.nodeValue;\n else \n return null;\n}\nfunction handleOptionClickAndRefresh(theTiddler,thingClicked) {\n\n // get the optionsString out of the taggedOptions invisible span\n var options = new TagglyOptions(getTagglyOptionsString(theTiddler));\n \n if (thingClicked == "name" && options.sortField == "name") \n options.sortOrder = options.toggleSortOrder();\n else if (thingClicked == "date" && options.sortField == "date") \n options.sortOrder = options.toggleSortOrder();\n else if (thingClicked == "date" && options.sortField == "name") \n options.sortField = "date";\n else if (thingClicked == "name" && options.sortField == "date") \n options.sortField = "name";\n else if (thingClicked == "format")\n options.listFormat = options.toggleListFormat();\n\n refreshTaggedList(theTiddler,options,true);\n}\n\nfunction onClickOptName(e) {\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theTiddler = findContainingTiddler(theTarget).id.substr(7);\n var state = handleOptionClickAndRefresh(theTiddler,"name");\n return false;\n}\n\nfunction onClickOptDate(e) {\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theTiddler = findContainingTiddler(theTarget).id.substr(7);\n var state = handleOptionClickAndRefresh(theTiddler,"date");\n return false;\n}\n\nfunction onClickOptFormat(e) {\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theTiddler = findContainingTiddler(theTarget).id.substr(7);\n var state = handleOptionClickAndRefresh(theTiddler,"format");\n return false;\n}\n\n\nconfig.macros.taggedSortControls = {};\nconfig.macros.taggedSortControls.handler = function(place,macroName,params) {\n var opts = new TagglyOptions(params[0]);\n var labels = opts.buttonLabels();\n var b1 = createTiddlyButton(place,labels.name,"Click to sort",onClickOptName,"tiny");\n var b2 = createTiddlyButton(place,labels.date,"Click sort",onClickOptDate,"tiny");\n var b3 = createTiddlyButton(place,labels.format,"Click to change format",onClickOptFormat,"tiny");\n}\n\nfunction onMouseOverTaggedContainer(e) {\n if (!e) var e = window.event;\n var tiddler = findContainingTiddler(resolveTarget(e)).id.substr(7);\n var foo = document.getElementById("taggedControls"+tiddler);\n if (foo) {\n foo.className = "showTaggedControls"; \n }\n\n}\n\nfunction onMouseOutTaggedContainer(e) {\n if (!e) var e = window.event;\n var tiddler = findContainingTiddler(resolveTarget(e)).id.substr(7);\n var foo = document.getElementById("taggedControls"+tiddler);\n if (foo)\n foo.className = "hideTaggedControls";\n}\n\n// use this to (re)build the tagged list for a tiddler\nfunction refreshTaggedList(title,options,donthide) {\n\n if (!options) {\n // must be refreshing already on screen tiddler\n // so read existing options\n // not changing any of them\n var optStr = getTagglyOptionsString(title);\n if (optStr) \n options = new TagglyOptions(optStr);\n }\n if (!options) {\n // must be creating for the first time\n // so read default options\n options = new TagglyOptions(config.plugins.TagglyTagging.defaultOptions);\n }\n\n if (!donthide) donthide = false; // normally hide waiting for mouseover\n var theViewer = document.getElementById("viewer"+title);\n if (theViewer) {\n\n var theTagged = document.getElementById("tagged"+title);\n if (theTagged)\n theTagged.parentNode.removeChild(theTagged);\n\n var taggedText = getTaggedTiddlersText(title,options);\n\n if (taggedText != "") {\n var newTaggedList = createTiddlyElement(theViewer,"div","tagged" + title,"tagged",null); \n createTiddlyElement(newTaggedList,"span",null,"tiny","Tagged as "+title+":"); \n\n // will put the options string in this hidden span so we can read it later\n var newTaggedOptions = createTiddlyElement(newTaggedList,\n "span","taggedOptions" + title, "hideTaggedControls",options.optionsString()); \n\n var newTaggedControls = createTiddlyElement(newTaggedList,\n "span","taggedControls" + title, donthide?"showTaggedControls":"hideTaggedControls",null); \n\n wikify('<<taggedSortControls '+options.optionsString()+'>>', newTaggedControls); \n\n if (options.listFormat == "commas")\n taggedText = taggedText.replace(/^/,"\sn").replace(/, $/,"\sn");\n\n wikify(taggedText, newTaggedList); \n\n newTaggedList.onmouseover = onMouseOverTaggedContainer;\n newTaggedList.onmouseout = onMouseOutTaggedContainer;\n }\n }\n}\n\n// I want to refresh the tagged list in other visible tiddlers\n// this is to refresh if we remove a tiddler\nwindow.deleteTiddler_orig_mptw_tagglytagging = window.deleteTiddler;\nwindow.deleteTiddler = function(title) {\n var oldtags = [];\n var tiddler = store.tiddlers[title];\n if (tiddler) {\n var oldtags = tiddler.tags;\n }\n\n deleteTiddler_orig_mptw_tagglytagging(title);\n\n for (i=0; i<oldtags.length; i++) {\n refreshTaggedList(oldtags[i]);\n }\n}\n\n// this is if we edit a tiddler\n// refresh tags on screen\nwindow.saveTiddler_orig_mptw_tagglytagging = window.saveTiddler;\nwindow.saveTiddler = function(title) {\n\n var newTitle = document.getElementById("editorTitle"+title).value;\n\n var oldtags = [];\n var tiddler = store.tiddlers[title];\n if (tiddler) {\n var oldtags = tiddler.tags;\n }\n \n saveTiddler_orig_mptw_tagglytagging(title);\n\n var newtags = store.tiddlers[newTitle].tags;\n\n for (i=0; i<newtags.length; i++) {\n refreshTaggedList(newtags[i]);\n }\n\n // will do lots twice. should do a unique on oldtags and newtags\n // probably its fast enough that we don't care\n\n for (i=0; i<oldtags.length; i++) {\n refreshTaggedList(oldtags[i]);\n }\n\n}\n\n//==========================================================\n\nwindow.createTiddlerViewer_orig_mptw_tagging = window.createTiddlerViewer;\nwindow.createTiddlerViewer = function(title,highlightText,highlightCaseSensitive) {\n createTiddlerViewer_orig_mptw_tagging(title,highlightText,highlightCaseSensitive);\n refreshTaggedList(title);\n}\n\n\n//==========================================================\n// only change in this is to put the footer above the title... \n// I know that's a bit strange but it's the easiest way to move the tag buttons\n\nwindow.createTiddlerSkeleton_orig_mptw_tagging = window.createTiddlerSkeleton;\nwindow.createTiddlerSkeleton = function(place,before,title)\n{\n var theTiddler = createTiddlerSkeleton_orig_mptw_tagging(place,before,title);\n theFooter = document.getElementById("footer"+title);\n theTitle = document.getElementById("title"+title);\n // want to put the footer up above the title\n theTiddler.childNodes[0].insertBefore(theFooter,theTitle);\n return(theTiddler);\n}\n\n\n//==========================================================\n// I want a TiddlyLink in place of a TagButton\n\nwindow.createTagButton = function(place,tag,excludeTiddler) {\n return createTiddlyLink(place,tag,tag);\n}\n\n//==========================================================\n// this is to make the Tags tab work the same. TiddlyLink instead of Tag button\n\nconfig.macros.allTags.handler = function(place,macroName,params) {\n var tags = store.getTags();\n var theDateList = createTiddlyElement(place,"ul",null,null,null);\n if(tags.length == 0) {\n createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);\n }\n\n // bad hack so the shorten tab links plugin shortens these a little shorter :)\n var adjustShorten = 2;\n if (config.mptw_shortnames) config.mptw_shortnames.trimAt -= adjustShorten;\n\n for (t=0; t<tags.length; t++) {\n var theListItem=createTiddlyElement(theDateList,"li",null,"listLink",null);\n // not sure why the following doesn't show the count\n var theTag = createTiddlyLink(theListItem,tags[t][0],tags[t][0] + "(" + tags[t][1] + ")");\n // but this puts it in anyway (thanks Clint for this fix).\n theTag.appendChild(document.createTextNode(" ("+tags[t][1]+")")); \n theTag.setAttribute("tag",tags[t][0]);\n }\n\n // other part of bad hack \n if (config.mptw_shortnames) config.mptw_shortnames.trimAt += adjustShorten;\n}\n\n\nconfig.views.wikified.tag.labelNoTags = "";\nconfig.views.wikified.tag.labelTags = "";\n\nsetStylesheet(\n".tagged {background:#f8f8f8;margin-top:0.5em;border: solid #f0f0f0 3px; margin-bottom:0px;padding-bottom:0.5em;padding-left:0.5em;}\sn"+\n".tagged ul {padding-top:0px;margin-top:0px;margin-bottom:2px;list-style-type:square;margin-left:1.2em;padding-left:0;}\sn"+\n".footer a.tiddlyLink { padding-top:0px;margin-right:2em;}\sn"+\n".footer {margin-top:0px;padding-top:0px;}\sn"+\n"",'tagglyTaggingStyles');\n\n\n//}}}\n
config.views.editor.tagChooser.text = "pick tag";\nwindow.createTiddlerEditor_mptw_tagstop = window.createTiddlerEditor;\nwindow.createTiddlerEditor = function(title) {\n createTiddlerEditor_mptw_tagstop(title);\n var theEditor = document.getElementById("editorWrapper"+title);\n var theTitleBox = document.getElementById("editorTitle"+title);\n var theBodyBox = document.getElementById("editorBody"+title);\n var theTagsBox = document.getElementById("editorTags"+title);\n var tagPrompt = document.getElementById("editorFooter"+title);\n theEditor.insertBefore(theTagsBox,theBodyBox);\n theEditor.insertBefore(theEditor.childNodes[3],theBodyBox);\n}
The TaskList is a Tabbed list of tasks. I created Tabs for the following Task categories:\n*[[Priority]]\n*[[Pending]]\n*[[ToReview]]\n*[[Completed]]\nCreating a new Task is simple:\n:create a new Tiddler\n:title it whatever you want\n:add some body text\n:tag it with any of the above Tags\n:display the TaskList\nVoila! There is your new Task! \n\nTo update a Task's status (and thus the Tab on which it displays) just change the Tidler's Tag.\n\nTaskList leverages the Tab function and it consists of several embeded & related Tiddlers. Its design is a bit complex, but once set up, using it is a snap. You can configure it to your own needs.
[[Task List|TaskList]]\n[[Priority Tasks|Priority]]\n[[Pending Tasks|Pending]]\n[[To Review|ToReview]]\n[[Completed Tasks|Completed]]\n
!!![[ ? ]][[ ~ ]][[ ? ]]\n|!Objet|!Date limite |!Somme à payer |\n|3/3 income tax |9.15| 2691,00|\n|Brooks |10.17| 476,00|\n|Touville taxes|10.17| 879,00|\n\n!!!<<reminder year:2005 month:10 day:25 title:"3/3 tax">> \n!!!<<reminder year:2005 month:10 day:27 title:"Estate Touville taxes">> \n!!!<<reminder year:2005 day:22 title:"Estate Brooks">>
!Templates\n<<tiddler "To Do Reminder template">>\n<<tiddler "Action Reminder template">>\n@@''GTD Project :''@@\n<<tiddler "GTD Project template">>\n
==[x] --Mail et photos Lundi 15 Août 2005--== \n\n!!<<reminder month:10 day:23 title:"Mike is back">>
\n\n!!''I think of a newer and better way to reach each of my outcomes''\n----Prospecting\n//~~~~//Prospecting\n[[2006 eBooklet]]\n[[GR Stores]]\n----\n//~~Operations~~//\n[[XTechs support]]\n[[Clarify uncertainties with Karin]]\n----\n//~~Admin~~//\n[[VAT]]\n----\n//~~Family~~//\n[[Christine's new room]]\n[[End of year Kenya]]\n----\n//~~Self~~//\n[[CyberPoche]]\n[[Exercise]]\n----\n[[Links|:Links]]\n@@color(lightgray):Mail to@@ <<email jacques.turbe at gmail dot com?subject=[TW] - Current Goals&body=Please, enter your comments, questions or suggestions. Thanks ;)>> @@[[ • ]] [[?|Current Goals?]]@@
@@Jeremy Ruston fame :@@\n<html><iframe src="http://tiddlywiki.com/" width=100% height=80%></iframe></html>
I just drop in this first [[:Hotest]] section single actions that are to be done within the next hours. Ephemere post its.\n\n:If they are not single, then they are the NextAction in a ProjectTiddler which can be tagged as :Hot and with a context : \n*:so it is displayed in //Hot// section of //Hotest Now// top menu,\n*:and in the appropriate context tab of //First Actions// top menu.\n:If they are not for today, then they deserve a tiddler with a date tag (week to get it under review) or a reminder (tickler).
!Tasks To Review\n<<list withTags ToReview>>\n^^Open [[TaskList]]^^
This is a test.
This is a test.
This is a test.
!!!Monday, september 12 2005 15:59\n!!Tony R Sheek\nOk Jacques I'll pay you with a Company check. \n[ ] Can we meet, when ? I've a little free time this week\nTanks\n!!!Tony\n>(take off in Paris )\n!!<<reminder year:2005 month:10 day:26 title:"T5 Luxembourg 13:30 #06 56 67 78 90">>\n!!![[ ? ]][[ ~ ]][[ ? ]]
\n// //''Please note that I am posting this tiddler for demo purposes only. I haven't fully released the code as I'm awaiting some upcoming changes to ~TiddlyWiki.''\n\n// //''This tiddler demonstrates how you can add, remove & rearrange toolbar buttons using a macro approach. This tiddler (the one you are reading now) is the only "required" addition to ~TiddlyWiki 1.2.28 to allow a customizable toolbar.''\n\n// //''By replacing the createTiddlerToolbar function in the hard code and creating new macros that emulate each toolbar button, you can now add or rearrange both the editing and viewing toolbars. Folks, it's just a matter of time before you can have one toolbar set for editors and one for web viewers!''\n\n// //''To create your own toolbars (you can even try it live on this website), simply edit the two new tiddlers, called EditorToolbar and ViewerToolbar (no special tags are necessary for either of these tiddlers). Then use the following macro references to add buttons in the order that you desire:''\n\n// //''Viewing toolbar:'' <<toolbarClose>> <<toolbarEdit>> <<toolbarCollapse>> <<toolbarCloseOthers>> <<toolbarPermalink>> <<toolbarReferences>> \n// //''Editing Toolbar:'' <<toolbarDone>> <<toolbarCancel>> <<toolbarSpellCheck>> <<toolbarDuplicate>> <<toolbarDelete>> <<toolbarEditHelp>>\n// //''Note: these buttons will not work properly from within tiddlers, they will only work when displayed in the toolbar area.''\n\n// // ''Code Section''\n\n// //''Macro Declarations'' (some repeated from the original code)\nconfig.macros.toolbarClose = {};\nconfig.macros.toolbarEdit = {};\nconfig.macros.toolbarPermalink = {};\nconfig.macros.toolbarReferences = {};\nconfig.macros.toolbarDone = {};\nconfig.macros.toolbarCancel = {};\nconfig.macros.toolbarDelete = {};\n\n// //''Steve's additions''\nconfig.macros.toolbarEncrypt = {};\nconfig.macros.toolbarDecrypt = {};\nconfig.macros.toolbarEditDecrypt = {};\n\n\n// //''Corresponding Macro functions''\nconfig.macros.toolbarClose.handler = function(place)\n{\n lingo = config.views.wikified;\n createTiddlyButton(place,lingo.toolbarClose.text,lingo.toolbarClose.tooltip,onClickToolbarClose,null,null,"toolbarClose");\n}\n\nconfig.macros.toolbarEdit.handler = function(place,macroName,params)\n{\n lingo = config.views.wikified;\n createTiddlyButton(place,lingo.toolbarEdit.text,lingo.toolbarEdit.tooltip,onClickToolbarEdit);\n}\n\nconfig.macros.toolbarPermalink.handler = function(place,macroName,params)\n{\n lingo = config.views.wikified;\n createTiddlyButton(place,lingo.toolbarPermalink.text,lingo.toolbarPermalink.tooltip,onClickToolbarPermaLink);\n}\n\nconfig.macros.toolbarReferences.handler = function(place,macroName,params)\n{\n lingo = config.views.wikified;\n createTiddlyButton(place,lingo.toolbarReferences.text,lingo.toolbarReferences.tooltip,onClickToolbarReferences);\n}\n\nconfig.macros.toolbarDone.handler = function(place,macroName,params)\n{\n lingo = config.views.editor;\n createTiddlyButton(place,lingo.toolbarDone.text,lingo.toolbarDone.tooltip,onClickToolbarSave);\n}\n\nconfig.macros.toolbarCancel.handler = function(place,macroName,params)\n{\n lingo = config.views.editor;\n createTiddlyButton(place,lingo.toolbarCancel.text,lingo.toolbarCancel.tooltip,onClickToolbarUndo);\n}\n\nconfig.macros.toolbarDelete.handler = function(place,macroName,params)\n{\n lingo = config.views.editor;\n createTiddlyButton(place,lingo.toolbarDelete.text,lingo.toolbarDelete.tooltip,onClickToolbarDelete);\n}\n\nconfig.macros.toolbarEncrypt.handler = function(place,macroName,params)\n{\n lingo = config.views.editor;\ncreateTiddlyButton(place,lingo.toolbarEncrypt.text,lingo.toolbarEncrypt.tooltip,onClickToolbarEncrypt);\n}\n\nconfig.macros.toolbarEditDecrypt.handler = function(place,macroName,params)\n{\n lingo = config.views.editor;\ncreateTiddlyButton(place,lingo.toolbarDecrypt.text,lingo.toolbarDecrypt.tooltip,onClickToolbarEditDecrypt);\n}\n\nconfig.macros.toolbarDecrypt.handler = function(place,macroName,params)\n{\n lingo = config.views.wikified;\ncreateTiddlyButton(place,lingo.toolbarDecrypt.text,lingo.toolbarDecrypt.tooltip,onClickToolbarDecrypt);\n}\n\n// //''Replaced TW functions''\nwindow.createTiddlerToolbar = function createTiddlerToolbar(title,isEditor)\n{\n var theToolbar = document.getElementById("toolbar" + title);\n if(theToolbar)\n {\n removeChildren(theToolbar);\n if(isEditor)\n {\n // Editor toolbar\n wikify(store.getTiddlerText("EditorToolbar"),theToolbar,null,null);\n }\n else\n {\n // Viewer toolbar\n wikify(store.getTiddlerText("ViewerToolbar"),theToolbar,null,null);\n }\n }\n}\n\n// //''Shadowed tiddlers (in case they don't yet exist)''\nconfig.shadowTiddlers.ViewerToolbar = "<<toolbarClose>> <<toolbarEdit>> <<toolbarCollapse>> <<toolbarCloseOthers>> <<toolbarPermalink>> <<toolbarReferences>>";\nconfig.shadowTiddlers.EditorToolbar = "<<toolbarDone>> <<toolbarCancel>> <<toolbarSpellCheck>> <<toolbarDuplicate>> <<toolbarDelete>> <<toolbarEditHelp>>";\nconfig.shadowTiddlers.EditingHelp = "Click on each topic below to see formatting instructions and examples:\sn<<listTags formatting title *>>";\n\n// // Function to dynamically handle changes to the special toolbar tiddlers\nfunction refreshToolbars()\n{\n clearMessage();\n var place = document.getElementById("tiddlerDisplay");\n var tiddler = place.firstChild;\n var nextTiddler;\n while(tiddler)\n {\n nextTiddler = tiddler.nextSibling;\n if(tiddler.id)\n if(tiddler.id.substr(0,7) == "tiddler")\n {\n var title = tiddler.id.substr(7);\n createTiddlerToolbar(title,false)\n }\n tiddler = nextTiddler;\n }\n}\n\n// // Additional notifications for toolbar layout changes\nstore.addNotification("ViewerToolbar",function(){refreshToolbars()});\nstore.addNotification("EditorToolbar",function(){refreshToolbars()});\n\n
<<list withTags Tools>>
<<list untagged>>
//Thanks to Clint Checketts\n\nconfig.macros.list["untagged"] = {prompt: "Tiddlers that are not tagged"};\n\nconfig.macros.list.untagged.handler = function(params)\n{\n//displayMessage("Building list of untagged tiddlers");\n var results = [];\n for(var t in store.tiddlers) {\n var tiddler = store.tiddlers[t];\n if(tiddler.getTags() == "")\n results.push(t);\n }\n results.sort();\n return results;\n}
!!<<reminder year:2005 month:10 day:27 title:"Pay last month" >>
<<toolbarClose>><<toolbarCollapse>><<toolbarEdit>><<toolbarCloseOthers>><<toolbarPermalink>><<toolbarReferences>> <<toolbarDelete>><<newTiddler>><<newJournal "yourTitle - DDD DD MMM YYYY hh:mm" Journal>>[[ ~ ]]
|[[TiddlyWiki|http://tiddlywiki.com]]|The official source for ~TiddlyWiki|\n|[[TiddlyWiki Tips|http://tiddlywikitips.com]]|Tips & Tricks for ~TiddlyWiki|
!!Check when completed :\n<<gradient horiz #fffecc #fffffa>>\n** Process Collated Notes, Loose Papers\n** Previous Calendar : review for uncompleted, new open loops\n** Upcoming : Calendar, NextWeek, [[:Hot]]\n** Tickler : physical and Next10daysReminders\n** Review "Pending" and Support Files\n** Browse all work-in-progress material\n** Browse [[Any Relevant Checklists|:Lists]] and [[Someday/Maybe|:Maybe]] List, check last [[:Reference data]]\n** All other open loops dumped (don't keep in head)\n** Write new projects or action items\n** Review [[:Projects]], desired outcome, next actions, update [[reminders| R ]], have completed <<tag archived>>\n** Review [[:Waiting for]], update follow-up actions and reminders.\n** Write your new [[Current Goals]] and AffirmationForTheWeek !\n** If on the road, print (or send to pda) appropriate lists (see <<tag index>>)\n!!!@@color(lightgray):Mail to@@ <<email jacques.turbe at gmail dot com?subject=[PimliPoche] - WeeklyReview&body=Enter your comment here, thanks ;)>>\n!!!<<reminder dayofweek:5 title:"Do my">>
I've "packaged" a [[TiddlyWiki|http://tiddlywiki]] file that is based on what I use for my daily IT Notes at work. It contains all the Plugins and "skeleton" Tiddlers required to present the look and feel that I like to use. While this layout does work with Internet Explorer, it really shines with Firefox, so I suggest you [[try it in Firefox|http://getfirefox.com]]!\n\n!Features:\n:Custom styleSheet\nI incorporated a heavily-tweaked version of zenard's excellent stylesheet. It moves the SideBar over to the left, under the MainMenu, and extends the main Viewer area to the right, maximizing screen space. It also incorporates some Firefox-specific tweaks to provide rounded corners. I also moved the Status Message area to the upper right of the screen to better clean things up a bit.\n\n:Sliders\nI used Sliders in the MainMenu to provide easy access to often-used topics, while remaining very compact. I named them such that they are easily identifiable as sliders.\n\n:Calendar Plugin\nGives a very nice, clean calendar\n\n:Navigator_PIM Plugin\nThis lets me not only toggle between single and multi-page mode, depending on my needs, but it provides excfellent "history" making it very easy to backtrack.\n\n:Table of Contents Plugin\nThis really cleans up the look of things and keeps the SideBar very compact.\n\nI also included a host of other Plugins to tweak the heck out of things.
!Jim's IT Notes\nThis is a core "package" of a [[TiddlyWiki|http://tiddlywiki.com]] file that I use at work to keep my daily IT Notes. It contains all the Plugins and Tiddlers required to present the look and feel that I like. While this layout works with Internet Explorer, it really shines with [[Firefox|http://getfirefox.com]], so I suggest you try it in [[Firefox|http://getfirefox.com]]! ("Jim's IT Notes" was hacked together by Jim Barr of [[TiddlyWikiTips.com|http://TiddlyWikiTips.com]]. Be sure to visit [[TiddlyWikiTips.com|http://TiddlyWikiTips.com]]!)\n!Downloading\nRight-click [[this link|http://tiddlywikitips.com/Jims_IT_Notes.html]], save the file to your local computer, and then rename the file to whatever you want. Open that file in your browser, and you have fun!\n!Customizing\nYou can change the functionality by simply modifying many of the Tiddlers. Initially, you'll want to update the SiteTitle, SiteSubtitle, SiteUrl, and DefaultTiddlers Tiddlers. Additioanlly, you may want to tweak the StyleSheet and MainMenu Tiddlers. Beyond that, it's just a matter of digging through the provided Tiddlers and making any necessary changes. \n!Some feature highlights:\nI included a number of Plugins to tweak look and feel. Here are the main ones:\n!!Custom styleSheet\n<<<\nI incorporated a heavily-tweaked version of one of zRenard's excellent stylesheets. My tweaks move the [[SideBar|SideBarOptions]] over to the left under the MainMenu, and extends the main Viewer area to the right, maximizing screen space. It also incorporates some Firefox-specific tweaks to provide nice rounded corners. I also moved and re-formatted the Status Message area to the upper right of the screen to clean things up a bit.\n<<<\n!!Sliders\n<<<\nNo, not the [[cool Sci-fi series|http://www.scifi.com/sliders/]], but the cool function that lets you expand and collapse sections. I used Sliders in the MainMenu to provide easy access to often-used topics, while keeping things very compact. I appended to the link titles a "»" character to better identifiy them as Sliders. These configurable Sliders include:\n:Tasks»\n:Tools»\n:Help»\n<<<\n!!Calendar Plugin\n<<<\nThis is Tiago Dionízio's stunningly functional, configurable, and clean Calendar Plugin. Not only does it give you a nice at-a-glance calendar, but clicking on any of the dates will open a coresponding Tiddler!\n<<<\n!!~Navigator_PIM Plugin\n<<<\nThis configurable plugin by Geoff Slocock (adapted from code by Alan Hecht) provides excellent "breadcrumb" history making it very easy to backtrack. It also lets you easily toggle between single and multi-page mode.\n<<<\n!!Table of Contents Plugin\n<<<\nI included Eric Shulman's excellent Table of Contents Plugin. This bad boy adds some amazing function to the ~SideBar, really cleans up the look of things, and keeps the ~SideBar very compact.\n<<<\n!!Tabbed TaskList\n<<<\nI created a TaskList feature that lets me maintain Tasks and Task Status. Maintenance requires only Tagging a Tiddler with an appropriate Status Tag. The Task then it shows up in the proper Tab. See the TaskHelp tab for details.\n<<<\n!Support\nI hope you like the design! If you have any suggstions, criticisms, or comments, please email me at <<email jim at barr dot\nnet?subject=[TiddlyWiki] - IT Notes ?&body=Enter your comment\nhere, thanks ;)>>
<<gradient vert #ffeecc #ffefef>>I've pondered using terms such as "//Urgent//" or "//important today//" or "//High priority//" before settling on //:Hot//\n\nEven if you have many of the firsts, the purpose is to have under your eyes the very few that are "Hot" for you today. This is subjective : it is a decision. I'd add a morning decision : \n>It's a comitment to myself : ''on which of my projects I'll have made a significant progress by the end of the day'' (at least their //Next Action// ) ?
Troubleshooting items describing what to do:\n<<list withTags WhatToDo>>
!!!2005/10/17, kalnel <kalnel@yahoo.com>:\n>My system doesn't require much maintenance, so I don't need more than a minute or two (literally) to review and update --\na minute or two ?\nA Minute Or Two !?\nA MINUTE OR TWO !?!\n\nAre you lucky, or just ... oblivious ?\n\nImho, I guess you're confusing some mechanical updating of todo lists, with a breathing time for thought and decisions about what's coming on your plate and how you'll manage it: "\n** where am I going if I let things go as they are ?\n** do I go where or as I intend too ?\n** do I keep a right balance ?\n** how could I make next week better than this one ?\n** how to keep this trend on results with less stress or more satisfaction ?\n** which new pressures or potential problems may arise next days ?\n** do I need to change /delegate/simplify some part of my processes ?\n** which should be my priority rules for next week ? ...\n\nWell, these are just questions that come to my mind now : there are plenty others that may need a clearer answer from you at times. And WR is a nice stop in your endless run :)\n\nI guess I understand why you not that enthusiastic : what you appear to do is not :(\n<<<\n| "Then (if I think of it) I try to spend some time on Sunday afternoon thinking strategically about the week ahead." |\n<<<\nI love that quote, a treasure of negative thinking :\n\n*"(if I think of it)" => (I'll jump on the first lame excuse to have "forgotten it")\n\n*"I try" => I know the result is out of reach, or of little value => I do not invest more energy than my motivation is => No result : See ?\n\n*"spend time" => nothing to earn : net loss ! (well, you want to survive : "some" time only).\n\nBut there is something mostly positive in that quote : \n"thinking strategically about the week ahead"\nYou know, at least, what the real issue is The first step for a winner !\n\nHope you take this in good part : I just intend this as constructive kidding :)\n\n!!<<reminder year:2005 month:10 day:31 title:"nextAction" >>
!!!Monday October3 2005\nBonjour,\n<<<\nThis PimliPoche Notebook is an example of what you can do with a TiddlyWiki, and it will evolve with practice and suggestions (//yours ?//).\nClick top menu //Routines// (if it is not already displayed) to find it \n~~(or [[here|WeeklyReview]], but you are not in a hurry, are you ?)~~\n!!!Jacques\n<<<\n!!__Remember__ : PimliPoche is intended for a personal use offline (although it can be uploaded on the web), either on your hard disk, either on a usb stick (with Portable FireFox aboard).
!Provide a Customer support booklet that Techs welcome @@~5w43@@ \n** 342-654-782 Ask Fred to invite a few Techs at RYU meeting to test draft\n** oct 18 Collect suggestions at RYU meeting \n** Final rough\n!!<<reminder year:2005 month:10 day:28 title:"342-654-782 Ask Fred to invite a few Techs for RYU meeting to test draft" >>
function onClickDefaultView(e) {\n closeAllTiddlers();\n config.options.txtDefaultTiddlers = "";\n saveOptionCookie('txtDefaultTiddlers');\n var start = store.getTiddlerText("DefaultTiddlers");\n if(start)\n displayTiddlers(null,start,1,null,null);\n}\n\nconfig.macros["defaultView"] = {label: "default view", prompt: "Show the default tiddlers", title: "default view"};\n\nconfig.macros.defaultView.handler = function(place) {\n createTiddlyButton(place,this.label,this.prompt,onClickDefaultView);\n}\n
/*\n{{{\n!listOnlyTags Macro\nCopyright (c) 2005, Takeshi Yano\nLicensed under the terms of the BSD License\nhttp://www.sobaboy.com/listOnlyTags/\n */\n\nversion.extensions["listOnlyTags"] = {major: 0, minor: 2, revision: 0};\n\nconfig.macros.listOnlyTags = {\ntext: "Hello"\n\n};\n\nconfig.macros.listOnlyTags.handler = function(place,macroName,params)\n{\n // option search patterns and flag variables\n var listTypePattern = /^[*#]$/;\n var listType = "";\n\n var sortTypePattern = /^(title|modified)$/;\n var sortType = "";\n\n // how many arguments we get\n var params_count = params.length;\n\n\n if(params_count > 1)\n {\n // check last argument for a list type\n if(params[params_count - 1].match(listTypePattern))\n {\n listType = params.pop();\n params_count--;\n }\n else\n {\n listType = "";\n }\n\n // check for a sorting option\n if(params[params_count - 1].match(sortTypePattern))\n {\n sortType = params.pop();\n params_count--;\n }\n else\n {\n sortType = "title";\n }\n }\n\n var tagged;\n var only = new Array;\n var tag_list = "";\n\n if(params_count > 0)\n {\n // for each tag we get\n for(var idx = 0; idx < params_count; idx++)\n {\n // get a list of tiddlers sorted by sortType\n tagged = store.getTaggedTiddlers(params[idx], sortType);\n\n // iterate through the list of tiddlers\n for(var item = 0; item < tagged.length; item++)\n {\n // is the tiddler defined in only Array?\n if(only[tagged[item].title])\n {\n // it's a tiddler we have seen, increment the count by 1\n only[tagged[item].title].count += 1;\n }\n else\n {\n // it's a new tiddler, add it\n only[tagged[item].title] = new Object;\n // future options\n // only[tagged[item].title].title = tagged[item].title;\n // only[tagged[item].title].modified = tagged[item].modified;\n // set the count to 1\n only[tagged[item].title].count = 1;\n }\n }\n }\n\n // iterate through the list of tiddlers\n for(idx in only)\n {\n // have we matched all the tags?\n if(only[idx].count == params_count)\n {\n // add the tiddler as a link to a string\n tag_list = tag_list + listType + "[[" + idx + "]]\sn";\n }\n }\n // now run the string through the wikify process\n wikify(tag_list, place, null, null);\n }\n}\n/*\n}}}\n */
1) The single written system\n(that's already a GTD principle, isn't it ?)\nHave a single written review system for reviews, where all my projects and NextActions are updated.\n<html><br></html>\nIf my reviews are loose, or if my collected stuff is scattered in several places, then my system will be loose and I'll know it :<html><br></html>\n!!<<tiddler SystemLoosenessLaw>>\n<html><br></html>Maybe I still leave incomplete more than a few WeeklyReviews, but I know what I've *choosen* to leave out that time (or, when it recurs, I begin to make more realistic decisions about my active projects).\n\n2) Feedback at the above level\nHave immediate rewarding feedback of your system maintenance efforts :\nDepending of your tools, have some "dashboard" that immediately tells you back what are the consequences at the upper level of choices you make at a level.\nie :\n**daily review process shows you consequences on action lists,\n**WeeklyReview decisions show you the actual goals (objectives, super-projects, etc) you're going to work on : might not exactly be your wished balance.\n\n3) A reminder for process-differed stuff\nI personaly tickler a reminder for everything that enter in my system ideas dump, actions, notes, clips (usually it is a week number). So at WeeklyReview reminders jump at me and then : either process, either differ again (later reminder), either trash. The reminder means : "Do not bother before").\n\n4) A visual still-to-process indicator\nI work (at least at process and review times) on ordinary text files (permanent/log inbox) and on a links-and-tags interactive system (the active part being mirrored in both). Since I use PimliPoche, I discovered a new benefit (for me!) : all my entries are tagged "inBox" and "daydate". When I process I replace "inBox" tag by other appropriate tag(s) : this told me that, before, I let slip stuff out of review more often than I thought !\n\n5) WeeklyReviews reviews\nEnd of WeeklyReview, when warm on it, I dump (less than 2 minutes) ideas for doing better weekly reviews (just dump "seeds"). Sometimes ideas areso obvious todo that I adopt them at once, or update my WR checklist.Twice or three time a year, Improve WeeklyReview (or rather, improve my GTD benefits)is an activated project.\nSince last week I've added "My affirmation for the week" from an idea I got on Charles'site.\n\n6) Time to breathe\nUsually I do my WeeklyReviews in two sessions: Thursday (so friday I may grasp some info I need for my decisions), and sunday. I think the whole nears four hours : because I like it !!\n<html><br></html>\nThe main thing is to look forward WeeklyReview as the game from which you draw profit and fun. Reviews are the time where I grow.
// //''Name:'' moveMessageArea Plugin\n// //''Version:'' <<getversion moveMessageArea>> (<<getversiondate moveMessageArea "DD MMM YYYY">>)\n// //''Author:'' JimBarr\n\n// //''Description:'' This Plugin adds the appropriate CSS style changes to move the messageArea to the top right of the browser window, into the header.\n\nversion.extensions.moveMessageArea= { major: 1, minor: 0, revision: 0, date: new Date(2005, 08, 16)};\n\nsetStylesheet("#messageArea {position: absolute; top:74px; left:13px; border: 1px solid #DCDCDC; background-color: #FFDFDF; color: #000000; font-size: 9px; margin: 0px; padding: 0px 5px 2px 5px; } #messageArea a:link, #messageArea a:visited {color: #000000;} #messageArea a:hover {color: #FFF;background-color: #4275A8;} #messageArea a:active {color: #4275A8;} #titleLine {color: #ffffff; background-color: #bbcc99; padding: 3px;padding-top:5px}", "moveMessageArea");
//Macro: newNote\n//Author: Clint Checketts\n//Version: 1.0 Sept 12, 2005\n\n//usage: <<newNote "Note for IS 410" "IS410 Notes- Sept/07" Tag1 Tag2 OtherTag> > \n//example: < <newNote (button text) (title for the created tiddler) (default tags, unlimited) > >\n\nversion.extensions.newNote = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};\nconfig.macros.newNote = {label: "new note (this.label isn't used anymore)", prompt: "Create a new tiddler from the current date and time as title and tag"};\n\nconfig.macros.newNote.handler = function(place,macroName,params)\n{\n var now = new Date();\n var title = now.formatString(params[1].trim());\n var createNote = function() {\n displayTiddler(null,title,2,null,null,false,false);\n var tagsBox = document.getElementById("editorTags" + title);\n tagsBox.value = "";\n if(tagsBox && params[2])\n for(var i=2; i < params.length; i++) {\n if(params[i]) tagsBox.value += " "+String.encodeTiddlyLink(params[i]);\n }\n var e = document.getElementById("editorBody" + title);\n e.focus();\n e.select();\n };\n createTiddlyButton(place,params[0],this.prompt,createNote);\n}
<html><iframe src="http://www.nextactioncards.com/sample%20cards.htm" width=100% height=80%></iframe></html>\n\n!!<<reminder year:2005 month:10 day:31 title:"nextAction" >>
Here Domingo brings the "Improve stamina case" I use for a GTD with PimliPoche tutorial\n<html><iframe src="http://groups.yahoo.com/group/GtD_Palm/message/20651?threaded=1" width=100% height=95%></iframe></html>
double click on yourFirstAction{{{@@}}} to enter your action as you want it to be displayed in reminders lists.\n
!Specify needs to make the proposal @@5s47@@\n==[ ] Bob input ?\n[ ] Draft [[Proposed training objectives]]==\n[ ] Set a meeting with Eve\n!!<<reminder day:21 title:"Eve for OK">>
!Supporting tools to organize and manage actions\n!!<<showReminders tag:systems format:"TITLE TIDDLER">>
config.macros.tableTags = { text: "Hello" };\nconfig.macros.tableTags.handler = function(place,macroName,params)\n{\n var tag = params[0] ? params[0] : "all";\n var rows = params[1] ? params[1] : 3;\n var tagged = store.getTaggedTiddlers(params[0]);\n var tbl = createTiddlyElement(place,"table",null,null,"");\n var tb = createTiddlyElement( tbl, "tbody", null, null );\n var tr ;\n for(var r=0;r<tagged.length;r++)\n {\n if ( ( r % rows ) == 0 )\n tr = createTiddlyElement( tb, "tr", null, null, "");\n var td = createTiddlyElement(tr,"td",null,null,"");\n createTiddlyLink(td,tagged[r].title,true);\n }\n}
//Select and copy the code to paste in your currently edited tiddler.//\n
<<tagCloud>> <<al lTags>>\n----\n<<showR eminders leadtime:93>>\n----\nMainMenu StyleSheet PinBoard DefaultTiddlers [[~~]]\n----\n//[[PinBoard| ~ ]]//
/***\n!PimliPoche messages and adaptation to core TiddlyWiki\n|Uncomplete at this moment|c\n|!To do|Put pinboard div in a plugin|\n|~|To adapt heading styles to PinBoard|\n|~|==To get a tag filter for reminders== ^^(found in Jeremy Shelley Reminders plugin)^^|\n>Grouping all my interface changes in this tiddler will allow you to upgrade new TiddlyWiki releases without breaking PimliPoche UI.\n!!!Jacques Turbé <<email jacques.turbe at gmail dot com>>\n***/\n/*\n{{{\n*/\nconfig.messages.undefinedTiddlerToolTip = "Double click to enter now what you have in mind. It will be in your inBox for later process.", \nconfig.messages.defaultText = "Double click to enter now what you have in mind about '%0'. It will be in your inBox for later process.", \nconfig.macros.closeAll.label = " Ø ";\nconfig.macros.newJournal.label = " J ";\nconfig.macros.newTiddler.label = " N ";\nconfig.macros.permaview.label = " U ";\nconfig.macros.saveChanges.label = " S ";\nconfig.macros.search.sizeTextbox = 11;\nconfig.views.editor.defaultText ='!!!!<<reminder year:2005 month:10 day:31 title:"nextAction" >>';\nconfig.views.editor.toolbarCancel.text = " ø ";\nconfig.views.editor.toolbarDelete.text = " [X]";\nconfig.views.editor.toolbarDone.text = " + ";\nconfig.views.wikified.toolbarClose.text = " — ";\nconfig.views.wikified.toolbarEdit.text = " + ";\nconfig.views.wikified.toolbarPermalink.text = "URL";\nconfig.views.wikified.toolbarReferences.text = "see";\nconfig.views.wikified.tag.labelTags="see also: ";\nconfig.views.wikified.defaultText ="Double click to dump what you have in mind about '%0'.";\nconfig.views.wikified["toolbarCloseOthers"] = { text: " 1 ", tooltip: "Keep alone on display and close other tiddlers"};\nconfig.views.wikified.toolbarCollapse = {text: " > ", tooltip: "Collapse this tiddler", toggleText: " < ", toggleTooltip: "Expand this tiddler"};\nconfig.views.editor.toolbarDuplicate.text= " = ";\n\nconfig.options.txtTOCSortBy="modified";\nconfig.options.txtTOCListSize=12;\nconfig.options.chkTOCShow=false;\n/*\n}}}\n*/\n
{{{\n~~\nallTags>>\ncalendar\ncalendar ''thismonth''\ncalendar ''year'' ''month''\ncalendar ''year'' ''month'' ''day''\ncloseAll>>\nemail yourname at yourdomain dot com &quot;?optional parameters&quot;\nfaqlist mode source sortBy hrSeparator \ngetversion calendar\ngetversion email\ngetversiondate email &quot;DD MMM YYYY&quot;\nlist all\nlist missing>>\nlist orphans>>\nlist withTags Projects and Todo and not done\nlistOnlyTags :Customers\nlistTags formatting title *\noption chkHttpReadOnly>>\noption chkSinglePageMode\npermaview>>\nsaveChanges>>\nsearch>>\nshowReminders leadtime:14&\nshowReminders leadtime:370 format:&quot;|DIFF|TITLE|TIDDLER|&quot; \nslider chkSliderOptionsPanel OptionsPanel options 'Change TiddlyWiki advanced options'>>>>"\ntimeline>>\ntoolbarClose\ntoolbarCollapse\n\n<html><a href="link.htm"><img src="" alt=""></a></html> \n<html><iframe src="http://pageUrl"\nwidth=100% height=95%></iframe></html>\n}}}\n
PinBoard [[Do First]] [[]] StyleSheet MoreContexts [[~PimliPocheAdaptation]] DefaultTiddlers SiteTitle ContextLists [[Upgrade PimliPoche|http://avm.free.fr/en/empty.html]]\n\n\n<<list withTags :ThisWeek and Prospecting>>\n systemConfig and not systemTiddlers\nChristine and Family\n\n<<list withTags :ThisWeek and :Mail>>\nAOWinTopOfMenu
!!![[ ~ ]] <<search>> @@color(#CECF9C):•@@ <<newTiddler>> @@color(#CECF9C):•@@ <<newJournal "DDD DD MMM YYYY hh:mm">> @@color(#CECF9C):•@@ <<tag Tp>> @@color(#CECF9C):•@@ <<permaview>> @@color(#CECF9C):•@@ <<saveChanges>> @@color(#CECF9C):•@@ <<closeAll>>