<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
Background: #fff
		Foreground: #000
		PrimaryPale: #8cf
		PrimaryLight: #18f
		PrimaryMid: #04b
		PrimaryDark: #014
		SecondaryPale: #ffc
		SecondaryLight: #fe8
		SecondaryMid: #db4
		SecondaryDark: #841
		TertiaryPale: #eee
		TertiaryLight: #ccc
		TertiaryMid: #999
		TertiaryDark: #666
		Error: #f88
			body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

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

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

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

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

				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]];}

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

.header {position:relative;}
.header a:hover {background:transparent;}
/*  LHO : 130103 - Modification de la largeur de l'entete */
/* .headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;} */
.headerShadow {position:relative; padding:1.5em 0 1em 1em; left:-1px; top:-1px;}
/* .headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;} */
.headerForeground {position:absolute; padding:1.5em 0 1em 1em; left:0px; top:0px;}
/*  /LHO : 130103 - Modification de la largeur de l'entete */
.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

/* LHO : 130218 */
/* Modification du positionnement de la barre de menu droite */
/* #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;} */
#mainMenu {position:absolute; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.0em;}
/* LHO : 130218 */

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#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;}

/* LHO : 130218 */ 
/* Gestion de la marge autour du texte central */
/* #displayArea {margin:1em 17em 0 14em;} */
/* marge : Haut Gauche Bas Droite */
#displayArea {margin:1em 0em 1em 12em;}
/* /LHO : 130218 */

.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:0px 3px 0px 3px;}

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

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

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

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

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

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#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 where print preview displays the noscript content */
		<div class='toolbar' 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>
<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>>
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]]
Aditamus est un cabinet de conseil et d'ingénierie informatique. Nous intervenons en tant qu'expert pour accompagner nos clients dans le développement et la mise en œuvre de leur système d'information.

Nos missions arrivent en appui des équipes informatiques existantes d'entreprises qui n'ont pas les moyens ou le temps pour suivre régulièrement la gestion de projet de leurs fournisseurs informatiques. En frontal de ces fournisseurs, nous nous assurons de la bonne tenue des délais, des coûts et de la satisfaction de vos utilisateurs finaux.

Nos missions sont aussi réalisées au sein de grands comptes via le portage de grandes sociétés de services qui trouvent chez nous les compétences qui leur font défaut. Elles apprécient notre exigence, notre professionnalisme et notre réactivité. Dans ce cas, nos équipes interviennent sur le long terme, en accompagnant les chefs de projets et les services dans la mise en œuvre de leur projets stratégiques. 

<div align="center"><img src="./images/aditamus_logo_128px.png">
<!-- alt="Conduire un projet" title="Conduire un projet AMOA"> -->
Macro: allTagsExcept
Author: Clint Checketts
Version: 1.0 Sept 8, 2005

usage: {{{<< allTagsExcept systemConfig excludeLists systemTiddlers >>}}} This will show all tags but those listed (e.g. systemConfig and systemTiddlers

<<allTagsExcept systemConfig excludeLists systemTiddlers >>
version.extensions.allTagsExcept = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};
config.macros.allTagsExcept = {tooltip: "Affiche les articles ayant pour mot-clé '%0'",noTags: "Il n'y a pas de mot-clé à afficher"};

config.macros.allTagsExcept.handler = function(place,macroName,params)
 var tags = store.getTags();
 var theTagList = createTiddlyElement(place,"ul",null,null,null);
 if(tags.length == 0)
 for (var t=0; t<tags.length; t++) {
 var includeTag = true;
 for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) includeTag = false;
 if (includeTag){
 var theListItem =createTiddlyElement(theTagList,"li",null,null,null);
 var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);
