TiddlyWikifr est en cours de chargement ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ce tiddler a été créé automatiquement pour enregistrer les détails de ce serveur
|''Type:''|file|
|''URL:''|http://jackparke.googlepages.com/jtw.html|
|''Espace de travail:''|(default)|

Ce tiddler a été créé automatiquement pour enregistrer les détails de ce serveur
|''Type:''|file|
|''URL:''|	http://visualtw.ouvaton.org/VisualTW.html|
|''Espace de travail:''|(default)|

Ce tiddler a été créé automatiquement pour enregistrer les détails de ce serveur
|''Type:''|file|
|''URL:''|http://www.TiddlyTools.com/|
|''Espace de travail:''|(default)|

Ce tiddler a été créé automatiquement pour enregistrer les détails de ce serveur
|''Type:''|file|
|''URL:''|http://www.tiddlytools.com|
|''Espace de travail:''|(default)|

Ce tiddler a été créé automatiquement pour enregistrer les détails de ce serveur
Vous trouverez dans cet article qui aurait aussi pu s'appeler "//~TiddlyWiki for the Dummies//" le minimum à savoir pour utiliser TiddlyWiki sans rien savoir :-)

<tabs ALireTW>

<tab Règles générales>
!Editer un //bloc-notes// TiddlyWiki
Pour pouvoir créer, modifier et travailler sur un //bloc-notes// TiddlyWiki il faut impérativement pouvoir ''écrire'' dans ce //bloc-notes// et donc pouvoir l'''enregistrer''.
Il est donc indispensable de copier un modèle de //bloc-notes// ou un //bloc-notes// existant vers un endroit où vous aurez des droits en lecture ''et en écriture'' afin de pouvoir commencer à utiliser et modifier un //bloc-notes// TiddlyWiki : sur votre disque dur, dans la plupart des cas.
Sauf cas particulier (qui fera l'objet d'une article plus tard) nécessitant un peu de configuration, il n'est pas possible de modifier directement un //bloc-notes// TiddlyWiki qui __n'est pas sur votre poste de travail__ mais par exemple sur un site Web (Internet ou Intranet), ''cela ne marchera pas''. Pour le modifier, il faut ''d'abord'' le récupérer en local.

La méthode la plus classique pour travailler sur un //bloc-notes// TiddlyWiki est donc la suivante :
* Ouvrir avec un //bloc-notes// TiddlyWiki de référence, c'est-à-dire vierge, recopié d'un existant, ou téléchargé par "''Enregistrer sous...''", ...
* Faire des modifications : création, modification ou suppression d'//éléments// ou de menus
* Sauvegarder en local
* Publier par l'une des méthodes suivantes :
** Envoi par messagerie du fichier de votre //bloc-notes// TiddlyWiki mis à jour (pensez à le compresser avant avec un utilitaire de type Zip : WinZip, Winrar ou [[7-Zip|http://www.7-zip.org/fr/]] qui a l'avantage d'être gratuit 

!Modifier le comportement ou l'affichage d'un //bloc-notes// TiddlyWiki
Pour modifier des éléments ou des composants de base de TiddlyWiki, on peut :
* soit modifier directement le code : méthode peu recommandée et non évolutive
* soit écrire des petits //éléments// qui vont modifier le comportement d'un //bloc-notes// TiddlyWiki lors de son affichage ou de son utilisation
</tab>

<tab Les extensions>
!Principe des extensions
Un TiddlyWiki, c'est très pratique, mais il y a certaines choses qui ne sont pas intégrées en standard mais qui peuvent être faites par l'ajout de fonctionalités supplémentaires ou même par le remplacement de certains modules du TiddlyWiki original.
La création de ce type de "rustine" ou de "patch" nécessite une certaine connaissance du langage ~JavaScript, ce qui n'est pas le cas de tous les utilisateurs de TiddlyWiki, mais ''heureusement'', d'autres on déjà fait cet effort et on mis à disposition de nombreuses extensions appelées ''plugins'', ou ''scripts''. Une liste non exhaustive est disponible [[ici|Extensions utiles]] dans l'//élément// "[[Extensions utiles]]".

!Une extension à connaître
Parmi toutes ces extensions, l'une des plus importantes est ''InlineJavascriptPlugin'' écrite par Eric Shulman. Cette extension a pour objet d'insérer du code exécutable Javascript directement dans le corps d'un //élément// :
* elle appelle directement des fonctions de base de TiddlyWiki,
* elle permet de définir de nouvelles fonctions
* elle permet d'effectuer des calculs
* elle permet d'insérer des données générées dynamiquement au format TiddlyWiki dans des //éléments//
* elle permet de réaliser d'autres tâches à chaque fois qu'un //élément// est affiché.

Lecteur, si tu es (ou étais) utilisateur de PalmOS, pense à ''[[HackMaster|http://www.daggerware.com/hackmstr.htm]]'' de [[DaggerWare|http://www.daggerware.com/]].
''InlineJavascriptPlugin'', c'est aussi utile et fondamental que ~HackMaster :-)
</tab>

<tab Mise en page>
!Exemple de modification de la mise en page
Pour diminuer au maximum la taille de la zone d'en-tête (avec le titre et le sous-titre) du //bloc-notes//, la méthode la plus simple et la plus propre est de créer un //élément// spécifique (par exemple : [[MaDemoStyleSheet]]) et d'y faire référence dans l'//élément caché// [[StyleSheet]].
Pour le détail de la syntaxe, cela demande un peu plus d'expérience ou de connaissance en CSS ...
!Exemple pour l'ajout d'un en-tête permanent supplémentaire
* Il faut d'abord ajouter les lignes suivantes dans le modèle [[PageTemplate]]
** entre {{{<div id='displayArea'>}}} et {{{<div id='messageArea'></div>}}} :
<<<
{{{<div style="text-align:center">}}}
{{{   <span class='Misc' refresh='content' tiddler='HeaderToolbar'>}}}
{{{   </span>}}}
{{{</div>}}}
<<<
* Il faut ensuite créer un //élément// au nom correspondant, ''~HeaderToolbar'' dans le cas présent.
Voir par exemple l'//élément// [[HeaderToolbar]] de ce site.
!Exemple pour l'ajout d'un bas de page permanent de type "//disclaimer//"
* Il faut d'abord ajouter la ligne suivante dans le modèle [[PageTemplate]]
** entre {{{<div id='tiddlerDisplay'></div>}}} et de dernier {{{</div>}}} en bas du fichier :
<<<
{{{<div style="text-align:center">}}}
{{{   <span class='Misc' refresh='content' tiddler='FooterDisclaimer'>}}}
{{{   </span>}}}
{{{</div>}}}
<<<
* Il faut ensuite créer un //élément// au nom correspondant, ''~FooterDisclaimer'' dans le cas présent.
Voir par exemple l'//élément// [[FooterDisclaimer]] de ce site.

!Mettre une bordure autour de chaque //élément//
Il suffit tout simplement d'ajouter cette ligne dans l'//élément// [[StyleSheet]] :
{{{
.viewer { border:1px solid; padding:1em; -moz-border-radius:1em;  }
}}}
Avec Firefox, les coins apparaîtront comme arondis.
</tab>

<tab Divers>
!Comment ne plus faire apparaître la colonne de droite
Nous vous proposons 2 solutions simples qui permettent respectivement de masquer et de supprimer cette colonne
!!1 -- Pour masquer la colonne
Il suffit d'untiliser une extension de Eric Shulmann disponible sur le site [[TiidlyTools.com|htp://www.tiddlytools.com]]
!!2 - Pour supprimer complètement la colonne
* 
</tab>

</tabs>

Une fois que vous avez lu cet //élément//, il est maintenant temps de butiner (du verbe "//to browse//" en anglais ...) sur ce site à la recherche d'autres informations pertinentes.
Bonne navigation :-)
{{floatleft{<<QOTD Articles 8000 noclick norandom>>}}}
<tabs AideMemoire>

<tab Format données>
!1 -- Format des données
|!Option|!Syntaxe|!Résultat|!Anglais|h
|texte en gras|{{{''gras''}}}|''gras''|''bold''|
|texte en italique|{{{//italique//}}}|//italique//|//italic//|
|texte souligné|{{{__souligné__}}}|__souligné__|__underlined__|
|texte barré|{{{--barré--}}}|--barré--|--strikethrough--|
|texte mis en exposant|{{{texte^^exposant^^}}}|texte^^exposant^^|text^^super^^|
|texte mis en indice|{{{texte~~indice~~}}}|texte~~indice~~|text~~sub~~|
|texte mis en évidence|{{{@@mis en évidence@@}}}|@@mis en évidence@@|@@highlighted@@|
|texte en de taille fixe|{{{ {{{taille fixe}}} }}}|{{{taille fixe}}}|{{{monospaced}}}|
|texte bleu|{{{@@color:#00f;texte bleu@@}}}|@@color:#00f;texte bleu@@| .|
|fond vert|{{{@@bgcolor:#0f0;fond vert@@}}}|@@bgcolor:#0f0;fond vert@@| .|
</tab>

<tab Images>
!2 - Format des images
Les 4 formats possibles pour intégrer des images sont les suivants :
|!Affichage|!Syntaxe|!Exemple|h
|Affichage simple d'une image|{{{[img[nom_fichier.ext]]}}}<br><br>{{{[img[Francais.gif]]}}}|[img[Francais.gif]]|
|~|{{{[img[titre|nom_fichier.ext]]}}}<br><br>{{{[img[Ceci est un message d'aide|Francais.gif]]}}}|[img[Ceci est un message d'aide|Francais.gif]]|
|Image servant de lien vers une autre page|{{{[img[nom_fichier.ext][lien]]}}}<br><br>{{{[img[Francais.gif][images/index.html]]}}}|[img[Francais.gif][images/index.html]]|
|~|{{{[img[titre|nom_fichier.ext][lien]]}}}<br><br>{{{[img[Ceci est un message d'aide|Francais.gif][images/index.html]]}}}|[img[Ceci est un message d'aide|Francais.gif][images/index.html]]|
Le message d'aide est optionnel.

[<img[En Français|Francais.gif][images/Francais.gif]][>img[En Anglais|Anglais.gif][images/Anglais.gif]] On peut aussi insérer des images à gauche ou à droite d'un texte, respectivement avec {{{[<img[}}}) et avec {{{[>img[}}}). Il est aussi possible de s'affranchir de ces images @@clear(left):clear(right):display(block) en utilisant des codes CSS @@ tels que {{{@@clear(left):clear(right):display(block) code CSS @@}}}
{{{
[<img[En Français|Francais.gif][images/Francais.gif]][>img[En Anglais|Anglais.gif][images/Anglais.gif]] On peut aussi insérer des images à gauche ou à droite d'un texte, respectivement avec {{{[<img[}}}) et avec {{{[>img[}}}). Il est aussi possible de s'affranchir de ces images @@clear(left):clear(right):display(block) en utilisant des codes CSS @@
}}}
</tab>

<tab Listes et Citations>
!3 -- Listes (//Lists//) et citations (//Blockquotes//)
{{{
* liste simple de niveau 1
** liste simple de niveau 2
*** liste simple de niveau 3
**** liste simple de niveau 4
***** liste simple de niveau 5

# liste numérotée de niveau 1
## liste numérotée de niveau 2
### liste numérotée de niveau 3
#### liste numérotée de niveau 4
##### liste numérotée de niveau 5

; liste de definition :  terme défini
: liste de definition :  description
}}}
<<<
* liste simple de niveau 1
** liste simple de niveau 2
*** liste simple de niveau 3
**** liste simple de niveau 4
***** liste simple de niveau 5

# liste numérotée de niveau 1
## liste numérotée de niveau 2
### liste numérotée de niveau 3
#### liste numérotée de niveau 4
##### liste numérotée de niveau 5

; liste de definition :  terme défini
: liste de definition :  description
<<<

{{{
> citation de niveau 1
>> citation de niveau 2
>>> citation de niveau 3
>>>> citation de niveau 4
>>>>> citation de niveau 5

<<<
citation
<<<
}}}
<<<
> citation de niveau 1
>> citation de niveau 2
>>> citation de niveau 3
>>>> citation de niveau 4
>>>>> citation de niveau 5

> citation
<<<
</tab>

<tab Niveaux de Titres>
!4 -- Titre de niveaux (//Titles//)
{{{
!Titre de niveau 1
!!Titre de niveau 2
!!!Titre de niveau 3
!!!!Titre de niveau 4
!!!!!Titre de niveau 5
}}}
<<<
!Titre de niveau 1
!!Titre de niveau 2
!!!Titre de niveau 3
!!!!Titre de niveau 4
!!!!!Titre de niveau 5
<<<
</tab>

<tab Tableaux>
!5 - Tableaux (//Tables//)
{{{
|classe CSS|k
|>| En-tête de tableau : __''H''__eader |h
|!titre de colonne 1|!titre de colonne 2|
|ligne 1, colonne 1|ligne 1, colonne 2|
|ligne 2, colonne 1|ligne 2, colonne 2|
|>|Plusieurs colonnes de large|
|Plusieurs lignes de hauteur| … |
|~| … |
|texte aligné à gauche |espace laissé à droite |
| texte aligné à droite| espace laissé à gauche|
| texte centré | espace laissé à gauche ''et'' à droite |
|Propriété_CSS:valeur;…| … |
|>| Bas de tableau : __''F''__ooter |f
|Légende : __''C''__aption|c
}}}
<<<
|classe CSS|k
|>| En-tête de tableau : __''H''__eader |h
|!titre de colonne 1|!titre de colonne 2|
|ligne 1, colonne 1|ligne 1, colonne 2|
|ligne 2, colonne 1|ligne 2, colonne 2|
|>|Plusieurs colonnes de large|
|Plusieurs lignes de hauteur| … |
|~| … |
|texte aligné à gauche |espace laissé à droite |
| texte aligné à droite| espace laissé à gauche|
| texte centré | espace laissé à gauche ''et'' à droite |
|Propriété_CSS:valeur;…| … |
|>| Bas de tableau : __''F''__ooter |f
|Légende : __''C''__aption|c
<<<
''Note :''
* Le marqueur {{{>}}} fusionne horizontalement une cellule avec celle immédiatement située à sa droite.
* Le marqueur {{{~}}} fusionne verticalement une cellule avec celle immédiatement située au dessus d'elle.
</tab>

<tab Liens>
!6 - Liens et hyperliens
* Les liens
|!Détails|!Syntaxe|!Exemple|!Résultat|h
|Lien interne ou externe|{{{[[texte|WikiWord ou URL]]}}}|{{{[[Page index.html en local|index.html]]}}}|[[Page index.html en local|index.html]]|
|Image|{{{[img[nom de l'image|chemin/image.ext]]}}}|{{{[img[Français|Francais.gif]]}}}|[img[Français|Francais.gif]]|
* Les //~WikiWord// sont des mots réservés qui sont automatiquement transformés en hyperliens vers leurs éléments (//tiddlers//) respectifs
** la transformation automatique peut être annulée en faisant précéder les //~WikiWord// par un signe //tilde// ({{{~}}}). Exemple :  {{{~WikiWord}}}
* Les [[LiensEnjolivés]] (//~PrettyLinks//) sont entourés de doubles crochets et contiennent le nom de l'élément concerné. Exemple : {{{[[nom de l'élément]]}}}
** En complément, un titre générique ou une description peuvent être ajoutés. Ils doivent être séparés par un caractère //pipe// ({{{|}}})) ce qui donne {{{[[titre|lien]]}}}<br>'''N.B.:''' Dans ce cas, la cible peut être soit un fichier local, soit l'URL d'un site Web local ou distant.
</tab>

<tab Mise en Page>
!Eléments de Présentation & Feuilles de style
Les //éléments// suivis par ^^(*)^^ ont été modifiés sur ce site.
|>|>| ![[PageTemplate]]^^(*)^^ |
|>|>| [[SiteTitle]]^^(*)^^ - [[SiteSubtitle]]^^(*)^^ |
| [[MainMenu]]^^(*)^^ |[[DefaultTiddlers]]^^(*)^^<br>[[HeaderToolbar]]^^(+)^^<br><br>[[ViewTemplate]]<br>[[EditTemplate]]|[[SideBarOptions]]^^(*)^^ |
|~|~| [[OptionsPanel]]<br>[[AdvancedOptions]] |
|~|~| [[SideBarTabs]] |
|>|>| [[SiteUrl]]^^(*)^^ |

|>|>| ![[SideBarTabs]] |
| [[Timeline|TabTimeline]] | [[All|TabAll]] | [[Tags|TabTags]] |
|>|>| [[More|TabMore]] |
| [[Missing|TabMoreMissing]] | [[Orphans|TabMoreOrphans]] | [[Shadowed|TabMoreShadowed]] |

|>|>|>| ![[StyleSheet]]^^(*)^^ |
| [[Layout|StyleSheetLayout]] | [[Colors|StyleSheetColors]] | [[Print|StyleSheetPrint]] | [[Palette|ColorPalette]] |
</tab>

<tab Divers>
!8 -- Divers
* du code HTML peut être intégré directement dans un élément, en l'entourant par les codes HTML suivants : {{{<html> … </html>}}}
* {{{<br>}}} force un saut de ligne (comme en HTML)
* {{{----}}} insère une ligne horizontale (comme le code {{{<HR> en HTML}}})
* {{{<<Nom de la macro>>}}} appelle l'élément correspondant __//nom de la macro//__
* Pour masquer certaines parties d'un élément et ne pas le faire afficher, il doit être entouré des codes suivants :
** début de la zone de commentaire : {{{/%}}}
** fin de la zone de commentaire : {{{%/}}}
* faire apparaitre une annotation quand la souris est sur un mot comme ((ici(c'est grace à l'extension AnnotationsPlugin))) grâce à l'extension ((AnnotationsPlugin(^Malheureusement, le site original n'est plus disponible. Alors prenez l'extension sur ''TiddlyWiki.fr'' !)))
</tab>

</tabs>
/***
|''Name:''|AnnotationsPlugin|
|''Description:''|Inline annotations for tiddler text.|
|''Author:''|Saq Imtiaz ( <b style="color: black; background-color: rgb(160, 255, 255);">lewcid</b>@gmail.com )|
|''Source:''|http://tw.<b style="color: black; background-color: rgb(160, 255, 255);">lewcid</b>.org/#AnnotationsPlugin|
|''Code Repository:''|http://tw.<b style="color: black; background-color: rgb(160, 255, 255);">lewcid</b>.org/svn/plugins|
|''Version:''|2.0|
|''Date:''||
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|

!!Usage:
*{{{((text to annotate(annotation goes here)}}}
* To include the text being annotated, in the popup as a title, put {{{^}}} as the first letter of the annotation text.
** {{{((text to annotate(^annotation goes here)}}}

!!Examples:
Mouse over, the text below:
* ((banana(the best fruit in the world)))
* ((banana(^ the best fruit in the world)))

***/
// /%
config.formatters.unshift({name:"annotations",match:"\\(\\(",lookaheadRegExp:/\(\((.*?)\((\^?)((?:.|\n)*?)\)\)\)/g,handler:function(w){
this.lookaheadRegExp.lastIndex=w.matchStart;
var _2=this.lookaheadRegExp.exec(w.source);
if(_2&&_2.index==w.matchStart){
var _3=createTiddlyElement(w.output,"span",null,"annosub",_2[1]);
_3.anno=_2[3];
if(_2[2]){
_3.subject=_2[1];
}
_3.onmouseover=this.onmouseover;
_3.onmouseout=this.onmouseout;
_3.ondblclick=this.onmouseout;
w.nextMatch=_2.index+_2[0].length;
}
},onmouseover:function(e){
popup=createTiddlyElement(document.body,"div",null,"anno");
this.popup=popup;
if(this.subject){
wikify("!"+this.subject+"\n",popup);
}
wikify(this.anno,popup);
addClass(this,"annosubover");
Popup.place(this,popup,{x:25,y:7});
},onmouseout:function(e){
removeNode(this.popup);
this.popup=null;
removeClass(this,"annosubover");
}});
setStylesheet(".anno{position:absolute;border:2px solid #000;background-color:#DFDFFF; color:#000;padding:0.5em;max-width:15em;width:expression(document.body.clientWidth > (255/12) *parseInt(document.body.currentStyle.fontSize)?'15em':'auto' );}\n"+".anno h1, .anno h2{margin-top:0;color:#000;}\n"+".annosub{background:#ccc;}\n"+".annosubover{z-index:25; background-color:#DFDFFF;cursor:help;}\n","AnnotationStyles");


// %/
La version
TiddlyWiki CLASSIC __''2.9.0.b1''__
est disponible depuis ...
le __''@@25 août 2014@@''__
La traduction française sera prochainement disponible
----
La version
TiddlyWiki CLASSIC __''2.8.1''__
est disponible depuis ...
le __''26 juin 2013''__
La traduction française est disponible sur TiddlyWiki.fr
----
La version
TiddlyWiki __''5.0.15 beta''__
est disponible depuis ...
le __''@@21 août 2014@@''__
Pour joindre le gestionnaire du site par messagerie électronique, écrivez à :
* "[[ocalTW sur ce site|mailto:(bien sur, il faut remplacer le "arobase" et le "point") ocalTW arobase tiddlywiki point fr ]]"

Pour poser des questions et échanger, il y a plusieurs possibilités dont :
| [img[Google groupes|images/GoogleGroupes.gif]] | [img[Facebook|images/Facebook.jpeg]] | [img[LinkedIn|images/LinkedIn.png]] |
* sur le groupe de discussion ''Google Groupes'' en français : +++[&rarr; Voir les liens &darr;][&rarr; Refermer &uarr;]>
* [[Page d'accueil|http://groups.google.com/group/TiddlyWikiFR?hl=fr]] du groupe ''[[TiddlyWikiFR|http://groups.google.com/group/TiddlyWikiFR?hl=fr]]''
* Page des [[flux RSS|http://groups.google.com/group/TiddlyWikiFR/feeds?hl=fr]]
* Flux Atom 1.0 avec les [[15|http://groups.google.com/group/TiddlyWikiFR/feed/atom_v1_0_msgs.xml]] ou les [[50|http://groups.google.com/group/TiddlyWikiFR/feed/atom_v1_0_msgs.xml?num=50]] derniers messages
* Flux RSS 2.0 avec les [[15|http://groups.google.com/group/TiddlyWikiFR/feed/rss_v2_0_msgs.xml]] ou les [[50|http://groups.google.com/group/TiddlyWikiFR/feed/rss_v2_0_msgs.xml?num=50]] derniers messages
=== 
* sur ''Facebook'' : +++[&rarr; voir les groupes &darr;][&rarr; Refermer &uarr;]>
* [[TiddlyWiki|http://facebook.com/group.php?gid=2362162457]]
* [[TiddlyWiki Hackers|http://facebook.com/group.php?gid=7057025212]]
* [[Tiddlyspot Users|http://www.facebook.com/group.php?gid=19921865784]]
=== 
* sur ''LinkedIn'' : +++[&rarr; rejoindre le groupe &darr;][&rarr; Refermer &uarr;]>
* Pour rejoindre le groupe : [[TiddlyWiki Enthusiasts|http://www.linkedin.com/groupRegistration?gid=105337]]
=== 
/***
|Name|CopyTiddlerPlugin|
|Source|http://www.TiddlyTools.com/#CopyTiddlerPlugin|
|Version|3.2.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|plugin|
|Description|Quickly create a copy of any existing tiddler|
!!!Usage
<<<
The plugin automatically updates the default (shadow) ToolbarCommands definitions to insert the ''copyTiddler'' command, which will appear as ''copy'' when a tiddler is rendered.  If you are already using customized toolbar definitions, you will need to manually add the ''copyTiddler'' toolbar command to your existing ToolbarCommands tiddler, e.g.:
{{{
|EditToolbar|... copyTiddler ... |
}}}
When the ''copy'' command is selected, a new tiddler is created containing an exact copy of the current text/tags/fields, using a title of "{{{TiddlerName (n)}}}", where ''(n)'' is the next available number (starting with 1, of course).  If you copy while //editing// a tiddler, the current values displayed in the editor are used (including any changes you may have already made to those values), and the new tiddler is immediately opened for editing.

The plugin also provides a macro that allows you to embed a ''copy'' command directly in specific tiddler content:
{{{
<<copyTiddler TidderName label:"..." prompt:"...">>
}}}
where
* ''TiddlerName'' (optional)<br>specifies the //source// tiddler to be copied.  If omitted, the current containing tiddler (if any) will be copied.
* ''label:"..."'' (optional)<br>specifies text to use for the embedded link (default="copy TiddlerName")
* ''prompt:"..."'' (optional)<br>specifies mouseover 'tooltip' help text for link
//Note: to use non-default label/prompt values with the current containing tiddler, use "" for the TiddlerName//
<<<
!!!Configuration
<<<
<<option chkCopyTiddlerDate>> use date/time from existing tiddler (otherwise, use current date/time)
{{{<<option chkCopyTiddlerDate>>}}}
<<<
!!!Revisions
<<<
2010.11.30 3.2.6 use story.getTiddler()
2009.06.08 3.2.5 added option to use timestamp from source tiddler
2009.03.09 3.2.4 fixed IE-specific syntax error
2009.03.02 3.2.3 refactored code (again) to restore use of config.commands.copyTiddler.* custom settings
2009.02.13 3.2.2 in click(), fix calls to displayTiddler() to use current tiddlerElem and use getTiddlerText() to permit copying of shadow tiddler content
2009.01.30 3.2.1 fixed handling for copying field values when in edit mode
2009.01.23 3.2.0 refactored code and added {{{<<copyTiddler TiddlerName>>}}} macro
2008.12.18 3.1.4 corrected code for finding next (n) value when 'sparse' handling is in effect
2008.11.14 3.1.3 added optional 'sparse' setting (avoids 'filling in' missing numbers that may have been previously deleted)
2008.11.14 3.1.2 added optional 'zeroPad' setting
2008.11.14 3.1.1 moved hard-coded '(n)' regex into 'suffixPattern' object property so it can be customized
2008.09.26 3.1.0 changed new title generation to use '(n)' suffix instead of 'Copy of' prefix
2008.05.20 3.0.3 in handler, when copying from VIEW mode, create duplicate array from existing tags array before saving new tiddler.
2007.12.19 3.0.2 in handler, when copying from VIEW mode, duplicate custom fields before saving new tiddler.
2007.09.26 3.0.1 in handler, use findContainingTiddler(src) to get tiddlerElem (and title).  Allows 'copy' command to find correct tiddler when transcluded using {{{<<tiddler>>}}} macro or enhanced toolbar inclusion (see [[CoreTweaks]])
2007.06.28 3.0.0 complete re-write to handle custom fields and alternative view/edit templates
2007.05.17 2.1.2 use store.getTiddlerText() to retrieve tiddler content, so that SHADOW tiddlers can be copied correctly when in VIEW mode
2007.04.01 2.1.1 in copyTiddler.handler(), fix check for editor fields by ensuring that found field actually has edit=='text' attribute
2007.02.05 2.1.0 in copyTiddler.handler(), if editor fields (textfield and/or tagsfield) can't be found (i.e., tiddler is in VIEW mode, not EDIT mode), then get text/tags values from stored tiddler instead of active editor fields.  Allows use of COPY toolbar directly from VIEW mode
2006.12.12 2.0.0 completely rewritten so plugin just creates a new tiddler EDITOR with a copy of the current tiddler EDITOR contents, instead of creating the new tiddler in the STORE by copying the current tiddler values from the STORE.
2005.xx.xx 1.0.0 original version by Tim Morgan
<<<
!!!Code
***/
//{{{
version.extensions.CopyTiddlerPlugin= {major: 3, minor: 2, revision: 6, date: new Date(2010,11,30)};

// automatically tweak shadow EditTemplate to add 'copyTiddler' toolbar command (following 'cancelTiddler')
config.shadowTiddlers.ToolbarCommands=config.shadowTiddlers.ToolbarCommands.replace(/cancelTiddler/,'cancelTiddler copyTiddler');

if (config.options.chkCopyTiddlerDate===undefined) config.options.chkCopyTiddlerDate=false;

config.commands.copyTiddler = {
	text: 'copy',
	hideReadOnly: true,
	tooltip: 'Make a copy of this tiddler',
	notitle: 'this tiddler',
	prefix: '',
	suffixText: ' (%0)',
	suffixPattern: / \(([0-9]+)\)$/,
	zeroPad: 0,
	sparse: false,
	handler: function(event,src,title)
		{ return config.commands.copyTiddler.click(src,event); },
	click: function(here,ev) {
		var tiddlerElem=story.findContainingTiddler(here);
		var template=tiddlerElem?tiddlerElem.getAttribute('template'):null;
		var title=here.getAttribute('from');
		if (!title || !title.length) {
			if (!tiddlerElem) return false;
			else title=tiddlerElem.getAttribute('tiddler');
		}
		var root=title.replace(this.suffixPattern,''); // title without suffix
		// find last matching title
		var last=title;
		if (this.sparse) { // don't fill-in holes... really find LAST matching title
			var tids=store.getTiddlers('title','excludeLists');
			for (var t=0; t<tids.length; t++) if (tids[t].title.startsWith(root)) last=tids[t].title;
		}
		// get next number (increment from last matching title)
		var n=1; var match=this.suffixPattern.exec(last); if (match) n=parseInt(match[1])+1;
		var newTitle=this.prefix+root+this.suffixText.format([String.zeroPad(n,this.zeroPad)]);
		// if not sparse mode, find the next hole to fill in...
		while (store.tiddlerExists(newTitle)||story.getTiddler(newTitle))
			{ n++; newTitle=this.prefix+root+this.suffixText.format([String.zeroPad(n,this.zeroPad)]); }
		if (!story.isDirty(title)) { // if tiddler is not being EDITED
			// duplicate stored tiddler (if any)
			var text=store.getTiddlerText(title,'');
			var who=config.options.txtUserName;
			var when=new Date();
			var newtags=[]; var newfields={};
			var tid=store.getTiddler(title); if (tid) {
				if (config.options.chkCopyTiddlerDate) var when=tid.modified;
				for (var t=0; t<tid.tags.length; t++) newtags.push(tid.tags[t]);
				store.forEachField(tid,function(t,f,v){newfields[f]=v;},true);
			}
	                store.saveTiddler(newTitle,newTitle,text,who,when,newtags,newfields,true);
			story.displayTiddler(tiddlerElem,newTitle,template);
		} else {
			story.displayTiddler(tiddlerElem,newTitle,template);
			var fields=config.commands.copyTiddler.gatherFields(tiddlerElem); // get current editor fields
			var newTiddlerElem=story.getTiddler(newTitle);
			for (var f=0; f<fields.length; f++) {  // set fields in new editor
				if (fields[f].name=='title') fields[f].value=newTitle; // rename title in new tiddler
				var fieldElem=config.commands.copyTiddler.findField(newTiddlerElem,fields[f].name);
				if (fieldElem) {
					if (fieldElem.getAttribute('type')=='checkbox')
						fieldElem.checked=fields[f].value;
					else 
						fieldElem.value=fields[f].value;
				}
			}
		}
		story.focusTiddler(newTitle,'title');
		return false;
	},
	findField: function(tiddlerElem,field) {
		var inputs=tiddlerElem.getElementsByTagName('input');
		for (var i=0; i<inputs.length; i++) {
			if (inputs[i].getAttribute('type')=='checkbox' && inputs[i].field == field) return inputs[i];
			if (inputs[i].getAttribute('type')=='text' && inputs[i].getAttribute('edit') == field) return inputs[i];
		}
		var tas=tiddlerElem.getElementsByTagName('textarea');
		for (var i=0; i<tas.length; i++) if (tas[i].getAttribute('edit') == field) return tas[i];
		var sels=tiddlerElem.getElementsByTagName('select');
		for (var i=0; i<sels.length; i++) if (sels[i].getAttribute('edit') == field) return sels[i];
		return null;
	},
	gatherFields: function(tiddlerElem) { // get field names and values from current tiddler editor
		var fields=[];
		// get checkboxes and edit fields
		var inputs=tiddlerElem.getElementsByTagName('input');
		for (var i=0; i<inputs.length; i++) {
			if (inputs[i].getAttribute('type')=='checkbox')
				if (inputs[i].field) fields.push({name:inputs[i].field,value:inputs[i].checked});
			if (inputs[i].getAttribute('type')=='text')
				if (inputs[i].getAttribute('edit')) fields.push({name:inputs[i].getAttribute('edit'),value:inputs[i].value});
		}
		// get textareas (multi-line edit fields)
		var tas=tiddlerElem.getElementsByTagName('textarea');
		for (var i=0; i<tas.length; i++)
			if (tas[i].getAttribute('edit')) fields.push({name:tas[i].getAttribute('edit'),value:tas[i].value});
		// get selection lists (droplist or listbox)
		var sels=tiddlerElem.getElementsByTagName('select');
		for (var i=0; i<sels.length; i++)
			if (sels[i].getAttribute('edit')) fields.push({name:sels[i].getAttribute('edit'),value:sels[i].value});
		return fields;
	}
};
//}}}
// // MACRO DEFINITION
//{{{
config.macros.copyTiddler = {
	label: 'copy',
	prompt: 'Make a copy of %0',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var title=params.shift();
		params=paramString.parseParams('anon',null,true,false,false);
		var label	=getParam(params,'label',this.label+(title?' '+title:''));
		var prompt	=getParam(params,'prompt',this.prompt).format([title||this.notitle]);
		var b=createTiddlyButton(place,label,prompt,
			function(ev){return config.commands.copyTiddler.click(this,ev)});
		b.setAttribute('from',title||'');
	}
};
//}}}
|!Nom | !Code couleur | !Couleur |h
|Background| #fff |bgcolor(#fff): -- Background -- |
|Foreground| #000 |bgcolor(#000): @@color(white): -- Foreground -- @@ |
|Error| #f88 |bgcolor(#f88): -- Error -- |
| !Couleurs primaires |>|>|>|
|~PrimaryPale| #8cf |bgcolor(#8cf): -- ~PrimaryPale -- |
|~PrimaryLight| #18f |bgcolor(#18f): -- ~PrimaryLight -- |
|~PrimaryMid| #04b |bgcolor(#04b): @@color(white): -- ~PrimaryMid -- @@ |
|~PrimaryDark| #014 |bgcolor(#014): @@color(white): -- ~PrimaryDark- -- @@ |
| !Couleurs secondaires |>|>|>|
|~SecondaryPale| #ffc |bgcolor(#ffc): -- ~SecondaryPale -- |
|~SecondaryLight| #fe8 |bgcolor(#fe8): -- ~SecondaryLight -- |
|~SecondaryMid| #db4 |bgcolor(#db4): -- ~SecondaryMid -- |
|~SecondaryDark| #841 |bgcolor(#841): @@color(white): -- ~SecondaryDark -- @@ |
| !Couleurs tertiaires |>|>|>|
|~TertiaryPale| #eee |bgcolor(#eee): -- ~TertiaryPale -- |
|~TertiaryLight| #ccc |bgcolor(#ccc): -- ~TertiaryLight -- |
|~TertiaryMid| #999 |bgcolor(#999): -- ~TertiaryMid -- |
|~TertiaryDark| #666 |bgcolor(#666): @@color(white): -- ~TertiaryDark -- @@ |
[[Dernières Nouvelles]]
[[Quel parfum de TiddlyWiki préférez vous ? CLASSIC ou n°5 ?]]
[[Introduction]]
|wideTable|k
La dernière version ''@@2.8.1@@'' de TiddlyWiki __''Classic''__ est disponible depuis le ''26 juin 2013'' sur [[Clasic.TiddlyWiki.com|http://classic.tiddlywiki.com]]
A noter depuis le @@25 août 2014@@, une version ''2.9.1-beta1'' avec une prévision de publication d'une version 2.9.x courant septembre 2014. Elle est disponible sur [[Clasic.TiddlyWiki.com/beta|http://classic.tiddlywiki.com/beta/]]
Le site <<tiddler SiteUrl>> utilise justement cette dernière version ''2.9.1-beta1'' 

Pour les versions antérieures, voir l'[[historique des versions|TiddlyWiki Timeline]] ou les tableaux de synthèse des [[Versions]].
|La ''traduction française'' pour les versions ''2.6.x'' de ~TiddlyWiki est maintenant disponible : voir "''[[FrenchTranslationPlugin|FrenchTranslationPlugin]]''"<br><br>De façon plus générale, 4 traductions sont proposées sur ce site [[TiddlyWiki.fr|http://www.tiddlywiki.fr]] selon la version de ~TiddlyWiki utilisée :<br>- pour ~TiddlyWiki version ''2.6.x'' : voir "''[[FrenchTranslationPlugin|FrenchTranslationPlugin]]''"<br>- pour ~TiddlyWiki version ''2.5.x'' : voir "''[[FrenchTranslationPlugin-TW253|FrenchTranslationPlugin]]''"<br>- pour ~TiddlyWiki version ''2.4.x'' : voir "''[[FrenchTranslationPlugin-TW241|FrenchTranslationPlugin-TW241]]''"<br>- pour ~TiddlyWiki version ''2.3.x'' : voir "''[[FrenchTranslationPlugin-TW230|FrenchTranslationPlugin-TW230]]''"<br>Dans tous les cas, penser ''impérativement'' à ajouter "//@@systemConfig@@//" comme mot-clé.<br><br>Voir dans "''[[Téléchargement]]''" comment faire pour françiser un [[TiddlyWiki]]. |
TiddlyWiki FireFox TiddlyTools TiddlyTech HowTo $1
/***
|Name|DisableWikiLinksPlugin|
|Source|http://www.TiddlyTools.com/#DisableWikiLinksPlugin|
|Version|1.6.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|selectively disable TiddlyWiki's automatic ~WikiWord linking behavior|
This plugin allows you to disable TiddlyWiki's automatic ~WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links.  To create a tiddler link when automatic linking is disabled, you must enclose the link text within {{{[[...]]}}}.
!!!!!Usage
<<<
You can block automatic WikiWord linking behavior for any specific tiddler by ''tagging it with<<tag excludeWikiWords>>'' (see configuration below) or, check a plugin option to disable automatic WikiWord links to non-existing tiddler titles, while still linking WikiWords that correspond to existing tiddlers titles or shadow tiddler titles.  You can also block specific selected WikiWords from being automatically linked by listing them in [[DisableWikiLinksList]] (see configuration below), separated by whitespace.  This tiddler is optional and, when present, causes the listed words to always be excluded, even if automatic linking of other WikiWords is being permitted.  

Note: WikiWords contained in default ''shadow'' tiddlers will be automatically linked unless you select an additional checkbox option lets you disable these automatic links as well, though this is not recommended, since it can make it more difficult to access some TiddlyWiki standard default content (such as AdvancedOptions or SideBarTabs)
<<<
!!!!!Configuration
<<<
<<option chkDisableWikiLinks>> Disable ALL automatic WikiWord tiddler links
<<option chkAllowLinksFromShadowTiddlers>> ... except for WikiWords //contained in// shadow tiddlers
<<option chkDisableNonExistingWikiLinks>> Disable automatic WikiWord links for non-existing tiddlers
Disable automatic WikiWord links for words listed in: <<option txtDisableWikiLinksList>>
Disable automatic WikiWord links for tiddlers tagged with: <<option txtDisableWikiLinksTag>>
<<<
!!!!!Revisions
<<<
2008.07.22 [1.6.0] hijack tiddler changed() method to filter disabled wiki words from internal links[] array (so they won't appear in the missing tiddlers list)
2007.06.09 [1.5.0] added configurable txtDisableWikiLinksTag (default value: "excludeWikiWords") to allows selective disabling of automatic WikiWord links for any tiddler tagged with that value.
2006.12.31 [1.4.0] in formatter, test for chkDisableNonExistingWikiLinks
2006.12.09 [1.3.0] in formatter, test for excluded wiki words specified in DisableWikiLinksList
2006.12.09 [1.2.2] fix logic in autoLinkWikiWords() (was allowing links TO shadow tiddlers, even when chkDisableWikiLinks is TRUE).  
2006.12.09 [1.2.1] revised logic for handling links in shadow content
2006.12.08 [1.2.0] added hijack of Tiddler.prototype.autoLinkWikiWords so regular (non-bracketed) WikiWords won't be added to the missing list
2006.05.24 [1.1.0] added option to NOT bypass automatic wikiword links when displaying default shadow content (default is to auto-link shadow content)
2006.02.05 [1.0.1] wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.09 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.DisableWikiLinksPlugin= {major: 1, minor: 6, revision: 0, date: new Date(2008,7,22)};

if (config.options.chkDisableNonExistingWikiLinks==undefined) config.options.chkDisableNonExistingWikiLinks= false;
if (config.options.chkDisableWikiLinks==undefined) config.options.chkDisableWikiLinks=false;
if (config.options.txtDisableWikiLinksList==undefined) config.options.txtDisableWikiLinksList="DisableWikiLinksList";
if (config.options.chkAllowLinksFromShadowTiddlers==undefined) config.options.chkAllowLinksFromShadowTiddlers=true;
if (config.options.txtDisableWikiLinksTag==undefined) config.options.txtDisableWikiLinksTag="excludeWikiWords";

// find the formatter for wikiLink and replace handler with 'pass-thru' rendering
initDisableWikiLinksFormatter();
function initDisableWikiLinksFormatter() {
	for (var i=0; i<config.formatters.length && config.formatters[i].name!="wikiLink"; i++);
	config.formatters[i].coreHandler=config.formatters[i].handler;
	config.formatters[i].handler=function(w) {
		// supress any leading "~" (if present)
		var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;
		var title=w.matchText.substr(skip);
		var exists=store.tiddlerExists(title);
		var inShadow=w.tiddler && store.isShadowTiddler(w.tiddler.title);
		// check for excluded Tiddler
		if (w.tiddler && w.tiddler.isTagged(config.options.txtDisableWikiLinksTag))
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// check for specific excluded wiki words
		var t=store.getTiddlerText(config.options.txtDisableWikiLinksList);
		if (t && t.length && t.indexOf(w.matchText)!=-1)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// if not disabling links from shadows (default setting)
		if (config.options.chkAllowLinksFromShadowTiddlers && inShadow)
			return this.coreHandler(w);
		// check for non-existing non-shadow tiddler
		if (config.options.chkDisableNonExistingWikiLinks && !exists)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// if not enabled, just do standard WikiWord link formatting
		if (!config.options.chkDisableWikiLinks)
			return this.coreHandler(w);
		// just return text without linking
		w.outputText(w.output,w.matchStart+skip,w.nextMatch)
	}
}

Tiddler.prototype.coreAutoLinkWikiWords = Tiddler.prototype.autoLinkWikiWords;
Tiddler.prototype.autoLinkWikiWords = function()
{
	// if all automatic links are not disabled, just return results from core function
	if (!config.options.chkDisableWikiLinks)
		return this.coreAutoLinkWikiWords.apply(this,arguments);
	return false;
}

Tiddler.prototype.disableWikiLinks_changed = Tiddler.prototype.changed;
Tiddler.prototype.changed = function()
{
	this.disableWikiLinks_changed.apply(this,arguments);
	// remove excluded wiki words from links array
	var t=store.getTiddlerText(config.options.txtDisableWikiLinksList,"").readBracketedList();
	if (t.length) for (var i=0; i<t.length; i++)
		if (this.links.contains(t[i]))
			this.links.splice(this.links.indexOf(t[i]),1);
};
//}}}
Hello!

Although we do speak English fluently, this Web site is dedicated to French speaking TiddlyWiki fans.

To go to the original TiddlyWiki Web site, please click [[here|http://www.TiddlyWiki.com]] or on this icon [img[favicon.ico][http://www.TiddlyWiki.com]]
<<tiddler Refonte>>
La dernière version connue à ce jour de l'extension TiddlySnip pour Firefox est [[içi|tiddlySnip121beta-cbr4plus.zip]]. Il suffit de la télécharger sur votre poste de travail, puis de modifier son extension de ".zip", en "''.xpi''".
| Ce site est privé et est géré par [[ocalTW]] | !Disclaimer | This private Web site is managed by [[ocalTW]] |
| Le site TiddlyWiki original est| ''[[www.tiddlywiki.com|http://www.tiddlywiki.com]]'' |is the genuine TiddlyWiki |
/***
|''Name:''|FrenchTranslationPlugin|
|''Description:''|Translation of TiddlyWiki into French|
|''Author:''|ocalTW ( FrenchTranslationPlugin (at) TiddlyWiki (dot) fr )|
|''Source:''|http://www.tiddlywiki.fr#FrenchTranslationPlugin |
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/association/locales/core/fr/locale.fr.js |
|''Version:''|0.4.3|
|''Date:''|Jan 15, 2011|
|''Comments:''|Mail at http://groups.google.com/group/TiddlyWikiFR |
|''History:''|Previous French translations were performed by:<br>* v2.1.3 by Jacques Turbé<br>* v2.2 by ~BidiX<br>* v2.3.x & v2.4.x by ocalTW<br>* v2.5.x by ocalTW and Nicolas Syssoieff<br>* v2.6.x by ocalTW |
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]] |
|''~CoreVersion:''|2.6.0|
***/

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

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

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

if (config.options.txtUserName == 'YourName') // do not translate this line, but do translate the next line
    merge(config.options,{txtUserName: "VotreNom"});

merge(config.tasks,{
    save: {text: "enregistrer", tooltip: "Enregistrer les modifications dans ce TiddlyWiki", action: saveChanges},
    sync: {text: "synchroniser", tooltip: "Synchroniser les modifications avec d'autres fichiers ou serveurs TiddlyWiki", content: '<<sync>>'},
    importTask: {text: "importer", tooltip: "Importer des tiddlers et des plugins depuis d'autres fichiers ou serveurs TiddlyWiki", content: '<<importTiddlers>>'},
    tweak: {text: "configurer", tooltip: "Configurer l'apparence et le comportement de TiddlyWiki", content: '<<options>>'},
    upgrade: {text: "mettre à jour", tooltip: "Mettre à jour le noyau de TiddlyWiki", content: '<<upgrade>>'},
    plugins: {text: "plugins", tooltip: "Gérer les plugins installés", content: '<<plugins>>'}
});

// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
    txtUserName: "Nom d'utilisateur",
    chkRegExpSearch: "Utiliser les expressions régulières dans les recherches",
    chkCaseSensitiveSearch: "Recherche sensible à la casse",
    chkIncrementalSearch: "Recherche incrémentale touche par touche",
    chkAnimate: "Activer les animations",
    chkSaveBackups: "Générer un backup à chaque enregistrement",
    chkAutoSave: "Enregistrer automatiquement les modifications",
    chkGenerateAnRssFeed: "Générer un flux RSS à chaque enregistrement",
    chkSaveEmptyTemplate: "Générer un modèle vide empty.html à chaque enregistrement",
    chkOpenInNewWindow: "Ouvrir les liens externes dans une nouvelle fenêtre",
    chkToggleLinks: "Cliquer sur les liens des tiddlers déjà ouverts les ferme",
    chkHttpReadOnly: "Masquer les fonctions d'édition lors des consultations par HTTP",
    chkForceMinorUpdate: "Ne mettre à jour ni le nom d'utilisateur, ni la date lors de l'édition des tiddlers",
    chkConfirmDelete: "Demander une confirmation avant de supprimer un tiddler",
    chkInsertTabs: "Utiliser la touche 'tab' pour insérer une tabulation au lieu de changer de champ",
    txtBackupFolder: "Nom du répertoire à utiliser pour les backups",
    txtMaxEditRows: "Nombre maximum de lignes dans les zones d'édition",
    txtTheme: "Nom du thème à utiliser",
    txtFileSystemCharSet: "Jeu de caractères à utiliser pour l'enregistrement (uniquement pour Firefox/Mozilla)"});

merge(config.messages,{
    customConfigError: "Problèmes rencontrés pendant le chargement des plugins. Consulter 'PluginManager' pour plus de détails",
    pluginError: "Erreur : %0",
    pluginDisabled: "Plugin non éxécuté car désactivé par le label 'systemConfigDisable'",
    pluginForced: "Plugin exécuté de façon forcée par l'utilisation du label 'systemConfigForce'",
    pluginVersionError: "Plugin non éxécuté car il requiert une version plus récente de TiddlyWiki",
    nothingSelected: "Vous devez d'abord sélectionner un ou plusieurs items",
    savedSnapshotError: "Ce fichier TiddlyWiki ne semble pas être conforme ou n'a pas été enregistré correctement. Consulter http://www.tiddlywiki.com/#Download pour de plus amples détails",
    subtitleUnknown: "(inconnu)",
    undefinedTiddlerToolTip: "Le tiddler '%0' n'existe pas encore",
    shadowedTiddlerToolTip: "Le tiddler '%0' n'existe pas encore, mais a déjà un contenu par défaut",
    tiddlerLinkTooltip: "%0 - %1, %2",
    externalLinkTooltip: "Lien externe vers %0",
    noTags: "Il n'y a pas de tiddlers avec des tags",
    notFileUrlError: "Vous devez enregistrer ce TiddlyWiki dans un fichier avant de pouvoir enregistrer vos modifications",
    cantSaveError: "Impossible d'enregistrer les modifications.\n- Soit votre navigateur ne supporte pas la fonction (Firefox, Internet Explorer, Safari et Opera fonctionnent s'ils sont configurés correctement)\n- Soit le chemin d'accès à votre fichier TiddlyWiki contient des caractères illégaux\n- Soit le fichier TiddlyWiki a été déplacé ou renommé",
    invalidFileError: "Le fichier original '%0' ne semble pas être un TiddlyWiki valide",
    backupSaved: "Backup enregistré",
    backupFailed: "Echec de l'enregistrement du fichier backup",
    rssSaved: "Flux RSS enregistré",
    rssFailed: "Echec de l'enregistrement du fichier de flux RSS",
    emptySaved: "Modèle vide 'empty.html' enregistré",
    emptyFailed: "Echec de l'enregistrement du modèle TiddlyWiki vide 'empty.html'",
    mainSaved: "Fichier TiddlyWiki enregistré",
    mainFailed: "Echec de l'enregistrement du fichier TiddlyWiki. Vos modifications ne sont pas enregistrées",
    macroError: "Erreur dans la macro <<\%0>>",
    macroErrorDetails: "Erreur pendant l'éxécution de la macro <<\%0>>:\n%1",
    missingMacro: "Macro non trouvée",
    overwriteWarning: "Un tiddler nommé '%0' existe déjà. Cliquer sur OK pour l'écraser",
    unsavedChangesWarning: "ATTENTION! Certaines modifications ne sont pas enregistrées dans le fichier TiddlyWiki\n\nCliquer sur 'OK' pour les enregistrer\nCliquer sur 'ANNULER' pour les ignorer",
    confirmExit: "--------------------------------\n\nCertaines modifications ne sont pas enregistrées dans TiddlyWiki. Si vous continuez ces modifications seront perdues\n\n--------------------------------",
    saveInstructions: "Enregistrer les Modifications",
    unsupportedTWFormat: "Format de TiddlyWiki non supporté '%0'",
    tiddlerSaveError: "Erreur pendant l'enregistrement du tiddler '%0'",
    tiddlerLoadError: "Erreur pendant le chargement du tiddler '%0'",
    wrongSaveFormat: "Impossible d'enregistrer avec le format de stockage '%0'. Utiliser un format standard pour enregistrer.",
    invalidFieldName: "Nom de champ invalide %0",
    fieldCannotBeChanged: "Le champ '%0' ne peut pas être modifié",
    loadingMissingTiddler: "Tentative de récupération du tiddler '%0' à partir du serveur '%1' à :\n\n'%2' dans l'espace de travail '%3'",
    upgradeDone: "La mise à jour en version %0 est effectuée\n\nCliquer sur OK pour recharger la nouvelle version de TiddlyWiki",
    invalidCookie: "Cookie non valide '%0'"});

merge(config.messages.messageClose,{
    text: "fermer",
    tooltip: "fermer la zone de messages"});

config.messages.backstage = {
    open: {text: "barre d'outils", tooltip: "Ouvrir la barre d'outils pour effectuer des tâches de maintenance : synchronisation, export, import, mise à jour, gestion des plugins"},
    close: {text: "fermer", tooltip: "Fermer la barre d'outils"},
    prompt: "Outils : ",
    decal: {
        edit: {text: "éditer", tooltip: "Editer le tiddler '%0'"}
    }
};

config.messages.listView = {
    tiddlerTooltip: "Cliquer pour une vue complète de ce tiddler",
    previewUnavailable: "(aperçu non disponible)"
};

config.messages.dates.months = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre","décembre"];
config.messages.dates.days = ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"];
config.messages.dates.shortMonths = ["jan.", "fev.", "mar.", "avr.", "mai", "juin", "juil", "aou.", "sep.", "oct.", "nov.", "dec."];
config.messages.dates.shortDays = ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"];
// suffixes for dates, eg "1st","2nd","3rd"..."30th","31st"
config.messages.dates.daySuffixes = ["er","","","","","","","","","",
        "","","","","","","","","","",
        "","","","","","","","","","",
        ""];
config.messages.dates.am = "matin";
config.messages.dates.pm = "après-midi";

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

merge(config.views.wikified.tag,{
    labelNoTags: "pas de label",
    labelTags: "labels : ",
    openTag: "Ouvrir le label '%0'",
    tooltip: "Afficher les tiddlers ayant pour label '%0'",
    openAllText: "Tout ouvrir",
    openAllTooltip: "Ouvrir tous ces tiddlers",
    popupNone: "Pas d'autres tiddlers avec le label '%0'"});

merge(config.views.wikified,{
    defaultText: "Le tiddler '%0' n'existe pas encore. Double-cliquer pour le créer",
    defaultModifier: "(manquant)",
    shadowModifier: "(tiddler masqué par défaut)",
    dateFormat: "DD MMM YYYY", // Utilisé pour changer le format de la date (ici : "YYYY MMM DD"), ne pas changer les lettres D (jour), M (mois) ou Y (année)
    createdPrompt: "créé le"});

merge(config.views.editor,{
    tagPrompt: "Entrer des labels séparés par des espaces, [[entre double crochets]] si nécessaire, ou ajouter des labels existants :",
    defaultText: "Entrer le texte pour '%0'"});

merge(config.views.editor.tagChooser,{
    text: "labels",
    tooltip: "Sélectionner des labels existants à ajouter à ce tiddler",
    popupNone: "Aucun label défini",
    tagTooltip: "Ajouter le label '%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: "recherche",
    prompt: "Rechercher dans ce TiddlyWiki",
    accessKey: "R",
    successMsg: "%0 tiddlers trouvés contenant %1",
    failureMsg: "Aucun tiddler ne contient %0"});

merge(config.macros.tagging,{
	label: "avec ce label : ",
	labelNotTag: "aucun tiddler avec ce label",
	tooltip: "Liste des tiddlers avec le label '%0'"});

merge(config.macros.timeline,{
    dateFormat: "DD MMM YYYY"});// Utilisé pour changer le format de la date (ici : "DD MMM YYYY"), ne pas changer les lettres D (jour/day), M (mois/month) ou Y (année/year)

merge(config.macros.allTags,{
    tooltip: "Afficher les tiddlers avec le label '%0'",
    noTags: "Aucun tiddler n'a de label"});

config.macros.list.all.prompt = "Tous les tiddlers classés par ordre alphabétique";
config.macros.list.missing.prompt = "Tiddlers pointés par un lien mais non créés";
config.macros.list.orphans.prompt = "Tiddlers orphelins qui ne sont référencés par aucun autre tiddler";
config.macros.list.shadowed.prompt = "Tiddlers masqués avec contenu par défaut";
config.macros.list.touched.prompt = "Tiddlers modifiés localement";

merge(config.macros.closeAll,{
    label: "fermer tout",
    prompt: "Fermer tous les tiddlers affichés (sauf ceux en cours d'édition)"});

merge(config.macros.permaview,{
    label: "permalien",
    prompt: "Lien vers une URL contenant tous les tiddlers affichés actuellement"});

merge(config.macros.saveChanges,{
    label: "enregistrer",
    prompt: "Enregistrer tous les tiddlers du TiddlyWiki",
    accessKey: "S"});

merge(config.macros.newTiddler,{
    label: "nouveau tiddler",
    prompt: "Créer un nouveau tiddler",
    title: "Nouveau Tiddler",
    accessKey: "N"});

merge(config.macros.newJournal,{
    label: "nouveau journal",
    prompt: "Créer un nouveau tiddler avec la date et l'heure",
    accessKey: "J"});

merge(config.macros.options,{
    wizardTitle: "Réglage des options avancées",
    step1Title: "Ces options sont enregistrées dans des cookies dans votre navigateur",
    step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Afficher les options inconnues</input>",
    unknownDescription: "//(inconnu)//",
    listViewTemplate: {
        columns: [
            {name: 'Option', field: 'option', title: "Option", type: 'String'},
            {name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
            {name: 'Name', field: 'name', title: "Nom", type: 'String'}
            ],
        rowClasses: [
            {className: 'lowlight', field: 'lowlight'}
            ]}
    });

merge(config.macros.plugins,{
    wizardTitle: "Gérer les plugins",
    step1Title: "Plugins actifs et chargés actuellement",
    step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
    skippedText: "(Ce plugin n'a pas été éxécuté car il a été ajouté après le chargement de ce fichier TiddlyWiki)",
    noPluginText: "Aucun plugin n'est installé",
    confirmDeleteText: "Etes-vous sûr de vouloir effacer ce(s) plugin(s) :\n\n%0",
    removeLabel: "supprimer le label 'systemConfig'",
    removePrompt: "Supprimer le label 'systemConfig'",
    deleteLabel: "supprimer",
    deletePrompt: "Supprimer définitivement ces tiddlers ",
    listViewTemplate: {
        columns: [
            {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
            {name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
            {name: 'Description', field: 'Description', title: "Description", type: 'String'},
            {name: 'Version', field: 'Version', title: "Version", type: 'String'},
            {name: 'Size', field: 'size', tiddlerLink: 'size', title: "Taille", type: 'Size'},
            {name: 'Forced', field: 'forced', title: "Forcé", tag: 'systemConfigForce', type: 'TagCheckbox'},
            {name: 'Disabled', field: 'disabled', title: "Désactivé", tag: 'systemConfigDisable', type: 'TagCheckbox'},
            {name: 'Executed', field: 'executed', title: "Chargé", type: 'Boolean', trueText: "Yes", falseText: "No"},
            {name: 'Startup Time', field: 'startupTime', title: "Temps de démarrage", type: 'String'},
            {name: 'Error', field: 'error', title: "Etat", type: 'Boolean', trueText: "Error", falseText: "OK"},
            {name: 'Log', field: 'log', title: "Log", type: 'StringList'}
            ],
        rowClasses: [
            {className: 'error', field: 'error'},
            {className: 'warning', field: 'warning'}
            ]}
    });

merge(config.macros.toolbar,{
    moreLabel: "(plus)",
    morePrompt: "Afficher les commandes supplémentaires",
    lessLabel: "(moins)",
    lessPrompt: "Masquer les commandes supplémentaires",
    separator: "|"
    });

merge(config.macros.refreshDisplay,{
    label: "actualiser",
    prompt: "Actualiser tout le TiddlyWiki"
    });

merge(config.macros.importTiddlers,{
    readOnlyWarning: "Impossible d'importer dans un TiddlyWiki en lecture seule. Ouvrir le TiddlyWiki depuis une URL 'file://'",
    wizardTitle: "Importer des tiddlers depuis un autre fichier ou serveur",
    step1Title: "Etape 1: Localiser le serveur ou le fichier TiddlyWiki",
    step1Html: "Spécifier le type de serveur : <select name='selTypes'><option value=''>Choisir...</option></select><br>Entrer l'URL ou le chemin ici : <input type='text' size=50 name='txtPath'><br>...ou rechercher un fichier en local : <input type='file' size=50 name='txtBrowse'><br><hr>...ou sélectionner une source pré-définie : <select name='selFeeds'><option value=''>Choisir...</option></select>",
    openLabel: "ouvrir",
    openPrompt: "Ouvrir la connexion vers ce fichier ou ce serveur",
    openError: "Problèmes pour récupérer le fichier TiddlyWiki", // OBSOLETE AVEC LA VERSION 2.6, CONSERVE POUR HISTORIQUE
    statusOpenHost: "Accès à l'hôte",
    statusGetWorkspaceList: "Récupération de la liste des espaces de travail",
    step2Title: "Etape 2: Choisir l'espace de travail",
    step2Html: "Entrer le nom de l'espace de travail : <input type='text' size=50 name='txtWorkspace'><br>...ou sélectionner un espace de travail : <select name='selWorkspace'><option value=''>Choisir...</option></select>",
    cancelLabel: "annuler",
    cancelPrompt: "Annuler l'import",
    statusOpenWorkspace: "Ouverture de l'espace de travail",
    statusGetTiddlerList: "Récupération de la liste des tiddlers disponibles",
    errorGettingTiddlerList: "Erreur pendant la récupération des tiddlers, cliquer sur 'Annuler' pour ré-essayer",
    step3Title: "Etape 3: Choisir les tiddlers à importer",
    step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Lier ces tiddlers à ce serveur pour pouvoir synchroniser les modifications ultérieures</input><br><input type='checkbox' name='chkSave'>Enregistrer les détails de ce serveur dans un tiddler 'systemServer' nommé : </input> <input type='text' size=25 name='txtSaveTiddler'>",
    importLabel: "importer",
    importPrompt: "Importer ces tiddlers",
    confirmOverwriteText: "Etes-vous sûr de vouloir remplacer ces tiddlers :\n\n%0",
    step4Title: "Etape 4: Import de %0 tiddler(s)",
    step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
    doneLabel: "terminé",
    donePrompt: "Fermer l'assistant",
    statusDoingImport: "Import des tiddlers en cours",
    statusDoneImport: "Tous les tiddlers ont été importés",
    systemServerNamePattern: "%2 sur %1",
    systemServerNamePatternNoWorkspace: "%1",
    confirmOverwriteSaveTiddler: "Le tiddler '%0' existe déjà. Cliquer sur 'OK' pour le remplacer avec les détails de ce serveur, ou sur 'Annuler' pour le conserver",
    serverSaveTemplate: "|''Type:''|%0|\n|''URL:''|%1|\n|''Espace de travail:''|%2|\n\nCe tiddler a été créé automatiquement pour enregistrer les détails de ce serveur",
    serverSaveModifier: "(Système)",
    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: "Taille", type: 'Size'},
            {name: 'Tags', field: 'tags', title: "Labels", type: 'Tags'}
            ],
        rowClasses: [
            ]}
    });

merge(config.macros.upgrade,{
    wizardTitle: "Mettre à jour le noyau de TiddlyWiki",
    step1Title: "Mettre à jour ou réparer ce TiddlyWiki avec la dernière version",
    step1Html: "Vous allez faire une mise à jour du noyau de TiddlyWiki à la dernière version (depuis <a href='%0' class='externalLink' target='_blank'>%1</a>). Votre contenu sera préservé après la mise à jour.<br><br>Les mise à jour du noyau peuvent interférer avec d'anciens plugins. Si vous rencontrez des problèmes avec le TiddlyWiki après la mise à jour, consulter <a href='http://www.tiddlywiki.org/wiki/CoreUpgrades' class='externalLink' target='_blank'>http://www.tiddlywiki.org/wiki/CoreUpgrades</a>",
    errorCantUpgrade: "Impossible de mettre à jour ce TiddlyWiki. La mise à jour n'est possible que sur des fichiers stockés sur un disque local",
    errorNotSaved: "Enregistrer les changements avant  pouvoir réaliser la mise à jour",
    step2Title: "Confirmer les détails de la mise à jour",
    step2Html_downgrade: "Vous êtes sur le point de faire un retour arrière à la version de TiddlyWiki %0 depuis la version %1.<br><br>Le retour arrière vers une version antérieure du noyau n'est pas recommandée",
    step2Html_restore: "Ce TiddlyWiki semble déjà utiliser la dernière version disponible du noyau (%0).<br><br>Vous pouvez quand même continuer la mise à jour pour vous assurer que le noyau n'a été ni corrompu ni endommagé",
    step2Html_upgrade: "Vous êtes sur le point de faire la mise à jour vers TiddlyWiki en version %0 depuis la version %1",
    upgradeLabel: "mettre à jour",
    upgradePrompt: "Préparation à la mise à jour",
    statusPreparingBackup: "Préparation du backup",
    statusSavingBackup: "Enregistrement du fichier de backup",
    errorSavingBackup: "Problème pour enregistrer le fichier de backup",
    statusLoadingCore: "Chargement du noyau",
    errorLoadingCore: "Erreur de chargement du noyau",
    errorCoreFormat: "Erreur avec le nouveau noyau",
    statusSavingCore: "Enregistrement du nouveau noyau",
    statusReloadingCore: "Rechargement du nouveau noyau",
    startLabel: "démarrer",
    startPrompt: "Démarrer la mise à jour",
    cancelLabel: "annuler",
    cancelPrompt: "Annuler la mise à jour",
    step3Title: "Mise à jour annulée",
    step3Html: "Vous avez annulé la mise à jour"
    });

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: "Type de serveur", type: 'String'},
            {name: 'Server Host', field: 'serverHost', title: "Hôte serveur", type: 'String'},
            {name: 'Server Workspace', field: 'serverWorkspace', title: "Espace de travail du serveur", type: 'String'},
            {name: 'Status', field: 'status', title: "Etat de la synchronisation", type: 'String'},
            {name: 'Server URL', field: 'serverUrl', title: "URL du serveur", text: "View", type: 'Link'}
            ],
        rowClasses: [
            ],
        buttons: [
            {caption: "Synchroniser ces tiddlers", name: 'sync'}
            ]},
    wizardTitle: "Synchroniser avec des serveurs et fichiers externes",
    step1Title: "Choisir les tiddlers à synchroniser",
    step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
    syncLabel: "synchroniser",
    syncPrompt: "Synchroniser ces tiddlers",
    hasChanged: "Modifié pendant la déconnexion",
    hasNotChanged: "Non modifié pendant la déconnexion",
    syncStatusList: {
        none: {text: "...", color: "transparent", display:null},
        changedServer: {text: "Modifié sur le serveur", color: '#8080ff', display:null},
        changedLocally: {text: "Modifié pendant la déconnexion", color: '#80ff80', display:null},
        changedBoth: {text: "Changé pendant la déconnexion et sur le serveur", color: '#ff8080', display:null},
        notFound: {text: "Introuvable sur le serveur", color: '#ffff80', display:null},
        putToServer: {text: "Mise à jour enregistrée sur le serveur", color: '#ff80ff', display:null},
        gotFromServer: {text: "Mise à jour récupérée depuis le serveur", color: '#80ffff', display:null}
        }
    });

merge(config.commands.closeTiddler,{
    text: "fermer",
    tooltip: "Fermer ce tiddler"});

merge(config.commands.closeOthers,{
    text: "isoler",
    tooltip: "Fermer tous les autres tiddlers"});

merge(config.commands.editTiddler,{
    text: "éditer",
    tooltip: "Editer ce tiddler",
    readOnlyText: "voir",
    readOnlyTooltip: "Afficher la source de ce tiddler"});

merge(config.commands.saveTiddler,{
    text: "valider",
    tooltip: "Confirmer les modifications effectuées sur ce tiddler"});

merge(config.commands.cancelTiddler,{
    text: "annuler",
    tooltip: "Annuler les modifications de ce tiddler",
    warning: "Etes-vous sûr de vouloir abandonner les modifications de '%0'?",
    readOnlyText: "retour",
    readOnlyTooltip: "Retour à l'affichage normal de ce tiddler"});

merge(config.commands.deleteTiddler,{
    text: "supprimer",
    tooltip: "Supprimer ce tiddler",
    warning: "Confirmez-vous la suppression de '%0'?"});

merge(config.commands.permalink,{
    text: "permalien",
    tooltip: "Permalien de ce tiddler"});

merge(config.commands.references,{
    text: "références",
    tooltip: "Afficher les tiddlers qui font référence à ce tiddler",
    popupNone: "Aucune référence"});

merge(config.commands.jump,{
    text: "atteindre",
    tooltip: "Atteindre un autre tiddler ouvert dans ce document"});

merge(config.commands.syncing,{
    text: "synchronisation",
    tooltip: "Contrôler la synchronisation de ce tiddler avec un serveur ou un fichier externe",
    currentlySyncing: "<div>Actuellement synchronisé via <span class='popupHighlight'>'%0'</span> vers :</"+"div><div>host: <span class='popupHighlight'>%1</span></"+"div><div>workspace: <span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
    notCurrentlySyncing: "Pas de synchronisation",
    captionUnSync: "Interrompre la synchronisation de ce tiddler",
    chooseServer: "Synchroniser ce tiddler avec un autre serveur :",
    currServerMarker: "\u25cf ",
    notCurrServerMarker: "  "});

merge(config.commands.fields,{
    text: "champs",
    tooltip: "Afficher les champs supplémentaires de ce tiddler",
    emptyText: "Il n'y a pas de champs supplémentaires pour ce tiddler",
    listViewTemplate: {
        columns: [
            {name: 'Field', field: 'field', title: "Champs", type: 'String'},
            {name: 'Value', field: 'value', title: "Valeur", type: 'String'}
            ],
        rowClasses: [
            ],
        buttons: [
            ]}});

merge(config.shadowTiddlers,{
    DefaultTiddlers: "[[PourCommencer]]",
    MainMenu: "[[PourCommencer]]\n\n\n^^~TiddlyWiki version <<version>>\n© 2010 [[UnaMesa|http://www.unamesa.org/]]^^",
    PourCommencer: "Pour bien commencer avec un TiddlyWiki vide, vous devez modifier les tiddlers suivants :\n* SiteTitle & SiteSubtitle: Le titre et le sous-titre du site, visibles ci-dessus (après enregistrement, ils apparaîtront également dans la barre de titre du navigateur)\n* MainMenu: Le menu (généralement à gauche)\n* DefaultTiddlers: Contient le nom des tiddlers que vous souhaitez ouvrir automatiquement au chargement de votre TiddlyWiki\nVous devez également entrer votre nom d'utilisateur pour signer vos modifications : <<option txtUserName>>",
    TranslatedGettingStarted: "Pour bien commencer avec un TiddlyWiki vide, vous devez modifier les tiddlers suivants :\n* SiteTitle & SiteSubtitle: Le titre et le sous-titre du site, visibles ci-dessus (après enregistrement, ils apparaîtront également dans la barre de titre du navigateur)\n* MainMenu: Le menu (généralement à gauche)\n* DefaultTiddlers: Contient le nom des tiddlers que vous souhaitez ouvrir automatiquement au chargement de votre TiddlyWiki\nVous devez également entrer votre nom d'utilisateur pour signer vos modifications : <<option txtUserName>>",// AJOUT PAR MESURE CONSERVATOIRE
    SiteTitle: "Mon TiddlyWiki",
    SiteSubtitle: "bloc-notes, organiseur personnel interactif, et bien d'autres choses encore ...",
    SiteUrl: "",
    OptionsPanel: "Les options de configuration pour adapter votre TiddlyWiki sont enregistrées dans votre navigateur\n\nVotre nom d'utilisateur pour signer vos modifications. Ecrivez-le comme un WikiWord (ex PierreDupont)\n<<option txtUserName>>\n\n<<option chkSaveBackups>> Enregistrer backups\n<<option chkAutoSave>> Enregistrement auto\n<<option chkRegExpSearch>> Recherche avec regexp\n<<option chkCaseSensitiveSearch>> Recherche sensible à la casse\n<<option chkAnimate>> Activer animations\n\n----\nVoir aussi [[OptionsAvancées|AdvancedOptions]]",
    SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options \u00bb" "Modifier les options avancées de TiddlyWiki">>',
    SideBarTabs: '<<tabs txtMainTab "Chrono" "Affichage chronologique" TabTimeline "Tous" "Tous les tiddlers" TabAll "Labels" "Tous les labels" TabTags "Plus" "Autres listes" TabMore>>',
    TabMore: '<<tabs txtMoreTab "Manquants" "Tiddlers manquants" TabMoreMissing "Orphelins" "Tiddlers orphelins" TabMoreOrphans "Masqués" "Tiddlers masqués" TabMoreShadowed>>'
    });

merge(config.annotations,{
    AdvancedOptions: "Ce tiddler masqué permet d'accéder à de nombreuses options avancées",
    ColorPalette: "Les valeurs de ce tiddler masqué déterminent la palette de couleur de l'interface utilisateur de ce ~TiddlyWiki",
    DefaultTiddlers: "Les tiddlers listés dans ce tiddler masqué seront automatiquement affichés à l'ouverture de ce ~TiddlyWiki",
    EditTemplate: "Le gabarit HTML de ce tiddler masqué détermine l'apparence d'un tiddler en mode édition",
    GettingStarted: "Ce tiddler masqué contient des instructions d'utilisation basiques",
    ImportTiddlers: "Ce tiddler masqué permet d'accéder au fonctions d'import des tiddlers",
    MainMenu: "Ce tiddler masqué contient le contenu du menu principal situé dans la colonne de gauche du TiddlyWiki",
    MarkupPreHead: "Ce tiddler est inséré en haut de la section <head> du fichier TiddlyWiki",
    MarkupPostHead: "Ce tiddler est inséré en bas de la section <head> du fichier TiddlyWiki",
    MarkupPreBody: "Ce tiddler est inséré en haut de la section <body> du fichier TiddlyWiki",
    MarkupPostBody: "Ce tiddler est inséré en haut de la section <body> du fichier TiddlyWiki immédiatement après le bloc de script",
    OptionsPanel: "Ce tiddler masqué contient le menu déroulant d'options de la colonne de droite du TiddlyWiki",
    PageTemplate: "Le gabarit HTML de ce tiddler masqué détermine l'apparence complète du TiddlyWiki",
    PluginManager: "Ce tiddler masqué permet d'accéder au gestionnaire de plugins",
    SideBarOptions: "Ce tiddler masqué contient le menu d'options de la colonne de droite du TiddlyWiki",
    SideBarTabs: "Ce tiddler masqué contient le menu en onglets de la colonne de droite du TiddlyWiki",
    SiteSubtitle: "Ce tiddler masqué contient la deuxième partie du titre de la page",
    SiteTitle: "Ce tiddler masqué contient la première partie du titre de la page",
    SiteUrl: "Ce tiddler masqué doit contenir l'URL complète du site utilisée pour la publication",
    StyleSheetColors: "Ce tiddler masqué contient les définitions de style CSS liées à la couleur des différents éléments des pages. 'NE PAS EDITER CE TIDDLER', faire des modifications dans le tiddler masqué StyleSheet",
    StyleSheet: "Ce tiddler peut contenir des définitions de style CSS personnalisées",
    StyleSheetLayout: "Ce tiddler masqué contient les définitions de style CSS liées à la disposition des différents éléments des pages. 'NE PAS EDITER CE TIDDLER', faire des modifications dans le tiddler masqué StyleSheet",
    StyleSheetLocale: "Ce tiddler masqué contient les définitions de style CSS pour la traduction",
    StyleSheetPrint: "Ce tiddler masqué contient les définitions de style CSS pour l'impression",
    SystemSettings: "Ce tiddler sert à conserver les paramètres de configuration de ce ~TiddlyWiki",
    TabAll: "Ce tiddler masqué contient l'onglet 'Tous' de la colonne de droite du TiddlyWiki",
    TabMore: "TCe tiddler masqué contient l'onglet 'Plus' de la colonne de droite du TiddlyWiki",
    TabMoreMissing: "Ce tiddler masqué contient l'onglet 'Manquants' de la colonne de droite du TiddlyWiki",
    TabMoreOrphans: "Ce tiddler masqué contient l'onglet 'Orphelins' de la colonne de droite du TiddlyWiki",
    TabMoreShadowed: "Ce tiddler masqué contient l'onglet 'Masqués' de la colonne de droite du TiddlyWiki",
    TabTags: "Ce tiddler masqué contient l'onglet 'Labels' de la colonne de droite du TiddlyWiki",
    TabTimeline: "Ce tiddler masqué contient l'onglet 'Chrono' de la colonne de droite du TiddlyWiki",
    ToolbarCommands: "Ce tiddler masqué détermine quelles commandes sont affichées dans les barre d'outils des tiddlers",
    ViewTemplate: "Le gabarit HTML de ce tiddler masqué détermine l'apparence d'un tiddler en mode normal"
    });

//}}}
/***
|''Name:''|FrenchTranslationPlugin|
|''Description:''|Translation of TiddlyWiki into French|
|''Author:''|ocalTW (ocalTW (at) gmail (dot) com)|
|''Source:''|www.tiddlywiki.fr |
|''Code Repository:''|http://svn.tiddlywiki.org/Trunk/association/locales/core/fr/locale.fr.js |
|''Version:''|2.3.0 fr|
|''Date:''|Jan 24, 2008|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]] |
***/
//{{{
//--
//-- Translateable strings
//--
// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone
config.locale = "fr"; // W3C language tag
if (config.options.txtUserName == 'YourName') // do not translate this line, but do translate the next line
 merge(config.options,{txtUserName: "VotreNom"});
merge(config.tasks,{
 save: {text: "sauvegarder", tooltip: "Sauvegarde vos modifications dans ce bloc-notes TiddlyWiki", action: saveChanges},
 sync: {text: "synchroniser", tooltip: "Synchronise les modifications avec d'autres fichiers ou d'autres serveurs TiddlyWiki", content: '<<sync>>'},
 importTask: {text: "importer", tooltip: "Importe des éléments et des extensions depuis d'autres fichiers ou d'autres serveurs TiddlyWiki", content: '<<importTiddlers>>'},
 tweak: {text: "réglages", tooltip: "Adapte l'apparence et le comportement de ce bloc-notes TiddlyWiki", content: '<<options>>'},
 plugins: {text: "extensions", tooltip: "Gère les extensions déjà installées", content: '<<plugins>>'}
});
// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
 txtUserName: "Nom d'utilisateur qui signe les modifications", 
 chkRegExpSearch: "Activer les expressions régulières pour les recherches", 
 chkCaseSensitiveSearch: "La recherche est sensible à la casse des mots", 
 chkAnimate: "Activer les animations", 
 chkSaveBackups: "Générer un fichier backup lors de l'enregistrement des modifications", 
 chkAutoSave: "Enregistrer automatiquement les modifications", 
 chkGenerateAnRssFeed: "Générer un flux RSS lors de l'enregistrement des modifications", 
 chkSaveEmptyTemplate: "Générer un fichier de démarrage initial 'empty.html' lors de l'enregistrement des modifications", 
 chkOpenInNewWindow: "Ouvrir un lien externe dans une nouvelle fenêtre", 
 chkToggleLinks: "Fermer les éléments lorsque l'on clique sur des liens qu'ils contiennent", 
 chkHttpReadOnly: "Masquer les caractéristiques d'édition lorsqu'il est accédé par HTTP", 
 chkForceMinorUpdate: "Ne modifier ni le nom de l'utilisateur ni la date lors de l'édition des éléments", 
 chkConfirmDelete: "Demander une confirmation lors d'une suppression d'un élément", 
 chkInsertTabs: "Utiliser la touche 'tab' pour insérer une tabulation au lieu de changer de champs", 
 txtBackupFolder: "Nom du dossier dans lequel seront conservés les backups", 
 txtMaxEditRows: "Nombre maximum de lignes dans les zones d'édition", 
 txtFileSystemCharSet: "Jeux de caractères à utiliser lors de l'enregistrement des modifications (uniquement pour Firefox/Mozilla)"});
merge(config.messages,{
 customConfigError: "Problèmes rencontrés lors du chargement d'extensions. Consulter le 'PluginManager' (menu 'extensions') pour les détails", 
 pluginError: "Erreur : %0", 
 pluginDisabled: "L'extension a été désactivée par positionnement du mot-clé 'systemConfigDisable'", 
 pluginForced: "L'exécution a été forcée à cause du mot-clé 'systemConfigForce'", 
 pluginVersionError: "L'extension a été désactivée car elle nécessite une version plus récente de TiddlyWiki", 
 nothingSelected: "Aucune sélection faite. Il vous faut d'abord sélectionner au moins un item", 
 savedSnapshotError: "Ce bloc-notes TiddlyWiki ne semble pas conforme. Reportez-vous à http://www.tiddlywiki.com/#DownloadSoftware ", 
 subtitleUnknown: "(inconnu)", 
 undefinedTiddlerToolTip: "L'élément '%0' n'est pas encore créé.",
 shadowedTiddlerToolTip: "L'élément '%0' n'est pas encore créé, mais a un contenu par défaut.", 
 tiddlerLinkTooltip: "%0 - %1, %2", 
 externalLinkTooltip: "Lien externe vers %0", 
 noTags: "Il n'y a pas d'éléments avec mot-clés.", 
 notFileUrlError: "Vous devez sauvegarder ce bloc-notes TiddlyWiki dans un fichier avant de pouvoir enregistrer vos modifications", 
 cantSaveError: "Sauvegarde impossible : \n- soit votre navigateur ne permet pas de sauvegarder les sauvegardes (FireFox, Internet Explorer, Safari et Opera fonctionnent s'ils sont configurés correctement),\n- soit le chemin d'accès à votre fichier contient des caractères invalides\n- soit le fichier de ce bloc-notes TiddlyWiki a été déplacé ou renommé", 
 invalidFileError: "Le fichier '%0' choisi ne semble pas être un TiddlyWiki valide", 
 backupSaved: "Sauvegarde effectuée", 
 backupFailed: "Echec de l'enregistrement du fichier de backup", 
 rssSaved: "Flux RSS sauvegardé", 
 rssFailed: "Echec de l'enregistrement du fichier de flux RSS", 
 emptySaved: "Fichier de démarrage initial 'empty.html' enregistré", 
 emptyFailed: "Echec de l'enregistrement du fichier de démarrage initial 'empty.html'", 
 mainSaved: "Fichier principal du bloc-notes TiddlyWiki enregistré", 
 mainFailed: "Echec de l'enregistrement du fichier principal TiddlyWiki. Vos modifications n'ont pas été enregistrées",
 macroError: "Erreur dans la macro <<\%0>>", 
 macroErrorDetails: "Erreur d'exécution de la macro <<\%0>>:\n%1", 
 missingMacro: "Macro non trouvée", 
 overwriteWarning: "Il y a déjà un élément nommé '%0'. Confirmez pour le remplacer", 
 unsavedChangesWarning: "ATTENTION! Les dernières modifications de ce bloc-notes TiddlyWiki n'ont pas été enregistrées.\n\nOK pour les enregistrer\nANNULER pour les abandonner", 
 confirmExit: "--------------------------------\n\nCertaines modifications n'ont pas été enregistrées dans ce bloc-notes TiddlyWiki.\n\n Si vous quittez maintenant vous les perdrez définitievement.\n\n--------------------------------", 
 saveInstructions: "Sauvegarder", 
 unsupportedTWFormat: "Format de TiddlyWiki non supporté '%0'", 
 tiddlerSaveError: "Erreur lors de l'enregistrement de l'élément '%0'", 
 tiddlerLoadError: "Erreur lors du chargement de l'élément '%0'", 
 wrongSaveFormat: "Impossible d'enregistrer avec le format '%0'. Le format standard est utilisé pour sauvegarder.", 
 invalidFieldName: "Nom de champ invalide %0", 
 fieldCannotBeChanged: "Le champ '%0' ne peut être changé", 
 loadingMissingTiddler: "Tentative de récupération de l'élément '%0' à partir du serveur '%1' server à :\n\n'%2' dans l'espace de travail '%3'"});
merge(config.messages.messageClose,{
 text: "fermer",
 tooltip: "fermer cette zone de messages"});
config.messages.backstage = {
 open: {text: "barre de services", tooltip: "Ouvre la barre de services pour effectuer des tâches de rédaction et d'edition"},
 close: {text: "fermer", tooltip: "Fermer la barre de services"},
 prompt: "services : ",
 decal: {
  edit: {text: "éditer", tooltip: "Editer l'élément '%0'"}
 }
};
config.messages.listView = {
 tiddlerTooltip: "Cliquer pour une vue complète de cet élément",
 previewUnavailable: "(aperçu non disponible)"
};
config.messages.dates.months = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre","décembre"];
config.messages.dates.days = ["dimanche", "lundi","mardi", "mercredi", "jeudi", "vendredi", "samedi"]; 

config.messages.dates.shortDays = ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."]; 
// suffixes pour les dates, par exemple "1er",  
config.messages.dates.daySuffixes = ["er","","","","","","","","","", 
  "","","","","","","","","","", 
  "","","","","","","","","","", 
  ""];
config.messages.dates.am = "matin";
config.messages.dates.pm = "après-midi";
merge(config.messages.tiddlerPopup,{
 });
merge(config.views.wikified.tag,{
 labelNoTags: "pas de mot-clé",
 labelTags: "Mot-clé : ",
 openTag: "Ouvrir le mot-clé '%0'",
 tooltip: "Afficher les éléments ayant pour mot-clé '%0'",
 openAllText: "Tout ouvrir",
 openAllTooltip: "Ouvrir tous les éléments avec ce mot-clé",
 popupNone: "Pas d'autres éléments ayant pour mot-clé '%0'"});
merge(config.views.wikified,{
 defaultText: "L'élément '%0' n'a pas encore été créé. Double-cliquer pour le créer.",
 defaultModifier: "(manquant)",
 shadowModifier: "(élément masqué installé par défaut)",
 dateFormat: "DD MMM YYYY", // Utilisé pour changer le format de la date (ici : "YYYY MMM DD"), ne pas changer les lettres D (jour), M (mois) ou Y (année)
 createdPrompt: "créé le"}); 
merge(config.views.editor,{
 tagPrompt: "Mettre un espace entre chaque mot-clé, si nécessaire [[entre doubles crochets]], ou associer un mot-clé existant",
 defaultText: "Entrer le texte de '%0'"});
merge(config.views.editor.tagChooser,{
 text: "mot-clé",
 tooltip: "Sélectionner les mot-clés existants à associer à cet élément",
 popupNone: "Aucun mot-clé n'a encore été défini",
 tagTooltip: "Associer le mot-clé '%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: "chercher",
 prompt: "Rechercher dans ce bloc-notes TiddlyWiki",
 accessKey: "F",
 successMsg: "%0 éléments répondent au critère %1",
 failureMsg: "Aucun élément ne répond au critère %0"});
merge(config.macros.tagging,{
 label: "éléments ayant pour mot-clé : ",
 labelNotTag: "pas de mot-clé",
 tooltip: "Afficher les éléments ayant pour mot-clé '%0'"});
merge(config.macros.timeline,{
 dateFormat: "DD MMM YYYY"}); // Utilisé pour changer le format de la date (ici : "YYYY MMM DD"), ne pas changer les lettres D (jour), M (mois) ou Y (année)
merge(config.macros.allTags,{
 tooltip: "Afficher les éléments ayant pour mot-clé '%0'",
 noTags: "Aucun élément n'a de mot-clé"});
config.macros.list.all.prompt = "Tous les éléments classés par ordre alphabétique";
config.macros.list.missing.prompt = "Eléments référencés par un lien mais qui ne sont pas non créés";
config.macros.list.orphans.prompt = "Eléments orphelins qui ne pas référencés par un lien dans d'autres éléments";
config.macros.list.shadowed.prompt = "Eléments masqués avec toujours leur contenu initial du modèle de référence TiddlyWiki";
config.macros.list.touched.prompt = "Eléments ayant été modifiés localement";
merge(config.macros.closeAll,{
 label: "tout fermer",
 prompt: "Fermer tous les éléments affichés (sauf ceux en cours d'édition)"});
merge(config.macros.permaview,{
 label: "permalien",
 prompt: "Lien vers l'URL qui référence la page avec tous les éléments actuellement affichés"});
merge(config.macros.saveChanges,{
 label: "sauvegarde des modifications",
 prompt: "Sauvegarde tous les éléments du bloc-notes TiddlyWiki",
 accessKey: "S"});
merge(config.macros.newTiddler,{
 label: "nouvel élément",
 prompt: "Crée un nouvel élément",
 title: "Nouvel Elément",
 accessKey: "N"});
merge(config.macros.newJournal,{
 label: "nouveau journal",
 prompt: "Crée un nouvel élément avec la date courante",
 accessKey: "J"});
merge(config.macros.options,{
 wizardTitle: "Réglage des options avancées",
 step1Title: "Ces options sont enregistrées dans des cookies de votre navigateur",
 step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Afficher les options inconnues</input>",
 unknownDescription: "//(inconnu)//",
 listViewTemplate: {
  columns: [
   {name: 'Option', field: 'option', title: "Option", type: 'String'},
   {name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
   {name: 'Name', field: 'name', title: "Nom", type: 'String'}
   ],
  rowClasses: [
   {className: 'lowlight', field: 'lowlight'}
   ]}
 });
merge(config.macros.plugins,{
 wizardTitle: "Gestionnaire des extensions",
 step1Title: "Extensions actuellement chargées",
 step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
 skippedText: "(Cette extension n'a pas été éxecutée car elle a été ajoutée après le démarrage de ce bloc-notes TiddlyWiki)",
 noPluginText: "Aucune extension n'est installée",
 confirmDeleteText: "Etes vous sûr(e) de vouloir supprimer ces extensions :\n\n%0",
 removeLabel: "Supprimer le mot-clé 'systemConfig'",
 removePrompt: "Supprime le mot-clé 'systemConfig'",
 deleteLabel: "supprimer",
 deletePrompt: "Suppression définititve de ces éléments",
 listViewTemplate: {
  columns: [
   {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
   {name: 'Tiddler', field: 'tiddler', title: "Elément", type: 'Tiddler'},
   {name: 'Size', field: 'size', tiddlerLink: 'size', title: "Taille", type: 'Size'},
   {name: 'Forced', field: 'forced', title: "Exécution forcée", tag: 'systemConfigForce', type: 'TagCheckbox'},
   {name: 'Disabled', field: 'disabled', title: "Désactivé", tag: 'systemConfigDisable', type: 'TagCheckbox'},
   {name: 'Executed', field: 'executed', title: "Chargé", type: 'Boolean', trueText: "Yes", falseText: "No"},
   {name: 'Startup Time', field: 'startupTime', title: "Durée de lancement", type: 'String'},
   {name: 'Error', field: 'error', title: "Etat", type: 'Boolean', trueText: "Error", falseText: "OK"},
   {name: 'Log', field: 'log', title: "Log", type: 'StringList'}
   ],
  rowClasses: [
   {className: 'error', field: 'error'},
   {className: 'warning', field: 'warning'}
   ]}
 });
merge(config.macros.toolbar,{
 moreLabel: "(suite)",
 morePrompt: "Affiche des commandes supplémentaires"
 });
merge(config.macros.refreshDisplay,{
 label: "réafficher",
 prompt: "Réaffiche le contenu complet du bloc-notes TiddlyWiki"
 });
merge(config.macros.importTiddlers,{
 readOnlyWarning: "Il n'est pas possible d'importer dans un bloc-notes TiddlyWiki qui n'est qu'en lecture seule. Essayez de l'ouvrir en local à partir d'une URL 'file://'",
 wizardTitle: "Importer des éléments depuis un autre fichier ou un serveur",
 step1Title: "Etape 1 : localiser le serveur ou le ficher du bloc-notes TiddlyWiki à importer",
 step1Html: "Spécifier le type du serveur : <select name='selTypes'><option value=''>Choisir ...</option></select><br>Indiquer l'URL ou le chemin : <input type='text' size=50 name='txtPath'><br>... ou rechercher un fichier en local : <input type='file' size=50 name='txtBrowse'><br><hr>... ou selectionner une source pré-définie : <select name='selFeeds'><option value=''>Choisir ...</option></select>",
 openLabel: "ouvrir",
 openPrompt: "Ouvre la connexion vers ce fichier ou ce serveur",
 openError: "Il y a des erreurs lors de l'accès au fichier contenant le bloc-notes TiddlyWiki",
 statusOpenHost: "Hôte en cours d'ouverture",
 statusGetWorkspaceList: "Obtenir la liste des espaces de travail disponibles",
 step2Title: "Etape 2 : choisir l'espace de travail",
 step2Html: "Entrer le nom d'un espace de travail : <input type='text' size=50 name='txtWorkspace'><br>... ou selectionner un espace de travail : <select name='selWorkspace'><option value=''>Choisir ...</option></select>",
 cancelLabel: "annuler",
 cancelPrompt: "Annule cet import",
 statusOpenWorkspace: "Ouverture de l'espace de travail",
 statusGetTiddlerList: "Obtenir la liste des éléments disponibles",
 step3Title: "Etape 3: Choisir les éléments à importer",
 step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Conserver ces éléments liés à ce serveur pour pouvoir synchroniser avec les changements ultérieurs</input><br><input type='checkbox' name='chkSave'>Enregistrer les détails de ce serveur dans un élément 'systemServer' nommé :</input> <input type='text' size=25 name='txtSaveTiddler'>",
 importLabel: "importer",
 importPrompt: "Importe ces éléments",
 confirmOverwriteText: "Etes-vous sûr de vouloir remplacer ces éléments :\n\n%0",
 step4Title: "Etape 4 : Importe %0 élément(s)",
 step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
 doneLabel: "fait",
 donePrompt: "Ferme cet assistant",
 statusDoingImport: "Importe ces éléments",
 statusDoneImport: "Tous les éléments ont été importés",
 systemServerNamePattern: "%2 sur %1",
 systemServerNamePatternNoWorkspace: "%1",
 confirmOverwriteSaveTiddler: "Cet élément '%0' existe déjà. Cliquer sur 'OK' pour le remplacer avec les caractéristiques de ce serveur ou 'Annule' pour les conserver en l'état",
 serverSaveTemplate: "|''Type :''|%0|\n|''URL :''|%1|\n|''Espace de travail :''|%2|\n\nCet élément avait été automatiquement créé pour enregistrer les détails de ce serveur",
 serverSaveModifier: "(Système)",
 listViewTemplate: {
  columns: [
   {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
   {name: 'Tiddler', field: 'tiddler', title: "Elément", type: 'Tiddler'},
   {name: 'Size', field: 'size', tiddlerLink: 'size', title: "Taille", type: 'Size'},
   {name: 'Tags', field: 'tags', title: "Mot-clé", type: 'Tags'}
   ],
  rowClasses: [
   ]}
 });
merge(config.macros.sync,{
 listViewTemplate: {
  columns: [
   {name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
   {name: 'Tiddler', field: 'tiddler', title: "Elément", type: 'Tiddler'},
   {name: 'Server Type', field: 'serverType', title: "Type de serveur", type: 'String'},
   {name: 'Server Host', field: 'serverHost', title: "Hôte serveur", type: 'String'},
   {name: 'Server Workspace', field: 'serverWorkspace', title: "Espace de travail du serveur", type: 'String'},
   {name: 'Status', field: 'status', title: "Etat de la synchronisation", type: 'String'},
   {name: 'Server URL', field: 'serverUrl', title: "URL du serveur", text: "View", type: 'Link'}
   ],
  rowClasses: [
   ],
  buttons: [
   {caption: "Synchronise ces éléments", name: 'sync'}
   ]},
 wizardTitle: "Synchronisation avec des serveurs externes et des fichiers",
 step1Title: "Choisir les éléments à synchroniser",
 step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
 syncLabel: "synchroniser",
 syncPrompt: "Synchronise ces éléments",
 hasChanged: "Modifié pendant la déconnection",
 hasNotChanged: "Non modifié pendant la déconnexion",
 syncStatusList: {
  none: {text: "...", color: "transparent"},
  changedServer: {text: "Modifié sur le serveur", color: '#80ff80'},
  changedLocally: {text: "Modifié pendant la déconnexion", color: '#80ff80'},
  changedBoth: {text: "Changé pendant la déconnexion et sur le serveur", color: '#ff8080'},
  notFound: {text: "Non trouvé sur le serveur", color: '#ffff80'},
  putToServer: {text: "Modifications enregistrées sur le serveur", color: '#ff80ff'},
  gotFromServer: {text: "Récupéré les modifications depuis le serveur", color: '#80ffff'}
  }
 });
merge(config.commands.closeTiddler,{
 text: "fermer",
 tooltip: "Ferme cet élément"});
merge(config.commands.closeOthers,{
 text: "isoler",
 tooltip: "Ferme tous les autres éléments"});
merge(config.commands.editTiddler,{
 text: "éditer",
 tooltip: "Editer cet élément",
 readOnlyText: "voir",
 readOnlyTooltip: "Affiche la source de cet élément"});
merge(config.commands.saveTiddler,{
 text: "valider",
 tooltip: "Valide les modifications effectuées sur cet élément"});
merge(config.commands.cancelTiddler,{
 text: "annuler",
 tooltip: "Abandon des modifications effectuées sur cet élément",
 warning: "Confirmez-vous l'abandon de vos modifications de l'élément '%0'?",
 readOnlyText: "retour",
 readOnlyTooltip: "Revenir à l'affichage normal de cet élément"});
merge(config.commands.deleteTiddler,{
 text: "supprimer",
 tooltip: "Supprime cet élément",
 warning: "Confirmez-vous la suppression de '%0'?"});
merge(config.commands.permalink,{
 text: "permalien",
 tooltip: "Permalien pour cet élément"});
merge(config.commands.references,{
 text: "références",
 tooltip: "Affiche les éléments qui font référence à l'élément courant",
 popupNone: "Pas de référent(s)"});
merge(config.commands.jump,{
 text: "aller vers",
 tooltip: "Permet d'atteindre l'un des éléments déjà ouvert dans le bloc-notes TiddlyWiki courant"});
merge(config.commands.syncing,{
 text: "synchronisation",
 tooltip: "Contrôle la synchronisation de cet élément avec un serveur ou un fichier externe",
 currentlySyncing: "<div>Actuellement en cours de synchronisation avec <span class='popupHighlight'>'%0'</span> vers :</"+"div><div>host: <span class='popupHighlight'>%1</span></"+"div><div>workspace: <span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
 notCurrentlySyncing: "Pas de synchronisation en cours",
 captionUnSync: "Arrête la synchronisation de cet élément",
 chooseServer: "Synchronise cet élément avec un autre serveur :",
 currServerMarker: "\u25cf ",
 notCurrServerMarker: "  "});
merge(config.commands.fields,{
 text: "champs",
 tooltip: "Affiche les champs supplémentaires de cet élément",
 emptyText: "Il n'y a pas de champs supplémentaires pour cet élément",
 listViewTemplate: {
  columns: [
   {name: 'Field', field: 'field', title: "Champ", type: 'String'},
   {name: 'Value', field: 'value', title: "Valeur", type: 'String'}
   ],
  rowClasses: [
   ],
  buttons: [
   ]}});
merge(config.shadowTiddlers,{
 DefaultTiddlers: "GettingStarted",
 MainMenu: "GettingStarted",
 TranslatedGettingStarted: "Pour utiliser ce //bloc-notes// TiddlyWiki, commencez par modifier les //éléments// suivants (''//tiddlers//'' dans le jargon TiddlyWiki) :\n* __SiteTitle__ et __SiteSubtitle__ : Le titre et le sous-titre de ce //bloc-notes// TiddlyWiki. Après modification, ils apparaîtront aussi dans la barre de titre du navigateur)\n* __MainMenu__: Le menu principal (généralement à gauche)\n* __DefaultTiddlers__ : La liste les noms des //éléments// que vous voulez voir s'afficher à l'ouverture de ce //bloc-notes// TiddlyWiki. \n* Entrez également le ''nom d'utilisateur'' avec lequel seront signés vos ajouts ou vos modifications dans les //éléments// :\n** <<option txtUserName>>",
 SiteTitle: "Mon TiddlyWiki",
 SiteSubtitle: "organiseur personnel web interactif et autoporteur, voir http://www.tiddlywiki.com pour le site TiddlyWiki original en anglais",
 SiteUrl: "http://www.tiddlywiki.com/",
 OptionsPanel: "Les options de configuration de ce bloc-notes TiddlyWiki sont sauvegardées dans des cookies de votre navigateur.\n\nNom d'utilisateur avec lequel seront signés vos ajouts ou vos modifications dans les éléments (par exemple Jeremy_Ruston).\n\n<<option txtUserName>>\n<<option chkSaveBackups>> Backup de chaque version\n<<option chkAutoSave>> Backup à chaque modification\n<<option chkRegExpSearch>> Expression régulières dans les recherches\n<<option chkCaseSensitiveSearch>> Respecter la casse dans les recherches\n<<option chkAnimate>> Animations à l'ouverture des éléments\n",
 SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options  »" "Modifie les options supplémentaires de ce bloc-notes ~TiddlyWiki">>',
 SideBarTabs: '<<tabs txtMainTab "Chrono" "Affichage chronologique" TabTimeline "Alpha" "Liste alphabétique des éléments" TabAll "Mot-clé" "Liste de tous les mot-clés" TabTags "Autres" "Autres listes" TabMore>>',
 TabMore: '<<tabs txtMoreTab "Manquants" "Eléments manquants" TabMoreMissing "Orphelins" "Eléments orphelins" TabMoreOrphans "Masqués" "Eléments masqués" TabMoreShadowed>>'});
merge(config.annotations,{
 AdvancedOptions: "Cet élément masqué permet d'accéder à différentes options avancées",
 ColorPalette: "Les valeurs de cet élément masqué détermine la palette des couleurs utilisées pour l'interface utilisateur de ~TiddlyWiki",
 DefaultTiddlers: "Les éléments enumérés dans cet élément seront automatiquement affichés au démarrage de ~TiddlyWiki",
 EditTemplate: "Le gabarit HTML dans cet élément masqué détermine la manière dont les éléments sont présentés lorsqu'ils sont édités",
 GettingStarted: "Cet élément fournit quelques instructions basiques pour utiliser un bloc-notes ~TiddlyWiki",
 ImportTiddlers: "Cet élément par défaut fournit l'accès à l'interface d'import d'éléments",
 MainMenu: "Le contenu de cet élément défini le menu de la colonne de gauche de cette feuille HTML",
 MarkupPreHead: "Le contenu de cet élément est inséré au début de la section <head> du fichier HTML de ce bloc-notes ~TiddlyWiki",
 MarkupPostHead: "Le contenu de cet élément est inséré à la fin de la section <head> du fichier HTML de ce bloc-notes ~TiddlyWiki",
 MarkupPreBody: "Le contenu de cet élément est inséré au début de la section <body> du fichier HTML de ce bloc-notes ~TiddlyWiki",
 MarkupPostBody: "Le contenu de cet élément est inséré à la fin de la section <body> du fichier HTML de ce bloc-notes ~TiddlyWiki, immédiatement avant le bloc 'script'",
 OptionsPanel: "Le contenu de cet élément par défaut est utilisé par le panneau déroulant des options dans la colonne de droite de cette feuille HTML",
 PageTemplate: "Le gabarit HTML de cet élément masqué détermine la mise en page générale de ce bloc-notes ~TiddlyWiki",
 PluginManager: "Cet élément masqué permet d'accéder au gestionnaire d'extensions",
 SideBarOptions: "Le contenu de cet élément par défaut est utilisé par le panneau des options dans la barre de droite de la feuille HTML",
 SideBarTabs: "Le contenu de cet élément par défaut est utilisé par le panneau des onglets dans la barre de droite de la feuille HTML",
 SiteSubtitle: "Cet élément est utilisé comme deuxième partie du titre de la page",
 SiteTitle: "Cet élément est utilisé comme première partie du titre de la page",
 SiteUrl: "Cet élément par défaut doit contenir l'URL complet du site utilisé pour la publication",
 StyleSheetColours: "Cet élément par défaut contient des définitions CSS concernant les couleurs des composants de page",
 StyleSheet: "Cet éléments par défaut contient des définitions CSS personnalisées",
 StyleSheetLayout: "Cet éléments par défaut contient des définitions CSS concernant la mise en page de composants",
 StyleSheetLocale: "Cet élément par défaut contient des définitions CSS concernant la traduction ",
 StyleSheetPrint: "Cet élément par défaut contient des définitions CSS pour l'impression",
 TabAll: "Le contenu de cet élément par défaut est utilisé par le panneau de l'onglet 'Alpha' dans la colonne de droite de cette feuille HTML",
 TabMore: "Cet élément par défaut contient le contenu de l'onglet 'Suite' dans la barre de droite de l'écran",
 TabMoreMissing: "Cet élément par défaut contient le contenu de l'onglet 'Manquants' dans la colonne de droite de cette feuille HTML",
 TabMoreOrphans: "Cet élément par défaut contient le contenu de l'onglet 'Orphelins' dans la colonne de droite de cette feuille HTML",
 TabMoreShadowed: "Cet élément par défaut contient le contenu de l'onglet 'Défaut' dans la colonne de droite de cette feuille HTML",
 TabTags: "Cet élément par défaut contient le contenu de l'onglet 'Mot-clé' dans la colonne de droite de cette feuille HTML",
 TabTimeline: "Cet élément par défaut contient le contenu de l'onglet 'Chrono' dans la colonne de droite de cette feuille HTML",
 ViewTemplate: "Le gabarit HTML dans cet élément par défaut determine comment sont présentés les éléments"
 });
//}}}
/***
|''Name:''|FrenchTranslationPlugin-TW241 |
|''Description:''|Translation of TiddlyWiki 2.4.1 into French |
|''Author:''|ocalTW ( FrenchTranslationPlugin (at) ocalTW (dot) com ) |
|''Source:''|http://www.tiddlywiki.fr#FrenchTranslationPlugin-TW241 |
|''Code Repository:''|http://svn.tiddlywiki.org/Trunk/association/locales/core/fr/locale.fr.js (to be posted) |
|''Version:''|''2.4.1'' |
|''Date:''|August 5th, 2008 |
|''History:''|Translations of v2.1.3 by __Jacques Turbé__, v2.2 by __~BidiX__, v2.3 & v2.4.0 by __ocalTW__ |
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]] |
***/
//{{{

//--
//-- Translateable strings
//--
// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone
if (config.options.txtUserName == 'YourName') // do not translate this line, but do translate the next line
 merge(config.options,{txtUserName: "VotreNom"});

merge(config.tasks,{
 save: {text: "sauvegarder", tooltip: "Sauvegarde vos modifications dans ce bloc-notes TiddlyWiki", action: saveChanges},
 sync: {text: "synchroniser", tooltip: "Synchronise les modifications avec d'autres fichiers ou d'autres serveurs TiddlyWiki", content: '<<sync>>'},
 importTask: {text: "importer", tooltip: "Importe des éléments et des extensions depuis d'autres fichiers ou d'autres serveurs TiddlyWiki", content: '<<importTiddlers>>'},
 tweak: {text: "réglages", tooltip: "Adapte l'apparence et le comportement de ce bloc-notes TiddlyWiki", content: '<<options>>'},
 upgrade: {text: "mise à jour", tooltip: "Met à jour le code du noyau TiddlyWiki", content: '<<upgrade>>'},
 plugins: {text: "extensions", tooltip: "Gère les extensions déjà installées", content: '<<plugins>>'}
 });

// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
 txtUserName: "Nom d'utilisateur qui signe les modifications", 
 chkRegExpSearch: "Activer les expressions régulières pour les recherches", 
 chkCaseSensitiveSearch: "La recherche est sensible à la casse des mots", 
 chkIncrementalSearch: "Recherche incremental en mode pas-à-pas",
 chkAnimate: "Activer les animations", 
 chkSaveBackups: "Générer un fichier backup lors de l'enregistrement des modifications", 
 chkAutoSave: "Enregistrer automatiquement les modifications", 
 chkGenerateAnRssFeed: "Générer un flux RSS lors de l'enregistrement des modifications", 
 chkSaveEmptyTemplate: "Générer un fichier de démarrage initial 'empty.html' lors de l'enregistrement des modifications", 
 chkOpenInNewWindow: "Ouvrir un lien externe dans une nouvelle fenêtre", 
 chkToggleLinks: "Fermer les éléments lorsque l'on clique sur des liens qu'ils contiennent", 
 chkHttpReadOnly: "Masquer les caractéristiques d'édition lorsqu'il est accédé par HTTP", 
 chkForceMinorUpdate: "Ne modifier ni le nom de l'utilisateur ni la date lors de l'édition des éléments", 
 chkConfirmDelete: "Demander une confirmation lors d'une suppression d'un élément", 
 chkInsertTabs: "Utiliser la touche 'tab' pour insérer une tabulation au lieu de changer de champs", 
 txtBackupFolder: "Nom du dossier dans lequel seront conservés les backups", 
 txtMaxEditRows: "Nombre maximum de lignes dans les zones d'édition", 
 txtFileSystemCharSet: "Jeux de caractères à utiliser lors de l'enregistrement des modifications (uniquement pour Firefox/Mozilla)"});

merge(config.messages,{
 customConfigError: "Problèmes rencontrés lors du chargement d'extensions. Consulter le 'PluginManager' (menu 'extensions') pour les détails", 
 pluginError: "Erreur : %0", 
 pluginDisabled: "L'extension a été désactivée par positionnement du mot-clé 'systemConfigDisable'", 
 pluginForced: "L'exécution a été forcée à cause du mot-clé 'systemConfigForce'", 
 pluginVersionError: "L'extension a été désactivée car elle nécessite une version plus récente de TiddlyWiki", 
 nothingSelected: "Aucune sélection faite. Il vous faut d'abord sélectionner au moins un item", 
 savedSnapshotError: "Ce bloc-notes TiddlyWiki ne semble pas conforme. Reportez-vous à http://www.tiddlywiki.com/#DownloadSoftware ", 
 subtitleUnknown: "(inconnu)", 
 undefinedTiddlerToolTip: "L'élément '%0' n'est pas encore créé.",
 shadowedTiddlerToolTip: "L'élément '%0' n'est pas encore créé, mais a un contenu par défaut.", 
 tiddlerLinkTooltip: "%0 - %1, %2", 
 externalLinkTooltip: "Lien externe vers %0", 
 noTags: "Il n'y a pas d'éléments avec mot-clés.", 
 notFileUrlError: "Vous devez sauvegarder ce bloc-notes TiddlyWiki dans un fichier avant de pouvoir enregistrer vos modifications", 
 cantSaveError: "Sauvegarde impossible : \n- soit votre navigateur ne permet pas de sauvegarder les sauvegardes (FireFox, Internet Explorer, Safari et Opera fonctionnent s'ils sont configurés correctement),\n- soit le chemin d'accès à votre fichier contient des caractères invalides\n- soit le fichier de ce bloc-notes TiddlyWiki a été déplacé ou renommé", 
 invalidFileError: "Le fichier '%0' choisi ne semble pas être un TiddlyWiki valide", 
 backupSaved: "Sauvegarde effectuée", 
 backupFailed: "Echec de l'enregistrement du fichier de backup", 
 rssSaved: "Flux RSS sauvegardé", 
 rssFailed: "Echec de l'enregistrement du fichier de flux RSS", 
 emptySaved: "Fichier de démarrage initial 'empty.html' enregistré", 
 emptyFailed: "Echec de l'enregistrement du fichier de démarrage initial 'empty.html'", 
 mainSaved: "Fichier principal du bloc-notes TiddlyWiki enregistré", 
 mainFailed: "Echec de l'enregistrement du fichier principal TiddlyWiki. Vos modifications n'ont pas été enregistrées",
 macroError: "Erreur dans la macro <<\%0>>", 
 macroErrorDetails: "Erreur d'exécution de la macro <<\%0>>:\n%1", 
 missingMacro: "Macro non trouvée", 
 overwriteWarning: "Il y a déjà un élément nommé '%0'. Confirmez pour le remplacer", 
 unsavedChangesWarning: "ATTENTION! Les dernières modifications de ce bloc-notes TiddlyWiki n'ont pas été enregistrées.\n\nOK pour les enregistrer\nANNULER pour les abandonner", 
 confirmExit: "--------------------------------\n\nCertaines modifications n'ont pas été enregistrées dans ce bloc-notes TiddlyWiki.\n\n Si vous quittez maintenant vous les perdrez définitievement.\n\n--------------------------------", 
 saveInstructions: "Sauvegarder", 
 unsupportedTWFormat: "Format de TiddlyWiki non supporté '%0'", 
 tiddlerSaveError: "Erreur lors de l'enregistrement de l'élément '%0'", 
 tiddlerLoadError: "Erreur lors du chargement de l'élément '%0'", 
 wrongSaveFormat: "Impossible d'enregistrer avec le format '%0'. Le format standard est utilisé pour sauvegarder.", 
 invalidFieldName: "Nom de champ invalide %0", 
 fieldCannotBeChanged: "Le champ '%0' ne peut être changé", 
 loadingMissingTiddler: "Tentative de récupération de l'élément '%0' à partir du serveur '%1' server à :\n\n'%2' dans l'espace de travail '%3'",
 upgradeDone: "La mise à jour en version %0 est maintenant terminée\n\nCliquez 'OK' pour recharger le TiddlyWiki que vous venez de mettre à jour"});

merge(config.messages.messageClose,{
 text: "fermer",
 tooltip: "fermer cette zone de messages"});

config.messages.backstage = {
 open: {text: "barre de services", tooltip: "Ouvre la barre de services pour effectuer des tâches de rédaction et d'édition"},
 close: {text: "fermer", tooltip: "Fermer la barre de services"},
 prompt: "services : ",
 decal: {
  edit: {text: "éditer", tooltip: "Editer l'élément '%0'"}
 }
};

config.messages.listView = {
 tiddlerTooltip: "Cliquer pour une vue complète de cet élément",
 previewUnavailable: "(aperçu non disponible)"
};

config.messages.dates.months = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre","décembre"];
config.messages.dates.days = ["dimanche", "lundi","mardi", "mercredi", "jeudi", "vendredi", "samedi"]; 
config.messages.dates.shortDays = ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."]; 
// suffixes pour les dates, par exemple "1er",  
config.messages.dates.daySuffixes = ["er","","","","","","","","","", 
  "","","","","","","","","","", 
  "","","","","","","","","","", 
  ""];
config.messages.dates.am = "matin";
config.messages.dates.pm = "après-midi";

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

merge(config.views.wikified.tag,{
 labelNoTags: "pas de mot-clé",
 labelTags: "Mot-clé : ",
 openTag: "Ouvrir le mot-clé '%0'",
 tooltip: "Afficher les éléments ayant pour mot-clé '%0'",
 openAllText: "Tout ouvrir",
 openAllTooltip: "Ouvrir tous les éléments avec ce mot-clé",
 popupNone: "Pas d'autres éléments ayant pour mot-clé '%0'"});

merge(config.views.wikified,{
 defaultText: "L'élément '%0' n'a pas encore été créé. Double-cliquer pour le créer.",
 defaultModifier: "(manquant)",
 shadowModifier: "(élément masqué installé par défaut)",
 dateFormat: "DD MMM YYYY", // Utilisé pour changer le format de la date (ici : "YYYY MMM DD"), ne pas changer les lettres D (jour), M (mois) ou Y (année)
 createdPrompt: "créé le"}); 

merge(config.views.editor,{
 tagPrompt: "Mettre un espace entre chaque mot-clé, si nécessaire [[entre doubles crochets]], ou associer un mot-clé existant",
 defaultText: "Entrer le texte de '%0'"});

merge(config.views.editor.tagChooser,{
 text: "mot-clé",
 tooltip: "Sélectionner les mot-clés existants à associer à cet élément",
 popupNone: "Aucun mot-clé n'a encore été défini",
 tagTooltip: "Associer le mot-clé '%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: "chercher",
 prompt: "Rechercher dans ce bloc-notes TiddlyWiki",
 accessKey: "F",
 successMsg: "%0 éléments répondent au critère %1",
 failureMsg: "Aucun élément ne répond au critère %0"});

merge(config.macros.tagging,{
 label: "éléments ayant pour mot-clé : ",
 labelNotTag: "pas de mot-clé",
 tooltip: "Afficher les éléments ayant pour mot-clé '%0'"});

merge(config.macros.timeline,{
 dateFormat: "DD MMM YYYY"}); // Utilisé pour changer le format de la date (ici : "YYYY MMM DD"), ne pas changer les lettres D (jour), M (mois) ou Y (année)

merge(config.macros.allTags,{
 tooltip: "Afficher les éléments ayant pour mot-clé '%0'",
 noTags: "Aucun élément n'a de mot-clé"});
config.macros.list.all.prompt = "Tous les éléments classés par ordre alphabétique";
config.macros.list.missing.prompt = "Eléments référencés par un lien mais qui ne sont pas non créés";
config.macros.list.orphans.prompt = "Eléments orphelins qui ne pas référencés par un lien dans d'autres éléments";
config.macros.list.shadowed.prompt = "Eléments masqués avec toujours leur contenu initial du modèle de référence TiddlyWiki";
config.macros.list.touched.prompt = "Eléments ayant été modifiés localement";

merge(config.macros.closeAll,{
 label: "tout fermer",
 prompt: "Fermer tous les éléments affichés (sauf ceux en cours d'édition)"});

merge(config.macros.permaview,{
 label: "permalien",
 prompt: "Lien vers l'URL qui référence la page avec tous les éléments actuellement affichés"});

merge(config.macros.saveChanges,{
 label: "sauvegarde des modifications",
 prompt: "Sauvegarde tous les éléments du bloc-notes TiddlyWiki",
 accessKey: "S"});

merge(config.macros.newTiddler,{
 label: "nouvel élément",
 prompt: "Crée un nouvel élément",
 title: "Nouvel Elément",
 accessKey: "N"});

merge(config.macros.newJournal,{
 label: "nouveau journal",
 prompt: "Crée un nouvel élément avec la date courante",
 accessKey: "J"});

merge(config.macros.options,{
 wizardTitle: "Réglage des options avancées",
 step1Title: "Ces options sont enregistrées dans des cookies de votre navigateur",
 step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Afficher les options inconnues</input>",
 unknownDescription: "//(inconnu)//",
 listViewTemplate: {
  columns: [
   {name: 'Option', field: 'option', title: "Option", type: 'String'},
   {name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
   {name: 'Name', field: 'name', title: "Nom", type: 'String'}
   ],
  rowClasses: [
   {className: 'lowlight', field: 'lowlight'}
   ]}
 });

merge(config.macros.plugins,{
 wizardTitle: "Gestionnaire des extensions",
 step1Title: "Extensions actuellement chargées",
 step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
 skippedText: "(Cette extension n'a pas été éxecutée car elle a été ajoutée après le démarrage de ce bloc-notes TiddlyWiki)",
 noPluginText: "Aucune extension n'est installée",
 confirmDeleteText: "Etes vous sûr(e) de vouloir supprimer ces extensions :\n\n%0",
 removeLabel: "Supprimer le mot-clé 'systemConfig'",
 removePrompt: "Supprime le mot-clé 'systemConfig'",
 deleteLabel: "supprimer",
 deletePrompt: "Suppression définitive de ces éléments",
 listViewTemplate: {
  columns: [
   {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
   {name: 'Tiddler', field: 'tiddler', title: "Elément", type: 'Tiddler'},
   {name: 'Size', field: 'size', tiddlerLink: 'size', title: "Taille", type: 'Size'},
   {name: 'Forced', field: 'forced', title: "Exécution forcée", tag: 'systemConfigForce', type: 'TagCheckbox'},
   {name: 'Disabled', field: 'disabled', title: "Désactivé", tag: 'systemConfigDisable', type: 'TagCheckbox'},
   {name: 'Executed', field: 'executed', title: "Chargé", type: 'Boolean', trueText: "Yes", falseText: "No"},
   {name: 'Startup Time', field: 'startupTime', title: "Durée de lancement", type: 'String'},
   {name: 'Error', field: 'error', title: "Etat", type: 'Boolean', trueText: "Error", falseText: "OK"},
   {name: 'Log', field: 'log', title: "Log", type: 'StringList'}
   ],
  rowClasses: [
   {className: 'error', field: 'error'},
   {className: 'warning', field: 'warning'}
   ]}
 });

merge(config.macros.toolbar,{
 moreLabel: "(suite)",
 morePrompt: "Affichage de commandes supplémentaires"
 });

merge(config.macros.refreshDisplay,{
 label: "réafficher",
 prompt: "Réaffichage du contenu complet du bloc-notes TiddlyWiki"
 });

merge(config.macros.importTiddlers,{
 readOnlyWarning: "Il n'est pas possible d'importer dans un bloc-notes TiddlyWiki qui n'est qu'en lecture seule. Essayez de l'ouvrir en local à partir d'une URL 'file://'",
 wizardTitle: "Importer des éléments depuis un autre fichier ou un serveur",
 step1Title: "Etape 1 : localiser le serveur ou le ficher du bloc-notes TiddlyWiki à importer",
 step1Html: "Spécifier le type du serveur : <select name='selTypes'><option value=''>Choisir ...</option></select><br>Indiquer l'URL ou le chemin : <input type='text' size=50 name='txtPath'><br>... ou rechercher un fichier en local : <input type='file' size=50 name='txtBrowse'><br><hr>... ou selectionner une source pré-définie : <select name='selFeeds'><option value=''>Choisir ...</option></select>",
 openLabel: "ouvrir",
 openPrompt: "Ouvre la connexion vers ce fichier ou ce serveur",
 openError: "Il y a des erreurs lors de l'accès au fichier contenant le bloc-notes TiddlyWiki",
 statusOpenHost: "Hôte en cours d'ouverture",
 statusGetWorkspaceList: "Obtenir la liste des espaces de travail disponibles",
 step2Title: "Etape 2 : choisir l'espace de travail",
 step2Html: "Entrer le nom d'un espace de travail : <input type='text' size=50 name='txtWorkspace'><br>... ou selectionner un espace de travail : <select name='selWorkspace'><option value=''>Choisir ...</option></select>",
 cancelLabel: "annuler",
 cancelPrompt: "Annule cet import",
 statusOpenWorkspace: "Ouverture de l'espace de travail",
 statusGetTiddlerList: "Obtenir la liste des éléments disponibles",
 errorGettingTiddlerList: "Erreur lors de la récupération de la liste des éléments, cliquer sur 'Annuler' pour recommencer l'opération",
 step3Title: "Etape 3: Choisir les éléments à importer",
 step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Conserver ces éléments liés à ce serveur pour pouvoir synchroniser avec les changements ultérieurs</input><br><input type='checkbox' name='chkSave'>Enregistrer les détails de ce serveur dans un élément 'systemServer' nommé :</input> <input type='text' size=25 name='txtSaveTiddler'>",
 importLabel: "importer",
 importPrompt: "Importe ces éléments",
 confirmOverwriteText: "Etes-vous sûr de vouloir remplacer ces éléments :\n\n%0",
 step4Title: "Etape 4 : Importe %0 élément(s)",
 step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
 doneLabel: "fait",
 donePrompt: "Ferme cet assistant",
 statusDoingImport: "Importe ces éléments",
 statusDoneImport: "Tous les éléments ont été importés",
 systemServerNamePattern: "%2 sur %1",
 systemServerNamePatternNoWorkspace: "%1",
 confirmOverwriteSaveTiddler: "Cet élément '%0' existe déjà. Cliquer sur 'OK' pour le remplacer avec les caractéristiques de ce serveur ou 'Annule' pour les conserver en l'état",
 serverSaveTemplate: "|''Type :''|%0|\n|''URL :''|%1|\n|''Espace de travail :''|%2|\n\nCet élément avait été automatiquement créé pour enregistrer les détails de ce serveur",
 serverSaveModifier: "(Système)",
 listViewTemplate: {
  columns: [
   {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
   {name: 'Tiddler', field: 'tiddler', title: "Elément", type: 'Tiddler'},
   {name: 'Size', field: 'size', tiddlerLink: 'size', title: "Taille", type: 'Size'},
   {name: 'Tags', field: 'tags', title: "Mot-clé", type: 'Tags'}
   ],
  rowClasses: [
   ]}
 });

merge(config.macros.upgrade,{
	wizardTitle: "Mettre à jour le code du noyau TiddlyWiki",
	step1Title: "Mettre à jour ou réparer ce bloc-notes TiddlyWiki avant de lancer le processus de mise à jour",
	step1Html: "Vous allez démarrer la mise à jour du code du noyau TiddlyWiki (depuis <a href='%0' class='externalLink' target='_blank'>%1</a>). Le contenu de votre document sera préservé lors de cette mise à jour.<br><br>Il est important de savoir que des mises à jour du code du noyau ont par le passé, déjà eu pour effet de provoquer des effets de bords et des problèmes de compatibilités avec d'autres extensions (plugins). Si vous rencontrez des problèmes lors de cette mise à jour, consultez le site <a href='http://www.tiddlywiki.org/wiki/CoreUpgrades' class='externalLink' target='_blank'>http://www.tiddlywiki.org/wiki/CoreUpgrades</a>",
	errorCantUpgrade: "Impossible d'effectuer la mise à jour de ce bloc-notes TiddlyWiki. Vous ne pouvez effectuer des mises à jour que sur des bloc-notes TiddlyWiki stockés sur un disque local accessible en écriture",
	errorNotSaved: "Vous devez effectuer une sauvegarde de vos modifications avant de lancer le processus de mise à jour",
	step2Title: "Confirmer les détails du processus de mise à jour",
	step2Html_downgrade: "Vous êtes sur le point de faire un retour arrière vers TiddlyWiki version %0 depuis la version %1.<br><br>Faire un tel retour arrière vers une version précédente du code du noyau n'est pas recommandé.",
	step2Html_restore: "Il semble que ce bloc-notes TiddlyWiki utilise déjà la dernière version du code du noyau (%0).<br><br>Vous pouvez tout de même continuer à effectuer la mise à jour, afin de vous assurer que le code du noyau n'a été ni corrompu, ni endommagé",
	step2Html_upgrade: "Vous êtes sur le point de faire la mise à jour vers TiddlyWiki version %0 depuis la version %1",
	upgradeLabel: "mettre à jour",
	upgradePrompt: "Préparation du processus de mise à jour",
	statusPreparingBackup: "Préparation de la sauvegarde",
	statusSavingBackup: "Mise en sécurité du fichier de sauvegarde",
	errorSavingBackup: "Un problème a été rencontré lors de la mise en sécurité du fichier de sauvegarde",
	statusLoadingCore: "Chargement du code du noyau",
	errorLoadingCore: "Erreur lors du chargement du code du noyau",
	errorCoreFormat: "Erreur avec le nouveau code du noyau",
	statusSavingCore: "Sauvegarde du nouveau code du noyau",
	statusReloadingCore: "Rechargement du nouveau code du noyau",
	startLabel: "lancer",
	startPrompt: "Lancer le processus de mise à jour",
	cancelLabel: "annuler",
	cancelPrompt: "Annuler le processus de mise à jour",
	step3Title: "Mise à jour annulée",
	step3Html: "Vous avez annulé le processus de mise à jour"
	});

merge(config.macros.sync,{
 listViewTemplate: {
  columns: [
   {name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
   {name: 'Tiddler', field: 'tiddler', title: "Elément", type: 'Tiddler'},
   {name: 'Server Type', field: 'serverType', title: "Type de serveur", type: 'String'},
   {name: 'Server Host', field: 'serverHost', title: "Hôte serveur", type: 'String'},
   {name: 'Server Workspace', field: 'serverWorkspace', title: "Espace de travail du serveur", type: 'String'},
   {name: 'Status', field: 'status', title: "Etat de la synchronisation", type: 'String'},
   {name: 'Server URL', field: 'serverUrl', title: "URL du serveur", text: "View", type: 'Link'}
   ],
  rowClasses: [
   ],
  buttons: [
   {caption: "Synchronise ces éléments", name: 'sync'}
   ]},
 wizardTitle: "Synchronisation avec des serveurs externes et des fichiers",
 step1Title: "Choisir les éléments à synchroniser",
 step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
 syncLabel: "synchroniser",
 syncPrompt: "Synchronise ces éléments",
 hasChanged: "Modifié pendant la déconnection",
 hasNotChanged: "Non modifié pendant la déconnexion",
 syncStatusList: {
  none: {text: "...", color: "transparent"},
  changedServer: {text: "Modifié sur le serveur", color: '#80ff80'},
  changedLocally: {text: "Modifié pendant la déconnexion", color: '#80ff80'},
  changedBoth: {text: "Changé pendant la déconnexion et sur le serveur", color: '#ff8080'},
  notFound: {text: "Non trouvé sur le serveur", color: '#ffff80'},
  putToServer: {text: "Modifications enregistrées sur le serveur", color: '#ff80ff'},
  gotFromServer: {text: "Récupéré les modifications depuis le serveur", color: '#80ffff'}
  }
 });

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

merge(config.commands.closeTiddler,{
 text: "fermer",
 tooltip: "Fermeture de cet élément"});

merge(config.commands.closeOthers,{
 text: "isoler",
 tooltip: "Fermeture de tous les autres éléments"});

merge(config.commands.editTiddler,{
 text: "éditer",
 tooltip: "Edition de cet élément",
 readOnlyText: "voir",
 readOnlyTooltip: "Affichage de la source de cet élément"});

merge(config.commands.saveTiddler,{
 text: "valider",
 tooltip: "Validation des modifications effectuées sur cet élément"});

merge(config.commands.cancelTiddler,{
 text: "annuler",
 tooltip: "Abandon des modifications effectuées sur cet élément",
 warning: "Confirmez-vous l'abandon de vos modifications de l'élément '%0'?",
 readOnlyText: "retour",
 readOnlyTooltip: "Retour à l'affichage normal de cet élément"});

merge(config.commands.deleteTiddler,{
 text: "supprimer",
 tooltip: "Suppression de cet élément",
 warning: "Confirmez-vous la suppression de '%0'?"});

merge(config.commands.permalink,{
 text: "permalien",
 tooltip: "Création d'un permalien pour cet élément"});

merge(config.commands.references,{
 text: "références",
 tooltip: "Affichage des éléments qui font référence à l'élément courant",
 popupNone: "Pas de référent(s)"});

merge(config.commands.jump,{
 text: "aller vers",
 tooltip: "Possibilité d'accès direct à l'un des éléments déjà ouverts dans le bloc-notes TiddlyWiki courant"});

merge(config.commands.syncing,{
 text: "synchronisation",
 tooltip: "Contrôle de la synchronisation de cet élément avec un serveur ou un fichier externe",
 currentlySyncing: "<div>Actuellement en cours de synchronisation avec <span class='popupHighlight'>'%0'</span> vers :</"+"div><div>host: <span class='popupHighlight'>%1</span></"+"div><div>workspace: <span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
 notCurrentlySyncing: "Pas de synchronisation en cours",
 captionUnSync: "Arrête la synchronisation de cet élément",
 chooseServer: "Synchronise cet élément avec un autre serveur :",
 currServerMarker: "\u25cf ",
 notCurrServerMarker: "  "});

merge(config.commands.fields,{
 text: "champs",
 tooltip: "Affichage des champs supplémentaires de cet élément",
 emptyText: "Il n'y a pas de champs supplémentaires pour cet élément",
 listViewTemplate: {
  columns: [
   {name: 'Field', field: 'field', title: "Champ", type: 'String'},
   {name: 'Value', field: 'value', title: "Valeur", type: 'String'}
   ],
  rowClasses: [
   ],
  buttons: [
   ]}});

merge(config.shadowTiddlers,{
 DefaultTiddlers: "GettingStarted",
 MainMenu: "GettingStarted",
 TranslatedGettingStarted: "Pour utiliser ce //bloc-notes// TiddlyWiki, commencez par modifier les //éléments// suivants (''//tiddlers//'' dans le jargon TiddlyWiki) :\n* __SiteTitle__ et __SiteSubtitle__ : Le titre et le sous-titre de ce //bloc-notes// TiddlyWiki. Après modification, ils apparaîtront aussi dans la barre de titre du navigateur)\n* __MainMenu__: Le menu principal (généralement à gauche)\n* __DefaultTiddlers__ : La liste les noms des //éléments// que vous voulez voir s'afficher à l'ouverture de ce //bloc-notes// TiddlyWiki. \n* Entrez également le ''nom d'utilisateur'' avec lequel seront signés vos ajouts ou vos modifications dans les //éléments// :\n** <<option txtUserName>>",
 SiteTitle: "Mon TiddlyWiki",
 SiteSubtitle: "organiseur personnel web interactif et autoporteur",
 SiteUrl: "http://www.tiddlywiki.com/",
 OptionsPanel: "Les options de configuration de ce bloc-notes TiddlyWiki sont sauvegardées dans des cookies de votre navigateur.\n\nNom d'utilisateur avec lequel seront signés vos ajouts ou vos modifications dans les éléments (par exemple Jeremy_Ruston).\n\n<<option txtUserName>>\n<<option chkSaveBackups>> Backup de chaque version\n<<option chkAutoSave>> Backup à chaque modification\n<<option chkRegExpSearch>> Expression régulières dans les recherches\n<<option chkCaseSensitiveSearch>> Respecter la casse dans les recherches\n<<option chkAnimate>> Animations à l'ouverture des éléments\n\n----\nVoir aussi [[Options Avancées|AdvancedOptions]]",
 SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options  »" "Modifie les options supplémentaires de ce bloc-notes TiddlyWiki">>',
 SideBarTabs: '<<tabs txtMainTab "Chrono" "Affichage chronologique" TabTimeline "Alpha" "Liste alphabétique des éléments" TabAll "Mot-clé" "Liste de tous les mot-clés" TabTags "Autres" "Autres listes" TabMore>>',
 TabMore: '<<tabs txtMoreTab "Manquants" "Eléments manquants" TabMoreMissing "Orphelins" "Eléments orphelins" TabMoreOrphans "Masqués" "Eléments masqués" TabMoreShadowed>>'});

merge(config.annotations,{
 AdvancedOptions: "Cet élément masqué permet d'accéder à différentes options avancées",
 ColorPalette: "Les valeurs de cet élément masqué détermine la palette des couleurs utilisées pour l'interface utilisateur de TiddlyWiki",
 DefaultTiddlers: "Les éléments enumérés dans cet élément seront automatiquement affichés au démarrage de TiddlyWiki",
 EditTemplate: "Le gabarit HTML dans cet élément masqué détermine la manière dont les éléments sont présentés lorsqu'ils sont édités",
 GettingStarted: "Cet élément fournit quelques instructions basiques pour utiliser un bloc-notes TiddlyWiki",
 ImportTiddlers: "Cet élément par défaut fournit l'accès à l'interface d'import d'éléments",
 MainMenu: "Le contenu de cet élément défini le menu de la colonne de gauche de cette feuille HTML",
 MarkupPreHead: "Le contenu de cet élément est inséré au début de la section <head> du fichier HTML de ce bloc-notes TiddlyWiki",
 MarkupPostHead: "Le contenu de cet élément est inséré à la fin de la section <head> du fichier HTML de ce bloc-notes TiddlyWiki",
 MarkupPreBody: "Le contenu de cet élément est inséré au début de la section <body> du fichier HTML de ce bloc-notes TiddlyWiki",
 MarkupPostBody: "Le contenu de cet élément est inséré à la fin de la section <body> du fichier HTML de ce bloc-notes TiddlyWiki, immédiatement avant le bloc 'script'",
 OptionsPanel: "Le contenu de cet élément par défaut est utilisé par le panneau déroulant des options dans la colonne de droite de cette feuille HTML",
 PageTemplate: "Le gabarit HTML de cet élément masqué détermine la mise en page générale de ce bloc-notes TiddlyWiki",
 PluginManager: "Cet élément masqué permet d'accéder au gestionnaire d'extensions",
 SideBarOptions: "Le contenu de cet élément par défaut est utilisé par le panneau des options dans la barre de droite de la feuille HTML",
 SideBarTabs: "Le contenu de cet élément par défaut est utilisé par le panneau des onglets dans la barre de droite de la feuille HTML",
 SiteSubtitle: "Cet élément est utilisé comme deuxième partie du titre de la page",
 SiteTitle: "Cet élément est utilisé comme première partie du titre de la page",
 SiteUrl: "Cet élément par défaut doit contenir l'URL complet du site utilisé pour la publication",
 StyleSheetColours: "Cet élément par défaut contient des définitions CSS concernant les couleurs des composants de page",
 StyleSheet: "Cet éléments par défaut contient des définitions CSS personnalisées",
 StyleSheetLayout: "Cet éléments par défaut contient des définitions CSS concernant la mise en page de composants",
 StyleSheetLocale: "Cet élément par défaut contient des définitions CSS concernant la traduction ",
 StyleSheetPrint: "Cet élément par défaut contient des définitions CSS pour l'impression",
 TabAll: "Le contenu de cet élément par défaut est utilisé par le panneau de l'onglet 'Alpha' dans la colonne de droite de cette feuille HTML",
 TabMore: "Cet élément par défaut contient le contenu de l'onglet 'Suite' dans la barre de droite de l'écran",
 TabMoreMissing: "Cet élément par défaut contient le contenu de l'onglet 'Manquants' dans la colonne de droite de cette feuille HTML",
 TabMoreOrphans: "Cet élément par défaut contient le contenu de l'onglet 'Orphelins' dans la colonne de droite de cette feuille HTML",
 TabMoreShadowed: "Cet élément par défaut contient le contenu de l'onglet 'Défaut' dans la colonne de droite de cette feuille HTML",
 TabTags: "Cet élément par défaut contient le contenu de l'onglet 'Mot-clé' dans la colonne de droite de cette feuille HTML",
 TabTimeline: "Cet élément par défaut contient le contenu de l'onglet 'Chrono' dans la colonne de droite de cette feuille HTML",
 ViewTemplate: "Le gabarit HTML dans cet élément par défaut determine comment sont présentés les éléments"
 });
//}}}
/***
|''Name:''|FrenchTranslationPlugin-TW253 by ocalTW and Nicolas Syssoieff |
|''Description:''|Translation of TiddlyWiki 2.5.3 into French |
|''Author:''|ocalTW ( FrenchTranslationPlugin (at) ocalTW (dot) com ) and Nicolas Syssoieff (nicolas.syssoieff+translation (at) gmail (dot) com) |
|''Source:''|http://www.tiddlywiki.fr#FrenchTranslationPlugin |
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/association/locales/core/en/locale.en.js |
|''Version:''|0.3.9|
|''Date:''|Aug 18th, 2009|
|''Comments:''|Mail at http://groups.google.com/group/TiddlyWikiFR |
|''History:''|Translations:<br>v2.1.3 by Jacques Turbé<br>v2.2 by ~BidiX<br>v2.3.x & v2.4.x by ocalTW<br>v2.5.1 up to 2.5.3 by ocalTW and Nicolas Syssoieff |
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]] |
|''~CoreVersion:''|2.5.3|
***/

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

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

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

if (config.options.txtUserName == 'YourName') // do not translate this line, but do translate the next line
    merge(config.options,{txtUserName: "VotreNom"});

merge(config.tasks,{
    save: {text: "enregistrer", tooltip: "Enregistrer les modifications dans ce TiddlyWiki", action: saveChanges},
    sync: {text: "synchroniser", tooltip: "Synchroniser les modifications avec d'autres fichiers ou serveurs TiddlyWiki", content: '<<sync>>'},
    importTask: {text: "importer", tooltip: "Importer des tiddlers et des plugins depuis d'autres fichiers ou serveurs TiddlyWiki", content: '<<importTiddlers>>'},
    tweak: {text: "configurer", tooltip: "Configurer l'apparence et le comportement de TiddlyWiki", content: '<<options>>'},
    upgrade: {text: "mettre à jour", tooltip: "Mettre à jour le noyau de TiddlyWiki", content: '<<upgrade>>'},
    plugins: {text: "plugins", tooltip: "Gérer les plugins installés", content: '<<plugins>>'}
});

// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
    txtUserName: "Nom d'utilisateur",
    chkRegExpSearch: "Utiliser les expressions régulières dans les recherches",
    chkCaseSensitiveSearch: "Recherche sensible à la casse",
    chkIncrementalSearch: "Recherche incrémentale touche par touche",
    chkAnimate: "Activer les animations",
    chkSaveBackups: "Générer un backup à chaque enregistrement",
    chkAutoSave: "Enregistrer automatiquement les modifications",
    chkGenerateAnRssFeed: "Générer un flux RSS à chaque enregistrement",
    chkSaveEmptyTemplate: "Générer un modèle vide empty.html à chaque enregistrement",
    chkOpenInNewWindow: "Ouvrir les liens externes dans une nouvelle fenêtre",
    chkToggleLinks: "Cliquer sur les liens des tiddlers déjà ouverts les ferme",
    chkHttpReadOnly: "Masquer les fonctions d'édition lors des consultations par HTTP",
    chkForceMinorUpdate: "Ne mettre à jour ni le nom d'utilisateur, ni la date lors de l'édition des tiddlers",
    chkConfirmDelete: "Demander une confirmation avant de supprimer un tiddler",
    chkInsertTabs: "Utiliser la touche 'tab' pour insérer une tabulation au lieu de changer de champ",
    txtBackupFolder: "Nom du répertoire à utiliser pour les backups",
    txtMaxEditRows: "Nombre maximum de lignes dans les zones d'édition",
    txtTheme: "Nom du thème à utiliser",
    txtFileSystemCharSet: "Jeu de caractères à utiliser pour l'enregistrement (uniquement pour Firefox/Mozilla)"});

merge(config.messages,{
    customConfigError: "Problèmes rencontrés pendant le chargement des plugins. Consulter 'PluginManager' pour plus de détails",
    pluginError: "Erreur : %0",
    pluginDisabled: "Plugin non éxécuté car désactivé par le label 'systemConfigDisable'",
    pluginForced: "Plugin exécuté de façon forcée par l'utilisation du label 'systemConfigForce'",
    pluginVersionError: "Plugin non éxécuté car il requiert une version plus récente de TiddlyWiki",
    nothingSelected: "Vous devez d'abord sélectionner un ou plusieurs items",
    savedSnapshotError: "Ce fichier TiddlyWiki ne semble pas être conforme ou n'a pas été enregistré correctement. Consulter http://www.tiddlywiki.com/#Download pour de plus amples détails",
    subtitleUnknown: "(inconnu)",
    undefinedTiddlerToolTip: "Le tiddler '%0' n'existe pas encore",
    shadowedTiddlerToolTip: "Le tiddler '%0' n'existe pas encore, mais a déjà un contenu par défaut",
    tiddlerLinkTooltip: "%0 - %1, %2",
    externalLinkTooltip: "Lien externe vers %0",
    noTags: "Il n'y a pas de tiddlers avec des tags",
    notFileUrlError: "Vous devez enregistrer ce TiddlyWiki dans un fichier avant de pouvoir enregistrer vos modifications",
    cantSaveError: "Impossible d'enregistrer les modifications.\n- Soit votre navigateur ne supporte pas cette fonction (Firefox, Internet Explorer, Safari et Opera fonctionnent s'ils sont configurés correctement)\n- Soit le chemin d'accès à votre fichier TiddlyWiki contient des caractères illégaux\n- Soit le fichier TiddlyWiki a été déplacé ou renommé",
    invalidFileError: "Le fichier original '%0' ne semble pas être un TiddlyWiki valide",
    backupSaved: "Backup enregistré",
    backupFailed: "Echec de l'enregistrement du fichier backup",
    rssSaved: "Flux RSS enregistré",
    rssFailed: "Echec de l'enregistrement du fichier de flux RSS",
    emptySaved: "Modèle vide 'empty.html' enregistré",
    emptyFailed: "Echec de l'enregistrement du modèle TiddlyWiki vide 'empty.html'",
    mainSaved: "Fichier TiddlyWiki enregistré",
    mainFailed: "Echec de l'enregistrement du fichier TiddlyWiki. Vos modifications ne sont pas enregistrées",
    macroError: "Erreur dans la macro <<\%0>>",
    macroErrorDetails: "Erreur pendant l'éxécution de la macro <<\%0>>:\n%1",
    missingMacro: "Macro non trouvée",
    overwriteWarning: "Un tiddler nommé '%0' existe déjà. Cliquer sur OK pour l'écraser",
    unsavedChangesWarning: "ATTENTION! Certaines modifications ne sont pas enregistrées dans le fichier TiddlyWiki\n\nCliquer sur 'OK' pour les enregistrer\nCliquer sur 'ANNULER' pour les ignorer",
    confirmExit: "--------------------------------\n\nCertaines modifications ne sont pas enregistrées dans TiddlyWiki. Si vous continuez ces modifications seront perdues\n\n--------------------------------",
    saveInstructions: "Enregistrer les Modifications",
    unsupportedTWFormat: "Format de TiddlyWiki non supporté '%0'",
    tiddlerSaveError: "Erreur pendant l'enregistrement du tiddler '%0'",
    tiddlerLoadError: "Erreur pendant le chargement du tiddler '%0'",
    wrongSaveFormat: "Impossible d'enregistrer avec le format de stockage '%0'. Utiliser un format standard pour enregistrer.",
    invalidFieldName: "Nom de champ invalide %0",
    fieldCannotBeChanged: "Le champ '%0' ne peut pas être modifié",
    loadingMissingTiddler: "Tentative de récupération du tiddler '%0' à partir du serveur '%1' à :\n\n'%2' dans l'espace de travail '%3'",
    upgradeDone: "La mise à jour en version %0 est effectuée\n\nCliquer sur OK pour recharger la nouvelle version de TiddlyWiki"});

merge(config.messages.messageClose,{
    text: "fermer",
    tooltip: "fermer cette zone de messages"});

config.messages.backstage = {
    open: {text: "barre d'outils", tooltip: "Ouvrir la barre d'outils pour effectuer des tâches de maintenance : synchronisation, export, import, mise à jour, gestion des plugins"},
    close: {text: "fermer", tooltip: "Fermer la barre d'outils"},
    prompt: "Outils : ",
    decal: {
        edit: {text: "éditer", tooltip: "Editer le tiddler '%0'"}
    }
};

config.messages.listView = {
    tiddlerTooltip: "Cliquer pour une vue complète de ce tiddler",
    previewUnavailable: "(aperçu non disponible)"
};

config.messages.dates.months = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre","décembre"];
config.messages.dates.days = ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"];
config.messages.dates.shortMonths = ["jan.", "fev.", "mar.", "avr.", "mai", "juin", "juil", "aou.", "sep.", "oct.", "nov.", "dec."];
config.messages.dates.shortDays = ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"];
// suffixes for dates, eg "1st","2nd","3rd"..."30th","31st"
config.messages.dates.daySuffixes = ["er","","","","","","","","","",
        "","","","","","","","","","",
        "","","","","","","","","","",
        ""];
config.messages.dates.am = "matin";
config.messages.dates.pm = "après-midi";

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

merge(config.views.wikified.tag,{
    labelNoTags: "pas de label",
    labelTags: "labels : ",
    openTag: "Ouvrir le label '%0'",
    tooltip: "Afficher les tiddlers ayant pour label '%0'",
    openAllText: "Tout ouvrir",
    openAllTooltip: "Ouvrir tous ces tiddlers",
    popupNone: "Pas d'autres tiddlers avec le label '%0'"});

merge(config.views.wikified,{
    defaultText: "Le tiddler '%0' n'existe pas encore. Double-cliquer pour le créer",
    defaultModifier: "(manquant)",
    shadowModifier: "(tiddler masqué par défaut)",
    dateFormat: "DD MMM YYYY", // Utilisé pour changer le format de la date (ici : "YYYY MMM DD"), ne pas changer les lettres D (jour), M (mois) ou Y (année)
    createdPrompt: "créé le"});

merge(config.views.editor,{
    tagPrompt: "Entrer des labels séparés par des espaces, [[entre double crochets]] si nécessaire, ou ajouter des labels existants :",
    defaultText: "Entrer le texte pour '%0'"});

merge(config.views.editor.tagChooser,{
    text: "labels",
    tooltip: "Sélectionner des labels existants à ajouter à ce tiddler",
    popupNone: "Aucun label défini",
    tagTooltip: "Ajouter le label '%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: "recherche",
    prompt: "Rechercher dans ce TiddlyWiki",
    accessKey: "F",
    successMsg: "%0 tiddlers trouvés contenant %1",
    failureMsg: "Aucun tiddler ne contient %0"});

merge(config.macros.tagging,{
	label: "avec ce label : ",
	labelNotTag: "aucun tiddler avec ce label",
	tooltip: "Liste des tiddlers avec le label '%0'"});

merge(config.macros.timeline,{
    dateFormat: "DD MMM YYYY"}); // Utilisé pour changer le format de la date (ici : "YYYY MMM DD"), ne pas changer les lettres D (jour), M (mois) ou Y (année)

merge(config.macros.allTags,{
    tooltip: "Afficher les tiddlers avec le label '%0'",
    noTags: "Aucun tiddler n'a de label"});

config.macros.list.all.prompt = "Tous les tiddlers classés par ordre alphabétique";
config.macros.list.missing.prompt = "Tiddlers pointés par un lien mais non créés";
config.macros.list.orphans.prompt = "Tiddlers orphelins qui ne sont référencés par aucun autre tiddler";
config.macros.list.shadowed.prompt = "Tiddlers masqués avec contenu par défaut";
config.macros.list.touched.prompt = "Tiddlers modifiés localement";

merge(config.macros.closeAll,{
    label: "fermer tout",
    prompt: "Fermer tous les tiddlers affichés (sauf ceux en cours d'édition)"});

merge(config.macros.permaview,{
    label: "permalien",
    prompt: "Lien vers une URL contenant tous les tiddlers affichés actuellement"});

merge(config.macros.saveChanges,{
    label: "enregistrer",
    prompt: "Enregistrer tous les tiddlers du TiddlyWiki",
    accessKey: "S"});

merge(config.macros.newTiddler,{
    label: "nouveau tiddler",
    prompt: "Créer un nouveau tiddler",
    title: "Nouveau Tiddler",
    accessKey: "N"});

merge(config.macros.newJournal,{
    label: "nouveau journal",
    prompt: "Créer un nouveau tiddler avec la date et l'heure",
    accessKey: "J"});

merge(config.macros.options,{
    wizardTitle: "Réglage des options avancées",
    step1Title: "Ces options sont enregistrées dans des cookies dans votre navigateur",
    step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Afficher les options inconnues</input>",
    unknownDescription: "//(inconnu)//",
    listViewTemplate: {
        columns: [
            {name: 'Option', field: 'option', title: "Option", type: 'String'},
            {name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
            {name: 'Name', field: 'name', title: "Nom", type: 'String'}
            ],
        rowClasses: [
            {className: 'lowlight', field: 'lowlight'}
            ]}
    });

merge(config.macros.plugins,{
    wizardTitle: "Gérer les plugins",
    step1Title: "Plugins actifs et chargés actuellement",
    step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
    skippedText: "(Ce plugin n'a pas été éxécuté car il a été ajouté après le chargement de ce fichier TiddlyWiki)",
    noPluginText: "Aucun plugin n'est installé",
    confirmDeleteText: "Etes-vous sûr de vouloir effacer ce(s) plugin(s) :\n\n%0",
    removeLabel: "supprimer le label 'systemConfig'",
    removePrompt: "Supprimer le label 'systemConfig'",
    deleteLabel: "supprimer",
    deletePrompt: "Supprimer définitivement ces tiddlers ",
    listViewTemplate: {
        columns: [
            {name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
            {name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
            {name: 'Description', field: 'Description', title: "Description", type: 'String'},
            {name: 'Version', field: 'Version', title: "Version", type: 'String'},
            {name: 'Size', field: 'size', tiddlerLink: 'size', title: "Taille", type: 'Size'},
            {name: 'Forced', field: 'forced', title: "Forcé", tag: 'systemConfigForce', type: 'TagCheckbox'},
            {name: 'Disabled', field: 'disabled', title: "Désactivé", tag: 'systemConfigDisable', type: 'TagCheckbox'},
            {name: 'Executed', field: 'executed', title: "Chargé", type: 'Boolean', trueText: "Yes", falseText: "No"},
            {name: 'Startup Time', field: 'startupTime', title: "Temps de démarrage", type: 'String'},
            {name: 'Error', field: 'error', title: "Etat", type: 'Boolean', trueText: "Error", falseText: "OK"},
            {name: 'Log', field: 'log', title: "Log", type: 'StringList'}
            ],
        rowClasses: [
            {className: 'error', field: 'error'},
            {className: 'warning', field: 'warning'}
            ]}
    });

merge(config.macros.toolbar,{
    moreLabel: "(plus)",
    morePrompt: "Afficher les commandes supplémentaires",
    lessLabel: "(moins)",
    lessPrompt: "Masquer les commandes supplémentaires",
    separator: "|"
    });

merge(config.macros.refreshDisplay,{
    label: "actualiser",
    prompt: "Actualiser tout le TiddlyWiki"
    });

merge(config.macros.importTiddlers,{
    readOnlyWarning: "Impossible d'importer dans un TiddlyWiki en lecture seule. Ouvrir le TiddlyWiki depuis une URL 'file://'",
    wizardTitle: "Importer des tiddlers depuis un autre fichier ou serveur",
    step1Title: "Etape 1: Localiser le serveur ou le fichier TiddlyWiki",
    step1Html: "Spécifier le type de serveur : <select name='selTypes'><option value=''>Choisir...</option></select><br>Entrer l'URL ou le chemin ici : <input type='text' size=50 name='txtPath'><br>...ou rechercher un fichier en local : <input type='file' size=50 name='txtBrowse'><br><hr>...ou sélectionner une source pré-définie : <select name='selFeeds'><option value=''>Choisir...</option></select>",
    openLabel: "ouvrir",
    openPrompt: "Ouvrir la connexion vers ce fichier ou ce serveur",
    openError: "Problèmes pour récupérer le fichier TiddlyWiki",
    statusOpenHost: "Accès à l'hôte",
    statusGetWorkspaceList: "Récupération de la liste des espaces de travail",
    step2Title: "Etape 2: Choisir l'espace de travail",
    step2Html: "Entrer le nom de l'espace de travail : <input type='text' size=50 name='txtWorkspace'><br>...ou sélectionner un espace de travail : <select name='selWorkspace'><option value=''>Choisir...</option></select>",
    cancelLabel: "annuler",
    cancelPrompt: "Annuler l'import",
    statusOpenWorkspace: "Ouverture de l'espace de travail",
    statusGetTiddlerList: "Récupération de la liste des tiddlers disponibles",
    errorGettingTiddlerList: "Erreur pendant la récupération des tiddlers, cliquer sur 'Annuler' pour ré-essayer",
    step3Title: "Etape 3: Choisir les tiddlers à importer",
    step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Lier ces tiddlers à ce serveur pour pouvoir synchroniser les modifications ultérieures</input><br><input type='checkbox' name='chkSave'>Enregistrer les détails de ce serveur dans un tiddler 'systemServer' nommé : </input> <input type='text' size=25 name='txtSaveTiddler'>",
    importLabel: "importer",
    importPrompt: "Importer ces tiddlers",
    confirmOverwriteText: "Etes-vous sûr de vouloir remplacer ces tiddlers :\n\n%0",
    step4Title: "Etape 4: Import de %0 tiddler(s)",
    step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
    doneLabel: "terminé",
    donePrompt: "Fermer cet assistant",
    statusDoingImport: "Import des tiddlers en cours",
    statusDoneImport: "Tous les tiddlers ont été importés",
    systemServerNamePattern: "%2 sur %1",
    systemServerNamePatternNoWorkspace: "%1",
    confirmOverwriteSaveTiddler: "Le tiddler '%0' existe déjà. Cliquer sur 'OK' pour le remplacer avec les détails de ce serveur, ou sur 'Annuler' pour le conserver",
    serverSaveTemplate: "|''Type:''|%0|\n|''URL:''|%1|\n|''Espace de travail:''|%2|\n\nCe tiddler a été créé automatiquement pour enregistrer les détails de ce serveur",
    serverSaveModifier: "(Système)",
    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: "Taille", type: 'Size'},
            {name: 'Tags', field: 'tags', title: "Labels", type: 'Tags'}
            ],
        rowClasses: [
            ]}
    });

merge(config.macros.upgrade,{
    wizardTitle: "Mettre à jour le noyau de TiddlyWiki",
    step1Title: "Mettre à jour ou réparer ce TiddlyWiki avec la dernière version",
    step1Html: "Vous allez faire une mise à jour du noyau de TiddlyWiki à la dernière version (depuis <a href='%0' class='externalLink' target='_blank'>%1</a>). Votre contenu sera préservé après la mise à jour.<br><br>Les mise à jour du noyau peuvent interférer avec d'anciens plugins. Si vous rencontrez des problèmes avec le TiddlyWiki après la mise à jour, consulter <a href='http://www.tiddlywiki.org/wiki/CoreUpgrades' class='externalLink' target='_blank'>http://www.tiddlywiki.org/wiki/CoreUpgrades</a>",
    errorCantUpgrade: "Impossible de mettre à jour ce TiddlyWiki. La mise à jour n'est possible que sur des fichiers stockés sur un disque local",
    errorNotSaved: "Enregistrer les changements avant  pouvoir réaliser la mise à jour",
    step2Title: "Confirmer les détails de la mise à jour",
    step2Html_downgrade: "Vous êtes sur le point de faire un retour arrière à la version de TiddlyWiki %0 depuis la version %1.<br><br>Le retour arrière vers une version antérieure du noyau n'est pas recommandée",
    step2Html_restore: "Ce TiddlyWiki semble déjà utiliser la dernière version disponible du noyau (%0).<br><br>Vous pouvez quand même continuer la mise à jour pour vous assurer que le noyau n'a été ni corrompu ni endommagé",
    step2Html_upgrade: "Vous êtes sur le point de faire la mise à jour vers TiddlyWiki en version %0 depuis la version %1",
    upgradeLabel: "mettre à jour",
    upgradePrompt: "Préparation à la mise à jour",
    statusPreparingBackup: "Préparation du backup",
    statusSavingBackup: "Enregistrement du fichier de backup",
    errorSavingBackup: "Problème pour enregistrer le fichier de backup",
    statusLoadingCore: "Chargement du noyau",
    errorLoadingCore: "Erreur de chargement du noyau",
    errorCoreFormat: "Erreur avec le nouveau noyau",
    statusSavingCore: "Enregistrement du nouveau noyau",
    statusReloadingCore: "Rechargement du nouveau noyau",
    startLabel: "démarrer",
    startPrompt: "Démarrer la mise à jour",
    cancelLabel: "annuler",
    cancelPrompt: "Annuler la mise à jour",
    step3Title: "Mise à jour annulée",
    step3Html: "Vous avez annulé la mise à jour"
    });

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: "Type de serveur", type: 'String'},
            {name: 'Server Host', field: 'serverHost', title: "Hôte serveur", type: 'String'},
            {name: 'Server Workspace', field: 'serverWorkspace', title: "Espace de travail du serveur", type: 'String'},
            {name: 'Status', field: 'status', title: "Etat de la synchronisation", type: 'String'},
            {name: 'Server URL', field: 'serverUrl', title: "URL du serveur", text: "View", type: 'Link'}
            ],
        rowClasses: [
            ],
        buttons: [
            {caption: "Synchroniser ces tiddlers", name: 'sync'}
            ]},
    wizardTitle: "Synchroniser avec des serveurs et fichiers externes",
    step1Title: "Choisir les tiddlers à synchroniser",
    step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
    syncLabel: "synchroniser",
    syncPrompt: "Synchroniser ces tiddlers",
    hasChanged: "Modifié pendant la déconnexion",
    hasNotChanged: "Non modifié pendant la déconnexion",
    syncStatusList: {
        none: {text: "...", color: "transparent", display:null},
        changedServer: {text: "Modifié sur le serveur", color: '#8080ff', display:null},
        changedLocally: {text: "Modifié pendant la déconnexion", color: '#80ff80', display:null},
        changedBoth: {text: "Changé pendant la déconnexion et sur le serveur", color: '#ff8080', display:null},
        notFound: {text: "Introuvable sur le serveur", color: '#ffff80', display:null},
        putToServer: {text: "Mise à jour enregistrée sur le serveur", color: '#ff80ff', display:null},
        gotFromServer: {text: "Mise à jour récupérée depuis le serveur", color: '#80ffff', display:null}
        }
    });

merge(config.commands.closeTiddler,{
    text: "fermer",
    tooltip: "Fermer ce tiddler"});

merge(config.commands.closeOthers,{
    text: "isoler",
    tooltip: "Fermer tous les autres tiddlers"});

merge(config.commands.editTiddler,{
    text: "éditer",
    tooltip: "Editer ce tiddler",
    readOnlyText: "voir",
    readOnlyTooltip: "Afficher la source de ce tiddler"});

merge(config.commands.saveTiddler,{
    text: "valider",
    tooltip: "Confirmer les modifications effectuées sur ce tiddler"});

merge(config.commands.cancelTiddler,{
    text: "annuler",
    tooltip: "Annuler les modifications de ce tiddler",
    warning: "Etes-vous sûr de vouloir abandonner les modifications de '%0'?",
    readOnlyText: "retour",
    readOnlyTooltip: "Retour à l'affichage normal de ce tiddler"});

merge(config.commands.deleteTiddler,{
    text: "supprimer",
    tooltip: "Supprimer ce tiddler",
    warning: "Confirmez-vous la suppression de '%0'?"});

merge(config.commands.permalink,{
    text: "permalien",
    tooltip: "Permalien de ce tiddler"});

merge(config.commands.references,{
    text: "références",
    tooltip: "Afficher les tiddlers qui font référence à ce tiddler",
    popupNone: "Aucune référence"});

merge(config.commands.jump,{
    text: "atteindre",
    tooltip: "Atteindre un autre tiddler ouvert dans ce document"});

merge(config.commands.syncing,{
    text: "synchronisation",
    tooltip: "Contrôler la synchronisation de ce tiddler avec un serveur ou un fichier externe",
    currentlySyncing: "<div>Actuellement synchronisé via <span class='popupHighlight'>'%0'</span> vers :</"+"div><div>host: <span class='popupHighlight'>%1</span></"+"div><div>workspace: <span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
    notCurrentlySyncing: "Pas de synchronisation",
    captionUnSync: "Interrompre la synchronisation de ce tiddler",
    chooseServer: "Synchroniser ce tiddler avec un autre serveur :",
    currServerMarker: "\u25cf ",
    notCurrServerMarker: "  "});

merge(config.commands.fields,{
    text: "champs",
    tooltip: "Afficher les champs supplémentaires de ce tiddler",
    emptyText: "Il n'y a pas de champs supplémentaires pour ce tiddler",
    listViewTemplate: {
        columns: [
            {name: 'Field', field: 'field', title: "Champs", type: 'String'},
            {name: 'Value', field: 'value', title: "Valeur", type: 'String'}
            ],
        rowClasses: [
            ],
        buttons: [
            ]}});

merge(config.shadowTiddlers,{
    DefaultTiddlers: "[[PourCommencer]]",
    MainMenu: "[[PourCommencer]]\n\n\n^^~TiddlyWiki version <<version>>\n© 2007 [[UnaMesa|http://www.unamesa.org/]]^^",
    PourCommencer: "Pour bien commencer avec un TiddlyWiki vide, vous devez modifier les tiddlers suivants :\n* SiteTitle & SiteSubtitle: Le titre et le sous-titre du site, visibles ci-dessus (après enregistrement, ils apparaîtront également dans la barre de titre du navigateur)\n* MainMenu: Le menu (généralement à gauche)\n* DefaultTiddlers: Contient le nom des tiddlers que vous souhaitez ouvrir automatiquement au chargement de votre TiddlyWiki\nVous devez également entrer votre nom d'utilisateur pour signer vos modifications : <<option txtUserName>>",
    SiteTitle: "Mon TiddlyWiki",
    SiteSubtitle: "bloc-notes, organiseur personnel interactif, et bien d'autres choses encore ...",
    SiteUrl: "http://www.tiddlywiki.com/",
    OptionsPanel: "Les options de configuration pour adapter votre TiddlyWiki sont enregistrées dans votre navigateur\n\nVotre nom d'utilisateur pour signer vos modifications. Ecrivez-le comme un WikiWord (ex PierreDupont)\n<<option txtUserName>>\n\n<<option chkSaveBackups>> Enregistrer backups\n<<option chkAutoSave>> Enregistrement auto\n<<option chkRegExpSearch>> Recherche avec regexp\n<<option chkCaseSensitiveSearch>> Recherche sensible à la casse\n<<option chkAnimate>> Activer animations\n\n----\nVoir aussi [[OptionsAvancées|AdvancedOptions]]",
    SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options \u00bb" "Modifier les options avancées de TiddlyWiki">>',
    SideBarTabs: '<<tabs txtMainTab "Chrono" "Affichage chronologique" TabTimeline "Tous" "Tous les tiddlers" TabAll "Labels" "Tous les labels" TabTags "Plus" "Autres listes" TabMore>>',
    TabMore: '<<tabs txtMoreTab "Manquants" "Tiddlers manquants" TabMoreMissing "Orphelins" "Tiddlers orphelins" TabMoreOrphans "Masqués" "Tiddlers masqués" TabMoreShadowed>>'
    });

merge(config.annotations,{
    AdvancedOptions: "Ce tiddler masqué permet d'accéder à de nombreuses options avancées",
    ColorPalette: "Les valeurs de ce tiddler masqué déterminent la palette de couleur de l'interface utilisateur de ce ~TiddlyWiki",
    DefaultTiddlers: "Les tiddlers listés dans ce tiddler masqué seront automatiquement affichés à l'ouverture de ce ~TiddlyWiki",
    EditTemplate: "Le gabarit HTML de ce tiddler masqué détermine l'apparence d'un tiddler en mode édition",
    GettingStarted: "Ce tiddler masqué contient des instructions d'utilisation basiques",
    ImportTiddlers: "Ce tiddler masqué permet d'accéder au fonctions d'import des tiddlers",
    MainMenu: "Ce tiddler masqué contient le contenu du menu principal situé dans la colonne de gauche du TiddlyWiki",
    MarkupPreHead: "Ce tiddler est inséré en haut de la section <head> du fichier TiddlyWiki",
    MarkupPostHead: "Ce tiddler est inséré en bas de la section <head> du fichier TiddlyWiki",
    MarkupPreBody: "Ce tiddler est inséré en haut de la section <body> du fichier TiddlyWiki",
    MarkupPostBody: "Ce tiddler est inséré en haut de la section <body> du fichier TiddlyWiki immédiatement après le bloc de script",
    OptionsPanel: "Ce tiddler masqué contient le menu déroulant d'options de la colonne de droite du TiddlyWiki",
    PageTemplate: "Le gabarit HTML de ce tiddler masqué détermine l'apparence complète du TiddlyWiki",
    PluginManager: "Ce tiddler masqué permet d'accéder au gestionnaire de plugins",
    SideBarOptions: "Ce tiddler masqué contient le menu d'options de la colonne de droite du TiddlyWiki",
    SideBarTabs: "Ce tiddler masqué contient le menu en onglets de la colonne de droite du TiddlyWiki",
    SiteSubtitle: "Ce tiddler masqué contient la deuxième partie du titre de la page",
    SiteTitle: "Ce tiddler masqué contient la première partie du titre de la page",
    SiteUrl: "Ce tiddler masqué doit contenir l'URL complète du site utilisée pour la publication",
    StyleSheetColors: "Ce tiddler masqué contient les définitions de style CSS liées à la couleur des différents éléments des pages. 'NE PAS EDITER CE TIDDLER', faire des modifications dans le tiddler masqué StyleSheet",
    StyleSheet: "Ce tiddler peut contenir des définitions de style CSS personnalisées",
    StyleSheetLayout: "Ce tiddler masqué contient les définitions de style CSS liées à la disposition des différents éléments des pages. 'NE PAS EDITER CE TIDDLER', faire des modifications dans le tiddler masqué StyleSheet",
    StyleSheetLocale: "Ce tiddler masqué contient les définitions de style CSS pour la traduction",
    StyleSheetPrint: "Ce tiddler masqué contient les définitions de style CSS pour l'impression",
    TabAll: "Ce tiddler masqué contient l'onglet 'Tous' de la colonne de droite du TiddlyWiki",
    TabMore: "TCe tiddler masqué contient l'onglet 'Plus' de la colonne de droite du TiddlyWiki",
    TabMoreMissing: "Ce tiddler masqué contient l'onglet 'Manquants' de la colonne de droite du TiddlyWiki",
    TabMoreOrphans: "Ce tiddler masqué contient l'onglet 'Orphelins' de la colonne de droite du TiddlyWiki",
    TabMoreShadowed: "Ce tiddler masqué contient l'onglet 'Masqués' de la colonne de droite du TiddlyWiki",
    TabTags: "Ce tiddler masqué contient l'onglet 'Labels' de la colonne de droite du TiddlyWiki",
    TabTimeline: "Ce tiddler masqué contient l'onglet 'Chrono' de la colonne de droite du TiddlyWiki",
    ToolbarCommands: "Ce tiddler masqué détermine quelles commandes sont affichées dans les barre d'outils des tiddlers",
    ViewTemplate: "Le gabarit HTML de ce tiddler masqué détermine l'apparence d'un tiddler en mode normal"
    });

//}}}
/***
|Name|HTMLFormattingPlugin|
|Source|http://www.TiddlyTools.com/#HTMLFormattingPlugin|
|Documentation|http://www.TiddlyTools.com/#HTMLFormattingPluginInfo|
|Version|2.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|embed wiki syntax formatting inside of HTML content|
The ~HTMLFormatting plugin allows you to ''mix wiki-style formatting syntax within HTML formatted content'' by extending the action of the standard TiddlyWiki formatting handler.
!!!!!Documentation
>see [[HTMLFormattingPluginInfo]]
!!!!!Configuration
<<<
Use {{{<hide linebreaks>}}} within HTML content to wiki-style rendering of line breaks.  To //always// omit all line breaks from the rendered output, you can set this option:
><<option chkHTMLHideLinebreaks>> ignore all line breaks
which can also be 'hard coded' into your document by adding the following to a tiddler, tagged with <<tag systemConfig>>
>{{{config.options.chkHTMLHideLinebreaks=true;}}}
<<<
!!!!!Revisions
<<<
2010.05.07 2.4.1 added chkHTMLHideLinebreaks option
| see [[HTMLFormattingPluginInfo]] for additional revision details |
2005.06.26 1.0.0 Initial Release (as code adaptation - pre-dates TiddlyWiki plugin architecture!!)
<<<
!!!!!Code
***/
//{{{
version.extensions.HTMLFormattingPlugin= {major: 2, minor: 4, revision: 1, date: new Date(2010,5,7)};

// find the formatter for HTML and replace the handler
initHTMLFormatter();
function initHTMLFormatter()
{
	for (var i=0; i<config.formatters.length && config.formatters[i].name!="html"; i++);
	if (i<config.formatters.length)	config.formatters[i].handler=function(w) {
		if (!this.lookaheadRegExp)  // fixup for TW2.0.x
			this.lookaheadRegExp = new RegExp(this.lookahead,"mg");
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var html=lookaheadMatch[1];
			// if <nowiki> is present, just let browser handle it!
			if (html.indexOf('<nowiki>')!=-1)
				createTiddlyElement(w.output,"span").innerHTML=html;
			else {
				// if <hide linebreaks> is present, or chkHTMLHideLinebreaks is set
				// suppress wiki-style literal handling of newlines
				if (config.options.chkHTMLHideLinebreaks||(html.indexOf('<hide linebreaks>')!=-1))
					html=html.replace(/\n/g,' ');
				// remove all \r's added by IE textarea and mask newlines and macro brackets
				html=html.replace(/\r/g,'').replace(/\n/g,'\\n').replace(/<</g,'%%(').replace(/>>/g,')%%');
				// create span, let browser parse HTML
				var e=createTiddlyElement(w.output,"span"); e.innerHTML=html;
				// then re-render text nodes as wiki-formatted content
				wikifyTextNodes(e,w);
			}
			w.nextMatch = this.lookaheadRegExp.lastIndex; // continue parsing
		}
	}
}

// wikify #text nodes that remain after HTML content is processed (pre-order recursion)
function wikifyTextNodes(theNode,w)
{
	function unmask(s) { return s.replace(/\%%\(/g,'<<').replace(/\)\%%/g,'>>').replace(/\\n/g,'\n'); }
	switch (theNode.nodeName.toLowerCase()) {
		case 'style': case 'option': case 'select':
			theNode.innerHTML=unmask(theNode.innerHTML);
			break;
		case 'textarea':
			theNode.value=unmask(theNode.value);
			break;
		case '#text':
			var txt=unmask(theNode.nodeValue);
			var newNode=createTiddlyElement(null,"span");
			theNode.parentNode.replaceChild(newNode,theNode);
			wikify(txt,newNode,highlightHack,w.tiddler);
			break;
		default:
			for (var i=0;i<theNode.childNodes.length;i++)
				wikifyTextNodes(theNode.childNodes.item(i),w); // recursion
			break;
	}
}
//}}}
|Name|HTMLFormattingPluginInfo|
|Source|http://www.TiddlyTools.com/#HTMLFormattingPlugin|
|Documentation|http://www.TiddlyTools.com/#HTMLFormattingPluginInfo|
|Version|2.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for HTMLFormattingPlugin|
The ~HTMLFormatting plugin allows you to freely ''mix wiki-style formatting syntax within HTML formatted content'' by extending the action of the standard TiddlyWiki formatting handler.
!!!!!Usage
<<<
The shorthand Wiki-style formatting syntax of ~TiddlyWiki is very convenient and enables most content to be reasonably well presented. However, there are times when tried-and-true HTML formatting syntax allows more more precise control of the content display.

When a tiddler is about to be displayed, ~TiddlyWiki looks for tiddler content contained within {{{<html>}}} and {{{</html>}}} markers.  When present, the TiddlyWiki core simply passes this content directly to the browser's internal "rendering engine" to process as ~HTML-formatted content.  However, TiddlyWiki does not also process the HTML source content for any embedded wiki-formatting syntax it may contain.  This means that while you can use HTML formatted content, you cannot mix wiki-formatted content within the HTML formatting.

This plugin extends the TiddlyWiki core processing so that, after the HTML formatting has been processed, all the pieces of text occuring within the HTML block are then processed one piece at a time, so that normal wiki-style formatting can be applied to the individual text pieces.

Note: To bypass this extended processing for a specific section of HTML content, embed ''{{{<nowiki>}}}'' //anywhere// inside the {{{<html>...</html>}}} delimiters, and wiki formatting will not be applied to that content.
<<<
!!!!!Line breaks
<<<
One major difference between Wiki formatting and HTML formatting is how "line breaks" are processed. Wiki formatting treats all line breaks as literal content to be displayed //as-is//. However, because HTML normally ignores line breaks and actually processes them as simple "word separators" instead, many people who write HTML include extra line breaks in their documents, just to make the "source code" easier to read.

Even though you can use HTML tags within your tiddler content, the default treatment for line breaks still follows the Wiki-style rule (i.e., all new lines are displayed as-is). When adding HTML content to a tiddler (especially if you cut-and-paste it from another web page), you should take care to avoid adding extra line breaks to the text.

If removing all the extra line breaks from your HTML content would be a big hassle, you can quickly //override the default Wiki-style line break rule// so that the line breaks use the standard HTML rules, by placing ''{{{<hide linebreaks>}}}'' //anywhere// within the HTML content.  This automatically converts all line breaks to spaces before rendering the content, so that the literal line breaks will be processed as simple word-breaks instead.

Alternatively, if you //always// want to omit all line breaks from the rendered output, you can set this option:
><<option chkHTMLHideLinebreaks>> ignore all line breaks
which can also be 'hard coded' into your document by adding the following to a tiddler, tagged with <<tag systemConfig>>
>{{{config.options.chkHTMLHideLinebreaks=true;}}}

Note: this does //not// alter the actual tiddler content that is stored in the document, just the manner in which it is displayed. Any line breaks contained in the tiddler will still be there when you edit its content. Also, to include a literal line break when the ''<{{{hide linebreaks}}}>'' tag is present, you will need to use a ''<{{{br}}}>'' or ''<{{{p}}}>'' HTML tag instead of simply typing a line break.
<<<
!!!!!How it works
<<<
The TW core support for HTML does not let you put ANY wiki-style syntax (including TW macros) *inside* the {{{<html>...</html>}}} block.  Everything between {{{<html>}}} and {{{</html>}}} is handed to the browser for processing and that is it.

However, not all wiki syntax can be safely passed through the browser's parser. Specifically, any TW macros inside the HTML will get 'eaten' by the browser since the macro brackets, {{{<<...>>}}} use the "<" and ">" that normally delimit the HTML/XML syntax recognized by the browser's parser.

Similarly, you can't use InlineJavascript within the HTML because the {{{<script>...</script>}}} syntax will also be consumed by the browser and there will be nothing left to process afterward.  Note: unfortunately, even though the browser removes the {{{<script>...</script>}}} sequence, it doesn't actually execute the embedded javascript code that it removes, so any scripts contained inside of <html> blocks in TW are currently being ignored. :-(

As a work-around to allow TW *macros* (but not inline scripts) to exist inside of <html> formatted blocks of content, the plugin first converts the {{{<<}}} and {{{>>}}} into "%%(" and ")%%", making them "indigestible" so they can pass unchanged through the belly of the beast (the browser's HTML parser).

After the browser has done its job, the wiki syntax sequences (including the "undigested" macros) are contained in #text nodes in the browser-generated DOM elements.  The plugin then recursively locates and processes each #text node, converts the %%( and )%% back into {{{<<}}} and {{{>>}}}, passes the result to wikify() for further rendering of the wiki-formatted syntax into a containing SPAN that replaces the previous #text node.  At the end of this process, none of the encoded %%( and )%% sequences remain in the rendered tiddler output.
<<<
!!!!!Revisions
<<<
2010.05.07 2.4.1 added chkHTMLHideLinebreaks option
2009.01.05 2.4.0 in wikifyTextNodes(), pass w.highlightRegExp and w.tiddler to wikify() so that search term highlighting and tiddler-relative macro processing will work
2008.10.02 2.3.0 added use of {{{<nowiki>}}} marker to bypass all wikification inside a specific HTML block
2008.09.19 2.2.0 in wikifyTextNodes(), don't wikify the contents of STYLE nodes (thanks to MorrisGray for bug report)
2008.04.26 [*.*.*] plugin size reduction: more documentation moved to HTMLFormattingInfo
2008.01.08 [*.*.*] plugin size reduction: documentation moved to HTMLFormattingInfo
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.06.14 2.1.5 in formatter, removed call to e.normalize().  Creates an INFINITE RECURSION error in Safari!!!!
2006.09.10 2.1.4 update formatter for 2.1 compatibility (use this.lookaheadRegExp instead of temp variable)
2006.05.28 2.1.3 in wikifyTextNodes(), decode the *value* of TEXTAREA nodes, but don't wikify() its children.  (thanks to "ayj" for bug report)
2006.02.19 2.1.2 in wikifyTextNodes(), put SPAN element into tiddler DOM (replacing text node), BEFORE wikifying the text content.  This ensures that the 'place' passed to any macros is correctly defined when the macro is evaluated, so that calls to story.findContainingTiddler(place) will work as expected. (Thanks for bug report from GeoffSlocock)
2006.02.05 2.1.1 wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.01 2.1.0 don't wikify #TEXT nodes inside SELECT and TEXTAREA elements
2005.11.06 2.0.1 code cleanup
2005.10.31 2.0.0 replaced hijack wikify() with hijack config.formatters["html"] and simplified recursive WikifyTextNodes() code
2005.10.09 1.0.2 combined documentation and code into a single tiddler
2005.08.05 1.0.1 moved HTML and CSS definitions into plugin code instead of using separate tiddlers
2005.07.26 1.0.1 Re-released as a plugin. Added <{{{html}}}>...</{{{nohtml}}}> and <{{{hide newlines}}}> handling
2005.06.26 1.0.0 Initial Release (as code adaptation - pre-dates TiddlyWiki plugin architecture!!)
<<<
<<tiddler ToggleLeftSidebar>> -- /% 
== AFFICHE LA VERSION, LA DATE DE DERNIERE MODIFICATION ET LES EXTENSIONS
%/<script label="[i]" title="affiche la version de TiddlyWiki, la date de dernière modification, et la liste des extensions">
	if (window.version) {
		var ver=version.major+'.'+version.minor+'.'+version.revision;
		var tids=window.store.getTiddlers('modified').reverse();
		var plugins=window.store.getTaggedTiddlers('systemConfig','modified').reverse();
		var msg='TiddlyWiki version: '+ver
			+'\nDocument modifié le : '+document.lastModified
			+'\nDernier élément modifié : '+tids[0].title
			+'\n\nIl y a un total de '+tids.length+' éléments dans ce bloc-notes,'
			+' dont '+plugins.length+' extensions :\n\n';
		msg+=plugins.map(function(t){
			return t.modified.formatString('YYYY.0MM.0DD 0hh:0mm:0ss')+' | '+t.title; }).join('\n');
		alert(msg);
	}
 	return false;
</script> &#x2022; /% 
== ACTIVE / DESACTIVE LE MODE ECRITURE 
%/ <<option chkHttpReadOnly>><script>
	var chk=place.lastChild;
	chk.style.margin=chk.style.padding="0";
	chk.id="ToggleReadOnly_checkbox";
	chk.title="active/désactive la possibilité d'écrire sur ce bloc-notes TiddlyWiki";
	chk.checked=readOnly;
	chk.coreOnChange=chk.onchange;
	chk.onchange=function() {
		if (this.coreOnChange) this.coreOnChange();
		readOnly=config.options.chkHttpReadOnly;
		this.checked=config.options.chkHttpReadOnly;
		story.forEachTiddler(function(t,e){story.refreshTiddler(t,null,true)});
		refreshDisplay();
	};
</script><script label="Lecture seule" title="indique si ce bloc-notes TiddlyWki est en mode LECTURE SEULE ou pas">
	config.options.chkHttpReadOnly=!config.options.chkHttpReadOnly;
	place.previousSibling.onchange();
	return false;
</script><script>
	var s=place.lastChild.style; s.display="inline"; s.fontWeight="normal";
</script> &#x2022; /% 
== AFFICHAGE PAGE DE DEMARRAGE SANS RECHARGEMENT DU bloc-notes 
%/<script label="&#x2302;" title="affiche la page initiale, SANS RECHARGER le bloc-notes">
	story.closeAllTiddlers(); restart(); refreshPageTemplate(); 
 	return false;
</script> /% 
== RAFFRAICHISSEMENT DE LA PAGE ACTELLE SANS  RECHARGEMENT DU bloc-notes
%/<script label="&asymp;" title="rafraichit la page actuelle, SANS RECHARGER le bloc-notes">
	story.forEachTiddler(function(t,e){story.refreshTiddler(t,null,true)});
	refreshDisplay();
	return false;
</script> &#x2022; <<option chkDisableTabsBar>> Mode sans onglet &#x2022; /% 
== ACTIVE / DESACTIVE LES EFFETS D'ANIMATION 
%/<script label="&infin;" title="active/désactive les effets d'animation">
	config.options.chkAnimate=!config.options.chkAnimate;
	saveOptionCookie('chkAnimate');
	displayMessage('Les effets d\'animation sont : '+(config.options.chkAnimate?'ACTIFS':'INACTIFS'));
	return false;
</script> &#x2022; /% 
== AIDE 
%/ <script label="[?]" title="affiche une aide pour cette ligne de menus">
	if (window.version) {
		var msg='Aide sur les menus de cette ligne\n'
			+'• ◄ ou (\<): masque/affiche la colonne de gauche\n• ► ou (^): masque/affiche l\'en-tete\n• ▲ ou (>): masque/affiche la colonne de droite\n• ※ ou (X): masque/affiche les 2 colonnes et l\'en tete\n'
			+'• "[i]" : affiche des informations sur le bloc-notes et les éléments\n• "permalien" : affiche l\'URL\n• "nouvel élément" : crée un nouvel élément, uniquement valable en mode "écriture"\n• bouton "Lecture seule" : boutin pour forcer le bloc-notes en mode "lecture seule"\n'
			+'• ⌂ ou (A) : affiche la page de démarrage\n• ≈ : rafraichit la vue actuelle\n• bouton "Mode sans onglet" : affiche les éléments sous forme linéaire ou sous forme d\'onglets\n• ∞ : active/désactive les effets d\'animation\n• [?] : cette aide  ... :-)';
		alert(msg);
	}
 	return false;
</script> -- <<tiddler ToggleRightSidebar>>
<<tiddler Refonte>>
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.2.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
!!!!!Usage
<<<
The extended image syntax is:
{{{
[img(w+,h+)[...][...]]
}}}
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
<<<
!!!!!Examples
<<<
{{{
[img(100px+,75px+)[images/meow2.jpg]]
}}}
[img(100px+,75px+)[images/meow2.jpg]]
{{{
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
}}}
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
{{tagClear{
}}}
<<<
!!!!!Revisions
<<<
2010.07.24 [1.2.2] moved tip/dragtip text to config.formatterHelpers.imageSize object to enable customization
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 2, date: new Date(2010,7,24)};
//}}}
//{{{
var f=config.formatters[config.formatters.findByField("name","image")];
f.match="\\[[<>]?[Ii][Mm][Gg](?:\\([^,]*,[^\\)]*\\))?\\[";
f.lookaheadRegExp=/\[([<]?)(>?)[Ii][Mm][Gg](?:\(([^,]*),([^\)]*)\))?\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg;
f.handler=function(w) {
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var floatLeft=lookaheadMatch[1];
		var floatRight=lookaheadMatch[2];
		var width=lookaheadMatch[3];
		var height=lookaheadMatch[4];
		var tooltip=lookaheadMatch[5];
		var src=lookaheadMatch[6];
		var link=lookaheadMatch[7];

		// Simple bracketted link
		var e = w.output;
		if(link) { // LINKED IMAGE
			if (config.formatterHelpers.isExternalLink(link)) {
				if (config.macros.attach && config.macros.attach.isAttachment(link)) {
					// see [[AttachFilePluginFormatters]]
					e = createExternalLink(w.output,link);
					e.href=config.macros.attach.getAttachment(link);
					e.title = config.macros.attach.linkTooltip + link;
				} else
					e = createExternalLink(w.output,link);
			} else 
				e = createTiddlyLink(w.output,link,false,null,w.isStatic);
			addClass(e,"imageLink");
		}

		var img = createTiddlyElement(e,"img");
		if(floatLeft) img.align="left"; else if(floatRight) img.align="right";
		if(width||height) {
			var x=width.trim(); var y=height.trim();
			var stretchW=(x.substr(x.length-1,1)=='+'); if (stretchW) x=x.substr(0,x.length-1);
			var stretchH=(y.substr(y.length-1,1)=='+'); if (stretchH) y=y.substr(0,y.length-1);
			if (x.substr(0,2)=="{{")
				{ try{x=eval(x.substr(2,x.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			if (y.substr(0,2)=="{{")
				{ try{y=eval(y.substr(2,y.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			img.style.width=x.trim(); img.style.height=y.trim();
			config.formatterHelpers.addStretchHandlers(img,stretchW,stretchH);
		}
		if(tooltip) img.title = tooltip;

		// GET IMAGE SOURCE
		if (config.macros.attach && config.macros.attach.isAttachment(src))
			src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
		else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
			if (config.browser.isIE || config.browser.isSafari) {
				img.onerror=(function(){
					this.src=config.formatterHelpers.resolvePath(this.src,false);
					return false;
				});
			} else
				src=config.formatterHelpers.resolvePath(src,true);
		}
		img.src=src;
		w.nextMatch = this.lookaheadRegExp.lastIndex;
	}
}

config.formatterHelpers.imageSize={
	tip: 'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size',
	dragtip: 'DRAG=stretch/shrink, '
}

config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
	e.title=((stretchW||stretchH)?this.imageSize.dragtip:'')+this.imageSize.tip;
	e.statusMsg='width=%0, height=%1';
	e.style.cursor='move';
	e.originalW=e.style.width;
	e.originalH=e.style.height;
	e.minW=Math.max(e.offsetWidth/20,10);
	e.minH=Math.max(e.offsetHeight/20,10);
	e.stretchW=stretchW;
	e.stretchH=stretchH;
	e.onmousedown=function(ev) { var ev=ev||window.event;
		this.sizing=true;
		this.startX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
		this.startY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
		this.startW=this.offsetWidth;
		this.startH=this.offsetHeight;
		return false;
	};
	e.onmousemove=function(ev) { var ev=ev||window.event;
		if (this.sizing) {
			var s=this.style;
			var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
			var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
			if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
			if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
			clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
		}
		return false;
	};
	e.onmouseup=function(ev) { var ev=ev||window.event;
		if (ev.shiftKey) { this.style.width=this.style.height=''; }
		if (ev.ctrlKey)  { this.style.width=this.originalW; this.style.height=this.originalH; }
		this.sizing=false;
		clearMessage();
		return false;
	};
	e.onmouseout=function(ev) { var ev=ev||window.event;
		this.sizing=false;
		clearMessage();
		return false;
	};
}
//}}}
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2010.12.15 1.9.6 allow (but ignore) type="..." syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 6, date: new Date(2010,12,15)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: type=\\\"[^\\\"]*\\\")?(?: src=\\\"([^\\\"]*)\\\")?(?: label=\\\"([^\\\"]*)\\\")?(?: title=\\\"([^\\\"]*)\\\")?(?: key=\\\"([^\\\"]*)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
	handler: function(w) {
		var lookaheadRegExp = new RegExp(this.lookahead,"mg");
		lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var src=lookaheadMatch[1];
			var label=lookaheadMatch[2];
			var tip=lookaheadMatch[3];
			var key=lookaheadMatch[4];
			var show=lookaheadMatch[5];
			var code=lookaheadMatch[6];
			if (src) { // external script library
				var script = document.createElement("script"); script.src = src;
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (code) { // inline code
				if (show) // display source in tiddler
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (label) { // create 'onclick' command link
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
					var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
					link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
					link.tiddler=w.tiddler;
					link.onclick=function(){
						this.bufferedHTML="";
						try{ var r=eval(this.code);
							if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
								var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
							if(this.bufferedHTML.length)
								s.innerHTML=this.bufferedHTML;
							if((typeof(r)==="string")&&r.length) {
								wikify(r,s,null,this.tiddler);
								return false;
							} else return r!==undefined?r:false;
						} catch(e){alert(e.description||e.toString());return false;}
					};
					link.setAttribute("title",tip||"");
					var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
					URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
					URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
					link.setAttribute("href",URIcode);
					link.style.cursor="pointer";
					if (key) link.accessKey=key.substr(0,1); // single character only
				}
				else { // run script immediately
					var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
					var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
					try	 { var out=eval(c); }
					catch(e) { out=e.description?e.description:e.toString(); }
					if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
				}
			}
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
} )
//}}}

// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
	if(limit > 0) text = text.substr(0,limit);
	var wikifier = new Wikifier(text,formatter,null,tiddler);
	return wikifier.wikifyPlain();
}
//}}}

// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
/***
|Name|InlineJavascriptPluginInfo|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for InlineJavascriptPlugin|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Usage
<<<
This plugin adds wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be recognized as embedded javascript code.  When a tiddler is rendered, the plugin automatically invokes any embedded scripts, which can be used to construct and return dynamically-generated output that is inserted into the tiddler content.
{{{
<script type="..." src="..." label="..." title="..." key="..." show>
	/* javascript code goes here... */
</script>
}}}
All parameters are //optional//.    When the ''show'' keyword is used, the plugin will also include the script source code in the output that it displays in the tiddler.  This is helpful when creating examples for documentation purposes (such as used in this tiddler!)

__''Deferred execution from an 'onClick' link''__
<script label="click here" title="mouseover tooltip text" key="X" show>
	/* javascript code goes here... */
	alert('you clicked on the link!');
</script>
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.  You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text, and a {{{key="X"}}} parameter to specify an //access key// (which must be a //single// letter or numeric digit only).

__''Loading scripts from external source files''__
<script src="URL" show>
	/* optional javascript code goes here... */
</script>You can also load javascript directly from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}).  This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins.  The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.

In addition to loading the javascript from the external file, you can also use this feature to invoke javascript code contained within the {{{<script>...</script>}}} markers.  This code is invoked //after// the external script file has been processed, and can make immediate use of the functions and/or global variables defined by the external script file.
>Note: To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that is rendered as soon as your TiddlyWiki document is opened, such as MainMenu.  For example: put your {{{<script src="..."></script>}}} syntax into a separate 'library' tiddler (e.g., LoadScripts), and then add {{{<<tiddler LoadScripts>>}}} to MainMenu so that the library is loaded before any other tiddlers that rely upon the functions it defines. 
>
>Normally, loading external javascript in this way does not produce any direct output, and should not have any impact on the appearance of your MainMenu.  However, if your LoadScripts tiddler contains notes or other visible content, you can suppress this output by using 'inline CSS' in the MainMenu, like this: {{{@@display:none;<<tiddler LoadScripts>>@@}}}
<<<
!!!!!Creating dynamic tiddler content and accessing the ~TiddlyWiki DOM
<<<
An important difference between TiddlyWiki inline scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document: in a typical web document, you use the {{{document.write()}}} (or {{{document.writeln()}}}) function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.

However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and instead will //completely replace the entire ~TiddlyWiki document in your browser window (which is clearly not a good thing!)//.  In order to allow scripts to use {{{document.write()}}}, the plugin automatically converts and buffers all HTML output so it can be safely inserted into your tiddler content, immediately following the script.

''Note that {{{document.write()}}} can only be used to output "pure HTML" syntax.  To produce //wiki-formatted// output, your script should instead return a text value containing the desired wiki-syntax content'', which will then be automatically rendered immediately following the script.  If returning a text value is not sufficient for your needs, the plugin also provides an automatically-defined variable, 'place', that gives the script code ''direct access to the //containing DOM element//'' into which the tiddler output is being rendered.  You can use this variable to ''perform direct DOM manipulations'' that can, for example:
* generate wiki-formatted output using {{{wikify("...content...",place)}}}
* vary the script's actions based upon the DOM element in which it is embedded
* access 'tiddler-relative' DOM information using {{{story.findContainingTiddler(place)}}}
Note:
''When using an 'onclick' script, the 'place' element actually refers to the onclick //link text// itself, instead of the containing DOM element.''  This permits you to directly reference or modify the link text to reflect any 'stateful' conditions that might set by the script.  To refer to the containing DOM element from within an 'onclick' script, you can use "place.parentNode" instead.
<<<
!!!!!Instant "bookmarklets"
<<<
You can also use an 'onclick' link to define a "bookmarklet": a small piece of javascript that can be ''invoked directly from the browser without having to be defined within the current document.''  This allows you to create 'stand-alone' commands that can be applied to virtually ANY TiddlyWiki document... even remotely-hosted documents that have been written by others!!  To create a bookmarklet, simply define an 'onclick' script and then grab the resulting link text and drag-and-drop it onto your browser's toolbar (or right-click and use the 'bookmark this link' command to add it to the browser's menu).

Notes:
*When writing scripts intended for use as bookmarklets, due to the ~URI-encoding required by the browser, ''you cannot not use ANY double-quotes (") within the bookmarklet script code.''
*All comments embedded in the bookmarklet script must ''use the fully-delimited {{{/* ... */}}} comment syntax,'' rather than the shorter {{{//}}} comment syntax.
*Most importantly, because bookmarklets are invoked directly from the browser interface and are not embedded within the TiddlyWiki document, there is NO containing 'place' DOM element surrounding the script.  As a result, ''you cannot use a bookmarklet to generate dynamic output in your document,''  and using {{{document.write()}}} or returning wiki-syntax text or making reference to the 'place' DOM element will halt the script and report a "Reference Error" when that bookmarklet is invoked.  
Please see [[InstantBookmarklets]] for many examples of 'onclick' scripts that can also be used as bookmarklets.
<<<
!!!!!Special reserved function name
<<<
The plugin 'wraps' all inline javascript code inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler.  To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.
<<<
!!!!!$(...) 'shorthand' function
<<<
As described by Dustin Diaz [[here|http://www.dustindiaz.com/top-ten-javascript/]], the plugin defines a 'shorthand' function that allows you to write:
{{{
$(id)
}}}
in place of the normal standard javascript syntax:
{{{
document.getElementById(id)
}}}
This function is provided merely as a convenience for javascript coders that may be familiar with this abbreviation, in order to allow them to save a few bytes when writing their own inline script code.
<<<
!!!!!Examples
<<<
simple dynamic output:
><script show>
	document.write("The current date/time is: "+(new Date())+"<br>");
	return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
	if (!window.story) window.story=window;
	var title=story.findContainingTiddler(place).getAttribute("tiddler");
	var size=store.getTiddlerText(title).length;
	return title+" is using "+size+" bytes";
</script>
dynamic output from an 'onclick' script, using {{{document.write()}}} and/or {{{return "..."}}}
><script label="click here" show>
	document.write("<br>The current date/time is: "+(new Date())+"<br>");
	return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
creating an 'onclick' button/link that accesses the link text AND the containing tiddler:
><script label="click here" title="clicking this link will show an 'alert' box" key="H" show>
	if (!window.story) window.story=window;
	var txt=place.firstChild.data;
	var tid=story.findContainingTiddler(place).getAttribute('tiddler');
	alert('Hello World!\nlinktext='+txt+'\ntiddler='+tid);
</script>
dynamically setting onclick link text based on stateful information:
>{{block{
{{{
<script label="click here">
	/* toggle "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.innerHTML=on?"enable":"disable";
	config.txtSomething=on?"OFF":"ON";
	return "\nThe current value is: "+config.txtSomething;
</script><script>
	/* initialize onclick link text based on current "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.lastChild.previousSibling.innerHTML=on?"disable":"enable";
</script>
}}}
<script label="click here">
	/* toggle "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.innerHTML=on?"enable":"disable";
	config.txtSomething=on?"OFF":"ON";
	return "\nThe current value is: "+config.txtSomething;
</script><script>
	/* initialize onclick link text based on current "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.lastChild.innerHTML=on?"enable":"disable";
</script>
}}}
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function inlineJavascriptDemo() { alert('Hello from demo.js!!') } }}}
>>{{{displayMessage('InlineJavascriptPlugin: demo.js has been loaded');}}}
>note: When using this example on your local system, you will need to download the external script file from the above URL and install it into the same directory as your document.
>
><script src="demo.js" show>
	return "inlineJavascriptDemo() function has been defined"
</script>
><script label="click to invoke inlineJavascriptDemo()" key="D" show>
	inlineJavascriptDemo();
</script>
<<<
!!!!!Revisions
<<<
2010.12.15 1.9.6 allow (but ignore) type="..." syntax
2009.04.11 1.9.5 pass current tiddler object into wrapper code so it can be referenced from within 'onclick' scripts
2009.02.26 1.9.4 in $(), handle leading '#' on ID for compatibility with JQuery syntax
2008.06.11 1.9.3 added $(...) function as 'shorthand' for document.getElementById()
2008.03.03 1.9.2 corrected fallback declaration of wikifyPlainText() (fixes Safari "parse error")
2008.02.23 1.9.1 in onclick function, use string instead of array for 'bufferedHTML' (fixes IE errors)
2008.02.21 1.9.0 output from 'onclick' scripts (return value or document.write() calls) are now buffered and rendered into into a span following the script.  Also, added default 'return false' handling if no return value provided (prevents HREF from being triggered -- return TRUE to allow HREF to be processed).  Thanks to Xavier Verges for suggestion and preliminary code.
2008.02.14 1.8.1 added backward-compatibility for use of wikifyPlainText() in TW2.1.3 and earlier
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 1.8.0 added support for key="X" syntax to specify custom access key definitions
2007.12.15 1.7.0 autogenerate URI encoded HREF on links for onclick scripts.  Drag links to browser toolbar to create bookmarklets.  IMPORTANT NOTE: place is NOT defined when scripts are used as bookmarklets.  In addition, double-quotes will cause syntax errors.  Thanks to PaulReiber for debugging and brainstorming.
2007.11.26 1.6.2 when converting "document.write()" function calls in inline code, allow whitespace between "write" and "(" so that "document.write ( foobar )" is properly converted.
2007.11.16 1.6.1 when rendering "onclick scripts", pass label text through wikifyPlainText() to parse any embedded wiki-syntax to enable use of HTML entities or even TW macros to generate dynamic label text.
2007.02.19 1.6.0 added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
2006.10.16 1.5.2 add newline before closing '}' in 'function out_' wrapper.  Fixes error caused when last line of script is a comment.
2006.06.01 1.5.1 when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
2006.04.19 1.5.0 added 'show' parameter to force display of javascript source code in tiddler output
2006.01.05 1.4.0 added support 'onclick' scripts.  When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked.  'place' value is set to match the clicked button/link element.
2005.12.13 1.3.1 when catching eval error in IE, e.description contains the error text, instead of e.toString().  Fixed error reporting so IE shows the correct response text.  Based on a suggestion by UdoBorkowski
2005.11.09 1.3.0 for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content.  Based on a suggestion by BradleyMeck
2005.11.08 1.2.0 handle loading of javascript from an external URL via src="..." syntax
2005.11.08 1.1.0 pass 'place' param into scripts to provide direct DOM access 
2005.11.08 1.0.0 initial release
<<<
//{{{
config.formatters.unshift( {
	name: "inlinetabs",
	match: "\\<tabs",
        lookaheadRegExp: /(?:<tabs (.*)>\n)((?:.|\n)*?)(?:\n<\/tabs>)/mg,
	handler: function(w)
	{
	    this.lookaheadRegExp.lastIndex = w.matchStart;
	    var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	    if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
			{
             var cookie = lookaheadMatch[1];
  	         var wrapper = createTiddlyElement(null,"div",null,cookie);
	         var tabset = createTiddlyElement(wrapper,"div",null,"tabset");
             tabset.setAttribute("cookie",cookie);
             var validTab = false;
             var firstTab = '';
             var tabregexp = /(?:<tab (.*)>)(?:(?:\n)?)((?:.|\n)*?)(?:<\/tab>)/mg;
             while((m = tabregexp.exec(lookaheadMatch[2])) != null)
                 {
		         if (firstTab == '') firstTab = m[1];
		         var tab = createTiddlyButton(tabset,m[1],m[1],story.onClickInlineTab,"tab tabUnselected");
		         tab.setAttribute("tab",m[1]);
		         tab.setAttribute("content",m[2]);
		         tab.title = m[1];
		         if(config.options[cookie] == m[1])
                     validTab = true;
                 }
             if(!validTab)
                 config.options[cookie] = firstTab;
	         w.output.appendChild(wrapper);
	         story.switchInlineTab(tabset,config.options[cookie]);
             w.nextMatch = this.lookaheadRegExp.lastIndex;
			}
	}
})

Story.prototype.switchInlineTab = function(tabset,tab)
{
    var cookie = tabset.getAttribute("cookie");
    var theTab = null
    var nodes = tabset.childNodes;
    for(var t=0; t<nodes.length; t++)
    if(nodes[t].getAttribute && nodes[t].getAttribute("tab") == tab)
        {
        theTab = nodes[t];
        theTab.className = "tab tabSelected";
        }
    else
        nodes[t].className = "tab tabUnselected"
	if(theTab)
		{
		if(tabset.nextSibling && tabset.nextSibling.className == "tabContents")
			tabset.parentNode.removeChild(tabset.nextSibling);
		var tabContent = createTiddlyElement(null,"div",null,"tabContents");
		tabset.parentNode.insertBefore(tabContent,tabset.nextSibling);
		wikify(theTab.getAttribute("content"),tabContent);
		if(cookie)
			{
			config.options[cookie] = tab;
			saveOptionCookie(cookie);
			}
		}
}
    
Story.prototype.onClickInlineTab = function(e)
{
    story.switchInlineTab(this.parentNode,this.getAttribute("tab"));
    return false;
}
//}}}
{{firstletter{@@color:#00F;T@@}}}[[iddlyWiki|TiddlyWiki]] est un ''wiki'' développé par [[Jeremy Ruston|http://en.wikipedia.org/wiki/Jeremy_Ruston]] et diffusé à partir de Septembre 2004. Son usage le plus courant est celui de ''bloc-notes de notes personnel'' ou //bloc-notes//.
L'ensemble du wiki est __//''auto-porteur''//__ et tient dans un unique ''fichier HTML'' comprenant ''le contenu, la feuille de style CSS et le code javascript nécessaire'' à son fonctionnement.
Un //bloc-notes// TiddlyWiki est constitué d'//éléments// (appelés //''tiddlers''// en anglais). On peut associer des //mots-clés// (aussi appelés //index//) à chaque //élément// : des //mot-clés// (appelés //''tags''// en anglais) dont l'intitulé est laissé libre pour tout rédacteur.
De nombreux développeurs proposent des //extensions// (appelées //''plugin''// ou //''macro''//) bien pratiques qui permettent d'adapter facilement un //bloc-notes// TiddlyWiki à ses propres besoins. Des exemples sont [[ici|Extensions utiles]].

{{firstletter{@@color:#00F;T@@}}}[[iddlyWiki|TiddlyWiki]] a toujours été gratuit et est disponible sous licence [[BSD|http://fr.wikipedia.org/wiki/Licence_BSD]] permettant la réutilisation de tout ou partie du logiciel sans restriction, qu'il soit intégré dans un logiciel libre ou propriétaire..
Le copyright de TiddlyWiki est la propriété de [[UnaMesa|http://www.unamesa.org/]], une association à but non lucratif.
Vous trouverez sur ce site plusieurs articles, liens, et aides au démarrage, vous permettant de commencer à utiliser un //bloc-notes// TiddlyWiki quelques instants après l'avoir téléchargé, tels :
* la ''traduction'' française de la dernière version de TiddlyWiki : la ''@@2.5.3@@'' publiée le ''@@18 août 2009@@''.
* un [[aide mémoire|Aide Mémoire]] qui donne quelques éléments de syntaxe pour utiliser un //bloc-notes// TiddlyWiki,
* quelques [[liens|Liens]], y compris des traductions en français de versions précédentes de TiddlyWiki
* un lien pour le [[téléchargement|Téléchargement]] d'un modèle de //bloc-notes// TiddlyWiki vierge et en français
* des [[contacts|Contacts]] et un lien vers une liste de diffusion ''en français'' qui traite de TiddlyWiki

Un résumé de l'historique du site -- ainsi que les prochains articles qui seront écrits -- est lisible [[ici|Historique du site]]
<tabs Liens>

<tab Présentation>
!Liens généraux de présentation
Pour en savoir plus sur ce qu'est ''TiddlyWiki'', vous pouvez déjà aller consulter les liens suivants :
* une petite page de présentation sur le site de [[Wikipedia|http://fr.wikipedia.org/wiki/TiddlyWiki]] :
** http://fr.wikipedia.org/wiki/TiddlyWiki
* une petite page de présentation sur le site de [[Framasoft|http://www.framasoft.net/article3882.html]] :
** http://www.framasoft.net/article3882.html
* la page d'accueil de [[TiddlyWiki|http://www.tiddlywiki.com/]] :
** http://www.tiddlywiki.com/ (site en anglais) 
</tab>

<tab Tutoriels>
!Tutoriel et Aide en Français
* "[[TiddlyWiki pour Tous|http://www.missmopi.net/IMG/html/twpourtous-V1-0.html]]" de [[Miss Mopi|http://www.missmopi.net/rubrique148.html]]
** un excellent et très complet tutoriel traduit du "[[TiddlyWiki for the rest of us|http://www.giffmex.org/twfortherestofus.html]]" anglais de [[Dave Gifford|http://www.giffmex.org/tiddlywikicentral.html]].
*** &rarr; <<section Détails
* Niveaux de lecture en fonction de la compétence : Débutant, Utilisateur, Avancé, Expert.
** Le débutant est quelqu'un qui désire en apprendre plus sur TiddlyWiki sans forcément chercher à l'utiliser.
** L' utilisateur correspond à toute personne qui commence déjà à envisager de l'utiliser : comment éditer, associer des mot-clés, enrichir.
** L' utilisateur avancé est l'étape suivante, et permet de tirer parti de nombreuses fonctionnalités de l'outil.
** L' expert contrairement aux autres profils aura besoin d'un peu de connaissances techniques, en HTML et CSS essentiellement.

* Les 2 grands chapitres sont :
## Commençons par la base
*** TiddlyWiki, qu'est-ce que c'est?
*** Débutants : consulter un TiddlyWiki sur Internet
*** Enregistrer un TiddlyWiki sur son disque à partir d'Internet
*** Note aux utilisateurs d'Internet Explorer
*** Imprimer un TiddlyWiki
*** Utilisateurs : Enrichir un fichier TiddlyWiki
*** Utilisateurs avancés : Personnaliser son expérience TW
## Quelques réflexions autour de TiddlyWiki
*** TiddlyWiki, pour quoi faire?
*** Quels sont les avantages de TiddlyWiki?
*** Quels sont les limitations de TiddlyWiki?
*** Quelques distributions de TiddlyWiki
*** Liens divers pour TiddlyWiki>>

* [[Contribution et aide|http://www.missmopi.net/IMG/html/twpourtous-V1-0.html#Aide%20Tutoriel]] de [[Jacques Turbé|http://avm.free.fr/]]
</tab>

<tab Traductions>
!Traductions Françaises de versions précédentes de TiddlyWiki
|!Remarque |
|Pour télécharger un TiddlyWiki sur son ordinateur, il ne faut ''jamais'' utiliser directement la commande "//Enregistrer sous ...//" du menu "//Fichier//" du navigateur |
|Il faut ''toujours'' télécharger par un //clic droit// sur un lien qui pointe sur un bloc-notes TiddlyWiki ...<br>... puis dans le menu contextuel qui s’affiche, il faut sélectionner "//enregistrer la cible du lien sous ...//" (ou équivalent selon votre navigateur)  |
!!Version 2.3.0 par [[ocalTW|http://www.tiddlywiki.fr]] :
* &rarr; <<section "Détails sur la traduction de la version 2.3.0"
* le site ''tiddlywiki.fr'' : http://www.tiddlywiki.fr
* lien direct vers le modèle de //bloc-notes// TiddlyWiki en français de ocalTW :
** http://www.tiddlywiki.fr/vide-230.html (faire un //clic droit// / //Enregistrer sous// ...)
* lien direct vers l'//élément// ''FrenchTranslationPlugin'' à intégrer dans un //bloc-notes// TiddlyWiki standard anglais :
** http://www.tiddlywiki.fr/#FrenchTranslationPlugin>>
!!Version 2.2 par [[BidiX|http://tiddlywikifr.bidix.info/]] :
* &rarr; <<section "Détails sur la traduction de la version 2.2"
* le site de ''~BidiX'' : http://tiddlywikifr.bidix.info/
* lien direct vers le //bloc-notes// ~TiddlyWiki en français de ''~BidiX'' :
** http://tiddlywikifr.bidix.info/empty.fr.html (faire un //clic droit// / //Enregistrer sous// ...)>>
!!Version 2.1.3 par [[Jacques Turbé|http://avm.free.fr/]] : 
* &rarr; <<section "Détails sur la traduction de la version 2.1.3"
* le site de ''Jacques Turbé'' : http://avm.free.fr/
* le //bloc-notes// ~TiddlyWiki en français : http://avm.free.fr/spip.php?article33
* lien direct vers le //bloc-notes// ~TiddlyWiki de ''Jacques Turbé'' :
** http://avm.free.fr/MonTiddlyWiki.html (faire un //clic droit// / //Enregistrer sous// ...)>>
</tab>

<tab Exemples en français d'utilisation de TiddlyWiki>
!Exemples d'utilisation de //bloc-notes// ~TiddlyWiki
* "__Un conte à votre façon__" de [[Raymond Queneau|http://fr.wikipedia.org/wiki/Raymond_Queneau]] est un [[OuLiPo|http://www.oulipo.net/oulipiens/O/]] sous la forme d'un //bloc-notes// ~TiddlyWiki. Il est accessible [[ici|http://queneauddly.tiddlyspot.com/]].
** &rarr; <<section "Qu'est ce qu'un ''Un conte à votre façon''"
D'après le site [[OuLiPo|http://www.oulipo.net/contraintes/document19621.html]], Un "conte à votre façon" est un exemple de structure en arbre. A chaque embranchement, le récit propose autant de solutions qu’il y a de branches. Le lecteur construit soi-même sa version du conte en choisissant à chaque étape l’une des solutions proposées.>>

* "__Guerriers, Voleurs et Magiciens__" : un Jeu d'Aventure Guerriers, basé sur le "dK system" sous la forme d'un //bloc-notes// ~TiddlyWiki. Il est accessible [[ici|http://legrumph.org/TW/GVM.html]].
** &rarr; <<section "Qu'est ce qu'un ''système dK''"
Le [[système dK|http://matricedk.tiddlyspot.com/]] est sous Licence OGL (Open Game License) et a été créé comme une alternative aux règles de Dungeons & Dragons.>>

* "__Les Royaumes Troublés__" : un Jeu à la fois système de jeu de rôles simple et participatif, et un outil pour le meneur de jeu, sous la forme d'un //bloc-notes// ~TiddlyWiki. Il est accessible [[ici|http://studiokortex.googlepages.com/royaumes.html]]

* "__les sites de Mathieu Cartailler__" : un sur la gestion de sa classe de collège de troisième, et un autre sur celle de classes de cinquième et de quatrième
~TiddlyWiki. Ils sont respectivement accessibles [[ici|http://cartailler.free.fr/]] et [[là|http://cartawiki.free.fr/]]

</tab>

<tab Forums>
Il y a plusieurs [[forums Google qui traitent spécifiquement de TiddlyWiki|http://groups.google.com/groups/dir?hl=en&lnk=srgmt&q=tiddlywiki]], dont
* en Français
** "[[TiddlyWikiFR|http://groups.google.com/group/TiddlyWikiFR?hl=fr]]", avec un peu d'activité
* en Anglais
** "[[TiddlyWiki|http://groups.google.com/group/TiddlyWiki?hl=fr]]", très actif, avec plusieurs dizaines de messages par jour
** "[[TiddlyWikiDev|http://groups.google.com/group/TiddlyWikiDev?hl=fr]]", avec peu d'activité
** "[[GTD TiddlyWiki|http://groups.google.com/group/GTD-TiddlyWiki?hl=fr]]", avec peu d'activité
Mais aussi
* en Portugais : "[[TiddlyWiki(pt)|http://groups.google.com/group/tiddlywikipt?hl=fr]]" sans activité récente
* en Russe : "[[TiddlyWikiRU|http://groups.google.com/group/TiddlyWiki-RU?hl=fr]]" sans activité récente
* en Chinois : 5 [[groupes de discussion|http://groups.google.com/groups/dir?hl=fr&sel=0,67188888&q=tiddlywiki&prev=tiddlywiki]]
</tab>
</tabs>
[[Pour commencer|A lire avant de commencer]]
[[Versions]]
[[Aide Mémoire]]
[[Extensions|Extensions utiles]]
[[Téléchargement]]
[[Liens]]
[[Historique du site]]
[[Contacts]]
[img[En Français|Francais.gif][Introduction]][img[For English readers|Anglais.gif][English]]
^^//TiddlyWiki <<version>>//^^
^^© 2007 [[UnaMesa|http://www.unamesa.org/]]^^ @@display:none;<<tiddler ToggleRightSidebar>>@@
{{floatleft{__Actualités__ ^^<<tiddler Actualités>>^^}}}
<!--{{{-->
<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;"><img src="images/Francais.gif"><br><b>TiddlyWiki<sup>fr</sup></b> est en cours de chargement <blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Javascript DOIT être activé pour voir correctement ce site Web</span></div>
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
>Note: This setting can cause 'clipping' problems in some versions of InternetExplorer.
>In addition, for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class).  In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release.  Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 9, date: new Date(2008,11,15)};

// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkFloatingSlidersAnimate===undefined)
	config.options.chkFloatingSlidersAnimate=false; // avoid clipping problems in IE

// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
	background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");

// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
	window.removeCookie=function(name) {
		document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;'; 
	}
}

config.formatters.push( {
	name: "nestedSliders",
	match: "\\n?\\+{3}",
	terminator: "\\s*\\={3}\\n?",
	lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\@\\[\\>]*\\^)?)?(\\*)?(\\@)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(\\[[^\\]]*\\])?(?:\\}{3})?(\\#[^:]*\\:)?(\\>)?(\\.\\.\\.)?\\s*",
	handler: function(w)
		{
			lookaheadRegExp = new RegExp(this.lookahead,"mg");
			lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = lookaheadRegExp.exec(w.source)
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
			{
				var defopen=lookaheadMatch[1];
				var cookiename=lookaheadMatch[2];
				var header=lookaheadMatch[3];
				var panelwidth=lookaheadMatch[4];
				var transient=lookaheadMatch[5];
				var hover=lookaheadMatch[6];
				var buttonClass=lookaheadMatch[7];
				var label=lookaheadMatch[8];
				var openlabel=lookaheadMatch[9];
				var panelID=lookaheadMatch[10];
				var blockquote=lookaheadMatch[11];
				var deferred=lookaheadMatch[12];

				// location for rendering button and panel
				var place=w.output;

				// default to closed, no cookie, no accesskey, no alternate text/tip
				var show="none"; var cookie=""; var key="";
				var closedtext=">"; var closedtip="";
				var openedtext="<"; var openedtip="";

				// extra "+", default to open
				if (defopen) show="block";

				// cookie, use saved open/closed state
				if (cookiename) {
					cookie=cookiename.trim().slice(1,-1);
					cookie="chkSlider"+cookie;
					if (config.options[cookie]==undefined)
						{ config.options[cookie] = (show=="block") }
					show=config.options[cookie]?"block":"none";
				}

				// parse label/tooltip/accesskey: [label=X|tooltip]
				if (label) {
					var parts=label.trim().slice(1,-1).split("|");
					closedtext=parts.shift();
					if (closedtext.substr(closedtext.length-2,1)=="=")	
						{ key=closedtext.substr(closedtext.length-1,1); closedtext=closedtext.slice(0,-2); }
					openedtext=closedtext;
					if (parts.length) closedtip=openedtip=parts.join("|");
					else { closedtip="show "+closedtext; openedtip="hide "+closedtext; }
				}

				// parse alternate label/tooltip: [label|tooltip]
				if (openlabel) {
					var parts=openlabel.trim().slice(1,-1).split("|");
					openedtext=parts.shift();
					if (parts.length) openedtip=parts.join("|");
					else openedtip="hide "+openedtext;
				}

				var title=show=='block'?openedtext:closedtext;
				var tooltip=show=='block'?openedtip:closedtip;

				// create the button
				if (header) { // use "Hn" header format instead of button/link
					var lvl=(header.length>5)?5:header.length;
					var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,buttonClass,title);
					btn.onclick=onClickNestedSlider;
					btn.setAttribute("href","javascript:;");
					btn.setAttribute("title",tooltip);
				}
				else
					var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,buttonClass);
				btn.innerHTML=title; // enables use of HTML entities in label

				// set extra button attributes
				btn.setAttribute("closedtext",closedtext);
				btn.setAttribute("closedtip",closedtip);
				btn.setAttribute("openedtext",openedtext);
				btn.setAttribute("openedtip",openedtip);
				btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
				btn.defOpen=defopen!=null; // save default open/closed state (boolean)
				btn.keyparam=key; // save the access key letter ("" if none)
				if (key.length) {
					btn.setAttribute("accessKey",key); // init access key
					btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
				}
				btn.setAttribute("hover",hover?"true":"false");
				btn.onmouseover=function(ev) {
					// optional 'open on hover' handling
					if (this.getAttribute("hover")=="true" && this.sliderPanel.style.display=='none') {
						document.onclick.call(document,ev); // close transients
						onClickNestedSlider(ev); // open this slider
					}
					// mouseover on button aligns floater position with button
					if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel);
				}

				// create slider panel
				var panelClass=panelwidth?"floatingPanel":"sliderPanel";
				if (panelID) panelID=panelID.slice(1,-1); // trim off delimiters
				var panel=createTiddlyElement(place,"div",panelID,panelClass,null);
				panel.button = btn; // so the slider panel know which button it belongs to
				btn.sliderPanel=panel; // so the button knows which slider panel it belongs to
				panel.defaultPanelWidth=(panelwidth && panelwidth.length>2)?panelwidth.slice(1,-1):"";
				panel.setAttribute("transient",transient=="*"?"true":"false");
				panel.style.display = show;
				panel.style.width=panel.defaultPanelWidth;
				panel.onmouseover=function(event) // mouseover on panel aligns floater position with button
					{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this); }

				// render slider (or defer until shown) 
				w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
				if ((show=="block")||!deferred) {
					// render now if panel is supposed to be shown or NOT deferred rendering
					w.subWikify(blockquote?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
					// align floater position with button
					if (window.adjustSliderPos) window.adjustSliderPos(place,btn,panel);
				}
				else {
					var src = w.source.substr(w.nextMatch);
					var endpos=findMatchingDelimiter(src,"+++","===");
					panel.setAttribute("raw",src.substr(0,endpos));
					panel.setAttribute("blockquote",blockquote?"true":"false");
					panel.setAttribute("rendered","false");
					w.nextMatch += endpos+3;
					if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
				}
			}
		}
	}
)

function findMatchingDelimiter(src,starttext,endtext) {
	var startpos = 0;
	var endpos = src.indexOf(endtext);
	// check for nested delimiters
	while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
		// count number of nested 'starts'
		var startcount=0;
		var temp = src.substring(startpos,endpos-1);
		var pos=temp.indexOf(starttext);
		while (pos!=-1)  { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
		// set up to check for additional 'starts' after adjusting endpos
		startpos=endpos+endtext.length;
		// find endpos for corresponding number of matching 'ends'
		while (startcount && endpos!=-1) {
			endpos = src.indexOf(endtext,endpos+endtext.length);
			startcount--;
		}
	}
	return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
window.onClickNestedSlider=function(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	while (theTarget && theTarget.sliderPanel==undefined) theTarget=theTarget.parentNode;
	if (!theTarget) return false;
	var theSlider = theTarget.sliderPanel;
	var isOpen = theSlider.style.display!="none";

	// if SHIFT-CLICK, dock panel first (see [[MoveablePanelPlugin]])
	if (e.shiftKey && config.macros.moveablePanel) config.macros.moveablePanel.dock(theSlider,e);

	// toggle label
	theTarget.innerHTML=isOpen?theTarget.getAttribute("closedText"):theTarget.getAttribute("openedText");
	// toggle tooltip
	theTarget.setAttribute("title",isOpen?theTarget.getAttribute("closedTip"):theTarget.getAttribute("openedTip"));

	// deferred rendering (if needed)
	if (theSlider.getAttribute("rendered")=="false") {
		var place=theSlider;
		if (theSlider.getAttribute("blockquote")=="true")
			place=createTiddlyElement(place,"blockquote");
		wikify(theSlider.getAttribute("raw"),place);
		theSlider.setAttribute("rendered","true");
	}

	// show/hide the slider
	if(config.options.chkAnimate && (!hasClass(theSlider,'floatingPanel') || config.options.chkFloatingSlidersAnimate))
		anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
	else
		theSlider.style.display = isOpen ? "none" : "block";

	// reset to default width (might have been changed via plugin code)
	theSlider.style.width=theSlider.defaultPanelWidth;

	// align floater panel position with target button
	if (!isOpen && window.adjustSliderPos) window.adjustSliderPos(theSlider.parentNode,theTarget,theSlider);

	// if showing panel, set focus to first 'focus-able' element in panel
	if (theSlider.style.display!="none") {
		var ctrls=theSlider.getElementsByTagName("*");
		for (var c=0; c<ctrls.length; c++) {
			var t=ctrls[c].tagName.toLowerCase();
			if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
				{ try{ ctrls[c].focus(); } catch(err){;} break; }
		}
	}
	var cookie=theTarget.sliderCookie;
	if (cookie && cookie.length) {
		config.options[cookie]=!isOpen;
		if (config.options[cookie]!=theTarget.defOpen) window.saveOptionCookie(cookie);
		else window.removeCookie(cookie); // remove cookie if slider is in default display state
	}

	// prevent SHIFT-CLICK from being processed by browser (opens blank window... yuck!)
	// prevent clicks *within* a slider button from being processed by browser
	// but allow plain click to bubble up to page background (to close transients, if any)
	if (e.shiftKey || theTarget!=resolveTarget(e))
		{ e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); }
	Popup.remove(); // close open popup (if any)
	return false;
}
//}}}
//{{{
// click in document background closes transient panels 
document.nestedSliders_savedOnClick=document.onclick;
document.onclick=function(ev) { if (!ev) var ev=window.event; var target=resolveTarget(ev);

	if (document.nestedSliders_savedOnClick)
		var retval=document.nestedSliders_savedOnClick.apply(this,arguments);
	// if click was inside a popup... leave transient panels alone
	var p=target; while (p) if (hasClass(p,"popup")) break; else p=p.parentNode;
	if (p) return retval;
	// if click was inside transient panel (or something contained by a transient panel), leave it alone
	var p=target; while (p) {
		if ((hasClass(p,"floatingPanel")||hasClass(p,"sliderPanel"))&&p.getAttribute("transient")=="true") break;
		p=p.parentNode;
	}
	if (p) return retval;
	// otherwise, find and close all transient panels...
	var all=document.all?document.all:document.getElementsByTagName("DIV");
	for (var i=0; i<all.length; i++) {
		 // if it is not a transient panel, or the click was on the button that opened this panel, don't close it.
		if (all[i].getAttribute("transient")!="true" || all[i].button==target) continue;
		// otherwise, if the panel is currently visible, close it by clicking it's button
		if (all[i].style.display!="none") window.onClickNestedSlider({target:all[i].button})
		if (!hasClass(all[i],"floatingPanel")&&!hasClass(all[i],"sliderPanel")) all[i].style.display="none";
	}
	return retval;
};
//}}}
//{{{
// adjust floating panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel) {
	if (hasClass(panel,"floatingPanel") && !hasClass(panel,"undocked")) {
		// see [[MoveablePanelPlugin]] for use of 'undocked'
		var rightEdge=document.body.offsetWidth-1;
		var panelWidth=panel.offsetWidth;
		var left=0;
		var top=btn.offsetHeight; 
		if (place.style.position=="relative" && findPosX(btn)+panelWidth>rightEdge) {
			left-=findPosX(btn)+panelWidth-rightEdge; // shift panel relative to button
			if (findPosX(btn)+left<0) left=-findPosX(btn); // stay within left edge
		}
		if (place.style.position!="relative") {
			var left=findPosX(btn);
			var top=findPosY(btn)+btn.offsetHeight;
			var p=place; while (p && !hasClass(p,'floatingPanel')) p=p.parentNode;
			if (p) { left-=findPosX(p); top-=findPosY(p); }
			if (left+panelWidth>rightEdge) left=rightEdge-panelWidth;
			if (left<0) left=0;
		}
		panel.style.left=left+"px"; panel.style.top=top+"px";
	}
}
//}}}
//{{{
// TW2.1 and earlier:
// hijack Slider stop handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function()
	{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }

// TW2.2+
// hijack Morpher stop handler so sliderPanel/floatingPanel overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
	Morpher.prototype.coreStop = Morpher.prototype.stop;
	Morpher.prototype.stop = function() {
		this.coreStop.apply(this,arguments);
		var e=this.element;
		if (hasClass(e,"sliderPanel")||hasClass(e,"floatingPanel")) {
			// adjust panel overflow and position after animation
			e.style.overflow = "visible";
			if (window.adjustSliderPos) window.adjustSliderPos(e.parentNode,e.button,e);
		}
	};
}
//}}}
/***
|Name|NestedSlidersPluginInfo|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for NestedSlidersPlugin|
This plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content.
!!!!!Usage
<<<
//{{{
++++(cookiename)!!!!!^width^*@{{class{[label=key|tooltip][altlabel|alttooltip]}}}#panelID:>...
content goes here
===
//}}}
* ''"""+++""" (or """++++""") and """==="""''<br>marks the start and end of the slider definition, respectively.  When the extra {{{+}}} is used, the slider will be open when initially displayed.
* ''"""(cookiename)"""''<br>saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.
* ''"""! through !!!!!"""''<br>displays the slider label using a formatted headline (Hn) style instead of a button/link style
* ''"""^width^ (or just ^)"""''<br>makes the slider 'float' on top of other content rather than shifting that content downward.  'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.).  If omitted, the default width is "auto" (i.e., fit to content)
* ''"""*"""''<br>denotes "transient display": when a click occurs elsewhere in the document, the slider/floating panel will be automatically closed.  This is useful for creating 'pulldown menus' that automatically go away after they are used.  //Note: using SHIFT-click on a slider label will open/close that slider without triggering the automatic closing of any transient slider panels that are currently displayed, permitting ''temporary'' display of several transient panels at once.//
* ''"""@"""''<br>denotes "open on hover": the slider/floating panel will be automatically opened as soon as the mouse moves over the slider label, without requiring a click.
* ''"""{{class{[label=key|tooltip][altlabel|alttooltip]}}}"""''<br>uses label/tooltip/accesskey.  """{{class{...}}}""", """=key""", """|tooltip""" and """[altlabel|alttooltip]""" are optional.  'class' is any valid CSS class name, used to style the slider label text.  'key' must be a ''single letter only''.  altlabel/alttooltip specify alternative label/tooltip for use when slider/floating panel is displayed.  //Note: you can use HTML syntax within the label text to include HTML entities (e.g., {{{&raquo;}}} (&raquo;) or {{{&#x25ba;}}} (&#x25ba;), or even embedded images (e.g., {{{<img src="images/eric3.gif">}}}).//
* ''"""#panelID:"""''<br>defines a unique DOM element ID that is assigned to the panel element used to display the slider content.  This ID can then be used later to reposition the panel using the {{{<<DOM move id>>}}} macro (see [[DOMTweaksPlugin]]), or to access/modify the panel element through use of {{{document.getElementById(...)}}}) javascript code in a plugin or inline script.
* ''""">"""''<br>automatically adds blockquote formatting to slider content
* ''"""..."""''<br>defers rendering of closed sliders until the first time they are opened.
Notes:
*You can 'nest' sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created.
*Deferred rendering (...) can be used to offset processing overhead until actually needed. However, this may produce unexpected results in some cases.  Use with care.
* To make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the 'start slider' or preceding the 'end slider' sequences are automatically supressed so that excess whitespace is eliminated from the output.
<<<
!!!!!Examples
<<<
simple in-line slider: 
{{{
+++content===
}}}
+++content===
----
use a custom label and tooltip: 
{{{
+++[label|tooltip]content===
}}}
+++[label|tooltip]content===
----
content automatically blockquoted: 
{{{
+++>content===
}}}
+++>content===
----
all options (except cookie) //(default open, heading, sized floater, transient, open on hover, class, label/tooltip/key, blockquoted, deferred)//
{{{
++++!!!^30em^*@{{big{[label=Z|click or press Alt-Z to open]}}}>...
   content
===
}}}
++++!!!^30em^*@{{big{[label=Z|click or press Alt-Z to open]}}}>...
   content
===
----
complex nesting example:
{{{
+++[get info...=I|click for information or press Alt-I]
	put some general information here,
	plus a floating panel with more specific info:
	+++^10em^[view details...|click for details]
		put some detail here, which could in turn contain a transient panel,
		perhaps with a +++^25em^*[glossary definition]explaining technical terms===
	===
===
}}}
+++[get info...=I|click for information or press Alt-I]
	put some general information here,
	plus a floating panel with more specific info:
	+++^10em^[view details...|click for details]
		put some detail here, which could in turn contain a transient panel,
		perhaps with a +++^25em^*[glossary definition]explaining technical terms===
	===
===
----
embedded image as slider button
{{{
+++[<img src=images/eric3.gif>|click me!]>
	{{big{OUCH!}}}
===
}}}
+++[<img src=images/eric3.gif>|click me!]>
	{{big{OUCH!}}}
===
<<<
!!!!!Revisions
<<<
2008.11.15 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class).  In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
2008.11.13 2.4.8 in document.onclick(), if transient panel is not a sliderPanel or floatingPanel, hide it via CSS
2008.10.05 2.4.7 in onClickNestedSlider(), added try/catch around focus() call to prevent IE error if input field being focused on is currently not visible.
2008.09.07 2.4.6 added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.06.07 2.4.5 in 'onmouseover' handler for 'open on hover' slider buttons, use call() method when invoking document.onclick function (avoids error in IE)
2008.06.07 2.4.4 changed default for chkFloatingSlidersAnimate to FALSE to avoid clipping problem on some browsers (IE).  Updated Morpher hijack (again) to adjust regular sliderPanel styles as well as floatingPanel styles.
2008.05.07 2.4.3 updated Morpher hijack to adjust floatingPanel styles after animation without affecting other animated elements (i.e. popups).  Also, updated adjustSliderPos() to account for scrollwidth and use core findWindowWidth().
2008.04.02 2.4.2 in onClickNestedSlider, handle clicks on elements contained //within// slider buttons (e.g., when using HTML to display an image as a slider button).
2008.04.01 2.4.1 open on hover also triggers document.onclick to close other transient sliders
2008.04.01 2.4.0 re-introduced 'open on hover' feature using "@" symbol
2008.03.26 2.3.5 in document.onclick(), if click is in popup, don't dismiss transient panel (if any)
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 2.3.4 added hijack for Animator.prototype.startAnimating().  Previously, the plugin code simply set the overflow to "visible" after animation.  This code tweak corrects handling of elements that were styled with overflow=hidden/auto/scroll before animation by saving the overflow style and then restoring it after animation has completed.
2007.12.17 2.3.3 use hasClass() instead of direct comparison to test for "floatingPanel" class.  Allows floating panels to have additional classes assigned to them (i.e., by AnimationEffectsPlugin).
2007.11.14 2.3.2 in onClickNestedSlider(), prevent SHIFT-click events from opening a new, empty browser window by setting "cancelBubble=true" and calling "stopPropagation()".  Note: SHIFT-click is still processed as a normal click (i.e., it toggles the slider panel display).  Also, using SHIFT-click will prevent 'transient' sliders from being automatically closed when another slider is opened, allowing you to *temporarily* display several transient sliders at once.
2007.07.26 2.3.1 in document.onclick(), propagate return value from hijacked core click handler to consume OR bubble up click as needed.  Fixes "IE click disease", whereby nearly every mouse click causes a page transition.
2007.07.20 2.3.0 added syntax for setting panel ID (#panelID:).  This allows individual slider panels to be repositioned within tiddler content simply by giving them a unique ID and then moving them to the desired location using the {{{<<DOM move id>>}}} macro.
2007.07.19 2.2.0 added syntax for alttext and alttip (button label and tooltip to be displayed when panel is open)
2007.07.14 2.1.2 corrected use of 'transient' attribute in IE to prevent (non-recursive) infinite loop
2007.07.12 2.1.0 replaced use of "*" for 'open/close on rollover' (which didn't work too well).  "*" now indicates 'transient' panels that are automatically closed if a click occurs somewhere else in the document.  This permits use of nested sliders to create nested "pulldown menus" that automatically disappear after interaction with them has been completed.  Also, in onClickNestedSlider(), use "theTarget.sliderCookie", instead of "this.sliderCookie" to correct cookie state tracking when automatically dismissing transient panels.
2007.06.10 2.0.5 add check to ensure that window.adjustSliderPanel() is defined before calling it (prevents error on shutdown when mouse event handlers are still defined)
2007.05.31 2.0.4 add handling to invoke adjustSliderPanel() for onmouseover events on slider button and panel.  This allows the panel position to be re-synced when the button position shifts due to changes in unrelated content above it on the page.  (thanks to Harsha for bug report)
2007.03.30 2.0.3 added chkFloatingSlidersAnimate (default to FALSE), so that slider animation can be disabled independent of the overall document animation setting (avoids strange rendering and focus problems in floating panels)
2007.03.01 2.0.2 for TW2.2+, hijack Morpher.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
2007.03.01 2.0.1 in hijack for Slider.prototype.stop, use apply() to pass params to core function
2006.07.28 2.0.0 added custom class syntax around label/tip/key syntax: {{{{{classname{[label=key|tip]}}}}}}
2006.07.25 1.9.3 when parsing slider, save default open/closed state in button element, then in onClickNestedSlider(), if slider state matches saved default, instead of saving cookie, delete it.  Significantly reduces the 'cookie overhead' when default slider states are used.
2006.06.29 1.9.2 in onClickNestedSlider(), when setting focus to first control, skip over type="hidden"
2006.06.22 1.9.1 added panel.defaultPanelWidth to save requested panel width, even after resizing has changed the style value
2006.05.11 1.9.0 added optional '^width^' syntax for floating sliders and '=key' syntax for setting an access key on a slider label
2006.05.09 1.8.0 in onClickNestedSlider(), when showing panel, set focus to first child input/textarea/select element
2006.04.24 1.7.8 in adjustSliderPos(), if floating panel is contained inside another floating panel, subtract offset of containing panel to find correct position
2006.02.16 1.7.7 corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie
2006.02.15 1.7.6 in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)
2006.02.04 1.7.5 add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals
2006.01.18 1.7.4 only define adjustSliderPos() function if it has not already been provided by another plugin.  This lets other plugins 'hijack' the function even when they are loaded first.
2006.01.16 1.7.3 added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels.  While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels.  Short-term workaround is to only adjust the position for 'top-level' floaters.
2006.01.16 1.7.2 added button property to slider panel elements so that slider panel can tell which button it belongs to.  Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
2006.01.14 1.7.1 added optional "^" syntax for floating panels.  Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.
2006.01.14 1.7.0 added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)
2006.01.03 1.6.2 When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element.  (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)
2005.12.15 1.6.1 added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders
removed checkbox option for 'global' application of lazy sliders
2005.11.25 1.6.0 added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)
2005.11.21 1.5.1 revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability.  Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.
2005.11.20 1.5.0 added (cookiename) syntax for optional tracking and restoring of slider open/close state
2005.11.11 1.4.0 added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style
2005.11.07 1.3.0 removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines
2005.11.05 1.2.1 changed name to NestedSlidersPlugin
2005.11.04 1.2.0 added alternative character-mode syntax {{{(((}}} and {{{)))}}}
tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax
2005.11.03 1.1.1 fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used.  code cleanup, added documentation
2005.11.03 1.1.0 changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}.  changed name to EasySlidersPlugin
2005.11.03 1.0.0 initial public release
<<<
<!--{{{-->
<div class='header' macro='gradient horiz [[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryLight]]'>
<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'>
<!-- ajout ocalTW: barre de menus en haut de la partie centrale -->
<div style="text-align:center"><span class='Misc' refresh='content' tiddler='HeaderToolbar'></span></div>
<div id='messageArea'></div>
<!-- ajout pour TiddlersBarPlugin : affichage par onglet  -->
<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
<div id='tiddlerDisplay'></div>
<div style="text-align:center"><span refresh='content' tiddler='FooterDisclaimer'></span></div>
</div>
<!--}}}-->
Depuis novembre 2013, il y a deux grandes familles de TiddlyWiki :
# la version ''CLASSIC'' telle que nous la connaissons depuis près de 10 ans et qui a fait la joie des fans de TiddlyWiki (dont nous faisons partie)
** Le site dédié à cette version est http://classic.tiddlywiki.org
# la version ''TW5'' qui est apparue en novembre 2013 et sur laquelle Jeremy Ruston fait porter tous ses efforts
** Le site dédié à cette version est http://www.tiddlywiki.org

Sur le site <<tiddler SiteUrl>>, nous ne vous parlerons que de TiddlyWiki CLASSIC ... pour le moment...
/***
|Name|QuoteOfTheDayPlugin|
|Source|http://www.TiddlyTools.com/#QuoteOfTheDayPlugin|
|Documentation|http://www.TiddlyTools.com/#QuoteOfTheDayPluginInfo|
|Version|1.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Display a randomly selected "quote of the day" from a list defined in a separate tiddler|

!!!!!Documentation
>see [[QuoteOfTheDayPluginInfo]]
!!!!!Revisions
<<<
2008.03.21 [1.4.1] in showNextItem(), corrected handling for random selection so that //initial// index value will randomized correctly instead of always showing first item, even when randomizing.  Thanks to Riccardo Gherardi for finding this.
| Please see [[QuoteOfTheDayPluginInfo]] for previous revision details |
2005.10.21 [1.0.0] Initial Release.  Based on a suggestion by M.Russula
<<<
!!!!!Code
***/
//{{{
version.extensions.QuoteOfTheDayPlugin= {major: 1, minor: 4, revision: 1, date: new Date(2008,3,21)};
config.macros.QOTD = {
	clickTooltip: "click to view another item",
	timerTooltip: "auto-timer stopped...  'mouseout' to restart timer",
	timerClickTooltip: "auto-timer stopped...  click to view another item, or 'mouseout' to restart timer",
	handler:
	function(place,macroName,params) {
		var tid=params.shift(); // source tiddler containing HR-separated quotes
		var p=params.shift();
		var click=true; // allow click for next item
		var inline=false; // wrap in slider for animation effect
		var random=true; // pick an item at random (default for "quote of the day" usage)
		var folder=false; // use local filesystem folder list
		var cookie=""; // default to no cookie
		var next=0; // default to first item (or random item)
		while (p) {
			if (p.toLowerCase()=="noclick") var click=false;
			if (p.toLowerCase()=="inline") var inline=true;
			if (p.toLowerCase()=="norandom") var random=false;
			if (p.toLowerCase().substr(0,7)=="cookie:") var cookie=p.substr(8);
			if (!isNaN(p)) var delay=p;
			p=params.shift();
		}
		if ((click||delay) && !inline) {
			var panel = createTiddlyElement(null,"div",null,"sliderPanel");
			panel.style.display="none";
			place.appendChild(panel);
			var here=createTiddlyElement(panel,click?"a":"span",null,"QOTD");
		}
		else
			var here=createTiddlyElement(place,click?"a":"span",null,"QOTD");
		here.id=(new Date()).convertToYYYYMMDDHHMMSSMMM()+Math.random().toString(); // unique ID
		// get items from tiddler or file list
		var list=store.getTiddlerText(tid,"");
		if (!list||!list.length) { // not a tiddler... maybe an image directory?
			var list=this.getImageFileList(tid);
			if (!list.length) { // maybe relative path... fixup and try again
				var h=document.location.href;
				var p=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1)));
				var list=this.getImageFileList(p+tid);
			}
		}
		if (!list||!list.length) return false; // no contents... nothing to display!
		here.setAttribute("list",list);
		if (delay) here.setAttribute("delay",delay);
		here.setAttribute("random",random);
		here.setAttribute("cookie",cookie);
		if (click) {
			here.title=this.clickTooltip
			if (!inline) here.style.display="block";
			here.setAttribute("href","javascript:;");
			here.onclick=function(event)
				{ config.macros.QOTD.showNextItem(this); }
		}
		if (config.options["txtQOTD_"+cookie]!=undefined) next=parseInt(config.options["txtQOTD_"+cookie]);
		here.setAttribute("nextItem",next);
		config.macros.QOTD.showNextItem(here);
		if (delay) {
			here.title=click?this.timerClickTooltip:this.timerTooltip
			here.onmouseover=function(event)
				{ clearTimeout(this.ticker); };
			here.onmouseout=function(event)
				{ this.ticker=setTimeout("config.macros.QOTD.tick('"+this.id+"')",this.getAttribute("delay")); };
			here.ticker=setTimeout("config.macros.QOTD.tick('"+here.id+"')",delay);
		}
	},
	tick: function(id) {
		var here=document.getElementById(id); if (!here) return;
		config.macros.QOTD.showNextItem(here);
		here.ticker=setTimeout("config.macros.QOTD.tick('"+id+"')",here.getAttribute("delay"));
	},
	showNextItem:
	function (here) {
		// hide containing slider panel (if any)
		var p=here.parentNode;
		if (p.className=="sliderPanel") p.style.display = "none"
		// get a new quote
		var index=here.getAttribute("nextItem"); 
		var items=here.getAttribute("list").split("\n----\n");
		if (index<0||index>=items.length) index=0;
		if (here.getAttribute("random")=="true") index=Math.floor(Math.random()*items.length);
		var txt=items[index];
		// re-render quote display element, and advance index counter
		removeChildren(here); wikify(txt,here);
		index++; here.setAttribute("nextItem",index);
		var cookie=here.getAttribute("cookie");
		if (cookie.length) {
			config.options["txtQOTD_"+cookie]=index.toString();
			saveOptionCookie("txtQOTD_"+cookie);
		}
		// redisplay slider panel (if any)
		if (p.className=="sliderPanel") {
			if(anim && config.options.chkAnimate)
				anim.startAnimating(new Slider(p,true,false,"none"));
			else p.style.display="block";
		}
	},
	getImageFileList: function(cwd) { // returns HR-separated list of image files
		function isImage(fn) {
			var ext=fn.substr(fn.length-3,3).toLowerCase();
			return ext=="jpg"||ext=="gif"||ext=="png";
		}
		var files=[];
		if (config.browser.isIE) {
			cwd=cwd.replace(/\//g,"\\");
			// IE uses ActiveX to read filesystem info
			var fso = new ActiveXObject("Scripting.FileSystemObject");
			if(!fso.FolderExists(cwd)) return [];
			var dir=fso.GetFolder(cwd);
			for(var f=new Enumerator(dir.Files); !f.atEnd(); f.moveNext())
				if (isImage(f.item().path)) files.push("[img[%0]]".format(["file:///"+f.item().path.replace(/\\/g,"/")]));
		} else {
			// FireFox (mozilla) uses "components" to read filesystem info
			// get security access
			if(!window.Components) return;
			try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
			catch(e) { alert(e.description?e.description:e.toString()); return []; }
			// open/validate directory
			var file=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
			try { file.initWithPath(cwd); } catch(e) { return []; }
			if (!file.exists() || !file.isDirectory()) { return []; }
			var folder=file.directoryEntries;
			while (folder.hasMoreElements()) {
				var f=folder.getNext().QueryInterface(Components.interfaces.nsILocalFile);
				if (f instanceof Components.interfaces.nsILocalFile)
					if (isImage(f.path)) files.push("[img[%0]]".format(["file:///"+f.path.replace(/\\/g,"/")]));
			}
		}
		return files.join("\n----\n");
	}
}
//}}}
/***
|Name|QuoteOfTheDayPluginInfo|
|Source|http://www.TiddlyTools.com/#QuoteOfTheDayPlugin|
|Documentation|http://www.TiddlyTools.com/#QuoteOfTheDayPluginInfo|
|Version|1.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for QuoteOfTheDayPlugin|
!!!!!Usage
<<<
{{{<<QOTD tiddlername norandom noclick inline cookie:cookiename delay>>}}}
* ''tiddlername'' is the name of a tiddler containing your list of quotes, each separated by a horizontal line (use {{{----}}} on a line by itself).
* Each time the macro is rendered it will display a different quotation, selected at random from the specified tiddler.  To display quotes in the sequence in which they occur in the tiddler, you can use the ''norandom'' keyword.
* When using ''norandom'', you can also specify an optional ''cookie:cookiename'' parameter which will be used to track the //index// of the next quote to be displayed, so that each subsequent rendering of the macro can continue the sequence of quotes as entered in the source tiddler, even in between browser sessions.
* By default, clicking on the rendered quote will select and display another random quote.  Use the optional ''noclick'' keyword parameter to disable this "onClick" handling.
* By default, a clickable or timed quote will be displayed insider a 'slider' panel, so that standard TW animation effects will be used.  However, slider panels are always rendered as "block-level" content, forcing a newline both before and after the slider panel.  Use the ''inline'' keyword parameter to bypass this side-effect and display a clickable/timed quote without automatically adding surrounding linebreaks.
* The quote can also be refreshed automatically, by specifying a numeric ''delay'' parameter (in milliseconds) which enables a countdown timer.  When the mouse is over the quote, the timer is automatically stopped.  Moving the mouse away from the quote content restarts the timer.
<<<
!!!!!Example
<<<
{{{<<QOTD Quotations 10000>>}}}
<<QOTD Quotations 10000>>
<<<
!!!!!Revisions
<<<
2008.03.21 1.4.1 in showNextItem(), corrected handling for random selection so that //initial// index value will randomized correctly instead of always showing first item, even when randomizing.  Thanks to Riccardo Gherardi for finding this.
2008.01.16 1.4.0 support using a local image file directory instead of tiddler name for getting list of items.  If specified tiddler does not exist in the document, macro attempts to use tiddlername as a local directory name (using either absolute or relative path) and get list of all JPG/GIF/PNG files.
2007.08.06 1.3.0 added support for "cookie:cookiename" param
2007.05.03 1.2.1 corrected logic for handling "inline" display (i.e., bypass slider and use of 'block' for quote elements)
2007.05.03 1.2.0 added sliderPanel wrapper around quote to take advantage of core-supported slider animation.  Use "noslider"/"inline" keyword param to suppress use of slider.  Also added tooltips for click, delay, and click+delay modes.
2007.04.16 1.1.2 code cleanup
2007.04.16 1.1.1 onClick handling now supports sequential as well as random order
2007.04.14 1.1.0 added onClick handling for selecting and display a new random quote
2005.10.21 1.0.0 Initial Release.  Based on a suggestion by M.Russula
<<<
| [img[images/Warning.gif]] | !Article en cours de refonte.<br>Vous le retrouverez très prochainement ... |
/%
!info
|Name|ResetChangeCounters|
|Source|http://www.TiddlyTools.com/#ResetChangeCounters|
|Version|2.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|Reset all TiddlyWiki option cookies (with confirmation)|
Usage
<<<
{{{
<<tiddler ResetChangeCounters>>
<<tiddler ResetChangeCounters with: label>>
}}}
<<<
Example
<<<
{{{<<tiddler ResetChangeCounters with: 'reset counters'>>}}}
<<tiddler ResetChangeCounters##show with: 'reset counters'>>
<<<
!end
!show
<html><nowiki><a href="javascript:;" title="$2"
onmouseover="
	this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
	+encodeURIComponent(encodeURIComponent(this.onclick))
	+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
	var msg='Are you sure you want to remove the change counters from these tiddlers:\n\n';
	var t=store.getTiddlers('title'); var tids=[];
	for (var i=0;i<t.length;i++) {
		var v=store.getValue(t[i],'changecount');
		if (v) { msg+=t[i].title+' ('+v+')\n'; tids.push(t[i]); }
	}
	msg+='\nPress OK to proceed';
	if (!confirm(msg)) return false;
	for (var i=0;i<tids.length;i++) tids[i].clearChangeCount();
	displayMessage('Change counters have been reset to 0');
	displayMessage('Don\'t forget to save your document!');
	return false;
">$1</a></html>
!end
%/<<tiddler {{var src='ResetChangeCounters'; src+(tiddler&&tiddler.title==src?'##info':'##show')}}
with:	{{'$1'!='$'+'1'?'$1':'&empty; - Reset tiddler change counters...'}}
	{{'$2'!='$'+'2'?'$2':'remove change counters from all tiddlers in this document'}}
>>
/***
|''Name:''|~SectionMacro|
|''Version:''|0.9.4 (20-Apr-2007)|
|''Author:''|[[Jack]]|
|''Type:''|Macro|
!Description
Allows you to create collapsable sections just like the slider macro but without needing to create new tiddlers for these sections.
!Usage
{{{<<section Title Tiddler Text goes here...
and can be multi-
line and include {${${monospace text}$}$}.
>>}}}
<<section Title Tiddler Text goes here...
and can be multi-
line and include {${${monospace text}$}$}.
>>
!Revision History
* Original by [[Jack]] 0.9
* Nested sliders and cookie persistence 0.9.1
* Removed crappy cookie persistance 0.9.2
* Bug-fix with quoted 2st parameter (thanks M. Macolio) 0.9.3
* Bug-fix with monospace text (thanks M. Macolio) 0.9.4
!Code
***/
//{{{
version.extensions.section = {major: 0, minor: 9, revision: 4, date: new Date("Apr 20, 2007")};

config.macros.section = {count:0,display:'none'};
config.macros.section.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
 this.slider(place,"chkSection" + this.count++,paramString.substr(params[0].length+(paramString.substr(params[0].length+1,1).match(/['"]/)?2:1)).replace(/\$\>/g, '>').replace(/}\$}\$}/, '}}}').replace(/{\${\${/, '{{{'),params[0], "tooltip");
}

config.macros.section.slider = function(place,cookie,text,title,tooltips) {
 var btn = createTiddlyButton(place,title,tooltips,config.macros.slider.onClickSlider,"tiddlyLink tiddlyLinkExisting"); 
 var panel = createTiddlyElement(place,"div",null,"timelineSliderPanel",null);
 panel.setAttribute("cookie",cookie);
 panel.style.display = config.options[cookie] ? "block" : "none";
 panel.style.display=this.display;
 if(text) wikify(text,panel);
};
//}}}
//Tiddlers do easily 80% of what you're looking for and, if you really want to nail the remaining 20%, you can find almost anything on www.TiddlyTools.com.// - ''~PeterMerel''
----
//TiddlyTools is a treasure trove of high quality, well maintained TiddlyWiki plugins// - ''www.TiddlyWiki.org''
----
//You're the plugin ~MacGyver! It seems that whenever there's a problem, you just barge in with a URL to TiddlyTools which solves the issue.// - ''FND''
----
//TiddlyTools.com is actually the work of one man - at least he *claims* he's just one man, but output seems to indicate something more like a Borg-style collective...// - ''~DanielBaird''
----
//An avalanche of addons which boosts the limits of ~JavaScript to unknown heights// - ''www.orbifold.net''
----
//You didn't feed me, but you gave me grain and explained me how a mill works. ;-) That's more than helping. Thank you very much.// - ''~WinterKnight''
----
//I've been a devoted user of your TiddlyTools adaptations for so long, that I've fallen into the trap of simply staying in quiet awe of the work you do.// - ''~HansWobbe''
----
//Wow Eric - it's amazing!! You solve problems in a way that the solution comes earlier than the problem! // - ''~MichaelTarnowski''
----
//TiddlyWiki is far and away the best wiki technology on the planet today. Go check www.TiddlyTools.com if you don't believe me...// - ''~PeterMerel''
----
//Dang it, Eric, you have to stop coming up with the solution before I have a chance to suggest it! :-)// - ''~KenGirard''
----
//...all I can say is "wow"! This site is amazing!// - ''~SamWalker''
----
//I've seldom seen so much output on a consistent basis that is always of the highest quality.// - ''~HansWobbe''
----
//You make absolutely the best tools, thank you!// - ''~BenjaminMigliori''
----
//www.TiddlyTools.com... there are some real gems in there!// - ''~TedPavlic''
----
//It's very clear that TiddlyWiki is ~MoreWikiThanWiki.  ...go visit www.TiddlyTools.com and click on "extras"...''this is not your father's ~WikiWikiWeb...''// - ''~PeterMerel''
----
//Thanks for being so smart, Eric! // - ''~DaveParker''
----
//Amazing extensions, ...so many fabulous features!// - ''~JeffChen''
----
//..."Hey Mister, TiddlyTools Doesn't Suck!!"... ;-)  Awesome stuff!  ... // - ''~PaulReiber''
Site sur la version française de [[TiddlyWiki|http://www.tiddlywiki.com]]
~TiddlyWiki^^fr
http://www.tiddlywiki.fr/
/***

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

|Name|SplashScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#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
***/
//{{{
window.old_lewcid_splash_restart=window.restart;

window.restart = function()
{   if (document.getElementById("SplashScreen"))
        document.getElementById("SplashScreen").style.display = "none";
      if (document.getElementById("contentWrapper"))
        document.getElementById("contentWrapper").style.display = "block";
    
    window.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;
}
//}}}
/*{{{*/
/***
StyleSheetHeader
***/
.headerShadow {position:relative; padding:0.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:0.5em 0em 1em 1em; left:0px; top:0px;}
/*}}}*/
/*{{{*/
/***
StyleSheetFirstLetter
***/
.firstletter{ float:left; width:0.7em; font-size:400%; font-family:times,arial; line-height:60%; }
/*}}}*/
/*{{{*/
/***
StyleSheetTableList
***/
.viewer ul {margin-top: 0; margin-bottom: 0;}
.viewer {text-align: justify;}
.viewer th {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::PrimaryMid]];}
/*}}}*/
/*{{{*/
/***
ImportTiddlersPlugin
***/
#sidebar #importPanel
	{ right:115%; top:6em; text-align:left; }
/*}}}*/

/*{{{*/
/***
Alignement
***/
.floatleft { display:block;text-align:left; }
.floatright { display:block;text-align:right; }
.floatcenter { display:block;text-align:center; }
.wideTable{width:100%}
/*}}}*/
/*{{{*/
/***
ExportTiddlersPlugin
***/
#sidebar #exportPanel
	{ right:115%; top:9em; text-align:left; }
/*}}}*/
/*{{{*/
/***
StyleSheetTiddlersBar
***/
#tiddlersBar .button {border:0}
#tiddlersBar .tab {white-space:nowrap}
#tiddlersBar {padding : 1em 0.5em 2px 0.5em}
.tabUnselected .tabButton, .tabSelected .tabButton {padding : 0 2px 0 2px; margin: 0 0 0 4px;}
.tiddler, .tabContents {border:1px [[ColorPalette::TertiaryPale]] solid;}
/*}}}*/
/*{{{*/
/***
NestedSlidersPlugin
***/
.floatingPanel
	{ z-index:700; padding:1em; margin:0em; border:1px solid; -moz-border-radius:1em; font-size:8pt; text-align:left; }
.floatingPanel hr
	{ margin:2px 0 1px 0; padding:0; }
#sidebarOptions .sliderPanel
	{ margin:0; padding:0; font-size:1em; background:transparent; }
#sidebarOptions .sliderPanel a
	{ font-weight:normal; }
#sidebarOptions .sliderPanel blockquote
	{ margin:0;padding:0;margin-left:1em; border-left:1px dotted; padding-left:1em }

.selected .floatingPanel .button,
.selected .floatingPanel a:link,
.selected .floatingPanel a:hover,
.selected .floatingPanel a:visited,
.floatingPanel .button,
.floatingPanel a:link,
.floatingPanel a:hover,
.floatingPanel a:visited
	{ color:[[ColorPalette::PrimaryDark]] !important; }
/*}}}*/
/***
|Name|SuppressEmptyTagsPlugin|
|Source|[[FND's DevPad|http://devpad.tiddlyspot.com/#SuppressEmptyTagsPlugin]]|
|Version|1.1|
|Author|FND|
|Contributors|[[Saq Imtiaz|http://tw.lewcid.org]], [[Eric Shulman|http://www.tiddlytools.com]]|
|License|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|N/A|
|Overrides|config.macros.tags.handler|
|Description|suppress tagged box when tiddler is untagged|
!Changelog
!!v0.5 (2007-06-11)
* initial release
!!v1.0 (2007-06-11)
* proper overriding of core function (thanks Saq)
* changed ~CoreVersion to 2.1 (from 2.2)
!!v1.1 (2007-06-11)
* further improved hijacking method (thanks Eric)
!Code
***/
//{{{
config.macros.tags.oldHandler = config.macros.tags.handler;
config.macros.tags.handler = function(place, macroName, params, wikifier, paramString, tiddler) {
	if(tiddler.tags && tiddler.tags.length > 0)
		this.oldHandler.apply(this, arguments);
	else
		place.style.display = 'none';
};
//}}}
/***
|Name|TiddlerTweakerPlugin|
|Source|http://www.TiddlyTools.com/#TiddlerTweakerPlugin|
|Version|2.4.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|select multiple tiddlers and modify author, created, modified and/or tag values|
~TiddlerTweaker is a 'power tool' for TiddlyWiki authors.  Select multiple tiddlers from a listbox and 'bulk modify' the creator, author, created, modified and/or tag values of those tiddlers using a compact set of form fields.  The values you enter into the fields simultaneously overwrite the existing values in all tiddlers you have selected.
!!!!!Usage
<<<
{{{<<tiddlerTweaker>>}}}
{{smallform{<<tiddlerTweaker>>}}}
By default, any tags you enter into the TiddlerTweaker will //replace// the existing tags in all the tiddlers you have selected.  However, you can also use TiddlerTweaker to quickly filter specified tags from the selected tiddlers, while leaving any other tags assigned to those tiddlers unchanged:
>Any tag preceded by a '+' (plus) or '-' (minus), will be added or removed from the existing tags //instead of replacing the entire tag definition// of each tiddler (e.g., enter '-excludeLists' to remove that tag from all selected tiddlers.  When using this syntax, care should be taken to ensure that //every// tag is preceded by '+' or '-', to avoid inadvertently overwriting any other existing tags on the selected tiddlers.  (note: the '+' or '-' prefix on each tag value is NOT part of the tag value, and is only used by TiddlerTweaker to control how that tag value is processed)
Important Notes:
* TiddlerTweaker is a 'power user' tool that can make changes to many tiddlers at once.  ''You should always have a recent backup of your document (or 'save changes' just *before* tweaking the tiddlers), just in case you accidentally 'shoot yourself in the foot'.''
* The date and author information on any tiddlers you tweak will ONLY be updated if the corresponding checkboxes have been selected.  As a general rule, after using TiddlerTweaker, always ''//remember to save your document//'' when you are done, even though the tiddler timeline tab may not show any recently modified tiddlers.
* Selecting and updating all tiddlers in a document can take a while.  Your browser may warn about an 'unresponsive script'.  Usually, if you allow it to continue, it should complete the processing... eventually.  Nonetheless, be sure to save your work before you begin tweaking lots of tiddlers, just in case something does get stuck.
<<<
!!!!!Revisions
<<<
2011.01.21 2.4.5 auto-selection: use "-" for untagged tiddlers.  Also, added 'opened', 'invert'
2009.09.15 2.4.4 added 'edit' button. moved html definition to separate section
2009.09.13 2.4.3 in settiddlers(), convert backslashed chars (\n\b\s\t) in replacement text
2009.06.26 2.4.2 only add brackets around tags containing spaces
2009.06.22 2.4.1 in setFields(), add brackets around all tags shown tweaker edit field
2009.03.30 2.4.0 added 'sort by modifier'
2009.01.22 2.3.0 added support for text pattern find/replace
2008.10.27 2.2.3 in setTiddlers(), fixed Safari bug by replacing static Array.concat(...) with new Array().concat(...)
2008.09.07 2.2.2 added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.05.12 2.2.1 replace built-in backstage tweak task with tiddler tweaker control panel (moved from BackstageTweaks)
2008.01.13 2.2.0 added 'auto-selection' links: all, changed, tags, title, text
2007.12.26 2.1.0 added support for managing 'creator' custom field (see [[CoreTweaks]])
2007.11.01 2.0.3 added config.options.txtTweakerSortBy for cookie-based persistence of list display order preference setting.
2007.09.28 2.0.2 in settiddlers() and deltiddlers(), added suspend/resume notification handling (improves performance when operating on multiple tiddlers)
2007.08.03 2.0.1 added shadow definition for [[TiddlerTweaker]] tiddler for use as parameter references with {{{<<tiddler>>, <<slider>> or <<tabs>>}}} macros.
2007.08.03 2.0.0 converted from inline script
2006.01.01 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TiddlerTweakerPlugin= {major: 2, minor: 4, revision: 5, date: new Date(2011,1,21)};

// shadow tiddler
config.shadowTiddlers.TiddlerTweaker='<<tiddlerTweaker>>';

// defaults
if (config.options.txtTweakerSortBy==undefined) config.options.txtTweakerSortBy='modified';

// backstage task
if (config.tasks) { // for TW2.2b3 or above
	config.tasks.tweak.tooltip='review/modify tiddler internals: dates, authors, tags, etc.';
	config.tasks.tweak.content='{{smallform small groupbox{<<tiddlerTweaker>>}}}';
}

// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
	window.removeCookie=function(name) {
		document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;'; 
	}
}

config.macros.tiddlerTweaker = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var span=createTiddlyElement(place,'span');
		span.innerHTML=store.getTiddlerText('TiddlerTweakerPlugin##html');
		this.init(span.getElementsByTagName('form')[0],config.options.txtTweakerSortBy);
	},
	init: function(f,sortby) { // set form controls
		if (!f) return; // form might not be rendered yet...
		while (f.list.options[0]) f.list.options[0]=null; // empty the list
		var tids=store.getTiddlers(sortby);
		if (sortby=='size') // descending order
			tids.sort(function(a,b) {return a.text.length > b.text.length ? -1 : (a.text.length == b.text.length ? 0 : +1);});
		var who='';
		for (i=0; i<tids.length; i++) { var t=tids[i];
			var label=t.title; var value=t.title;
			switch (sortby) {
				case 'modified':
				case 'created':
					var t=tids[tids.length-i-1]; // reverse order
					var when=t[sortby].formatString('YY.0MM.0DD 0hh:0mm ');
					label=when+t.title;
					value=t.title;
					break;
				case 'size':
					label='['+t.text.length+'] '+label;
					break;
				case 'modifier':
				case 'creator':
					if (who!=t[sortby]) {
						who=t[sortby];
						f.list.options[f.list.length]=new Option('by '+who+':','',false,false);
					}
					label='\xa0\xa0\xa0'+label; // indent
					break;
			}
			f.list.options[f.list.length]=new Option(label,value,false,false);
		}
		f.title.value=f.who.value=f.creator.value=f.tags.value='';
		f.cm.value=f.cd.value=f.cy.value=f.ch.value=f.cn.value='';
		f.mm.value=f.md.value=f.my.value=f.mh.value=f.mn.value='';
		f.stats.disabled=f.set.disabled=f.del.disabled=f.edit.disabled=f.display.disabled=true;
		f.settitle.disabled=false;
		config.options.txtTweakerSortBy=sortby;
		f.sortby.value=sortby; // sync droplist
		if (sortby!='modified') saveOptionCookie('txtTweakerSortBy');
		else removeCookie('txtTweakerSortBy');
	},
	enablefields: function(here) { // enables/disables inputs based on #items selected
		var f=here.form; var list=f.list;
		var c=0; for (i=0;i<list.length;i++) if (list.options[i].selected) c++;
		if (c>1) f.title.disabled=true;
		if (c>1) f.settitle.checked=false;
		f.set.disabled=(c==0);
		f.del.disabled=(c==0);
		f.edit.disabled=(c==0);
		f.display.disabled=(c==0);
		f.settitle.disabled=(c>1);
		f.stats.disabled=(c==0);
		var msg=(c==0)?'select tiddlers':(c+' tiddler'+(c!=1?'s':'')+' selected');
		here.previousSibling.firstChild.firstChild.nextSibling.innerHTML=msg;
		if (c) clearMessage(); else displayMessage('no tiddlers selected');
	},
	setfields: function(here) { // set fields from first selected tiddler
		var f=here.form;
		if (!here.value.length) {
			f.title.value=f.who.value=f.creator.value=f.tags.value='';
			f.cm.value=f.cd.value=f.cy.value=f.ch.value=f.cn.value='';
			f.mm.value=f.md.value=f.my.value=f.mh.value=f.mn.value='';
			return;
		}
		var tid=store.getTiddler(here.value); if (!tid) return;
		f.title.value=tid.title;
		f.who.value=tid.modifier;
		f.creator.value=tid.fields['creator']||''; // custom field - might not exist
		f.tags.value=tid.tags.map(function(t){return String.encodeTiddlyLink(t)}).join(' ');
		var c=tid.created; var m=tid.modified;
		f.cm.value=c.getMonth()+1;
		f.cd.value=c.getDate();
		f.cy.value=c.getFullYear();
		f.ch.value=c.getHours();
		f.cn.value=c.getMinutes();
		f.mm.value=m.getMonth()+1;
		f.md.value=m.getDate();
		f.my.value=m.getFullYear();
		f.mh.value=m.getHours();
		f.mn.value=m.getMinutes();
	},
	selecttiddlers: function(here,callback) {
		var f=here; while (f&&f.nodeName.toLowerCase()!='form')f=f.parentNode;
		for (var t=f.list.options.length-1; t>=0; t--)
			f.list.options[t].selected=callback(f.list.options[t]);
		config.macros.tiddlerTweaker.enablefields(f.list);
		return false;
	},
	settiddlers: function(here) {
		var f=here.form; var list=f.list;
		var tids=[];
		for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert('please select at least one tiddler'); return; }
		var cdate=new Date(f.cy.value,f.cm.value-1,f.cd.value,f.ch.value,f.cn.value);
		var mdate=new Date(f.my.value,f.mm.value-1,f.md.value,f.mh.value,f.mn.value);
		if (tids.length>1 && !confirm('Are you sure you want to update 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;
			var title=!f.settitle.checked?tid.title:f.title.value;
			var who=!f.setwho.checked?tid.modifier:f.who.value;
			var text=tid.text;
			if (f.replacetext.checked) {
				var r=f.replacement.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
				text=text.replace(new RegExp(f.pattern.value,'mg'),r);
			}				
			var tags=tid.tags;
			if (f.settags.checked) { 
				var intags=f.tags.value.readBracketedList();
				var addtags=[]; var deltags=[]; var reptags=[];
				for (i=0;i<intags.length;i++) {
					if (intags[i].substr(0,1)=='+')
						addtags.push(intags[i].substr(1));
					else if (intags[i].substr(0,1)=='-')
						deltags.push(intags[i].substr(1));
					else
						reptags.push(intags[i]);
				}
				if (reptags.length)
					tags=reptags;
				if (addtags.length)
					tags=new Array().concat(tags,addtags);
				if (deltags.length)
					for (i=0;i<deltags.length;i++)
						{ var pos=tags.indexOf(deltags[i]); if (pos!=-1) tags.splice(pos,1); }
			}
			if (!f.setcdate.checked) cdate=tid.created;
			if (!f.setmdate.checked) mdate=tid.modified;
			store.saveTiddler(tid.title,title,text,who,mdate,tags,tid.fields);
			if (f.setcreator.checked) store.setValue(tid.title,'creator',f.creator.value); // set creator
			if (f.setcdate.checked) tid.assign(null,null,null,null,null,cdate); // set create date
		}
		store.resumeNotifications();
		this.init(f,f.sortby.value);
	},
	displaytiddlers: function(here,edit) {
		var f=here.form; var list=f.list;
		var tids=[];
		for (i=0; i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert('please select at least one tiddler'); return; }
		story.displayTiddlers(story.findContainingTiddler(f),tids,edit?DEFAULT_EDIT_TEMPLATE:null);
	},
	deltiddlers: function(here) {
		var f=here.form; var list=f.list;
		var tids=[];
		for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert('please select at least one tiddler'); return; }
		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')) {
				var msg=tid.title+' is tagged with systemConfig.'
					+'\n\nRemoving this tiddler may cause unexpected results.  Are you sure?';
				if (!confirm(msg)) continue;
			}
			store.removeTiddler(tid.title);
			story.closeTiddler(tid.title);
		}
		store.resumeNotifications();
		this.init(f,f.sortby.value);
	},
	stats: function(here) {
		var f=here.form; var list=f.list; var tids=[]; var out=''; var tot=0;
		var target=f.nextSibling;
		for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert('please select at least one tiddler'); return; }
		for (t=0;t<tids.length;t++) {
			var tid=store.getTiddler(tids[t]); if (!tid) continue;
			out+='[['+tid.title+']] '+tid.text.length+'\n'; tot+=tid.text.length;
		}
		var avg=tot/tids.length;
		out=tot+' bytes in '+tids.length+' selected tiddlers ('+avg+' bytes/tiddler)\n<<<\n'+out+'<<<\n';
		removeChildren(target);
		target.innerHTML="<hr><font size=-2><a href='javascript:;' style='float:right' "
			+"onclick='this.parentNode.parentNode.style.display=\"none\"'>close</a></font>";
		wikify(out,target);
		target.style.display='block';
	}
};
//}}}
/***
//{{{
!html
<style>
.tiddlerTweaker table,
.tiddlerTweaker table tr,
.tiddlerTweaker table td
	{ padding:0;margin:0;border:0;white-space:nowrap; }
</style><form class='tiddlerTweaker'><!--
--><table style="width:100%"><tr valign="top"><!--
--><td style="text-align:center;width:99%;"><!--
	--><font size=-2><div style="text-align:left;"><span style="float:right"><!--
	-->&nbsp; <a href="javascript:;" 
		title="select all tiddlers"
		onclick="return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
			return opt.value.length;
		});">all</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="select tiddlers currently displayed in the story column"
		onclick="return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
			return story.getTiddler(opt.value);
		});">opened</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="select tiddlers that are new/changed since the last file save"
		onclick="var lastmod=new Date(document.lastModified);
			return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
				var tid=store.getTiddler(opt.value);
				return tid&&tid.modified>lastmod;
			});
		">changed</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="select tiddlers with at least one matching tag"
		onclick="var t=prompt('Enter space-separated tags (match one or more).  Use \x22-\x22 to match untagged tiddlers');
			if (!t||!t.length) return false;
			var tags=t.readBracketedList();
			return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
				var tid=store.getTiddler(opt.value);
				return tid&&tags[0]=='-'?!tid.tags.length:tid.tags.containsAny(tags);
			});
		">tags</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="select tiddlers whose titles include matching text"
		onclick="var t=prompt('Enter a title (or portion of a title) to match');
			if (!t||!t.length) return false;
			return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
				return opt.value.indexOf(t)!=-1;
			});
		">titles</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="select tiddlers containing matching text"
		onclick="var t=prompt('Enter tiddler text (content) to match');
			if (!t||!t.length) return false;
			return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
				var tt=store.getTiddlerText(opt.value,'');
				return tt.indexOf(t)!=-1;
			});
		">text</a><!--
	-->&nbsp; <a href="javascript:;" 
		title="reverse selection of all list items"
		onclick="return config.macros.tiddlerTweaker.selecttiddlers(this,function(opt){
			return !opt.selected;
		});">invert</a><!--
	--></span><span>select tiddlers</span><!--
	--></div><!--
	--></font><select multiple name=list size="11" style="width:99.99%" 
		title="use click, shift-click and/or ctrl-click to select multiple tiddler titles" 
		onclick="config.macros.tiddlerTweaker.enablefields(this)" 
		onchange="config.macros.tiddlerTweaker.setfields(this)"><!--
	--></select><br><!--
	-->show<input type=text size=1 value="11" 
		onchange="this.form.list.size=this.value; this.form.list.multiple=(this.value>1);"><!--
	-->by<!--
	--><select name=sortby size=1 
		onchange="config.macros.tiddlerTweaker.init(this.form,this.value)"><!--
	--><option value="title">title</option><!--
	--><option value="size">size</option><!--
	--><option value="modified">modified</option><!--
	--><option value="created">created</option><!--
	--><option value="modifier">modifier</option><!--
	--></select><!--
	--><input type="button" value="refresh" 
		onclick="config.macros.tiddlerTweaker.init(this.form,this.form.sortby.value)"<!--
	--> <input type="button" name="stats" disabled value="totals..." 
		onclick="config.macros.tiddlerTweaker.stats(this)"><!--
--></td><td style="width:1%"><!--
	--><div style="text-align:left"><font size=-2>&nbsp;modify values</font></div><!--
	--><table style="width:100%;"><tr><!--
	--><td style="padding:1px"><!--
		--><input type=checkbox name=settitle unchecked 
			title="allow changes to tiddler title (rename tiddler)" 
			onclick="this.form.title.disabled=!this.checked">title<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=title size=35 style="width:98%" disabled><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=setcreator unchecked 
			title="allow changes to tiddler creator" 
			onclick="this.form.creator.disabled=!this.checked">created by<!--
	--></td><td style="padding:1px;"><!--
		--><input type=text name=creator size=35 style="width:98%" disabled><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=setwho unchecked 
			title="allow changes to tiddler author" 
			onclick="this.form.who.disabled=!this.checked">modified by<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=who size=35 style="width:98%" disabled><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=setcdate unchecked 
			title="allow changes to created date" 
			onclick="var f=this.form;
				f.cm.disabled=f.cd.disabled=f.cy.disabled=f.ch.disabled=f.cn.disabled=!this.checked"><!--
		-->created on<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=cm size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> / <input type=text name=cd size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> / <input type=text name=cy size=4 style="width:3em;padding:0;text-align:center" disabled><!--
		--> at <input type=text name=ch size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> : <input type=text name=cn size=2 style="width:2em;padding:0;text-align:center" disabled><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=setmdate unchecked 
			title="allow changes to modified date" 
			onclick="var f=this.form;
				f.mm.disabled=f.md.disabled=f.my.disabled=f.mh.disabled=f.mn.disabled=!this.checked"><!--
		-->modified on<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=mm size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> / <input type=text name=md size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> / <input type=text name=my size=4 style="width:3em;padding:0;text-align:center" disabled><!--
		--> at <input type=text name=mh size=2 style="width:2em;padding:0;text-align:center" disabled><!--
		--> : <input type=text name=mn size=2 style="width:2em;padding:0;text-align:center" disabled><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=replacetext unchecked
			title="find/replace matching text" 
			onclick="this.form.pattern.disabled=this.form.replacement.disabled=!this.checked">replace text<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=pattern size=15 value="" style="width:40%" disabled 
			title="enter TEXT PATTERN (regular expression)"> with<!--
		--><input type=text name=replacement size=15 value="" style="width:40%" disabled 
			title="enter REPLACEMENT TEXT"><!--
	--></td></tr><tr><td style="padding:1px"><!--
		--><input type=checkbox name=settags checked 
			title="allow changes to tiddler tags" 
			onclick="this.form.tags.disabled=!this.checked">tags<!--
	--></td><td style="padding:1px"><!--
		--><input type=text name=tags size=35 value="" style="width:98%" 
			title="enter new tags or use '+tag' and '-tag' to add/remove tags from existing tags"><!--
	--></td></tr></table><!--
	--><div style="text-align:center"><!--
	--><nobr><input type=button name=display disabled style="width:24%" value="display" 
		title="show selected tiddlers"
		onclick="config.macros.tiddlerTweaker.displaytiddlers(this,false)"><!--
	--> <input type=button name=edit disabled style="width:23%" value="edit" 
		title="edit selected tiddlers"
		onclick="config.macros.tiddlerTweaker.displaytiddlers(this,true)"><!--
	--> <input type=button name=del disabled style="width:24%" value="delete" 
		title="remove selected tiddlers"
		onclick="config.macros.tiddlerTweaker.deltiddlers(this)"><!--
	--> <input type=button name=set disabled style="width:24%" value="update" 
		title="update selected tiddlers"
		onclick="config.macros.tiddlerTweaker.settiddlers(this)"></nobr><!--
	--></div><!--
--></td></tr></table><!--
--></form><span style="display:none"><!--content replaced by tiddler "stats"--></span>
!end
//}}}
***/
 
/***
|''Name:''|TiddlersBarPlugin|
|''Description:''|A bar to switch between tiddlers through tabs (like browser tabs bar).|
|''Version:''|1.2.5|
|''Date:''|Jan 18,2008|
|''Source:''|http://visualtw.ouvaton.org/VisualTW.html|
|''Author:''|Pascal Collin|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
!Demos
On [[homepage|http://visualtw.ouvaton.org/VisualTW.html]], open several tiddlers to use the tabs bar.
!Installation
#import this tiddler from [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] (tagged as systemConfig)
#save and reload
#''if you're using a custom [[PageTemplate]]'', add {{{<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>}}} before {{{<div id='tiddlerDisplay'></div>}}}
#optionally, adjust StyleSheetTiddlersBar
!Tips
*Doubleclick on the tiddlers bar (where there is no tab) create a new tiddler.
*Tabs include a button to close {{{x}}} or save {{{!}}} their tiddler.
*By default, click on the current tab close all others tiddlers.
!Configuration options 
<<option chkDisableTabsBar>> Disable the tabs bar (to print, by example).
<<option chkHideTabsBarWhenSingleTab >> Automatically hide the tabs bar when only one tiddler is displayed. 
<<option txtSelectedTiddlerTabButton>> ''selected'' tab command button.
<<option txtPreviousTabKey>> previous tab access key.
<<option txtNextTabKey>> next tab access key.
!Code
***/
//{{{
config.options.chkDisableTabsBar = config.options.chkDisableTabsBar ? config.options.chkDisableTabsBar : false;
config.options.chkHideTabsBarWhenSingleTab  = config.options.chkHideTabsBarWhenSingleTab  ? config.options.chkHideTabsBarWhenSingleTab  : false;
config.options.txtSelectedTiddlerTabButton = config.options.txtSelectedTiddlerTabButton ? config.options.txtSelectedTiddlerTabButton : "closeOthers";
config.options.txtPreviousTabKey = config.options.txtPreviousTabKey ? config.options.txtPreviousTabKey : "";
config.options.txtNextTabKey = config.options.txtNextTabKey ? config.options.txtNextTabKey : "";
config.macros.tiddlersBar = {
	tooltip : "see ",
	tooltipClose : "click here to close this tab",
	tooltipSave : "click here to save this tab",
	promptRename : "Enter tiddler new name",
	currentTiddler : "",
	previousState : false,
	previousKey : config.options.txtPreviousTabKey,
	nextKey : config.options.txtNextTabKey,	
	tabsAnimationSource : null, //use document.getElementById("tiddlerDisplay") if you need animation on tab switching.
	handler: function(place,macroName,params) {
		var previous = null;
		if (config.macros.tiddlersBar.isShown())
			story.forEachTiddler(function(title,e){
				if (title==config.macros.tiddlersBar.currentTiddler){
					var d = createTiddlyElement(null,"span",null,"tab tabSelected");
					config.macros.tiddlersBar.createActiveTabButton(d,title);
					if (previous && config.macros.tiddlersBar.previousKey) previous.setAttribute("accessKey",config.macros.tiddlersBar.nextKey);
					previous = "active";
				}
				else {
					var d = createTiddlyElement(place,"span",null,"tab tabUnselected");
					var btn = createTiddlyButton(d,title,config.macros.tiddlersBar.tooltip + title,config.macros.tiddlersBar.onSelectTab);
					btn.setAttribute("tiddler", title);
					if (previous=="active" && config.macros.tiddlersBar.nextKey) btn.setAttribute("accessKey",config.macros.tiddlersBar.previousKey);
					previous=btn;
				}
				var isDirty =story.isDirty(title);
				var c = createTiddlyButton(d,isDirty ?"!":"x",isDirty?config.macros.tiddlersBar.tooltipSave:config.macros.tiddlersBar.tooltipClose, isDirty ? config.macros.tiddlersBar.onTabSave : config.macros.tiddlersBar.onTabClose,"tabButton");
				c.setAttribute("tiddler", title);
				if (place.childNodes) {
					place.insertBefore(document.createTextNode(" "),place.firstChild); // to allow break line here when many tiddlers are open
					place.insertBefore(d,place.firstChild); 
				}
				else place.appendChild(d);
			})
	}, 
	refresh: function(place,params){
		removeChildren(place);
		config.macros.tiddlersBar.handler(place,"tiddlersBar",params);
		if (config.macros.tiddlersBar.previousState!=config.macros.tiddlersBar.isShown()) {
			story.refreshAllTiddlers();
			if (config.macros.tiddlersBar.previousState) story.forEachTiddler(function(t,e){e.style.display="";});
			config.macros.tiddlersBar.previousState = !config.macros.tiddlersBar.previousState;
		}
	},
	isShown : function(){
		if (config.options.chkDisableTabsBar) return false;
		if (!config.options.chkHideTabsBarWhenSingleTab) return true;
		var cpt=0;
		story.forEachTiddler(function(){cpt++});
		return (cpt>1);
	},
	selectNextTab : function(){  //used when the current tab is closed (to select another tab)
		var previous="";
		story.forEachTiddler(function(title){
			if (!config.macros.tiddlersBar.currentTiddler) {
				story.displayTiddler(null,title);
				return;
			}
			if (title==config.macros.tiddlersBar.currentTiddler) {
				if (previous) {
					story.displayTiddler(null,previous);
					return;
				}
				else config.macros.tiddlersBar.currentTiddler=""; 	// so next tab will be selected
			}
			else previous=title;
			});		
	},
	onSelectTab : function(e){
		var t = this.getAttribute("tiddler");
		if (t) story.displayTiddler(null,t);
		return false;
	},
	onTabClose : function(e){
		var t = this.getAttribute("tiddler");
		if (t) {
			if(story.hasChanges(t) && !readOnly) {
				if(!confirm(config.commands.cancelTiddler.warning.format([t])))
				return false;
			}
			story.closeTiddler(t);
		}
		return false;
	},
	onTabSave : function(e) {
		var t = this.getAttribute("tiddler");
		if (!e) e=window.event;
		if (t) config.commands.saveTiddler.handler(e,null,t);
		return false;
	},
	onSelectedTabButtonClick : function(event,src,title) {
		var t = this.getAttribute("tiddler");
		if (!event) event=window.event;
		if (t && config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton])
			config.commands[config.options.txtSelectedTiddlerTabButton].handler(event, src, t);
		return false;
	},
	onTiddlersBarAction: function(event) {
		var source = event.target ? event.target.id : event.srcElement.id; // FF uses target and IE uses srcElement;
		if (source=="tiddlersBar") story.displayTiddler(null,'New Tiddler',DEFAULT_EDIT_TEMPLATE,false,null,null);
	},
	createActiveTabButton : function(place,title) {
		if (config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton]) {
			var btn = createTiddlyButton(place, title, config.commands[config.options.txtSelectedTiddlerTabButton].tooltip ,config.macros.tiddlersBar.onSelectedTabButtonClick);
			btn.setAttribute("tiddler", title);
		}
		else
			createTiddlyText(place,title);
	}
}

story.coreCloseTiddler = story.coreCloseTiddler? story.coreCloseTiddler : story.closeTiddler;
story.coreDisplayTiddler = story.coreDisplayTiddler ? story.coreDisplayTiddler : story.displayTiddler;

story.closeTiddler = function(title,animate,unused) {
	if (title==config.macros.tiddlersBar.currentTiddler)
		config.macros.tiddlersBar.selectNextTab();
	story.coreCloseTiddler(title,false,unused); //disable animation to get it closed before calling tiddlersBar.refresh
	var e=document.getElementById("tiddlersBar");
	if (e) config.macros.tiddlersBar.refresh(e,null);
}

story.displayTiddler = function(srcElement,tiddler,template,animate,unused,customFields,toggle){
	story.coreDisplayTiddler(config.macros.tiddlersBar.tabsAnimationSource,tiddler,template,animate,unused,customFields,toggle);
	var title = (tiddler instanceof Tiddler)? tiddler.title : tiddler;  
	if (config.macros.tiddlersBar.isShown()) {
		story.forEachTiddler(function(t,e){
			if (t!=title) e.style.display="none";
			else e.style.display="";
		})
		config.macros.tiddlersBar.currentTiddler=title;
	}
	var e=document.getElementById("tiddlersBar");
	if (e) config.macros.tiddlersBar.refresh(e,null);
}

var coreRefreshPageTemplate = coreRefreshPageTemplate ? coreRefreshPageTemplate : refreshPageTemplate;
refreshPageTemplate = function(title) {
	coreRefreshPageTemplate(title);
	if (config.macros.tiddlersBar) config.macros.tiddlersBar.refresh(document.getElementById("tiddlersBar"));
}

ensureVisible=function (e) {return 0} //disable bottom scrolling (not useful now)

config.shadowTiddlers.StyleSheetTiddlersBar = "/*{{{*/\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .button {border:0}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .tab {white-space:nowrap}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar {padding : 1em 0.5em 2px 0.5em}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += ".tabUnselected .tabButton, .tabSelected .tabButton {padding : 0 2px 0 2px; margin: 0 0 0 4px;}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += ".tiddler, .tabContents {border:1px [[ColorPalette::TertiaryPale]] solid;}\n";
config.shadowTiddlers.StyleSheetTiddlersBar +="/*}}}*/";
store.addNotification("StyleSheetTiddlersBar", refreshStyles);

config.refreshers.none = function(){return true;}
config.shadowTiddlers.PageTemplate=config.shadowTiddlers.PageTemplate.replace(/<div id='tiddlerDisplay'><\/div>/m,"<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>\n<div id='tiddlerDisplay'></div>");

//}}}
TiddlyWiki, c'est justement le nom de ce ''wiki'' développé par [[Jeremy Ruston|http://en.wikipedia.org/wiki/Jeremy_Ruston]]

* La [[première version|http://www.tiddlywiki.com/firstversion.html]] de TiddlyWiki a été diffusée sur Internet à partir de Septembre 2004.
** Elle "pesait" 52 ko à la naissance.
* La [[seconde version|http://www.tiddlywiki.com/secondversion.html]] de TiddlyWiki a été diffusée à partir de Décembre 2004.
** Un beau bébé qui a grossi de la moitié de son poids en un trimestre et qui "pesait" alors 76 ko.
* La troisième version de TiddlyWiki est disponible depuis Avril 2005.
** Le détail est disponible sur la [[page chronologie|http://trac.tiddlywiki.org/wiki/History]] du site [[trac.tiddlywiki.org|http://trac.tiddlywiki.org/wiki/]].

Une frise chronologique est visible [[ici|TiddlyWiki Timeline]].

Le nom "TiddlyWiki" fait référence au //[[jeu de puces|http://www.answers.com/topic/tiddlywinks#idioms_french]]//, qui se traduit par "//[[tiddlywinks|http://encyclopedia.thefreedictionary.com/Tiddlywink]]//" en anglais.
|>|>| !2014 |!|>|>| !2013 |!| !2012 |!|>|>| !2011 |!|>|>| !2010 |!|>|>| !2009 |!|>|>| !2008 |!|>|>| !2007 |!|>|>| !2006 |!|>| !2005 |!|>| !2004 |!|
|!MM|!JJ| !V. |~|!MM|!JJ| !V. |~|!|~|!MM|!JJ| !V. |~|!MM|!JJ| !V. |~|!MM|!JJ| !V. |~|!MM|!JJ| !V. |~|!MM|!JJ| !V. |~|!MM|!JJ| !V. |~|!MM| !V. |~|!MM| !V. |~|
|08| 25| 2.''9''.1-beta1|~|06|26| 2.8.''1''|~| |~|10| 6| ''2.6.5''|~|08| 18| 2.6.''1''|~|08| 18| 2.5.''3''|~|08| 4| 2.4.''1''|~|12| 4| 2.''3''.0|~|11| 3| 2.1.''3''|~|04| v. 3|~|12| v. 2|~|
| | | |~|~|02|2.''8''.0|~| |~|08| 18| 2.6.''4''|~|03| 18| 2.''6''.0|~|06| 24| 2.5.''2''|~|05| 9| 2.''4''.0|~|10| 18| 2.2.''6''|~|10| 5| 2.1.''2''|~|>| |~|09| v. 1|~|
| | | |~| | | |~| |~|~| 10| 2.6.''3''|~|>|>| |~|~| 22| 2.5.''1''|~|>|>| |~|08| 24| 2.2.''5''|~|~|~| 2.1.''1''|~|>|~|~|>| |~|
| | | |~| | | |~| |~|01| 13| 2.6.''2''|~|>|>|~|~|03| 9| 2.''5''.0|~|>|>|~|~|06| 19| 2.2.''4''|~|07| 28| 2.1.0|~|>|~|~|>|~|~|
| | | |~| | | |~| |~|>|>| |~|>|>|~|~|01| 12| 2.4.''3''|~|>|>|~|~|~| 17| 2.2.''3''|~|>|>| |~|>|~|~|>|~|~|
| | | |~| | | |~| |~|>|>|~|~|>|>|~|~|~| 8| 2.4.''2''|~|>|>|~|~|~| 11| 2.2.''2''|~|>|>|~|~|>|~|~|>|~|~|
| | | |~| | | |~| |~|>|>|~|~|>|>|~|~|>|>| |~|>|>|~|~|~| 8| 2.2.''1''|~|>|>|~|~|>|~|~|>|~|~|
| | | |~| | | |~| |~|>|>|~|~|>|>|~|~|>|>|~|~|>|>|~|~|~| 7| 2.2.''0''|~|>|>|~|~|>|~|~|>|~|~|
/%
|!MM|!JJ|!V.|~|!Mois|!Jour|!Version|~|!|~|!Mois|!Jour|!Version|~|!Mois|!Jour|!Version|~|!Mois|!Jour|!Version|~|!Mois|!Jour|!Version|~|!Mois|!Jour|!Version|~|!Mois|!Version|~|!Mois|!Version|~|
%/
/%
!info
|Name|ToggleLeftSidebar|
|Source|http://www.TiddlyTools.com/#ToggleLeftSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide left sidebar (MainMenu)|
Usage
<<<
{{{
<<tiddler ToggleLeftSidebar>>
<<tiddler ToggleLeftSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleLeftSidebar##show
	with: {{config.options.chkShowLeftSidebar?'◄':'►'}}>>
<<<
Configuration:
<<<
{{{
config.options.chkShowLeftSidebar (true)
config.options.txtToggleLeftSideBarLabelShow (►)
config.options.txtToggleLeftSideBarLabelHide (◄)
}}}
<<<
!end
!show
<<tiddler {{
	var co=config.options;
	if (co.chkShowLeftSidebar===undefined) co.chkShowLeftSidebar=true;
	var mm=document.getElementById('mainMenu');
	var da=document.getElementById('displayArea');
	if (mm) {
		mm.style.display=co.chkShowLeftSidebar?'block':'none';
		da.style.marginLeft=co.chkShowLeftSidebar?'':'1em';
	}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
	this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
	+encodeURIComponent(encodeURIComponent(this.onclick))
	+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
	var co=config.options;
	var opt='chkShowLeftSidebar';
	var show=co[opt]=!co[opt];
	var mm=document.getElementById('mainMenu');
	var da=document.getElementById('displayArea');
	if (mm) {
		mm.style.display=show?'block':'none';
		da.style.marginLeft=show?'':'1em';
	}
	saveOptionCookie(opt);
	var labelShow=co.txtToggleLeftSideBarLabelShow||'&#x25BA;';
	var labelHide=co.txtToggleLeftSideBarLabelHide||'&#x25C4;';
	if (this.innerHTML==labelShow||this.innerHTML==labelHide) 
		this.innerHTML=show?labelHide:labelShow;
	this.title=(show?'hide':'show')+' left sidebar';
	var sm=document.getElementById('storyMenu');
	if (sm) config.refreshers.content(sm);
	return false;
">$1</a></html>
!end
%/<<tiddler {{
	var src='ToggleLeftSidebar';
	src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
	var co=config.options;
	var labelShow=co.txtToggleLeftSideBarLabelShow||'&#x25BA;';
	var labelHide=co.txtToggleLeftSideBarLabelHide||'&#x25C4;';
	'$1'!='$'+'1'?'$1':(co.chkShowLeftSidebar?labelHide:labelShow);
}} {{
	var tip=(config.options.chkShowLeftSidebar?'hide':'show')+' left sidebar';
	'$2'!='$'+'2'?'$2':tip;
}}>>
/%
!info
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide right sidebar (SideBarOptions)|
Usage
<<<
{{{
<<tiddler ToggleRightSidebar>>
<<tiddler ToggleRightSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleRightSidebar##show
	with: {{config.options.chkShowRightSidebar?'►':'◄'}}>>
<<<
Configuration:
<<<
copy/paste the following settings into a tiddler tagged with <<tag systemConfig>> and then modify the values to suit your preferences:
{{{
config.options.chkShowRightSidebar=true;
config.options.txtToggleRightSideBarLabelShow="◄";
config.options.txtToggleRightSideBarLabelHide="►";
}}}
<<<
!end
!show
<<tiddler {{
	var co=config.options;
	if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebar=true;
	var sb=document.getElementById('sidebar');
	var da=document.getElementById('displayArea');
	if (sb) {
		sb.style.display=co.chkShowRightSidebar?'block':'none';
		da.style.marginRight=co.chkShowRightSidebar?'':'1em';
	}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
	this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
	+encodeURIComponent(encodeURIComponent(this.onclick))
	+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
	var co=config.options;
	var opt='chkShowRightSidebar';
	var show=co[opt]=!co[opt];
	var sb=document.getElementById('sidebar');
	var da=document.getElementById('displayArea');
	if (sb) {
		sb.style.display=show?'block':'none';
		da.style.marginRight=show?'':'1em';
	}
	saveOptionCookie(opt);
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
	if (this.innerHTML==labelShow||this.innerHTML==labelHide) 
		this.innerHTML=show?labelHide:labelShow;
	this.title=(show?'hide':'show')+' right sidebar';
	var sm=document.getElementById('storyMenu');
	if (sm) config.refreshers.content(sm);
	return false;
">$1</a></html>
!end
%/<<tiddler {{
	var src='ToggleRightSidebar';
	src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
	var co=config.options;
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
	'$1'!='$'+'1'?'$1':(co.chkShowRightSidebar?labelHide:labelShow);
}} {{
	var tip=(config.options.chkShowRightSidebar?'hide':'show')+' right sidebar';
	'$2'!='$'+'2'?'$2':tip;
}}>>
__Remarque importante :__
* Pour télécharger ce document TiddlyWiki en Français, il ''ne faut pas'' utiliser directement la commande "//Enregistrer sous ...//" du menu "//Fichier//" du navigateur.
* Il faut ''toujours'' le télécharger par un //clic droit// sur le lien qui pointe sur ce document TiddlyWiki ...
** Dans le menu contextuel qui s’affiche alors, il faut sélectionner "//enregistrer la cible du lien sous ...//" (ou équivalent selon votre navigateur)

Il y a 4 façons possibles pour télécharger la version française de TiddlyWiki :
!!1 -- Importer l'extension permettant de mettre à jour et de françiser un document TiddlyWiki existant (''solution conseilllée'')
* &#x25B2;&#x25BC; Pour mettre à jour et françiser en version TiddlyWiki 2.6.2 un TiddlyWiki existant __''déjà en français''__ : <<section "Cliquer ici"
* L'extension est disponible sur ce site à l'URL "[[www.tiddlywiki.fr/#FrenchTranslationPlugin|http://www.tiddlywiki.fr/#FrenchTranslationPlugin]]"
** il faut alors importer ce //tiddler// via la "@@barre d'outils@@" :
### cliquer sur la "@@barre d'outils@@" en haut à droite du document
### cliquer sur le menu "@@importer@@"
### dans le champs "@@Entrer l'URL ou le chemin ici :@@" indiquer l'URL suivant : "[[http://www.tiddlywiki.fr/|http://www.tiddlywiki.fr/]]"
### cliquer sur "@@ouvrir@@" 
### attendre quelques instants le temps d'importer le document depuis le site "[[http://www.tiddlywiki.fr/|http://www.tiddlywiki.fr/]]".
**** ''ATTENTION'' : en fonction de la vitesse de transfert, l'attente peut durer jusqu'à ''15 secondes'', alors il faut être ''patient'' !
### dans la fenêtre qui s'est ouverte, cocher la case de la colonne de gauche en face du tiddler "@@FrenchTranslationPlugin@@"
### en bas de la fenêtre, vérifier que la case "@@Lier ces tiddlers à ce serveur pour pouvoir synchroniser les modifications ultérieures@@" est bien cochée
### cliquer sur le bouton "@@importer@@"
### au bout de quelques instants, le message "@@Tous les tiddlers ont été importés@@" apparaît en même temps que le nom du tiddler importé : "FrenchTranslationPlugin".
### il suffit alors de cliquer sur le bouton "@@terminé@@" et de recharger le document TiddlyWiki.
### Tout est alors françisé !>>
* &#x25B2;&#x25BC; Pour mettre à jour et françiser en version TiddlyWiki 2.6.2 un TiddlyWiki existant __''en anglais''__ : <<section "Cliquer ici"
* L'extension est disponible sur ce site à l'URL "[[www.tiddlywiki.fr/#FrenchTranslationPlugin|http://www.tiddlywiki.fr/#FrenchTranslationPlugin]]"
** il faut alors importer ce //tiddler// via la "barre d'outils" "@@backstage@@":
### cliquer sur la "@@backstage@@" en haut à droite du document
### cliquer sur le menu "@@import@@"
### dans le champs "@@Enter the URL or pathname here:@@" indiquer l'URL suivant : "[[http://www.tiddlywiki.fr/|http://www.tiddlywiki.fr/]]"
### cliquer sur "@@open@@" et le message suivant apparaît : "@@Getting the list of available tiddlers@@"
### attendre quelques instants le temps d'importer le document depuis le site "[[http://www.tiddlywiki.fr/|http://www.tiddlywiki.fr/]]".
**** ''ATTENTION'' : en fonction de la vitesse de transfert, l'attente peut durer jusqu'à ''15 secondes'', alors il faut être ''patient'' !
### dans la fenêtre "@@Import tiddlers from another file or server@@" qui s'est ouverte, cocher la case de la colonne de gauche en face du tiddler "@@FrenchTranslationPlugin@@"
### en bas de la fenêtre, vérifier que la case "@@Keep these tiddlers linked to this server so that you can synchronise subsequent changes@@" est bien cochée
### cliquer sur le bouton "@@import@@".
### au bout de quelques instants, le message "@@All tiddlers imported@@" apparaît en même temps que le nom du tiddler importé : "FrenchTranslationPlugin".
### il suffit alors de cliquer sur le bouton "@@done@@" et de recharger le document TiddlyWiki.
### Tout est alors françisé !>>
!!2 -- Importer une extension permettant de françiser un modèle TiddlyWiki en anglais (solution manuelle)
* &#x25B2;&#x25BC; Pour la version TiddlyWiki 2.6.2 <<section "Cliquer ici"
* L'extension est dans le //tiddler// "''[[FrenchTranslationPlugin|FrenchTranslationPlugin]]''"
** il faut alors réaliser 7 étapes
### afficher le //tiddler// [[FrenchTranslationPlugin|FrenchTranslationPlugin]]
### ouvrir un nouveau //tiddler// dans votre document TiddlyWiki existant en ''version 2.6.2''
### mettre un titre comme FrenchTranslationPlugin
### copier le contenu du //tiddler// "[[FrenchTranslationPlugin|FrenchTranslationPlugin]]" dans ce nouveau //tiddler//
### mettre ''impérativement'' "//@@systemConfig@@//" comme mot-clé
### fermer le //tiddler// en conservant les modifications effectuées
### recharger le document TiddlyWiki
** Tout est alors françisé !
** Dans le cas contraire, penser à vérifier que le mot-clé est bien positionné à "//@@systemConfig@@//" avec la bonne casse.>>
* &#x25B2;&#x25BC; Pour la version TiddlyWiki 2.5.3 <<section "Cliquer ici"
* L'extension est dans le //tiddler// "''[[FrenchTranslationPlugin-TW253|FrenchTranslationPlugin-TW253]]''"
** il faut alors réaliser 7 étapes
### afficher le //tiddler// [[FrenchTranslationPlugin-TW253|FrenchTranslationPlugin-TW253]]
### ouvrir un nouveau //tiddler// dans votre document TiddlyWiki existant en ''version 2.5.3''
### mettre un titre comme FrenchTranslationPlugin
### copier le contenu du //tiddler// "[[FrenchTranslationPlugin-TW253|FrenchTranslationPlugin-TW253]]" dans ce nouveau //tiddler//
### mettre ''impérativement'' "//@@systemConfig@@//" comme mot-clé
### fermer le //tiddler// en conservant les modifications effectuées
### recharger le document TiddlyWiki
** Tout est alors françisé !
** Dans le cas contraire, penser à vérifier que le mot-clé est bien positionné à "//@@systemConfig@@//" avec la bonne casse.>>
* &#x25B2;&#x25BC; Pour la version TiddlyWiki 2.4.1 <<section "Cliquer ici"
* L'extension est dans le //tiddler// "''[[FrenchTranslationPlugin-TW241|FrenchTranslationPlugin-TW241]]''"
** il faut alors réaliser 7 étapes
### afficher le //tiddler// [[FrenchTranslationPlugin-TW241|FrenchTranslationPlugin-TW241]]
### ouvrir un nouveau //tiddler// dans votre document  TiddlyWiki existant en ''version 2.4.1''
### mettre un titre comme FrenchTranslationPlugin
### copier le contenu du //tiddler// "[[FrenchTranslationPlugin-TW241|FrenchTranslationPlugin-TW241]]" dans ce nouveau //tiddler//
### mettre ''impérativement'' "//@@systemConfig@@//" comme mot-clé
### fermer le //tiddler// en conservant les modifications effectuées
### recharger le document TiddlyWiki
** Tout est alors françisé !
** Dans le cas contraire, penser à vérifier que le mot-clé est bien positionné à "//@@systemConfig@@//" avec la bonne casse.>>
* &#x25B2;&#x25BC; Pour la version TiddlyWiki 2.3.0 <<section "Cliquer ici"
* L'extension est dans le //tiddler// "''[[FrenchTranslationPlugin-TW230|FrenchTranslationPlugin-TW230]]''"
** il faut alors réaliser 7 étapes
### afficher le //tiddler// [[FrenchTranslationPlugin-TW230|FrenchTranslationPlugin-TW230]]
### ouvrir un nouveau //tiddler// dans votre document TiddlyWiki existant en ''version 2.3.0''
### mettre un titre comme FrenchTranslationPlugin
### copier le contenu du //tiddler// "[[FrenchTranslationPlugin-TW230|FrenchTranslationPlugin-TW230]]" dans ce nouveau //tiddler//
### mettre ''impérativement'' "//@@systemConfig@@//" comme mot-clé
### fermer le //tiddler// en conservant les modifications effectuées
### recharger le document TiddlyWiki
** Tout est alors françisé !
** Dans le cas contraire, penser à vérifier que le mot-clé est bien positionné à "//@@systemConfig@@//" avec la bonne casse.>>
!!3 -- Utiliser une extension permettant de françiser un modèle TiddlyWiki en anglais (solution manuelle)
* &#x25B2;&#x25BC; Pour la version TiddlyWiki 2.6.2 <<section "Cliquer ici"
* L'extension est dans le fichier "''[[FrenchTranslationPlugin.txt|./FrenchTranslationPlugin.txt]]''"
** il faut alors réaliser 7 étapes
### afficher le fichier "[[FrenchTranslationPlugin.txt|./FrenchTranslationPlugin.txt]]"
### ouvrir un nouveau //tiddler// dans votre document existant
### mettre un titre comme FrenchTranslationPlugin
### copier le contenu du fichier "[[FrenchTranslationPlugin.txt|./FrenchTranslationPlugin.txt]]" dans ce //tiddler//
### mettre ''impérativement'' "//@@systemConfig@@//" comme mot-clé
### fermer le //tiddler// en conservant les modifications effectuées
### recharger le document TiddlyWiki
** Tout est alors françisé !
** Dans le cas contraire, penser à vérifier que le mot-clé est bien positionné à "//@@systemConfig@@//" avec la bonne casse.>>
* &#x25B2;&#x25BC; Pour la version TiddlyWiki 2.5.3 <<section "Cliquer ici"
* L'extension est dans le fichier "''[[FrenchTranslationPlugin-253.txt|./FrenchTranslationPlugin-253.txt]]''"
** il faut alors réaliser 7 étapes
### afficher le fichier "[[FrenchTranslationPlugin-253.txt|./FrenchTranslationPlugin-253.txt]]"
### ouvrir un nouveau //tiddler// dans votre document existant
### mettre un titre comme FrenchTranslationPlugin
### copier le contenu du fichier "[[FrenchTranslationPlugin-253.txt|./FrenchTranslationPlugin-253.txt]]" dans ce //tiddler//
### mettre ''impérativement'' "//@@systemConfig@@//" comme mot-clé
### fermer le //tiddler// en conservant les modifications effectuées
### recharger le document TiddlyWiki
** Tout est alors françisé !
** Dans le cas contraire, penser à vérifier que le mot-clé est bien positionné à "//@@systemConfig@@//" avec la bonne casse.>>
!!4 -- Utiliser un modèle vide de document TiddlyWiki en français
* &#x25B2;&#x25BC; Pour la version TiddlyWiki 2.6.2 <<section "Cliquer ici"
* Pour le télécharger en local, faire un //clic droit// / "//Enregistrer sous// ..." sur "''[[vide-262.html|./vide-262.html]]''"
** ... puis travailler en local sur ce nouveau document ainsi téléchargé>>
* &#x25B2;&#x25BC; Pour la version TiddlyWiki 2.5.3 <<section "Cliquer ici"
* Pour le télécharger en local, faire un //clic droit// / "//Enregistrer sous// ..." sur "''[[vide-253.html|./vide-253.html]]''"
** ... puis travailler en local sur ce nouveau document ainsi téléchargé>>
* &#x25B2;&#x25BC; Pour la version TiddlyWiki 2.4.1 <<section "Cliquer ici"
* Pour le télécharger en local, faire un //clic droit// / "//Enregistrer sous// ..." sur "''[[vide-241.html|./vide-241.html]]''"
** ... puis travailler en local sur ce nouveau document ainsi téléchargé>>
* &#x25B2;&#x25BC; Pour la version TiddlyWiki 2.3.0 <<section "Cliquer ici"
* Pour le télécharger en local, faire un //clic droit// / "//Enregistrer sous// ..." sur "''[[vide-230.html|./vide-230.html]]''"
** ... puis travailler en local sur ce nouveau document ainsi téléchargé>>
<tabs Versions>
<tab Tiddlywiki Classic>
| !Version| !Date de diffusion |!Commentaires|
| 2.9.1-beta1| 25/08/2014 |Dernière version publiée à ce jour|
| 2.8.1| 26/06/2013 |
| 2.8.1-beta2| 20/06/2013 |Mise à jour du mécanisme de sauvegarde en local|
| 2.8.1-beta1| 10/06/2013 |Mise à jour du mécanisme de sauvegarde en local|
| 2.8.0| 02/06/2013 ||
| 2.8.0-beta1| 27/05/2013 |Mise à jour du mécanisme de sauvegarde en local|
| 2.7.2-beta2| 13/05/2013 ||
| 2.7.2-beta1| 03/05/2013 ||
| 2.7.1-beta1| 06/03/2013 |Mise à jour de jQuery 1.8.1 en 1.8.3|
| 2.6.5| 06/10/2011 |
| 2.6.4| 18/08/2011 |
| ~~2.6.3~~| ~~10/08/2011~~ |
| 2.6.2| 06/01/2011 |
| 2.6.0| 18/03/2010 |
| 2.5.3| 18/08/2009 |
| 2.5.2| 24/06/2009 |Utilisation de plugins jQuery|
| ~~2.5.1~~| ~~23/06/2009~~ |~~Ne pas utiliser~~|
| 2.5.0| 10/03/2009 |Intégration de jQuery|
| 2.4.3| 12/01/2009 |
| ~~2.4.2~~| ~~08/01/2009~~ |
| ~~2.4.2-beta1~~| ~~19/12/2008~~ |
| 2.4.1| 04/08/2008 |
| 2.4.0| 09/05/2008 |
| 2.3.0| 04/12/2007 |
| 2.2.6| 18/10/2007 |
| 2.2.5| 24/08/2007 |
| 2.2.4| 19/06/2007 |
| ~~2.2.3~~| ~~17/06/2007~~ |
| 2.2.2| 11/06/2007 |
| ~~2.2.1~~| ~~08/06/2007~~ |
| 2.1.3| 03/11/2006 |
| 2.1.2| 05/10/2006 |
| ~~2.1.1~~| ~~05/10/2006~~ |
|Troisième version| 04/2005 |
|Deuxième version| 12/2004 |
|Première version| 20/09/2004 |
</tab>
<tab Tiddlywiki Add-Ons>
|Nom| !Version | !Date de diffusion |!Commentaires|!Liens|
|TiddlyDesktop| 0.0.3 | 30/01/2014 ||https://github.com/Jermolene/TiddlyDesktop/releases/tag/v0.0.3|
|TiddlyDesktop| 0.0.2 | 18/01/2014 |Intègre le support pour Tiddlywiki Classic et Linux|https://github.com/Jermolene/TiddlyDesktop/releases/tag/v0.0.2|
|TiddlyDesktop| 0.0.1 | 13/01/2014 |Basé sur le node-webkit, pour Tiddlywiki 5, Mac OS X et Windows|https://github.com/Jermolene/TiddlyDesktop|
|TiddlyWiki in the Sky|| 15/09/2012 |Avec Dropbox|http://dropbox.tiddlywiki.com/|
</tab>
<tab Tiddlywiki 5>
| !Version| !Date de diffusion |
| 5.0.15-beta| 21/08/2014 |
| 5.0.14-beta| 13/08/2014 |
| 5.0.13-beta| 24/06/2014 |
| 5.0.12-beta| 17/05/2014 |
| 5.0.11-beta| 16/05/2014 |
| 5.0.10-beta| 19/04/2014 |
| 5.0.9-beta| 15/04/2014 |
| 5.0.8-beta| 28/02/2014 |
| 5.0.7-beta| 26/01/2014 |
| 5.0.6-beta| 03/01/2014 |
| 5.0.5-beta| 24/12/2013 |
| 5.0.4-beta| 22/12/2013 |
| 5.0.3-beta| 15/12/2013 |
| 5.0.2-beta| 15/12/2013 |
| 5.0.1-alpha| 06/12/2013 |
| 5.0.0-alpha.17| 30/11/2013 |
| 5.0.0-alpha.16| 30/11/2013 |
| 5.0.0-alpha.15| 19/11/2013 |
| 5.0.0-alpha.14| 11/11/2013 |
| 5.0.0-alpha.13| 09/11/2013 |
| 5.0.0-alpha.12| 08/11/2013 |
| 5.0.0-alpha.11| 08/11/2013 |
</tab>
</tabs>
/***
|Name|WikifyPlugin|
|Source|http://www.TiddlyTools.com/#WikifyPlugin|
|Documentation|http://www.TiddlyTools.com/#WikifyPluginInfo|
|Version|1.1.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|substitute fields, slices, or computed values into a wiki-syntax format string and render results dynamically|
The {{{<<wikify>>}}} macro allows you to easily retrieve values from custom tiddler fields, tiddler slices, computed values (using javascript) or just plain old literals, and assemble them into small bits of generated wiki-syntax text content that can be rendered directly into a tiddler, or used in the ViewTemplate or EditTemplate to add dynamically-generated content to each tiddler.

The {{{<<wikiCalc>>}}} macro performs the same processing as {{{<<wikify>>}}} and, in addition, passes the assembled text content through javascript's {{{eval()}}} function before rendering the results.  This allows you to, for example, construct and compute mathematical expressions that use input values extracted from tiddler fields or slices.
!!!!!Documentation
> see [[WikifyPluginInfo]]
!!!!!Revisions
<<<
2009.03.29 [1.1.4] in handler(), pass 'tiddler' value to wikify() to fix macro errors in rendered content
|please see [[WikifyPluginInfo]] for additional revision details|
2007.06.22 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.WikifyPlugin= {major: 1, minor: 1, revision: 4, date: new Date(2009,3,29)};

config.macros.wikify={
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var fmt=params.shift();
		var values=[];
		var out="";
		if (!fmt.match(/\%[0-9]/g) && params.length) // format has no markers, just join all params with spaces
			out=fmt+" "+params.join(" ");
		else { // format param has markers, get values and perform substitution
			while (p=params.shift()) values.push(this.getFieldReference(place,p));
			out=fmt.format(values);
		}
		if (macroName=="wikiCalc") out=eval(out).toString();
		wikify(out.unescapeLineBreaks(),place,null,tiddler);
	},
	getFieldReference: function(place,p) { // "slicename::tiddlername" or "fieldname@tiddlername" or "fieldname"
		if (typeof p != "string") return p; // literal non-string value... just return it...
		var parts=p.split(config.textPrimitives.sliceSeparator);
		if (parts.length==2) {// maybe a slice reference?
			var tid=parts[0]; var slice=parts[1];
			if (!tid || !tid.length || tid=="here") { // no target (or "here"), use containing tiddler
				tid=story.findContainingTiddler(place);
				if (tid) tid=tid.getAttribute("tiddler")
				else tid="SiteSlices"; // fallback for 'non-tiddler' areas (e.g, header, sidebar, etc.)
			}
			var val=store.getTiddlerSlice(tid,slice);  // get tiddler slice value
		}
		if (val==undefined) {// not a slice, or slice not found, maybe a field reference?
			var parts=p.split("@");
			var field=parts[0];
			if (!field || !field.length) field="checked"; // missing fieldname, fallback: checked@tiddlername
			var tid=parts[1];
			if (!tid || !tid.length || tid=="here") { // no target (or "here"), use containing tiddler
				tid=story.findContainingTiddler(place);
				if (tid) tid=tid.getAttribute("tiddler")
				else tid="SiteFields"; // fallback for 'non-tiddler' areas (e.g, header, sidebar, etc.)
			}
			var val=store.getValue(tid,field);
		}
		// not a slice or field, or slice/field not found... return value unchanged
		return val===undefined?p:val;
	}
}
//}}}
//{{{
// define alternative macroName for triggering pre-rendering call to eval()
config.macros.wikiCalc=config.macros.wikify;
//}}}
/***
|Name|WikifyPlugin|
|Source|http://www.TiddlyTools.com/#WikifyPlugin|
|Documentation|http://www.TiddlyTools.com/#WikifyPluginInfo|
|Version|1.1.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for WikifyPlugin|
The {{{<<wikify>>}}} macro allows you to easily retrieve values from custom tiddler fields, tiddler slices, computed values (using javascript) or just plain old literals, and assemble them into small bits of generated wiki-syntax text content that can be rendered directly into a tiddler, or used in the ViewTemplate or EditTemplate to add dynamically-generated content to each tiddler.

The {{{<<wikiCalc>>}}} macro performs the same processing as {{{<<wikify>>}}} and, in addition, passes the assembled text content through javascript's {{{eval()}}} function before rendering the results.  This allows you to, for example, construct and compute mathematical expressions that use input values extracted from tiddler fields or slices.
!!!!!Usage
<<<
The syntax for use in tiddlers:
{{{
<<wikify format value value value value ...>>
<<wikiCalc format value value value value ...>>
}}}
The syntax for use in templates:
{{{
<span macro='wikify format value value value value ...'></span>
<span macro='wikiCalc format value value value value ...'></span>
}}}
where:
* ''format'' specifies the format of the wiki-syntax content (or javascript expression, if using {{{<<wikiCalc>>}}}) that will be rendered
* ''value'' parameters (space-separated), specified using any of:
** ''"tiddlername::slicename"'' - a tiddler slice reference
** ''"fieldname@tiddlername"'' - a tiddler custom field reference
** ''"""{{config.options.txtUserName}}"""'' - evaluated javascript parameter
** ''"none of the above"'' - literal text
When the ''format'' parameter contains //substitution markers// (using "%0" through "%9" character sequences), each value parameter is retrieved and embedded into the formatted content, replacing its corresponding marker.  If the ''format'' parameter does //not// contain any substitution markers, then all parameters are simply joined together for output.  Once the values have been formatted (and, if {{{<<wikiCalc>>}}} is used, evaluated as a javascript expression), the resulting content is then passed to the core wikify() parser to render and display it.

Notes:
* If a parameter is not recognized as fitting any of the above syntax, or if the slice/field referred to cannot be located, the reference will be inserted as literal text into the output
* When working with custom tiddler fields or tiddler slices, you can enter a special psuedo-tiddler name, ''@here'' (e.g., "fieldname@here") or ''here::'' (e.g., "here::slicename") to access custom fields and slices associated with the //current// tiddler.  This //relative// reference syntax can be particularly helpful when placed directly into a ViewTemplate and/or EditTemplate definition, where it can be applied automatically to each tiddler that is displayed.   Note: if you omit the ''@here'' portion of a field reference (e.g., just using "fieldname"), it is assumed to be a reference to a field in the current tiddler (i.e., it is treated as if you specified ''fieldname@here'').
<<<
!!!!!Examples
<<<
{{{
<<wikify [[This tiddler is: %0 using %1 bytes (last author: %2)]] title {{tiddler.text.length}} modifier>>
<<wikify [[The source URL for this plugin is: %0]] 'here::Source'>>
<<wikify [[The tiddler has been changed %0 times]] changecount@here>>
<<wikify [[The Primary Mid color is: @@background:%0;%0@@]] 'ColorPalette::PrimaryMid'>>
<<wikify [[This current user is: %0]] {{config.options.txtUserName}}>>
}}}
<<wikify [[This tiddler is: %0 using %1 bytes (last author: %2)]] title {{tiddler.text.length}} modifier>>
<<wikify [[The source URL for this plugin is: %0]] 'here::Source'>>
<<wikify [[The tiddler has been changed %0 times]] changecount@here>>
<<wikify [[The Primary Mid color is: @@background:%0;%0@@]] 'ColorPalette::PrimaryMid'>>
<<wikify [[This current user is: %0]] {{config.options.txtUserName}}>>
<<<
!!!!!Revisions
<<<
2009.03.29 1.1.4 in handler(), pass 'tiddler' value to wikify() to fix macro errors in rendered content
2009.03.26 1.1.3 unescape output before wikify so that \n can be used in formatting string
2008.11.16 1.1.2 in getFieldReference(), if not a field/slice reference (or field/slice is not found), return string input unchanged instead of returning a blank string.
2008.03.08 1.1.1 size reduction: documentation moved to [[WikifyPluginInfo]]
2008.03.07 1.1.0 added {{{<<wikicalc>>}}} variant for evaluating assembled output as javascript before rendering the result
2007.11.11 1.0.1 in handler(), fixed problem where a trailing space was created when no substitution markers were present in the format param.
2007.06.22 1.0.0 initial release
<<<
Je suis un utilisateur intensif de TiddlyWiki depuis plusieurs années.
Vous pouvez me contacter par messagerie à l'adresse "[[ocalTW sur ce site|mailto:(bien sur, il faut remplacer le "arobase" et le "point") ocalTW arobase tiddlywiki point fr ]]" :-)

J'ai réalisé plusieurs traduction en français de TiddlyWiki, en me basant en partie sur le travail déjà réalisé précédemment par :
* la version 2.2 par [[BidiX|http://tiddlywikifr.bidix.info/]]
* la version 2.1.3 par [[Jacques Turbé|http://avm.free.fr/]]
et avec l'aide de Nicolas Syssoieff
Qu'ils en soient ici remerciés :-)

Pour plus de détails, voir l'//élément// [[Liens|Liens]]
/***
|Name|zzMaConfiguration|
|Version|2.6.1|
|Author|ocalTW|
***/

/*** Permet de FORCER des paramètres au lieu de dépendre des valeurs dans les cookies du navigateur ***/
config.options.chkDisableTabsBar = false;
config.options.chkShowRightSidebar = false;
config.options.chkBackstage = false;
config.options.chkShowLeftSidebar = true;
config.options.chkDisableWikiLinks = true;
config.options.chkDisableNonExistingWikiLinks = true;
config.options.txtBackupFolder = '.tiddlywiki';
config.options.txtUserName = 'ocalTW';
config.options.chkEnableAnimations = true;
config.options.chkAutoSave = true;
config.options.chkSaveOnExit = true;