Carregant El blog ...

Cal Javascript.
La roda és rodona - O El món en clau lliure - Paco Rivière
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.sparkline {line-height:1em;}
.sparktick {outline:0;}

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which use a logographic writing system and need larger font sizes.
***/

/*{{{*/
body {font-size:0.8em;}

#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}

.subtitle {font-size:0.8em;}

.viewer table.listView {font-size:0.95em;}

.htmlarea .toolbarHA table {border:1px solid ButtonFace; margin:0em 0em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<!--}}}-->
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

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

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

----
Also see AdvancedOptions
/***
|''Name:''|ArchivedTimeline|
|''Version:''|0.5.1 (Jun 04, 2006)|
|''Source:''|https://sourceforge.net/projects/ptw/|
|''Author:''|BramChen|
|''Type:''|Macro|
!Description
Timeline archived monthly.
!Syntax/Examples
>{{{<<timeline [modified | created]>>}}}

!Known issues/Todos
* 

!Instructions

!Notes
*
!Revision history
* v0.5.1 (Jun 04, 2006)
** Added config.macros.archivedTimeline.orderBy, for localization. 
* v0.5.0 (Apr 19, 2006)
** Fixed bug for twice records of the same date ()
** Added Date.prototype.convertToLocalYYYYMMDDHHMM for backward compatible with 2.0.6-
* v0.4.0 (Apr 03, 2006)
** Added new parameter to <<timeline sortfield maxentries>>
** Added config.options.txtTimelineMaxentries
* v0.3.1 (Feb 04, 2006)
** JSLint checked
* v0.3.0 (Feb 04, 2006)
** Fixed several missing variable declarations
* v0.2.0 (Dec 26, 2005)
** changed for the new feature of Macro timeline of TW 2.0.0 beta 6
* v0.1.0 (Nov 3, 2005)
** Initial release.

!Code
***/
//{{{
version.extensions.archivedTimeline = {major: 0, minor: 5, revision: 1,
	date: new Date("Jun 04, 2006"),
	name: "ArchivedTimeline",
	type: "Macro",
	author: "BramChen",
	source: "http://sourceforge.net/project/showfiles.php?group_id=150646"
};
config.options.txtTimelineMaxentries=0;
config.macros.archivedTimeline = {
	tooltips: "Arxius: ",
	orderBy:{modified: "modificat", created: "creat"},
	msg : "El paràmetre de la macro timeline ha de ser 'creat' o 'modificat'",
	dateFormat: "YYYY0MM0DD"
};
config.macros.timeline = config.macros.archivedTimeline;

config.macros.timeline.handler = function(place,macroName,params) {
	var field = params[0] ? params[0] : "modified";
	if (field != "modified" && field != "created") {
		displayMessage(config.macros.timeline.msg);
		return;
	}
	place.appendChild(document.createTextNode(this.tooltips + this.orderBy[field]));
	var tiddlers = store.reverseLookup("tags","excludeLists",false,field);
	var lastMonth = ""; var lastDay = ""; var theText = "----\n"; var i = 0;
	var last = (params[1])?params[1]:config.options.txtTimelineMaxentries;
		last = (isNaN(last)||last<1) ? 0:tiddlers.length-Math.min(tiddlers.length,parseInt(last));
	var cookie; var archives;
	for (var t=tiddlers.length-1; t>=last; t--) {
		var tiddler = tiddlers[t];
		var theMonth = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,6);
		var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
		if(theMonth != lastMonth) {
			if (lastMonth === "") {
				lastMonth = theMonth;
				}
			else {
				place.appendChild(document.createElement("hr"));
				cookie = 'chktimeline'+(i++);
				archives = this.formatString(this.dateFormat, lastMonth);
				this.slider(place,cookie,theText,archives,this.tooltips + archives);
				lastMonth = theMonth; theText = "----\n";
			}
		}
		if(theDay != lastDay){
			theText +=  tiddler[field].formatString(this.dateFormat) + '\n';
			lastDay = theDay; 
		}
		theText += '* [[' + tiddler.title + ']]\n';
	}
	place.appendChild(document.createElement("hr"));
	cookie = 'chktimeline'+(i++);
	archives = this.formatString(this.dateFormat, lastMonth);
	this.slider(place,cookie,theText,archives,this.tooltips + archives);
	place.appendChild(document.createElement("hr"));
};

config.macros.timeline.onClickSlider = config.macros.slider.onClickSlider;

config.macros.timeline.slider = function(place,cookie,text,id,tooltips)
{
	var btn = createTiddlyButton(place,id,tooltips,this.onClickSlider);
	var panel = createTiddlyElement(place,"div",null,"timelineSliderPanel",null);
		panel.setAttribute("cookie",cookie);
		panel.style.display = config.options[cookie] ? "block" : "none";
	if(text){
		wikify(text,panel);
	}
};

config.macros.timeline.formatString = function(template, yyyymm)
{
	var dateString = new Date(yyyymm.substr(0,4)+'/'+yyyymm.substr(4,2)+'/01');
	template = template.replace(/DDD|0DD|DD|hh|mm|ss/g,'');
	return dateString.formatString(template);
};
if (!Date.prototype.convertToLocalYYYYMMDDHHMM){
	Date.prototype.convertToLocalYYYYMMDDHHMM = function(){
		return(String.zeroPad(this.getFullYear(),4) + String.zeroPad(this.getMonth()+1,2) + String.zeroPad(this.getDate(),2) + String.zeroPad(this.getHours(),2) + String.zeroPad(this.getMinutes(),2));
	}
}
//}}}
/***
''Auto Tagger Plugin for TiddlyWiki version 1.2.x and 2.0''
^^author: Eric Shulman - ELS Design Studios
source: http://www.TiddlyTools.com/#AutoTaggerPlugin
license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^

Automatically tag tiddlers with their original creation date and author and optionally scan the tiddler content for any tags that are embedded as text.  Makes cross-referencing your tiddlers a snap!

!!!!!Usage
<<<
When ~AutoTagger is present, it automatically ''generates 'creation date' and 'creator' tag values'' for all newly created tiddlers, so that this information is retained even after a tiddler has been updated many times.  In addition, if you enter ''//auto//'' as a tiddler tag value, ~AutoTagger ''scans the tiddler content'' (including title) for all existing tags, and ''automatically adds any embedded tags that it finds''.

After they have been added to the tiddler, the new tags are treated just as if you had entered them by hand and can be edited to make any changes you want.  Of course, as long as the "auto" tag is still present on a tiddler, ~AutoTagger will re-scan that tiddler's content each time it is edited.  If you DO edit the generated tags, you can remove the "auto" tag from the tiddler to prevent it from being re-scanned when you press 'done' to finish editing.

//Note: the special-purpose ''"systemConfig" tag is not added automatically, even if matched in the tiddler content'', since this tag should be added manually to ensure it is always used appropriately.//

//Note: if you have set the "auto" tag on a tiddler, and then add several tags to your document, those tags will ''not'' be automatically added to the tiddler until you actually edit that tiddler and press 'done' to trigger an AutoTagger scan.//
<<<
!!!!!Configuration
<<<
The ~AutoTagger plugin comes with a ''self-contained control panel''.  Use these controls to enable or disable automatic 'creation date' or 'creator' tagging, modify the default date formatting, or redefine the special 'scan trigger' tag value (so you can use "auto" as a normal tag value in your document).

<<option chkAutoTagAuthor>> add 'created by' tag //(when a tiddler is first created)//
<<option chkAutoTagDate>> add 'creation date' tag, using date format: <<option txtAutoTagFormat>>
<<option chkAutoTagEditor>> add 'edited by' tag //(when a tiddler is updated)//
scan tiddler content for new tags when tagged with: <<option txtAutoTagTrigger>>
----
//date formatting syntax://
^^//''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero//^^
^^//''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero//^^
^^//''YYYY'' - full year, ''YY'' - two digit year//^^
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''AutoTaggerPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2006.05.31 [1.3.1]'' Re-assemble tags into a space-separated string (use encodeTiddlyLink to add {{{[[...]]}}} as needed) before passing it on to core (or other hijacked function)
''2005.10.09 [1.3.0]'' Added 'edited by' tagging. Combined documentation and code into a single tiddler
''2005.08.16 [1.2.0]'' Added optional scanning for tags in tiddler content (based on suggestion from Jacques Turbé)
''2005.08.15 [1.1.0]'' Added 'created by' tag generation (based on suggestion from Elise Springer). Renamed from DateTag to AutoTagger
''2005.08.15 [1.0.0]'' Initial Release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].
<<<
!!!!!Code
***/
//{{{
version.extensions.autoTagger = {major: 1, minor: 3, revision: 1, date: new Date(2006,5,31)};

if (config.options.chkAutoTagDate==undefined)
	config.options.chkAutoTagDate=false;
if (config.options.chkAutoTagEditor==undefined)
	config.options.chkAutoTagEditor=false;
if (config.options.chkAutoTagAuthor==undefined)
	config.options.chkAutoTagAuthor=false;
if (config.options.txtAutoTagTrigger==undefined)
	config.options.txtAutoTagTrigger="auto";
if (config.options.txtAutoTagFormat==undefined)
	config.options.txtAutoTagFormat="YYYY.0MM.0DD";

// hijack store.saveTiddler()
store.coreSaveTiddler = store.saveTiddler;
store.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags)
{
	// get the tags as passed from the tiddler editor
	var newTags = [];
	if (tags) newTags = (typeof tags == "string") ? tags.readBracketedList() : tags;

	// if saving a new tiddler, add 'creation date' tag
	if (config.options.chkAutoTagDate && (store.getTiddler(title)==undefined))
		newTags.pushUnique(new Date().formatString(config.options.txtAutoTagFormat));
	// if saving a new tiddler, add 'created by' tag
	if (config.options.chkAutoTagAuthor && (store.getTiddler(title)==undefined))
		newTags.pushUnique(config.options.txtUserName);
	// if saving an existing tiddler, add 'edited by' tag
	if (config.options.chkAutoTagEditor && (store.getTiddler(title)))
		newTags.pushUnique(config.options.txtUserName);

	// if tagged for scanning, find tags embedded in text of tiddler title/body
	var allTags = store.getTags();
	if ((config.options.txtAutoTagTrigger!="") && (newTags.find(config.options.txtAutoTagTrigger)!=null))
		for (var t=0; t<allTags.length; t++)
			{
			// note: don't automatically tag a tiddler with 'systemConfig' or 'systemTiddler'
			if ((allTags[t][0]=='systemConfig') || (allTags[t][0]=='systemTiddler'))
				continue;
			if ((newBody.indexOf(allTags[t][0])!=-1) || (newTitle.indexOf(allTags[t][0])!=-1))
				newTags.pushUnique(allTags[t][0]);
			}

	// encode tags with [[...]] (as needed)
	for (var t=0; t<newTags.length; t++) newTags[t]=String.encodeTiddlyLink(newTags[t]);

	//  reassemble tags into a string (for other plugins that require a string) and pass it all on
	return store.coreSaveTiddler(title,newTitle,newBody,modifier,modified,newTags.join(" "));
}
//}}}
// //''Name:'' Blog
// //''Version:'' 0.1
// //''Author:'' [[Anshul Nigham|http://yavin4.anshul.info]] (adapted from an earlier plugin by [[ClintChecketts|http://www.checkettsweb.com/]]) 
// //''Type:'' Plugin
// //''Description:'' Posts the most recently edited tiddlers when the TiddlyWiki is opened, similar to a blog.
// //''Syntax:'' Change the daysOrPosts and numOfDaysOrPosts variables below
// // If daysOrPosts variable is "days", tiddlers from the past numOfDaysOrPosts dates will be displayed
// // If daysOrPosts variable is "posts", the past numOfDaysOrPosts tiddlers will be displayed 

// // ''Tested against:'' Tiddlywiki 2.1.3

// // ''HOWTO:'' Simply copy this entire tiddler and paste it into a new tiddler in your own tiddlywiki.
// // Tag it with systemConfig, and also with systemTiddlers if you don't want it to appear within the blog views. Name it anything you like

var daysOrPosts = "posts";
var numOfDaysOrPosts = "4";

function displayTopTiddlers()
{
	if(window.location.hash) daysOrPosts = "";
	if(daysOrPosts == "posts")
	{
		var tiddlerNames = store.reverseLookup("tags","systemTiddlers",false,"modified");
		if (tiddlerNames.length < numOfDaysOrPosts)
			numOfDaysOrPosts = tiddlerNames.length;
		for(var t = tiddlerNames.length-numOfDaysOrPosts;t<=tiddlerNames.length-1;t++)
		story.displayTiddler("top",tiddlerNames[t].title,DEFAULT_VIEW_TEMPLATE,false,false);
	}
	if (daysOrPosts == "days"){
		var lastDay = "";
		var tiddlerNames = store.reverseLookup("tags","systemTiddlers",false,"modified");
		var t = tiddlerNames.length -1;
		var tFollower = 0;
		for(t;t>=0;t--) if(numOfDaysOrPosts >= 0){
			var theDay = tiddlerNames[t].modified.convertToYYYYMMDDHHMM().substr(0,8);
			if(theDay != lastDay){
				numOfDaysOrPosts = numOfDaysOrPosts -1;
				lastDay = theDay;
				tFollower = t;
			}
		}

		for(tFollower = tFollower+1; tFollower < tiddlerNames.length;tFollower++){
			displayTiddler("top",tiddlerNames[tFollower].title,DEFAULT_VIEW_TEMPLATE,false,false);
		}

	}
}