Background: #FFFFFF
Foreground: #001a5d
PrimaryPale: #E6E2AF
PrimaryLight: #000000
PrimaryMid: #001a5d
PrimaryDark: #001a5d
SecondaryPale: #FFFFF0
SecondaryLight: #E6E2AF
SecondaryMid: #C4D7ED
SecondaryDark: #001a5d
TertiaryPale: #F8FAFF
TertiaryLight: #3C3C3C
TertiaryMid: #3C3C3C
TertiaryDark: #3C3C3C
Error: #f88
|Author|[[Doug Compton|http://www.zagware.com/tw/plugins.html#DcTableOfContentsPlugin]]|
|Contributors|[[Lewcid|http://lewcid.org]], [[FND|http://devpad.tiddlyspot.com]], [[ELS|http://www.tiddlytools.com]]|
|<<showtoc>> |
This macro will insert a table of contents reflecting the headings that are used in a tiddler and will be automatically updated when you make changes.  Each item in the table of contents can be clicked on to jump to that heading.  It can be used either inside of select tiddlers or inside a system wide template.

A parameter can be used to show the table of contents of a seperate tiddler, &lt;<showtoc tiddlerTitle>&gt;

It will also place a link beside each header which will jump the screen to the top of the current tiddler.  This will only be displayed if the current tiddler is using the &lt;<showtoc>&gt; macro.

The appearance of the table of contents and the link to jump to the top can be modified using CSS.  An example of this is given below.

!!Only in select tiddlers
The table of contents above is an example of how to use this macro in a tiddler.  Just insert &lt;<showtoc>&gt; in a tiddler on a line by itself.

It can also display the table of contents of another tiddler by using the macro with a parameter, &lt;<showtoc tiddlerTitle>&gt;
!!On every tiddler
It can also be used in a template to have it show on every tiddler.  An example ViewTemplate is shown below.

<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'>Created <span macro='view created date DD-MM-YY'></span>, updated <span macro='view modified date DD-MM-YY'></span></div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class="toc" macro='showtoc'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>

If you had a tiddler with the following headings:
this table of contents would be automatically generated:
* Heading1a
** Heading2a
** Heading2b
*** Heading3
* Heading1b
!Changing how it looks
To modifiy the appearance, you can use CSS similiar to the below.
.dcTOC ul {
	color: red;
	list-style-type: lower-roman;
.dcTOC a {
	color: green;
	border: none;

.dcTOC a:hover {
	background: white;
	border: solid 1px;
.dcTOCTop {
	font-size: 2em;
	color: green;

!Revision History
!!v0.1.0 (2006-04-07)
* initial release
!!v0.2.0 (2006-04-10)
* added the [top] link on headings to jump to the top of the current tiddler
* appearance can now be customized using CSS
* all event handlers now return false
!!v0.3.0 (2006-04-12)
* added the ability to show the table of contents of a seperate tiddler
* fixed an error when a heading had a ~WikiLink in it
!!v0.3.5 (2007-10-16)
* updated formatter object for compatibility with TiddlyWiki v2.2 (by Lewcid)
!!v0.4.0 (2007-11-14)
* added toggle button for collapsing/expanding table of contents element
* refactored documentation
!To Do
* code sanitizing/rewrite
* documentation refactoring
* use shadow tiddler for styles

version.extensions.DcTableOfContentsPlugin= {
	major: 0, minor: 4, revision: 0,
	type: "macro",
	source: "http://devpad.tiddlyspot.com#DcTableOfContentsPlugin"

// Replace heading formatter with our own
for (var n=0; n<config.formatters.length; n++) {
	var format = config.formatters[n];
	if (format.name == 'heading') {
		format.handler = function(w) {
			// following two lines is the default handler
			var e = createTiddlyElement(w.output, "h" + w.matchLength);
			w.subWikifyTerm(e, this.termRegExp); //updated for TW 2.2+

			// Only show [top] if current tiddler is using showtoc
			if (w.tiddler && w.tiddler.isTOCInTiddler == 1) {
				// Create a container for the default CSS values
				var c = createTiddlyElement(e, "div");
				c.setAttribute("style", "font-size: 0.5em; color: blue;");
				// Create the link to jump to the top
				createTiddlyButton(c, " [top]", "Go to top of tiddler", window.scrollToTop, "dcTOCTop", null, null);

config.macros.showtoc = {
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var text = "";
		var title = "";
		var myTiddler = null;

		// Did they pass in a tiddler?
		if (params.length) {
			title = params[0];
			myTiddler = store.getTiddler(title);
		} else {
			myTiddler = tiddler;

		if (myTiddler == null) {
			wikify("ERROR: Could not find " + title, place);

		var lines = myTiddler .text.split("\n");
		myTiddler.isTOCInTiddler = 1;

		// Create a parent container so the TOC can be customized using CSS
		var r = createTiddlyElement(place, "div", null, "dcTOC");
		// create toggle button
		createTiddlyButton(r, "◄► Masquer/Afficher la Table des Matières ◄►", "Masque/Affiche la Table des Matières",
			function() { config.macros.showtoc.toggleElement(this.nextSibling); },
		// Create a container so the TOC can be customized using CSS
		var c = createTiddlyElement(r, "div");

		if (lines != null) {
			for (var x=0; x<lines.length; x++) {
				var line = lines[x];
				if (line.substr(0,1) == "!") {
					// Find first non ! char
					for (var i=0; i<line.length; i++) {
						if (line.substr(i, 1) != "!") {
					var desc = line.substring(i);
					// Remove WikiLinks
					desc = desc.replace(/\[\[/g, "");
					desc = desc.replace(/\]\]/g, "");

					text += line.substr(0, i).replace(/[!]/g, '*');
					text += '<html><a href="javascript:;" onClick="window.scrollToHeading(\'' + title + '\', \'' + desc+ '\', event)">' + desc+ '</a></html>\n';
		wikify(text, c);

config.macros.showtoc.toggleElement = function(e) {
	if(e) {
		if(e.style.display != "none") {
			e.style.display = "none";
		} else {
			e.style.display = "";

window.scrollToTop = function(evt) {
	if (! evt)
		var evt = window.event;

	var target = resolveTarget(evt);
	var tiddler = story.findContainingTiddler(target);

	if (! tiddler)
		return false;

	window.scrollTo(0, ensureVisible(tiddler));

	return false;

window.scrollToHeading = function(title, anchorName, evt) {
	var tiddler = null;

	if (! evt)
		var evt = window.event;

	if (title) {
		story.displayTiddler(store.getTiddler(title), title, null, false);
		tiddler = document.getElementById(story.idPrefix + title);
	} else {
		var target = resolveTarget(evt);
		tiddler = story.findContainingTiddler(target);

	if (tiddler == null)
		return false;
	var children1 = tiddler.getElementsByTagName("h1");
	var children2 = tiddler.getElementsByTagName("h2");
	var children3 = tiddler.getElementsByTagName("h3");
	var children4 = tiddler.getElementsByTagName("h4");
	var children5 = tiddler.getElementsByTagName("h5");

	var children = new Array();
	children = children.concat(children1, children2, children3, children4, children5);

	for (var i = 0; i < children.length; i++) {
		for (var j = 0; j < children[i].length; j++) {
			var heading = children[i][j].innerHTML;

			// Remove all HTML tags
			while (heading.indexOf("<") >= 0) {
				heading = heading.substring(0, heading.indexOf("<")) + heading.substring(heading.indexOf(">") + 1);

			// Cut off the code added in showtoc for TOP
			heading = heading.substr(0, heading.length-6);

			if (heading == anchorName) {
				var y = findPosY(children[i][j]);
				return false;
	return false
[[La Société]]
|''Description:''|Allows you to disable TiddlyWiki's automatic linking of WikiWords|
|''Author:''|Martin Budden (mjbudden (at) gmail (dot) com)|
|''Source:''|http://www.martinswiki.com/#DisableWikiLinksPlugin |
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/MartinBudden/plugins/DisableWikiLinksPlugin.js |
|''Date:''|Aug 5, 2006|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]] |

|''Disable WikiLinks''|<<option chkDisableWikiLinks>>|


// Ensure that the DisableWikiLinksPlugin is only installed once.
if(!version.extensions.DisableWikiLinksPlugin) {
version.extensions.DisableWikiLinksPlugin = {installed:true};

if(version.major < 2 || (version.major == 2 && version.minor < 1))
	{alertAndThrow('DisableWikiLinksPlugin requires TiddlyWiki 2.1 or newer.');}

if (config.options.chkDisableWikiLinks==undefined)
	{config.options.chkDisableWikiLinks = false;}

Tiddler.prototype.autoLinkWikiWords = function()
		{return false;}
	return !this.isTagged('systemConfig') && !this.isTagged('excludeMissing');

} // end of 'install only once'
<!-- LHO 130101 LHO -->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<!-- LHO 130101 LHO -->
<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>

// //''Name:'' EmailLink
// //''Version:'' 
// //''Author:'' AlanHecht
// //''Type:'' [[Macro|Macros]]

// //''Description:'' email lets you list a "email" address without displaying it as readable text. This helps prevent your email address from being harvested by search engines and other web crawlers that read your page's contents. Using email, you type in the words "at" and "dot" instead of the punctuation symbols and add spaces inbetween words to disguise your address. However, email will display your email address in a web browser so that humans can read it. And email turns the address into a hyperlink that can be clicked to send you an instant email.

// //''Syntax:'' << {{{email yourname at yourdomain dot com "?optional parameters"}}} >>
// //Example 1: <<email sample at nowhere dot com>> (standard)
// //Example 2: <<email sample at nowhere dot com "?subject=Submission&body=Type your message here.">> (with optional parameters)

// //''Directions:'' <<tiddler MacroDirections>>

// //''Notes:'' You can use the optional email parameters to stipulate a subject or message body for the message. Most (not all) email clients will use this information to construct the email message.

// //''Related Links:'' none

// //''Revision History:''
// // v0.1.0 (20 July 2005): initial release
// // v0.1.1 (22 July 2005): renamed the macro from "mailto" to "email" to further thwart email harvesters.

// //''Code section:''
version.extensions.email = {major: 0, minor: 1, revision: 1, date: new Date("Jul 22, 2005")};
config.macros.email = {}
config.macros.email.handler = function(place,macroName,params)
var temp = params.join(" ");
var data = temp.split("?");
var recipient = data[0];
recipient = recipient.replace(" at ","@").replace(" dot ",".");
recipient = recipient.replace(/\s/g,"");
var optional = data[1] ? "?" + data[1] : "";
var theLink = createExternalLink(place,"ma"+"il"+"to:"+recipient+optional);
|Created by|SaqImtiaz|
Resize tiddler text on the fly. The text size is remembered between sessions by use of a cookie.
You can customize the maximum and minimum allowed sizes.
(only affects tiddler content text, not any other text)

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

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

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

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

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

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

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



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

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

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

config.macros.fontSize.handler = function (place,macroName,params,wikifier,paramString,tiddler)

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

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

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

               if (config.options.txtFontSize < fontSettings.maxSize)
                  config.options.txtFontSize = (config.options.txtFontSize*1)+fontSettings.stepSize;


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



config.paramifiers.font =
               onstart: function(v)
                   config.options.txtFontSize = v;
<div align="center">
<table class="twtable" >
   <tr class="evenRow">
     <th align="center">
Pour tout commentaire ou toute question, merci de contacter <a target="_blank" title="Lien externe vers mailto:Contact-01@Aditamus.Com?subject=question suite à une visite sur votre site web&amp;body=Taper votre message ici" href="mailto:Contact-01@Aditamus.com?subject=question suite à une visite sur votre site web&amp;body=Taper votre message ici" class="externalLink">cliquer pour envoyer un courrier</a>
|''Version:''|1.0.8 (2007-04-12)|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|

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

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

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

!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features: 
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) 
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features: 
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs: 
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features: 
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version


//		   ForEachTiddlerPlugin

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

if (!window.abego) window.abego = {};

version.extensions.ForEachTiddlerPlugin = {
	major: 1, minor: 0, revision: 8, 
	date: new Date(2007,3,12), 
	source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
	licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
	copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"

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

// forEachTiddler Macro

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	return {tiddlers: tiddlers, context: context};

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

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

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

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

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

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

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

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

abego.parseNamedParameter = function(name, parameter, i) {
	var beginExpression = null;
	if ((i < parameter.length) && parameter[i] == name) {
		if (i >= parameter.length) {
			throw "Missing text behind '%0'".format([name]);
		return config.macros.forEachTiddler.paramEncode(parameter[i]);
	return null;

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

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

	// Parse the "begin" option
	var beginExpression = abego.parseNamedParameter("begin", parameter, p);
	if (beginExpression !== null) 
		p += 2;
	var endExpression = abego.parseNamedParameter("end", parameter, p);
	if (endExpression !== null) 
		p += 2;
	var noneExpression = abego.parseNamedParameter("none", parameter, p);
	if (noneExpression !== null) 
		p += 2;

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

	// Perform the action.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
	var count = tiddlers.length;
	var text = "";
	if (count > 0 && beginExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
	for (var i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		text += func(tiddler, context, count, i);
	if (count > 0 && endExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);

	if (count == 0 && noneExpression) 
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);

	if (filename) {
		if (lineSeparator !== undefined) {
			lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
			text = text.replace(/\n/mg,lineSeparator);
		saveFile(filename, convertUnicodeToUTF8(text));
	} else {
		var wrapper = createTiddlyElement(place, "span");
		wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);

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

// Internal.
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
	return {
		place : placeParam, 
		whereClause : whereClauseParam, 
		sortClause : sortClauseParam, 
		sortAscending : sortAscendingParam, 
		script : scriptText,
		actionName : actionNameParam, 
		actionParameter : actionParameterParam,
		tiddlyWikiPath : tiddlyWikiPathParam,
		inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
		viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result

// Internal.
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of 
// the given path.
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
	if (!idPrefix) {
		idPrefix = "store";
	var lenPrefix = idPrefix.length;
	// Read the content of the given file
	var content = loadFile(this.getLocalPath(path));
	if(content === null) {
		throw "TiddlyWiki '"+path+"' not found.";
	var tiddlyWiki = new TiddlyWiki();

	// Starting with TW 2.2 there is a helper function to import the tiddlers
	if (tiddlyWiki.importTiddlyWiki) {
		if (!tiddlyWiki.importTiddlyWiki(content))
			throw "File '"+path+"' is not a TiddlyWiki.";
		tiddlyWiki.dirty = false;
		return tiddlyWiki;
	// The legacy code, for TW < 2.2
	// Locate the storeArea div's
	var posOpeningDiv = content.indexOf(startSaveArea);
	var posClosingDiv = content.lastIndexOf(endSaveArea);
	if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
		throw "File '"+path+"' is not a TiddlyWiki.";
	var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
	// Create a "div" element that contains the storage text
	var myStorageDiv = document.createElement("div");
	myStorageDiv.innerHTML = storageText;
	// Create all tiddlers in a new TiddlyWiki
	// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
	var store = myStorageDiv.childNodes;
	for(var t = 0; t < store.length; t++) {
		var e = store[t];
		var title = null;
			title = e.getAttribute("tiddler");
		if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
			title = e.id.substr(lenPrefix);
		if(title && title !== "") {
			var tiddler = tiddlyWiki.createTiddler(title);
	tiddlyWiki.dirty = false;

	return tiddlyWiki;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// End of forEachTiddler Macro

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

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

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

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

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

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

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

} // of "install only once"

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

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

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

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

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

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

|''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 |
|''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/]] |

//-- 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"});

    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
    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)"});

    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"});

    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";


    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'"});

    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"});

    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'"});

    text: "labels",
    tooltip: "Sélectionner des labels existants à ajouter à ce tiddler",
    popupNone: "Aucun label défini",
    tagTooltip: "Ajouter le label '%0'"});

        {unit: 1024*1024*1024, template: "%0\u00a0GB"},
        {unit: 1024*1024, template: "%0\u00a0MB"},
        {unit: 1024, template: "%0\u00a0KB"},
        {unit: 1, template: "%0\u00a0B"}

    label: "recherche",
    prompt: "Rechercher dans ce TiddlyWiki",
    accessKey: "F",
    successMsg: "%0 tiddlers trouvés contenant %1",
    failureMsg: "Aucun tiddler ne contient %0"});

	label: "avec ce label : ",
	labelNotTag: "aucun tiddler avec ce label",
	tooltip: "Liste des tiddlers avec le label '%0'"});

    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)

    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";

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

    label: "permalien",
    prompt: "Lien vers une URL contenant tous les tiddlers affichés actuellement"});

    label: "enregistrer",
    prompt: "Enregistrer tous les tiddlers du TiddlyWiki",
    accessKey: "S"});

    label: "nouveau tiddler",
    prompt: "Créer un nouveau tiddler",
    title: "Nouveau Tiddler",
    accessKey: "N"});

    label: "nouveau journal",
    prompt: "Créer un nouveau tiddler avec la date et l'heure",
    accessKey: "J"});

    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'}

    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'}

    moreLabel: "(plus)",
    morePrompt: "Afficher les commandes supplémentaires",
    lessLabel: "(moins)",
    lessPrompt: "Masquer les commandes supplémentaires",
    separator: "|"

    label: "actualiser",
    prompt: "Actualiser tout le TiddlyWiki"

    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'importation",
    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: Importation de %0 tiddler(s)",
    step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
    doneLabel: "terminé",
    donePrompt: "Fermer cet assistant",
    statusDoingImport: "Importation 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: [

    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"

    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}

    text: "fermer",
    tooltip: "Fermer ce tiddler"});

    text: "isoler",
    tooltip: "Fermer tous les autres tiddlers"});

    text: "éditer",
    tooltip: "Editer ce tiddler",
    readOnlyText: "voir",
    readOnlyTooltip: "Afficher la source de ce tiddler"});

    text: "valider",
    tooltip: "Confirmer les modifications effectuées sur ce tiddler"});

    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"});

    text: "supprimer",
    tooltip: "Supprimer ce tiddler",
    warning: "Confirmez-vous la suppression de '%0'?"});

    text: "permalien",
    tooltip: "Permalien de ce tiddler"});

    text: "références",
    tooltip: "Afficher les tiddlers qui font référence à ce tiddler",
    popupNone: "Aucune référence"});

    text: "atteindre",
    tooltip: "Atteindre un autre tiddler ouvert dans ce document"});

    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: "  "});

    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: [

    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>>'

    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"

|Created by|SaqImtiaz|
Toggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.

Click the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.

Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Edit the ViewTemplate to add the fullscreen command to the toolbar.

*25-07-06: ver 1.1
*20-07-06: ver 1.0

var lewcidFullScreen = false;

config.commands.fullscreen =
            text:" ↕ ",
            tooltip:"Fullscreen mode"

config.commands.fullscreen.handler = function (event,src,title)
            if (lewcidFullScreen == false)
                lewcidFullScreen = true;
                setStylesheet('#sidebar, .header, #mainMenu{display:none;} #displayArea{margin:0em 0 0 0 !important;}',"lewcidFullScreenStyle");
                lewcidFullScreen = false;
                setStylesheet(' ',"lewcidFullScreenStyle");

config.macros.fullscreen.handler =  function(place,macroName,params,wikifier,paramString,tiddler)
        var label = params[0]||" ↕ ";
        var tooltip = params[1]||"Fullscreen mode";

var lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler =function(title,animate,slowly)
           if (story.isEmpty() && lewcidFullScreen == true)

Slider.prototype.lewcidStop = Slider.prototype.stop;
Slider.prototype.stop = function()
           if (story.isEmpty() && lewcidFullScreen == true)
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|Description|interactive controls for import/export with filtering.|
This plugin lets you selectively combine tiddlers from any two TiddlyWiki documents.  An interactive control panel lets you pick a document to import from, and then select which tiddlers to import, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles.  Automatically add tags to imported tiddlers so they are easy to find later on.  Generates a detailed report of import 'history' in ImportedTiddlers.
see [[ImportTiddlersPluginInfo]] for details

<<importTiddlers inline>>
__password-protected server settings //(optional, if needed)//:__
>username: <<option txtRemoteUsername>> password: <<option txtRemotePassword>>
>{{{usage: <<option txtRemoteUsername>> <<option txtRemotePassword>>}}}
>''note: these settings are also used by [[LoadTiddlersPlugin]] and [[ExternalTiddlersPlugin]]''
!!!!!Installation Notes
* As of 6/27/2007, "patch" functions that provide backward-compatibility with TW2.1.x and earlier have been split into a separate [[ImportTiddlersPluginPatch]] tiddler to reduce installation overhead for //this// plugin.  You only need to install the additional plugin tiddler when using ImportTiddlersPlugin in documents using TW2.1.x or earlier.
* As of 3/21/2007, the interactive {{{<<importTiddlers>>}}} and non-interactive {{{<<loadTiddlers>>}}} macro definitions and related code have been split into separate [[ImportTiddlersPlugin]] and [[LoadTiddlersPlugin]] to permit selective installation of either the interactive and/or non-interactive macro functions.
* Quick Installation Tip: If you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.
2008.05.12 [4.0.2] automatically tweak the backstage "import" task to add the ImportTiddlers control panel as an optional alternative to the standard import wizard.  (Moved from BackstageTweaks).
2008.04.30 [4.0.1] trim #... suffix for loading files/URLs in IE
2008.04.30 [4.0.0] added source filtering (using URL paramifiers).  Also, abbreviations for code-size reduction.
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
// Version
version.extensions.importTiddlers = {major: 4, minor: 0, revision: 2, date: new Date(2008,5,12)};

// add ImportTiddlerPlugin controls to built-in backstage import task
if (config.tasks) { // TW2.2 or above
	config.tasks.importTask.content="Use ~TiddlyWiki built-in importer (below) or, ";
	config.tasks.importTask.content+="<<importTiddlers link 'Use ImportTiddlersPlugin control panel...'>>\n";
	config.tasks.importTask.content+="<<importTiddlers core>>"

// IE needs explicit global scoping for functions/vars called from browser events

// default cookie/option values
if (!config.options.chkImportReport) config.options.chkImportReport=true;

// default shadow definition
config.shadowTiddlers.ImportTiddlers="<<importTiddlers inline>>";

	label: "import tiddlers",
	prompt: "Copy tiddlers from another document",
	openMsg: "Opening %0",
	openErrMsg: "Could not open %0 - error=%1",
	readMsg: "Read %0 bytes from %1",
	foundMsg: "Found %0 tiddlers in %1",
	filterPrompt: "Enter filter as a space-separated combination\nuse tiddler titles, tag:tagvalue, and/or story:TiddlerName criteria\n(or, use * to match all tiddlers)",
	filterMsg: "Filtered %0 tiddlers matching: %1",
	summaryMsg: "%0 tiddler%1 in the list",
	summaryFilteredMsg: "%0 of %1 tiddler%2 in the list",
	plural: "s are",
	single: " is",
	countMsg: "%0 tiddlers selected for import",
	processedMsg: "Processed %0 tiddlers",
	importedMsg: "Imported %0 of %1 tiddlers from %2",
	loadText: "please load a document...",
	closeText: "close",	// text for close button when file is loaded
	doneText: "done",	// text for close button when file is not loaded
	local: true,		// default to import from local file
	src: "",		// path/filename or URL of document to import (retrieved from SiteUrl tiddler)
	proxy: "",		// URL for remote proxy script (retrieved from SiteProxy tiddler)
	useProxy: false,	// use specific proxy script in front of remote URL
	inbound: null,		// hash-indexed array of tiddlers from other document
	newTags: "2008-07",		// text of tags added to imported tiddlers
	addTags: true,		// add new tags to imported tiddlers
	listsize: 8,		// # of lines to show in imported tiddler list
	importTags: true,	// include tags from remote source document when importing a tiddler
	keepTags: true,		// retain existing tags when replacing a tiddler
	sync: false,		// add 'server' fields to imported tiddlers (for sync function)
	lastFilter: "",		// most recent filter (URL hash) applied
	lastAction: null,	// most recent collision button performed
	index: 0,		// current processing index in import list
	sort: ""		// sort order for imported tiddler listbox

if (config.macros.importTiddlers.coreHandler==undefined)
	config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.handler; // save built-in handler

config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	if (!params[0] || params[0].toLowerCase()=='core') { // default to built in
		if (config.macros.importTiddlers.coreHandler)
	else if (params[0]=='link') { // show link to floating panel
		var label=params[1]?params[1]:this.label;
		var prompt=params[2]?params[2]:this.prompt;
	else if (params[0]=='inline') {// show panel as INLINE tiddler content
	else if (config.macros.loadTiddlers)
		config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers

// // Handle link click to create/show/hide control panel
function onClickImportMenu(e)
	if (!e) var e = window.event;
	var parent=resolveTarget(e).parentNode;
	var panel = document.getElementById("importPanel");
	if (panel==undefined || panel.parentNode!=parent)
	var isOpen = panel.style.display=="block";
		anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));
		panel.style.display = isOpen ? "none" : "block" ;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();

// // Create control panel: HTML, CSS
function createImportPanel(place) {
	var cmi=config.macros.importTiddlers; // abbreviation
	var panel=document.getElementById("importPanel");
	if (panel) { panel.parentNode.removeChild(panel); }
	var siteURL=store.getTiddlerText("SiteUrl"); if (!siteURL) siteURL="";
	var siteProxy=store.getTiddlerText("SiteProxy"); if (!siteProxy) siteProxy="SiteProxy";
	return panel;

// // CSS
config.macros.importTiddlers.css = '\
#importPanel {\
	display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\
	background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
	border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
	padding: 0.5em; margin:0em; -moz-border-radius:1em;\
#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\
#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\
#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\
#importPanel input  { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\
#importPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\
#importPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\
#importPanel .rad { width:auto; }\
#importPanel .chk { width:auto; margin:1px;border:0; }\
#importPanel .btn { width:auto; }\
#importPanel .btn1 { width:98%; }\
#importPanel .btn2 { width:48%; }\
#importPanel .btn3 { width:32%; }\
#importPanel .btn4 { width:24%; }\
#importPanel .btn5 { width:19%; }\
#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\
#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\
#importCollisionPanel { display:none; margin:0.5em 0em 0em 0em; }\
#backstagePanel #importPanel { left:10%; right:auto; }\

// // HTML 
config.macros.importTiddlers.html = '\
<!-- source and report -->\
<table><tr><td align=left>\
	import from\
	<input type="radio" class="rad" name="importFrom" id="importFromFile" value="file" CHECKED\
			document.getElementById(\'importHTTPPanel\').style.display=\'none\'"> local file\
	<input type="radio" class="rad" name="importFrom" id="importFromWeb"  value="http"\
			document.getElementById(\'importHTTPPanel\').style.display=\'block\'"> web server\
</td><td align=right>\
	<input type=checkbox class="chk" id="chkImportReport" checked\
		onClick="config.options[\'chkImportReport\']=this.checked;"> create report\
<!-- import from local file  -->\
<div id="importLocalPanel" style="display:block;margin-bottom:2px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\
enter source path/filename<br>\
<input type="file" id="fileImportSource" size=57 style="width:100%"\
<!-- import from http server -->\
<div id="importHTTPPanel" style="display:none;margin-bottom:2px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\
<table><tr><td align=left>\
	enter source URL or <a href="javascript:;" id="importSelectFeed"\
		onclick="onClickImportButton(this,event)" title="select a pre-defined \'systemServer\' URL">\
		select a server</a><br>\
</td><td align=right>\
	<input type="checkbox" class="chk" id="importUseProxy"\
			document.getElementById(\'importSiteProxy\').style.display=this.checked?\'block\':\'none\'"> use a proxy\
<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\
<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\
<table><tr><td align=left>\
	<a href="javascript:;" id="importSelectAll"\
		onclick="onClickImportButton(this)" title="select all tiddlers">\
	<a href="javascript:;" id="importSelectNew"\
		onclick="onClickImportButton(this)" title="select tiddlers not already in destination document">\
		&nbsp;added&nbsp;</a> \
	<a href="javascript:;" id="importSelectChanges"\
		onclick="onClickImportButton(this)" title="select tiddlers that have been updated in source document">\
		&nbsp;changes&nbsp;</a> \
	<a href="javascript:;" id="importSelectDifferences"\
		onclick="onClickImportButton(this)" title="select tiddlers that have been added or are different from existing tiddlers">\
		&nbsp;differences&nbsp;</a> \
	<a href="javascript:;" id="importFilterTiddlers"\
		onclick="onClickImportButton(this)" title="filter list of tiddlers to include only those that match certain criteria">\
		&nbsp;filter&nbsp;</a> \
</td><td align=right>\
	<a href="javascript:;" id="importListSmaller"\
		onclick="onClickImportButton(this)" title="reduce list size">\
	<a href="javascript:;" id="importListLarger"\
		onclick="onClickImportButton(this)" title="increase list size">\
	<a href="javascript:;" id="importListMaximize"\
		onclick="onClickImportButton(this)" title="maximize/restore list size">\
<select id="importList" size=8 multiple\
	<!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\
<div style="margin-bottom:2px;padding-bottom:2px;border-bottom:1px solid #999">\
<input type=checkbox class="chk" id="chkSync" \
	onClick="config.macros.importTiddlers.sync=this.checked;">link tiddlers to source document (for synchronizing later)\
<input type=checkbox class="chk" id="chkAddTags" checked\
	onClick="config.macros.importTiddlers.addTags=this.checked;">add new tags &nbsp;\
<input type=checkbox class="chk" id="chkImportTags" checked\
	onClick="config.macros.importTiddlers.importTags=this.checked;">import source tags &nbsp;\
<input type=checkbox class="chk" id="chkKeepTags" checked\
	onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing tags<br>\
<input type=text id="txtNewTags" size=15 onKeyUp="config.macros.importTiddlers.newTags=this.value" autocomplete=off>\
<div align=center style="margin-top:2px">\
	<input type=button id="importLoad" class="importButton" style="width:32%" value="load"\
		title="load listbox with tiddlers from source document"\
	<input type=button id="importStart"	 class="importButton" style="width:32%" value="import"\
		title="add selected source tiddlers to the current document"\
	<input type=button id="importClose"	 class="importButton" style="width:32%" value="close"\
		title="clear listbox or hide control panel"\
<div id="importCollisionPanel" style="text-align:left;border-top:1px solid #999">\
	<table style="border:0;padding:0;margin:0;"><tr valign="bottom" style="border:0;padding:0;margin:0;">\
	<td align=left style="border:0;padding:0;margin:0;">\
		tiddler already exists:\
	</td><td align=right style="border:0;padding:0;margin:0;">\
		<input type=checkbox class="chk" id="importApplyToAll" checked> apply to all\
	<input type=text id="importNewTitle" size=15 autocomplete=off">\
	<div align=center>\
	<input type=button id="importSkip"	class="importButton" style="width:23%" value="skip"\
		title="do not import this tiddler"\
	<input type=button id="importRename"  class="importButton" style="width:23%" value="rename"\
		title="rename the incoming tiddler"\
	<input type=button id="importMerge"   class="importButton" style="width:23%" value="merge"\
		title="append the incoming tiddler to the existing tiddler"\
	<input type=button id="importReplace" class="importButton" style="width:23%" value="replace"\
		title="discard the existing tiddler"\

// // Control interactions
function onClickImportButton(which,event)
	var cmi=config.macros.importTiddlers; // abbreviation

	var list = document.getElementById('importList');
	if (!list) return;
	var thePanel = document.getElementById('importPanel');
	var theCollisionPanel = document.getElementById('importCollisionPanel');
	var theNewTitle = document.getElementById('importNewTitle');
	var count=0;
	switch (which.id)
		case 'fileImportSource':
		case 'importLoad':		// load import source into hidden frame
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
			if (cmi.src=="") break;
			// Load document, read it's DOM and fill the list
				function(success,params,txt,src,xhr) {
					var cmi=config.macros.importTiddlers; // abbreviation
					var src=src.replace(/%20/g," ");
					if (!success) { displayMessage(cmi.openErrMsg.format([src,xhr.status])); return; }
					cmi.all = cmi.readTiddlersFromHTML(txt);
					var count=cmi.all?cmi.all.length:0;
					var querypos=src.lastIndexOf("?"); if (querypos!=-1) src=src.substr(0,querypos);
					cmi.inbound=cmi.filterByHash(params,cmi.all); // use full URL including hash (if any)
		case 'importSelectFeed':	// select a pre-defined systemServer feed URL
			var p=Popup.create(which); if (!p) return;
			var tids=store.getTaggedTiddlers('systemServer');
			if (!tids.length)
				createTiddlyText(createTiddlyElement(p,'li'),'no pre-defined server feeds');
			for (var t=0; t<tids.length; t++) {
				var u=store.getTiddlerSlice(tids[t].title,"URL");
				var d=store.getTiddlerSlice(tids[t].title,"Description");
				if (!d||!d.length) d=store.getTiddlerSlice(tids[t].title,"description");
				if (!d||!d.length) d=u;
						var u=this.getAttribute('url');
			event.cancelBubble = true;
			if (event.stopPropagation) event.stopPropagation();
			// create popup with feed list
			// onselect, insert feed URL into input field.
		case 'importSelectAll':		// select all tiddler list items (i.e., not headings)
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				if (list.options[t].value=="") continue;
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
		case 'importSelectNew':		// select tiddlers not in current document
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				if (list.options[t].value=="") continue;
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
		case 'importSelectChanges':		// select tiddlers that are updated from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				if (list.options[t].value==""||!store.tiddlerExists(list.options[t].value)) continue;
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified>0); // updated tiddler
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
		case 'importSelectDifferences':		// select tiddlers that are new or different from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				if (list.options[t].value=="") continue;
				if (!store.tiddlerExists(list.options[t].value)) { list.options[t].selected=true; count++; continue; }
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified!=0); // changed tiddler
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
		case 'importFilterTiddlers':	// filter list to include only matching tiddlers
			importReport();		// if an import was in progress, generate a report
			if (!cmi.all) { displayMessage(cmi.countMsg.format([0])); return false; }
			var hash=prompt(cmi.filterPrompt,cmi.lastFilter);
			if (!hash) return false; // cancelled by user
			if (hash=="*") hash="";
			if (hash=="") cmi.lastFilter="*";
			refreshImportList();	// reset/resize the listbox
		case 'importStart':		// initiate the import processing
			importReport();		// if an import was in progress, generate a report
		case 'importClose':		// unload imported tiddlers or hide the import control panel
			// if imported tiddlers not loaded, close the import control panel
			if (!cmi.inbound) { thePanel.style.display='none'; break; }
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
		case 'importSkip':	// don't import the tiddler
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported = cmi.inbound[j];
			theImported.status='skipped after asking';			// mark item as skipped
			cmi.index=importTiddlers(cmi.index+1);	// resume with NEXT item
		case 'importRename':		// change name of imported tiddler
			var theItem		= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported		= cmi.inbound[j];
			theImported.status	= 'renamed from '+theImported.title;	// mark item as renamed
			theImported.set(theNewTitle.value,null,null,null,null);		// change the tiddler title
			theItem.value		= theNewTitle.value;			// change the listbox item text
			theItem.text		= theNewTitle.value;			// change the listbox item text
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
		case 'importMerge':	// join existing and imported tiddler content
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported	= cmi.inbound[j];
			var theExisting	= store.getTiddler(theItem.value);
			var theText	= theExisting.text+'\n----\n^^merged from: ';
			theText		+='[['+cmi.src+'#'+theItem.value+'|'+cmi.src+'#'+theItem.value+']]^^\n';
			theText		+='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\n'+theImported.text;
			var theDate	= new Date();
			var theTags	= theExisting.getTags()+' '+theImported.getTags();
			theImported.status   = 'merged with '+theExisting.title;	// mark item as merged
			theImported.status  += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");
			theImported.status  += ' by '+theExisting.modifier;
			cmi.index=importTiddlers(cmi.index);	// resume with this item
		case 'importReplace':		// substitute imported tiddler for existing tiddler
			var theItem		  = list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported     = cmi.inbound[j];
			var theExisting	  = store.getTiddler(theItem.value);
			theImported.status  = 'replaces '+theExisting.title;		// mark item for replace
			theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");
			theImported.status += ' by '+theExisting.modifier;
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
		case 'importListSmaller':		// decrease current listbox size, minimum=5
			if (list.options.length==1) break;
		case 'importListLarger':		// increase current listbox size, maximum=number of items in list
			if (list.options.length==1) break;
		case 'importListMaximize':	// toggle listbox size between current and maximum
			if (list.options.length==1) break;

// // refresh listbox
function refreshImportList(selectedIndex)
	var cmi=config.macros.importTiddlers; // abbreviation

	var list  = document.getElementById("importList");
	if (!list) return;
	// if nothing to show, reset list content and size
	if (!cmi.inbound) 
		while (list.length > 0) { list.options[0] = null; }
		list.options[0]=new Option(cmi.loadText,"",false,false);

	// get the sort order
	if (!selectedIndex)   selectedIndex=0;
	if (selectedIndex==0) cmi.sort='title';		// heading
	if (selectedIndex==1) cmi.sort='title';
	if (selectedIndex==2) cmi.sort='modified';
	if (selectedIndex==3) cmi.sort='tags';
	if (selectedIndex>3) {
		// display selected tiddler count
		for (var t=0,count=0; t < list.options.length; t++) {
			if (!list.options[t].selected) continue;
			if (list.options[t].value!="")
			else { // if heading is selected, deselect it, and then select and count all in section
				for ( t++; t<list.options.length && list.options[t].value!=""; t++) {
		clearMessage(); displayMessage(cmi.countMsg.format([count]));
		return; // no refresh needed

	// there are inbound tiddlers loaded... disable inapplicable controls...

	// get the alphasorted list of tiddlers
	var tiddlers=cmi.inbound;
	tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });
	// clear current list contents
	while (list.length > 0) { list.options[0] = null; }
	// add heading and control items to list
	var i=0;
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	if (cmi.all.length==tiddlers.length)
		var summary=cmi.summaryMsg.format([tiddlers.length,(tiddlers.length!=1)?cmi.plural:cmi.single]);
		var summary=cmi.summaryFilteredMsg.format([tiddlers.length,cmi.all.length,(cmi.all.length!=1)?cmi.plural:cmi.single]);
	list.options[i++]=new Option(summary,"",false,false);
	list.options[i++]=new Option(((cmi.sort=="title"   )?">":indent)+' [by title]',"",false,false);
	list.options[i++]=new Option(((cmi.sort=="modified")?">":indent)+' [by date]',"",false,false);
	list.options[i++]=new Option(((cmi.sort=="tags")?">":indent)+' [by tags]',"",false,false);
	// output the tiddler list
	switch(cmi.sort) {
		case "title":
			for(var t = 0; t < tiddlers.length; t++)
				list.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
		case "modified":
			// sort descending for newest date first
			tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });
			var lastSection = "";
			for(var t = 0; t < tiddlers.length; t++) {
				var tiddler = tiddlers[t];
				var theSection = tiddler.modified.toLocaleDateString();
				if (theSection != lastSection) {
					list.options[i++] = new Option(theSection,"",false,false);
					lastSection = theSection;
				list.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
		case "tags":
			var theTitles = {}; // all tiddler titles, hash indexed by tag value
			var theTags = new Array();
			for(var t=0; t<tiddlers.length; t++) {
				var title=tiddlers[t].title;
				var tags=tiddlers[t].tags;
				if (!tags || !tags.length) {
					if (theTitles["untagged"]==undefined) { theTags.push("untagged"); theTitles["untagged"]=new Array(); }
				else for(var s=0; s<tags.length; s++) {
					if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
			for(var tagindex=0; tagindex<theTags.length; tagindex++) {
				var theTag=theTags[tagindex];
				list.options[i++]=new Option(theTag,"",false,false);
				for(var t=0; t<theTitles[theTag].length; t++)
					list.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
	list.selectedIndex=selectedIndex;		  // select current control item
	if (list.size<cmi.listsize) list.size=cmi.listsize;
	if (list.size>list.options.length) list.size=list.options.length;

// // re-entrant processing for handling import with interactive collision prompting
function importTiddlers(startIndex)
	var cmi=config.macros.importTiddlers; // abbreviation

	if (!cmi.inbound) return -1;

	var list = document.getElementById('importList');
	if (!list) return;
	var t;
	// if starting new import, reset import status flags
	if (startIndex==0)
		for (var t=0;t<cmi.inbound.length;t++)
	for (var i=startIndex; i<list.options.length; i++)
		// if list item is not selected or is a heading (i.e., has no value), skip it
		if ((!list.options[i].selected) || ((t=list.options[i].value)==""))
		for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==t) break;
		var inbound = cmi.inbound[j];
		var theExisting = store.getTiddler(inbound.title);
		// avoid redundant import for tiddlers that are listed multiple times (when 'by tags')
		if (inbound.status=="added")
		// don't import the "ImportedTiddlers" history from the other document...
		if (inbound.title=='ImportedTiddlers')
		// if tiddler exists and import not marked for replace or merge, stop importing
		if (theExisting && (inbound.status.substr(0,7)!="replace") && (inbound.status.substr(0,5)!="merge"))
			return i;
		// assemble tags (remote + existing + added)
		var newTags = "";
		if (cmi.importTags)
			newTags+=inbound.getTags()	// import remote tags
		if (cmi.keepTags && theExisting)
			newTags+=" "+theExisting.getTags(); // keep existing tags
		if (cmi.addTags && cmi.newTags.trim().length)
			newTags+=" "+cmi.newTags; // add new tags
		// set the status to 'added' (if not already set by the 'ask the user' UI)
		// set sync fields
		if (cmi.sync) {
			if (!inbound.fields) inbound.fields={}; // for TW2.1.x backward-compatibility
		// do the import!
		store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags, inbound.fields, true, inbound.created);
                store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value (needed for TW2.1.x and earlier)
	return(-1);	// signals that we really finished the entire list

function importStopped()
	var cmi=config.macros.importTiddlers; // abbreviation
	var list     = document.getElementById('importList');
	var theNewTitle = document.getElementById('importNewTitle');
	if (!list) return;
	if (cmi.index==-1)
		importReport();		// import finished... generate the report
	else {
		// import collision...
		// show the collision panel and set the title edit field
		if (document.getElementById('importApplyToAll').checked
			&& cmi.lastAction
			&& cmi.lastAction.id!="importRename") {

function importReport()
	var cmi=config.macros.importTiddlers; // abbreviation
	if (!cmi.inbound) return;

	// if import was not completed, the collision panel will still be open... close it now.
	var panel=document.getElementById('importCollisionPanel'); if (panel) panel.style.display='none';

	// get the alphasorted list of tiddlers
	var tiddlers = cmi.inbound;
	// gather the statistics
	var count=0; var total=0;
	for (var t=0; t<tiddlers.length; t++) {
		if (!tiddlers[t].status || !tiddlers[t].status.trim().length) continue;
		if (tiddlers[t].status.substr(0,7)!="skipped") count++;
	// generate a report
	if (total) displayMessage(cmi.processedMsg.format([total]));
	if (count && config.options.chkImportReport) {
		// get/create the report tiddler
		var theReport = store.getTiddler('ImportedTiddlers');
		if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text  = ""; }
		// format the report content
		var now = new Date();
		var newText = "On "+now.toLocaleString()+", "+config.options.txtUserName
		newText +=" imported "+count+" tiddler"+(count==1?"":"s")+" from\n[["+cmi.src+"|"+cmi.src+"]]:\n";
		if (cmi.addTags && cmi.newTags.trim().length)
			newText += "imported tiddlers were tagged with: \""+cmi.newTags+"\"\n";
		newText += "<<<\n";
		for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status) newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\n";
		newText += "<<<\n";
		// update the ImportedTiddlers content and show the tiddler
		theReport.text	 = newText+((theReport.text!="")?'\n----\n':"")+theReport.text;
		theReport.modifier = config.options.txtUserName;
		theReport.modified = new Date();
                store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags, theReport.fields);

	// reset status flags
	for (var t=0; t<cmi.inbound.length; t++) cmi.inbound[t].status="";

	// mark document as dirty and let display update as needed
	if (count) { store.setDirty(true); store.notifyAll(); }

	// always show final message when tiddlers were actually loaded
	if (count) displayMessage(cmi.importedMsg.format([count,tiddlers.length,cmi.src.replace(/%20/g," ")]));

// // File and XMLHttpRequest I/O
config.macros.importTiddlers.fileExists=function(theFile) {
	var found=false;
	if(window.Components) {
		try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
		catch(e) { return false; } // security access denied
		var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
		try { file.initWithPath(theFile); }
		catch(e) { return false; } // invalid directory
		found = file.exists();
	else { // use ActiveX FSO object for MSIE 
		var fso = new ActiveXObject("Scripting.FileSystemObject");
		found = fso.FileExists(theFile)
	return found;

config.macros.importTiddlers.loadRemoteFile = function(src,callback) {
	if (src==undefined || !src.length) return null; // filename is required
	var original=src; // URL as specified
	var hashpos=src.indexOf("#"); if (hashpos!=-1) src=src.substr(0,hashpos); // URL with #... suffix removed (needed for IE)
	displayMessage(this.openMsg.format([src.replace(/%20/g," ")]));
	if (src.substr(0,5)!="http:" && src.substr(0,5)!="file:") { // if src is relative (i.e., not a URL)
		if (!this.fileExists(src)) { // if file cannot be found, might be relative path.. try fixup
			var pathPrefix=document.location.href;  // get current document path and trim off filename
			var slashpos=pathPrefix.lastIndexOf("/"); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf("\\"); 
			if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
			if (pathPrefix.substr(0,5)!="http:") src=getLocalPath(src);
	if (src.substr(0,5)!="http:" && src.substr(0,5)!="file:") { // if not remote URL, read from local filesystem
		var txt=loadFile(src);
		if ((txt==null)||(txt==false)) // file didn't load
			{ displayMessage(config.macros.importTiddlers.openErrMsg.format([src.replace(/%20/g," "),"(filesystem error)"])); }
		else {
			displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g," ")]));
			if (callback) callback(true,original,convertUTF8ToUnicode(txt),src,null);
	else {
		var name=config.options.txtRemoteUsername; var pass=config.options.txtRemotePassword;
		var xhr=doHttp("GET",src,null,null,name,pass,callback,original,null)
		if (!xhr) displayMessage(config.macros.importTiddlers.openErrMsg.format([src,"(XMLHTTPRequest error)"]));

	var remoteStore=new TiddlyWiki();
	return remoteStore.getTiddlers("title");	

	var hashpos=src.lastIndexOf("#"); if (hashpos==-1) return tiddlers;
	var hash=src.substr(hashpos+1); if (!hash.length) return tiddlers;
	var tids=[];
	var params=hash.parseParams("anon",null,true,false,false);
	for (var p=1; p<params.length; p++) {
		switch (params[p].name) {
			case "anon":
			case "open":
			case "tag":
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].isTagged(params[p].value))
			case "story":
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].title==params[p].value) {
						for (var s=0; s<tiddlers[t].links.length; s++)
	var matches=[];
	for (var t=0; t<tiddlers.length; t++)
		if (tids.contains(tiddlers[t].title))
	return matches;
!Nous contacter

Pour en connaître davantage sur ''@@color:#002fa7;Ad@@@@color:#3c3c3c;itamus@@'',  nous rencontrer ou pour toute autre question, n’hésitez pas à nous contacter :
* Par courrier à notre siège social : ''@@color:#002fa7;Ad@@@@color:#3c3c3c;itamus@@'' - 4, allée des rosiers - 94260 FRESNES
* Par mail : <html><a target="_blank" title="Lien externe vers mailto:contact-01@aditamus.com?subject=question suite à une visite sur votre site web&amp;body=Taper votre message ici" href="mailto:contact-01@aditamus.com?subject=question suite à une visite sur votre site web&amp;body=Taper votre message ici" class="externalLink">en cliquant <b>ici</b></a></html>.
* Par téléphone : 09 51 15 75 00
* Par fax :  09 72 41 27 23


* R.C.S : 798 331 104  R.C.S. CRETEIL
* SIRET :  798 331 104 00017
* SIREN : 798 331 104
* Numéro de TVA : FR 80798331104
* Code NAF : 6202A

|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|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.
>see [[InlineJavascriptPluginInfo]]
2008.03.03 [1.9.2] corrected declaration of wikifyPlainText() for 'TW 2.1.x compatibility fallback' (fixes Safari "parse error")
2008.02.23 [1.9.1] in onclick function, use string instead of array for 'bufferedHTML' attribute on link element (fixes IE errors)
2008.02.21 [1.9.0] 'onclick' scripts now allow returned text (or document.write() calls) to be wikified into a span that immediately follows the onclick link.  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.
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
version.extensions.inlineJavascript= {major: 1, minor: 9, revision: 2, date: new Date(2008,3,3)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( 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) { // load a script library
				// make script tag, set src, add to body to execute, then remove for cleanup
				var script = document.createElement("script"); script.src = src;
				document.body.appendChild(script); document.body.removeChild(script);
			if (code) { // there is script code
				if (show) // show inline script code in tiddler output
				if (label) { // create a link to an 'onclick' script
					// add a link, define click handler, save code in link (pass 'place'), set link attributes
					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){"+fixup+"\n};_out(this);"
						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((typeof(r)==="string")&&r.length) {
								return false;
							} else return r!==undefined?r:false;
						} catch(e){alert(e.description||e.toString());return false;}
					var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
					URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
					if (key) link.accessKey=key.substr(0,1); // single character only
				else { // run inline script code
					var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
					var code="function _out(place){"+fixup+"\n};_out(w.output);"
					try { var out=eval(code); } 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();
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");
             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.title = m[1];
		         if(config.options[cookie] == m[1])
                     validTab = true;
                 config.options[cookie] = firstTab;
             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";
        nodes[t].className = "tab tabUnselected"
		if(tabset.nextSibling && tabset.nextSibling.className == "tabContents")
		var tabContent = createTiddlyElement(null,"div",null,"tabContents");
			config.options[cookie] = tab;
Story.prototype.onClickInlineTab = function(e)
    return false;
|''Version:''|1.0.2 (2007-07-25)|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IntelliTaggerPlugin Documentation]]|
|''~SourceCode:''|[[IntelliTaggerPlugin SourceCode]]|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''Browser:''|Firefox or better|
!Version History
* 1.0.2 (2007-07-25): 
** Feature: "Return" key may be used to accept first tag suggestion (beside "Alt-1")
** Bugfix: Keyboard shortcuts (Alt+3 etc.) shifted
* 1.0.1 (2007-05-18): Improvement: Speedup when using TiddlyWikis with many tags
* 1.0.0 (2006-04-26): Initial release

// /%
if(!version.extensions.IntelliTaggerPlugin){if(!window.abego){window.abego={};}if(!abego.internal){abego.internal={};}abego.alertAndThrow=function(s){alert(s);throw s;};if(version.major<2){abego.alertAndThrow("Use TiddlyWiki 2.0.8 or better to run the IntelliTagger Plugin.");}version.extensions.IntelliTaggerPlugin={major:1,minor:0,revision:2,date:new Date(2007,6,25),type:"plugin",source:"http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin",documentation:"[[IntelliTaggerPlugin Documentation]]",sourcecode:"[[IntelliTaggerPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",tiddlywiki:"Version 2.0.8 or better",browser:"Firefox or better"};abego.createEllipsis=function(_2){var e=createTiddlyElement(_2,"span");e.innerHTML="&hellip;";};abego.isPopupOpen=function(_4){return _4&&_4.parentNode==document.body;};abego.openAsPopup=function(_5){if(_5.parentNode!=document.body){document.body.appendChild(_5);}};abego.closePopup=function(_6){if(abego.isPopupOpen(_6)){document.body.removeChild(_6);}};abego.getWindowRect=function(){return {left:findScrollX(),top:findScrollY(),height:findWindowHeight(),width:findWindowWidth()};};abego.moveElement=function(_7,_8,_9){_7.style.left=_8+"px";_7.style.top=_9+"px";};abego.centerOnWindow=function(_a){if(_a.style.position!="absolute"){throw "abego.centerOnWindow: element must have absolute position";}var _b=abego.getWindowRect();abego.moveElement(_a,_b.left+(_b.width-_a.offsetWidth)/2,_b.top+(_b.height-_a.offsetHeight)/2);};abego.isDescendantOrSelf=function(_c,e){while(e){if(_c==e){return true;}e=e.parentNode;}return false;};abego.toSet=function(_e){var _f={};for(var i=0;i<_e.length;i++){_f[_e[i]]=true;}return _f;};abego.filterStrings=function(_11,_12,_13){var _14=[];for(var i=0;i<_11.length&&(_13===undefined||_14.length<_13);i++){var s=_11[i];if(s.match(_12)){_14.push(s);}}return _14;};abego.arraysAreEqual=function(a,b){if(!a){return !b;}if(!b){return false;}var n=a.length;if(n!=b.length){return false;}for(var i=0;i<n;i++){if(a[i]!=b[i]){return false;}}return true;};abego.moveBelowAndClip=function(_1b,_1c){if(!_1c){return;}var _1d=findPosX(_1c);var _1e=findPosY(_1c);var _1f=_1c.offsetHeight;var _20=_1d;var _21=_1e+_1f;var _22=findWindowWidth();if(_22<_1b.offsetWidth){_1b.style.width=(_22-100)+"px";}var _23=_1b.offsetWidth;if(_20+_23>_22){_20=_22-_23-30;}if(_20<0){_20=0;}_1b.style.left=_20+"px";_1b.style.top=_21+"px";_1b.style.display="block";};abego.compareStrings=function(a,b){return (a==b)?0:(a<b)?-1:1;};abego.sortIgnoreCase=function(arr){var _27=[];var n=arr.length;for(var i=0;i<n;i++){var s=arr[i];_27.push([s.toString().toLowerCase(),s]);}_27.sort(function(a,b){return (a[0]==b[0])?0:(a[0]<b[0])?-1:1;});for(i=0;i<n;i++){arr[i]=_27[i][1];}};abego.getTiddlerField=function(_2d,_2e,_2f){var _30=document.getElementById(_2d.idPrefix+_2e);var e=null;if(_30!=null){var _32=_30.getElementsByTagName("*");for(var t=0;t<_32.length;t++){var c=_32[t];if(c.tagName.toLowerCase()=="input"||c.tagName.toLowerCase()=="textarea"){if(!e){e=c;}if(c.getAttribute("edit")==_2f){e=c;}}}}return e;};abego.setRange=function(_35,_36,end){if(_35.setSelectionRange){_35.setSelectionRange(_36,end);var max=0+_35.scrollHeight;var len=_35.textLength;var top=max*_36/len,bot=max*end/len;_35.scrollTop=Math.min(top,(bot+top-_35.clientHeight)/2);}else{if(_35.createTextRange!=undefined){var _3b=_35.createTextRange();_3b.collapse();_3b.moveEnd("character",end);_3b.moveStart("character",_36);_3b.select();}else{_35.select();}}};abego.internal.TagManager=function(){var _3c=null;var _3d=function(){if(_3c){return;}_3c={};store.forEachTiddler(function(_3e,_3f){for(var i=0;i<_3f.tags.length;i++){var tag=_3f.tags[i];var _42=_3c[tag];if(!_42){_42=_3c[tag]={count:0,tiddlers:{}};}_42.tiddlers[_3f.title]=true;_42.count+=1;}});};var _43=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_44,_45,_46,_47,_48,_49){var _4a=this.fetchTiddler(_44);var _4b=_4a?_4a.tags:[];var _4c=(typeof _49=="string")?_49.readBracketedList():_49;_43.apply(this,arguments);if(!abego.arraysAreEqual(_4b,_4c)){abego.internal.getTagManager().reset();}};var _4d=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_4e){var _4f=this.fetchTiddler(_4e);var _50=_4f&&_4f.tags.length>0;_4d.apply(this,arguments);if(_50){abego.internal.getTagManager().reset();}};this.reset=function(){_3c=null;};this.getTiddlersWithTag=function(tag){_3d();var _52=_3c[tag];return _52?_52.tiddlers:null;};this.getAllTags=function(_53){_3d();var _54=[];for(var i in _3c){_54.push(i);}for(i=0;_53&&i<_53.length;i++){_54.pushUnique(_53[i],true);}abego.sortIgnoreCase(_54);return _54;};this.getTagInfos=function(){_3d();var _56=[];for(var _57 in _3c){_56.push([_57,_3c[_57]]);}return _56;};var _58=function(a,b){var a1=a[1];var b1=b[1];var d=b[1].count-a[1].count;return d!=0?d:abego.compareStrings(a[0].toLowerCase(),b[0].toLowerCase());};this.getSortedTagInfos=function(){_3d();var _5e=this.getTagInfos();_5e.sort(_58);return _5e;};this.getPartnerRankedTags=function(_5f){var _60={};for(var i=0;i<_5f.length;i++){var _62=this.getTiddlersWithTag(_5f[i]);for(var _63 in _62){var _64=store.getTiddler(_63);if(!(_64 instanceof Tiddler)){continue;}for(var j=0;j<_64.tags.length;j++){var tag=_64.tags[j];var c=_60[tag];_60[tag]=c?c+1:1;}}}var _68=abego.toSet(_5f);var _69=[];for(var n in _60){if(!_68[n]){_69.push(n);}}_69.sort(function(a,b){var d=_60[b]-_60[a];return d!=0?d:abego.compareStrings(a.toLowerCase(),b.toLowerCase());});return _69;};};abego.internal.getTagManager=function(){if(!abego.internal.gTagManager){abego.internal.gTagManager=new abego.internal.TagManager();}return abego.internal.gTagManager;};(function(){var _6e=2;var _6f=1;var _70=30;var _71;var _72;var _73;var _74;var _75;var _76;if(!abego.IntelliTagger){abego.IntelliTagger={};}var _77=function(){return _72;};var _78=function(tag){return _75[tag];};var _7a=function(s){var i=s.lastIndexOf(" ");return (i>=0)?s.substr(0,i):"";};var _7d=function(_7e){var s=_7e.value;var len=s.length;return (len>0&&s[len-1]!=" ");};var _81=function(_82){var s=_82.value;var len=s.length;if(len>0&&s[len-1]!=" "){_82.value+=" ";}};var _85=function(tag,_87,_88){if(_7d(_87)){_87.value=_7a(_87.value);}story.setTiddlerTag(_88.title,tag,0);_81(_87);abego.IntelliTagger.assistTagging(_87,_88);};var _89=function(n){if(_76&&_76.length>n){return _76[n];}return (_74&&_74.length>n)?_74[n]:null;};var _8b=function(n,_8d,_8e){var _8f=_89(n);if(_8f){_85(_8f,_8d,_8e);}};var _90=function(_91){var pos=_91.value.lastIndexOf(" ");var _93=(pos>=0)?_91.value.substr(++pos,_91.value.length):_91.value;return new RegExp(_93.escapeRegExp(),"i");};var _94=function(_95,_96){var _97=0;for(var i=0;i<_95.length;i++){if(_96[_95[i]]){_97++;}}return _97;};var _99=function(_9a,_9b,_9c){var _9d=1;var c=_9a[_9b];for(var i=_9b+1;i<_9a.length;i++){if(_9a[i][1].count==c){if(_9a[i][0].match(_9c)){_9d++;}}else{break;}}return _9d;};var _a0=function(_a1,_a2){var _a3=abego.internal.getTagManager().getSortedTagInfos();var _a4=[];var _a5=0;for(var i=0;i<_a3.length;i++){var c=_a3[i][1].count;if(c!=_a5){if(_a2&&(_a4.length+_99(_a3,i,_a1)>_a2)){break;}_a5=c;}if(c==1){break;}var s=_a3[i][0];if(s.match(_a1)){_a4.push(s);}}return _a4;};var _a9=function(_aa,_ab){return abego.filterStrings(abego.internal.getTagManager().getAllTags(_ab),_aa);};var _ac=function(){if(!_71){return;}var _ad=store.getTiddlerText("IntelliTaggerMainTemplate");if(!_ad){_ad="<b>Tiddler IntelliTaggerMainTemplate not found</b>";}_71.innerHTML=_ad;applyHtmlMacros(_71,null);refreshElements(_71,null);};var _ae=function(e){if(!e){var e=window.event;}var tag=this.getAttribute("tag");if(_73){_73.call(this,tag,e);}return false;};var _b2=function(_b3){createTiddlyElement(_b3,"span",null,"tagSeparator"," | ");};var _b4=function(_b5,_b6,_b7,_b8,_b9){if(!_b6){return;}var _ba=_b8?abego.toSet(_b8):{};var n=_b6.length;var c=0;for(var i=0;i<n;i++){var tag=_b6[i];if(_ba[tag]){continue;}if(c>0){_b2(_b5);}if(_b9&&c>=_b9){abego.createEllipsis(_b5);break;}c++;var _bf="";var _c0=_b5;if(_b7<10){_c0=createTiddlyElement(_b5,"span",null,"numberedSuggestion");_b7++;var key=_b7<10?""+(_b7):"0";createTiddlyElement(_c0,"span",null,"suggestionNumber",key+") ");var _c2=_b7==1?"Return or ":"";_bf=" (Shortcut: %1Alt-%0)".format([key,_c2]);}var _c3=config.views.wikified.tag.tooltip.format([tag]);var _c4=(_78(tag)?"Remove tag '%0'%1":"Add tag '%0'%1").format([tag,_bf]);var _c5="%0; Shift-Click: %1".format([_c4,_c3]);var btn=createTiddlyButton(_c0,tag,_c5,_ae,_78(tag)?"currentTag":null);btn.setAttribute("tag",tag);}};var _c7=function(){if(_71){window.scrollTo(0,ensureVisible(_71));}if(_77()){window.scrollTo(0,ensureVisible(_77()));}};var _c8=function(e){if(!e){var e=window.event;}if(!_71){return;}var _cb=resolveTarget(e);if(_cb==_77()){return;}if(abego.isDescendantOrSelf(_71,_cb)){return;}abego.IntelliTagger.close();};addEvent(document,"click",_c8);var _cc=Story.prototype.gatherSaveFields;Story.prototype.gatherSaveFields=function(e,_ce){_cc.apply(this,arguments);var _cf=_ce.tags;if(_cf){_ce.tags=_cf.trim();}};var _d0=function(_d1){story.focusTiddler(_d1,"tags");var _d2=abego.getTiddlerField(story,_d1,"tags");if(_d2){var len=_d2.value.length;abego.setRange(_d2,len,len);window.scrollTo(0,ensureVisible(_d2));}};var _d4=config.macros.edit.handler;config.macros.edit.handler=function(_d5,_d6,_d7,_d8,_d9,_da){_d4.apply(this,arguments);var _db=_d7[0];if((_da instanceof Tiddler)&&_db=="tags"){var _dc=_d5.lastChild;_dc.onfocus=function(e){abego.IntelliTagger.assistTagging(_dc,_da);setTimeout(function(){_d0(_da.title);},100);};_dc.onkeyup=function(e){if(!e){var e=window.event;}if(e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.keyCode>=48&&e.keyCode<=57)){_8b(e.keyCode==48?9:e.keyCode-49,_dc,_da);}else{if(e.ctrlKey&&e.keyCode==32){_8b(0,_dc,_da);}}if(!e.ctrlKey&&(e.keyCode==13||e.keyCode==10)){_8b(0,_dc,_da);}setTimeout(function(){abego.IntelliTagger.assistTagging(_dc,_da);},100);return false;};_81(_dc);}};var _e0=function(e){if(!e){var e=window.event;}var _e3=resolveTarget(e);var _e4=_e3.getAttribute("tiddler");if(_e4){story.displayTiddler(_e3,_e4,"IntelliTaggerEditTagsTemplate",false);_d0(_e4);}return false;};var _e5=config.macros.tags.handler;config.macros.tags.handler=function(_e6,_e7,_e8,_e9,_ea,_eb){_e5.apply(this,arguments);abego.IntelliTagger.createEditTagsButton(_eb,createTiddlyElement(_e6.lastChild,"li"));};var _ec=function(){if(_71&&_72&&!abego.isDescendantOrSelf(document,_72)){abego.IntelliTagger.close();}};setInterval(_ec,100);abego.IntelliTagger.displayTagSuggestions=function(_ed,_ee,_ef,_f0,_f1){_74=_ed;_75=abego.toSet(_ee);_76=_ef;_72=_f0;_73=_f1;if(!_71){_71=createTiddlyElement(document.body,"div",null,"intelliTaggerSuggestions");_71.style.position="absolute";}_ac();abego.openAsPopup(_71);if(_77()){var w=_77().offsetWidth;if(_71.offsetWidth<w){_71.style.width=(w-2*(_6e+_6f))+"px";}abego.moveBelowAndClip(_71,_77());}else{abego.centerOnWindow(_71);}_c7();};abego.IntelliTagger.assistTagging=function(_f3,_f4){var _f5=_90(_f3);var s=_f3.value;if(_7d(_f3)){s=_7a(s);}var _f7=s.readBracketedList();var _f8=_f7.length>0?abego.filterStrings(abego.internal.getTagManager().getPartnerRankedTags(_f7),_f5,_70):_a0(_f5,_70);abego.IntelliTagger.displayTagSuggestions(_a9(_f5,_f7),_f7,_f8,_f3,function(tag,e){if(e.shiftKey){onClickTag.call(this,e);}else{_85(tag,_f3,_f4);}});};abego.IntelliTagger.close=function(){abego.closePopup(_71);_71=null;return false;};abego.IntelliTagger.createEditTagsButton=function(_fb,_fc,_fd,_fe,_ff,id,_101){if(!_fd){_fd="[edit]";}if(!_fe){_fe="Edit the tags";}if(!_ff){_ff="editTags";}var _102=createTiddlyButton(_fc,_fd,_fe,_e0,_ff,id,_101);_102.setAttribute("tiddler",(_fb instanceof Tiddler)?_fb.title:String(_fb));return _102;};abego.IntelliTagger.getSuggestionTagsMaxCount=function(){return 100;};config.macros.intelliTagger={label:"intelliTagger",handler:function(_103,_104,_105,_106,_107,_108){var _109=_107.parseParams("list",null,true);var _10a=_109[0]["action"];for(var i=0;_10a&&i<_10a.length;i++){var _10c=_10a[i];var _10d=config.macros.intelliTagger.subhandlers[_10c];if(!_10d){abego.alertAndThrow("Unsupported action '%0'".format([_10c]));}_10d(_103,_104,_105,_106,_107,_108);}},subhandlers:{showTags:function(_10e,_10f,_110,_111,_112,_113){_b4(_10e,_74,_76?_76.length:0,_76,abego.IntelliTagger.getSuggestionTagsMaxCount());},showFavorites:function(_114,_115,_116,_117,_118,_119){_b4(_114,_76,0);},closeButton:function(_11a,_11b,_11c,_11d,_11e,_11f){var _120=createTiddlyButton(_11a,"close","Close the suggestions",abego.IntelliTagger.close);},version:function(_121){var t="IntelliTagger %0.%1.%2".format([version.extensions.IntelliTaggerPlugin.major,version.extensions.IntelliTaggerPlugin.minor,version.extensions.IntelliTaggerPlugin.revision]);var e=createTiddlyElement(_121,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_124){var e=createTiddlyElement(_124,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">&copy; 2006-2007 <b><font color=\"red\">abego</font></b> Software<font>";}}};})();config.shadowTiddlers["IntelliTaggerStyleSheet"]="/***\n"+"!~IntelliTagger Stylesheet\n"+"***/\n"+"/*{{{*/\n"+".intelliTaggerSuggestions {\n"+"\tposition: absolute;\n"+"\twidth: 600px;\n"+"\n"+"\tpadding: 2px;\n"+"\tlist-style: none;\n"+"\tmargin: 0;\n"+"\n"+"\tbackground: #eeeeee;\n"+"\tborder: 1px solid DarkGray;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .currentTag   {\n"+"\tfont-weight: bold;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .suggestionNumber {\n"+"\tcolor: #808080;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .numberedSuggestion{\n"+"\twhite-space: nowrap;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter {\n"+"\tmargin-top: 4px;\n"+"\tborder-top-width: thin;\n"+"\tborder-top-style: solid;\n"+"\tborder-top-color: #999999;\n"+"}\n"+".intelliTaggerSuggestions .favorites {\n"+"\tborder-bottom-width: thin;\n"+"\tborder-bottom-style: solid;\n"+"\tborder-bottom-color: #999999;\n"+"\tpadding-bottom: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .normalTags {\n"+"\tpadding-top: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter .button {\n"+"\tfont-size: 10px;\n"+"\n"+"\tpadding-left: 0.3em;\n"+"\tpadding-right: 0.3em;\n"+"}\n"+"\n"+"/*}}}*/\n";config.shadowTiddlers["IntelliTaggerMainTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class=\"favorites\" macro=\"intelliTagger action: showFavorites\"></div>\n"+"<div class=\"normalTags\" macro=\"intelliTagger action: showTags\"></div>\n"+"<!-- The Footer (with the Navigation) ============================================ -->\n"+"<table class=\"intelliTaggerFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n"+"  <tr>\n"+"\t<td align=\"left\">\n"+"\t\t<span macro=\"intelliTagger action: closeButton\"></span>\n"+"\t</td>\n"+"\t<td align=\"right\">\n"+"\t\t<span macro=\"intelliTagger action: version\"></span>, <span macro=\"intelliTagger action: copyright \"></span>\n"+"\t</td>\n"+"  </tr>\n"+"</tbody></table>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["IntelliTaggerEditTagsTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='title' macro='view title'></div>\n"+"<div class='tagged' macro='tags'></div>\n"+"<div class='viewer' macro='view text wikified'></div>\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["BSD open source license (abego Software)"]="See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";config.shadowTiddlers["IntelliTaggerPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]].";config.shadowTiddlers["IntelliTaggerPlugin SourceCode"]="[[Plugin source code on abego Software website|http://tiddlywiki.abego-software.de/archive/IntelliTaggerPlugin/Plugin-IntelliTagger-src.1.0.2.js]]\n";(function(){var _126=restart;restart=function(){setStylesheet(store.getTiddlerText("IntelliTaggerStyleSheet"),"IntelliTaggerStyleSheet");_126.apply(this,arguments);};})();}
// %/
!~IntelliTagger Stylesheet
.intelliTaggerSuggestions {
	position: absolute;
	width: 600px;

	padding: 2px;
	list-style: none;
	margin: 0;

	background: #eeeeee;
	border: 1px solid DarkGray;

.intelliTaggerSuggestions .currentTag   {
	font-weight: bold;

.intelliTaggerSuggestions .suggestionNumber {
	color: #808080;

.intelliTaggerSuggestions .numberedSuggestion{
	white-space: nowrap;

.intelliTaggerSuggestions .intelliTaggerFooter {
	margin-top: 4px;
	border-top-width: thin;
	border-top-style: solid;
	border-top-color: #999999;
.intelliTaggerSuggestions .favorites {
	border-bottom-width: thin;
	border-bottom-style: solid;
	border-bottom-color: #999999;
	padding-bottom: 2px;

.intelliTaggerSuggestions .normalTags {
	padding-top: 2px;

.intelliTaggerSuggestions .intelliTaggerFooter .button {
	font-size: 10px;

	padding-left: 0.3em;
	padding-right: 0.3em;

|''Version:''|1.0.0 (2007-10-03)|
|''Description:''|A command for your tiddler's toolbar to directly edit the tiddler's tags using the IntelliTaggerPlugin, without switching to "edit mode".|
|''Requires:''|IntelliTaggerPlugin http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''Browser:''|Firefox or better|
!Using the "IntelliTagsEditCommandPlugin"
Add the command {{{intelliTagsEdit}}} into the 'macro' attribute of the 'toolbar' {{{<div...>}}} in your ViewTemplate.

<div class='toolbar' 
        macro='toolbar -closeTiddler closeOthers +editTiddler intelliTagsEdit permalink references jump'>

This adds a "tags" button to the toolbar of the tiddlers (next to the ''edit'' button). Pressing the "tags" button will open the input field for the tiddler's tags and let you edit the tags with all the [[IntelliTaggerPlugin|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin]] features.
!Source Code

if (!version.extensions.IntelliTaggerPlugin)
    throw Error("IntelliTagsEditCommandPlugin requires the IntelliTaggerPlugin (http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin)");

if (config.commands.intelliTagsEdit) 

config.commands.intelliTagsEdit = {
	text: "tags",
	tooltip: "edit the tags"

config.commands.intelliTagsEdit.handler = function(event,src,title) {
	var button = abego.IntelliTagger.createEditTagsButton(title, null, "tags", "edit the tags");
	return false;


!Ils nous ont rejoint ...
Nous recrutons autant en fonction des besoins de nos clients qu'en prévision du développement que nous prévoyons pour notre entreprise. A ce jour, nous sommes fières d'avoir été rejoint par :
*[[Roger Bouchu]] : Consultant en Systèmes d'Information

!Nous recherchons ...
*''Des profils expérimentés et seniors :'' afin de répondre rapidement aux demandes précises et pressées de nous clients du secteur du conseil informatique, nous cherchons systématiquement à accroître notre vivier de consultants expérimentés.
*Pour leur donner une chance de se lancer, ''des profils juniors :'' En vue de nous accompagner dans notre croissance, nous sommes en recherche de stagiaires désireux d'apprendre le monde des NTIC. Vous commencerez de comprendre notre métier en intégrant notre équipe interne et serez tout d'abord affecté à la réalisation de nos outils internes (reporting, mise en œuvre de notre infrastructure informatisée, chartes graphiques, processus organisationnels). En fonction de vos appétences, vous pourrez être amené à participer rapidement à la réalisation des projets et forfaits de l'entreprise avec le soutien de votre maître de stage.

!... Rejoignez-nous !
Nous sommes toujours en recherche des perles rares qui sauront autant augmenter la valeur ajoutée de notre entreprise que répondre aux questions ciblées de nos clients ou analyser leur problématique.
Si vous voulez participer à notre dynamique, envoyez-nous votre curriculum vitae et une lettre de motivation à cette adresse : <<email candidature-11 at Aditamus dot Com "?subject=candidature suite à une visite sur votre site web&body=Lettre de motivation">>

!Processus de recrutement
*''Entretien de sélection :'' Durant ce premier entretien, vous rencontrez notre équipe des ressources humaines. Nous évoquons ensemble votre parcours ainsi que vos aspirations pour le futur. C'est aussi le moment d'évaluer conjointement en quoi Aditamus peut vous aider à atteindre les objectifs que vous vous êtes fixés. 
*''Entretien fonctionnel et/ou technique :'' Après un examen approfondi de votre candidature par les ressources humaines, un second entretien est organisé avec un manager afin de valider l'adéquation de votre profil et de vos attentes avec la stratégie d'Aditamus.
*''Entretien de validation'' avec la direction

!Expertise juridique transport

![[Publications du pôle Système d'Information|Nos publications]]
Cette page regroupe les publications et études que nous réalisons sur notre activité.
''@@color:#002fa7;Ad@@@@color:#3c3c3c;itamus@@'' est un cabinet de conseil et d'ingénierie informatique. Nous intervenons en tant qu'expert pour accompagner nos clients dans le développement et la mise en œuvre de leur système d'information.

Nos missions arrivent en appui des équipes informatiques existantes d'entreprises qui n'ont pas les moyens ou le temps pour suivre régulièrement la gestion de projet de leurs fournisseurs informatiques. En frontal de ces fournisseurs, nous nous assurons de la bonne tenue des délais, des coûts et de la satisfaction de vos utilisateurs finaux.

Nos missions sont aussi réalisées au sein de grands comptes via le portage de grandes sociétés de services qui trouvent chez nous les compétences qui leur font défaut. Elles apprécient notre exigence, notre professionnalisme et notre réactivité. Dans ce cas, nos équipes interviennent sur le long terme, en accompagnant les chefs de projets et les services dans la mise en œuvre de leur projets stratégiques. 

Issu de différents secteurs de métiers informatique et recouvrant un vaste panel de clients, nous sommes capables de comprendre l'ensemble de l'informatique d'une entreprise. Développeurs, gestionnaires de projets, ou exploitants nous avons été amené à maîtriser des systèmes techniques pointus et sensibles dans des conditions exigeantes et stressantes.

Nous avons vue étendue du système d'information d'une entreprise&nbsp;: de l'infrastructure matérielle (réseaux, téléphonie, serveurs, centre de données) à la mise en œuvre de logiciels. Nous nous positionnons entre le client final, l'utilisateur final, et les équipes informatiques de réalisation. 

Chez Aditamus, nos parcours professionnels, nous permettent de comprendre la globalité des besoins de la Direction des Systèmes d'Information d'une entreprise, qu'elle soit petite ou grande.
* Au sein d'un ''fournisseur en informatique'', nous maîtrisons l'ensemble des offres et pouvons gérer toutes les étapes d'un projet informatique de sa négociation commerciale, sa contractualisation, jusqu'à sa réalisation et sa finalisation. Nous pouvons renforcer ses équipes internes ou en délégation de ressources chez de grands comptes.
* Pour un ''utilisateur final de la dimension d'une PME'', nous pouvons mener un projet informatique de la définition des besoins des utilisateurs jusqu'à ce que le fournisseur livre son travail, en passant par la sélection, puis la contractualisation avec les fournisseurs. Pour cela, nous avons à cœur de veiller que notre client, pas forcément un sachant technologique, comprend bien les messages que tente de lui transmettre ses fournisseurs&nbsp;: vulgarisation, devient alors notre maître mot.
!Présentation du gérant
Riche d’un parcours de dix ans d'expérience acquise en société de conseil, Lucien-Henry Horvath est devenu directeur de projets en informatique avant de créer ''@@color:#002fa7;Ad@@@@color:#3c3c3c;itamus@@''. Il se positionne entre le client final, et les équipes techniques de réalisation. Il a pour principe qu'il faut toujours challenger les experts techniques pour s'assurer qu'ils conçoivent des choses réalisables qui  correspondant aux besoins des clients métiers et assurent la bonne adéquation d'exploitabilité et de conformité financière.

<tabs MainMenu>
<tab Mini cv>
!! Formation
;Ecole Supérieure d'Electricité
:Promotion 2002
:Mastère Spécialisé en Réseaux Informatiques et Télécomunication
;Université de Versailles Saint Quentin en Yvellines
:Diplôme d'Etude Supérieure Spécialisées en Analyse des Systèmes Stratégiques
:Promotion 2001
!! Expérience
Direction de projets au sein de plusieurs cabinets de conseils en informatiques.
Expert en développement, d'ingénieur informaticien, puis responsable informatique au sein de PME et associations.
Expert d'exploitation au sein de grands comptes.
* Gestion d’équipes
* Pilotage transverse de projets, AMOA
* Etude et synthèse des besoins, request for proposal, choix des solutions selon les problématiques
* Réponse aux appels d’offres et soutenances
* Gestion d’infrastructure et Maintien de SI en conditions opérationnelles
!Compétences techniques
* Systèmes : Unices (HP-UX, Solaris, Aix, GNU/Linux), Windows NT/2K, XP, Server 2003, Windows 7
* Réseaux et communication : LAN, Wifi, VPN/SSH, IIS/Apache, AD, Sendmail/Exchange
* SGBDR : Oracle 8i, MySQL, Sybase
* Langages : ABAP iv, C, C++, VB, Java, Ada 95, Cobol, shell, PHP & JavaScript
* Progiciels : Adonix X3, SAP/R3, A.R.S., Crystal Report
* Méthodologies spécifiques : démarche Equipage (Orange), CPC/QUESI (Areva)
!Parcour professionnel
*Depuis 2012 : Associé fondateur d'Aditamus
*2008-2012 : Directeur de Projets
**LVMH – Pilotage de la migration des boîtes e-mail pour l’entité Perfum & Cosmetics (9.800 utilisateurs)
**Saint-Gobain – Définition d'une solution de sauvegarde des postes de travail groupe
**LVMH – Mobilité de poste de travail : résolution des problèmes de connexions de forces de vente groupe en 3G/VPN et audit des process
**GDF Suez – Pilotage de l'uniformisation de l’infrastructure centrale DNS
**AREVA – AMOA et pilotage de projets d’infrastructure internes
**SNCB – Audit de la gestion des infrastructures techniques
**SFR – Etude d’externalisation des applications Windows
*2003 – 2008 : Chef de Projets
**Orange – Pilotage de l'exploitation d'un panel d'applications critiques
**Orange – Validation de l'éligibilité de projets à passer en exploitation
**France Telecom – Gestion de projet de déplacement de comptes utilisateurs entre filers
**SFR – Conception des indicateurs&nbsp;pour le sous-traitant Nokia Siemens Networks
**S.J.T. – Responsable Informatique
**Berezecki SA – Mission d’expertise technique de la mise en œuvre d’Adonix X3, interface technique avec l'avocat de l'entreprise
*2002 : Intégration de l'EAI Businessware chez Alstom T&D
*2001 : Ingénieur informaticien chez Taema (groupe Air Liquide Santé)
*1998 – 2000 : Ingénieur d'intégration (SAP / ABAPiv, langage C, Remedy ARS)
* Certification ITIL Foundation V2 (2007)
* Supélec (école Supérieure d’Electricité) : Mastère Spécialisé en Réseaux Informatiques et Télécoms – promotion 2002
* Université de Versailles Saint-Quentin-en-Yvelines : DESS d’Analyse des Systèmes Stratégiques, option Management des SI, mention bien (2001)
@@display:none;<<tiddler ToggleRightSidebar>>@@[img[Copyright Aditamus|./images/aditamus_logo_128px.png][http://www.aditamus.fr]]
<tabs MainMenu>
<tab Présentation>
[[La Société|La Société]]
[[Nos Services|Nos Services]]
[[Savoir faire|Notre savoir faire technique]]
[[Nos succès|Nos succès]]
<tabs MainMenu>
<tab Nos valeurs>
[[Le mot des créateurs|Le mot des créateurs]]
[[Les fondateurs|Les fondateurs]]
[[Nos collaborateurs|L'équipe Aditamus]]

[[Table des matières|Table des matières]]
[[Mentions légales|Mentions Légales]]
Texte plus visible <<fontSize>>

La structure générale, les textes, le savoir faire, le graphisme, les documents téléchargeables et tous autres éléments composants le site sont la propriété exclusive d’@@color:#002fa7;Ad@@@@color:#3c3c3c;itamus SARL@@.
Toute représentation totale ou partielle de ce site par quelque procédé que ce soit, sans l’autorisation expresse d’@@color:#002fa7;Ad@@@@color:#3c3c3c;itamus SARL@@ est interdite et constituerait une contrefaçon sanctionnée par les articles L.335-2 et suivants du Code de la propriété intellectuelle.

La marque @@color:#002fa7;Ad@@@@color:#3c3c3c;itamus@@, son logo, et les base line figurant sur le site sont des marques déposées. L’antériorité de l’ensemble des éléments de ce site peut être prouvée par @@color:#002fa7;Ad@@@@color:#3c3c3c;itamus SARL@@, celui-ci a fait l’objet d’un enregistrement daté du 25 juillet 2013.

L’information communiquée sur ce site est présentée à titre indicatif et général. Elle ne prétend nullement à l’exhaustivité, et n’a pas valeur contractuelle. En tout état de cause, les conditions générales tenant lieu de notice d’information sont remises lors de la souscription et ont alors valeur contractuelle.
!Société de Services et de Conseils en informatique
Vos besoins en chef de projets seniors et expérimentés est grand. Néanmoins le frein à leur embauche réside le plus souvent dans le haut niveau de rémunération auxquels ils sont souvent parvenus au fur et à mesure de leur montée en compétences. Dès lors, il devient plus difficile de prendre le risque de les recruter.
Chez Aditamus nous pouvons vous apporter de tels consultants expérimentés dans le cadre de mission à durée définie. Notre réseau constitue un vivier dans lequel nous trouverons la perle qui saura résoudre votre problématique, le coach qui saura faire gagner vos équipes en place ou celles de votre client.

!Petites et Moyennes Entreprises et Industries
Nombre de PME, si elles disposent d'une équipe informatique, n'ont souvent pas les ressources suffisantes pour suivre et contrôler la bonne exécution des marchés conclus avec des sociétés de service informatiques. Dès lors qu'il a la bride sur le coût, le prestataire risque de ralentir son avancement ou de ne pas livrer exactement ce qui était attendu. Nous proposons de suivre en votre nom les avancements de votre fournisseur.

Notre accompagnement aura lieu tout au long du projet : l'identification du besoin métier, jusqu'à la livraison du produit.

1) En premier lieu, nous vous proposons de sélectionner avec vous votre fournisseur :
* Une analyse des besoins métiers en recueillant les besoins de vos utilisateurs ; en outre, nous accompagnons vos utilisateurs dans l'expression de besoins réalistes qui se traduiront par un projet réalisable : un projet sur-vendu auprès de ses clients internes est déjà mis en risque avant son commencement.
* La rédaction d'une émission de besoin, ou d'un appel d'offre, le choix d'un panel de fournisseurs possibles et le suivi de leur réponse
* Le dépouillement des réponses de façon à vous proposer une short-liste
* L'accompagnement à la sélection du fournisseur qui correspond le plus, notamment au moyen d'une grille de lecture adaptée et d'indicateurs dédiés
* Nous apportons notre œil critique sur chaque proposition commerciale et vous montrons que les tarifs demandés sont cohérents et correspondent au mieux de vos besoins
* L'accompagnement à la contractualisation avec votre fournisseur : nous vous apporterons à ce titre les conseils de nos experts techniques mais aussi de nos juristes

2) Nous suivons le projet pour vous jusqu'à la satisfaction complète de vos utilisateurs finaux :
* Nous proposons notre assistance à maîtrise d'ouvrage pour parvenir à finaliser le projet de manière optimale, et notre capacité de négociation avec votre prestataire.
* Nous participons à chacun des comités d'avancement avec vous
* Nous suivons le fournisseurs à une fréquence supérieure à celle que vous auriez pu consacrer
* Nous vous rendons compte régulièrement au moyen d'indicateurs facilement compréhensibles et par des contacts fréquents
* Nous vous alertons, sur la base de notre expertise, lorsque nous détectons des //dérapages// que n'auraient pas remonté le fournisseur
* Nous vous accompagnons dans votre validation du produit livré

''Notre objectif est de vous accompagner tout du long de votre projet, de façon à ce que vos attentes soient satisfaites.''

Ainsi devenons-nous votre appui au moment crucial d'un projet informatique : à savoir dès son début. Nous vous accompagnerons jusqu'à votre satisfaction en évitant autant que possible toute forme de problème dans le projet.
!Installation complète et pas à pas d'un PC linux type
Cette publication d'Aditamus traite de l'installation d'un poste de travail de type bureautique destiné à l'usage d'un utilisateur habituel.
|!Les auteurs|>|
|[[Roger Bouchu]] : |
|[[Lucien-Henry Horvath]] : |
** Télécharger le document : [[Paramétrage d'un poste de travail GNU/Linux type|./publications/aditamus-publication-Parametrage Poste de Travail Linux_v1.0.pdf]]
!!Intereliance choisit Aditamus pour partenaire
L'entreprise [[Intereliance|http://www.intereliance.com/]] et Aditamus ont choisi de travailler en partenariat concernant leurs activités respectives.

//Intereliance accompagne tous les projets organisationnels impactant : l'intégration humaine, la performance individuelle et/ou collective, l'accompagnement du changement, la circulation de l'information dans le tissu systémique de l'entreprise, et les relations entre services - intérieurs ou extérieurs -.//
''//Jean-Pascal Côte//''
//Fondateur d'Intereliance//

Dans le cadre de missions d'ordre organisationnel, nous sommes heureux de pouvoir compter sur l'expertise d'Intereliance. Elle vient en appui de nos propres consultants seniors et leur permet de se concentrer sur le pilotage métiers des projets.
''//Lucien-Henry Horvath//''

!!Koossery Technology choisit Aditamus pour partenaire
L'entreprise [[Kossery Technology|http://www.koossery-tech.fr/]] et Aditamus ont choisi de travailler en partenariat concernant leurs activités respectives.

//C'est une grande joie que nous inspire l'idée de travailler avec Aditamus. Nous trouvons chez Aditamus des interlocuteurs autant techniques capables de nous apporter un soutien en main d’œuvre dans le cadre des composantes infrastructures de nos projets et qui savent aussi s'interfacer avec nos clients. Nous avons alors toute latitude pour nous recentrer totalement sur notre cœur de métier.//
''//Prosper Mendouga//''
//Business Partner//
//Secteur Industrie & Service//

Notre capacité à nous comprendre les besoins de nos clients métier et notre background technique fait de nous les ponts indispensable à toute collaboration entre des mondes qui ont besoin les uns des autres, mais qui bien souvent ne se comprennent pas. En nouant avec des experts des relations de confiance, nous sommes les plus capables d'expliquer à leur clients les contraintes qu'ils rencontrent.
''//Serge Horvath//''
//Associé fondateur//

N/A ce mois-ci.
!Assitance techniques dans vos projets informatiques
* Expertise ITSM
* Expertise Infrastructure et télécommunication
* Intégration et développements logiciels

!Préparation de vos projets informatiques
* Audits
* Expression des besoins
* Spécifications fonctionnelles et techniques
* Rédaction d'appels d'offres
* Choix des fournisseurs et partenaires
* Estimation des coûts, délais, charges et ressources humaines nécessaire à votre besoin
* Conduite de changement au sein de votre exploitation
* Déploiement et assistance au démarrage
* Pilotage de projets métiers
* Pilotage de projets informatiques

!Gestion de projet en Assistance à Maîtrise d'Ouvrage
* Sur la base d'une délégation de ressources
* Au sein de vos équipes

!Notre offre AMOA s'adapte aux secteurs suivants
* Télécoms
* Banque et assurance
* Énergie
* Transport
* Secteur public et associatif
* Industrie

<!-- largeur maximum de la page : max-width: 1000px; -->
<!-- le texte est justifié dans les cadres : align: justify; -->
<!-- le site est centré au milieu du navigateur : margin-left: auto; margin-right: auto; -->
<!-- pour faciliter l'édition, changer la couleur de cadre : border: solid 2px #73A0EF; background-color: orange; -->
<div style="margin-left: auto; margin-right: auto; max-width: 1000px; align: justify;">
	<div class='header' macro='gradient vert [[ColorPalette::PrimaryMid]] [[ColorPalette::TertiaryPale]]'>
	<!-- Définition du bandeau de titre -->
		<div class='headerShadow'>
			<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
			<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
		<div class='headerForeground'>
			<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
			<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	<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 id='displayArea'>
			<div class='displayArea' macro='gradient vert [[ColorPalette::Background]] [[ColorPalette::TertiaryPale]]'>
				<div id='messageArea'></div>
				<div id='tiddlerDisplay'></div>
				<div style="text-align:center"><span class='Misc' refresh='content' tiddler='FooterDisclaimer'></span></div>



J'ai intégré Aditamus en Février 2013, dans le cadre de mon stage de fin d'études.

Au cours de ces 6 mois de stage, je travaille sur des projets divers pour des petites et moyennes entreprises. Je suis aussi en charge de modifier, maintenir, supporter et le site web de l'entreprise et l'entreprise appuyé de mon maître de stage [[Lucien-Henry Horvath]].

Roger Bouchu
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|Overrides|Story.prototype.displayTiddler(), Story.prototype.displayTiddlers()|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
>see [[SinglePageModePluginInfo]]
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePageKeepFoldedTiddlers>> Don't auto-close folded tiddlers
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
<<option chkTopOfPageMode>> Always open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Always open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
2008.04.02 [2.9.0] in displayTiddler(), when single-page mode is in use and a tiddler is being edited, ask for permission to save-and-close that tiddler, instead of just leaving it open.
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 [1.0.0] Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
version.extensions.SinglePageMode= {major: 2, minor: 9, revision: 0, date: new Date(2008,4,2)};
config.paramifiers.SPM = { onstart: function(v) {
	if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
		config.lastURL = window.location.hash;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
} };
if (config.options.chkSinglePageMode==undefined) config.options.chkSinglePageMode=false;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined) config.options.chkSinglePageKeepFoldedTiddlers=true;
if (config.options.chkSinglePagePermalink==undefined) config.options.chkSinglePagePermalink=true;
if (config.options.chkTopOfPageMode==undefined) config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined) config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined) config.options.chkSinglePageAutoScroll=true;

if (config.optionsDesc) {
	config.optionsDesc.chkSinglePageMode="Display one tiddler at a time";
	config.optionsDesc.chkSinglePageKeepFoldedTiddlers="Don't auto-close folded tiddlers";
	config.optionsDesc.chkSinglePagePermalink="Automatically permalink current tiddler";
	config.optionsDesc.chkSinglePageAutoScroll="Automatically scroll tiddler into view (if needed)";
	config.optionsDesc.chkTopOfPageMode="Always open tiddlers at the top of the page";
	config.optionsDesc.chkBottomOfPageMode="Always open tiddlers at the bottom of the page";
} else {
	config.shadowTiddlers.AdvancedOptions += "\
		\n<<option chkSinglePageMode>> Display one tiddler at a time \
		\n<<option chkSinglePageKeepFoldedTiddlers>> Don't auto-close folded tiddlers \
		\n<<option chkSinglePagePermalink>> Automatically permalink current tiddler \
		\n<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed) \
		\n<<option chkTopOfPageMode>> Always open tiddlers at the top of the page \
		\n<<option chkBottomOfPageMode>> Always open tiddlers at the bottom of the page";
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
	if (!config.options.chkSinglePageMode)
		{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
	if (config.lastURL == window.location.hash) return; // no change in hash
	var tids=convertUTF8ToUnicode(decodeURIComponent(window.location.hash.substr(1))).readBracketedList();
	if (tids.length==1) // permalink (single tiddler in URL)
	else { // restore permaview or default view
		config.lastURL = window.location.hash;
		if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();

if (Story.prototype.SPM_coreDisplayTiddler==undefined)
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var tiddlerElem=document.getElementById(story.idPrefix+title); // ==null unless tiddler is already displayed
	var opt=config.options;
	if (opt.chkSinglePageMode) {
		story.forEachTiddler(function(tid,elem) {
			// skip current tiddler and, optionally, tiddlers that are folded.
			if (	tid==title
				|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
			// if a tiddler is being edited, ask before closing
			if (elem.getAttribute("dirty")=="true") {
				// if tiddler to be displayed is already shown, then leave active tiddlers editors as is
				// (occurs when switching between view and edit modes)
				if (tiddlerElem) return;
				// otherwise, ask for permission
				var msg="'"+tid+"' is currently being edited.\n\n";
				msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
				if (!confirm(msg)) return; else story.saveTiddler(tid);
	else if (opt.chkTopOfPageMode)
	else if (opt.chkBottomOfPageMode)
	if (opt.chkSinglePageMode && opt.chkSinglePagePermalink && !config.browser.isSafari) {
		window.location.hash = encodeURIComponent(convertUnicodeToUTF8(String.encodeTiddlyLink(title)));
		config.lastURL = window.location.hash;
		document.title = wikifyPlain("SiteTitle") + " - " + title;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (!isTopTiddler && (opt.chkSinglePageMode || opt.chkTopOfPageMode))
		else if (opt.chkBottomOfPageMode)
		else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	} else
		this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	var tiddlerElem=document.getElementById(story.idPrefix+title);
	if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
		var yPos=ensureVisible(tiddlerElem); // scroll to top of tiddler
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (opt.chkSinglePageMode||opt.chkTopOfPageMode||isTopTiddler)
			yPos=0; // scroll to top of page instead of top of tiddler
		if (opt.chkAnimate) // defer scroll until 200ms after animation completes
			window.scrollTo(0,yPos); // scroll immediately

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
Story.prototype.displayTiddlers = function() {
	// suspend single-page mode (and/or top/bottom display options) when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
&nbsp;&nbsp;&nbsp;''//Conseil et Assistance informatique//''
.viewer {
   text-align: justify;

body {font-size:.9em; 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;}
|Author|Eric Shulman|
|Description|'convenience' classes for common formatting, alignment, boxes, tables, etc.|

These 'style tweaks' can be easily included in other stylesheet tiddler so they can share a baseline look-and-feel that can then be customized to create a wide variety of 'flavors'.

/* text alignments */
	{ display:block;text-align:left; }
	{ display:block;text-align:center; }
.center table
	{ margin:auto !important; }
	{ display:block;text-align:right; }
	{ display:block;text-align:justify; }
	{ display:block;margin:0;padding:0;border:0;margin-left:2em; }
	{ float:left; }
	{ float:right; }
.valignTop, .valignTop table, .valignTop tbody, .valignTop th, .valignTop tr, .valignTop td
	{ vertical-align:top; }
.valignBottom, .valignBottom table, .valignBottom tbody, .valignBottom th, .valignBottom tr, .valignBottom td
	{ vertical-align:bottom; }
	{ clear:both; }
	{ white-space:normal; }
	{ white-space:nowrap; }
	{ display:none; }
	{ display:inline !important; }
	{ display:span; }
	{ display:block; }
	{ position:relative; }
	{ position:absolute; }

/* font sizes */
	{ font-size:14pt;line-height:120% }
	{ font-size:12pt;line-height:120% }
	{ font-size:9pt;line-height:120% }
	{ font-size:8pt;line-height:120% }
	{ font-size:7pt;line-height:120% }
	{ font-size:6pt;line-height:120% }
	{ font-size:120%; }
	{ font-size:80%; }

/* font styles */
	{ font-weight:bold; }
	{ font-style:italic; }
	{ text-decoration:underline; }

/* plain list items (no bullets or indent) */
.nobullets li { list-style-type: none; margin-left:-2em; }

/* multi-column tiddler content (not supported in Internet Explorer) */
.twocolumns { display:block;
	-moz-column-count:2; -moz-column-gap:1em; -moz-column-width:50%; /* FireFox */
	-webkit-column-count:2; -webkit-column-gap:1em; -webkit-column-width:50%; /* Safari */
	column-count:2; column-gap:1em; column-width:50%; /* Opera */
.threecolumns { display:block;
	-moz-column-count:3; -moz-column-gap:1em; -moz-column-width:33%; /* FireFox */
	-webkit-column-count:3; -webkit-column-gap:1em; -webkit-column-width:33%; /* Safari */
	column-count:3; column-gap:1em; column-width:33%; /* Opera */
.fourcolumns { display:block;
	-moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%; /* FireFox */
	-webkit-column-count:4; -webkit-column-gap:1em; -webkit-column-width:25%; /* Safari */
	column-count:4; column-gap:1em; column-width:25%; /* Opera */

/* page breaks */
.breakbefore { page-break-before:always; }
.breakafter { page-break-before:always; } 

/* show/hide browser-specific content for InternetExplorer vs. non-IE ("moz") browsers */
	{ display:none; } /* hide in moz (uses CSS selector) */
* html .mozOnly, *:first-child+html .mozOnly
	{ display: none; } /* hide in IE (uses IE6/IE7 CSS hacks) */

/* borderless tables */
.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody
	{ border:0 !important; margin:0 !important; padding:0 !important; }
.widetable, .widetable table
	{ width:100%; }

/* thumbnail images (fixed-sized scaled images) */
.thumbnail img { height:5em !important; }

/* stretchable images (auto-size to fit tiddler) */
.stretch img { width:95%; }

/* grouped content */
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; }
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#fff; color:#000; }
.menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
	{ color:#009 !important; }
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#ffe; color:#000; }
.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox code
	{ color:#333 !important; }
	{ margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }
	{ margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }
	{ margin:0;padding:1px 0;border:0;border-bottom:1px dotted; margin-bottom:1px; padding-bottom:1px; }
	{ margin:0;padding:0;border:0;border-top:1px dotted; margin-top:1px; padding-top:1px; }

/* scrolled content */
.scrollbars { overflow:auto; }
.height10em { height:10em; }
.height15em { height:15em; }
.height20em { height:20em; }
.height25em { height:25em; }
.height30em { height:30em; }
.height35em { height:35em; }
.height40em { height:40em; }

/* compact form */
	{ white-space:nowrap; }
.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select
	{ font-size:8pt; }

/* stretchable edit fields and textareas (auto-size to fit tiddler) */
.stretch input { width:99%; }
.stretch textarea { width:99%; }

/* compact input fields (limited to a few characters for entering percentages and other small values) */
.onechar input   { width:1em; }
.twochar input   { width:2em; }
.threechar input { width:3em; }
.fourchar input  { width:4em; }
.fivechar input  { width:5em; }

/* text colors */
.white { color:#fff !important }
.gray  { color:#999 !important }
.black { color:#000 !important }
.red   { color:#f66 !important }
.green { color:#0c0 !important }
.blue  { color:#99f !important }

/* rollover highlighting */
	{color:[[ColorPalette::TertiaryLight]] !important;}
.mouseover a
	{color:[[ColorPalette::TertiaryLight]] !important;}
.selected .mouseover
	{color:[[ColorPalette::Foreground]] !important;}
.selected .mouseover .button, .selected .mouseover a
	{color:[[ColorPalette::PrimaryDark]] !important;}

/* rollover zoom text */
	{ font-size:80% !important; }
.selected .zoomover
	{ font-size:100% !important; }

/* [[ColorPalette]] text colors */
.Background	{ color:[[ColorPalette::Background]];	 }
.Foreground	{ color:[[ColorPalette::Foreground]];	 }
.PrimaryPale	{ color:[[ColorPalette::PrimaryPale]];	 }
.PrimaryLight	{ color:[[ColorPalette::PrimaryLight]];	 }
.PrimaryMid	{ color:[[ColorPalette::PrimaryMid]];	 }
.PrimaryDark	{ color:[[ColorPalette::PrimaryDark]];	 }
.SecondaryPale	{ color:[[ColorPalette::SecondaryPale]]; }
.SecondaryLight	{ color:[[ColorPalette::SecondaryLight]];}
.SecondaryMid	{ color:[[ColorPalette::SecondaryMid]];	 }
.SecondaryDark	{ color:[[ColorPalette::SecondaryDark]]; }
.TertiaryPale	{ color:[[ColorPalette::TertiaryPale]];	 }
.TertiaryLight	{ color:[[ColorPalette::TertiaryLight]]; }
.TertiaryMid	{ color:[[ColorPalette::TertiaryMid]];	 }
.TertiaryDark	{ color:[[ColorPalette::TertiaryDark]];	 }
.Error		{ color:[[ColorPalette::Error]];	 }

/* [[ColorPalette]] background colors */
.BGBackground	  { background-color:[[ColorPalette::Background]];	}
.BGForeground	  { background-color:[[ColorPalette::Foreground]];	}
.BGPrimaryPale	  { background-color:[[ColorPalette::PrimaryPale]];	}
.BGPrimaryLight	  { background-color:[[ColorPalette::PrimaryLight]];	}
.BGPrimaryMid	  { background-color:[[ColorPalette::PrimaryMid]];	}
.BGPrimaryDark	  { background-color:[[ColorPalette::PrimaryDark]];	}
.BGSecondaryPale  { background-color:[[ColorPalette::SecondaryPale]]; 	}
.BGSecondaryLight { background-color:[[ColorPalette::SecondaryLight]];	}
.BGSecondaryMid	  { background-color:[[ColorPalette::SecondaryMid]];	}
.BGSecondaryDark  { background-color:[[ColorPalette::SecondaryDark]]; 	}
.BGTertiaryPale	  { background-color:[[ColorPalette::TertiaryPale]];	}
.BGTertiaryLight  { background-color:[[ColorPalette::TertiaryLight]]; 	}
.BGTertiaryMid	  { background-color:[[ColorPalette::TertiaryMid]];	}
.BGTertiaryDark	  { background-color:[[ColorPalette::TertiaryDark]];	}
.BGError	  { background-color:[[ColorPalette::Error]];	 	}
.viewer ul {margin-top: 0; margin-bottom: 0;}
.viewer {text-align: justify;}
.viewer th {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::PrimaryMid]];}

.tagged { float:left !important; }
.tagged li { display:inline; }

/* Redéfinition des marges des titres de chapitre */
h1,h2,h3 {padding-bottom:1px; margin-top:0em;margin-bottom:0.3em;text-align: left;}

.firstletter{ float:left; width:0.7em; font-size:400%; font-family:times,arial; line-height:60%; }

.viewer { border:1px solid; padding:1em; -moz-border-radius:1em;  }

.TaggerBar {text-align:left; font-size:.1em;}

|Source|[[FND's DevPad|http://devpad.tiddlyspot.com/#SuppressEmptyTagsPlugin]]|
|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/]]|
|Description|suppress tagged box when tiddler is untagged|
!!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)
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);
		place.style.display = 'none';

!!![[La Société|La Société]]
    where 'tiddler.title.contains("La Société")'
    write '"<<showtoc [[" + tiddler.title + "]]>\>"'
!!![[Nos Services|Nos Services]]
    where 'tiddler.title.contains("Nos Services")'
    write '"<<showtoc [[" + tiddler.title + "]]>\>"'
!!![[Savoir faire|Notre savoir faire technique]]
    where 'tiddler.title.contains("Notre savoir faire technique")'
    write '"<<showtoc [[" + tiddler.title + "]]>\>"'
!!![[Nos succès|Nos succès]]
    where 'tiddler.title.contains("Nos succès")'
    write '"<<showtoc [[" + tiddler.title + "]]>\>"'

!Nos valeurs
!!![[Le mot des créateurs|Le mot des créateurs]]
    where 'tiddler.title.contains("Le mot des créateurs")'
    write '"<<showtoc [[" + tiddler.title + "]]>\>"'
!!![[Les fondateurs|Les fondateurs]]
    where 'tiddler.title.contains("Les fondateurs")'
    write '"<<showtoc [[" + tiddler.title + "]]>\>"'
!!![[Nos collaborateurs|L'équipe Aditamus]]
!!![[Contacts|Nous contacter]]
// based on Sweet Titles (c) Creative Commons 2005
// http://creativecommons.org/licenses/by-sa/2.5/
// Author: Dustin Diaz | http://www.dustindiaz.com
// Adapted to TW for tiddler previews by Saq Imtiaz
config.linkPreview ={
      tiddlyLinkPreview : true,
      externalLinkPreview : false,
      customTiddlerPreview : true

if (config.linkPreview.customTiddlerPreview)
    Tiddler.prototype.getSubtitle = function()
        return (this.text.length>0 ? this.text.substr(0,110) : "(no text)");

if (config.linkPreview.tiddlyLinkPreview)
    window.createTiddlyButton = function (theParent,theText,theTooltip,theAction,theClass,theId,theAccessKey)
        var theButton =  old_tiddlerPreview_createTiddlyButton.apply(this,arguments);
        if (theButton.className.indexOf('tiddlyLink')!=-1)
            theButton = setLinkPreview(theButton);
        return theButton;

function setLinkPreview (theButton)
     return theButton;

if (config.linkPreview.externalLinkPreview)
    window.createExternalLink =  function(place,url)
	    var theLink = old_tiddlerPreview_createExternalLink(place,url);
        theLink = setLinkPreview(theLink);

window.old_lewcid_pt_restart = restart;
restart = function()

window.refreshTiddlyLink = function(e,title)
	var i = getTiddlyLinkInfo(title,e.className);
	e.className = i.classes;
        if (!e.getAttribute('tip'))
	      e.title = i.subTitle;

setStylesheet("body div#toolTip { position:absolute;z-index:1000;width:220px;background:#000;border:2px double #fff;text-align:left;padding:5px;min-height:1em;-moz-border-radius:5px; }\n body div#toolTip p { margin:0;padding:2px;color:#fff;font:11px/12px  verdana,arial,sans-serif; font-weight:bold;  word-break:normal;display:block;overflow:hidden;}","linkPreviewStyles");

var sweetTitles = { 
	xCord : 0,								// @Number: x pixel value of current cursor position
	yCord : 0,								// @Number: y pixel value of current cursor position
	tipElements : ['a','abbr','acronym'],	// @Array: Allowable elements that can have the toolTip
	obj : Object,							// @Element: That of which you're hovering over
	tip : Object,							// @Element: The actual toolTip itself
	active : 0,								// @Number: 0: Not Active || 1: Active
	init : function() {
        this.tip = createTiddlyElement(document.getElementsByTagName('body')[0],"div","toolTip");
		this.tip.style.top = '0';
		this.tip.style.visibility = 'hidden';
	updateXY : function(e) {
        var theTarget = resolveTarget(e);
	    sweetTitles.xCord = findPosX(theTarget);
	    sweetTitles.yCord = findPosY(theTarget);
	tipOut: function() {
		if ( window.tID ) {
		if ( window.opacityID ) {
		sweetTitles.tip.style.visibility = 'hidden';
	tipOver : function(e) {
		sweetTitles.obj = this;
		tID = window.setTimeout("sweetTitles.tipShow()",500);
	tipShow : function() {		
		var scrX = Number(this.xCord);
		var scrY = Number(this.yCord);
		var tp = parseInt(scrY+15);
		var lt = parseInt(scrX+10);
		var anch = this.obj;
		this.tip.innerHTML = "<p>"+anch.getAttribute('tip')+"<em></em></p>";
        this.tip.style.left = ( parseInt(findWindowWidth()+findScrollX()) < parseInt(this.tip.offsetWidth+lt) )?  parseInt(lt-(this.tip.offsetWidth))+'px' : this.tip.style.left = lt+'px';
        this.tip.style.top =  ( parseInt(findWindowHeight()+findScrollY()) < parseInt(this.tip.offsetHeight+tp) ) ? parseInt(tp-(this.tip.offsetHeight+15))+'px': this.tip.style.top = tp+5+'px';
		this.tip.style.visibility = 'visible';
		this.tip.style.opacity = '.1';
	tipFade: function(opac) {
		var passed = parseInt(opac);
		var newOpac = parseInt(passed+10);
		if ( newOpac < 80 ) {
			this.tip.style.opacity = '.'+newOpac;
			this.tip.style.filter = "alpha(opacity:"+newOpac+")";
			opacityID = window.setTimeout("sweetTitles.tipFade('"+newOpac+"')",20);
		else { 
			this.tip.style.opacity = '.80';
			this.tip.style.filter = "alpha(opacity:80)";
{{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.
Le coeur de son moteur est basé sur du Javascript.

{{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.
La version 2.5.0 de TiddlyWiki est disponible depuis le 10 Mars 2009 en [[anglais|http://www.tiddlywiki.com]] et en [[français|http://www.tiddlywiki.fr]]

{{firstletter{@@color:#00F;T@@}}}[[iddlyWiki|TiddlyWiki]] est disponible en plusieurs langues, et son utilisation peut être agrémentée de nombreuses extensions . Pour en savoir plus, vous pouvez consulter :
* le site [[TiddlyWiki.com|http://www.tiddlywiki.com]] en anglais, la référence
* le site [[TiddlyWiki.fr|http://www.tiddlywiki.fr]] en français, avec une //excellente// traduction et des aides
* le site [[TiddlyTools.com|http://www.tiddlytools.com]] en anglais, avec de nombreuses extensions et plug-ins
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|Description|show/hide left sidebar (MainMenu)|

Usage: <<tiddler ToggleLeftSidebar with: "label">>

Config settings:
	config.options.chkShowLeftSidebar (true)
	config.options.txtToggleLeftSideBarLabelShow (►)
	config.options.txtToggleLeftSideBarLabelHide (◄)

%/<script label="$1" title="show/hide MainMenu content">
	var co=config.options;
	if (co.chkShowLeftSidebar=='undefined') co.chkShowLeftSidebar=true;
	var mm=document.getElementById('mainMenu'); if (!mm) return;
	var labelShow=co.txtToggleLeftSideBarLabelShow||'&#x25ba;';
	var labelHide=co.txtToggleLeftSideBarLabelHide||(config.browser.isSafari?'&#x25c0;':'&#x25c4;');
	if (typeof(place)!='undefined' && '$1'=='$'+'1') {
		place.title=(co.chkShowLeftSidebar?'hide':'show')+' left sidebar';
	var sm=document.getElementById('storyMenu'); if (sm) config.refreshers.content(sm);
	var co=config.options;
	if (co.chkShowLeftSidebar=='undefined') co.chkShowLeftSidebar=true;
	var mm=document.getElementById('mainMenu'); if (!mm) return;
	if ('$1'=='$'+'1') {
		var labelShow=co.txtToggleLeftSideBarLabelShow||'&#x25ba;';
		var labelHide=co.txtToggleLeftSideBarLabelHide||(config.browser.isSafari?'&#x25c0;':'&#x25c4;');
		place.lastChild.title=(co.chkShowLeftSidebar?'hide':'show')+' left sidebar';
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|Description|show/hide right sidebar (MainMenu)|

Usage: <<tiddler ToggleRightSidebar with: "label">>

Config settings:
	config.options.chkShowRightSidebar (true)
	config.options.txtToggleRightSideBarLabelShow (►)
	config.options.txtToggleRightSideBarLabelHide (◄)

%/<script label="$1" title="show/hide right sidebar content">
	var co=config.options;
	if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
	var sb=document.getElementById('sidebar'); if (!sb) return;
	var labelShow=co.txtToggleRightSideBarLabelShow||(config.browser.isSafari?'&#x25c0;':'&#x25c4;');
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25ba;';
	if (typeof(place)!='undefined' && '$1'=='$'+'1') {
		place.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
	var sm=document.getElementById('storyMenu'); if (sm) config.refreshers.content(sm);
	var co=config.options;
	if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
	var sb=document.getElementById('sidebar'); if (!sb) return;
	if ('$1'=='$'+'1') {
		var labelShow=co.txtToggleRightSideBarLabelShow||(config.browser.isSafari?'&#x25c0;':'&#x25c4;');
		var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25ba;';
		place.lastChild.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|Description|enable/disable 'one tiddler at a time' display mode|

Usage: <<tiddler ToggleSinglePageMode with: "label">>

%/<script label="$1" title="enable/disable 'one tiddler at a time' display mode">
	displayMessage('Single-page mode is: '+(config.options.chkSinglePageMode?'ON':'OFF'));
	/* sync option fields */
	var nodes = document.getElementsByTagName("input");
	for(var t=0; t<nodes.length; t++) 

	if ('$1'=='$'+'1') place.lastChild.innerHTML="Toggle 'one tiddler at a time' display";
<!-- LHO : MODIFIER : La barre d'outils d'édition / modification, à retirer quand la page est en mode livraison,
 il suffit de ajouter ou retirer le - - & g t ; juste apres le /LHO qui suit -->
<!-- /LHO 
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>

<!-- /LHO -->
<div class='title' macro='view title'></div>

<!-- LHO : on n'a pas besoin de savoir qui a écrit ce paragraphe une fois la page affichée
<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 class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class="viewer" macro="view text wikified"></div>
<div class='tagClear'></div>

//  LHO : MODIFIER : pour livraison (décommenter soit le mode edition, soit le mode livraison)
// Definitions et aides
    // config.options.chkShowRightSidebar=false; // barre de gauche selon booleen
    // readOnly=true;                            // mode lecture ou écriture selon booleen
    // config.options.chkBackstage=false;        // la barre de service est ouverte ou non
// Mode edition
 //  config.options.chkShowRightSidebar=true; readOnly=false; config.options.chkBackstage=true; // permuter selon le mode du fichier
// Mode livraison
   config.options.chkShowRightSidebar=false; readOnly=true; config.options.chkBackstage=false;  // permuter selon le mode du fichier
// Vérifier aussi la ToolbarCommands ViewTemplate
//  LHO : MODIFIER : fin des options pour livraison
// Fin d'options LHO

// LHO : 130103
// config.options.txtBackupFolder='twBCK';
// /LHO : 130103
// showBackstage=true;