window.original_restart = window.restart;
window.restart = function()
{
	window.original_restart();
	displayTopTiddlers();
}
!Versió: 1.0
19-10-2007
!Decripció dels Paràmetres
|!Paràmetres |%0|%1|%2|%3|%4|%5|
|!Descripcions|títol|url|seleccions|descripcions|referència|etiquetes|
!Lingos del botó 
{{{
''text:'' Promou
''tooltip:'' Envia aquest tiddler a ...
''popupNone:'' No hi ha cap servei a on enviar el tiddler
}}}
!Llista de Serveis
{{{
''Services:'' latafanera
}}}
!Definició dels Serveis
{{{
''latafanera:''<br/>[[latafanera|http://latafanera.net/submit.php?url=%1&quotes=%2&description=%3&via=%4&tag_string=%5]]
}}}
/***
!Metadata:
|''Name:''|BookmarksCommand|
|''Description:''|Toolbar button for bookmarks services|
|''Version:''|1.1.1|
|''Date:''|May 01, 2007|
|''Source:''|http://sourceforge.net/project/showfiles.php?group_id=150646|
|''Author:''|BramChen (bram.chen (at) gmail (dot) com)|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License]]|
|''~CoreVersion:''|2.2.0|
|''Browser:''|Firefox 1.5+; InternetExplorer 6.0|
!Usage:
*Manually add 'bookmarks' to parms of toolbar macro in ViewTemplate, if necessary..
*Add and/or modify the declarations of bookmark services predefined in 'BookmarkService.*'.
> add the name of services to 'Services' slice, each services seprated by a comma (,).
> add a slice named with sach service name, and the slice value is formed with the URLs of the services or.
!Revision History:
|''Version''|''Date''|''Note''|
|1.1.1|May 01, 2007|Improved RegExp of isPretyLink<br>Fixed query strings of Technorati<br>Added more default bookmarks services|
|1.1.0|Apr 22, 2007|Supported multi-lingo by using tiddler slice|
|1.0.1|Apr 20, 2007|Supported TiddlyWiki prety link markups and simple url form|
|1.0.0|Apr 19, 2007|Initial release|
!Code section:
***/
//{{{
//#config.options.chkUsedSel = false;
config.commands.bookmarks = {
	BookmarkServices: 'BookmarkServices',
	bsDefs: "!Decriptions of Params\n|!Params |%0|%1|%2|%3|%4|%5|\n|!Descriptions|title|url|selections|descriptions|rererence|tags|\n!Lingos of command button\n{{{\n''text:'' Bookmarks\n''tooltip:'' Bookmark this tiddlers to ...\n''popupNone:'' There are no bookmark services\n}}}\n!List of Services\n{{{\n''Services:'' Del.icio.us,Digg,Google,Yahoo,Furl,HemiDemi,MyShare,Baidu,Youpus,Technorati\n}}}\n!Definition of Services\n{{{\n''HemiDemi:''<br/>[[HemiDemi|http://www.hemidemi.com/user_bookmark/new?title=%0&url=%1&quotes=%2&description=%3&via=%4&tag_string=%5]]\n''MyShare:''<br/>[[MyShare|http://myshare.url.com.tw/index.php?func=newurl&from=mysharepop&url=%1&desc=%0&contents=%3]]\n''Baidu:''<br/>[[Baidu|http://cang.baidu.com/do/add?iu=%1&it=%0&dc=%3]]\n''Google:''<br/>[[Google|http://www.google.com/bookmarks/mark?op=add&title=%0&bkmk=%1&annotation=%3&labels=%5]]\n''Yahoo:''<br/>[[Yahoo|http://tw.myweb2.search.yahoo.com/myresults/bookmarklet?t=%1&u=%0&d=%3&ei=UTF-8]]\n''Del.icio.us:''<br/>[[Del.icio.us|http://del.icio.us/post?title=%0&url=%1&notes=%3&tags=%5]]\n''Digg:''<br/>[[Digg|http://digg.com/submit?phase=2&url=%0&title=%1&bodytext=%3]]\n''Technorati:''<br/>[[Technorati|http://technorati.com/faves?add=%1&title=%0]]\n''Furl:''<br/>[[Furl|http://www.furl.net/storeIt.jsp?t=%0&u=%1&r=%4&c=%2&p=1]]\n''Youpush:''<br/>[[Youpush|http://www.youpush.net/submit.php?url=%1]]\n}}}",
	text: "Bookmarks",
	tooltip:"Bookmark this tiddlers to ...",
	popupNone: "There are no bookmark services",
	type: 'popup',
	chkToolbar:	function(text) {
		if(text)
			text = text.replace(/macro\=\'toolbar closeTiddler/g, 'macro=\'toolbar bookmarks closeTiddler');
		return text;
	},
	urlFormat: "<html><a href=\"%0\">%1</a><br/></html>",
	imgFormat: "<img title=\"%1\" src=\"%0\"></img>",
//	isPretyLink: /^\[.*\]\]/,
	isPretyLink: /\[[<>]?[Ii][Mm][Gg]\[|\[\[([^\]]+)\]\]/,
	imgSuffix: "_IMG",
	lingoNames: ['text', 'tooltip', 'popupNone']
};

config.commands.bookmarks.init = function(r) {
	if (!config.options.txtLocale) {
		config.options.txtLocale = config.locale ? config.locale : 'en';
	}
	var bs = this.BookmarkServices.replace(/\..*$/,'');
	bs = bs + '.' + config.options.txtLocale;

	if (!store.tiddlerExists(bs)){
		var tiddler = store.createTiddler(bs);
		store.setValue(tiddler,'text',this.bsDefs);
		store.setValue(tiddler,'modifier','BookmarksCommand');
	}
	this.BookmarkServices = bs;

	var lingo = store.getTiddlerSlices(this.BookmarkServices,this.lingoNames);
	if (!lingo) return false;
	for (i in lingo) {
		this[i] = lingo[i];
	}
	this.addToolbar('ViewTemplate');
	if(r) this.refreshUI(); // If BC works with other plugins, like as PopupTipsPlugin, to avoid refreshTiddler to be called multiple times.
};

config.commands.bookmarks.refreshUI = function() {
	story.forEachTiddler(function(title){story.refreshTiddler(title,DEFAULT_VIEW_TEMPLATE,true);});
};

config.commands.bookmarks.addToolbar = function(v) {
	if (store.tiddlerExists(v)){
		var tiddler = store.getTiddler(v);
		var text = tiddler.text;
		store.setValue(tiddler,'text',this.chkToolbar(text));
		store.setValue(tiddler,'modifier','BookmarksCommand');
	}
	else {
		if (store.isShadowTiddler(v))
			config.shadowTiddlers[v] = this.chkToolbar(config.shadowTiddlers[v]);
	}
};

config.commands.bookmarks.handlePopup = function(popup,title)
{
	var outputs={},imgSrc=null;
	var s = store.getTiddlerSlice(this.BookmarkServices,'Services');
	s=s?s.split(','):[];
	var services = store.getTiddlerSlices(this.BookmarkServices,s);
	for(var b in services) {
		var sLists = config.commands.bookmarks.getLists(title);
		outputs[b] = [null,null];
		outputs[b][0] = services[b].format(sLists);
		outputs[b][1] = store.getTiddlerSlice(this.BookmarkServices,b+this.imgSuffix);
	}
	var output='';

	for(var b in outputs) {
		output = outputs[b][0];
		var match = this.isPretyLink.exec(output);
		if (!match){
			imgSrc = (typeof outputs[b][1] == 'undefined')?b:this.imgFormat.format([outputs[b][1],b]);
			output = this.urlFormat.format([outputs[b][0],imgSrc]);
		}
		wikify(output,popup);
	}
};

config.commands.bookmarks.getLists = function(title)
{
	var t = encodeURIComponent(String.encodeTiddlyLink(title));
	if(document.location.hash != t)
		document.location.hash = t;
	t = encodeURIComponent(document.title + ' -- ') + t;
	var href = encodeURIComponent(document.location.href);
	var isShadowed = store.isShadowTiddler(title) && !store.tiddlerExists(title)
	var tiddler = store.getTiddler(title);
	var sel = config.commands.bookmarks.getSel();
	var desc = '';
	if (tiddler && tiddler.isTagged('systemConfig')){
		var isPlugin = true;
		var p = getPluginInfo(tiddler);
		desc = 'Author:' + p.Author + '-' + p.Description;
	}
	else
		desc = isShadowed?config.shadowTiddlers[title]:tiddler.text
	desc = config.options.chkUsedSel?sel:encodeURIComponent(desc);
	var via = config.commands.bookmarks.getRef();
	var tags = isShadowed?'':tiddler.tags.join(' ');
	tags = encodeURIComponent('TiddlyWiki'+ (isPlugin?'Plugin ':' ') + tags);
	return [t,href,sel,desc,via,tags];
};

config.commands.bookmarks.getSel = function(){
	var sel = '';
	if(window.getSelection) sel=window.getSelection();
	if(document.getSelection) sel=document.getSelection();
	if(document.selection) sel=document.selection.createRange().text;
	return sel;
};

config.commands.bookmarks.getRef = function(){
	var ref = '';
	if(document.referrer) ref=document.referrer;
	if(typeof(_ref)!='undefined') ref=_ref;
	return ref;
};
//# If this plugin installed as js file, to ensure it would be started after TW core has been loaded.
var bsInterval = setInterval(function(){if(formatter) {clearInterval(bsInterval); config.commands.bookmarks.init(true);};},100);
//}}}
/***
|''Name:''|CatalanLingo|
|''Description:''|Central Catalan translation for TW|
|''Author:''|Paco Rivière (http://pacoriviere.cat)|
|''Version:''|2.2.3|
|''Source:''|http://pacoriviere.googlepages.com/TiddlyWiki.html|
|''Date:''|Jun 17, 2007|
|''Comments:''|Agrairem els vostres comentaris a https://projectes.lafarga.cat/forum/?group_id=38|
|''License:''|[[BSD open source license]]|
|''~CoreVersion:''|2.2.3|
***/

/*{{{*/
//--
//-- Translateable strings
//--

// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone

config.locale = "ca"; // W3C language tag

merge(config.options,{
	txtUserName: "ElVostreNom"});

merge(config.tasks,{
save: {text: "desa", tooltip: "Desa tots els canvis en aquest arxiu", action: saveChanges},
sync: {text: "sincronitza", tooltip: "Sincronitza els canvis amb d'altres fitxers i servidors TiddlyWiki", content: '<<sync>>'},
importTask: {text: "importa", tooltip: "Importa tiddlers i connector d'altres fitxers TiddlyWiki i servidors", content: '<<importTiddlers>>'},
tweak: {text: "opcions", tooltip: "Tria el comportament de TiddlyWiki", content: '<<options>>'},
plugins: {text: "connectors", tooltip: "Gestiona els connectors", content: '<<plugins>>'}
});

// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
	txtUserName: "Nom utilitzat per signar els canvis",
	chkRegExpSearch: "Cerca expressions regulars",
	chkCaseSensitiveSearch: "Distingeix les majúscules en cercar",
	chkAnimate: "Fes servir animacions",
	chkSaveBackups: "Desa una còpia de seguretat abans de desar els canvis",
	chkAutoSave: "Registra els canvis de forma automàtica",
	chkGenerateAnRssFeed: "Genera un fil RSS en desar els canvis",
	chkSaveEmptyTemplate: "Genera un fitxer 'empty.html'en desar els canvis",
	chkOpenInNewWindow: "Obre els vincles externs en un altre finestra",
	chkToggleLinks: "Tanca els elements oberts en clicar sobre els seus vincles",
	chkHttpReadOnly: "Amaga els botons d'edició quan s'accedeix com per HTTP",
	chkForceMinorUpdate: "Tracta les edicions com a Canvis Menors conservant data i hora",
	chkConfirmDelete: "Demana confirmació abans de superimir un element",
	chkInsertTabs: "Inserta un tabulador amb la tecla 3tab en lloc de slatar el camp",
	txtBackupFolder: "Nom de la carpeta per als arxius de còpia",
	txtMaxEditRows: "Màxim nombre de línies d'una capsa d'edició tiddler",
	txtFileSystemCharSet: "Codificació de caractèrs per desar els (només per Firefox/Mozilla)"});

merge(config.messages,{
	customConfigError: "S'han trobat problemes en carregar els connectors. Veieu el PluginManager per a més detalls",
	pluginError: "Error: %0",
	pluginDisabled: "La etiqueta 'systemConfigDisable' no ha permés l'execució",
	pluginForced: "La etiqueta 'systemConfigForce' ha forçat l'execució",
	pluginVersionError: "No s'ha executat el connector donat que cal una versió més recent de TiddlyWiki",
	nothingSelected: "No heu triat res. Selecioneu un o més elements",
	savedSnapshotError: "Sembla que aquest TiddlyWiki s'ha desat malament. Veieu el detalls a http://pacoriviere.googlepages.com/TiddlyWiki.html#BaixaElProgramari",
	subtitleUnknown: "(desconegut)",
	undefinedTiddlerToolTip: "El tiddler '%0' encara no existeix",
	shadowedTiddlerToolTip: "El tiddler '%0' encara no existeix, però té un valor predefinit",
	tiddlerLinkTooltip: "%0 - %1, %2",
	externalLinkTooltip: "Enllaç extern cap a %0",
	noTags: "No hi ha tiddlers amb etiquetes",
	notFileUrlError: "Cal desar aquest TiddlyWiki a un arxiu abans de poder desar els canvis",
	cantSaveError: "No es poden desar els canvis. Pot ser que el vostre navegador no permeti desar (Proveu de fer servir Firefox, en lloc), o degut a que el nom de la ruta de l'arxiu TiddlyWiki té algun caràcter incorrecte",
	invalidFileError: "Sembla que l'arxiu original '%0' no és un TiddlyWiki vàlid",
	backupSaved: "S'ha desat la còpia",
	backupFailed: "No ha estat possible desar la còpia de l'arxiu",
	rssSaved: "S'ha desat el fil RSS",
	rssFailed: "No ha estat possible desar el fil RSS",
	emptySaved: "S'ha desat la plantilla buida",
	emptyFailed: "No ha estat possible desar la plantilla buida",
	mainSaved: "S'ha desat l'arxiu principal de TiddlyWiki",
	mainFailed: "No ha estat possible desar l'arxiu principal de TiddlyWiki. Els vostres canvis no s'han desat",
	macroError: "Hi ha un error a la macro <<%0>>",
	macroErrorDetails: "Hi ha hagut un error a l'executar la macro <<%0>>:\n%1",
	missingMacro: "No es troba la macro",
	overwriteWarning: "Ja hi ha un tiddler amb el nom '%0'. Trieu DAcord si el voleu sobreescriure",
	unsavedChangesWarning: "ATENCIÓ! Hi ha canvis que no s'han desat al TiddlyWiki\n\nTrieu DAcord per desar\nTrieu ANUL·LA per descartar-los",
	confirmExit: "--------------------------------\n\nHi ha canvis que no s'han desat al TiddlyWiki. Si continueu perdreu aquests canvis\n\n--------------------------------",
	saveInstructions: "DesaElsCanvis",
	unsupportedTWFormat: "El format del TiddlyWiki no es permés '%0'",
	tiddlerSaveError: "Hi ha hagut un error en desar el tiddler '%0'",
	tiddlerLoadError: "Hi ha hagut un error en desar el tiddler '%0'",
	wrongSaveFormat: "No es pot desar en el format de magatzament '%0'. Feu servir el format standard per a desar.",
	invalidFieldName: "El nom del camp no és vàlid vàlid %0",
	fieldCannotBeChanged: "No es pot modificar el camp '%0'",
	loadingMissingTiddler: "Intentant recuperar el '%0' del servidor '%1' a:\n\n'%2' a l'espai de treball '%3'"});

merge(config.messages.messageClose,{
	text: "tanca",
	tooltip: "Tanca aquest tiddler"});

config.messages.backstage = {
	open: {text: "bastidors", tooltip: "Obre els bastidors per les tasques d'autor i editor"},
	close: {text: "tanca", tooltip: "Tanca els bastidors"},
	prompt: "bastidors : ",
	decal: {
		edit: {text: "edita", tooltip: "Edita el tiddler '%0'"}
	}
};

config.messages.listView = {
	tiddlerTooltip: "Cliqueu per preveure el tiddler",
	previewUnavailable: "(no es pot preveure)"
};

config.messages.dates.months = ["de gener de", "de febrer de", "de març de", "d'abril de", "de maig de", "de juny de", "de juliol de", "d'agost de", "de setembre de", "d'octubre de", "de novembre de","de desembre de"];
config.messages.dates.days = ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"];
config.messages.dates.shortMonths = ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"];
config.messages.dates.shortDays = ["Diu", "Dil", "Dma", "Dcr", "Dij", "Div", "Dis"];
// suffixes for dates, eg "1st","2nd","3rd"..."30th","31st"
config.messages.dates.daySuffixes = ["r","n","r","t","é","é","é","é","é","é",
		"é","é","é","é","é","é","é","é","é","é",
		"é","","é","é","é","é","é","é","é","é",
		"é"];
config.messages.dates.am = "m.";
config.messages.dates.pm = "t.";

merge(config.messages.tiddlerPopup,{
	});

merge(config.views.wikified.tag,{
	labelNoTags: "sense etiquetes",
	labelTags: "etiquetes: ",
	openTag: "Obre l'etiqueta '%0'",
	tooltip: "Obre els tiddlers etiquetats amb '%0'",
	openAllText: "obre tots",
	openAllTooltip: "Obre tots aquests tiddlers",
	popupNone: "No hi ha altres tiddlers etiquetats amb '%0'"});

merge(config.views.wikified,{
	defaultText: "El tiddler '%0' no existeix. Cliqueu dos cops per començar-lo",
	defaultModifier: "(falta)",
	shadowModifier: "(tiddler ombra pre-definit)",
	dateFormat: "DD MMM YYYY",
	createdPrompt: "creat el"});

merge(config.views.editor,{
	tagPrompt: "Afegiu les etiquetes separades per espais, [[feu servir corxets]] si cal, o afegiu-ne",
	defaultText: "Entreu el text per a '%0'.'"});

merge(config.views.editor.tagChooser,{
	text: "etiquetes",
	tooltip: "Tria entre les etiquetes actuals per afegir a aquest tiddler",
	popupNone: "No hi ha etiquetes definides",
	tagTooltip: "Atribuir a etiqueta '%0'"});

merge(config.messages,{
	sizeTemplates:
		[
		{unit: 1024*1024*1024, template: "%0\u00a0GB"},
		{unit: 1024*1024, template: "%0\u00a0MB"},
		{unit: 1024, template: "%0\u00a0KB"},
		{unit: 1, template: "%0\u00a0B"}
		]});

merge(config.macros.search,{
	label: "cerca",
	prompt: "Cerca en aquest TiddlyWiki",
	accessKey: "F",
	successMsg: "S'han trobat %0 tiddlers que contenen: '%1'",
	failureMsg: "No s'ha trobat cap tiddler amb: '%0'"});

merge(config.macros.tagging,{
	label: "articles:",
	labelNotTag: "cap article",
	tooltip: "Llista de tiddlers etiquetats amb '%0'"});

merge(config.macros.timeline,{
	dateFormat: "DD MMM YYYY"});

merge(config.macros.allTags,{
	tooltip: "Mostra tiddlers com a etiqueta '%0'",
	noTags: "No hi ha tiddlers amb etiquetes"});

config.macros.list.all.prompt = "Tots els tiddlers per ordre alfabètic";
config.macros.list.missing.prompt = "Tiddlers que tenen enllaços cap a ells, però no estàn definits";
config.macros.list.orphans.prompt = "Tiddlers sense enllaços des de cap altre";
config.macros.list.shadowed.prompt = "Tiddlers amb ombres amb contingut per omisió";
config.macros.list.touched.prompt = "Tiddlers que heu modificat localment";

merge(config.macros.closeAll,{
	label: "tanca tots",
	prompt: "Tanca tots els tiddlers oberts (excepte els que s'estàn editant)"});

merge(config.macros.permaview,{
	label: "torna vista",
	prompt: "Enllaça a una URL que torni tots els tiddlers que es mostren ara"});

merge(config.macros.saveChanges,{
	label: "desa els canvis",
	prompt: "Desa tots els canvis a un arxiu",
	accessKey: "S"});

merge(config.macros.newTiddler,{
	label: "nou tiddler",
	prompt: "Obre un nou tiddler",
	title: "Nou tiddler",
	accessKey: "N"});

merge(config.macros.newJournal,{
	label: "nou diari",
	prompt: "Obre un nou tiddler amb la data i hora actuals",
	accessKey: "J"});

merge(config.macros.options,{
	wizardTitle: "Opcions avançades",
	step1Title: "Aquestes opcions es desen a les galetes del vostre navegador",
	step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Mostre les opcions desconegudes</input>",
	unknownDescription: "//(desconegut)//",
	listViewTemplate: {
		columns: [
			{name: 'Option', field: 'option', title: "Opció", type: 'String'},
			{name: 'Description', field: 'description', title: "Descripció", type: 'WikiText'},
			{name: 'Name', field: 'name', title: "Nom", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
	});

merge(config.macros.plugins,{
	wizardTitle: "Gestor de connectors",
	step1Title: "Connectors carregats",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	skippedText: "(Aquest connector encara no s'ha carregat)",
	noPluginText: "No hi ha cap connector instal·lat",
	confirmDeleteText: "Segur que voleu que suprimir els connectors:\n\n%0",
	removeLabel: "suprimeix l'etiqueta systemConfig",
	removePrompt: "Suprimeix l'etiqueta systemConfig",
	deleteLabel: "suprimeix",
	deletePrompt: "Suprimeix definitivament aquests tiddlers",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Mida", type: 'Size'},
			{name: 'Forced', field: 'forced', title: "Forçat", tag: 'systemConfigForce', type: 'TagCheckbox'},
			{name: 'Disabled', field: 'disabled', title: "Desactivat", tag: 'systemConfigDisable', type: 'TagCheckbox'},
			{name: 'Executed', field: 'executed', title: "Carregat", type: 'Boolean', trueText: "Sí", falseText: "No"},
			{name: 'Startup Time', field: 'startupTime', title: "Temps de càrrega", type: 'String'},
			{name: 'Error', field: 'error', title: "Resultat", type: 'Boolean', trueText: "Error", falseText: "DAcord"},
			{name: 'Log', field: 'log', title: "Registre", type: 'StringList'}
			],
		rowClasses: [
			{className: 'error', field: 'error'},
			{className: 'warning', field: 'avís'}
			]}
	});

merge(config.macros.toolbar,{
	moreLabel: "més",
	morePrompt: "Mostra més ordres"
	});

merge(config.macros.refreshDisplay,{
	label: "actualitza",
	prompt: "Torna a carregar tot el TiddlyWiki"
	});

merge(config.macros.importTiddlers,{
	readOnlyWarning: "No podeu importar a un fitxer TiddlyWiki només de lectura. Mireu d'obrir-lo des d'un fitxer, file:// URL",
	wizardTitle: "Importa tiddlers d'un altre fitxer o servidor",
	step1Title: "Pas 1: Indiqueu el fitxer TiddlyWiki o servidor",
	step1Html: "Indiqueu el tipus de servidor: <select name='selTypes'><option value=''>Trieu...</option></select><br>Entreu la URL o la ruta aquí: <input type='text' size=50 name='txtPath'><br>...o navega: <input type='file' size=50 name='txtBrowse'><br><hr>...o trieu un canal predefinit: <select name='selFeeds'><option value=''>Trieu...</option></select>",
	openLabel: "obre",
	openPrompt: "Obre la connexió amb aquest fitxer o servidor",
	openError: "Hi ha hagut un problema en importar el fitxer Tiddlywiki",
	statusOpenHost: "Obrint el servidor",
	statusGetWorkspaceList: "Obtenint la llista d'espais de treball disponibles",
	step2Title: "Pas 2: Trieu un espai de treball",
	step2Html: "Entreu el nom de l'espai de treball: <input type='text' size=50 name='txtWorkspace'><br>...o trieu un espai de treball: <select name='selWorkspace'><option value=''>Trieu...</option></select>",
	cancelLabel: "anul·la",
	cancelPrompt: "Anul·la la importació",
	statusOpenWorkspace: "Obrint l'espai de treball",
	statusGetTiddlerList: "Obtenint la llista de tiddlers",
	step3Title: "Pas 3: Trieu els tiddlers que voleu importar",
	step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Manté aquests tiddlers enllaçats a aquest servidor per doder sincronitzar el canvis</input><br><input type='checkbox' name='chkSave'>Deseu els detalls del servidor en un tiddler 'systemServer' anomenat:</input> <input type='text' size=25 name='txtSaveTiddler'>",
	importLabel: "importa",
	importPrompt: "Importa aquests tiddlers",
	confirmOverwriteText: "Segur que voleu substituir aquests tiddlers:\n\n%0",
	step4Title: "Pas 4: Important %0 tiddler(s)",
	step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
	doneLabel: "fet",
	donePrompt: "Tanca l'assistent",
	statusDoingImport: "Important els tiddlers",
	statusDoneImport: "S'han importat tots els tiddlers",
	systemServerNamePattern: "%2 de %1",
	systemServerNamePatternNoWorkspace: "%1",
	confirmOverwriteSaveTiddler: "El tiddler '%0' ja existeix. Cliqueu 'DAcord' per sobreescriure'l amb els detalls d'aquest servidor, o 'Anul·la' per deixar-ho tal com és",
	serverSaveTemplate: "|''Tipus:''|%0|\n|''URL:''|%1|\n|''Espai:''|%2|\n\nAquest tiddler es va crear automàticament per registrar els detalls d'aquest servidor",
	serverSaveModifier: "(System)",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Mida", type: 'Size'},
			{name: 'Tags', field: 'tags', title: "Etiquetes", type: 'Tags'}
			],
		rowClasses: [
			]}
	});

merge(config.macros.sync,{
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Server Type', field: 'serverType', title: "Tipus de servidor", type: 'String'},
			{name: 'Server Host', field: 'serverHost', title: "Servidor", type: 'String'},
			{name: 'Server Workspace', field: 'serverWorkspace', title: "Espai de treball", type: 'String'},
			{name: 'Status', field: 'status', title: "Estat de Sicronització", type: 'String'},
			{name: 'Server URL', field: 'serverUrl', title: "URL del servidor", text: "Mostra", type: 'Link'}
			],
		rowClasses: [
			],
		buttons: [
			{caption: "Sync these tiddlers", name: 'sync'}
			]},
	wizardTitle: "Sincronitza amb servidors i fitxers externs",
	step1Title: "Trieu els tiddlers que voleu sincronitzar",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	syncLabel: "sinc",
	syncPrompt: "Sincronitza aquests tiddlers",
	hasChanged: "Ha canviat mentre no era connectat",
	hasNotChanged: "Sense canvis mentre no era connectat",
	syncStatusList: {
		none: {text: "...", color: "cap"},
		changedServer: {text: "Canviat al servidor", color: '#80ff80'},
		changedLocally: {text: "Canviat mentre desconnectat", color: '#80ff80'},
		changedBoth: {text: "Canviat mentre desconnectat i al servidor", color: '#ff8080'},
		notFound: {text: "No s'ha trobat al servidor", color: '#ffff80'},
		putToServer: {text: "S'han desat els canvis al servidor", color: '#ff80ff'},
		gotFromServer: {text: "S'han recuperat els canvis des del servidor", color: '#80ffff'}
		}
	});

merge(config.macros.annotations,{
	});

merge(config.commands.closeTiddler,{
	text: "tanca",
	tooltip: "Tanca aquest tiddler"});

merge(config.commands.closeOthers,{
	text: "tanca altres",
	tooltip: "Tanca tots els altres tiddlers"});

merge(config.commands.editTiddler,{
	text: "edita",
	tooltip: "Edita aquest tiddler",
	readOnlyText: "mostra",
	readOnlyTooltip: "Mostra el codi d'aquest tiddler"});

merge(config.commands.saveTiddler,{
	text: "desa",
	tooltip: "Desa els canvis d'aquest tiddler"});

merge(config.commands.cancelTiddler,{
	text: "anul·la",
	tooltip: "Anul·la els canvis a aquest tiddler",
	warning: "Segur que voleu anul·lar els canvis a '%0'?",
	readOnlyText: "fet",
	readOnlyTooltip: "Torna a l'aspecte normal"});

merge(config.commands.deleteTiddler,{
	text: "suprimeix",
	tooltip: "Suprimeix aquest tiddler",
	warning: "Segur que voleu suprimir '%0'?"});

merge(config.commands.permalink,{
	text: "enllaç permanent",
	tooltip: "Enllaç permanent d'aquest tiddler"});

merge(config.commands.references,{
	text: "referències",
	tooltip: "Obre els tiddlers que enllacen a aquest",
	popupNone: "sense referències"});

merge(config.commands.jump,{
	text: "salta",
	tooltip: "Salta a un altre tiddler obert"});

merge(config.commands.syncing,{
	text: "sincronitzant",
	tooltip: "Control de la sincronització d'aquest tiddler amb un servidor o fitxer extern",
	currentlySyncing: "<div>Es sincromitza <span class='popupHighlight'>'%0'</span> amb:</"+"div><div>servidor: <span class='popupHighlight'>%1</span></"+"div><div>workspace: <span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
	notCurrentlySyncing: "No s'està sincronitzant",
	captionUnSync: "Atura la sincronització d'aquest tiddler",
	chooseServer: "Sincronitza aquest tiddler amb un altre servidor:",
	currServerMarker: "\u25cf ",
	notCurrServerMarker: "  "});

merge(config.commands.fields,{
	text: "camps",
	tooltip: "Mostra els camps ampliats d'aquest tiddler",
	emptyText: "Aquest tiddler no té camps ampliats",
	listViewTemplate: {
		columns: [
			{name: 'Field', field: 'field', title: "Camp", type: 'String'},
			{name: 'Value', field: 'value', title: "Valor", type: 'String'}
			],
		rowClasses: [
			],
		buttons: [
			]}});
merge(config.shadowTiddlers,{
	DefaultTiddlers: "ComComençar",
	MainMenu: "TiddlyWiki\nComComençar\n[[Aparença]]\n[[BaixaElProgramari]]\n[[Connectors]]\n[[Donacions]]\n\n© 2007 [[UnaMesa|http://www.unamesa.org/]]\n[[©|Copyright]] 2007 [[frivière|http://pacoriviere.cat/]]\n\n\n^^TiddlyWiki versió <<version>>^^",
	SiteTitle: "El meu TiddlyWiki",
	SiteSubtitle: "bloc web personal no lineal, reutilitzable",
	SiteUrl: "http://www.tiddlywiki.com/",
	Aparença: "Podeu canviar l'aspecte i comportament de TiddlyWiki gairebé com volgueu:\n\n* Amb ColorPalette per canviar l'esquema de colors de base\n* Amb [[CustomStyleSheet|http://www.tiddlywiki.com/#CustomStyleSheet]] per a controlar detalladament el seu aspecte\n* Amb PageTemplate, ViewTemplate o EditTemplate per canviar la composició de la pàgina i la disposició de tiddlers individuals\n* Utilitzeu temes preparats de [[TiddlyThemes|http://tiddlythemes.com/]]\n* Visiteu el resum de Configuration per veure tots els tiddlers especials de configuració\n* Instal·leu [[Connectors]] per estendre la funcionalitat bàsica (i també [[podeu escriure o adaptar el vostre|http://gimcrackd.com/etc/src/codex/]] fàcilment)\n\nHi ha també un grapat de [[TiddlyWikiTools|http://www.tiddlywiki.com/#TiddlyWikiTools]] que podeu utilitzar per ampliar TiddlyWiki.",
	BaixaElProgramari: "Anem a baixar una còpia de TiddlyWiki que tú podràs modificar al teu ordinador.\n\nClica [[aquí|https://projectes.lafarga.cat/frs/?group_id=38]] i tria la darrera versió.\n\nA partir d'aquí ja pots obrir la pàgina al teu navegador, modificar-la i omplir-la de contingut. Pots fer-la servir al teu ordinador o pujar-la a internet i compartir-la.\n\nAquí trobaràs una [[èxplicació més detallada|http://pacoriviere.googlepages.com/20minuts.html]]",
	Copyright: "CatalanLingo - Localització de TiddlyWiki versió 2.0.0 (c) Paco Rivière, 2006. \n\nSi ''feu servir CatalanLingo públicament'' apreciaria un enllaç cap a (http://pacoriviere.cat/).\n\n''L'ús comercial'' requireix permís previ escrit. Contacteu Paco Rivière a (web [a] pacoriviere [punt] cat).\n\n!LLICÈNCIA\n\nCopyright (c) Paco Rivière 2006\n\nEs permet la distribució del codi font i binari, amb o sense modificacions, sempre que es compleixin les següents condicions:\n\nLa distribució del codi font ha de mantenir el copyright anterior, aquesta llista de condicions i el següent avís.\n\nLa distribució del codi binari ha de mantenir el copyright anterior, aquesta llista de condicions i el següent avís a la documentació i/o altres materials subministrats amb la distribució.\n\nEl nom de Paco Rivière ni els dels seus col·laboradors no es poden fer servir per recolçar o promoure productes derivats d'aquest programari, sense el seu permís explícit previ per escrit.\n\nELS POSSEÏDORS DEL COPYRIGHT I/O ALTRES PARTS FACILITEN EL PROGRAMARI 'TAL QUAL' SENSE CAP MENA DE GARANTIA, NI EXPLÍCITA NI IMPLÍCITA, INCLOSES, ENTRE ALTRES, LES GARANTIES IMPLÍCITES DE COMERCIALITZABILITAT I APTITUD PER A PROPÒSITS DETERMINATS. EN CAP CAS EL POSSEÏDOR DEL COPYRIGHT I/O ALTRES PARTS, TRET DEL QUE REQUEREIXIN ELS ACORDS PER ESCRIT, NO US HAURÀ DE RESPONDRE PER PERJUDICIS, INCLOSOS ELS DIRECTES, INDIRECTES, ESPECIALS, EXEMPLARS, O DANYS CONSEQÜENTS (INCLOSES ENTRE D'ALTRES LES PÈRDUES DE DADES, O BENEFICIS; O INTERRUPCIO DEL NEGOCI), COM SIGUI QUE S'HAGIN PRODUÏT I EN QUALSEVOL TEORIA DE FIABILITAT, TAN SI ÉS EN CONTRACTE, FIABILITAT ESTRICTE, O ALTRES (INCLOSES LA NEGLIGÈNCIA O ALTRES), QUE ES DERIVIN DE L'ÚS DEL PROGRAMA, EN QUALSEVOL FORMA, FINS I TOT SI AQUEST POSSEÏDOR O ALTRA PART HA ESTAT ADVERTIDA DE LA POSSIBILITAT D'AQUESTS PERJUDICIS.",
	ComComençar: "Per començar amb aquest TiddlyWiki en blanc, heu de modificar els següents tiddlers:\n* [[TitolDelLloc|SiteTitle]] & [[SubtitolDelLloc|SiteSubtitle]]: El títol i el subtítol del lloc, com es mostra a sobre (un cop desats, també apareixeran a la barra de títols del navegador)\n* [[MenuPrincipal|MainMenu]]: El menú (normalment a l'esquerra)\n* [[TiddlersPerOmisio|DefaultTiddlers]]: Conté els noms dels tiddlers que voleu que apareguin quan s'obre el TiddlyWiki\nTambé heu d'entrar el vostre nom d'usuari per signar les vostres edicions: <<option txtUserName>>",
	Connectors: "Els connectors (plugins) permeten ampliar les funcions de [[TiddlyWiki]]:\n\n* ''En català'':\n** [[Calendari|http://projectes.lafarga.cat/frs/?group_id=38]] Calendari i agenda.\n** [[Tria el Tema|http://projectes.lafarga.cat/frs/?group_id=38]] Tria l'aspecte de TiddlyWiki entre diversos fulls d'estil.\n** [[Presentació|http://projectes.lafarga.cat/frs/?group_id=38]] Fes presentacions amb TiddlyWiki.\n** [[arxiuPlugin|http://projectes.lafarga.cat/frs/?group_id=38]] Per agrupar els Tiddlers per mesos.\n** [[DissenyUgrudi|http://projectes.lafarga.cat/frs/?group_id=38]] Disseny freaky\n** [[WikiBar|http://projectes.lafarga.cat/frs/?group_id=38]] Una barra d'eines a l'estil Viquipèdia\n** [[RellotgePlugin|http://projectes.lafarga.cat/frs/?group_id=38]] Un rellotge analògic, només amb JavaScript\nPantalles: http://flickr.com/photos/friviere/sets/72157594150898782/\n\n* ''En anglés'': http://www.tiddlywiki.com/index.html#Plugins",
	Donacions: "La localització de TiddlyWiki al català és programari lliure, disponible gratuitament per tothom i sempre ho serà. Si feu  servir TiddlyWiki de forma regular i us resulta útil, podeu [[contribuïr amb una donació|https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=web%40pacoriviere%2ecat&item_name=Donaci%c3%b3%20per%20la%20localitzaci%c3%b3%20de%20TiddlyWiki%20al%20catal%c3%a0&amount=10%2e00&no_shipping=1&return=http%3a%2f%2fpacoriviere%2egooglepages%2ecom%2fTiddlyWiki%2ehtml&no_note=1&tax=0&currency_code=EUR&lc=ES&bn=PP%2dDonationsBF&charset=UTF%2d8]] encara que sigui modesta  a PayPal (com ara 10 Euros)",
	SideBarOptions: "<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal '0DD MMM YYYY' 'diari'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel opcions 'Canvia les opcions avançades del TiddlyWiki'>>",
	OptionsPanel: "Les opcions per personalitzar TiddlyWiki es desen al vostre navegador\n\nEl vostre nom per signar les vostres edicions. Escribiu-lo com una ParaulaWiki (com ara MartiCliment)\n<<option txtUserName>>\n<<option chkSaveBackups>> DesaCòpies\n<<option chkAutoSave>> AutoDesa\n<<option chkRegExpSearch>> CercaExpReg\n<<option chkCaseSensitiveSearch>> CercaSensibleACaixa\n<<option chkAnimate>> ActivaAnimacions\n\n----\nMostra les OpcionsAvançades",
	SideBarTabs: "<<tabs txtMainTab 'Data' 'Tiddlers per ordre cronològic' TabTimeline 'Títol' 'Tiddlers per ordre alfabètic' TabAll 'Etiquetes' 'Tiddlers etiquetats' TabTags 'Més' 'Més llistes' TabMore>>",
	TabTimeline: "<<timeline>>",
	TabAll: "<<list all>>",
	TabTags: "<<allTags>>",
	TabMore: "<<tabs txtMoreTab 'Falten' 'Tiddlers que no existeixen' TabMoreMissing 'Orfes' 'Tiddlers orfes' TabMoreOrphans Ombres 'Tiddlers amb ombra' TabMoreShadowed>>",
	TabMoreMissing: "<<list missing>>",
	TabMoreOrphans: "<<list orphans>>",
	TabMoreShadowed: "<<list shadowed>>",
	TiddlyWiki: "TiddlyWiki en català:\n\nhttp://pacoriviere.googlepages.com/TiddlyWikiCA.html\n[[Guia ràpida en català|http://pacoriviere.googlepages.com/20minuts.html]]\n\nLloc web original de TiddlyWiki (en anglés):\n\nhttp://www.tiddlywiki.com/",
	PluginManager: "<<plugins>>",
	ImportTiddlers: "<<importTiddlers>>",
        OpcionsAvançades: "<<tiddler AdvancedOptions>>",
        GestorDeConnectors: "<<tiddler PluginManager>>",
        ImportaTiddlers: "<<tiddler ImportTiddlers>>"});
delete config.shadowTiddlers.GettingStarted;

merge(config.annotations,{
	AdvancedOptions: "Aquest tiddler ombra dóna accès a vàries opcions avançades",
	ColorPalette: "Els valors que hi ha en aquest tiddler ombra determinen l'esquema de colors de la interfície d'usuari de ~TiddlyWiki",
	DefaultTiddlers: "Els tiddlers que es llisten en aquest tiddler ombra es mostren quan arrenca ~TiddlyWiki",
	EditTemplate: "La plantilla HTML que hi ha en aquest tiddler ombra determina l'aspecte dels tiddlers mentre s'editen",
	GettingStarted: "Aquest tiddler ombra dóna instruccions bàsiques d'ús",
	ImportTiddlers: "Aquest tiddler ombra permet importar tiddlers",
	MainMenu: "Aquest tiddler ombra es fa servir per al contingut del menú principal de la columna de l'esquerra",
	MarkupPreHead: "Aquest tiddler s'inserta a la part superior de la secció <head> del fitxer HTML de TiddlyWiki",
	MarkupPostHead: "Aquest tiddler s'inserta a la part final de la secció <head> del fitxer HTML de TiddlyWiki",
	MarkupPreBody: "Aquest tiddler s'inserta a la part superior de la secció <body> del fitxer HTML de TiddlyWiki",
	MarkupPostBody: "Aquest tiddler s'inserta a la part final de la secció <body> del fitxer HTML de TiddlyWiki just abans del bloc de seqüències",
	OptionsPanel: "Aquest tiddler ombra es fa servir per al contingut del quadre d'opcions slider de la columna de la dreta",
	PageTemplate: "La plantilla HTML que hi ha en aquest tiddler ombra determina la disposició de ~TiddlyWiki",
	PluginManager: "Aquest tiddler ombra dóna access al gestor de connectors",
	SideBarOptions: "Aquest tiddler ombra es fa servir per al contingut del quadre d'opcions de la columna de la dreta",
	SideBarTabs: "Aquest tiddler ombra es fa servir per al contingut del quadre d'etiquetes de la columna de la dreta",
	SiteSubtitle: "Aquest tiddler ombra es fa servir per la segona part del títol de la pàgina",
	SiteTitle: "Aquest tiddler ombra es fa servir per la primera part del títol de la pàgina",
	SiteUrl: "Aquest tiddler ombra cal escriure l'adreça URL sencera per la publicació",
	StyleSheetColours: "Aquest tiddler ombra conté les definicions CSS relatives al color dels elements de la pàgina",
	StyleSheet: "Aquest tiddler pot contenir les vostres definicions CSS personalitzades",
	StyleSheetLayout: "Aquest tiddler ombra conté les definicions CSS relatives a la disposició dels elements de la pàgina",
	StyleSheetLocale: "Aquest tiddler ombra conté les definicions CSS relatives a la traducció local",
	StyleSheetPrint: "Aquest tiddler ombra conté les definicions CSS per la impressió",
	TabAll: "Aquest tiddler ombra conté el contingut de la pestanya 'Títol'de la columna de la dreta",
	TabMore: "Aquest tiddler ombra conté el contingut de la pestanya 'Més'de la columna de la dreta",
	TabMoreMissing: "Aquest tiddler ombra conté el contingut de la pestanya 'Falten'de la columna de la dreta",
	TabMoreOrphans: "Aquest tiddler ombra conté el contingut de la pestanya 'Orfes'de la columna de la dreta",
	TabMoreShadowed: "Aquest tiddler ombra conté el contingut de la pestanya 'Ombres'de la columna de la dreta",
	TabTags: "Aquest tiddler ombra conté el contingut de la pestanya 'Etiquetes'de la columna de la dreta",
	TabTimeline: "Aquest tiddler ombra conté el contingut de la pestanya 'Data'de la columna de la dreta",
	ViewTemplate: "La plantilla HTML que hi ha en aquest tiddler ombra determina l'aspecte dels tiddlers"
	});

/*}}}*/
/*{{{*/
config.options.txtUserName = "PacoRivière";
config.options.chkAutoSave = true;
config.options.chkSaveBackups = false;
config.options.txtBackupFolder = "copies";
/*}}}*/
tag:darrer
El [[grup d'investigació DiM (Didàtica i Multimèdia)|http://dewey.uab.es/pmarques/dim/]] neix des del [[Departament de Pedagogia Aplicada|http://dewey.uab.es/paplicada/]], en el marc institucional de la [[Facultat de Ciències de l'Educació|http://dewey.uab.es/]] de la [[Universitat Autónoma de Barcelona|http://uab.es//]]
[[La pissarra digital|http://dewey.uab.es/pmarques/pdigital/ca/guia2.htm]]
<html><form method="get" action="http://groups.yahoo.com/subscribe/DIM-UAB">
<table cellspacing="0" cellpadding="2" border="0" bgcolor="#ffffff">
  <tr>
    <td colspan="2" align="center">
      <em>Em vull subscriure al grup DIM-UAB</em>
    </td>
  </tr>
  <tr>
    <td>
      <input type="text" name="user" value="entre l'adreça de correu" size="20">
    </td>
    <td>
      <input type="image" border="0" alt="Em vull subscriure al grup DIM-UAB" 
       name="Cliqueu aquí­ per formar-ne part DIM-UAB"
       src="http://f9g.yahoofs.com/groups/g_2563376/.HomePage/__sr_/5ff7.jpg?grbuPcGBnZh8v7va">
    </td>
  </tr>
  <tr align="center">
    <td colspan="2">
      Subjecte a aprovació
    </td>
  </tr>
</table>
</form></html>
He traduït al català algunes algunes eines per al tractament d'[[imatges en cru|http://ca.wikipedia.org/wiki/RAW]]:

Els fitxers d'''imatge en cru'', a diferència dels més populars JPEG, no comprimeixen les dades de la imatge en guardar-la. Els fitxers RAW contenen la totalitat de les dades de la imatge tal com ha estat captada pel sensor digital de la càmera fotogràfica. Pel contrari, no inclouen informació sobre les característiques de l'exposició, com ara la correcció del color (correcció de blancs), el contrast i altres ajustaments realitzats manualment pel fotògraf o automàticament per la càmera.

Si encara no els teniu a la vostra distribució, només heu de copiar el arxiu .mo enllaçats a continuació a la carpeta LC_MESSAGES (A Ubuntu, per exemple es troba a /usr/share/locale/ca/LC_MESSAGES).


*[[Dcraw|http://ca.wikipedia.org/wiki/Dcraw]] - Programa de codi obert capaç de llegir diversos formats RAW d'imatges i convertir-los en formats PPM i TIFF
[[Arxiu mo de la traducció|http://pacoriviere.googlepages.com/dcraw_ca.mo]] v.8.86
[img[DCRaw|http://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/DcrawCA.png/400px-DcrawCA.png][http://ca.wikipedia.org/wiki/Imatge:DCRawCA.png]]

*[[UFRaw|http://ca.wikipedia.org/wiki/UFRaw][http://ca.wikipedia.org/wiki/Imatge:UFRawCA.png]] - Aplicació que pot llegir i manipular imatges en cru, generades per moltes càmeres digitals.
[[Arxiu mo de la traducció|http://pacoriviere.googlepages.com/ufraw.mo]] v.0.13
[img[UFRaw|http://upload.wikimedia.org/wikipedia/commons/thumb/1/18/UFRawCA.png/400px-UFRawCA.png]]

*[[Rawstudio|http://ca.wikipedia.org/wiki/Rawstudio]] - Programa de codi obert capaç de manipular imatges en cru des de càmeres digitals.
[[Arxiu mo de la traducció|http://pacoriviere.googlepages.com/rawstudio.mo]] v.1.0
[img[Rawstudio|http://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/RawstudioCA.png/400px-RawstudioCA.png][http://ca.wikipedia.org/wiki/Imatge:RawstudioCA.png]]
/***
|Name|ExportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ExportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ExportTiddlersPluginInfo|
|Version|2.7.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|select and extract tiddlers from your ~TiddlyWiki documents and save them to a separate file|
ExportTiddlersPlugin lets you select and extract tiddlers from your ~TiddlyWiki documents using interactive control panel lets you specify a destination, and then select which tiddlers to export. Tiddler data can be output as complete, stand-alone TiddlyWiki documents, or just the selected tiddlers ("~PureStore" format -- smaller files!) that can be imported directly into another ~TiddlyWiki, or as an ~RSS-compatible XML file that can be published for RSS syndication.
!!!!!Documentation
>see [[ExportTiddlersPluginInfo]]
!!!!!Inline control panel (live):
><<exportTiddlers inline>>
!!!!!Revisions
<<<
2008.05.27 [2.7.0] added ability to 'merge' with existing export file. Also, revised 'matchTags' functionality to be more robust and more efficient
|please see [[ExportTiddlersPluginInfo]] for additional revision details|
2005.10.09 [0.0.0] development started
<<<
!!!!!Code
***/
//{{{
// version
version.extensions.exportTiddlers = {major: 2, minor: 7, revision: 0, date: new Date(2008,5,27)};

// default shadow definition
config.shadowTiddlers.ExportTiddlers="<<exportTiddlers inline>>";

// add 'export' backstage task (following built-in import task)
if (config.tasks) { // TW2.2 or above
	config.tasks.exportTask = {
		text:"export",
		tooltip:"Export selected tiddlers to another file",
		content:"<<exportTiddlers inline>>"
	}
	config.backstageTasks.splice(config.backstageTasks.indexOf("importTask")+1,0,"exportTask");
}

// macro handler
config.macros.exportTiddlers = {
	label: "export tiddlers",
	prompt: "Copy selected tiddlers to an export document",
	newdefault: "export.html",
	datetimefmt: "0MM/0DD/YYYY 0hh:0mm:0ss" // for "filter date/time" edit fields
};

config.macros.exportTiddlers.handler = function(place,macroName,params) {
	if (params[0]!="inline")
		{ createTiddlyButton(place,this.label,this.prompt,onClickExportMenu); return; }
	var panel=createExportPanel(place);
	panel.style.position="static";
	panel.style.display="block";
}

function createExportPanel(place) {
	var panel=document.getElementById("exportPanel");
	if (panel) { panel.parentNode.removeChild(panel); }
	setStylesheet(config.macros.exportTiddlers.css,"exportTiddlers");
	panel=createTiddlyElement(place,"span","exportPanel",null,null)
	panel.innerHTML=config.macros.exportTiddlers.html;
	exportInitFilter();
	refreshExportList(0);
	var fn=document.getElementById("exportFilename");
	if (window.location.protocol=="file:" && !fn.value.length) {
		// get new target path/filename
		var newPath=getLocalPath(window.location.href);
		var slashpos=newPath.lastIndexOf("/"); if (slashpos==-1) slashpos=newPath.lastIndexOf("\\"); 
		if (slashpos!=-1) newPath=newPath.substr(0,slashpos+1); // trim filename
		fn.value=newPath+config.macros.exportTiddlers.newdefault;
	}
	return panel;
}

function onClickExportMenu(e)
{
	if (!e) var e = window.event;
	var parent=resolveTarget(e).parentNode;
	var panel = document.getElementById("exportPanel");
	if (panel==undefined || panel.parentNode!=parent)
		panel=createExportPanel(parent);
	var isOpen = panel.style.display=="block";
	if(config.options.chkAnimate)
		anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));
	else
		panel.style.display = isOpen ? "none" : "block" ;
	if (panel.style.display!="none") { // update list and set focus when panel is made visible
		refreshExportList(0);
		var fn=document.getElementById("exportFilename"); fn.focus(); fn.select();
	}
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);
}
//}}}

// // IE needs explicit scoping for functions called by browser events
//{{{
window.onClickExportMenu=onClickExportMenu;
window.onClickExportButton=onClickExportButton;
window.exportShowFilterFields=exportShowFilterFields;
window.refreshExportList=refreshExportList;
//}}}

// // CSS for floating export control panel
//{{{
config.macros.exportTiddlers.css = '\
#exportPanel {\
	display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;\
	background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
	border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
	padding: 0.5em; margin:0em; -moz-border-radius:1em;\
}\
#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\
#exportPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\
#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\
#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\
#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\
#exportPanel input  { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%; }\
#exportPanel textarea  { width:98%;padding:0px;margin:0px;overflow:auto;font-size:8pt; }\
#exportPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px; }\
#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\
#exportPanel .rad { width:auto;border:0 }\
#exportPanel .chk { width:auto;border:0 }\
#exportPanel .btn { width:auto; }\
#exportPanel .btn1 { width:98%; }\
#exportPanel .btn2 { width:48%; }\
#exportPanel .btn3 { width:32%; }\
#exportPanel .btn4 { width:24%; }\
#exportPanel .btn5 { width:19%; }\
';
//}}}

// // HTML for export control panel interface
//{{{
config.macros.exportTiddlers.html = '\
<!-- target path/file  -->\
<div>\
export to path/filename:<br>\
<input type="text" id="exportFilename" size=40 style="width:93%"><input \
	type="button" id="exportBrowse" value="..." title="select or enter a local folder/file..." style="width:5%" \
	onclick="var fn=window.promptForExportFilename(this); if (fn.length) this.previousSibling.value=fn; ">\
</div>\
\
<!-- output format -->\
<div>\
output file format:\
<select id="exportFormat" size=1>\
<option value="TW">TiddlyWiki document (includes core code)</option>\
<option value="DIV">TiddlyWiki "PureStore" file (tiddler data only)</option>\
<option value="XML">XML (for RSS newsfeed)</option>\
</select>\
</div>\
\
<!-- notes -->\
<div>\
notes:<br>\
<textarea id="exportNotes" rows=3 cols=40 style="height:4em;margin-bottom:5px;" onfocus="this.select()"></textarea> \
</div>\
\
<!-- list of tiddlers -->\
<table><tr align="left"><td>\
	select:\
	<a href="JavaScript:;" id="exportSelectAll"\
		onclick="onClickExportButton(this)" title="select all tiddlers">\
		&nbsp;all&nbsp;</a>\
	<a href="JavaScript:;" id="exportSelectChanges"\
		onclick="onClickExportButton(this)" title="select tiddlers changed since last save">\
		&nbsp;changes&nbsp;</a> \
	<a href="JavaScript:;" id="exportSelectOpened"\
		onclick="onClickExportButton(this)" title="select tiddlers currently being displayed">\
		&nbsp;opened&nbsp;</a> \
	<a href="JavaScript:;" id="exportSelectRelated"\
		onclick="onClickExportButton(this)" title="select all tiddlers related (by link or transclusion) to the currently selected tiddlers">\
		&nbsp;related&nbsp;</a> \
	<a href="JavaScript:;" id="exportToggleFilter"\
		onclick="onClickExportButton(this)" title="show/hide selection filter">\
		&nbsp;filter&nbsp;</a>  \
</td><td align="right">\
	<a href="JavaScript:;" id="exportListSmaller"\
		onclick="onClickExportButton(this)" title="reduce list size">\
		&nbsp;&#150;&nbsp;</a>\
	<a href="JavaScript:;" id="exportListLarger"\
		onclick="onClickExportButton(this)" title="increase list size">\
		&nbsp;+&nbsp;</a>\
</td></tr></table>\
<select id="exportList" multiple size="10" style="margin-bottom:5px;"\
	onchange="refreshExportList(this.selectedIndex)">\
</select><br>\
</div><!--box-->\
\
<!-- selection filter -->\
<div id="exportFilterPanel" style="display:none">\
<table><tr align="left"><td>\
	selection filter\
</td><td align="right">\
	<a href="JavaScript:;" id="exportHideFilter"\
		onclick="onClickExportButton(this)" title="hide selection filter">hide</a>\
</td></tr></table>\
<div class="box">\
<input type="checkbox" class="chk" id="exportFilterStart" value="1"\
	onclick="exportShowFilterFields(this)"> starting date/time<br>\
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\
	<select size=1 id="exportFilterStartBy" onchange="exportShowFilterFields(this);">\
		<option value="0">today</option>\
		<option value="1">yesterday</option>\
		<option value="7">a week ago</option>\
		<option value="30">a month ago</option>\
		<option value="site">SiteDate</option>\
		<option value="file">file date</option>\
		<option value="other">other (mm/dd/yyyy hh:mm)</option>\
	</select>\
</td><td width="50%">\
	<input type="text" id="exportStartDate" onfocus="this.select()"\
		onchange="document.getElementById(\'exportFilterStartBy\').value=\'other\';">\
</td></tr></table>\
<input type="checkbox" class="chk" id="exportFilterEnd" value="1"\
	onclick="exportShowFilterFields(this)"> ending date/time<br>\
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\
	<select size=1 id="exportFilterEndBy" onchange="exportShowFilterFields(this);">\
		<option value="0">today</option>\
		<option value="1">yesterday</option>\
		<option value="7">a week ago</option>\
		<option value="30">a month ago</option>\
		<option value="site">SiteDate</option>\
		<option value="file">file date</option>\
		<option value="other">other (mm/dd/yyyy hh:mm)</option>\
	</select>\
</td><td width="50%">\
	<input type="text" id="exportEndDate" onfocus="this.select()"\
		onchange="document.getElementById(\'exportFilterEndBy\').value=\'other\';">\
</td></tr></table>\
<input type="checkbox" class="chk" id=exportFilterTags value="1"\
	onclick="exportShowFilterFields(this)"> match tags<br>\
<input type="text" id="exportTags" onfocus="this.select()">\
<input type="checkbox" class="chk" id=exportFilterText value="1"\
	onclick="exportShowFilterFields(this)"> match titles/tiddler text<br>\
<input type="text" id="exportText" onfocus="this.select()">\
</div> <!--box-->\
</div> <!--panel-->\
\
<!-- action buttons -->\
<div style="text-align:center">\
<input type=button class="btn4" onclick="onClickExportButton(this)"\
	id="exportFilter" value="apply filter">\
<input type=button class="btn4" onclick="onClickExportButton(this)"\
	id="exportStart" value="export tiddlers">\
<input type=button class="btn4" onclick="onClickExportButton(this)"\
	id="exportDelete" value="delete tiddlers">\
<input type=button class="btn4" onclick="onClickExportButton(this)"\
	id="exportClose" value="close">\
</div><!--center-->\
';
//}}}

// // initialize interface

// // exportInitFilter()
//{{{
function exportInitFilter() {
	// start date
	document.getElementById("exportFilterStart").checked=false;
	document.getElementById("exportStartDate").value="";
	// end date
	document.getElementById("exportFilterEnd").checked=false;
	document.getElementById("exportEndDate").value="";
	// tags
	document.getElementById("exportFilterTags").checked=false;
	document.getElementById("exportTags").value="";
	// text
	document.getElementById("exportFilterText").checked=false;
	document.getElementById("exportText").value="";
	// show/hide filter input fields
	exportShowFilterFields();
}
//}}}

// // exportShowFilterFields(which)
//{{{
function exportShowFilterFields(which) {
	var show;

	show=document.getElementById('exportFilterStart').checked;
	document.getElementById('exportFilterStartBy').style.display=show?"block":"none";
	document.getElementById('exportStartDate').style.display=show?"block":"none";
	var val=document.getElementById('exportFilterStartBy').value;
	document.getElementById('exportStartDate').value
		=getFilterDate(val,'exportStartDate').formatString(config.macros.exportTiddlers.datetimefmt);
	 if (which && (which.id=='exportFilterStartBy') && (val=='other'))
		document.getElementById('exportStartDate').focus();

	show=document.getElementById('exportFilterEnd').checked;
	document.getElementById('exportFilterEndBy').style.display=show?"block":"none";
	document.getElementById('exportEndDate').style.display=show?"block":"none";
	var val=document.getElementById('exportFilterEndBy').value;
	document.getElementById('exportEndDate').value
		=getFilterDate(val,'exportEndDate').formatString(config.macros.exportTiddlers.datetimefmt);
	 if (which && (which.id=='exportFilterEndBy') && (val=='other'))
		document.getElementById('exportEndDate').focus();

	show=document.getElementById('exportFilterTags').checked;
	document.getElementById('exportTags').style.display=show?"block":"none";

	show=document.getElementById('exportFilterText').checked;
	document.getElementById('exportText').style.display=show?"block":"none";
}
//}}}

// // onClickExportButton(which): control interactions
//{{{
function onClickExportButton(which)
{
	// DEBUG alert(which.id);
	var theList=document.getElementById('exportList'); if (!theList) return;
	var count = 0;
	var total = store.getTiddlers('title').length;
	switch (which.id)
		{
		case 'exportFilter':
			count=filterExportList();
			var panel=document.getElementById('exportFilterPanel');
			if (count==-1) { panel.style.display='block'; break; }
			document.getElementById("exportStart").disabled=(count==0);
			document.getElementById("exportDelete").disabled=(count==0);
			clearMessage(); displayMessage("filtered "+formatExportMessage(count,total));
			if (count==0) { alert("No tiddlers were selected"); panel.style.display='block'; }
			break;
		case 'exportStart':
			exportTiddlers();
			break;
		case 'exportDelete':
			exportDeleteTiddlers();
			break;
		case 'exportHideFilter':
		case 'exportToggleFilter':
			var panel=document.getElementById('exportFilterPanel')
			panel.style.display=(panel.style.display=='block')?'none':'block';
			break;
		case 'exportSelectChanges':
			var lastmod=new Date(document.lastModified);
			for (var t = 0; t < theList.options.length; t++) {
				if (theList.options[t].value=="") continue;
				var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;
				theList.options[t].selected=(tiddler.modified>lastmod);
				count += (tiddler.modified>lastmod)?1:0;
			}
			document.getElementById("exportStart").disabled=(count==0);
			document.getElementById("exportDelete").disabled=(count==0);
			clearMessage(); displayMessage(formatExportMessage(count,total));
			if (count==0) alert("There are no unsaved changes");
			break;
		case 'exportSelectAll':
			for (var t = 0; t < theList.options.length; t++) {
				if (theList.options[t].value=="") continue;
				theList.options[t].selected=true;
				count += 1;
			}
			document.getElementById("exportStart").disabled=(count==0);
			document.getElementById("exportDelete").disabled=(count==0);
			clearMessage(); displayMessage(formatExportMessage(count,count));
			break;
		case 'exportSelectOpened':
			for (var t = 0; t < theList.options.length; t++) theList.options[t].selected=false;
			var tiddlerDisplay = document.getElementById("tiddlerDisplay"); // for TW2.1-
			if (!tiddlerDisplay) tiddlerDisplay = document.getElementById("storyDisplay"); // for TW2.2+
			for (var t=0;t<tiddlerDisplay.childNodes.length;t++) {
				var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);
				for (var i = 0; i < theList.options.length; i++) {
					if (theList.options[i].value!=tiddler) continue;
					theList.options[i].selected=true; count++; break;
				}
			}
			document.getElementById("exportStart").disabled=(count==0);
			document.getElementById("exportDelete").disabled=(count==0);
			clearMessage(); displayMessage(formatExportMessage(count,total));
			if (count==0) alert("There are no tiddlers currently opened");
			break;
		case 'exportSelectRelated':
			// recursively build list of related tiddlers
			function getRelatedTiddlers(tid,tids) {
				var t=store.getTiddler(tid); if (!t || tids.contains(tid)) return tids;
				tids.push(t.title);
				if (!t.linksUpdated) t.changed();
				for (var i=0; i<t.links.length; i++)
					if (t.links[i]!=tid) tids=getRelatedTiddlers(t.links[i],tids);
				return tids;
			}
			// for all currently selected tiddlers, gather up the related tiddlers (including self) and select them as well
			var tids=[];
			for (var i=0; i<theList.options.length; i++)
				if (theList.options[i].selected) tids=getRelatedTiddlers(theList.options[i].value,tids);
			// select related tiddlers (includes original selected tiddlers)
			for (var i=0; i<theList.options.length; i++)
				theList.options[i].selected=tids.contains(theList.options[i].value);
			clearMessage(); displayMessage(formatExportMessage(tids.length,total));
			break;
		case 'exportListSmaller':	// decrease current listbox size
			var min=5;
			theList.size-=(theList.size>min)?1:0;
			break;
		case 'exportListLarger':	// increase current listbox size
			var max=(theList.options.length>25)?theList.options.length:25;
			theList.size+=(theList.size<max)?1:0;
			break;
		case 'exportClose':
			document.getElementById('exportPanel').style.display='none';
			break;
		}
}
//}}}

// // promptForFilename(msg,path,file) uses platform/browser specific functions to get local filespec
//{{{
window.promptForExportFilename=function(here)
{
	var msg=here.title; // use tooltip as dialog box message
	var path=getLocalPath(document.location.href);
	var slashpos=path.lastIndexOf("/"); if (slashpos==-1) slashpos=path.lastIndexOf("\\"); 
	if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
	var file=config.macros.exportTiddlers.newdefault;
	var result="";
	if(window.Components) { // moz
		try {
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
			var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
			var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
			picker.init(window, msg, nsIFilePicker.modeSave);
			var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
			thispath.initWithPath(path);
			picker.displayDirectory=thispath;
			picker.defaultExtension='html';
			picker.defaultString=file;
			picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
			if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
		}
		catch(e) { alert('error during local file access: '+e.toString()) }
	}
	else { // IE
		try { // XPSP2 IE only
			var s = new ActiveXObject('UserAccounts.CommonDialog');
			s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
			s.FilterIndex=3; // default to HTML files;
			s.InitialDir=path;
			s.FileName=file;
			if (s.showOpen()) var result=s.FileName;
		}
		catch(e) {  // fallback
			var result=prompt(msg,path+file);
		}
	}
	return result;
}
//}}}

// // list display
//{{{
function formatExportMessage(count,total)
{
	var txt=total+' tiddler'+((total!=1)?'s':'')+" - ";
	txt += (count==0)?"none":(count==total)?"all":count;
	txt += " selected for export";
	return txt;
}

function refreshExportList(selectedIndex)
{
	var theList  = document.getElementById("exportList");
	var sort;
	if (!theList) return;
	// get the sort order
	if (!selectedIndex)   selectedIndex=0;
	if (selectedIndex==0) sort='modified';
	if (selectedIndex==1) sort='title';
	if (selectedIndex==2) sort='modified';
	if (selectedIndex==3) sort='modifier';
	if (selectedIndex==4) sort='tags';

	// unselect headings and count number of tiddlers actually selected
	var count=0;
	for (var t=5; t < theList.options.length; t++) {
		if (!theList.options[t].selected) continue;
		if (theList.options[t].value!="")
			count++;
		else { // if heading is selected, deselect it, and then select and count all in section
			theList.options[t].selected=false;
			for ( t++; t<theList.options.length && theList.options[t].value!=""; t++) {
				theList.options[t].selected=true;
				count++;
			}
		}
	}

	// disable "export" and "delete" buttons if no tiddlers selected
	document.getElementById("exportStart").disabled=(count==0);
	document.getElementById("exportDelete").disabled=(count==0);
	// show selection count
	var tiddlers = store.getTiddlers('title');
	if (theList.options.length) { clearMessage(); displayMessage(formatExportMessage(count,tiddlers.length)); }

	// if a [command] item, reload list... otherwise, no further refresh needed
	if (selectedIndex>4)  return;

	// clear current list contents
	while (theList.length > 0) { theList.options[0] = null; }
	// add heading and control items to list
	var i=0;
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	theList.options[i++]=
		new Option(tiddlers.length+" tiddlers in document", "",false,false);
	theList.options[i++]=
		new Option(((sort=="title"        )?">":indent)+' [by title]', "",false,false);
	theList.options[i++]=
		new Option(((sort=="modified")?">":indent)+' [by date]', "",false,false);
	theList.options[i++]=
		new Option(((sort=="modifier")?">":indent)+' [by author]', "",false,false);
	theList.options[i++]=
		new Option(((sort=="tags"	)?">":indent)+' [by tags]', "",false,false);
	// output the tiddler list
	switch(sort)
		{
		case "title":
			for(var t = 0; t < tiddlers.length; t++)
				theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
			break;
		case "modifier":
		case "modified":
			var tiddlers = store.getTiddlers(sort);
			// sort descending for newest date first
			tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });
			var lastSection = "";
			for(var t = 0; t < tiddlers.length; t++)
				{
				var tiddler = tiddlers[t];
				var theSection = "";
				if (sort=="modified") theSection=tiddler.modified.toLocaleDateString();
				if (sort=="modifier") theSection=tiddler.modifier;
				if (theSection != lastSection)
					{
					theList.options[i++] = new Option(theSection,"",false,false);
					lastSection = theSection;
					}
				theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
				}
			 break;
		case "tags":
			var theTitles = {}; // all tiddler titles, hash indexed by tag value
			var theTags = new Array();
			for(var t=0; t<tiddlers.length; t++) {
				var title=tiddlers[t].title;
				var tags=tiddlers[t].tags;
				if (!tags || !tags.length) {
					if (theTitles["untagged"]==undefined) { theTags.push("untagged"); theTitles["untagged"]=new Array(); }
					theTitles["untagged"].push(title);
				}
				else for(var s=0; s<tags.length; s++) {
					if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
					theTitles[tags[s]].push(title);
				}
			}
			theTags.sort();
			for(var tagindex=0; tagindex<theTags.length; tagindex++) {
				var theTag=theTags[tagindex];
				theList.options[i++]=new Option(theTag,"",false,false);
				for(var t=0; t<theTitles[theTag].length; t++)
					theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
			}
			break;
		}
	theList.selectedIndex=selectedIndex;		  // select current control item
	document.getElementById("exportStart").disabled=true;
	document.getElementById("exportDelete").disabled=true;
	clearMessage(); displayMessage(formatExportMessage(0,tiddlers.length));
}
//}}}

// // list filtering
//{{{
function getFilterDate(val,id)
{
	var result=0;
	switch (val) {
		case 'site':
			var timestamp=store.getTiddlerText("SiteDate");
			if (!timestamp) timestamp=document.lastModified;
			result=new Date(timestamp);
			break;
		case 'file':
			result=new Date(document.lastModified);
			break;
		case 'other':
			result=new Date(document.getElementById(id).value);
			break;
		default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31
			var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;
			var oneday=86400000;
			if (id=='exportStartDate')
				result=new Date((Math.floor(now/oneday)-val)*oneday+tz);
			else
				result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);
			break;
	}
	// DEBUG alert('getFilterDate('+val+','+id+')=='+result+"\nnow="+now);
	return result;
}

function filterExportList()
{
	var theList  = document.getElementById("exportList"); if (!theList) return -1;

	var filterStart=document.getElementById("exportFilterStart").checked;
	var val=document.getElementById("exportFilterStartBy").value;
	var startDate=getFilterDate(val,'exportStartDate');

	var filterEnd=document.getElementById("exportFilterEnd").checked;
	var val=document.getElementById("exportFilterEndBy").value;
	var endDate=getFilterDate(val,'exportEndDate');

	var filterTags=document.getElementById("exportFilterTags").checked;
	var tags=document.getElementById("exportTags").value;

	var filterText=document.getElementById("exportFilterText").checked;
	var text=document.getElementById("exportText").value;

	if (!(filterStart||filterEnd||filterTags||filterText)) {
		alert("Please set the selection filter");
		document.getElementById('exportFilterPanel').style.display="block";
		return -1;
	}
	if (filterStart&&filterEnd&&(startDate>endDate)) {
		var msg="starting date/time:\n"
		msg+=startDate.toLocaleString()+"\n";
		msg+="is later than ending date/time:\n"
		msg+=endDate.toLocaleString()
		alert(msg);
		return -1;
	}

	// if filter by tags, set up conditional expression
	if (filterTags) {
		var all = store.getTags(); // get list of all tags
		for (var i=0; i<all.length; i++) all[i]=all[i][0]; // remove tag counts
		// convert "tag1 AND ( tag2 OR NOT tag3 )"
		// into javascript expression containing regexp tests:
		// "/\~tag1\~/.test(...) && ( /\~tag2\~/.test(...) || ! /\~tag2\~/.test(...) )"
		var c=tags;
		c = c.replace(/[\[\]]/g,""); // remove [[...]] quoting around tagvalues
		// change AND/OR/NOT/parens to javascript operators and delimit terms with "~"
		c = c.replace(/\sand\s/ig,"~&&~");
		c = c.replace(/\sor\s/ig,"~||~");
		c = c.replace(/(\s)?not([\s\(])/ig,"~!~$2");
		c = c.replace(/([\(\)])/ig,"~$1~");
		// change existing tags to regexp tests and non-existing tags to "false"
		var terms=c.split("~");
		for (var i=0; i<terms.length; i++) { var t=terms[i];
			if (/(&&)|(\|\|)|[!\(\)]/.test(t) || t=="") continue; // skip operators/parens/spaces
			terms[i]=!all.contains(t)?"false":("/\\~"+t+"\\~/.test(tiddlertags)");
		}
		c=terms.join(" ");
	}
	function matchTags(t,c) {
		if (!c||!c.trim().length) return false;
		// assemble tags from tiddler into string "~tag1~tag2~tag3~"
		var tiddlertags = "~"+t.tags.join("~")+"~";
		// eval string against boolean test expression
		try { if(eval(c)) return true; }
		catch(e) { displayMessage(e.toString()); }
		return false;
	}
	
	// scan list and select tiddlers that match all applicable criteria
	var total=0;
	var count=0;
	for (var i=0; i<theList.options.length; i++) {
		// get item, skip non-tiddler list items (section headings)
		var opt=theList.options[i]; if (opt.value=="") continue;
		// get tiddler, skip missing tiddlers (this should NOT happen)
		var tiddler=store.getTiddler(opt.value); if (!tiddler) continue; 
		var sel=true;
		if ( (filterStart && tiddler.modified<startDate)
		|| (filterEnd && tiddler.modified>endDate)
		|| (filterTags && !matchTags(tiddler,c))
		|| (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))
			sel=false;
		opt.selected=sel;
		count+=sel?1:0;
		total++;
	}
	return count;
}
//}}}

// // OUTPUT FORMATTING AND FILE I/O
//{{{
function exportTWHeader()
{
	// get the TiddlyWiki core code source
	var sourcefile=getLocalPath(document.location.href);
	var source=loadFile(sourcefile);
	if(source==null) { alert(config.messages.cantSaveError); return null; }
	// reset existing HTML source markup
	source=updateMarkupBlock(source,"PRE-HEAD");
	source=updateMarkupBlock(source,"POST-HEAD");
	source=updateMarkupBlock(source,"PRE-BODY");
	source=updateMarkupBlock(source,"POST-BODY");
	// find store area
	var posOpeningDiv=source.indexOf(startSaveArea);
	var posClosingDiv=source.lastIndexOf(endSaveArea);
	if((posOpeningDiv==-1)||(posClosingDiv==-1))
		{ alert(config.messages.invalidFileError.format([sourcefile])); return; }
	// return everything up to store area
	return source.substr(0,posOpeningDiv+startSaveArea.length);
}

function exportTWFooter()
{
	// get the TiddlyWiki core code source
	var sourcefile=getLocalPath(document.location.href);
	var source=loadFile(sourcefile);
	if(source==null) { alert(config.messages.cantSaveError); return null; }
	// reset existing HTML source markup
	source=updateMarkupBlock(source,"PRE-HEAD");
	source=updateMarkupBlock(source,"POST-HEAD");
	source=updateMarkupBlock(source,"PRE-BODY");
	source=updateMarkupBlock(source,"POST-BODY");
	// find store area
	var posOpeningDiv=source.indexOf(startSaveArea);
	var posClosingDiv=source.lastIndexOf(endSaveArea);
	if((posOpeningDiv==-1)||(posClosingDiv==-1))
		{ alert(config.messages.invalidFileError.format([sourcefile])); return; }
	// return everything after store area
	return source.substr(posClosingDiv);
}

function exportDIVHeader()
{
	var out=[];
	var now = new Date();
	var title = convertUnicodeToUTF8(wikifyPlain("SiteTitle").htmlEncode());
	var subtitle = convertUnicodeToUTF8(wikifyPlain("SiteSubtitle").htmlEncode());
	var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());
	var twver = version.major+"."+version.minor+"."+version.revision;
	var pver = version.extensions.exportTiddlers.major+"."
		+version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;
	out.push("<html><body>");
	out.push("<style type=\"text/css\">");
	out.push("#storeArea {display:block;margin:1em;}");
	out.push("#storeArea div");
	out.push("{padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}");
	out.push("#javascriptWarning");
	out.push("{width:100%;text-align:left;background-color:#eeeeee;padding:1em;}");
	out.push("</style>");
	out.push("<div id=\"javascriptWarning\">");
	out.push("TiddlyWiki export file<br>");
	out.push("Source"+": <b>"+convertUnicodeToUTF8(document.location.href)+"</b><br>");
	out.push("Title: <b>"+title+"</b><br>");
	out.push("Subtitle: <b>"+subtitle+"</b><br>");
	out.push("Created: <b>"+now.toLocaleString()+"</b> by <b>"+user+"</b><br>");
	out.push("TiddlyWiki "+twver+" / "+"ExportTiddlersPlugin "+pver+"<br>");
	out.push("Notes:<hr><pre>"+document.getElementById("exportNotes").value.replace(/\n/g,"<br>")+"</pre>");
	out.push("</div>");
	out.push("<div id=\"storeArea\">");
	return out;
}

function exportDIVFooter()
{
	return ["</div><!--POST-BODY-START-->\n<!--POST-BODY-END--></body></html>"];
}

function exportXMLHeader()
{
	var out=[];
	var now = new Date();
	var u = store.getTiddlerText("SiteUrl",null);
	var title = convertUnicodeToUTF8(wikifyPlain("SiteTitle").htmlEncode());
	var subtitle = convertUnicodeToUTF8(wikifyPlain("SiteSubtitle").htmlEncode());
	var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());
	var twver = version.major+"."+version.minor+"."+version.revision;
	var pver = version.extensions.exportTiddlers.major+"."
		+version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;
	out.push("<" + "?xml version=\"1.0\"?" + ">");
	out.push("<rss version=\"2.0\">");
	out.push("<channel>");
	out.push("<title>" + title + "</title>");
	if(u) out.push("<link>" + convertUnicodeToUTF8(u.htmlEncode()) + "</link>");
	out.push("<description>" + subtitle + "</description>");
	out.push("<language>en-us</language>");
	out.push("<copyright>Copyright " + now.getFullYear() + " " + user + "</copyright>");
	out.push("<pubDate>" + now.toGMTString() + "</pubDate>");
	out.push("<lastBuildDate>" + now.toGMTString() + "</lastBuildDate>");
	out.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");
	out.push("<generator>TiddlyWiki "+twver+" plus ExportTiddlersPlugin "+pver+"</generator>");
	return out;
}

function exportXMLFooter()
{
	return ["</channel></rss>"];
}

function exportData(target,list,fmt)
{
	function getData(s,f,t) { var r="";
		switch (f) {
			case "TW": r=s.getSaver().externalizeTiddler(s,t); break;
			case "DIV": r=t.title+"\n"+s.getSaver().externalizeTiddler(s,t); break;
			case "XML": r=t.saveToRss(store.getTiddlerText("SiteUrl","")); break;
		}
		return convertUnicodeToUTF8(r);
	}

	var out=[]; var tids=[];
	// get selected tiddlers
	for (var i=0; i<list.options.length; i++) {
		var opt=list.options[i]; if (!opt.selected||!opt.value.length) continue;
		var tid=store.getTiddler(opt.value); if (!tid) continue;
		tids.push(tid.title);
		out.push(getData(store,fmt,tid));
	}
	var count=out.length;
	// merge with existing tiddlers
	var text=loadFile(target);
	if (text && text.length) {
		var msg=target+"\nalready contains tiddler definitions.\n";
		msg+="\nPress OK to add new/revised tiddlers to current file contents.";
		msg+="\nPress Cancel to completely replace file contents";
		var remoteStore=new TiddlyWiki();
		if (remoteStore.importTiddlyWiki(text) && confirm(msg)) {
			var existing=remoteStore.getTiddlers("title");
			for (var i=0; i<existing.length; i++)
				if (!tids.contains(existing[i].title))
					out.push(getData(remoteStore,fmt,existing[i]));
			var msg="Merged %0 new/revised tiddlers and %1 existing tiddlers";
			displayMessage(msg.format([count,out.length-count]));
		}
	}
	return out;
}
//}}}

// // exportTiddlers(): output selected data to local file
//{{{
function exportTiddlers()
{
	clearMessage();
	var list  = document.getElementById("exportList"); if (!list) return;
	var fmt = document.getElementById("exportFormat").value;
	var target = document.getElementById("exportFilename").value.trim();
	if (!target.length) {
		displayMessage("A local target path/filename is required",target);
		return;
	}
	switch (fmt) {
		case "TW":	var head=exportTWHeader(); break;
		case "DIV":	var head=exportDIVHeader(); break;
		case "XML":	var head=exportXMLHeader(); break;
	}
	var theData=exportData(target,list,fmt);
	var c=theData.length;
	switch (fmt) {
		case "TW":	var foot=exportTWFooter(); break;
		case "DIV":	var foot=exportDIVFooter(); break;
		case "XML":	var foot=exportXMLFooter(); break;
	}
	var out=[]; var txt=out.concat(head,theData,foot).join("\n");
	var msg="An error occurred while saving to "+target;
	if (saveFile(target,txt)) msg=c+" tiddler"+((c!=1)?"s":"")+" written to "+target;
	displayMessage(msg,"file:///"+target);
}
//}}}

// // exportDeleteTiddlers(): delete selected tiddlers from file
//{{{
function exportDeleteTiddlers()
{
	var list=document.getElementById("exportList"); if (!list) return;
	var tids=[];
	for (i=0;i<list.length;i++)
		if (list.options[i].selected && list.options[i].value.length)
			tids.push(list.options[i].value);
	if (!confirm("Are you sure you want to delete these tiddlers:\n\n"+tids.join(', '))) return;
	store.suspendNotifications();
	for (t=0;t<tids.length;t++) {
		var tid=store.getTiddler(tids[t]); if (!tid) continue;
		if (tid.tags.contains("systemConfig"))
			if (!confirm("'"+tid.title+"' is tagged with 'systemConfig'.\n\nRemoving this tiddler may cause unexpected results.  Are you sure?"))
				continue;
		store.removeTiddler(tid.title);
		story.closeTiddler(tid.title);
	}
	store.resumeNotifications();
	alert(tids.length+" tiddlers deleted");
	refreshExportList(0); // reload listbox
	store.notifyAll(); // update page display
}
//}}}
// // PTW extensions loaded by LoadExtPlugin
// //
// // - plugins/LoadAltCSSPlugin.js
// // - plugins/SelectLanguage.js
// // - plugins/SwitchPageTemplate.js
ArchivedTimeline.js
// // - plugins/XMLReader.js
// // - plugins/PTWConfig.js
// //
// // -- End of List --
// //''Name:'' Favicon
// //''Version:'' v0.1.0 (18 July 2005) - initial release
// //''Author:'' AlanHecht
// //''Type:'' SystemConfig

// //http://www.chami.com/html-kit/services/favicon

// //''Code section:''
version.extensions.favicon = {major: 0, minor: 1, revision: 0, date: new Date("Jul 18, 2005")};
var n = document.createElement("link");	
n.rel = "shortcut icon"; 
n.href = "favicon.ico"; 
document.getElementsByTagName("head")[0].appendChild(n);
[[New-Tiddlywiki|http://groups.google.com/group/TiddlyWikiDev/browse_thread/thread/981e3e9f4ac9cf7e]] és un [[Nautilus-Script|http://g-scripts.sourceforge.net/]] que genera una nova plantilla en blanc clicant amb el botó dret del ratolí a l'escriptori o a qualsevol carpeta, de forma semblant a com es pot generar un document en blanc. Tans sols suposa que fem servir [[Nautilus|http://live.gnome.org/Nautilus]], encara que probablement es podria adaptar a altres gestors de fitxers.

[img[New-TiddlyWiki|new-tiddlywiki-350.png][http://groups.google.com/group/TiddlyWikiDev/browse_thread/thread/981e3e9f4ac9cf7e]]

Per ''instal·lar-la'' hi ha prou amb copiar la seqüència a la carpeta //$HOME/Scripts//. El primer cop s'encarrega de baixar la nova plantilla, i per que baixi la darrera versió, hi ha prou amb esborrar la plantilla que guarda en aquella carpeta. A partir del segon cop, funciona ''sense connexió a internet''.

És pot ''configurar'' i fins i tot permet triar quin ''sabor'' de TiddlyWiki preferim.
/***
|Name|FontSizePlugin|
|Created by|SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#FontSizePlugin|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Resize tiddler text on the fly. The text size is remembered between sessions by use of a cookie.
You can customize the maximum and minimum allowed sizes.
(only affects tiddler content text, not any other text)

Also, you can load a TW file with a font-size specified in the url.
Eg: http://lewcid.googlepages.com/lewcid.html#font:110

!Demo:
Try using the font-size buttons in the sidebar, or in the MainMenu above.

!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Then put {{{<<fontSize "font-size:">>}}} in your SideBarOptions tiddler, or anywhere else that you might like.

!Usage
{{{<<fontSize>>}}} results in <<fontSize>>
{{{<<fontSize font-size: >>}}} results in <<fontSize font-size:>>

!Customizing:
The buttons and prefix text are wrapped in a span with class fontResizer, for easy css styling.
To change the default font-size, and the maximum and minimum font-size allowed, edit the config.fontSize.settings section of the code below.

!Notes:
This plugin assumes that the initial font-size is 100% and then increases or decreases the size by 10%. This stepsize of 10% can also be customized.

!History:
*27-07-06, version 1.0 : prevented double clicks from triggering editing of containing tiddler.
*25-07-06,  version 0.9

!Code
***/

//{{{
config.fontSize={};

//configuration settings
config.fontSize.settings =
{
            defaultSize : 100,  // all sizes in %
            maxSize : 200,
            minSize : 40,
            stepSize : 10
};

//startup code
var fontSettings = config.fontSize.settings;

if (!config.options.txtFontSize)
            {config.options.txtFontSize = fontSettings.defaultSize;
            saveOptionCookie("txtFontSize");}
setStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\n","fontResizerStyles");
setStylesheet("#contentWrapper .fontResizer .button {display:inline;font-size:105%; font-weight:bold; margin:0 1px; padding: 0 3px; text-align:center !important;}\n .fontResizer {margin:0 0.5em;}","fontResizerButtonStyles");

//macro
config.macros.fontSize={};
config.macros.fontSize.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{

               var sp = createTiddlyElement(place,"span",null,"fontResizer");
               sp.ondblclick=this.onDblClick;
               if (params[0])
                           createTiddlyText(sp,params[0]);
               createTiddlyButton(sp,"+","increase font-size",this.incFont);
               createTiddlyButton(sp,"=","reset font-size",this.resetFont);
               createTiddlyButton(sp,"–","decrease font-size",this.decFont);
}

config.macros.fontSize.onDblClick = function (e)
{
             if (!e) var e = window.event;
             e.cancelBubble = true;
             if (e.stopPropagation) e.stopPropagation();
             return false;
}

config.macros.fontSize.setFont = function ()
{
               saveOptionCookie("txtFontSize");
               setStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\n","fontResizerStyles");
}

config.macros.fontSize.incFont=function()
{
               if (config.options.txtFontSize < fontSettings.maxSize)
                  config.options.txtFontSize = (config.options.txtFontSize*1)+fontSettings.stepSize;
               config.macros.fontSize.setFont();
}

config.macros.fontSize.decFont=function()
{

               if (config.options.txtFontSize > fontSettings.minSize)
                  config.options.txtFontSize = (config.options.txtFontSize*1) - fontSettings.stepSize;
               config.macros.fontSize.setFont();
}

config.macros.fontSize.resetFont=function()
{

               config.options.txtFontSize=fontSettings.defaultSize;
               config.macros.fontSize.setFont();
}

config.paramifiers.font =
{
               onstart: function(v)
                  {
                   config.options.txtFontSize = v;
                   config.macros.fontSize.setFont();
                  }
};
//}}}
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.5 (2006-02-05)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license]]|
|''Macros:''|[[ForEachTiddlerMacro]] v1.0.5|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:'' 
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]] is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].

!Revision history
* v1.0.5
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features: 
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) 
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features: 
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs: 
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features: 
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version

!Code
***/
//{{{

 
//============================================================================
//============================================================================
// ForEachTiddlerPlugin
//============================================================================
//============================================================================

// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {

version.extensions.ForEachTiddlerPlugin = {major: 1, minor: 0, revision: 5, date: new Date(2006,2,5), source: "http://tiddlywiki.abego-software.de/#ForEachTiddlergPlugin"};

// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
 TiddlyWiki.prototype.forEachTiddler = function(callback) {
 for(var t in this.tiddlers) {
 callback.call(this,t,this.tiddlers[t]);
 }
 };
}

//============================================================================
// forEachTiddler Macro
//============================================================================

version.extensions.forEachTiddler = {major: 1, minor: 0, revision: 5, date: new Date(2006,2,5), provider: "http://tiddlywiki.abego-software.de"};

// ---------------------------------------------------------------------------
// Configurations and constants 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler = {
 // Standard Properties
 label: "forEachTiddler",
 prompt: "Perform actions on a (sorted) selection of tiddlers",

 // actions
 actions: {
 addToList: {},
 write: {}
 }
};

// ---------------------------------------------------------------------------
// The forEachTiddler Macro Handler 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.getContainingTiddler = function(e) {
 while(e && !hasClass(e,"tiddler"))
 e = e.parentNode;
 var title = e ? e.getAttribute("tiddler") : null; 
 return title ? store.getTiddler(title) : null;
};

config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
 // config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);

 if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
 // --- Parsing ------------------------------------------

 var i = 0; // index running over the params
 // Parse the "in" clause
 var tiddlyWikiPath = undefined;
 if ((i < params.length) && params[i] == "in") {
 i++;
 if (i >= params.length) {
 this.handleError(place, "TiddlyWiki path expected behind 'in'.");
 return;
 }
 tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
 i++;
 }

 // Parse the where clause
 var whereClause ="true";
 if ((i < params.length) && params[i] == "where") {
 i++;
 whereClause = this.paramEncode((i < params.length) ? params[i] : "");
 i++;
 }

 // Parse the sort stuff
 var sortClause = null;
 var sortAscending = true; 
 if ((i < params.length) && params[i] == "sortBy") {
 i++;
 if (i >= params.length) {
 this.handleError(place, "sortClause missing behind 'sortBy'.");
 return;
 }
 sortClause = this.paramEncode(params[i]);
 i++;

 if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
 sortAscending = params[i] == "ascending";
 i++;
 }
 }

 // Parse the script
 var scriptText = null;
 if ((i < params.length) && params[i] == "script") {
 i++;
 scriptText = this.paramEncode((i < params.length) ? params[i] : "");
 i++;
 }

 // Parse the action. 
 // When we are already at the end use the default action
 var actionName = "addToList";
 if (i < params.length) {
 if (!config.macros.forEachTiddler.actions[params[i]]) {
 this.handleError(place, "Unknown action '"+params[i]+"'.");
 return;
 } else {
 actionName = params[i]; 
 i++;
 }
 } 
 
 // Get the action parameter
 // (the parsing is done inside the individual action implementation.)
 var actionParameter = params.slice(i);


 // --- Processing ------------------------------------------
 try {
 this.performMacro({
 place: place, 
 inTiddler: tiddler,
 whereClause: whereClause, 
 sortClause: sortClause, 
 sortAscending: sortAscending, 
 actionName: actionName, 
 actionParameter: actionParameter, 
 scriptText: scriptText, 
 tiddlyWikiPath: tiddlyWikiPath});

 } catch (e) {
 this.handleError(place, e);
 }
};

// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {

 var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);

 var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
 context["tiddlyWiki"] = tiddlyWiki;
 
 // Get the tiddlers, as defined by the whereClause
 var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
 context["tiddlers"] = tiddlers;

 // Sort the tiddlers, when sorting is required.
 if (parameter.sortClause) {
 this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
 }

 return {tiddlers: tiddlers, context: context};
};

// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
 return this.getTiddlersAndContext(parameter).tiddlers;
};

// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
// The following properties are supported:
//
// place
// whereClause
// sortClause
// sortAscending
// actionName
// actionParameter
// scriptText
// tiddlyWikiPath
//
// All properties are optional. 
// For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
 var tiddlersAndContext = this.getTiddlersAndContext(parameter);

 // Perform the action
 var actionName = parameter.actionName ? parameter.actionName : "addToList";
 var action = config.macros.forEachTiddler.actions[actionName];
 if (!action) {
 this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
 return;
 }

 var actionHandler = action.handler;
 actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};

// ---------------------------------------------------------------------------
// The actions 
// ---------------------------------------------------------------------------

// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
 // Parse the parameter
 var p = 0;

 // Check for extra parameters
 if (parameter.length > p) {
 config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
 return;
 }

 // Perform the action.
 var list = document.createElement("ul");
 place.appendChild(list);
 for (var i = 0; i < tiddlers.length; i++) {
 var tiddler = tiddlers[i];
 var listItem = document.createElement("li");
 list.appendChild(listItem);
 createTiddlyLink(listItem, tiddler.title, true);
 }
};

// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
 // Parse the parameter
 var p = 0;
 if (p >= parameter.length) {
 this.handleError(place, "Missing expression behind 'write'.");
 return;
 }

 var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
 p++;

 // Parse the "toFile" option
 var filename = null;
 var lineSeparator = undefined;
 if ((p < parameter.length) && parameter[p] == "toFile") {
 p++;
 if (p >= parameter.length) {
 this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
 return;
 }
 
 filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
 p++;
 if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
 p++;
 if (p >= parameter.length) {
 this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
 return;
 }
 lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
 p++;
 }
 }
 
 // Check for extra parameters
 if (parameter.length > p) {
 config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
 return;
 }

 // Perform the action.
 var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
 var count = tiddlers.length;
 var text = "";
 for (var i = 0; i < count; i++) {
 var tiddler = tiddlers[i];
 text += func(tiddler, context, count, i);
 }
 
 if (filename) {
 if (lineSeparator !== undefined) {
 lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
 text = text.replace(/\n/mg,lineSeparator);
 }
 saveFile(filename, convertUnicodeToUTF8(text));
 } else {
 var wrapper = createTiddlyElement(place, "span");
 wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);
 }
};


// ---------------------------------------------------------------------------
// Helpers
// ---------------------------------------------------------------------------

// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
 return {
 place : placeParam, 
 whereClause : whereClauseParam, 
 sortClause : sortClauseParam, 
 sortAscending : sortAscendingParam, 
 script : scriptText,
 actionName : actionNameParam, 
 actionParameter : actionParameterParam,
 tiddlyWikiPath : tiddlyWikiPathParam,
 inTiddler : inTiddlerParam
 };
};

// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of 
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
 if (!idPrefix) {
 idPrefix = "store";
 }
 var lenPrefix = idPrefix.length;
 
 // Read the content of the given file
 var content = loadFile(this.getLocalPath(path));
 if(content === null) {
 throw "TiddlyWiki '"+path+"' not found.";
 }
 
 // Locate the storeArea div's
 var posOpeningDiv = content.indexOf(startSaveArea);
 var posClosingDiv = content.lastIndexOf(endSaveArea);
 if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
 throw "File '"+path+"' is not a TiddlyWiki.";
 }
 var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
 
 // Create a "div" element that contains the storage text
 var myStorageDiv = document.createElement("div");
 myStorageDiv.innerHTML = storageText;
 myStorageDiv.normalize();
 
 // Create all tiddlers in a new TiddlyWiki
 // (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
 var tiddlyWiki = new TiddlyWiki();
 var store = myStorageDiv.childNodes;
 for(var t = 0; t < store.length; t++) {
 var e = store[t];
 var title = null;
 if(e.getAttribute)
 title = e.getAttribute("tiddler");
 if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
 title = e.id.substr(lenPrefix);
 if(title && title !== "") {
 var tiddler = tiddlyWiki.createTiddler(title);
 tiddler.loadFromDiv(e,title);
 }
 }
 tiddlyWiki.dirty = false;

 return tiddlyWiki;
};


 
// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
// 
// (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
 var script = context["script"];
 var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
 var fullText = (script ? script+";" : "")+functionText+";theFunction;";
 return eval(fullText);
};

// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
 var result = [];
 var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
 tiddlyWiki.forEachTiddler(function(title,tiddler) {
 if (func(tiddler, context, undefined, undefined)) {
 result.push(tiddler);
 }
 });
 return result;
};

// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
 var message = "Extra parameter behind '"+actionName+"':";
 for (var i = firstUnusedIndex; i < parameter.length; i++) {
 message += " "+parameter[i];
 }
 this.handleError(place, message);
};

// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {
 var result = 
 (tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
 ? 0
 : (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
 ? -1 
 : +1; 
 return result;
};

// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {
 var result = 
 (tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
 ? 0
 : (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
 ? +1 
 : -1; 
 return result;
};

// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
 // To avoid evaluating the sortClause whenever two items are compared 
 // we pre-calculate the sortValue for every item in the array and store it in a 
 // temporary property ("forEachTiddlerSortValue") of the tiddlers.
 var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
 var count = tiddlers.length;
 var i;
 for (i = 0; i < count; i++) {
 var tiddler = tiddlers[i];
 tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
 }

 // Do the sorting
 tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);

 // Delete the temporary property that holds the sortValue. 
 for (i = 0; i < tiddlers.length; i++) {
 delete tiddlers[i].forEachTiddlerSortValue;
 }
};


// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
 displayMessage(message);
};

// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
 var message ="<<"+macroName;
 for (var i = 0; i < params.length; i++) {
 message += " "+params[i];
 }
 message += ">>";
 displayMessage(message);
};


// Internal.
//
// Creates an element that holds an error message
// 
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
 var message = (exception.description) ? exception.description : exception.toString();
 return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};

// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception) {
 if (place) {
 this.createErrorElement(place, exception);
 } else {
 throw exception;
 }
};

// Internal.
//
// Encodes the given string.
//
// Replaces 
// "$))" to ">>"
// "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
 var reGTGT = new RegExp("\\$\\)\\)","mg");
 var reGT = new RegExp("\\$\\)","mg");
 return s.replace(reGTGT, ">>").replace(reGT, ">");
};

// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
// 
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
 // Remove any location part of the URL
 var hashPos = originalPath.indexOf("#");
 if(hashPos != -1)
 originalPath = originalPath.substr(0,hashPos);
 // Convert to a native file format assuming
 // "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
 // "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
 // "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
 // "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
 var localPath;
 if(originalPath.charAt(9) == ":") // pc local file
 localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
 else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file
 localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
 else if(originalPath.indexOf("file:///") === 0) // mac/unix local file
 localPath = unescape(originalPath.substr(7));
 else if(originalPath.indexOf("file:/") === 0) // mac/unix local file
 localPath = unescape(originalPath.substr(5));
 else // pc network file
 localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\"); 
 return localPath;
};

// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
 ".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
 "forEachTiddler");

//============================================================================
// End of forEachTiddler Macro
//============================================================================


//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
 var n = prefix.length;
 return (this.length >= n) && (this.slice(0, n) == prefix);
};



//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
 var n = suffix.length;
 return (this.length >= n) && (this.right(n) == suffix);
};


//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
 return this.indexOf(substring) >= 0;
};

//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or 
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
 for (var i = 0; i < this.length; i++) {
 if (this[i] == item) {
 return i;
 }
 }
 return -1;
};

//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false. 
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
 return (this.indexOf(item) >= 0);
};

//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements 
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
 for(var i = 0; i < items.length; i++) {
 if (this.contains(items[i])) {
 return true;
 }
 }
 return false;
};


//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
// 
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null] 
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
 for(var i = 0; i < items.length; i++) {
 if (!this.contains(items[i])) {
 return false;
 }
 }
 return true;
};


} // of "install only once"

// Used Globals (for JSLint) ==============
// ... DOM
/*global document */
// ... TiddlyWiki Core
/*global convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink, 
 displayMessage, endSaveArea, hasClass, loadFile, saveFile, 
 startSaveArea, store, wikify */
//}}}


/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/
It's under the Options menu "Global Scripts"
Just give it a name, and enter the script as you did above (sort 1 1 3 1)

To run it, you can highlight it and choose execute, or add it to a "View" by tapping the View list in the upper right, create or edit a view "edit list views", and choose the global script name in the drop down list near the top of the view.
<<include "index2007.html">>
<<include "index2006.html">>
/***
|''Name:''|abego.IncludePlugin|
|''Version:''|1.0.1 (2007-04-30)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#IncludePlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IncludePlugin Documentation|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]]|
|''Community:''|([[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23IncludePlugin]]) ([[Support|http://groups.google.com/group/TiddlyWiki]])|
|''Copyright:''|&copy; 2007 [[abego Software|http://www.abego-software.de]]|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''~CoreVersion:''|2.1.3|
|''Browser:''|Firefox 1.5.0.9 or better; Internet Explorer 6.0|
***/
/***
This plugin's source code is compressed (and hidden). Use this [[link|http://tiddlywiki.abego-software.de/archive/IncludePlugin/Plugin-Include-src.1.0.0.js]] to get the readable source code.
***/
///%
if(!window.abego){window.abego={};}var invokeLater=function(_1,_2,_3){return abego.invokeLater?abego.invokeLater(_1,_2,_3):setTimeout(_1,_2);};abego.loadFile=function(_4,_5,_6){var _7=function(_8,_9,_a,_b,_c){return _8?_5(_a,_b,_9):_5(undefined,_b,_9,"Error loading %0".format([_b]));};if(_4.search(/^((http(s)?)|(file)):/)!=0){if(_4.search(/^((.\:\\)|(\\\\)|(\/))/)==0){_4="file://"+_4;}else{var _d=document.location.toString();var i=_d.lastIndexOf("/");_4=_d.substr(0,i+1)+_4;}_4=_4.replace(/\\/mg,"/");}loadRemoteFile(_4,_7,_6);};abego.loadTiddlyWikiStore=function(_f,_10,_11,_12){var _13=function(_14,_15){if(_12){_12(_14,"abego.loadTiddlyWikiStore",_15,_f,_11);}};var _16=function(_17,_18){var _19=_18.indexOf(startSaveArea);var _1a=_18.indexOf("<!--POST-BODY-END--"+">");var _1b=_18.lastIndexOf(endSaveArea,_1a==-1?_18.length:_1a);if((_19==-1)||(_1b==-1)){return config.messages.invalidFileError.format([_f]);}var _1c="<html><body>"+_18.substring(_19,_1b+endSaveArea.length)+"</body></html>";var _1d=document.createElement("iframe");_1d.style.display="none";document.body.appendChild(_1d);var doc=_1d.document;if(_1d.contentDocument){doc=_1d.contentDocument;}else{if(_1d.contentWindow){doc=_1d.contentWindow.document;}}doc.open();doc.writeln(_1c);doc.close();var _1f=doc.getElementById("storeArea");_17.loadFromDiv(_1f,"store");_1d.parentNode.removeChild(_1d);return null;};var _20=function(_21){_13("Error when loading %0".format([_f]),"Failed");_10(undefined,_f,_11,_21);return _21;};var _22=function(_23){_13("Loaded %0".format([_f]),"Done");_10(_23,_f,_11);return null;};var _24=function(_25,_26,_27,_28){if(_25===undefined){_20(_28);return;}_13("Processing %0".format([_f]),"Processing");var _29=config.messages.invalidFileError;config.messages.invalidFileError="The file '%0' does not appear to be a valid TiddlyWiki file";try{var _2a=new TiddlyWiki();var _2b=_16(_2a,_25);if(_2b){_20(_2b);}else{_22(_2a);}}catch(ex){_20(exceptionText(ex));}finally{config.messages.invalidFileError=_29;}};_13("Start loading %0".format([_f]),"Started");abego.loadFile(_f,_24,_11);};(function(){if(abego.TiddlyWikiIncluder){return;}var _2c="waiting";var _2d="loading";var _2e=1000;var _2f=-200;var _30=-100;var _31=-300;var _32;var _33=[];var _34={};var _35=[];var _36;var _37=[];var _38;var _39=function(){if(_32===undefined){_32=config.options.chkUseInclude===undefined||config.options.chkUseInclude;}return _32;};var _3a=function(url){return "No include specified for %0".format([url]);};var _3c=function(){var _3d=_35;_35=[];if(_3d.length){for(var i=0;i<_37.length;i++){_37[i](_3d);}}};var _3f;var _40=function(){if(_36!==undefined){clearInterval(_36);}_3f=0;var _41=function(){abego.TiddlyWikiIncluder.sendProgress("","","Done");};_36=setInterval(function(){_3f++;if(_3f<=10){return;}clearInterval(_36);_36=undefined;abego.TiddlyWikiIncluder.sendProgress("Refreshing...","","");refreshDisplay();invokeLater(_41,0,_2f);},1);};var _42=function(_43){var _44;for(var i=0;i<_33.length;i++){var _46=abego.TiddlyWikiIncluder.getStore(_33[i]);if(_46&&(_44=_43(_46,_33[i]))){return _44;}}};var _47=function(){if(!window.store){return invokeLater(_47,100);}var _48=store.fetchTiddler;store.fetchTiddler=function(_49){var t=_48.apply(this,arguments);if(t){return t;}if(config.shadowTiddlers[_49]!==undefined){return undefined;}if(_49==config.macros.newTiddler.title){return undefined;}return _42(function(_4b,url){var t=_4b.fetchTiddler(_49);if(t){t.includeURL=url;}return t;});};if(_33.length){_40();}};var _4e=function(){if(!window.store){return invokeLater(_4e,100);}var _4f=store.getTiddlerText("IncludeList");if(_4f){wikify(_4f,document.createElement("div"));}};var _50=function(_51){var _52=function(){var _53=store.forEachTiddler;var _54=function(_55){var _56={};var _57;var _58=function(_59,_5a){if(_56[_59]){return;}_56[_59]=1;if(_57){_5a.includeURL=_57;}_55.apply(this,arguments);};_53.call(store,_58);for(var n in config.shadowTiddlers){_56[n]=1;}_56[config.macros.newTiddler.title]=1;_42(function(_5c,url){_57=url;_5c.forEachTiddler(_58);});};store.forEachTiddler=_54;try{return _51.apply(this,arguments);}finally{store.forEachTiddler=_53;}};return _52;};var _5e=function(_5f,_60){return _5f[_60]=_50(_5f[_60]);};abego.TiddlyWikiIncluder={};abego.TiddlyWikiIncluder.setProgressFunction=function(_61){_38=_61;};abego.TiddlyWikiIncluder.getProgressFunction=function(_62){return _38;};abego.TiddlyWikiIncluder.sendProgress=function(_63,_64,_65){if(_38){_38.apply(this,arguments);}};abego.TiddlyWikiIncluder.onError=function(url,_67){displayMessage("Error when including '%0':\n%1".format([url,_67]));};abego.TiddlyWikiIncluder.hasPendingIncludes=function(){for(var i=0;i<_33.length;i++){var _69=abego.TiddlyWikiIncluder.getState(_33[i]);if(_69==_2c||_69==_2d){return true;}}return false;};abego.TiddlyWikiIncluder.getIncludes=function(){return _33.slice();};abego.TiddlyWikiIncluder.getState=function(url){var s=_34[url];if(!s){return _3a(url);}return typeof s=="string"?s:null;};abego.TiddlyWikiIncluder.getStore=function(url){var s=_34[url];if(!s){return _3a(url);}return s instanceof TiddlyWiki?s:null;};abego.TiddlyWikiIncluder.include=function(url,_6f){if(!_39()||_34[url]){return;}var _70=this;_33.push(url);_34[url]=_2c;var _71=function(_72,_73,_74,_75){if(_72===undefined){_34[url]=_75;_70.onError(url,_75);return;}_34[url]=_72;_35.push(url);invokeLater(_3c);};var _76=function(){_34[url]=_2d;abego.loadTiddlyWikiStore(url,_71,null,_38);};if(_6f){invokeLater(_76,_6f);}else{_76();}};abego.TiddlyWikiIncluder.forReallyEachTiddler=function(_77){var _78=function(){store.forEachTiddler(_77);};_50(_78).call(store);};abego.TiddlyWikiIncluder.getFunctionUsingForReallyEachTiddler=_50;abego.TiddlyWikiIncluder.useForReallyEachTiddler=_5e;abego.TiddlyWikiIncluder.addListener=function(_79){_37.push(_79);};abego.TiddlyWikiIncluder.addListener(_40);if(config.options.chkUseInclude===undefined){config.options.chkUseInclude=true;}config.shadowTiddlers.AdvancedOptions+="\n<<option chkUseInclude>> Include ~TiddlyWikis (IncludeList | IncludeState | [[help|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]])\n^^(Reload this ~TiddlyWiki to make changes become effective)^^";config.shadowTiddlers.IncludeState="<<includeState>>";var _7a=function(e,_7c,_7d){if(!anim||!abego.ShowAnimation){e.style.display=_7c?"block":"none";return;}anim.startAnimating(new abego.ShowAnimation(e,_7c,_7d));};abego.TiddlyWikiIncluder.getDefaultProgressFunction=function(){setStylesheet(".includeProgressState{\n"+"background-color:#FFCC00;\n"+"position:absolute;\n"+"right:0.2em;\n"+"top:0.2em;\n"+"width:7em;\n"+"padding-left:0.2em;\n"+"padding-right:0.2em\n"+"}\n","abegoInclude");var _7e=function(){var e=document.createElement("div");e.className="includeProgressState";e.style.display="none";document.body.appendChild(e);return e;};var _80=_7e();var _81=function(_82){removeChildren(_80);createTiddlyText(_80,_82);_7a(_80,true,0);};var _83=function(){invokeLater(function(){_7a(_80,false,_2e);},100,_30);};var _84=function(_85,_86,_87,url,_89){if(_87=="Done"||_87=="Failed"){_83();return;}if(_86=="abego.loadTiddlyWikiStore"){_3f=0;if(_87=="Processing"){_81("Including...");}}else{_81(_85);}};return _84;};abego.TiddlyWikiIncluder.setProgressFunction(abego.TiddlyWikiIncluder.getDefaultProgressFunction());config.macros.include={};config.macros.include.handler=function(_8a,_8b,_8c,_8d,_8e,_8f){_8c=_8e.parseParams("url",null,true,false,true);var _90=parseInt(getParam(_8c,"delay","0"));var _91=_8c[0]["url"];var _92=getFlag(_8c,"hide",false);if(!_92){createTiddlyText(createTiddlyElement(_8a,"code"),_8d.source.substring(_8d.matchStart,_8d.nextMatch));}for(var i=0;_91&&i<_91.length;i++){abego.TiddlyWikiIncluder.include(_91[i],_90);}};config.macros.includeState={};config.macros.includeState.handler=function(_94,_95,_96,_97,_98,_99){var _9a=function(){var s="";var _9c=abego.TiddlyWikiIncluder.getIncludes();if(!_9c.length){return "{{noIncludes{\nNo includes or 'include' is disabled (see AdvancedOptions)\n}}}\n";}s+="|!Address|!State|\n";for(var i=0;i<_9c.length;i++){var inc=_9c[i];s+="|{{{"+inc+"}}}|";var t=abego.TiddlyWikiIncluder.getState(inc);s+=t?"{{{"+t+"}}}":"included";s+="|\n";}s+="|includeState|k\n";return s;};var _a0=function(){removeChildren(div);wikify(_9a(),div);if(abego.TiddlyWikiIncluder.hasPendingIncludes()){invokeLater(_a0,500,_31);}};var div=createTiddlyElement(_94,"div");invokeLater(_a0,0,_31);};var _a2=Tiddler.prototype.isReadOnly;Tiddler.prototype.isReadOnly=function(){return _a2.apply(this,arguments)||this.isIncluded();};Tiddler.prototype.isIncluded=function(){return this.includeURL!=undefined;};Tiddler.prototype.getIncludeURL=function(){return this.includeURL;};var _a3={getMissingLinks:1,getOrphans:1,getTags:1,reverseLookup:1,updateTiddlers:1};for(var n in _a3){_5e(TiddlyWiki.prototype,n);}var _a5=function(){if(abego.IntelliTagger){_5e(abego.IntelliTagger,"assistTagging");}};var _a6=function(){if(config.macros.forEachTiddler){_5e(config.macros.forEachTiddler,"findTiddlers");}};_47();invokeLater(_4e,100);invokeLater(_a5,100);invokeLater(_a6,100);})();
//%/
Aquesta és la meva pàgina personal que acabo de començar
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for  legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.1|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|

***/

//{{{

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

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

} // end of "install only once"
//}}}
/***
|''Name:''|LoadExtPlugin|
|''Description:''|LoadExtPlugin allows you to load external extensions from the file lists (named .js) within those tiddlers taged with "ExtList".|
|''Version:''|1.8.0|
|''Date:''|Apr 30, 2007|
|''Source:''|http://www.sourceforge.net/projects/ptw/|
|''Author:''|BramChen (bram.chen (at) gmail (dot) com)|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License]]|
|''CoreVersion:''|2.1.0|
|''Browser:''|Firefox 1.5+; InternetExplorer 6.0|

+++!^[Revision History:]
v1.8.0 (Apr 30 2007)
*config.macros.loadExt support to load singgle external script by using {{{<<loadExt '/pathto/scriptfile.js'>>}}}
*Ensure LoadExtPlugin loading itself and/or loadling scripts after core has been loaded with external core js and itself|
v1.7.2 (Sep 28 2006)
*Fixed bugs on IE
v1.7.1 (30 Aug 2006)
* Changed rule check of ExtList
v1.7.0 (20 Jul 2006)
* Runs compatibly with TW 2.1.0 (rev #403+)
v1.6.0 (13 Jul 2006)
* Fixed bugs in refreshCode and config.macros.loadExt.loadScripts on IE
* Runs compatibly with TW 2.1.0 (rev #359+)
v1.5.2 (21 Jun 2006)
* minor changes for XHTML compliant
v1.5.1 (26 Feb 2006)
* JSLint checked
v1.5.0 (02 Feb 2006)
* add new function config.macros.loadExt.LoadScripts(), keep all variables to be local, thanks Udo.
* Fixed several missing variable declarations
v1.4.0 (20 Jan 2006)
* refreshCode() improved.
v1.3.0 (14 Jan 2006) 
* strip startup error massage for IE
v1.2.0 (13 Jan 2006) 
* TiddlyWiki version 2.0.0 or above required.
* refreshCode() improved.
v1.1.0 (10 Jan 2006)
* To make the extensions list handling more robust, thanks Udo.
* Fix bugs for multi-tiddlers tagged with ExtList
v1.0.0 (07 Jan 2006) 
* Combine the RefreshExt code and LoadExtPlugin, and also make TW 1.2 to be backward compatible, thanks Udo.
* Globle function refreshCode() added, and reserve the refreshExt macro.
* Fix a minor bug for variable "scriptfile".
v0.3.0 (29 Dec 2005)
* macro refreshExt modified to refresh formatter
v0.2.0 (24 Nov 2005)
* macro refreshExt modified for TW 1.2.39 beta 2 and above
v0.1.0 (25 Sep 2005) 
* initial release
===

!''Code section:''
***/
//{{{
version.extensions.loadExt = {major: 1, minor: 8, revision: 0,
 date: new Date("Apr 30, 2007"),
 name: "LoadExtPlugin",
 type: "Plugin",
 author: "BramChen",
 source: "http://sourceforge.net/project/showfiles.php?group_id=150646"
};

config.macros.loadExt = {};
config.macros.handler = function(place,macroName,params){
	if (params[0])
		this.loadScriptFile(params[0]);
	else
		this.loadScripts();
};

config.macros.loadExt.loadScriptFile = function(scriptfile){
	var scriptfile = scriptfile.trim();
	if (scriptfile.length < 2 || scriptfile.substr(0,2) == "//" || scriptfile.indexOf(".js") == -1){
		return;
	}
	// displayMessage("loaded: "+ scriptfile);
	var n = document.createElement("script");
	n.type = "text/javascript";
	n.src = scriptfile;
	document.getElementsByTagName("head")[0].appendChild(n);
};

config.macros.loadExt.loadScripts = function() {
	var extTag = "ExtList";
	var str = ""; var scripts = [];
	var tiddlers = store.getTaggedTiddlers(extTag);
	for(var s=0 ; s<tiddlers.length; s++){
		str += store.getRecursiveTiddlerText(tiddlers[s].title)+"\n";
	}
	scripts = str.replace(/[;\r]/mg,"\n").split("\n");
	for (var i=0; i<scripts.length-1; i++) {
		this.loadScriptFile(scripts[i]);
	}
	
	if (config.browser.isIE){
//		setTimeout(function(){window.refreshCode();return false;},500);
		var lerInterval = setInterval(function(){if(formatter) {clearInterval(lerInterval); window.refreshCode();};},100);
	}
	else {
		var theCodes = "//<![CDATA[\nwindow.refreshCode();\n//]]>";
		n = document.createElement("script");
		n.type = "text/javascript";
		n.appendChild(document.createTextNode(theCodes));
		document.getElementsByTagName("head")[0].appendChild(n);
		this.refreshCodeInserted = true;
	}
};

window.refreshCode = function (){
	window.formatter = new Formatter(config.formatters);
	story.forEachTiddler(function(title,e){story.refreshTiddler(title,DEFAULT_VIEW_TEMPLATE,true);});
	refreshDisplay();
	return false;
}

// setTimeout(function(){config.macros.loadExt.loadScripts();return false;},500);
window.loadextpluginInterval = setInterval(function(){if(formatter) {clearInterval(window.loadextpluginInterval); if(!config.macros.loadExt.refreshCodeInserted) config.macros.loadExt.loadScripts();};},100);
//}}}
<<fontSize Aa: >>[img[Paco Rivière|FR2006_100x113.png][PacoRivière]][img[La roda és rodona|QRpacoriviere.cat-66.png][http://pacoriviere.cat]]
^^[[English|eng.html]] [[castellano|es.html]] [[.mobi|http://pacoriviere.websiteforever.mobi/]] [[Mirall|http://pacoriviere.googlepages.com/index.html]]^^
<<today "DD MMM YYYY">> [[RSS|index.xml]]
<<forEachTiddler
where
'!tiddler.tags.contains (["excludeLists"])'
write
'"<<siteMap [["+tiddler.title+"]] . sliders $)) "'>> 
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript"><!--
google_ad_client = "pub-0143440029578644";
google_ad_width = 728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al_s";
//2007-05-21: pacoriviere.cat
google_ad_channel = "6887223433";
google_color_border = "FFFFFF";
google_color_bg = "E6E6E6";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<html><script defer="defer" id="snap_preview_anywhere" src="http://spa.snap.com/snap_preview_anywhere.js?ap=1&amp;key=a1177afef3e3d69112049342391fd685&amp;sb=1&amp;th=silver&amp;cl=1&amp;si=&amp;oi=1&amp;link_icon=on&amp;preview_trigger=both&amp;domain=pacoriviere.googlepages.com"></script></html>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<!--}}}-->

<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;">Carregant <b>El blog</b><blink> ...</blink><br></br><span style="font-size: 14px; color:red;">Cal  Javascript.</span></div>
/***

|Name|NavigationMacro|
|Created by|SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#NavigationMacro|
|Version|0.3 |
|Requires|~TW2.08+|
!Description:
*Creates Next and Prev buttons on tiddlers, to cycle through tiddlers in order.
**you can create next and previous buttons to navigate through your journals, or the tiddlers of a tutorial.
*You can exclude certain tiddlers, or navigate through tiddlers with a specific tag only.
*The tiddlers can be sorted by modified or created.
*Custom ordering will be available after the release of TW 2.1
*Needs to be added to the ViewTemplate
*Buttons are updated dynamically and are hidden if there is no next or previous tiddler.

!Usage
{{{<<navigation>>}}}
or for more options:
{{{<<navigation sort exclude tag labelPrevious labelNext >>}}}
where sort is ''created'' (default) or ''modified''
exlcude is the tag to exclude.
tag is the tag to navigate through.
labelPrevious is the label for the previous button.
labelNext is the label for the next button. 

I recommend adding it to the ViewTemplate in the viewer div:
{{{<div class='viewer'>
<span macro='view text wikified'></span>
<span macro='navigation "" "" plugin'></span></div>}}}



!Example:
The next and previous buttons at the bottom of this tiddler will cycle through all of my extensions for TW.
!History
* 25-06-06 : version 0.3, first release

!Code
***/
//{{{
window.refreshNavLink = function (e) {
             var title = e.getAttribute("here");
             var sort = e.getAttribute("sort");
             var exclude =  e.getAttribute("exclude");
             if (e.getAttribute("tag")!=undefined) var tag = e.getAttribute("tag");
             var navtype = e.getAttribute("navtype");
              if (tag) {var tiddlers = store.getTaggedTiddlers(tag,sort);}
              else {var tiddlers = store.getTiddlers(sort,exclude);}
              for (var g=0; g<tiddlers.length; g++)
                  {if (title==tiddlers[g].title)
                       {if(navtype=="next" && !tiddlers[g+1])                             
                             e.className += " navNonExisting"
                        else if (navtype=="prev" && !tiddlers[g-1])
                             e.className += " navNonExisting"
                        else e.className = "button";}
                  }
}


config.refreshers.navLink = function(e,changeList){         
             refreshNavLink(e);
} 



config.macros.navigation={};
config.macros.navigation.handler = function(place,macroName,params,wikifier,paramString,tiddler){

          var sort = (params[0] && params[0]!=".")? params[0]: "created";
          var exclude =(params[1] && params[1]!=".")? params[1]: undefined;
          if (params[2])
                {var tag= params[2];
                 if(tiddler.tags.contains(tag)==false)
                 return false;
                }
          var labelPrev = params[3] ? params[3] : "Previous";
          var labelNext = params[4] ? params[4] : "Next";

          var next = function(e){
              if (!e) var e=window.event;
              var theTarget = resolveTarget(e);
              var navtype = theTarget.getAttribute("navtype");
              if (tag) {var tiddlers = store.getTaggedTiddlers(tag,sort);}
              else {var tiddlers = store.getTiddlers(sort,exclude);}
              for (var g=0; g<tiddlers.length; g++)
                  {if (tiddler.title==tiddlers[g].title)
                        {if (navtype == "next")
                            story.displayTiddler(theTarget,tiddlers[g+1].title)
                        else if (navtype == "prev")
                            story.displayTiddler(theTarget,tiddlers[g-1].title)}
                  }
              }

     var createNavBtn = function(text,theId,mode){
         var nextBtn = createTiddlyButton(place,text,text,next,null,theId);
         nextBtn.setAttribute("refresh","navLink");
         nextBtn.setAttribute("here",tiddler.title);
         nextBtn.setAttribute("sort",sort);
         nextBtn.setAttribute("exclude",exclude);
         nextBtn.setAttribute("navtype",mode);
         if (tag) nextBtn.setAttribute("tag",tag);
         refreshNavLink(nextBtn);
         }
    createNavBtn(labelNext+" ►","NavNext","next");
    createNavBtn("◄ "+labelPrev,"NavPrevious","prev");

}

setStylesheet(
"#NavNext {float:right;}\n"+
"#NavPrevious {float:left;}\n"+
".navNonExisting {display:none;}\n"+
 "",
"NavMacroStyles");
//}}}
/***
|Name|OpenTopPlugin|
|Created by|SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#OpenTopPlugin|
|Version|0.1|
|Requires|~TW2.x|
!!!Description:
Open new tiddlers at the top of the screen.

!!!Code
***/
//{{{
Story.prototype.coreLewcidDisplayTiddler=Story.prototype.displayTiddler ;
Story.prototype.displayTiddler =
function(srcElement,title,template,unused1,unused2,animate,slowly)
{
       var srcElement=null;
       if (document.getElementById(this.idPrefix + title))
          {story.closeTiddler(title);}
       this.coreLewcidDisplayTiddler(srcElement,title,template,unused1,unused2,animate,slowly);
       window.scrollTo(0,0);
}
//}}}
^^[[castellano|es.html]] [[Mirall|http://pacoriviere.googlepages.com/index.html]]^^
Sóc ''[[Professor|http://www.xtec.cat/~friviere/]]'' i ''Consultor de Noves Tecnologies''.
Qui ens enllaça segons: [[Technorati|http://technorati.com/blogs/pacoriviere.cat?reactions&page=1]] [[Alexa|http://www.alexa.com/data/ds/linksin?q=link:pacoriviere.cat/&url=http://pacoriviere.cat/]]

[[Galindaines|http://galindaines.blogspot.com]] és el meu blog personal.

Fem la vostra web
[[Projectes]].
[[Aparicions als mitjans]].
[[Petjades a la xarxa]].
FotoBloc [[Video|http://video.pacoriviere.cat]]
[[Articles en venda|http://subasta.pacoriviere.cat]]

Contacte: web (a) pacoriviere punt cat
<div class='header'>
<div class='titleLine'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> 
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='sidebar'><div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div id='sidebarCopyright' tiddler='Copyright'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<div id='contentFooter'><p>© 2006 <a href='http://pacoriviere.cat'>Paco Rivière</a>, <a href='http://www.osmosoft.com'>osmosoft</a> i <a href='http://checkettsweb.com'>Clint Checketts</a>
</p></div>
<<search>><<closeAll>><<permaview>><html><!-- SiteSearch Google -->
<form method="get" action="http://www.google.es/custom" target="google_window">
<table border="0" bgcolor="#ffffff">
<tr><td nowrap="nowrap" valign="top" align="left" height="0">
<a href="http://www.google.com/">
<img src="http://www.google.com/logos/Logo_25wht.gif" border="0" alt="Google" align="middle"></img></a>
<br/>
<input type="hidden" name="domains" value="pacoriviere.cat"></input>
<label for="sbi" style="display: none">Entreu les paraules de la cerca.</label>
<input type="text" name="q" size="16" maxlength="255" value="" id="sbi"></input>
</td></tr>
<tr>
<td nowrap="nowrap">
<table>
<tr>
<td>
<input type="radio" name="sitesearch" value="" checked id="ss0"></input>
<label for="ss0" title="Cerca a la web"><font size="-2" color="#oooooo">web</font></label></td>
<td>
<input type="radio" name="sitesearch" value="pacoriviere.cat" id="ss1"></input>
<label for="ss1" title="Cerca a pacoriviere.cat"><font size="-2" color="#oooooo">pacoriviere.cat</font></label></td>
</tr>
</table>
<label for="sbb" style="display: none">Envieu la cerca</label>
<input type="submit" name="sa" value="cerca" id="sbb"></input>
<input type="hidden" name="client" value="pub-0143440029578644"></input>
<input type="hidden" name="forid" value="1"></input>
<input type="hidden" name="channel" value="9483525044"></input>
<input type="hidden" name="ie" value="ISO-8859-1"></input>
<input type="hidden" name="oe" value="ISO-8859-1"></input>
<input type="hidden" name="flav" value="0002"></input>
<input type="hidden" name="sig" value="zYucFTYAmd7LJPdd"></input>
<input type="hidden" name="cof" value="GALT:#9A2C06;GL:1;DIV:#33FFFF;VLC:D03500;AH:center;BGC:ffffff;LBGC:CCE5F9;ALC:440066;LC:440066;T:336699;GFNT:223472;GIMP:223472;LH:50;LW:44;L:http://pacoriviere.cat/imatges/FR2006_100x113.png;S:http://pacoriviere.cat/;FORID:1"></input>
<input type="hidden" name="hl" value="es"></input>
</td></tr></table>
</form>
<!-- SiteSearch Google --></html><<newTiddler>><<newJournal '0DD MMM YYYY' 'diari'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel opcions 'Canvia les opcions avançades del TiddlyWiki'>>
<html><a href="http://zync.es/tecnologia-C37/la_roda_es_rodona-903.html?ads_cod=Nmb5pHM1EDewYTMzATOibG9n">Sé analizado en este blog a través de Zync</a></html>
[[LLIURE! Creeu la vostra pròpia pàgina Web Mòbil en uns minuts|http://websites.mobisitegalore.com/?u=d_16054657]]
<HTML><CENTER>
<a href="http://www.spreadfirefox.com/?q=affiliates&id=0&t=82042"><img border="0" alt="Baixa 
el  Firefox!" title="Baixa 
el  Firefox!" src="http://sfx-images.mozilla.org/affiliates/Buttons/120x60/blank.gif"/></a></HTML>
!!Temes
<<tagCloud auto excludeLists excludeSearch systemConfig>><<tabs txtMainTab 'Data' 'Tiddlers per ordre cronològic' TabTimeline 'Títol' 'Tiddlers per ordre alfabètic' TabAll 'Etiquetes' 'Tiddlers etiquetats' TabTags 'Més' 'Més opcions' TabMore>>
[img[PalmCAT|imatges/palmcat_180x70.png][http://palmcat.cat]]
[img[Mòbils|imatges/smscatala.gif][http://www.smscatala.com/?rel=palm]] 
[img[Usuari Linux #415568|imatges/415568.png][http://counter.li.org/reports/trends.php]]
[img[Alguns Drets Reservats|somerights20.png][http://creativecommons.org/licenses/by/2.5/deed.ca]]
^^sobre els continguts
<html>
<a href="http://www.statcounter.com/" target="_blank"><img src="http://c15.statcounter.com/counter.php?sc_project=1572935&amp;java=0&amp;security=41dad1d8&amp;invisible=0" alt="counter stats" border="0"></a> 
<!-- End of StatCounter Code --><a href="http://my.statcounter.com/project/standard/stats.php?project_id=1572935&amp;guest=1">Estadístiques</a></html>^^
BaixaElProgramari
[[Connectors]]
[[Obre la teva botiga|http://www.cafepress.com/cp/info/storeref.aspx?refby=pacoriviere]]
[[Donacions]]

[img[Versió .mobil|mobi.gif][http://pacoriviere.websiteforever.mobi/]]

[img[Valid CSS!|http://jigsaw.w3.org/css-validator/images/vcss][http://jigsaw.w3.org/css-validator/validator?uri=http://pacoriviere.googlepages.com/index.html]]
^^TiddlyWiki versió <<version>>^^
<html>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-1939071-1";
urchinTracker();
</script>
</html>
[[Lectors|http://www.mybloglog.com/buzz/community/larodasrodona/]]
/***
| Name:|SiteMapMacro|
| Author:|Simon Baird|
| Location:|http://simonbaird.com/mptw/#SiteMapMacro|
| Version:|1.0.3, 15-Mar-06|

!!Examples
See SiteMap and SliderSiteMap for example usage.

!!Parameters
* Name of tiddler to start at
* Max depth (a number) 
* Format (eg, nested, see formats below)
* Don't show root flag (anything other than null turns it on)
* Tags - a string containing a bracketed list of tags that we are interested in

!!History
* 1.0.3 (15-Mar-06)
** added tag filtering
* 1.0.2 (15-Mar-06)
** Added json format and dontshowroot option
* 1.0.1 (9-Mar-06)
** Added selectable formats and fixed nested slider format
* 1.0.0 (8-Mar-06)
** first release

***/
//{{{

version.extensions.SiteMapMacro = {
	major: 1,
	minor: 0,
	revision: 3,
	date: new Date(2006,3,15),
	source: "http://simonbaird.com/mptw/#SiteMapMacro"
};

config.macros.siteMap = {

	formats: {
		bullets: {
			formatString: "%0[[%1]]\n%2",
			indentString: "*"
		},

		// put this in your StyleSheet to make it look good.
		// .sliderPanel { margin-left: 2em; }

		sliders: {
			formatString: "[[%1]]+++\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},

		openSliders: {
			formatString: "[[%1]]++++\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},

		popups: {
			formatString: "[[%1]]+++^\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},

		// these don't work too well
		openPopups: {
			formatString: "[[%1]]++++^\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},
		
		// this is a little nuts but it works
		json: {
			formatString: '\n%0{"%1":[%2\n%0]}',
			formatStringLeaf: '\n%0"%1"',
			indentString: "  ",
			separatorString: ","
		}


	},

	defaultFormat: "bullets",

	treeTraverse: function(title,depth,maxdepth,format,dontshowroot,tags,excludetags) {

		var tiddler = store.getTiddler(title);
		var tagging = store.getTaggedTiddlers(title);

		if (dontshowroot)
			depth = 0;

		var indent = "";
		if (this.formats[format].indentString)
			for (var j=0;j<depth;j++)
				indent += this.formats[format].indentString;

		var childOutput = "";
		if (!maxdepth || depth < parseInt(maxdepth)) 
			for (var i=0;i<tagging.length;i++)
				if (tagging[i].title != title) {
					if (this.formats[format].separatorString && i != 0)
						childOutput += this.formats[format].separatorString;
					childOutput += this.treeTraverse(tagging[i].title,depth+1,maxdepth,format,null,tags,excludetags);
				}

		if (childOutput == "" && (
				(tags && tags != "" && !tiddler.tags.containsAll(tags.readBracketedList())) ||
				(excludetags && excludetags != "" && tiddler.tags.containsAny(excludetags.readBracketedList()))
				)
			) {
			// so prune it cos it doesn't have the right tags and neither do any of it's children
			return "";
		}

		if (dontshowroot)
			return childOutput;

		if (this.formats[format].formatStringLeaf && childOutput == "") {
			// required for nestedSliders
			return this.formats[format].formatStringLeaf.format([indent,title,childOutput]);
		}

		return this.formats[format].formatString.format([indent,title,childOutput]);
	},

	handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		wikify(this.treeTraverse(
			params[0] && params[0] != '.' ? params[0] : tiddler.title, 1, 
			params[1] && params[1] != '.' ? params[1] : null, // maxdepth
			params[2] && params[2] != '.' ? params[2] : this.defaultFormat, // format
			params[3] && params[3] != '.' ? params[3] : null, // dontshowroot
			params[4] && params[4] != '.' ? params[4] : null, // tags
			params[5] && params[5] != '.' ? params[5] : null // excludetags
			),place);
	}

}

//}}}
O [[El món en clau lliure]] - [[Paco Rivière|PacoRivière]]
[[La roda és rodona|LaRuedaEsRedonda.html]]
http://pacoriviere.googlepages.com/
/***

''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''

|Name|SplashScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#SplashScreenPlugin|
|Version|0.21 |
|Requires|~TW2.08+|
!Description:
Provides a simple splash screen that is visible while the TW is loading.

!Installation
Copy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.

!Customizing
Once the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.

!History
* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.
* 26-06-06 : version 0.2, first release

!Code
***/
//{{{
var old_lewcid_splash_restart=restart;

restart = function()
{   if (document.getElementById("SplashScreen"))
        document.getElementById("SplashScreen").style.display = "none";
      if (document.getElementById("contentWrapper"))
        document.getElementById("contentWrapper").style.display = "block";
    
    old_lewcid_splash_restart();
   
    if (splashScreenInstall)
       {if(config.options.chkAutoSave)
			{saveChanges();}
        displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");
        }
}


var oldText = store.getTiddlerText("MarkupPreHead");
if (oldText.indexOf("SplashScreen")==-1)
   {var siteTitle = store.getTiddlerText("SiteTitle");
   var splasher='\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';
   if (! store.tiddlerExists("MarkupPreHead"))
       {var myTiddler = store.createTiddler("MarkupPreHead");}
   else
      {var myTiddler = store.getTiddler("MarkupPreHead");}
      myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);
      store.setDirty(true);
      var splashScreenInstall = true;
}
//}}}
/***
StyleSheet General Rules
***/
/*{{{*/
a,
.button{
 color: #06c;
 text-decoration: none;
 background: transparent;
}

a:hover,
.button:hover{
 background: transparent;
 text-decoration: none;
 color: #147;
}

body {
 font-size: 15px; /* Resets 1em to 10px */
 font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
 background-color: #d5d6d7;
 color: #666;
  margin: 0 auto;
}

#contentWrapper{
 background: transparent url("kubrickbg.jpg") repeat-y 0px 0px;
 border: 0;
 margin: 0 auto;
 width: 760px;
}
/*}}}*/

/***
Header Rules
***/
/*{{{*/
.titleLine{
 margin: 80px auto 0em;
 padding: 0;
 width: 745px;
 text-align: center;
 color: #fff;
}

.siteTitle{
 font-size: 30px;
}

.siteTitle a, .siteSubtitle a{
 color: #fff;
}

.siteTitle a:hover, .siteSubtitle a:hover{
 text-decoration: none;
 font-weight: normal;
}

.siteSubtitle{
 display: block;
 margin: 58px 0 0 0;
 font-size: 15px;
}

.header {
 background: url("pacoheader.jpg") no-repeat bottom center; 
 margin: 0;
 padding: 1px;
 height: 198px;
 width: 758px;

}
/*}}}*/

/***
Footer Styles
***/
/*{{{*/
#contentFooter {
 text-align: center;
 clear: both;
 background: url("kubrickfooter.jpg") no-repeat bottom;
 border: none;
 padding: 2em;
 height: 3em;
}
/*}}}*/

/***
Sidebar styles
***/
/*{{{*/
#sidebar{
 margin: 1em 2em 0 0;
 position: static;
 float: right;
}

#sidebar a,
#sidebar a:hover{
 border: 0;
}

#sidebar h1{
 font-size: 1.4em;
 font-weight: bold;
 margin: 0;
 background: transparent;
 color: #000;
}

#sidebar ul{
 padding: 0;
 margin: 0 0 0 1em;
}

#sidebar li{
 list-style: none;
}

#sidebar li:before{
 color: #000;
 content: "s00BB s0020";
}

#sidebar, #mainMenu, #sideBarOptions{
 width: 200px;
 text-align: left;
}

#mainMenu{
 position: static;
}
/*}}}*/

/***
Sidebar search styles
***/
/*{{{*/
#sidebarSearch{
 margin: 20px 0 0 10px;
 width: 155px;
}

#sidebarSearch input{
 font-size: 15px;
 width: 120px;
}

#sidebarSearch .button{
 margin-top: 1px;
}
/*}}}*/

/***
Sidebar option styles
***/
/*{{{*/
#sidebarOptions{
 margin-left: .75em;
}

#sidebarOptions h1{
 font-size: 1.3em;
}

#sidebarOptions a{
 display: block; // was inline 
 border: 0;
}

#sidebarOptions .sliderPanel{
 background-color: transparent;
 font-size: 1em;
 margin: 0;
}

#sidebarOptions .sliderPanel a:before,
#sidebarTabs li:before{
 content: "";
}
/*}}}*/
/***
Sidebar tab styles
***/
/*{{{*/
#sidebarTabs .tab,
#sidebarTabs .tab:hover{
 border: 1px solid #ccc;
 text-decoration: none;
}

#sidebarTabs .tabSelected{
 background: #ccc;
 color: #333;
}

#sidebarTabs .tabUnselected{
 background: #e6e6e6;
 color: #333;
}

#sidebarTabs .tabContents{
 background: #ccc;
 color: #333;
 border: 1px solid #ccc;
 width: 95%;
}

#sidebarTabs .tabContents a{
 color: #06c;
}

#sidebarTabs .tabContents a:hover{
 color: #147;

}

#sidebarTabs a.tabSelected:hover{
 cursor: default;
}

#sidebarTabs .txtMoreTab .tab{
 border: 1px solid #aaa;
 color: #333;
}

#sidebarTabs .txtMoreTab .tabSelected{
 background: #aaa;
 color: #333;
}

#sidebarTabs .txtMoreTab .tabSelected:hover{
 background: #aaa;
 color: #333
}

#sidebarTabs .txtMoreTab .tabUnselected{
 background: #ccc;
 color: #333;
}

#contentWrapper #sidebar .txtMoreTab .tabUnselected:hover,#contentWrapper #displayArea .txtMoreTab .tabUnselected:hover{
 color: #333;
}

#contentWrapper .txtMoreTab .tabContents{
 background: #aaa;
 color: #333;
 border: 1px solid #aaa;
}
/*}}}*/
/***
Message area styles
***/
/*{{{*/
#messageArea {
background-color: #eee;
 border: 1px solid #ccc;
 color: #bbb;
 margin: 0 1em;
 font-size: .8em;
}

#messageArea a:link{
 color: #aaa;
}
#messageArea a:hover{
 color: #06c;
}

#messageArea .messageToolbar .button{
 border: 1px solid #ccc;
 color: #aaa;
 text-decoration: none;
}
#messageArea .messageToolbar .button:hover{
 border: 1px solid #777;
 color: #777;
}
/*}}}*/
/***
Popup styles
***/
/*{{{*/
#popup{
 padding: 0;
 background: #eee;
 border: 1px solid #ccc;
 color: #333;
}

#popup a{
 color: #06c;
 font-weight: normal;
}

#popup a:hover{
 color: #fff;
 background: #aaa;
 text-decoration: none;
}
/*}}}*/
/***
Tiddler display styles
***/
/*{{{*/
#displayArea{
 margin: 10px 245px 1em 30px;
 text-align: left;
 font-size: 15px;
 color: #000;
}

h1, h2, h3, h4, h5, .title{
 font-family: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
color: #333;
padding: 0;
}

.viewer h1,.viewer h2,.viewer h3,.viewer h4,.viewer h5,.viewer h6{
 background: transparent;
 border-bottom: 1px dotted #ccc;
}

.title{
 font-size: 20px; 
}

.subtitle{
 color: #999;
 font-size: 12px;
}

.toolbar{
 font-size: 11px;
}

.toolbar a:link,.toolbar a:visited{
 background: #e6e6e6;
 border: 1px solid #ccc;
 color: #aaa;
 padding: 1px 3px;
 margin: 0 .5em 0 0;
}

.toolbar a.button:hover{
 background: #eee;
 border-color: #ddd;
 color: #ccc;
 text-decoration: none;
}

.viewer a.tiddlyLinkNonExisting:link{
 color: #b85b5a;
 font-style: normal;
}

.viewer a.tiddlyLinkNonExisting:hover{
 text-decoration: none; 
}

.viewer a.tiddlyLinkExisting:link,#displayArea .viewer a.externalLink{
 font-weight: normal;
 color: #06c;
}

.viewer a.tiddlyLinkExisting:hover,.viewer a.externalLink:hover{
 color: #147;
 text-decoration: none; 
}

.viewer {
 font-size: 15px;
 line-height: 160%;
 padding-top: 0.5em;
}

.viewer code {
 font-size: 12px;
}

.viewer .button{
 
 font-size: 15px;
}

.editor {
 font-size: 15px;
 color: #ooo;
 line-height: 160%;
}

.editor input, .editor textarea {
 display: block;
 width: 100%;
 font: inherit;
}

.footer, .footer a.button,.editorFooter, .footer a.button{
 color: #aaa;
}

.selectedTiddler .footer,.selectedTiddler .footer a{
 color: #777;
}

.selectedTiddler .footer a.button,.selectedTiddler .editorFooter a.button{
 color: #06c;
}

.footer a.button:hover,.editorFooter a.button:hover{
 color: #147;
 background: transparent;
} 

.tagClear{
 clear: none; 
}
/*}}}*/
[img[TWLinuxMagazine|http://farm2.static.flickr.com/1085/539019883_9e58ed5c53_t.jpg]]
Fa uns mesos [[Linux Magazine|http://www.linux-magazine.es/]] [[va publicar un article en castellà|http://www.linux-magazine.es/issue/26/]] sobre TiddlyWiki que m'havia passat per alt. Diu així:
''¿Qué es TiddlyWiki?''
//A veces te cruzas con un programa de software que es tan simple y útil que, sencillamente, no puedes imaginarte cómo te las has apañado sin él... TiddlyWiki es una de esas aplicaciones. A primera vista, parece un wikiconvencional, y se comporta como tal; pero si profundizas un poco, descubrirás que es una aplicación más que ingeniosa.//

[[PDF, 2810 kB|http://www.linux-magazine.es/issue/26/024-027_TiddlyWikiLM26.crop.pdf]]
http://ubuntu.pacoriviere.cat

I dos per Skype (en anglés)
[[Solucionar problemes amb 8.10|http://anojrs.blogspot.com/2008/12/ubuntu-810-resolving-skype-sound-issues.html]]
[[Registrar una conversa|http://www.detector-pro.com/2008/08/how-to-record-skype-calls-on-ubuntu.html]]
''Anàlisi patrocinat'' ^^[[Escolta l'article|http://blip.tv/file/get/Pacoriviere-ViatgesALaRiviereMaya411.mp3]]^^
Ja ha arribat l'estiu, i amb ell les calors i les ganes de deixar la rutina i cercar nous horitzons. Amb les veus que parlen de crisi els preus dels viatges organitzats no fan més que baixar. Així que quin millor moment per a provar els [[Viatges a la Riviera Maya|http://destinia.com/viajes/Riviera-Maya]] de [[Destinia|http://destinia.com/viajes/]]?
La Riviera Maya és el destí turístic més important de Mèxic després de Cancún. Platges de somni i hotels de diverses categories entre bones i excel·lents. La oportunitat de conèixer altres cultures, costums i formes de viure, de relaxar-se i fruir del sol, de la platja i de totes les comoditats d'un complex turístic pensat específicament per això, on es pot trobar des d'excursions organitzades a festes nocturnes passant per activitats esportives a la platja o a la piscina amb monitors que es faran càrrec de la canalla, per que tinguem aquesta estona per nosaltres que no acabem mai de trobar.
La plataforma de [[Destinia.com|http://destinia.com/viajes/]] ofereix una interfície senzilla i ben dissenyada, sense les estridències que són massa habituals en aquests casos i que ens ofereix informació complementària per organitzar i contractar el nostre viatge al nostre gust i sense perdre'ns per un laberint interminable de preguntes. Inclús disposem d'un telefon per aclarir qualsevol cas especial. El que trobem a faltar és una versió en català.
* ''Conclusions:''
Una web amb un disseny agradable, sense estridències, amb informació complementària, que disposa d'un telefon d'atenció directa. No està en catala.
* ''Pros:''
** Interfície simple
** Navegació fàcil
* ''Contres:''
** Encara no hi ha versió en català.
* ''Enllaços:''
** [[Destinia|http://destinia.com/viajes/]]
** [[Vídeo promocional|http://youtube.com/watch?v=v1wril4v7-U]]
<!--{{{-->
<div class='toolbar' macro='toolbar bookmarks closeTiddler closeOthers +editTiddler permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date [[DD MMM YYYY]]'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer'> <span macro='view text wikified'></span> <span macro='navigation "" "" plugin'></span></div>
<div class='tagClear'></div>
<!--}}}-->
version.extensions.tagCloud = {major: 1, minor: 0 , revision: 1, date: new Date(2005,8,16)};
//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman

config.macros.tagCloud = {
 noTags: "No tag cloud created because there are no tags.",
 tooltip: "%1 tiddlers amb l'etiqueta '%0'"
};

config.macros.tagCloud.handler = function(place,macroName,params) {
 
var tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);

var tags = store.getTags();
for (t=0; t<tags.length; t++) {
  for (p=0;p<params.length; p++) if (tags[t][0] == params[p]) tags[t][0] = "";
}

 if(tags.length == 0) 
   createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);
 //Findout the maximum number of tags
 var mostTags = 0;
 for (t=0; t<tags.length; t++) if (tags[t][0].length > 0){
  if (tags[t][1] > mostTags) mostTags = tags[t][1];
 }
 //divide the mostTags into 4 segments for the 4 different tagCloud sizes
 var tagSegment = mostTags / 4;

  for (t=0; t<tags.length; t++) if (tags[t][0].length > 0){
 var tagCloudElement = createTiddlyElement(tagCloudWrapper,"span",null,null,null);
 tagCloudWrapper.appendChild(document.createTextNode(" "));
 var theTag = createTiddlyButton(tagCloudElement,tags[t][0],this.tooltip.format(tags[t]),onClickTag,"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));
  theTag.setAttribute("tag",tags[t][0]);
 }

};

setStylesheet(".tagCloud span{height: 1.8em;margin: 3px;}.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;}","tagCloudsStyles");
[[Escolta l'article|http://blip.tv/file/get/Pacoriviere-CollaborarIAprofitarseDelProgramariLliure540.mp3]]
[>img[I love comments|http://farm4.static.flickr.com/3230/2363248475_260e2ed0ee_o.jpg][http://flickr.com/photos/morbitphotography/2363248475/]]Per què ens costa tant deixar un comentari animant els desenvolupadors?

Hi ha moltes formes de col·laborar amb el programari lliure. No fa falta desenvolupar. Les opinions dels usuaris són essencials per animar, motivar i convèncer els que desenvolupem programari lliure que el nostre esforç és útil per a la societat, o almenys per a tú.

Per què a les nostres latituds costa tant deixar un comentari? He col·laborat amb diversos projectes de programari lliure (per a PalmOS, Java, Linux, i fins i tot per a uindous$) tant al món hispà com al món anglosaxó. En aquest últim les preguntes, comentaris, suggeriments, crítiques i propostes de millora es compten per milers. En el primer són escasisimes sinó totalment inexistents. I no puc comprendre per què. És cert que darrerament ha millorat una mica. Fa pocs anys eren gairebé nul·les, però encara així segueixen sent raríssimes en comparació amb altres marcs culturals.

Comprenc que a ningú no li agradi omplir un formulari de registre i deixar algunes dades per fer un comentari. Però és l'únic preu que demanem els desenvolupadors de programari lliure, a canvi de milers d'hores d'esforç desinteressat, perquè tu puguis gaudir de gairebé qualsevol aplicació, a un preu ridícul, si no nul. Realment costa tant? Si com és lògic vols protegir la intimitat del teu correu, pots fins i tot deixar dades falses o mitg certes, o afegir per exemple la paraula NOSPAM al teu correu electrònic, obligant així que per utilitzar-lo s'hagin de revisar manualment les adreces.

Però si us plau, la propera vegada que utilitzis programari lliure, tinguis un dubte, et sembli útil, tinguis algun suggeriment, estiguis agraït, o fins i tot disgustat, ** Deixa La Teva Opinió!! **

No et demanem que paguis res, ni el teu número de targeta, ni que esperis que t'arribi el CD per correu ordinari. Pots baixar el programari, provar-lo de seguida i si no ho desitges no hauràs de pagar ni tan sols si t'agrada molt i et resulta molt útil, encara que en aquest cas una [[donació|Donacions]] sempre és d'agrair.