Welcome to TiddlyWiki created by Jeremy Ruston; Copyright © 2004-2007 Jeremy Ruston, Copyright © 2007-2011 UnaMesa Association
/***
|Name|AdvancedOptionsPlugin|
|Source|http://www.TiddlyTools.com/#AdvancedOptionsPlugin|
|Documentation|http://www.TiddlyTools.com/#AdvancedOptionsPlugin|
|Version|1.2.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|automatically add plugin-defined options to the [[AdvancedOptions]] shadow tiddler|
!!!!!Usage
<<<
At document startup, this plugin examines each tiddler tagged with <<tag systemConfig>> and looks for a tiddler slice named "Options" whose value refers to a tiddler section (or separate tiddler) that contains an 'advanced options control panel' for configuring that plugin's features and behavior. For each plugin that contains an "Options" slice, a tabbed entry is automatically created in the [[AdvancedOptions]] shadow tiddler to display that plugin's control panel.
As an optional fallback for backward-compatibility with plugin tiddlers that do not define the "Options" slice, this plugin will also look for a section heading named "Configuration" within those tiddlers, so that older plugins that define this section can automatically have their settings added to the [[AdvancedOptions]] tiddler without requiring the "Options" slice to be added.
This plugin also extends the standard {{{<<option>>}}} macro syntax so you can directly set the internal value of a boolean or text option, without displaying a corresponding checkbox or input field control simply by appending {{{=value}}} syntax to the end of the option ID parameter:
{{{
<<option "txtSomeOption=some text">>
<<option chkSomeOtherOption=true>> OR <<option chkSomeOtherOption=false>>
}}}
Example: {{{<<option chkAnimate=false>>}}}
<<<
!!!!!Configuration
<<<
<<option chkAdvancedOptions>> automatically add plugin-defined options to the [[AdvancedOptions]] shadow tiddler
<<option chkAdvancedOptionsBackstage>> automatically add plugin-defined options to Backstage menu
<<option chkAdvancedOptionsFallback>> use <<option txtAdvancedOptionsFallback>> section as a fallback for plugins that don't define an ~AdvancedOptions slice
//note: these settings only take effect after reloading the document//
<<<
!!!!!Revisions
<<<
2009.07.23 [1.2.0] added support for enhanced {{{<<option id=value>>}}} 'direct assignment' syntax
2008.05.09 [1.1.0] add "options" panel to backstage
2008.04.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.AdvancedOptionsPlugin= {major: 1, minor: 2, revision: 0, date: new Date(2009,7,23)};
if (config.options.chkAdvancedOptions===undefined)
config.options.chkAdvancedOptions=true;
if (config.options.chkAdvancedOptionsBackstage===undefined)
config.options.chkAdvancedOptionsBackstage=true;
if (config.options.chkAdvancedOptionsFallback===undefined)
config.options.chkAdvancedOptionsFallback=true;
if (config.options.txtAdvancedOptionsFallback===undefined)
config.options.txtAdvancedOptionsFallback="Configuration";
if (config.optionsDesc) config.optionsDesc.chkAdvancedOptions=
"automatically add plugin-defined options to [[AdvancedOptions]]";
//}}}
//{{{
var items=[];
var fmt="[[%0 ]] [[view options for %0]] [[%1]]\n";
var section=config.options.txtAdvancedOptionsFallback;
var plugins=store.getTaggedTiddlers("systemConfig");
for (var p=0; p<plugins.length; p++) {
var tid=plugins[p].title;
var settings=store.getTiddlerSlice(tid,"Options");
if (!settings && config.options.chkAdvancedOptionsFallback && store.getTiddlerText(tid+"##"+section))
settings="##"+section; // fallback handling for older plugins
if (settings&&settings.length) {
if (settings.substr(0,2)=="##") settings=tid+settings;
items.push(fmt.format([tid,settings]));
}
}
if (items.length) config.shadowTiddlers.PluginOptions=
"!![[Plugin-defined options|PluginManager]]\n>@@text-align:left;<<tabs '' \n"+items.join(' ')+">>@@";
if (config.options.chkAdvancedOptions)
config.shadowTiddlers.AdvancedOptions+="{{smallform{{{wrap{<<tiddler PluginOptions>>}}}}}}";
//}}}
//{{{
// // add "options" backstage task
if (config.tasks && config.options.chkAdvancedOptionsBackstage) { // for TW2.2b3 or above
config.tasks.options = {
text: "options",
tooltip: "manage plugin-defined option settings",
content: "{{smallform{{{groupbox{{{wrap{<<tiddler PluginOptions>>}}}}}}\n{{groupbox small {<<options>>}}}}}}"
}
config.backstageTasks.splice(config.backstageTasks.indexOf("plugins")+1,0,"options");
}
//}}}
//{{{
config.macros.option.AOPsave_handler=config.macros.option.handler;
config.macros.option.handler=function(place,macroName,params,wikifier,paramString,tiddler) {
var parts=params[0].split('=');
if (parts.length==1) return this.AOPsave_handler.apply(this,arguments);
var id=parts[0]; var val=(id.substr(0,3)=='txt')?parts[1]:(parts[1]=='true');
config.options[id]=val;
}
//}}}
/***
|''Name:''|AnnotationsPlugin|
|''Description:''|Inline annotations for tiddler text.|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#AnnotationsPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.0|
|''Date:''||
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Usage:
*{{{((text to annotate(annotation goes here)))}}}
* To include the text being annotated, in the popup as a title, put {{{^}}} as the first letter of the annotation text.
** {{{((text to annotate(^annotation goes here)))}}}
!!Examples:
Mouse over, the text below:
* ((banana(the best fruit in the world)))
* ((banana(^ the best fruit in the world)))
***/
// /%
config.formatters.unshift({name:"annotations",match:"\\(\\(",lookaheadRegExp:/\(\((.*?)\((\^?)((?:.|\n)*?)\)\)\)/g,handler:function(w){
this.lookaheadRegExp.lastIndex=w.matchStart;
var _2=this.lookaheadRegExp.exec(w.source);
if(_2&&_2.index==w.matchStart){
var _3=createTiddlyElement(w.output,"span",null,"annosub",_2[1]);
_3.anno=_2[3];
if(_2[2]){
_3.subject=_2[1];
}
_3.onmouseover=this.onmouseover;
_3.onmouseout=this.onmouseout;
_3.ondblclick=this.onmouseout;
w.nextMatch=_2.index+_2[0].length;
}
},onmouseover:function(e){
popup=createTiddlyElement(document.body,"div",null,"anno");
this.popup=popup;
if(this.subject){
wikify("!"+this.subject+"\n",popup);
}
wikify(this.anno,popup);
addClass(this,"annosubover");
Popup.place(this,popup,{x:25,y:7});
},onmouseout:function(e){
removeNode(this.popup);
this.popup=null;
removeClass(this,"annosubover");
}});
setStylesheet(".anno{position:absolute;border:2px solid #000;background-color:#DFDFFF; color:#000;padding:0.5em;max-width:15em;width:expression(document.body.clientWidth > (255/12) *parseInt(document.body.currentStyle.fontSize)?'15em':'auto' );}\n"+".anno h1, .anno h2{margin-top:0;color:#000;}\n"+".annosub{background:#ccc;}\n"+".annosubover{z-index:25; background-color:#DFDFFF;cursor:help;}\n","AnnotationStyles");
// %/
/***
|Name|AttachFilePluginFormatters|
|Source|http://www.TiddlyTools.com/#AttachFilePluginFormatters|
|Version|4.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1.3|
|Type|plugin|
|Description|run-time library for displaying attachment tiddlers|
Runtime processing for //rendering// attachment tiddlers created by [[AttachFilePlugin]]. Attachment tiddlers are tagged with<<tag attachment>>and contain binary file content (e.g., jpg, gif, pdf, mp3, etc.) that has been stored directly as base64 text-encoded data or can be loaded from external files stored on a local filesystem or remote web server. Note: after creating new attachment tiddlers, you can remove [[AttachFilePlugin]], as long as you retain //this// tiddler (so that images can be rendered later on).
!!!!!Formatters
<<<
This plugin extends the behavior of the following TiddlyWiki core "wikify()" formatters:
* embedded images: {{{[img[tooltip|image]]}}}
* linked embedded images: {{{[img[tooltip|image][link]]}}}
* external/"pretty" links: {{{[[label|link]]}}}
''Please refer to AttachFilePlugin (source: http://www.TiddlyTools.com/#AttachFilePlugin) for additional information.''
<<<
!!!!!Revisions
<<<
2009.10.10 [4.0.1] in fileExists(), check for IE to avoid hanging Chrome during startup
2009.06.04 [4.0.0] changed attachment storage format to use //sections// instead of embedded substring markers.
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.10.29 [3.7.0] more code reduction: removed upload handling from AttachFilePlugin (saves ~7K!)
2007.10.28 [3.6.0] removed duplicate formatter code from AttachFilePlugin (saves ~10K!) and updated documentation accordingly. This plugin ([[AttachFilePluginFormatters]]) is now //''required''// in order to display attached images/binary files within tiddler content.
2006.05.20 [3.4.0] through 2007.03.01 [3.5.3] sync with AttachFilePlugin
2006.05.13 [3.2.0] created from AttachFilePlugin v3.2.0
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.AttachFilePluginFormatters= {major: 4, minor: 0, revision: 1, date: new Date(2009,10,10)};
//}}}
//{{{
if (config.macros.attach==undefined) config.macros.attach= { };
//}}}
//{{{
if (config.macros.attach.isAttachment==undefined) config.macros.attach.isAttachment=function (title) {
var tiddler = store.getTiddler(title);
if (tiddler==undefined || tiddler.tags==undefined) return false;
return (tiddler.tags.indexOf("attachment")!=-1);
}
//}}}
//{{{
// test for local file existence - returns true/false without visible error display
if (config.macros.attach.fileExists==undefined) config.macros.attach.fileExists=function(f) {
if(window.Components) { // MOZ
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(f); }
catch(e) { return false; } // invalid directory
return file.exists();
}
else if (config.browser.isIE) { // IE
var fso = new ActiveXObject("Scripting.FileSystemObject");
return fso.FileExists(f);
}
else return true; // other browsers: assume file exists
}
//}}}
//{{{
if (config.macros.attach.getAttachment==undefined) config.macros.attach.getAttachment=function(title) {
// extract embedded data, local and remote links (if any)
var text=store.getTiddlerText(title,'');
var embedded=store.getTiddlerText(title+'##data','').trim();
var locallink=store.getTiddlerText(title+'##file','').trim();
var remotelink=store.getTiddlerText(title+'##url','').trim();
// backward-compatibility for older attachments (pre 4.0.0)
var startmarker="---BEGIN_DATA---\n";
var endmarker="\n---END_DATA---";
var pos=0; var endpos=0;
if ((pos=text.indexOf(startmarker))!=-1 && (endpos=text.indexOf(endmarker))!=-1)
embedded="data:"+(text.substring(pos+startmarker.length,endpos)).replace(/\n/g,'');
if ((pos=text.indexOf("/%LOCAL_LINK%/"))!=-1)
locallink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));
if ((pos=text.indexOf("/%REMOTE_LINK%/"))!=-1)
remotelink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));
// if there is a data: URI defined (not supported by IE)
if (embedded.length && !config.browser.isIE) return embedded;
// document is being served remotely... use remote URL (if any) (avoids security alert)
if (remotelink.length && document.location.protocol!="file:")
return remotelink;
// local link only... return link without checking file existence (avoids security alert)
if (locallink.length && !remotelink.length)
return locallink;
// local link, check for file exist... use local link if found
if (locallink.length) {
locallink=locallink.replace(/^\.[\/\\]/,''); // strip leading './' or '.\' (if any)
if (this.fileExists(getLocalPath(locallink))) return locallink;
// maybe local link is relative... add path from current document and try again
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 (this.fileExists(getLocalPath(pathPrefix+locallink))) return locallink;
}
// no embedded data, no local (or not found), fallback to remote URL (if any)
if (remotelink.length) return remotelink;
// attachment URL doesn't resolve, just return input as is
return title;
}
//}}}
//{{{
if (config.macros.attach.init_formatters==undefined) config.macros.attach.init_formatters=function() {
if (this.initialized) return;
// find the formatter for "image" and replace the handler
for (var i=0; i<config.formatters.length && config.formatters[i].name!="image"; i++);
if (i<config.formatters.length) config.formatters[i].handler=function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) // Simple bracketted link
{
var e = w.output;
if(lookaheadMatch[5])
{
var link = lookaheadMatch[5];
// ELS -------------
var external=config.formatterHelpers.isExternalLink(link);
if (external)
{
if (config.macros.attach.isAttachment(link))
{
e = createExternalLink(w.output,link);
e.href=config.macros.attach.getAttachment(link);
e.title = config.macros.attach.linkTooltip + link;
}
else
e = createExternalLink(w.output,link);
}
else
e = createTiddlyLink(w.output,link,false,null,w.isStatic);
// ELS -------------
addClass(e,"imageLink");
}
var img = createTiddlyElement(e,"img");
if(lookaheadMatch[1])
img.align = "left";
else if(lookaheadMatch[2])
img.align = "right";
if(lookaheadMatch[3])
img.title = lookaheadMatch[3];
img.src = lookaheadMatch[4];
// ELS -------------
if (config.macros.attach.isAttachment(lookaheadMatch[4]))
img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);
// ELS -------------
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
//}}}
//{{{
// find the formatter for "prettyLink" and replace the handler
for (var i=0; i<config.formatters.length && config.formatters[i].name!="prettyLink"; i++);
if (i<config.formatters.length) {
config.formatters[i].handler=function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var e;
var text = lookaheadMatch[1];
if(lookaheadMatch[3]) {
// Pretty bracketted link
var link = lookaheadMatch[3];
if (config.macros.attach.isAttachment(link)) {
e = createExternalLink(w.output,link);
e.href=config.macros.attach.getAttachment(link);
e.title=config.macros.attach.linkTooltip+link;
}
else e = (!lookaheadMatch[2] && config.formatterHelpers.isExternalLink(link))
? createExternalLink(w.output,link)
: createTiddlyLink(w.output,link,false,null,w.isStatic);
} else {
e = createTiddlyLink(w.output,text,false,null,w.isStatic);
}
createTiddlyText(e,text);
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
} // if "prettyLink" formatter found
this.initialized=true;
}
//}}}
//{{{
config.macros.attach.init_formatters(); // load time init
//}}}
//{{{
if (TiddlyWiki.prototype.coreGetRecursiveTiddlerText==undefined) {
TiddlyWiki.prototype.coreGetRecursiveTiddlerText = TiddlyWiki.prototype.getRecursiveTiddlerText;
TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth) {
return config.macros.attach.isAttachment(title)?
config.macros.attach.getAttachment(title):this.coreGetRecursiveTiddlerText.apply(this,arguments);
}
}
//}}}
/***
Nic0, 9 septembre 2011
Ferme automatiquement la fenêtre popup qui apparaît, en autre quand on fait une sauvegarde.
La durée d'affichage est actuellement ajustée à 3000 millisecondes.
***/
//{{{
window.oldDisplayMessage = displayMessage;
displayMessage = function (text,linkText)
{ oldDisplayMessage(text,linkText);
setTimeout( 'clearMessage()', 5000 );}
//}}}
The tiddler 'AutoSave' doesn't yet exist. Double-click to create i
https://www.npr.org/sections/goatsandsoda/2017/06/28/534403083/mutant-strains-of-polio-vaccine-now-cause-more-paralysis-than-wild-polio?t=1586966884481
Peut-on se fier aux vaccins ?
https://www.economist.com/the-economist-explains/2018/12/19/what-is-vaccine-derived-polio
En Inde
gouvernement indien ont accusé les chercheurs financés par Gates d’avoir commis des violations éthiques généralisées :
http://164.100.47.5/newcommittee/reports/EnglishCommittees/Committee%20on%20Health%20and%20Family%20Welfare/72.pdf
L’affaire est maintenant devant la Cour suprême du pays.
https://www.ncbi.nlm.nih.gov/pubmed/12346214
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5360569/
https://www.aubedigitale.com/des-scientifiques-decouvrent-une-mutation-semblable-au-vih-qui-rend-le-coronavirus-extremement-infectieux/
https://petitions.whitehouse.gov/petition/we-call-investigations-bill-melinda-gates-foundation-medical-malpractice-crimes-against-humanity
https://www.wakingtimes.com/2020/04/09/robert-f-kennedy-jr-responds-to-bill-gates-statements-on-a-mandatory-coronavirus-vaccine/
Luc Montagnier
https://www.youtube.com/watch?time_continue=4&v=9ZTKo-ZWsjo&feature=emb_logo
Luc Montagnier, pour insérer une séquence du VIH dans ce génome, il faut des outils moléculaires, cela ne peut se faire qu’en laboratoire
https://www.facebook.com/CNEWSofficiel/videos/2552381368348552/
jugée par Face de Bouc comme partiellement fausse
https://www.zerohedge.com/geopolitical/comparison-lockdown-uk-non-lockdown-sweden
La violence, c'est un manque de vocabulaire. ^^Gilles Vigneault^^
----
Les modérés s’opposent toujours modérément à la violence. ^^Anatole France^^
----
La violence est une forme de faiblesse. ^^Dominique Rocheteau^^
----
Je ne peux pas admettre la violence, même contre la violence. ^^Roger Martin du Gard^^
----
La violence n'est pas le but. La violence est le moyen. ^^Georges Franju^^
----
La violence se donne toujours pour une contre-violence, c’est-à-dire pour une riposte à la violence de l’autre. ^^~Jean-Paul Sartre^^
----
La violence commence où la parole s'arrête. ^^Marek Halter^^
----
La violence est le dernier refuge de l'incompétence. ^^Isaac Asimov^^
----
La violence est une absence d'amour. ^^Bernard Giraudeau^^
----
La violence engendre la violence. C'est pourquoi la plupart des révolutions se sont perverties en dictatures. ^^Vaclav Havel^^
----
La non-violence est infiniment supérieure à la violence, le pardon est plus viril que le châtiment. Le pardon est la parure du soldat. ^^Gandhi^^
----
Il n'appartient à aucune religion de faire violence à une autre; un culte doit être embrassé par conviction et non par violence. ^^Tertullien^^
----
La violence, c'est pas toujours frappant, mais ça fait toujours mal. ^^Richard Leclerc^^
----
Les faibles ont recours à la violence en la pensant force. ^^Eric Hoffe^^
----
La violence, sous quelque forme qu’elle se manifeste, est un échec. ^^~Jean-Paul Sartre^^
----
La violence et la vérité ne peuvent rien l'une sur l'autre. ^^Blaise Pascal^^
----
Ce n'est pas la violence, mais le bien qui supprime le mal. ^^Léon Tolstoï^^
----
La propagande est aux démocraties ce que la violence est aux dictatures. ^^Noam Chomsky^^
----
La victoire obtenue par la violence équivaut à une défaite, car elle est momentanée. ^^Gandhi^^
----
La violence n’est pas un moyen parmi d’autres d’atteindre la fin, mais le choix délibéré d’atteindre la fin par n’importe quel moyen. ^^~Jean-Paul Sartre^^
----
Lorsque l'art entre dans une maison, la violence en sort. ^^Fernando Botero^^
----
Les hommes sont si bêtes qu'une violence répétée finit par leur paraître un droit. ^^Claude Adrien Helvétius^^
----
Aucune violence n'a jamais ajouté à la grandeur des hommes. ^^Jean Guéhenno^^
----
L'orgueil et la violence des forts ne cessent de recréer l'injustice. ^^Jean Guéhenno^^
----
La guerre est un acte de violence destiné à contraindre l’adversaire à exécuter notre volonté. ^^Carl von Clausewitz^^
----
La faiblesse personnelle est aussi dangereuse que la violence d'autrui. ^^Stanislaw Jerzy Lec^^
----
La violence à la télévision, ça donne envie de tout casser. Sauf, hélas, la télévision. ^^Philippe Geluck^^
----
La violence prétend être la solution d'un problème. C'est elle qui est un problème. ^^Friedrich Halke^^
----
Ce qui ne peut s'enseigner que par des coups et au prix de la violence ne portera que de mauvais fruits. ^^Martin Luther^^
----
L'ignorance mène à la peur, la peur mène à la haine et la haine conduit à la violence. Voilà l'équation. ^^Michael Moore^^
----
La tendresse est plus forte que la dureté, l'eau est plus forte que le rocher, l'amour est plus fort que la violence. ^^Hermann Hesse^^
----
La non-violence ne se réalise pas mécaniquement. Elle est la plus haute qualité du coeur et elle s'acquiert par la pratique. ^^Gandhi^^
----
La non-violence est une arme puissante et juste, qui tranche sans blesser et ennoblit l’homme qui la manie. C’est une épée qui guérit. ^^Martin Luther King^^
----
La violence n'est pas innée chez l'homme. Elle s'acquiert par l'éducation et la pratique sociale. ^^Françoise Héritier^^
----
La non-violence, sous sa forme active, consiste en une bienveillance envers tout ce qui existe. C'est l'amour pur. ^^Gandhi^^
----
C'est à celui qui domine sur les esprits par la force de la vérité, non à ceux qui font les esclaves par la violence, que nous devons nos respects. ^^Voltaire^^
----
Je m'oppose à la violence parce que lorsqu'elle semble produire le bien, le bien qui en résulte n'est que transitoire, tandis que le mal produit est permanent. ^^Gandhi^^
----
L'éducation est le seul vaccin contre la violence. ^^Edward James Olmos^^
----
Ceux qui ont recours à la violence deviennent sourds au langage de la raison et aveugles aux réalités qui témoignent de sa nuisance. ^^Logan Pearsall Smith^^
----
La vérité doit s'imposer sans violence. ^^Léon Tolstoï^^
----
La violence : une force faible. ^^Vladimir Jankélévitch^^
----
Si la non-violence est la loi de l'humanité, l'avenir appartient aux femmes. Qui peut faire appel au coeur des hommes avec plus d'efficacité que la femme ? ^^Gandhi^^
----
La violence verbale est la première étape de la violence générale contre les femmes. ^^Isabelle Alonso^^
----
On gagne plus par l'amitié et la modération que par la crainte. La violence peut avoir de l'effet sur les natures serviles, mais non sur les esprits indépendants. ^^Ben Jonson^^
----
L'humanité court à sa perte si le monde n'adopte pas la non-violence. ^^Gandhi^^
----
Le théâtre est le lieu où apparaissent violence et cruauté. Leur représentation doit servir à ce que l'horreur ne se reproduise pas. ^^Gérard Mortier^^
----
L'ignorance n'a pas de pudeur : elle a l'habitude très fréquente de suppléer par la violence et l'audace à ce qui lui manque naturellement. ^^Nicéphore Grégoras^^
----
Un seul mot peut avoir l’impact et la violence d’une gifle aussi puissante que si la main de son auteur l’avait véritablement mise. ^^Katia^^
----
La paix ne peut être obtenue par la violence, elle ne peut être atteinte que par la compréhension. ^^Rum Runner^^
----
Le refus de la violence, loin d'être passif, demande une énergie particulière. ^^Barbara Dening^^
----
La violence est injuste d'où qu'elle vienne. ^^~Jean-Paul Sartre^^
----
La violence, en s'épanouissant, produit un épi de malheur, qui ne fournit qu'une moisson de larmes. ^^Eschyle^^
----
La colère c'est la violence des faibles. ^^Grégoire Lacroix^^
----
À proportion que décroît la culture, la violence croît. ^^Thomas De Koninck^^
----
Soutenir la vérité par la violence, c'est lui prêter les armes du mensonge et de l'erreur. ^^~Louis-Philippe de Ségur^^
----
Le vrai courage est calme ; la violence n'en est jamais la preuve. ^^Anne Barratin^^
----
L'innocence est toujours calme sans violence. ^^~Marie-Joseph Chénier^^
----
Un geste d'humanité et de charité a parfois plus d'empire sur l'esprit de l'homme qu'une action marquée du sceau de la violence et de la cruauté. ^^Nicolas Machiavel^^
----
La violence peut faire taire, mais non persuader. ^^Anne Barratin^^
----
il n'y a aucune malédiction plus grande qu'une idée propagée par la violence. ^^Ezra Pound^^
----
La non-violence est la loi de notre espèce, tout comme la violence est la loi de l'animal. ^^Gandhi^^
----
La violence n'a pas de langage. ^^Gilbert Larocque^^
----
Plus fait douceur, que violence. ^^Jean De La Fontaine^^
----
La meilleure arme, c'est s'assoir et parler. ^^ Nelson Mandela^^
----
Un acte de justice et de douceur a souvent plus de pouvoir sur le coeur des hommes que la violence et la barbarie. ^^Nicolas Machiavel^^
----
La violence, sous quelque forme qu'elle se manifeste, est un échec. ^^~Jean-Paul Sartre^^
----
La non-violence est le summum du courage. ^^Mohandas Karamchand Gandhi^^
----
La violence est ce qui ne parle pas. ^^Gilles Deleuze^^
----
L'éducation est le seul vaccin contre la violence. ^^Edward James Olmos^^
----
C'est la colère refoulée qui donne naissance aux explosions de violence et non la colère gérée. ^^Claudia Rainville^^
----
La violence fascine les êtres moralement plus faibles. Un tyran l'emporte par son génie, mais son successeur sera toujours une franche canaille. ^^Albert Einstein^^
----
Face aux excès et à la violence dangereuse de la financiarisation d'une économie mondialisée, l'économie sociale prend tout son sens. ^^Philippe Mangin^^
----
La culpabilité engendre la peur. Et la peur conduit à la paranoïa. Finalement, la paranoïa mène à la violence. ^^Robert Ludlum^^
----
La violence est une faiblesse. ^^Sorj Chalandon^^
----
Il y a très peu de gens qui ont vraiment envie de faire passionnément quelque chose ; la violence devient un dérivatif. ^^Marguerite Yourcenar^^
----
Rien de vraiment bon ne peut germer de la violence, et le monde n’est transformé que par de calmes vérités. ^^Jeanne Galzy^^
----
Se serrer dans les bras, se caresser, fraternellement, régulièrement, permet de conjurer les haines et la violence. ^^Frédéric Chouraki^^
----
Répondre à l’agression par l’amour, c’était violenter la violence, lui plaquer sous le nez un miroir qui lui renvoie sa face haineuse, révulsée, laide, inacceptable. ^^~Eric-Emmanuel Schmitt^^
----
Si la violence est le déguisement favori de la peur, la haine est le masque de l'amour blessé. ^^Jacques Salomé^^.
----
La tendresse est plus forte que la dureté, que l'eau est plus forte que le rocher, que l'amour est plus fort que la violence. ^^Hermann Hesse^^
----
On passe sa vie à redouter la violence du monde extérieur, et on s’aperçoit qu’elle est en nous, pour finir. ^^Les kangourous - Dominique Barbéris^^
----
Hitler justifie son action en célébrant Jésus chassant les marchands du Temple, pendant que Martin Luther King légitime sa non-violence en citant lui aussi les Evangiles. ^^Michel Onfray^^
----
Ce qu'on trait avec douceur, est du lait. Ce qu'on presse avec violence, du sang. ^^Proverbe marocain^^
----
Les violences qu’on se fait pour s’empêcher d’aimer sont souvent plus cruelles que les rigueurs de ce qu’on aime. ^^La Rochefoucauld^^
----
Le vrai courage est calme ; la violence n'en est jamais la preuve. ^^Anne Barratin^^
----
La pensée de la violence, quand elle s'ajoute à l'image de la beauté, est celle qui peut le plus bouleverser un adolescent. ^^Les yeux d'Ezéchiel sont ouverts - Raymond Abellio^^
----
J'ai le sentiment que les différences de classe sociale ne sont pas justifiées et qu'elles ne reposent en fin de compte que sur la violence. ^^Albert Einstein^^
----
Nous ne pouvons nous opposer à la violence que si nous y renonçons. ^^Lech Walesa^^
----
Celui qui ne sait pas vivre avec charité et embrasser la douleur des autres est puni en ceci, qu'il sent avec une violence intolérable sa propre douleur. ^^Le métier de vivre -- César Pavese^^
----
Lorsque l'art entre dans une maison, la violence en sort. ^^Fernando Botero^^
----
On parle beaucoup de la violence ailleurs, de la pauvreté dans d’autres villes, mais on ne regarde pas ce qu’il y a autour de nous. ^^Carole Laure^^
----
Il parlait lentement, il pensait lentement, il expliquait lentement, il devait dormir lentement. Violence et colère étaient des sentiments trop rapides pour lui. ^^L'ami de mon père -- Frédéric Vitoux^^
----
Quel mérite as-tu d'avoir de riches parents, de gros bras, une grosse tête ou... c'est cela qui te donne le droit d'opresser? Telle est la question! ^^Michel Ayotte^^
/*{{{*/
Background: #FFF
Foreground: #000
PrimaryPale: #8CF
PrimaryLight: #18F
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #0FF
SecondaryLight: #0CC
SecondaryMid: #099
SecondaryDark: #066
TertiaryPale: #EEE
TertiaryLight: #CCC
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*}}}*/
config.macros.comment.fmt="__''%subject%''__\n^^posted par %who% on %when%^^\n<<<\n%message%\n<<<\n";
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='viewer' macro='notes heading:"Commentaire" tag:"Annotation" suffix:"--Attaché"'></div>
<div class='tagClear'></div>
<!--}}}-->
/***
|''Description:''|Cookie plugin for Treeview Plugin Usage: (persist: "cookie") means the state of the Treemenu persists and will remain where you left it between sessions.|
***/
/**
* Cookie plugin
*
* Copyright (c) 2006 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
/**
* Create a cookie with the given name and value and other optional parameters.
*
* @example $.cookie('the_cookie', 'the_value');
* @desc Set the value of a cookie.
* @example $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery.com', secure: true});
* @desc Create a cookie with all available options.
* @example $.cookie('the_cookie', 'the_value');
* @desc Create a session cookie.
* @example $.cookie('the_cookie', null);
* @desc Delete a cookie by passing null as value.
*
* @param String name The name of the cookie.
* @param String value The value of the cookie.
* @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
* @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
* If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
* If set to null or omitted, the cookie will be a session cookie and will not be retained
* when the the browser exits.
* @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
* @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
* @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
* require a secure protocol (like HTTPS).
* @type undefined
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
/**
* Get the value of a cookie with the given name.
*
* @example $.cookie('the_cookie');
* @desc Get the value of a cookie.
*
* @param String name The name of the cookie.
* @return The value of the cookie.
* @type String
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
jQuery.cookie = function(name, value, options) {
if (typeof value != 'undefined') { // name and value given, set cookie
options = options || {};
if (value === null) {
value = '';
options.expires = -1;
}
var expires = '';
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
var date;
if (typeof options.expires == 'number') {
date = new Date();
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
} else {
date = options.expires;
}
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
}
var path = options.path ? '; path=' + options.path : '';
var domain = options.domain ? '; domain=' + options.domain : '';
var secure = options.secure ? '; secure' : '';
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
} else { // only name given, get cookie
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
};
/***
|Name|CopyTiddlerPlugin|
|Source|http://www.TiddlyTools.com/#CopyTiddlerPlugin|
|Version|3.2.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|plugin|
|Description|Quickly create a copy of any existing tiddler|
!!!Usage
<<<
The plugin automatically updates the default (shadow) ToolbarCommands definitions to insert the ''copyTiddler'' command, which will appear as ''copy'' when a tiddler is rendered. If you are already using customized toolbar definitions, you will need to manually add the ''copyTiddler'' toolbar command to your existing ToolbarCommands tiddler, e.g.:
{{{
|EditToolbar|... copyTiddler ... |
}}}
When the ''copy'' command is selected, a new tiddler is created containing an exact copy of the current text/tags/fields, using a title of "{{{TiddlerName (n)}}}", where ''(n)'' is the next available number (starting with 1, of course). If you copy while //editing// a tiddler, the current values displayed in the editor are used (including any changes you may have already made to those values), and the new tiddler is immediately opened for editing.
The plugin also provides a macro that allows you to embed a ''copy'' command directly in specific tiddler content:
{{{
<<copyTiddler TidderName label:"..." prompt:"...">>
}}}
where
* ''TiddlerName'' (optional)<br>specifies the //source// tiddler to be copied. If omitted, the current containing tiddler (if any) will be copied.
* ''label:"..."'' (optional)<br>specifies text to use for the embedded link (default="copy TiddlerName")
* ''prompt:"..."'' (optional)<br>specifies mouseover 'tooltip' help text for link
//Note: to use non-default label/prompt values with the current containing tiddler, use "" for the TiddlerName//
<<<
!!!Configuration
<<<
<<option chkCopyTiddlerDate>> use date/time from existing tiddler (otherwise, use current date/time)
{{{<<option chkCopyTiddlerDate>>}}}
<<<
!!!Revisions
<<<
2010.11.30 3.2.6 use story.getTiddler()
2009.06.08 3.2.5 added option to use timestamp from source tiddler
2009.03.09 3.2.4 fixed IE-specific syntax error
2009.03.02 3.2.3 refactored code (again) to restore use of config.commands.copyTiddler.* custom settings
2009.02.13 3.2.2 in click(), fix calls to displayTiddler() to use current tiddlerElem and use getTiddlerText() to permit copying of shadow tiddler content
2009.01.30 3.2.1 fixed handling for copying field values when in edit mode
2009.01.23 3.2.0 refactored code and added {{{<<copyTiddler TiddlerName>>}}} macro
2008.12.18 3.1.4 corrected code for finding next (n) value when 'sparse' handling is in effect
2008.11.14 3.1.3 added optional 'sparse' setting (avoids 'filling in' missing numbers that may have been previously deleted)
2008.11.14 3.1.2 added optional 'zeroPad' setting
2008.11.14 3.1.1 moved hard-coded '(n)' regex into 'suffixPattern' object property so it can be customized
2008.09.26 3.1.0 changed new title generation to use '(n)' suffix instead of 'Copy of' prefix
2008.05.20 3.0.3 in handler, when copying from VIEW mode, create duplicate array from existing tags array before saving new tiddler.
2007.12.19 3.0.2 in handler, when copying from VIEW mode, duplicate custom fields before saving new tiddler.
2007.09.26 3.0.1 in handler, use findContainingTiddler(src) to get tiddlerElem (and title). Allows 'copy' command to find correct tiddler when transcluded using {{{<<tiddler>>}}} macro or enhanced toolbar inclusion (see [[CoreTweaks]])
2007.06.28 3.0.0 complete re-write to handle custom fields and alternative view/edit templates
2007.05.17 2.1.2 use store.getTiddlerText() to retrieve tiddler content, so that SHADOW tiddlers can be copied correctly when in VIEW mode
2007.04.01 2.1.1 in copyTiddler.handler(), fix check for editor fields by ensuring that found field actually has edit=='text' attribute
2007.02.05 2.1.0 in copyTiddler.handler(), if editor fields (textfield and/or tagsfield) can't be found (i.e., tiddler is in VIEW mode, not EDIT mode), then get text/tags values from stored tiddler instead of active editor fields. Allows use of COPY toolbar directly from VIEW mode
2006.12.12 2.0.0 completely rewritten so plugin just creates a new tiddler EDITOR with a copy of the current tiddler EDITOR contents, instead of creating the new tiddler in the STORE by copying the current tiddler values from the STORE.
2005.xx.xx 1.0.0 original version by Tim Morgan
<<<
!!!Code
***/
//{{{
version.extensions.CopyTiddlerPlugin= {major: 3, minor: 2, revision: 6, date: new Date(2010,11,30)};
// automatically tweak shadow EditTemplate to add 'copyTiddler' toolbar command (following 'cancelTiddler')
config.shadowTiddlers.ToolbarCommands=config.shadowTiddlers.ToolbarCommands.replace(/cancelTiddler/,'cancelTiddler copyTiddler');
if (config.options.chkCopyTiddlerDate===undefined) config.options.chkCopyTiddlerDate=false;
config.commands.copyTiddler = {
text: 'copy',
hideReadOnly: true,
tooltip: 'Make a copy of this tiddler',
notitle: 'this tiddler',
prefix: '',
suffixText: ' (%0)',
suffixPattern: / \(([0-9]+)\)$/,
zeroPad: 0,
sparse: false,
handler: function(event,src,title)
{ return config.commands.copyTiddler.click(src,event); },
click: function(here,ev) {
var tiddlerElem=story.findContainingTiddler(here);
var template=tiddlerElem?tiddlerElem.getAttribute('template'):null;
var title=here.getAttribute('from');
if (!title || !title.length) {
if (!tiddlerElem) return false;
else title=tiddlerElem.getAttribute('tiddler');
}
var root=title.replace(this.suffixPattern,''); // title without suffix
// find last matching title
var last=title;
if (this.sparse) { // don't fill-in holes... really find LAST matching title
var tids=store.getTiddlers('title','excludeLists');
for (var t=0; t<tids.length; t++) if (tids[t].title.startsWith(root)) last=tids[t].title;
}
// get next number (increment from last matching title)
var n=1; var match=this.suffixPattern.exec(last); if (match) n=parseInt(match[1])+1;
var newTitle=this.prefix+root+this.suffixText.format([String.zeroPad(n,this.zeroPad)]);
// if not sparse mode, find the next hole to fill in...
while (store.tiddlerExists(newTitle)||story.getTiddler(newTitle))
{ n++; newTitle=this.prefix+root+this.suffixText.format([String.zeroPad(n,this.zeroPad)]); }
if (!story.isDirty(title)) { // if tiddler is not being EDITED
// duplicate stored tiddler (if any)
var text=store.getTiddlerText(title,'');
var who=config.options.txtUserName;
var when=new Date();
var newtags=[]; var newfields={};
var tid=store.getTiddler(title); if (tid) {
if (config.options.chkCopyTiddlerDate) var when=tid.modified;
for (var t=0; t<tid.tags.length; t++) newtags.push(tid.tags[t]);
store.forEachField(tid,function(t,f,v){newfields[f]=v;},true);
}
store.saveTiddler(newTitle,newTitle,text,who,when,newtags,newfields,true);
story.displayTiddler(tiddlerElem,newTitle,template);
} else {
story.displayTiddler(tiddlerElem,newTitle,template);
var fields=config.commands.copyTiddler.gatherFields(tiddlerElem); // get current editor fields
var newTiddlerElem=story.getTiddler(newTitle);
for (var f=0; f<fields.length; f++) { // set fields in new editor
if (fields[f].name=='title') fields[f].value=newTitle; // rename title in new tiddler
var fieldElem=config.commands.copyTiddler.findField(newTiddlerElem,fields[f].name);
if (fieldElem) {
if (fieldElem.getAttribute('type')=='checkbox')
fieldElem.checked=fields[f].value;
else
fieldElem.value=fields[f].value;
}
}
}
story.focusTiddler(newTitle,'title');
return false;
},
findField: function(tiddlerElem,field) {
var inputs=tiddlerElem.getElementsByTagName('input');
for (var i=0; i<inputs.length; i++) {
if (inputs[i].getAttribute('type')=='checkbox' && inputs[i].field == field) return inputs[i];
if (inputs[i].getAttribute('type')=='text' && inputs[i].getAttribute('edit') == field) return inputs[i];
}
var tas=tiddlerElem.getElementsByTagName('textarea');
for (var i=0; i<tas.length; i++) if (tas[i].getAttribute('edit') == field) return tas[i];
var sels=tiddlerElem.getElementsByTagName('select');
for (var i=0; i<sels.length; i++) if (sels[i].getAttribute('edit') == field) return sels[i];
return null;
},
gatherFields: function(tiddlerElem) { // get field names and values from current tiddler editor
var fields=[];
// get checkboxes and edit fields
var inputs=tiddlerElem.getElementsByTagName('input');
for (var i=0; i<inputs.length; i++) {
if (inputs[i].getAttribute('type')=='checkbox')
if (inputs[i].field) fields.push({name:inputs[i].field,value:inputs[i].checked});
if (inputs[i].getAttribute('type')=='text')
if (inputs[i].getAttribute('edit')) fields.push({name:inputs[i].getAttribute('edit'),value:inputs[i].value});
}
// get textareas (multi-line edit fields)
var tas=tiddlerElem.getElementsByTagName('textarea');
for (var i=0; i<tas.length; i++)
if (tas[i].getAttribute('edit')) fields.push({name:tas[i].getAttribute('edit'),value:tas[i].value});
// get selection lists (droplist or listbox)
var sels=tiddlerElem.getElementsByTagName('select');
for (var i=0; i<sels.length; i++)
if (sels[i].getAttribute('edit')) fields.push({name:sels[i].getAttribute('edit'),value:sels[i].value});
return fields;
}
};
//}}}
// // MACRO DEFINITION
//{{{
config.macros.copyTiddler = {
label: 'copy',
prompt: 'Make a copy of %0',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var title=params.shift();
params=paramString.parseParams('anon',null,true,false,false);
var label =getParam(params,'label',this.label+(title?' '+title:''));
var prompt =getParam(params,'prompt',this.prompt).format([title||this.notitle]);
var b=createTiddlyButton(place,label,prompt,
function(ev){return config.commands.copyTiddler.click(this,ev)});
b.setAttribute('from',title||'');
}
};
//}}}
Background: #fff // @@color:#fff;Lettrage@@ @@background-color:#fff;Fond@@
Foreground: #000 // @@color:#000;Lettrage@@ @@background-color:#000;Fond@@
PrimaryPale: #8cf // @@color:#8cf;Lettrage@@ @@background-color:#8cf;Fond@@
PrimaryLight: #18f // @@color:#18f;Lettrage@@ @@background-color:#18f;Fond@@
PrimaryMid: #04b // @@color:#04b;Lettrage@@ @@background-color:#04b;Fond@@
PrimaryDark: #014 // @@color:#014;Lettrage@@ @@background-color:#014;Fond@@
SecondaryPale: #0ff // @@color:#0ff;Lettrage@@ @@background-color:#0ff;Fond@@
SecondaryLight: #0cc // @@color:#0cc;Lettrage@@ @@background-color:#0cc;Fond@@
SecondaryMid: #099 //@@color:#099;Lettrage@@ @@background-color:#099;Fond@@
SecondaryDark: #066 //@@color:#066;Lettrage@@ @@background-color:#066;Fond@@
TertiaryPale: #eee //@@color:#eee;Lettrage@@ @@background-color:#eee;Fond@@
TertiaryLight: #ccc //@@color:#ccc;Lettrage@@ @@background-color:#ccc;Fond@@
TertiaryMid: #999 //@@color:#999;Lettrage@@ @@background-color:#999;Fond@@
TertiaryDark: #666 //@@color:#666;Lettrage@@ @@background-color:#666;Fond@@
Error: #f88 //@@color:#f88;Lettrage@@ @@background-color:#f88;Fond@@
/***
|''Name:''|DeprecatedFunctionsPlugin|
|''Description:''|Support for deprecated functions removed from core|
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};
//--
//-- Deprecated code
//--
// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};
// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = 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 text = lookaheadMatch[1];
if(config.browser.isIE)
text = text.replace(/\n/g,"\r");
createTiddlyElement(w.output,"pre",null,null,text);
w.nextMatch = lookaheadRegExp.lastIndex;
}
};
// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
createTiddlyElement(place,"br");
};
// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
var i = this.indexOf(item);
return i == -1 ? null : i;
};
// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
return store.getLoader().internalizeTiddler(store,this,title,divRef);
};
// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
return store.getSaver().externalizeTiddler(store,this);
};
// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
return store.allTiddlersAsHtml();
}
// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
refreshPageTemplate(title);
}
// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
story.displayTiddlers(srcElement,titles,template,animate);
}
// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
story.displayTiddler(srcElement,title,template,animate);
}
// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;
// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");
}
//}}}
/***
|Name|FoldHeadingsPlugin|
|Source|http://www.TiddlyTools.com/#FoldHeadingsPlugin|
|Version|1.1.2|
|Author|Eric Shulman|
|Modifier|Michel Ayotte (Traduction)|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|automatically turn headings into slider-like panels that can be folded/unfolded with a single click|
This plugin defines a macro that automatically converts heading-formatted content into sliders that let you expand/collapse their content by clicking on individual headings.
!!!!!Usage
<<<
{{{
<<foldHeadings opened|closed tag tag tag...>>
}}}
where: ''opened'' or ''closed'' is a keyword indicating the initial state of the sections (default: opened), and ''tag tag tag...'' is an optional list of tags to match, so that the foldable effect is only applied to tiddlers that contain one (or more) of the indicated tags.
When you place the macro in a tiddler, any heading-formatted content (i.e, "!" through "!!!!!") in that tiddler will automatically become //'fold-able'//, allowing you to expand/collapse the content that follows each heading simply by clicking on that heading. Each content section begins with the first element following a heading, and continues until either another heading is found or the end of the tiddler is reached. For example:
{{{
<<foldHeadings closed>>
}}}
is embedded in ''this'' tiddler in order to make all the headings it contains 'fold-able'. Note that the macro has been placed at the //end// of the tiddler because it only operates on *rendered* content. Thus, only headings that //precede// it in the same tiddler will become fold-able, as any headings that //follow// it are not actually rendered until //after// the macro has been processed.
You can further limit the effect of the macro within the tiddler by surrounding several headings in a "CSS class wrapper" ("""{{classname{...}}}""") or other containing DOM element (e.g., """@@display:inline;...@@""") and then embedding the {{{<<foldHeadings>>}}} macro inside that container (at the end)... only those headings that are also within that container will be made fold-able, instead of converting ''all'' the headings in that tiddler.
Conversely, if you want the fold-able ability to apply to the headings in //all// tiddlers, ''without having to alter //any// of those individual tiddlers'', you can add the macro to the end of your [[ViewTemplate]], so that it will be invoked after the content in each tiddler has been rendered, causing all headings they contain to automatically become fold-able. For example:
{{{
<span macro="foldHeadings closed"></span>
}}}
You can also limit this effect to selected tiddlers by specifying one or more tags as additional macro parameters. For example:
{{{
<span macro="foldHeadings closed systemConfig"></span>
}}}
is only applied to headings contained in //plugin tiddlers// (i.e., tiddlers tagged with <<tag systemConfig>>), while headings in other tiddlers remain unaffected by the macro, even though it is embedded in the common [[ViewTemplate]] definition.
<<<
!!!!!Revisions
<<<
2009.11.30 [1.1.2] corrected CSS 'text-weight' to 'font-weight'
2009.01.06 [1.1.1] removed hijack of scrollToSection() (see [[SectionLinksPlugin]] for equivalent code)
2008.11.17 [1.1.0] added hijack of 'scrollToSection()' function (see [[CoreTweaks]] and http://trac.tiddlywiki.org/ticket/784)
2007.12.06 [1.0.2] fix handling for empty sections when checking for sliderPanel/floatingPanel
2007.12.02 [1.0.1] fix handling when content following a heading is already a sliderPanel/floatingPanel
2007.12.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.FoldHeadingsPlugin= {major: 1, minor: 1, revision: 2, date: new Date(2009,11,30)};
config.macros.foldHeadings = {
guideText: "opened|closed className",
showtip: "click to show '%0'",
hidetip: "click to hide '%0'",
showlabel: "plus...",
hidelabel: "[x]",
html: "<span style='float:right;font-weight:normal;font-size:80%;' class='TiddlyLinkExisting'>%0 </span>",
handler: function(place,macroName,params) {
var show=params[0] && params.shift().toLowerCase()!="closed";
if (params.length) { // if filtering by tag(s)
var here=story.findContainingTiddler(place);
if (here) var tid=store.getTiddler(here.getAttribute("tiddler"));
if (!tid || !tid.tags.containsAny(params)) return; // in a tiddler and not tagged... do nothing...
}
var elems=place.parentNode.getElementsByTagName("*");
var heads=[]; for (var i=0; i<elems.length; i++) { // get non-foldable heading elements
var n=elems[i].nodeName; var foldable=hasClass(elems[i],"foldable");
if ((n=="H1"||n=="H2"||n=="H3"||n=="H4"||n=="H5")&&!foldable)
heads.push(elems[i]);
}
for (var i=0; i<heads.length; i++) { var h=heads[i]; // for each heading element...
// find start/end of section content (up to next heading or end of content)
var start=end=h.nextSibling; while (end && end.nextSibling) {
var n=end.nextSibling.nodeName.toUpperCase();
if (n=="H1"||n=="H2"||n=="H3"||n=="H4"||n=="H5") break;
end=end.nextSibling;
}
if (start && hasClass(start,"sliderPanel")||hasClass(start,"floatingPanel")) continue; // heading is already a slider!
var span=createTiddlyElement(null,"span",null,"sliderPanel"); // create container
span.style.display=show?"inline":"none"; // set initial display state
h.parentNode.insertBefore(span,start); // and insert it following the heading element
// move section elements into container...
var e=start; while (e) { var next=e.nextSibling; span.insertBefore(e,null); if (e==end) break; e=next; }
// set heading label/tip/cursor...
h.title=(show?this.hidetip:this.showtip).format([h.textContent])
h.innerHTML=this.html.format([show?this.hidelabel:this.showlabel])+h.innerHTML;
h.style.cursor='pointer';
addClass(h,"foldable"); // so we know it been done (and to add extra styles)
h.onclick=function() {
var panel=this.nextSibling; var show=panel.style.display=="none";
// update panel display state
if (config.options.chkAnimate) anim.startAnimating(new Slider(panel,show));
else panel.style.display = show?"inline":"none";
// update heading label/tip
this.removeChild(this.firstChild); // remove existing label
var fh=config.macros.foldHeadings; // abbreviation for readability...
this.title=(show?fh.hidetip:fh.showtip).format([this.textContent])
this.innerHTML=fh.html.format([show?fh.hidelabel:fh.showlabel])+this.innerHTML;
}
}
}
}
if (story.scrollToSection) {
Story.prototype.foldheadings_scrollToSection=Story.prototype.scrollToSection;
Story.prototype.scrollToSection=function(title,section) {
var e=this.foldheadings_scrollToSection.apply(this,arguments);
// if scrolling to a folded section heading, click to expand it
if (e && hasClass(e,'foldable') && e.nextSibling.style.display=='none') e.onclick();
}
}
//}}}
// //<<foldHeadings closed>>
/***
|Name|FullScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#FullScreenPlugin|
|Version|1.1|
|Requires|~TW2.x|
!Description:
Toggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.
!Demo:
Click the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.
!Installation:
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.
!History:
*25-07-06: ver 1.1
*20-07-06: ver 1.0
!Code
***/
//{{{
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");
}
else
{
lewcidFullScreen = false;
setStylesheet(' ',"lewcidFullScreenStyle");
}
}
config.macros.fullscreen={};
config.macros.fullscreen.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
var label = params[0]||" ↕ ";
var tooltip = params[1]||"Fullscreen mode";
createTiddlyButton(place,label,tooltip,config.commands.fullscreen.handler);
}
var lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler =function(title,animate,slowly)
{
lewcid_fullscreen_closeTiddler.apply(this,arguments);
if (story.isEmpty() && lewcidFullScreen == true)
config.commands.fullscreen.handler();
}
Slider.prototype.lewcidStop = Slider.prototype.stop;
Slider.prototype.stop = function()
{
this.lewcidStop();
if (story.isEmpty() && lewcidFullScreen == true)
config.commands.fullscreen.handler();
}
//}}}
/***
|Name|HTMLFormattingPlugin|
|Source|http://www.TiddlyTools.com/#HTMLFormattingPlugin|
|Documentation|http://www.TiddlyTools.com/#HTMLFormattingPluginInfo|
|Version|2.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|embed wiki syntax formatting inside of HTML content|
The ~HTMLFormatting plugin allows you to ''mix wiki-style formatting syntax within HTML formatted content'' by extending the action of the standard TiddlyWiki formatting handler.
!!!!!Documentation
>see [[HTMLFormattingPluginInfo]]
!!!!!Configuration
<<<
Use {{{<hide linebreaks>}}} within HTML content to wiki-style rendering of line breaks. To //always// omit all line breaks from the rendered output, you can set this option:
><<option chkHTMLHideLinebreaks>> ignore all line breaks
which can also be 'hard coded' into your document by adding the following to a tiddler, tagged with <<tag systemConfig>>
>{{{config.options.chkHTMLHideLinebreaks=true;}}}
<<<
!!!!!Revisions
<<<
2010.05.07 2.4.1 added chkHTMLHideLinebreaks option
| see [[HTMLFormattingPluginInfo]] for additional revision details |
2005.06.26 1.0.0 Initial Release (as code adaptation - pre-dates TiddlyWiki plugin architecture!!)
<<<
!!!!!Code
***/
//{{{
version.extensions.HTMLFormattingPlugin= {major: 2, minor: 4, revision: 1, date: new Date(2010,5,7)};
// find the formatter for HTML and replace the handler
initHTMLFormatter();
function initHTMLFormatter()
{
for (var i=0; i<config.formatters.length && config.formatters[i].name!="html"; i++);
if (i<config.formatters.length) config.formatters[i].handler=function(w) {
if (!this.lookaheadRegExp) // fixup for TW2.0.x
this.lookaheadRegExp = new RegExp(this.lookahead,"mg");
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var html=lookaheadMatch[1];
// if <nowiki> is present, just let browser handle it!
if (html.indexOf('<nowiki>')!=-1)
createTiddlyElement(w.output,"span").innerHTML=html;
else {
// if <hide linebreaks> is present, or chkHTMLHideLinebreaks is set
// suppress wiki-style literal handling of newlines
if (config.options.chkHTMLHideLinebreaks||(html.indexOf('<hide linebreaks>')!=-1))
html=html.replace(/\n/g,' ');
// remove all \r's added by IE textarea and mask newlines and macro brackets
html=html.replace(/\r/g,'').replace(/\n/g,'\\n').replace(/<</g,'%%(').replace(/>>/g,')%%');
// create span, let browser parse HTML
var e=createTiddlyElement(w.output,"span"); e.innerHTML=html;
// then re-render text nodes as wiki-formatted content
wikifyTextNodes(e,w);
}
w.nextMatch = this.lookaheadRegExp.lastIndex; // continue parsing
}
}
}
// wikify #text nodes that remain after HTML content is processed (pre-order recursion)
function wikifyTextNodes(theNode,w)
{
function unmask(s) { return s.replace(/\%%\(/g,'<<').replace(/\)\%%/g,'>>').replace(/\\n/g,'\n'); }
switch (theNode.nodeName.toLowerCase()) {
case 'style': case 'option': case 'select':
theNode.innerHTML=unmask(theNode.innerHTML);
break;
case 'textarea':
theNode.value=unmask(theNode.value);
break;
case '#text':
var txt=unmask(theNode.nodeValue);
var newNode=createTiddlyElement(null,"span");
theNode.parentNode.replaceChild(newNode,theNode);
wikify(txt,newNode,highlightHack,w.tiddler);
break;
default:
for (var i=0;i<theNode.childNodes.length;i++)
wikifyTextNodes(theNode.childNodes.item(i),w); // recursion
break;
}
}
//}}}
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.2.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
!!!!!Usage
<<<
The extended image syntax is:
{{{
[img(w+,h+)[...][...]]
}}}
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
<<<
!!!!!Examples
<<<
{{{
[img(100px+,75px+)[images/meow2.jpg]]
}}}
[img(100px+,75px+)[images/meow2.jpg]]
{{{
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img( 1%+,+)[images/meow.gif]]
}}}
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img( 1%+,+)[images/meow.gif]]
{{tagClear{
}}}
<<<
!!!!!Revisions
<<<
2011.09.03 [1.2.3] bypass addStretchHandlers() if no '+' suffix is used (i.e., not resizable)
2010.07.24 [1.2.2] moved tip/dragtip text to config.formatterHelpers.imageSize object to enable customization
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 3, date: new Date(2011,9,3)};
//}}}
//{{{
var f=config.formatters[config.formatters.findByField("name","image")];
f.match="\\[[<>]?[Ii][Mm][Gg](?:\\([^,]*,[^\\)]*\\))?\\[";
f.lookaheadRegExp=/\[([<]?)(>?)[Ii][Mm][Gg](?:\(([^,]*),([^\)]*)\))?\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg;
f.handler=function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var floatLeft=lookaheadMatch[1];
var floatRight=lookaheadMatch[2];
var width=lookaheadMatch[3];
var height=lookaheadMatch[4];
var tooltip=lookaheadMatch[5];
var src=lookaheadMatch[6];
var link=lookaheadMatch[7];
// Simple bracketted link
var e = w.output;
if(link) { // LINKED IMAGE
if (config.formatterHelpers.isExternalLink(link)) {
if (config.macros.attach && config.macros.attach.isAttachment(link)) {
// see [[AttachFilePluginFormatters]]
e = createExternalLink(w.output,link);
e.href=config.macros.attach.getAttachment(link);
e.title = config.macros.attach.linkTooltip + link;
} else
e = createExternalLink(w.output,link);
} else
e = createTiddlyLink(w.output,link,false,null,w.isStatic);
addClass(e,"imageLink");
}
var img = createTiddlyElement(e,"img");
if(floatLeft) img.align="left"; else if(floatRight) img.align="right";
if(width||height) {
var x=width.trim(); var y=height.trim();
var stretchW=(x.substr(x.length-1,1)=='+'); if (stretchW) x=x.substr(0,x.length-1);
var stretchH=(y.substr(y.length-1,1)=='+'); if (stretchH) y=y.substr(0,y.length-1);
if (x.substr(0,2)=="{{")
{ try{x=eval(x.substr(2,x.length-4))} catch(e){displayMessage(e.description||e.toString())} }
if (y.substr(0,2)=="{{")
{ try{y=eval(y.substr(2,y.length-4))} catch(e){displayMessage(e.description||e.toString())} }
img.style.width=x.trim(); img.style.height=y.trim();
if (stretchW||stretchH) config.formatterHelpers.addStretchHandlers(img,stretchW,stretchH);
}
if(tooltip) img.title = tooltip;
// GET IMAGE SOURCE
if (config.macros.attach && config.macros.attach.isAttachment(src))
src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
if (config.browser.isIE || config.browser.isSafari) {
img.onerror=(function(){
this.src=config.formatterHelpers.resolvePath(this.src,false);
return false;
});
} else
src=config.formatterHelpers.resolvePath(src,true);
}
img.src=src;
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
config.formatterHelpers.imageSize={
tip: 'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size',
dragtip: 'DRAG=stretch/shrink, '
}
config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
e.title=((stretchW||stretchH)?this.imageSize.dragtip:'')+this.imageSize.tip;
e.statusMsg='width=%0, height=%1';
e.style.cursor='move';
e.originalW=e.style.width;
e.originalH=e.style.height;
e.minW=Math.max(e.offsetWidth/20,10);
e.minH=Math.max(e.offsetHeight/20,10);
e.stretchW=stretchW;
e.stretchH=stretchH;
e.onmousedown=function(ev) { var ev=ev||window.event;
this.sizing=true;
this.startX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
this.startY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
this.startW=this.offsetWidth;
this.startH=this.offsetHeight;
return false;
};
e.onmousemove=function(ev) { var ev=ev||window.event;
if (this.sizing) {
var s=this.style;
var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
}
return false;
};
e.onmouseup=function(ev) { var ev=ev||window.event;
if (ev.shiftKey) { this.style.width=this.style.height=''; }
if (ev.ctrlKey) { this.style.width=this.originalW; this.style.height=this.originalH; }
this.sizing=false;
clearMessage();
return false;
};
e.onmouseout=function(ev) { var ev=ev||window.event;
this.sizing=false;
clearMessage();
return false;
};
}
//}}}
/***
|Name|ImportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.6.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|interactive controls for import/export with filtering.|
Combine tiddlers from any two TiddlyWiki documents. Interactively select and copy tiddlers from another TiddlyWiki source document. Includes prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles. When done, a list of all imported tiddlers is written into [[ImportedTiddlers]].
!!!!!Documentation
<<<
see [[ImportTiddlersPluginInfo]] for details
<<<
!!!!!interactive control panel
<<<
<<importTiddlers inline>>
{{clear{
^^(see also: [[ImportTiddlers]] shadow tiddler)^^}}}
<<<
!!!!!Revisions
<<<
2011.02.14 4.6.2 fix OSX error: use picker.file.path
2009.10.10 4.6.1 in createImportPanel, Use {{{window.Components}}} instead of {{{config.browser.isGecko}}} to avoid applying FF3 'file browse' fixup in Chrome.
2009.10.06 4.6.0 added createTiddlerFromFile (import text files)
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 1.0.0 Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImportTiddlersPlugin= {major: 4, minor: 6, revision: 2, date: new Date(2011,2,14)};
// IE needs explicit global scoping for functions/vars called from browser events
window.onClickImportButton=onClickImportButton;
window.refreshImportList=refreshImportList;
// default cookie/option values
if (!config.options.chkImportReport) config.options.chkImportReport=true;
// default shadow definition
config.shadowTiddlers.ImportTiddlers='<<importTiddlers inline>>';
// use shadow tiddler content in backstage panel
if (config.tasks) config.tasks.importTask.content='<<tiddler ImportTiddlers>>' // TW2.2 or above
//}}}
//{{{
// backward-compatiblity for TW2.0.x and TW1.2.x
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={};
if (typeof merge=='undefined') {
function merge(dst,src,preserveExisting) {
for(var i in src) { if(!preserveExisting || dst[i] === undefined) dst[i] = src[i]; }
return dst;
}
}
if (config.browser.isGecko===undefined)
config.browser.isGecko=(config.userAgent.indexOf('gecko')!=-1);
//}}}
//{{{
merge(config.macros.importTiddlers,{
$: function(id) { return document.getElementById(id); }, // abbreviation
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',
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',
doneText: 'done',
startText: 'import',
stopText: 'stop',
local: true, // default to import from local file
src: '', // path/filename or URL of document to import (retrieved from SiteUrl)
proxy: '', // URL for remote proxy script (retrieved from SiteProxy)
useProxy: false, // use specific proxy script in front of remote URL
inbound: null, // hash-indexed array of tiddlers from other document
newTags: '', // text of tags added to imported tiddlers
addTags: true, // add new tags to imported tiddlers
listsize: 10, // # 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
});
//}}}
//{{{
// hijack core macro handler
if (config.macros.importTiddlers.coreHandler==undefined)
config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.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)
config.macros.importTiddlers.coreHandler.apply(this,arguments);
else
createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);
} else if (params[0]=='link') { // show link to floating panel
createTiddlyButton(place,params[1]||this.label,params[2]||this.prompt,onClickImportMenu);
} else if (params[0]=='inline') {// show panel as INLINE tiddler content
createImportPanel(place);
this.$('importPanel').style.position='static';
this.$('importPanel').style.display='block';
} 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) { var e=e||window.event;
var parent=resolveTarget(e).parentNode;
var panel=document.getElementById('importPanel');
if (panel==undefined || panel.parentNode!=parent) panel=createImportPanel(parent);
var isOpen=panel.style.display=='block';
if(config.options.chkAnimate)
anim.startAnimating(new Slider(panel,!isOpen,false,'none'));
else
panel.style.display=isOpen?'none':'block';
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
}
//}}}
//{{{
// Create control panel: HTML, CSS
function createImportPanel(place) {
var cmi=config.macros.importTiddlers; // abbrev
var panel=cmi.$('importPanel');
if (panel) { panel.parentNode.removeChild(panel); }
setStylesheet(store.getTiddlerText('ImportTiddlersPlugin##css'),'importTiddlers');
panel=createTiddlyElement(place,'span','importPanel',null,null)
panel.innerHTML=store.getTiddlerText('ImportTiddlersPlugin##html');
refreshImportList();
if (!cmi.src.length) cmi.src=store.getTiddlerText('SiteUrl')||'';
cmi.$('importSourceURL').value=cmi.src;
if (!cmi.proxy.length) cmi.proxy=store.getTiddlerText('SiteProxy')||'SiteProxy';
cmi.$('importSiteProxy').value=cmi.proxy;
if (window.Components) { // FF3 FIXUP
cmi.$('fileImportSource').style.display='none';
cmi.$('importLocalPanelFix').style.display='block';
}
cmi.$('chkSync').checked=cmi.sync;
cmi.$('chkImportTags').checked=cmi.importTags;
cmi.$('chkKeepTags').checked=cmi.keepTags;
cmi.$('chkAddTags').checked=cmi.addTags;
cmi.$('txtNewTags').value=cmi.newTags;
cmi.$('txtNewTags').style.display=cmi.addTags?'block':'none';
cmi.$('chkSync').checked=cmi.sync;
cmi.$('chkImportReport').checked=config.options.chkImportReport;
return panel;
}
//}}}
//{{{
// process control interactions
function onClickImportButton(which,event) {
var cmi=config.macros.importTiddlers; // abbreviation
var list=cmi.$('importList'); if (!list) return false;
var thePanel=cmi.$('importPanel');
var theCollisionPanel=cmi.$('importCollisionPanel');
var theNewTitle=cmi.$('importNewTitle');
var count=0;
switch (which.id)
{
case 'importFromFile': // show local panel
case 'importFromWeb': // show HTTP panel
cmi.local=(which.id=='importFromFile');
cmi.showPanel('importLocalPanel',cmi.local);
cmi.showPanel('importHTTPPanel',!cmi.local);
break;
case 'importOptions': // show/hide options panel
cmi.showPanel('importOptionsPanel',cmi.$('importOptionsPanel').style.display=='none');
break;
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
cmi.loadRemoteFile(cmi.src,cmi.filterTiddlerList);
break;
case 'importSelectFeed': // select a pre-defined systemServer feed URL
var p=Popup.create(which); if (!p) return false;
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;
createTiddlyButton(createTiddlyElement(p,'li'),tids[t].title,d,
function(){
var u=this.getAttribute('url');
document.getElementById('importSourceURL').value=u;
config.macros.importTiddlers.src=u;
document.getElementById('importLoad').onclick();
},
null,null,null,{url:u});
}
Popup.show();
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
// create popup with feed list
// onselect, insert feed URL into input field.
break;
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;
list.options[t].selected=true;
count++;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
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++) {
list.options[t].selected=false;
if (list.options[t].value=='') continue;
list.options[t].selected=!store.tiddlerExists(list.options[t].value);
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
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++) {
list.options[t].selected=false;
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
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
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++) {
list.options[t].selected=false;
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
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importApplyFilter': // filter list to include only matching tiddlers
importReport(); // if an import was in progress, generate a report
clearMessage();
if (!cmi.all) // no tiddlers loaded = '0 selected'
{ displayMessage(cmi.countMsg.format([0])); return false; }
var hash=cmi.$('importLastFilter').value;
cmi.inbound=cmi.filterByHash('#'+hash,cmi.all);
refreshImportList(); // reset/resize the listbox
break;
case 'importStart': // initiate the import processing
importReport(); // if an import was in progress, generate a report
cmi.$('importApplyToAll').checked=false;
cmi.$('importStart').value=cmi.stopText;
if (cmi.index>0) cmi.index=-1; // stop processing
else cmi.index=importTiddlers(0); // or begin processing
importStopped();
break;
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
break;
case 'importSkip': // don't import the tiddler
cmi.lastAction=which;
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
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index+1); // resume with NEXT item
importStopped();
break;
case 'importRename': // change name of imported tiddler
cmi.lastAction=which;
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
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with THIS item
importStopped();
break;
case 'importMerge': // join existing and imported tiddler content
cmi.lastAction=which;
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.set(null,theText,null,theDate,theTags);
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;
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with this item
importStopped();
break;
case 'importReplace': // substitute imported tiddler for existing tiddler
cmi.lastAction=which;
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;
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with THIS item
importStopped();
break;
case 'importListSmaller': // decrease current listbox size, minimum=5
if (list.options.length==1) break;
list.size-=(list.size>5)?1:0;
cmi.listsize=list.size;
break;
case 'importListLarger': // increase current listbox size, maximum=number of items in list
if (list.options.length==1) break;
list.size+=(list.size<list.options.length)?1:0;
cmi.listsize=list.size;
break;
case 'importListMaximize': // toggle listbox size between current and maximum
if (list.options.length==1) break;
list.size=(list.size==list.options.length)?cmi.listsize:list.options.length;
break;
}
}
//}}}
//{{{
config.macros.importTiddlers.showPanel=function(place,show,skipAnim) {
if (typeof place=='string') var place=document.getElementById(place);
if (!place||!place.style) return;
if(!skipAnim && anim && config.options.chkAnimate) anim.startAnimating(new Slider(place,show,false,'none'));
else place.style.display=show?'block':'none';
}
//}}}
//{{{
function refreshImportList(selectedIndex) {
var cmi=config.macros.importTiddlers; // abbrev
var list=cmi.$('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);
list.size=cmi.listsize;
cmi.$('importLoad').disabled=false;
cmi.$('importLoad').style.display='inline';
cmi.$('importStart').disabled=true;
cmi.$('importOptions').disabled=true;
cmi.$('importOptions').style.display='none';
cmi.$('fileImportSource').disabled=false;
cmi.$('importFromFile').disabled=false;
cmi.$('importFromWeb').disabled=false;
cmi.$('importStart').value=cmi.startText;
cmi.$('importClose').value=cmi.doneText;
cmi.$('importSelectPanel').style.display='none';
cmi.$('importOptionsPanel').style.display='none';
return;
}
// there are inbound tiddlers loaded...
cmi.$('importLoad').disabled=true;
cmi.$('importLoad').style.display='none';
cmi.$('importOptions').style.display='inline';
cmi.$('importOptions').disabled=false;
cmi.$('fileImportSource').disabled=true;
cmi.$('importFromFile').disabled=true;
cmi.$('importFromWeb').disabled=true;
cmi.$('importClose').value=cmi.closeText;
if (cmi.$('importSelectPanel').style.display=='none')
cmi.showPanel('importSelectPanel',true);
// 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!='')
count+=1;
else { // if heading is selected, deselect it, and then select and count all in section
list.options[t].selected=false;
for ( t++; t<list.options.length && list.options[t].value!=''; t++) {
list.options[t].selected=true;
count++;
}
}
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
}
cmi.$('importStart').disabled=!count;
if (selectedIndex>3) return; // no refresh needed
// 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]);
else
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);
break;
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);
}
break;
case 'tags':
var theTitles = {}; // all tiddler titles, hash indexed by tag value
var theTags = new Array();
for(var t=0; t<tiddlers.length; t++) {
var title=tiddlers[t].title;
var tags=tiddlers[t].tags;
if (!tags || !tags.length) {
if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
theTitles['untagged'].push(title);
}
else for(var s=0; s<tags.length; s++) {
if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
theTitles[tags[s]].push(title);
}
}
theTags.sort();
for(var tagindex=0; tagindex<theTags.length; tagindex++) {
var theTag=theTags[tagindex];
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);
}
break;
}
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; // abbrev
if (!cmi.inbound) return -1;
var list=cmi.$('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++)
cmi.inbound[t].status='';
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)==''))
continue;
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')
continue;
// don't import the 'ImportedTiddlers' history from the other document...
if (inbound.title=='ImportedTiddlers')
continue;
// 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
inbound.set(null,null,null,null,newTags.trim());
// set the status to 'added' (if not already set by the 'ask the user' UI)
inbound.status=(inbound.status=='')?'added':inbound.status;
// set sync fields
if (cmi.sync) {
if (!inbound.fields) inbound.fields={}; // for TW2.1.x backward-compatibility
inbound.fields['server.page.revision']=inbound.modified.convertToYYYYMMDDHHMM();
inbound.fields['server.type']='file';
inbound.fields['server.host']=(cmi.local&&!cmi.src.startsWith('file:')?'file:///':'')+cmi.src;
}
// do the import!
store.suspendNotifications();
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)
store.resumeNotifications();
}
return(-1); // signals that we really finished the entire list
}
function importStopped() {
var cmi=config.macros.importTiddlers; // abbrev
var list=cmi.$('importList'); if (!list) return;
var theNewTitle=cmi.$('importNewTitle');
if (cmi.index==-1){
cmi.$('importStart').value=cmi.startText;
importReport(); // import finished... generate the report
} else {
// import collision...
// show the collision panel and set the title edit field
cmi.$('importStart').value=cmi.stopText;
cmi.showPanel('importCollisionPanel',true);
theNewTitle.value=list.options[cmi.index].value;
if (cmi.$('importApplyToAll').checked && cmi.lastAction && cmi.lastAction.id!='importRename')
onClickImportButton(cmi.lastAction);
}
}
//}}}
//{{{
function importReport() {
var cmi=config.macros.importTiddlers; // abbrev
if (!cmi.inbound) return;
// if import was not completed, the collision panel will still be open... close it now.
var panel=cmi.$('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++;
total++;
}
// 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);
story.displayTiddler(null,theReport.title,1,null,null,false);
story.refreshTiddler(theReport.title,1,true);
}
// 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.askForFilename=function(here) {
var msg=here.title; // use tooltip as dialog box message
var path=getLocalPath(document.location.href);
var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\');
if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
var file='';
var result='';
if(window.Components) { // moz
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, nsIFilePicker.modeOpen);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension='html';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.path;
}
catch(e) { alert('error during local file access: '+e.toString()) }
}
else { // IE
try { // XPSP2 IE only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
s.FilterIndex=3; // default to HTML files;
s.InitialDir=path;
s.FileName=file;
if (s.showOpen()) var result=s.FileName;
}
catch(e) { // fallback
var result=prompt(msg,path+file);
}
}
return result;
}
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)
clearMessage();
displayMessage(this.openMsg.format([src.replace(/%20/g,' ')]));
if (src.substr(0,5)!='http:' && src.substr(0,5)!='file:') { // if not a URL, read from local filesystem
var txt=loadFile(src);
if (!txt) { // file didn't load, 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);
src=pathPrefix+src;
if (pathPrefix.substr(0,5)!='http:') src=getLocalPath(src);
var txt=loadFile(src);
}
if (!txt) { // file still didn't load, report error
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 (version.major+version.minor*.1+version.revision*.01!=2.52) txt=convertUTF8ToUnicode(txt);
if (callback) callback(true,original,txt,src,null);
}
} else {
doHttp('GET',src,null,null,config.options.txtRemoteUsername,config.options.txtRemotePassword,callback,original,null);
}
}
config.macros.importTiddlers.readTiddlersFromHTML=function(html){
var remoteStore=new TiddlyWiki();
remoteStore.importTiddlyWiki(html);
return remoteStore.getTiddlers('title');
}
config.macros.importTiddlers.readTiddlersFromCSV=function(CSV){
var remoteStore=new TiddlyWiki();
// GET NAMES
var lines=CSV.replace(/\r/g,'').split('\n');
var names=lines.shift().replace(/"/g,'').split(',');
CSV=lines.join('\n');
// ENCODE commas and newlines within quoted values
var comma='!~comma~!'; var commaRE=new RegExp(comma,'g');
var newline='!~newline~!'; var newlineRE=new RegExp(newline,'g');
CSV=CSV.replace(/"([^"]*?)"/g,
function(x){ return x.replace(/\,/g,comma).replace(/\n/g,newline); });
// PARSE lines
var lines=CSV.split('\n');
for (var i=0; i<lines.length; i++) { if (!lines[i].length) continue;
var values=lines[i].split(',');
// DECODE commas, newlines, and doubled-quotes, and remove enclosing quotes (if any)
for (var v=0; v<values.length; v++)
values[v]=values[v].replace(commaRE,',').replace(newlineRE,'\n')
.replace(/^"|"$/g,'').replace(/""/g,'"');
// EXTRACT tiddler values
var title=''; var text=''; var tags=[]; var fields={};
var created=null; var when=new Date(); var who=config.options.txtUserName;
for (var v=0; v<values.length; v++) { var val=values[v];
if (names[v]) switch(names[v].toLowerCase()) {
case 'title': title=val.replace(/\[\]\|/g,'_'); break;
case 'created': created=new Date(val); break;
case 'modified':when=new Date(val); break;
case 'modifier':who=val; break;
case 'text': text=val; break;
case 'tags': tags=val.readBracketedList(); break;
default: fields[names[v].toLowerCase()]=val; break;
}
}
// CREATE tiddler in temporary store
if (title.length)
remoteStore.saveTiddler(title,title,text,who,when,tags,fields,true,created||when);
}
return remoteStore.getTiddlers('title');
}
config.macros.importTiddlers.createTiddlerFromFile=function(src,txt) {
var t=new Tiddler();
var pos=src.lastIndexOf("/"); if (pos==-1) pos=src.lastIndexOf("\\");
t.title=pos==-1?src:src.substr(pos+1);
t.text=txt;
t.created=t.modified=new Date();
t.modifier=config.options.txtUserName;
if (src.substr(src.length-3,3)=='.js') t.tags=['systemConfig'];
return [t];
}
config.macros.importTiddlers.filterTiddlerList=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);
if (!cmi.all||!cmi.all.length) cmi.all=cmi.readTiddlersFromCSV(txt)
if (!cmi.all||!cmi.all.length) cmi.all=cmi.createTiddlerFromFile(src,txt)
var count=cmi.all?cmi.all.length:0;
var querypos=src.lastIndexOf('?'); if (querypos!=-1) src=src.substr(0,querypos);
displayMessage(cmi.foundMsg.format([count,src]));
cmi.inbound=cmi.filterByHash(params,cmi.all); // use full URL including hash (if any)
cmi.$('importLastFilter').value=cmi.lastFilter;
window.refreshImportList(0);
}
config.macros.importTiddlers.filterByHash=function(src,tiddlers){
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':
tids.pushUnique(params[p].value);
break;
case 'tag':
if (store.getMatchingTiddlers) { // for boolean expressions - see MatchTagsPlugin
var r=store.getMatchingTiddlers(params[p].value,null,tiddlers);
for (var t=0; t<r.length; t++) tids.pushUnique(r[t].title);
} else for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].isTagged(params[p].value))
tids.pushUnique(tiddlers[t].title);
break;
case 'story':
for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].title==params[p].value) {
tiddlers[t].changed();
for (var s=0; s<tiddlers[t].links.length; s++)
tids.pushUnique(tiddlers[t].links[s]);
break;
}
break;
case 'search':
for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].text.indexOf(params[p].value)!=-1)
tids.pushUnique(tiddlers[t].title);
break;
}
}
var matches=[];
for (var t=0; t<tiddlers.length; t++)
if (tids.contains(tiddlers[t].title))
matches.push(tiddlers[t]);
displayMessage(config.macros.importTiddlers.filterMsg.format([matches.length,hash]));
config.macros.importTiddlers.lastFilter=hash;
return matches;
}
//}}}
/***
!!!Control panel CSS
//{{{
!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;-webkit-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:100%;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 #000; background-color:#eee; padding:3px 5px; margin-bottom:5px; -moz-border-radius:5px;-webkit-border-radius:5px;}
#importPanel .topline { border-top:1px solid #999; padding-top:2px; margin-top:2px; }
#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:23%; }
#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 }
#backstagePanel #importPanel { left:10%; right:auto; }
!end
//}}}
!!!Control panel HTML
//{{{
!html
<!-- source and report -->
<table><tr><td align=left>
import from
<input type="radio" class="rad" name="importFrom" id="importFromFile" value="file" CHECKED
onclick="onClickImportButton(this,event)" title="show file controls"> local file
<input type="radio" class="rad" name="importFrom" id="importFromWeb" value="http"
onclick="onClickImportButton(this,event)" title="show web controls"> web server
</td><td align=right>
<input type=checkbox class="chk" id="chkImportReport"
onClick="config.options['chkImportReport']=this.checked;"> create report
</td></tr></table>
<div class="box" id="importSourcePanel" style="margin:.5em">
<div id="importLocalPanel" style="display:block;margin-bottom:2px;"><!-- import from local file -->
enter or browse for source path/filename<br>
<input type="file" id="fileImportSource" size=57 style="width:100%"
onKeyUp="config.macros.importTiddlers.src=this.value"
onChange="config.macros.importTiddlers.src=this.value;document.getElementById('importLoad').onclick()">
<div id="importLocalPanelFix" style="display:none"><!-- FF3 FIXUP -->
<input type="text" id="fileImportSourceFix" style="width:90%"
title="Enter a path/file to import"
onKeyUp="config.macros.importTiddlers.src=this.value"
onChange="config.macros.importTiddlers.src=this.value;document.getElementById('importLoad').onclick()">
<input type="button" id="fileImportSourceFixButton" style="width:7%" value="..."
title="Select a path/file to import"
onClick="var r=config.macros.importTiddlers.askForFilename(this); if (!r||!r.length) return;
document.getElementById('fileImportSourceFix').value=r;
config.macros.importTiddlers.src=r;
document.getElementById('importLoad').onclick()">
</div><!--end FF3 FIXUP-->
</div><!--end local-->
<div id="importHTTPPanel" style="display:none;margin-bottom:2px;"><!-- import from http server -->
<table><tr><td align=left>
enter a URL or <a href="javascript:;" id="importSelectFeed"
onclick="return 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="importUsePassword"
onClick="config.macros.importTiddlers.usePassword=this.checked;
config.macros.importTiddlers.showPanel('importIDPWPanel',this.checked,true);">password
<input type="checkbox" class="chk" id="importUseProxy"
onClick="config.macros.importTiddlers.useProxy=this.checked;
config.macros.importTiddlers.showPanel('importSiteProxy',this.checked,true);">proxy
</td></tr></table>
<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"
onKeyUp="config.macros.importTiddlers.proxy=this.value"
onChange="config.macros.importTiddlers.proxy=this.value;">
<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"
onKeyUp="config.macros.importTiddlers.src=this.value"
onChange="config.macros.importTiddlers.src=this.value;">
<div id="importIDPWPanel" style="text-align:center;margin-top:2px;display:none";>
username: <input type=text id="txtImportID" style="width:25%"
onChange="config.options.txtRemoteUsername=this.value;">
password: <input type=password id="txtImportPW" style="width:25%"
onChange="config.options.txtRemotePassword=this.value;">
</div><!--end idpw-->
</div><!--end http-->
</div><!--end source-->
<div class="box" id="importSelectPanel" style="display:none;margin:.5em;">
<table><tr><td align=left>
select:
<a href="javascript:;" id="importSelectAll"
onclick="return onClickImportButton(this)" title="SELECT all tiddlers">
all</a>
<a href="javascript:;" id="importSelectNew"
onclick="return onClickImportButton(this)" title="SELECT tiddlers not already in destination document">
added</a>
<a href="javascript:;" id="importSelectChanges"
onclick="return onClickImportButton(this)" title="SELECT tiddlers that have been updated in source document">
changes</a>
<a href="javascript:;" id="importSelectDifferences"
onclick="return onClickImportButton(this)" title="SELECT tiddlers that have been added or are different from existing tiddlers">
differences</a>
</td><td align=right>
<a href="javascript:;" id="importListSmaller"
onclick="return onClickImportButton(this)" title="SHRINK list size">
– </a>
<a href="javascript:;" id="importListLarger"
onclick="return onClickImportButton(this)" title="GROW list size">
+ </a>
<a href="javascript:;" id="importListMaximize"
onclick="return onClickImportButton(this)" title="MAXIMIZE/RESTORE list size">
= </a>
</td></tr></table>
<select id="importList" size=8 multiple
onchange="setTimeout('refreshImportList('+this.selectedIndex+')',1)">
<!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->
</select>
<div style="text-align:center">
<a href="javascript:;"
title="click for help using filters..."
onclick="alert('A filter consists of one or more space-separated combinations of: tiddlertitle, tag:[[tagvalue]], tag:[[tag expression]] (requires MatchTagsPlugin), story:[[TiddlerName]], and/or search:[[searchtext]]. Use a blank filter to restore the list of all tiddlers.'); return false;"
>filter</a>
<input type="text" id="importLastFilter" style="margin-bottom:1px; width:65%"
title="Enter a combination of one or more filters. Use a blank filter for all tiddlers."
onfocus="this.select()" value=""
onKeyUp="config.macros.importTiddlers.lastFilter=this.value"
onChange="config.macros.importTiddlers.lastFilter=this.value;">
<input type="button" id="importApplyFilter" style="width:20%" value="apply"
title="filter list of tiddlers to include only those that match certain criteria"
onclick="return onClickImportButton(this)">
</div>
</div><!--end select-->
<div class="box" id="importOptionsPanel" style="text-align:center;margin:.5em;display:none;">
apply tags: <input type=checkbox class="chk" id="chkImportTags" checked
onClick="config.macros.importTiddlers.importTags=this.checked;">from source
<input type=checkbox class="chk" id="chkKeepTags" checked
onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing
<input type=checkbox class="chk" id="chkAddTags"
onClick="config.macros.importTiddlers.addTags=this.checked;
config.macros.importTiddlers.showPanel('txtNewTags',this.checked,false);
if (this.checked) document.getElementById('txtNewTags').focus();">add tags<br>
<input type=text id="txtNewTags" style="margin-top:4px;display:none;" size=15 onfocus="this.select()"
title="enter tags to be added to imported tiddlers"
onKeyUp="config.macros.importTiddlers.newTags=this.value;
document.getElementById('chkAddTags').checked=this.value.length>0;" autocomplete=off>
<nobr><input type=checkbox class="chk" id="chkSync"
onClick="config.macros.importTiddlers.sync=this.checked;">
link tiddlers to source document (for sync later)</nobr>
</div><!--end options-->
<div id="importButtonPanel" style="text-align:center">
<input type=button id="importLoad" class="importButton btn3" value="open"
title="load listbox with tiddlers from source document"
onclick="onClickImportButton(this)">
<input type=button id="importOptions" class="importButton btn3" value="options..."
title="set options for tags, sync, etc."
onclick="onClickImportButton(this)">
<input type=button id="importStart" class="importButton btn3" value="import"
title="start/stop import of selected source tiddlers into current document"
onclick="onClickImportButton(this)">
<input type=button id="importClose" class="importButton btn3" value="done"
title="clear listbox or hide control panel"
onclick="onClickImportButton(this)">
</div>
<div class="none" id="importCollisionPanel" style="display:none;margin:.5em 0 .5em .5em;">
<table><tr><td style="width:65%" align="left">
<table><tr><td align=left>
tiddler already exists:
</td><td align=right>
<input type=checkbox class="chk" id="importApplyToAll"
onclick="document.getElementById('importRename').disabled=this.checked;"
checked>apply to all
</td></tr></table>
<input type=text id="importNewTitle" size=15 autocomplete=off">
</td><td style="width:34%" align="center">
<input type=button id="importMerge"
class="importButton" style="width:47%" value="merge"
title="append the incoming tiddler to the existing tiddler"
onclick="onClickImportButton(this)"><!--
--><input type=button id="importSkip"
class="importButton" style="width:47%" value="skip"
title="do not import this tiddler"
onclick="onClickImportButton(this)"><!--
--><br><input type=button id="importRename"
class="importButton" style="width:47%" value="rename"
title="rename the incoming tiddler"
onclick="onClickImportButton(this)"><!--
--><input type=button id="importReplace"
class="importButton" style="width:47%" value="replace"
title="discard the existing tiddler"
onclick="onClickImportButton(this)">
</td></tr></table>
</div><!--end collision-->
!end
//}}}
***/
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2010.12.15 1.9.6 allow (but ignore) type="..." syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 6, date: new Date(2010,12,15)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: type=\\\"[^\\\"]*\\\")?(?: src=\\\"([^\\\"]*)\\\")?(?: label=\\\"([^\\\"]*)\\\")?(?: title=\\\"([^\\\"]*)\\\")?(?: key=\\\"([^\\\"]*)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var src=lookaheadMatch[1];
var label=lookaheadMatch[2];
var tip=lookaheadMatch[3];
var key=lookaheadMatch[4];
var show=lookaheadMatch[5];
var code=lookaheadMatch[6];
if (src) { // external script library
var script = document.createElement("script"); script.src = src;
document.body.appendChild(script); document.body.removeChild(script);
}
if (code) { // inline code
if (show) // display source in tiddler
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (label) { // create 'onclick' command link
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
link.tiddler=w.tiddler;
link.onclick=function(){
this.bufferedHTML="";
try{ var r=eval(this.code);
if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
if(this.bufferedHTML.length)
s.innerHTML=this.bufferedHTML;
if((typeof(r)==="string")&&r.length) {
wikify(r,s,null,this.tiddler);
return false;
} else return r!==undefined?r:false;
} catch(e){alert(e.description||e.toString());return false;}
};
link.setAttribute("title",tip||"");
var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
link.setAttribute("href",URIcode);
link.style.cursor="pointer";
if (key) link.accessKey=key.substr(0,1); // single character only
}
else { // run script immediately
var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
try { var out=eval(c); }
catch(e) { out=e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
if(limit > 0) text = text.substr(0,limit);
var wikifier = new Wikifier(text,formatter,null,tiddler);
return wikifier.wikifyPlain();
}
//}}}
// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
/***
!!!<<gradient horiz #4EB93E #fff >> JqueryTreeviewCSS>>
***/
.treeview, .treeview ul {
padding: 0;
margin: 0;
list-style: none;
}
.treeview ul {
background-color:transparent;
margin-top: 4px;
}
.treeview .hitarea {
background: url([[treeview-gold.gif]]) -64px -25px no-repeat;
height: 16px;
width: 16px;
margin-left: -16px;
float: left;
cursor: pointer;
}
/* fix for IE6 */
* html .hitarea {
display: inline;
float:none;
}
.treeview li {
margin: 0;
padding: 3px 0pt 3px 17px;
}
.treeview a.selected {
background-color: #eee;
}
#treecontrol { margin: 1em 0; display: none; }
.treeview .hover { color: yellow; cursor: pointer; }
.treeview li { background: url([[treeview-gold-line.gif]]) 0 0 no-repeat; }
.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; }
.treeview .expandable-hitarea { background-position: -80px -3px; }
.treeview li.last { background-position: 0 -1766px }
.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url([[treeview-gold.gif]]); }
.treeview li.lastCollapsable { background-position: 0 -111px }
.treeview li.lastExpandable { background-position: -32px -67px }
.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; }
.treeview-red li { background-image: url([[treeview-red-line.gif]]); }
.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url([[treeview-red.gif]]); }
.filetree li { padding: 3px 0 2px 16px; }
.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; }
.filetree span.folder { background: url([[folder.gif]]) 0 0 no-repeat; }
.filetree li.expandable span.folder { background: url([[folder-closed.gif]]) 0 0 no-repeat; }
.filetree span.file { background: url([[file.gif]]) 0 0 no-repeat; }
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
major: 1, minor: 1, revision: 0,
date: new Date("mar 17, 2007"),
source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};
if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};
bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){
url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
}
return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
MenuMichel
À_Propos
Virus_Argent
<script>
/*
* Treeview 1.4 - jQuery plugin to hide and show branches of a tree
*
* http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
* http://docs.jquery.com/Plugins/Treeview
*
* Copyright (c) 2007 Jörn Zaefferer
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $
*
*/
;(function($) {
$.extend($.fn, {
swapClass: function(c1, c2) {
var c1Elements = this.filter('.' + c1);
this.filter('.' + c2).removeClass(c2).addClass(c1);
c1Elements.removeClass(c1).addClass(c2);
return this;
},
replaceClass: function(c1, c2) {
return this.filter('.' + c1).removeClass(c1).addClass(c2).end();
},
hoverClass: function(className) {
className = className || "hover";
return this.hover(function() {
$(this).addClass(className);
}, function() {
$(this).removeClass(className);
});
},
heightToggle: function(animated, callback) {
animated ?
this.animate({ height: "toggle" }, animated, callback) :
this.each(function(){
jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
if(callback)
callback.apply(this, arguments);
});
},
heightHide: function(animated, callback) {
if (animated) {
this.animate({ height: "hide" }, animated, callback);
} else {
this.hide();
if (callback)
this.each(callback);
}
},
prepareBranches: function(settings) {
if (!settings.prerendered) {
// mark last tree items
this.filter(":last-child:not(ul)").addClass(CLASSES.last);
// collapse whole tree, or only those marked as closed, anyway except those marked as open
this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide();
}
// return all items with sublists
return this.filter(":has(>ul)");
},
applyClasses: function(settings, toggler) {
this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) {
toggler.apply($(this).next());
}).add( $("a", this) ).hoverClass();
if (!settings.prerendered) {
// handle closed ones first
this.filter(":has(>ul:hidden)")
.addClass(CLASSES.expandable)
.replaceClass(CLASSES.last, CLASSES.lastExpandable);
// handle open ones
this.not(":has(>ul:hidden)")
.addClass(CLASSES.collapsable)
.replaceClass(CLASSES.last, CLASSES.lastCollapsable);
// create hitarea
this.prepend("<div class=\"" + CLASSES.hitarea + "\"/>").find("div." + CLASSES.hitarea).each(function() {
var classes = "";
$.each($(this).parent().attr("class").split(" "), function() {
classes += this + "-hitarea ";
});
$(this).addClass( classes );
});
}
// apply event to hitarea
this.find("div." + CLASSES.hitarea).click( toggler );
},
treeview: function(settings) {
settings = $.extend({
cookieId: "treeview"
}, settings);
if (settings.add) {
return this.trigger("add", [settings.add]);
}
if ( settings.toggle ) {
var callback = settings.toggle;
settings.toggle = function() {
return callback.apply($(this).parent()[0], arguments);
};
}
// factory for treecontroller
function treeController(tree, control) {
// factory for click handlers
function handler(filter) {
return function() {
// reuse toggle event handler, applying the elements to toggle
// start searching for all hitareas
toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() {
// for plain toggle, no filter is provided, otherwise we need to check the parent element
return filter ? $(this).parent("." + filter).length : true;
}) );
return false;
};
}
// click on first element to collapse tree
$("a:eq(0)", control).click( handler(CLASSES.collapsable) );
// click on second to expand tree
$("a:eq(1)", control).click( handler(CLASSES.expandable) );
// click on third to toggle tree
$("a:eq(2)", control).click( handler() );
}
// handle toggle event
function toggler() {
$(this)
.parent()
// swap classes for hitarea
.find(">.hitarea")
.swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
.swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
.end()
// swap classes for parent li
.swapClass( CLASSES.collapsable, CLASSES.expandable )
.swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
// find child lists
.find( ">ul" )
// toggle them
.heightToggle( settings.animated, settings.toggle );
if ( settings.unique ) {
$(this).parent()
.siblings()
// swap classes for hitarea
.find(">.hitarea")
.replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
.replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
.end()
.replaceClass( CLASSES.collapsable, CLASSES.expandable )
.replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
.find( ">ul" )
.heightHide( settings.animated, settings.toggle );
}
}
function serialize() {
function binary(arg) {
return arg ? 1 : 0;
}
var data = [];
branches.each(function(i, e) {
data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0;
});
$.cookie(settings.cookieId, data.join("") );
}
function deserialize() {
var stored = $.cookie(settings.cookieId);
if ( stored ) {
var data = stored.split("");
branches.each(function(i, e) {
$(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ]();
});
}
}
// add treeview class to activate styles
this.addClass("treeview");
// prepare branches and find all tree items with child lists
var branches = this.find("li").prepareBranches(settings);
switch(settings.persist) {
case "cookie":
var toggleCallback = settings.toggle;
settings.toggle = function() {
serialize();
if (toggleCallback) {
toggleCallback.apply(this, arguments);
}
};
deserialize();
break;
case "location":
var current = this.find("z").filter(function() { return this.href.toLowerCase() != location.href.toLowerCase(); });
if ( current.length ) {
current.addClass("selected").parents("ul, li").add( current.next() ).show();
}
break;
}
branches.applyClasses(settings, toggler);
// if control option is set, create the treecontroller and show it
if ( settings.control ) {
treeController(this, settings.control);
$(settings.control).show();
}
return this.bind("add", function(event, branches) {
$(branches).prev()
.removeClass(CLASSES.last)
.removeClass(CLASSES.lastCollapsable)
.removeClass(CLASSES.lastExpandable)
.find(">.hitarea")
.removeClass(CLASSES.lastCollapsableHitarea)
.removeClass(CLASSES.lastExpandableHitarea);
$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler);
});
}
});
// classes used by the plugin
// need to be styled via external stylesheet, see first example
var CLASSES = $.fn.treeview.classes = {
open: "open",
closed: "closed",
expandable: "expandable",
expandableHitarea: "expandable-hitarea",
lastExpandableHitarea: "lastExpandable-hitarea",
collapsable: "collapsable",
collapsableHitarea: "collapsable-hitarea",
lastCollapsableHitarea: "lastCollapsable-hitarea",
lastCollapsable: "lastCollapsable",
lastExpandable: "lastExpandable",
last: "last",
hitarea: "hitarea"
};
// provide backwards compability
$.fn.Treeview = $.fn.treeview;
})(jQuery);
</script>
<script>
var sc_project=4793024;
var sc_invisible=1;
var sc_partition=54;
var sc_click_stat=1;
var sc_security="a9269ce8";
</script>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 34px; font-family:Tahoma; background-color:#eee;">MiA-tw<br><span style="font-size: 24px;"><b>Un TiddlyWiki élaboré par ''Michel Ayotte''</b><br><span style="font-size: 18px;"><blink>en chargement ...</blink><br><br><span style="font-size: 14px; color:red;">Il est nécessaire que Javascript soit activé, pour que les fonctions de modifications que vous voudrez apporter, soient faites,</span></div>
AutresLiens_Virus
| <br> <<switchTheme width:40%>> | ^^ThemeAdmin<br> ThemeAdminLocal<br> ThemeSimple^^|
|<<option txtUserName>><br><<option pasUploadPassword>>|<<option chkAutoSave>> [[AutoSave]]<br><<option chkSaveBackups>> [[SaveBackups]|
| <html><a href='http://michelayotte.tiddlyspot.com/download' class='button'>Download</a></html> | <<upload http://michelayotte.tiddlyspot.com/store.cgi index.html . . michelayotte>> |
|MainMenu|ZzConfigOptions<br>DefaultTiddlers|
|PluginManager|[[Trash]]|
TiddlySpot
TiddlySpot
https://classic.tiddlywiki.com/#%5B%5BSetting%20up%20saving%5D%5D
https://github.com/nwOkido/nwTWcSaver
https://groups.google.com/forum/#!forum/tiddlywiki
https://groups.google.com/forum/#!forum/tiddlywikiclassic
https://tiddlywiki.com/talkytalky/
TopMenu_Externe
TopMenu (Externe aussi)
TopMenuLocal
@@color:#000; //Un ((environnement(^Dont __vous pouvez__<br> _ __changer__ le ''look''<br> _ __ajouter__ des ''fonctions''<br> _ __publier__ sur le ''web''<br> _ __Échanger__ avec vos ''amis''<br><br>''Centraliser VOS informations<br>tout en étant __accessibles partout__!!!))) de ((wiki(^C'est plus qu'un éditeur <br> _ de texte, <br> _ de présentation,<br> _ de tableur,<br> _ de base de données.<br><br>''C'est tout ça,''<br>Éditable par ''VOUS''!!!<br>''Pour VOUS!!!''))), qu'on peut éditer convivialement, ''dans un seul ((fichier(^À __transporter__ avec soi,<br> sur une __clef ''USB''__.!!!''<br> _ ou donner <br> _ ou publier! ))) // [img[MiA-tw.png]]@@
!usage
{{{[img[Logo_MiaTw.png]]}}}
[img[Logo_MiaTw.png]]
!notes
//none//
!type
image/png
!file
./Logo_MiaTw.png
!url
!data
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAcCAQAAACqy3WpAAAAAXNSR0IArs4c6QAAAAJiS0dEAP+Hj8y/AAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH2wsTAS019gp71wAAAzdJREFUOMudk11oXEUYhp9v55zdPbubponYUglqUu0aoyWpF1VIwYJUWEHSm2Ch2FBosRX81yRWvLEmLSSRihWLP0g1FhXxypJgaPEHVBDbC1NtRWoWRBbFuslmc3bPz+dFuu22TdbEmZv5eGZe3nnnG0PNcTizYd2Xv9TaIYujx7g9duN3Wf7aeK50dNFdkcXAIK8S2xpts9usrUd5+v84aE4eKUTmpog4L6R+n12mgy3AyJABwLBvCDqX66AruSdvGZ2bwnb84Fj957PLzGDHmGUqa8t0jS3zCu9nVnSqVirVus6hzJIFJoH6/aoiihEjiohq3X44vjSBNo7sTHaIgOo37mlXFUScjpd2ZpYS4ovUN94xZVJRfi4eMpNRuLW8I2hJeISFszcV/n6tduuOAB/2n9DP/O4LBCghIUqQ+edN/z091A/P8x9j+6ovdPf0Cg+9cqa8h6ZHtWtVzcN7gbfG7pyO+Unv2hnzW/MHxmB7rQz609dPPNCQjF9+wqq8ZcY9eGH1fQfO1hD45PSfLeXo5iAds42qSKUPRNzgRGnQ6nHD87vbq0+Y6mL08YaesnHL2cQZb2WxIT4voSpyKv+kmYi1u3c77g2b8uPfLuBAeTT64K+yOofHXCRiPFoK90Svs5Fs+W1vIulAsDdMkcPPTawdLcvVjSRs7LObAGzbnwGLbOpj66vp1/O7rK8TcQLaC402gNXU0SdXOziI3rzhvFHfz4EdBnnPiomAuO+SigMaLz1jh8b3cmCFMtmsvw1VO+ildcCgFyOLmCgiqhBRW+dT3KyhmX8bJcLagaErrzCQdrZVUhdRdWyvKJfzkUSxI1rNY9ueSl8S2AesP2mg4gCIGEfCoCLgBz2CqeaG207CI/MCL/NBt7NGVSTJD+6PbgIR1bij5YrAunKDcw1fM9L9BmAB1A2DMBP0Fr6vh/X5PalkBKKhrwC+bgkX4slhPgIDx0Ya74/6h91BySZRyMUn/NnSXcaKFWcsc4p7i+111kJ85ab68XF5p6nppzPmWTwHvdRWilhzvdwSdYuf8kTiXHkRHvzRynPD6fLFn1/9fUOUoLnUl304my4tysu7XvkXOZiFRGvM0z0AAAAASUVORK5CYII=
/***
|Name|MiniBrowserPlugin|
|Source|http://www.TiddlyTools.com/#MiniBrowserPlugin|
|Documentation|http://www.TiddlyTools.com/#MiniBrowserPluginInfo|
|Version|1.5.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2|
|Type|plugin|
|Requires|PlayerPlugin (optional, recommended)|
|Description|embedded browser-in-browser with favorites lists and media support|
!!!!!Documentation
>see [[MiniBrowserPluginInfo]]
!!!!!Configuration
>Default mini browser size:
>width: <<option txtMiniBrowserWidth>> height: <<option txtMiniBrowserHeight>>
!!!!!Revisions
<<<
2011.02.08 1.5.3 added 'nocontrols' macro keyword parameter
2009.08.29 1.5.2 in load(), fixed 'noplayer' IFRAME output
2009.07.03 1.5.1 added onclick handling to 'n of m' button. also, if noedit mode, add line numbers to bookmarks droplist items
2009.06.08 1.5.0 added optional 'noedit' mode: replaces add/del/edit buttons with next/previous navigation.
|see [[MiniBrowserPluginInfo]] for additional revision details|
2007.10.15 1.0.0 combined MiniBrowser and MediaCenter inline scripts and converted to true plugin
2006.03.01 0.0.0 inline script
<<<
!!!!!Code
***/
//{{{
version.extensions.MiniBrowserPlugin={major: 1, minor: 5, revision: 3, date: new Date(2011,2,8)};
config.shadowTiddlers.MiniBrowser='<<miniBrowser>>';
config.options.txtMiniBrowserWidth=config.options.txtMiniBrowserWidth||'100%';
config.options.txtMiniBrowserHeight=config.options.txtMiniBrowserHeight||'480';
config.macros.miniBrowser= {
favoritesList: 'MiniBrowserList',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var noPlayer=params[0]&¶ms[0].toLowerCase()=='noplayer'; if (noPlayer) params.shift();
var noEdit =params[0]&¶ms[0].toLowerCase()=='noedit'; if (noEdit) params.shift();
var expand =params[0]&¶ms[0].toLowerCase()=='expand'; if (expand) params.shift();
var hideControls=params[0]&¶ms[0].toLowerCase()=='hidecontrols'; if (hideControls) params.shift();
var noControls =params[0]&¶ms[0].toLowerCase()=='nocontrols'; if (noControls) params.shift();
hideControls =noControls||hideControls; // no controls implies hide controls
var url =(params[0]&&!store.tiddlerExists(params[0]))?params.shift():'';
if (!url.length) noControls=hideControls=false; // if no initial URL, force controls to show
if (!config.macros.player) noPlayer=true; // PlayerPlugin not installed
var w=config.options.txtMiniBrowserWidth;
var h=config.options.txtMiniBrowserHeight;
// create form
var guid=new Date().getTime()+Math.random().toString(); // globally unique ID
var html=store.getTiddlerText('MiniBrowserPlugin##html');
html=html.replace(/%id%/g,guid)
.replace(/%noplayer%/g,noPlayer?'true':'')
.replace(/%noedit%/g,noEdit||readOnly?'none':'inline')
.replace(/%shownav%/g,noEdit||readOnly?'inline':'none')
.replace(/%hidecontrols%/g,hideControls?'none':'block')
.replace(/%bookmarksize%/g,(expand?70:20)+'%')
.replace(/%urlsize%/g,(expand?69.5:20)+'%')
.replace(/%linebreak%/g,expand?'<br>':'')
.replace(/%favorites%/g,params[0]||config.macros.miniBrowser.favoritesList);
createTiddlyElement(place,'span').innerHTML=html;
// init form
function $(i){return document.getElementById(i)}; // abbrev
$('minibrowser_controls_'+guid).style.display=hideControls?'none':'block';
$('minibrowser_resize_'+guid).style.display=hideControls?'none':'block';
$('minibrowser_nocontrols_'+guid).style.display=noControls?'none':'inline';
$('minibrowser_togglecontrols_'+guid).checked=!hideControls;
$('minibrowser_form_'+guid).url.value=url;
$('minibrowser_form_'+guid).w.value=w;
$('minibrowser_form_'+guid).h.value=h;
if (noPlayer) { // hide type list no PlayerPlugin
$('minibrowser_type_'+guid).style.display='none';
$('minibrowser_url_'+guid).style.width=(expand?81.5:32)+'%';
}
// load bookmarks droplist from HR-separated tiddler contents
var b=$('minibrowser_bookmarks_'+guid);
while (b.options[1]) b.options[1]=null; // clear list but leave 'prompt' item
var p; while (p=params.shift()) this.getFavorites(b,p,noEdit); // load custom bookmarks
if (b.length<2) this.getFavorites(b,config.macros.miniBrowser.favoritesList,noEdit); // default list
$('minibrowser_nav_'+guid).value='1 out of '+b.length;
// load initial URL (if any)
var place=$('minibrowser_player_'+guid);
this.load(place,guid,'','',w,h,true,noPlayer);
this.go($('minibrowser_form_'+guid));
},
getFavorites: function(list,tid,noEdit) {
var txt=store.getTiddlerText(tid); if (!txt||!txt.trim().length) return;
txt=this.getWikifiedData(txt);
var parts=txt.split('\n----\n');
for (var p=0; p<parts.length; p++) {
var lines=parts[p].split('\n');
var label=lines.shift()||''; // 1st line=display text
var value=lines.shift()||''; // 2nd line=item value
var indent=value&&value.length?'\xa0\xa0':'';
var prefix=value.length&&noEdit?list.length+1+': ':'';
list.options[list.length]=new Option(prefix+indent+label,value,false,false);
}
},
getWikifiedData: // wikify content, then extract text WITH newlines and HRs included
function(txt) {
var e=createTiddlyElement(document.body,'div'); wikify(txt,e);
var breaks=e.getElementsByTagName('br');
for (var b=0; b<breaks.length; b++)
breaks[b].parentNode.insertBefore(document.createTextNode('\n'),breaks[b]);
var lines=e.getElementsByTagName('hr');
for (var l=0; l<lines.length; l++)
lines[l].parentNode.insertBefore(document.createTextNode('----\n'),lines[l]);
var items=e.getElementsByTagName('li');
for (var i=0; i<items.length; i++)
items[i].parentNode.insertBefore(document.createTextNode('\n'),items[i]);
var txt=getPlainText(e);
removeNode(e);
return txt.replace(/\r*/g,'').replace(/\n\n/g,'\n');
},
load: function(place,id,type,url,w,h,showcontrols,noPlayer) {
if (!noPlayer)
config.macros.player.loadURL(place,id,type,url,w,h,showcontrols);
else { // force IFRAME-only display
if (!place) place=document.getElementById(id).parentNode;
var fmt="<iframe name='%0' id='%0' src='%1' width='%2' height='%3' \
style='background:#fff;border:1px solid'></iframe>";
place.innerHTML=fmt.format([id,url,w,h]);
}
},
go: function(f) {
var url=f.url.value.trim();
if (!url.length) url=f.url.value=f.bookmarks.value.trim();
if (!url.length) { this.done(f); return false; }
var id=f.playerID.value;
document.getElementById('minibrowser_player_'+id).style.display='block';
document.getElementById('minibrowser_controls2_'+id).style.display='block';
this.load(null,id,f.type.value,f.url.value,f.w.value,f.h.value,f.ctrls.checked,f.noPlayer.value=='true');
var matched=false; for (var i=0; i<f.bookmarks.options.length; i++) // select matching bookmark
if (f.bookmarks.options[i].value==url) { f.bookmarks.selectedIndex=i; matched=true; break; }
if (!matched) f.bookmarks.selectedIndex=0;
f.done.disabled=false;
return false;
},
done: function(f) {
var id=f.playerID.value;
this.load(null,id,null,null,f.w.value,0,f.ctrls.checked,f.noPlayer.value=='true');
document.getElementById('minibrowser_player_'+id).style.display='none';
document.getElementById('minibrowser_controls2_'+id).style.display='none';
f.done.disabled=true;
return false;
},
fit: function(place) {
// fudge factor to account for the other controls + padding + borders. ADJUST THIS VALUE TO FIT LAYOUT
var trim=89;
var t=story.findContainingTiddler(place);
if (!t) { t=place; while (t && t.className!='floatingPanel') t=t.parentNode; } if (!t) return;
var w='100%'; // horizontal stretching via CSS works, but vertical stretching doesn't... so:
var h=t.offsetHeight-trim; // workaround: get containing panel/tiddler height and subtract trim height
var f=place.form;
this.load(null,f.playerID.value,f.type.value,f.url.value,w,h,f.ctrls.checked,f.noPlayer.value=='true');
place.form.w.value=w; place.form.h.value=h; // update width/height input fields
},
add: function(place,title) {
var v=place.value; if (!v.length) return;
var d=prompt('Please enter a description for\n'+place.value); if (!d || !d.length) return;
var who=config.options.txtUserName;
var when=new Date();
var tid=store.getTiddler(title);
var txt='%0\n%1\n----\n%2'.format([d,v,tid?tid.text:'']);
store.saveTiddler(title,title,txt,who,when,tid?tid.tags:[],tid?tid.fields:{});
if (!tid) story.displayTiddler(story.findContainingTiddler(place),title);
else story.refreshTiddler(title,1,true);
var here=story.findContainingTiddler(place);
if (here) story.refreshTiddler(here.getAttribute('tiddler'),1,true);
},
del: function(place,title) {
var v=place.value; if (!v.length) return;
var d=place.options[place.selectedIndex].text; if (!d.length) return;
if (!confirm('Are you sure you want to remove this favorite?\n\n'+d+'\n'+v)) return;
var tid=store.getTiddler(title); if (!tid) return;
var who=config.options.txtUserName;
var when=new Date();
var pat='%0\n%1\n----\n'.format([d.replace(/\xa0/g,''),v]); var re=new RegExp(pat,'i');
var txt=tid.text.replace(re,'');
store.saveTiddler(title,title,txt,who,when,tid?tid.tags:[],tid?tid.fields:{});
story.refreshTiddler(title,1,true);
var here=story.findContainingTiddler(place);
if (here) story.refreshTiddler(here.getAttribute('tiddler'),1,true);
}
}
//}}}
/***
//{{{
!html
<form id='minibrowser_form_%id%' style='display:block;margin:0;padding:0' onsubmit='return config.macros.miniBrowser.go(this);'><!--
--><nobr><input type='hidden' name='playerID' value='%id%'><input type='hidden' name='noPlayer' value='%noplayer%'><!--
--><div id='minibrowser_controls_%id%' style='display:%hidecontrols%'><!--
--><input type='button' value='<' title='back' style='width:3%'
onclick='try{window.frames["player_%id%"].history.go(-1)}catch(e){window.history.go(-1)}' ><!--
--><input type='button' value='>' title='forward' style='width:3%'
onclick='try{window.frames["player_%id%"].history.go(+1)}catch(e){window.history.go(+1)}'><!--
--><input type='button' value='+' title='refresh'style='width:3%'
onclick='try{window.frames["player_%id%"].location.reload()}catch(e){;}'><!--
--><input type='button' value='x' title='stop'style='width:3%'
onclick='window.stop()'><!--
--><select name='bookmarks' id='minibrowser_bookmarks_%id%' size='1' style='width:%bookmarksize%'
onchange='this.form.url.value=this.value;
this.form.nav.value="%0 out of %1".format([this.selectedIndex+1,this.length]);
this.form.nav.title="reload %0".format([this.options[this.selectedIndex].text]);
return config.macros.miniBrowser.go(this.form);'><!--
--><option value=''>bookmarks...</option><!--
--></select><!--
--><span style='display:%noedit%'><!--
--><input type='button' value='add' title='add URL to the bookmarks' style='width:6%'
favorites="%favorites%"
onclick='config.macros.miniBrowser.add(this.form.url,this.getAttribute("favorites"));'><!--
--><input type='button' value='del' title='remove URL from the bookmarks' style='width:6%'
favorites="%favorites%"
onclick='config.macros.miniBrowser.del(this.form.bookmarks,this.getAttribute("favorites"));'><!--
--><input type='button' value='edit' title='edit the bookmarks list' style='width:6%'
favorites="%favorites%"
onclick='story.displayTiddler(null,this.getAttribute("favorites"),2)'><!--
--></span><!--
--><span style='display:%shownav%'><!--
--><input name=prev type='button' value='◄' title='view previous bookmark' style='width:3%'
onclick='var b=document.getElementById("minibrowser_bookmarks_%id%");
b.selectedIndex=Math.max(b.selectedIndex-1,0); b.onchange();'><!--
--><input name='nav' id='minibrowser_nav_%id%'
type='button' value='N out of MM' title='enter a bookmark number' style='width:12%'
onclick='return this.form.next.click();
var b=this.form.bookmarks;
var i=prompt("Enter a bookmark number (1-"+b.length+")",b.selectedIndex+1);
if (i && i<b.length) { b.selectedIndex=i-1; b.onchange(); }'><!--
--><input name=next type='button' value='►' title='view next bookmark' style='width:3%'
onclick='var b=document.getElementById("minibrowser_bookmarks_%id%");
b.selectedIndex=Math.min(b.selectedIndex+1,b.length); b.onchange();'><!--
--></span><!--
-->%linebreak%<!--
--><select name='type' id='minibrowser_type_%id%' size='1' style='width:12%'
onchange='var opt=this.options; for (var i=0; i<opt.length; i++)
if (i==this.selectedIndex) opt[i].text=opt[i].text.replace(/\xa0\xa0/,"√");
else opt[i].text=opt[i].text.replace(/√/,"\xa0\xa0");
if (this.selectedIndex==0) opt[1].text=opt[1].text.replace(/\xa0\xa0/,"√");'><!--
--><option value=''>type...</option><!--
--><option value=''>√ auto-detect</option><!--
--><option value='iframe'> web page</option><!--
--><option value='windows'> windows media</option><!--
--><option value='realone'> real one</option><!--
--><option value='quicktime'> quicktime</option><!--
--><option value='flash'> flash</option><!--
--><option value='image'> jpg/gif/png</option><!--
--></select><!--
--><input type='text' name='url' id='minibrowser_url_%id%' size='60' value='' style='width:%urlsize%'
onfocus='this.select()'><!--
--><input type='submit' value='go' title='view URL' style='width:6%'><!--
--><input type='button' value='open' title='open a separate tab/window' style='width:6%'
onclick='if (this.form.url.value.length) window.open(this.form.url.value)'><!--
--><input type='button' value='done' name='done' disabled title='disconnect from URL' style='width:6%'
onclick='return config.macros.miniBrowser.done(this.form);'><!--
--></div><!--
--><div id='minibrowser_player_%id%' style='display:none;text-align:center'></div><!--
--><span id='minibrowser_controls2_%id%' style='margin-top:2px;display:none;'><!--
--><div id='minibrowser_resize_%id%' style='display:%hidecontrols%;float:right'><!--
--> size: <input type='text' name='w' size='3' value='' style=''
onfocus='this.select()'><!--
-->x<input type='text' name='h' size='3' value='' style=''
onfocus='this.select()'><!--
--> <input type='submit' value='set' style='width:5em'
onclick='var f=this.form;
if(!f.w.value.trim().length) f.w.value=config.options.txtMiniBrowserWidth;
if(!f.h.value.trim().length) f.h.value=config.options.txtMiniBrowserHeight;
config.options.txtMiniBrowserWidth=f.w.value; config.options.txtMiniBrowserHeight=f.h.value;
saveOptionCookie("txtMiniBrowserWidth"); saveOptionCookie("txtMiniBrowserHeight");'><!--
--><input type='submit' value='reset' style='width:5em'
onclick='var f=this.form; f.ctrls.checked=true; f.w.value="100%"; f.h.value="480";
config.options.txtMiniBrowserWidth=f.w.value; config.options.txtMiniBrowserHeight=f.h.value;
saveOptionCookie("txtMiniBrowserWidth"); saveOptionCookie("txtMiniBrowserHeight");'><!--
--><input type='button' value='fit' title='resize player to fit containing window' style='width:5em'
onclick='config.macros.miniBrowser.fit(this)'><!--
--></div><!--
style='display:%hidecontrols%'
--><span id='minibrowser_nocontrols_%id%'><!--
--> <input type='checkbox' name='ctrls' id='minibrowser_togglecontrols_%id%' title='toggle minibrowser controls' CHECKED
onclick='document.getElementById("minibrowser_controls_%id%").style.display=this.checked?"block":"none";
document.getElementById("minibrowser_resize_%id%").style.display=this.checked?"block":"none";'
><a href='' title='toggle minibrowser controls'
onclick='this.previousSibling.click();return false;'>show controls</a><!--
--></span><!--
--></span><!--
--></nobr></form>
!end
//}}}
***/
<<storyViewer Presentation_List_Form list allbuttons onlybuttons first|previous|here|next|last>>
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
>Note: This setting can cause 'clipping' problems in some versions of InternetExplorer.
>In addition, for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class). In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release. Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 9, date: new Date(2008,11,15)};
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkFloatingSlidersAnimate===undefined)
config.options.chkFloatingSlidersAnimate=false; // avoid clipping problems in IE
// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");
// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
window.removeCookie=function(name) {
document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;';
}
}
config.formatters.push( {
name: "nestedSliders",
match: "\\n?\\+{3}",
terminator: "\\s*\\={3}\\n?",
lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\@\\[\\>]*\\^)?)?(\\*)?(\\@)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(\\[[^\\]]*\\])?(?:\\}{3})?(\\#[^:]*\\:)?(\\>)?(\\.\\.\\.)?\\s*",
handler: function(w)
{
lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
{
var defopen=lookaheadMatch[1];
var cookiename=lookaheadMatch[2];
var header=lookaheadMatch[3];
var panelwidth=lookaheadMatch[4];
var transient=lookaheadMatch[5];
var hover=lookaheadMatch[6];
var buttonClass=lookaheadMatch[7];
var label=lookaheadMatch[8];
var openlabel=lookaheadMatch[9];
var panelID=lookaheadMatch[10];
var blockquote=lookaheadMatch[11];
var deferred=lookaheadMatch[12];
// location for rendering button and panel
var place=w.output;
// default to closed, no cookie, no accesskey, no alternate text/tip
var show="none"; var cookie=""; var key="";
var closedtext=">"; var closedtip="";
var openedtext="<"; var openedtip="";
// extra "+", default to open
if (defopen) show="block";
// cookie, use saved open/closed state
if (cookiename) {
cookie=cookiename.trim().slice(1,-1);
cookie="chkSlider"+cookie;
if (config.options[cookie]==undefined)
{ config.options[cookie] = (show=="block") }
show=config.options[cookie]?"block":"none";
}
// parse label/tooltip/accesskey: [label=X|tooltip]
if (label) {
var parts=label.trim().slice(1,-1).split("|");
closedtext=parts.shift();
if (closedtext.substr(closedtext.length-2,1)=="=")
{ key=closedtext.substr(closedtext.length-1,1); closedtext=closedtext.slice(0,-2); }
openedtext=closedtext;
if (parts.length) closedtip=openedtip=parts.join("|");
else { closedtip="show "+closedtext; openedtip="hide "+closedtext; }
}
// parse alternate label/tooltip: [label|tooltip]
if (openlabel) {
var parts=openlabel.trim().slice(1,-1).split("|");
openedtext=parts.shift();
if (parts.length) openedtip=parts.join("|");
else openedtip="hide "+openedtext;
}
var title=show=='block'?openedtext:closedtext;
var tooltip=show=='block'?openedtip:closedtip;
// create the button
if (header) { // use "Hn" header format instead of button/link
var lvl=(header.length>5)?5:header.length;
var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,buttonClass,title);
btn.onclick=onClickNestedSlider;
btn.setAttribute("href","javascript:;");
btn.setAttribute("title",tooltip);
}
else
var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,buttonClass);
btn.innerHTML=title; // enables use of HTML entities in label
// set extra button attributes
btn.setAttribute("closedtext",closedtext);
btn.setAttribute("closedtip",closedtip);
btn.setAttribute("openedtext",openedtext);
btn.setAttribute("openedtip",openedtip);
btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
btn.defOpen=defopen!=null; // save default open/closed state (boolean)
btn.keyparam=key; // save the access key letter ("" if none)
if (key.length) {
btn.setAttribute("accessKey",key); // init access key
btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
}
btn.setAttribute("hover",hover?"true":"false");
btn.onmouseover=function(ev) {
// optional 'open on hover' handling
if (this.getAttribute("hover")=="true" && this.sliderPanel.style.display=='none') {
document.onclick.call(document,ev); // close transients
onClickNestedSlider(ev); // open this slider
}
// mouseover on button aligns floater position with button
if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel);
}
// create slider panel
var panelClass=panelwidth?"floatingPanel":"sliderPanel";
if (panelID) panelID=panelID.slice(1,-1); // trim off delimiters
var panel=createTiddlyElement(place,"div",panelID,panelClass,null);
panel.button = btn; // so the slider panel know which button it belongs to
btn.sliderPanel=panel; // so the button knows which slider panel it belongs to
panel.defaultPanelWidth=(panelwidth && panelwidth.length>2)?panelwidth.slice(1,-1):"";
panel.setAttribute("transient",transient=="*"?"true":"false");
panel.style.display = show;
panel.style.width=panel.defaultPanelWidth;
panel.onmouseover=function(event) // mouseover on panel aligns floater position with button
{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this); }
// render slider (or defer until shown)
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
if ((show=="block")||!deferred) {
// render now if panel is supposed to be shown or NOT deferred rendering
w.subWikify(blockquote?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
// align floater position with button
if (window.adjustSliderPos) window.adjustSliderPos(place,btn,panel);
}
else {
var src = w.source.substr(w.nextMatch);
var endpos=findMatchingDelimiter(src,"+++","===");
panel.setAttribute("raw",src.substr(0,endpos));
panel.setAttribute("blockquote",blockquote?"true":"false");
panel.setAttribute("rendered","false");
w.nextMatch += endpos+3;
if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
}
}
}
}
)
function findMatchingDelimiter(src,starttext,endtext) {
var startpos = 0;
var endpos = src.indexOf(endtext);
// check for nested delimiters
while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
// count number of nested 'starts'
var startcount=0;
var temp = src.substring(startpos,endpos-1);
var pos=temp.indexOf(starttext);
while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
// set up to check for additional 'starts' after adjusting endpos
startpos=endpos+endtext.length;
// find endpos for corresponding number of matching 'ends'
while (startcount && endpos!=-1) {
endpos = src.indexOf(endtext,endpos+endtext.length);
startcount--;
}
}
return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
window.onClickNestedSlider=function(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
while (theTarget && theTarget.sliderPanel==undefined) theTarget=theTarget.parentNode;
if (!theTarget) return false;
var theSlider = theTarget.sliderPanel;
var isOpen = theSlider.style.display!="none";
// if SHIFT-CLICK, dock panel first (see [[MoveablePanelPlugin]])
if (e.shiftKey && config.macros.moveablePanel) config.macros.moveablePanel.dock(theSlider,e);
// toggle label
theTarget.innerHTML=isOpen?theTarget.getAttribute("closedText"):theTarget.getAttribute("openedText");
// toggle tooltip
theTarget.setAttribute("title",isOpen?theTarget.getAttribute("closedTip"):theTarget.getAttribute("openedTip"));
// deferred rendering (if needed)
if (theSlider.getAttribute("rendered")=="false") {
var place=theSlider;
if (theSlider.getAttribute("blockquote")=="true")
place=createTiddlyElement(place,"blockquote");
wikify(theSlider.getAttribute("raw"),place);
theSlider.setAttribute("rendered","true");
}
// show/hide the slider
if(config.options.chkAnimate && (!hasClass(theSlider,'floatingPanel') || config.options.chkFloatingSlidersAnimate))
anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
else
theSlider.style.display = isOpen ? "none" : "block";
// reset to default width (might have been changed via plugin code)
theSlider.style.width=theSlider.defaultPanelWidth;
// align floater panel position with target button
if (!isOpen && window.adjustSliderPos) window.adjustSliderPos(theSlider.parentNode,theTarget,theSlider);
// if showing panel, set focus to first 'focus-able' element in panel
if (theSlider.style.display!="none") {
var ctrls=theSlider.getElementsByTagName("*");
for (var c=0; c<ctrls.length; c++) {
var t=ctrls[c].tagName.toLowerCase();
if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
{ try{ ctrls[c].focus(); } catch(err){;} break; }
}
}
var cookie=theTarget.sliderCookie;
if (cookie && cookie.length) {
config.options[cookie]=!isOpen;
if (config.options[cookie]!=theTarget.defOpen) window.saveOptionCookie(cookie);
else window.removeCookie(cookie); // remove cookie if slider is in default display state
}
// prevent SHIFT-CLICK from being processed by browser (opens blank window... yuck!)
// prevent clicks *within* a slider button from being processed by browser
// but allow plain click to bubble up to page background (to close transients, if any)
if (e.shiftKey || theTarget!=resolveTarget(e))
{ e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); }
Popup.remove(); // close open popup (if any)
return false;
}
//}}}
//{{{
// click in document background closes transient panels
document.nestedSliders_savedOnClick=document.onclick;
document.onclick=function(ev) { if (!ev) var ev=window.event; var target=resolveTarget(ev);
if (document.nestedSliders_savedOnClick)
var retval=document.nestedSliders_savedOnClick.apply(this,arguments);
// if click was inside a popup... leave transient panels alone
var p=target; while (p) if (hasClass(p,"popup")) break; else p=p.parentNode;
if (p) return retval;
// if click was inside transient panel (or something contained by a transient panel), leave it alone
var p=target; while (p) {
if ((hasClass(p,"floatingPanel")||hasClass(p,"sliderPanel"))&&p.getAttribute("transient")=="true") break;
p=p.parentNode;
}
if (p) return retval;
// otherwise, find and close all transient panels...
var all=document.all?document.all:document.getElementsByTagName("DIV");
for (var i=0; i<all.length; i++) {
// if it is not a transient panel, or the click was on the button that opened this panel, don't close it.
if (all[i].getAttribute("transient")!="true" || all[i].button==target) continue;
// otherwise, if the panel is currently visible, close it by clicking it's button
if (all[i].style.display!="none") window.onClickNestedSlider({target:all[i].button})
if (!hasClass(all[i],"floatingPanel")&&!hasClass(all[i],"sliderPanel")) all[i].style.display="none";
}
return retval;
};
//}}}
//{{{
// adjust floating panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel) {
if (hasClass(panel,"floatingPanel") && !hasClass(panel,"undocked")) {
// see [[MoveablePanelPlugin]] for use of 'undocked'
var rightEdge=document.body.offsetWidth-1;
var panelWidth=panel.offsetWidth;
var left=0;
var top=btn.offsetHeight;
if (place.style.position=="relative" && findPosX(btn)+panelWidth>rightEdge) {
left-=findPosX(btn)+panelWidth-rightEdge; // shift panel relative to button
if (findPosX(btn)+left<0) left=-findPosX(btn); // stay within left edge
}
if (place.style.position!="relative") {
var left=findPosX(btn);
var top=findPosY(btn)+btn.offsetHeight;
var p=place; while (p && !hasClass(p,'floatingPanel')) p=p.parentNode;
if (p) { left-=findPosX(p); top-=findPosY(p); }
if (left+panelWidth>rightEdge) left=rightEdge-panelWidth;
if (left<0) left=0;
}
panel.style.left=left+"px"; panel.style.top=top+"px";
}
}
//}}}
//{{{
// TW2.1 and earlier:
// hijack Slider stop handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function()
{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }
// TW2.2+
// hijack Morpher stop handler so sliderPanel/floatingPanel overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
Morpher.prototype.coreStop = Morpher.prototype.stop;
Morpher.prototype.stop = function() {
this.coreStop.apply(this,arguments);
var e=this.element;
if (hasClass(e,"sliderPanel")||hasClass(e,"floatingPanel")) {
// adjust panel overflow and position after animation
e.style.overflow = "visible";
if (window.adjustSliderPos) window.adjustSliderPos(e.parentNode,e.button,e);
}
};
}
//}}}
[[Options de Recherche et plus|OptionsRecherche]]
''Exemple_BetterTimeline''
----
|! ~SpecialTags | Tenir compte lors d'une recherche |
|excludeLists | Ajouter ce libellé à tous les Éléments qu'on ne veut pas voir dans le menu de droite [la partie d'en bas avec les onglets (SideBarTabs)] |
|excludeSearch | Ajouter ce libellé à tous les Éléments qu'on ne veut pas voir dans le Résulat de la recherche (search results). |
|systemConfig | Les Éléments avec le libellé ''systemConfig'' contient du code Javascripts pour les Extensions (plugins, ~CustomMacros). Démarrent au début. |
|systemTiddler | # DefaultTiddlers - # MainMenu - # SiteSubtitle - # SiteTitle - # SiteUrl |
----
!<<gradient horiz #fc3 #F0F>>Recherche et + encore.>>
!!<<gradient horiz #fc3 #fff>>Choisir ses options de recherche>>
Modifier_OptionsRecherche (elles sont francisées)
!!<<gradient horiz #fc3 #fff>>Derniers créés ou modifiés:>>
Derniers créés ou modifiés: +++
| !Liens | !Code |
| [[Les dernières créations|DerniersCréés]] | {{{<<timeline "created" "50" "ddd, 0DD-0MM-YYYY">>}}} |
| [[Les derniers modifiés|DerniersModifiés]] | {{{<<timeline "modified" "50" "ddd, 0DD-0MM-YYYY">>}}} |
| // En éditant le fichier vous présentant les résultats, vous pouvez modifier le nombre à votre guise.// |>|
===
!!<<gradient vert #fc3 #fff>>Rechercher des fichiers classés par Date, Auteur, Tags... >>
Table des matières: +++
<<runTiddler TableOfContentsPlugin>><<tableOfContents "label:Choisir un ordre de clasement (par date, auteur...) puis un tiddler" date:YYYY.0MM.0DD width:100% padding:0 margin:0>><script>place.lastChild.lastChild.style.color="#000";</script>
===
!!<<gradient horiz #fc3 #fff>>Recherche par taille et +>>
Visualiser des fichiers avec [[QuickMenu|QuickMenu]]
----
!!<<gradient horiz #fff #333>>Pour comparer 2 éléments >>
Choisir les 2 éléments à comparer: [[Comparer des tiddlers.|Compare_Éléments]]
----
!!<<gradient horiz #fc3 #4EB93E>>Ajuster les paramètres des éléments (tiddlers) >>
Modifier les tiddlers: +++
<<tiddlerTweaker>>
===
----
!!<<gradient horiz #4EB93E #fff >>Exporter >>
Choisir: +++ <<exportTiddlers inline>> ===
!!! Add a tab to Backstage
+++[See how]
<<<
<<tiddler BackstageTabTweak>>
<<<
===
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 19, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.2.0 (Beta 5)'
};
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");
merge(config.macros.option.types, {
'pas': {
elementType: "input",
valueField: "value",
eventName: "onkeyup",
className: "pasOptionInput",
typeValue: config.macros.option.passwordInputType,
create: function(place,type,opt,className,desc) {
// password field
config.macros.option.genericCreate(place,'pas',opt,className,desc);
// checkbox linked with this password "save this password on this computer"
config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
},
onChange: config.macros.option.genericOnChange
}
});
merge(config.optionHandlers['chk'], {
get: function(name) {
// is there an option linked with this chk ?
var opt = name.substr(3);
if (config.options[opt])
saveOptionCookie(opt);
return config.options[name] ? "true" : "false";
}
});
merge(config.optionHandlers, {
'pas': {
get: function(name) {
if (config.options["chk"+name]) {
return encodeCookie(config.options[name].toString());
} else {
return "";
}
},
set: function(name,value) {config.options[name] = decodeCookie(value);}
}
});
// need to reload options to load passwordOptions
loadOptionsCookie();
/*
if (!config.options['pasPassword'])
config.options['pasPassword'] = '';
merge(config.optionsDesc,{
pasPassword: "Test password"
});
*/
//}}}
<<quickNote dateformat:"-YYYY-0MM-0DD_0hh-0mm-0ss" tags:"petite-note aClasser">>
/***
|Name|QuoteOfTheDayPlugin|
|Source|http://www.TiddlyTools.com/#QuoteOfTheDayPlugin|
|Documentation|http://www.TiddlyTools.com/#QuoteOfTheDayPluginInfo|
|Version|1.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Display a randomly selected "quote of the day" from a list defined in a separate tiddler|
!!!!!Documentation
>see [[QuoteOfTheDayPluginInfo]]
!!!!!Revisions
<<<
2008.03.21 [1.4.1] in showNextItem(), corrected handling for random selection so that //initial// index value will randomized correctly instead of always showing first item, even when randomizing. Thanks to Riccardo Gherardi for finding this.
| Please see [[QuoteOfTheDayPluginInfo]] for previous revision details |
2005.10.21 [1.0.0] Initial Release. Based on a suggestion by M.Russula
<<<
!!!!!Code
***/
//{{{
version.extensions.QuoteOfTheDayPlugin= {major: 1, minor: 4, revision: 1, date: new Date(2008,3,21)};
config.macros.QOTD = {
clickTooltip: "click to view another item",
timerTooltip: "auto-timer stopped... 'mouseout' to restart timer",
timerClickTooltip: "auto-timer stopped... click to view another item, or 'mouseout' to restart timer",
handler:
function(place,macroName,params) {
var tid=params.shift(); // source tiddler containing HR-separated quotes
var p=params.shift();
var click=true; // allow click for next item
var inline=false; // wrap in slider for animation effect
var random=true; // pick an item at random (default for "quote of the day" usage)
var folder=false; // use local filesystem folder list
var cookie=""; // default to no cookie
var next=0; // default to first item (or random item)
while (p) {
if (p.toLowerCase()=="noclick") var click=false;
if (p.toLowerCase()=="inline") var inline=true;
if (p.toLowerCase()=="norandom") var random=false;
if (p.toLowerCase().substr(0,7)=="cookie:") var cookie=p.substr(8);
if (!isNaN(p)) var delay=p;
p=params.shift();
}
if ((click||delay) && !inline) {
var panel = createTiddlyElement(null,"div",null,"sliderPanel");
panel.style.display="none";
place.appendChild(panel);
var here=createTiddlyElement(panel,click?"a":"span",null,"QOTD");
}
else
var here=createTiddlyElement(place,click?"a":"span",null,"QOTD");
here.id=(new Date()).convertToYYYYMMDDHHMMSSMMM()+Math.random().toString(); // unique ID
// get items from tiddler or file list
var list=store.getTiddlerText(tid,"");
if (!list||!list.length) { // not a tiddler... maybe an image directory?
var list=this.getImageFileList(tid);
if (!list.length) { // maybe relative path... fixup and try again
var h=document.location.href;
var p=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1)));
var list=this.getImageFileList(p+tid);
}
}
if (!list||!list.length) return false; // no contents... nothing to display!
here.setAttribute("list",list);
if (delay) here.setAttribute("delay",delay);
here.setAttribute("random",random);
here.setAttribute("cookie",cookie);
if (click) {
here.title=this.clickTooltip
if (!inline) here.style.display="block";
here.setAttribute("href","javascript:;");
here.onclick=function(event)
{ config.macros.QOTD.showNextItem(this); }
}
if (config.options["txtQOTD_"+cookie]!=undefined) next=parseInt(config.options["txtQOTD_"+cookie]);
here.setAttribute("nextItem",next);
config.macros.QOTD.showNextItem(here);
if (delay) {
here.title=click?this.timerClickTooltip:this.timerTooltip
here.onmouseover=function(event)
{ clearTimeout(this.ticker); };
here.onmouseout=function(event)
{ this.ticker=setTimeout("config.macros.QOTD.tick('"+this.id+"')",this.getAttribute("delay")); };
here.ticker=setTimeout("config.macros.QOTD.tick('"+here.id+"')",delay);
}
},
tick: function(id) {
var here=document.getElementById(id); if (!here) return;
config.macros.QOTD.showNextItem(here);
here.ticker=setTimeout("config.macros.QOTD.tick('"+id+"')",here.getAttribute("delay"));
},
showNextItem:
function (here) {
// hide containing slider panel (if any)
var p=here.parentNode;
if (p.className=="sliderPanel") p.style.display = "none"
// get a new quote
var index=here.getAttribute("nextItem");
var items=here.getAttribute("list").split("\n----\n");
if (index<0||index>=items.length) index=0;
if (here.getAttribute("random")=="true") index=Math.floor(Math.random()*items.length);
var txt=items[index];
// re-render quote display element, and advance index counter
removeChildren(here); wikify(txt,here);
index++; here.setAttribute("nextItem",index);
var cookie=here.getAttribute("cookie");
if (cookie.length) {
config.options["txtQOTD_"+cookie]=index.toString();
saveOptionCookie("txtQOTD_"+cookie);
}
// redisplay slider panel (if any)
if (p.className=="sliderPanel") {
if(anim && config.options.chkAnimate)
anim.startAnimating(new Slider(p,true,false,"none"));
else p.style.display="block";
}
},
getImageFileList: function(cwd) { // returns HR-separated list of image files
function isImage(fn) {
var ext=fn.substr(fn.length-3,3).toLowerCase();
return ext=="jpg"||ext=="gif"||ext=="png";
}
var files=[];
if (config.browser.isIE) {
cwd=cwd.replace(/\//g,"\\");
// IE uses ActiveX to read filesystem info
var fso = new ActiveXObject("Scripting.FileSystemObject");
if(!fso.FolderExists(cwd)) return [];
var dir=fso.GetFolder(cwd);
for(var f=new Enumerator(dir.Files); !f.atEnd(); f.moveNext())
if (isImage(f.item().path)) files.push("[img[%0]]".format(["file:///"+f.item().path.replace(/\\/g,"/")]));
} else {
// FireFox (mozilla) uses "components" to read filesystem info
// get security access
if(!window.Components) return;
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
catch(e) { alert(e.description?e.description:e.toString()); return []; }
// open/validate directory
var file=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
try { file.initWithPath(cwd); } catch(e) { return []; }
if (!file.exists() || !file.isDirectory()) { return []; }
var folder=file.directoryEntries;
while (folder.hasMoreElements()) {
var f=folder.getNext().QueryInterface(Components.interfaces.nsILocalFile);
if (f instanceof Components.interfaces.nsILocalFile)
if (isImage(f.path)) files.push("[img[%0]]".format(["file:///"+f.path.replace(/\\/g,"/")]));
}
}
return files.join("\n----\n");
}
}
//}}}
C'est grâce à Jeremy Ruston qui en a publié la première version le 20 septembre 2004
sous une des licenses les plus libres du monde informatique.
http://fr.wikipedia.org/wiki/TiddlyWiki
http://fr.wikipedia.org/wiki/Licence_BSD
/***
|Name|SaveAndReloadMacro|
|Author:|SaqImtiaz|
|Modifier|''Michel Ayotte''|
|Source|http://tw.lewcid.org/#SaveAndReloadMacro|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Provides a button to save and reload TW. Useful if you are testing code and dont have AutoSave enabled.
!Demo:
{{{<<saveAndReload>>}}}<<saveAndReload>>
!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
!History:
*24-07-06: ver 1.0
!Code
***/
//{{{
config.macros.saveAndReload={};
config.macros.saveAndReload.handler= function(place,macroName,params,wikifier,paramString,tiddler)
{
var label = params[0]||"Enregistrer & Recharger";
var tooltip = params[1]||"Enregistrer & Recharger";
createTiddlyButton(place,label,tooltip,this.onclick);
}
config.macros.saveAndReload.onclick= function()
{
saveChanges();
window.location.reload( false );
}
//}}}
Rechercher dans:
{{nowrap{<<option chkSearchOpenTiddlers>>Rechercher dans les éléments ouverts}}}
----
{{nowrap{<<option chkSearchTitles>>Titres <<option chkSearchText>>Texte <<option chkSearchTags>>Libellés}}} /%
%/{{nowrap{<<option chkSearchFields>>Champs <<option chkSearchShadows>>Masqués}}}
----
{{nowrap{<<option chkCaseSensitiveSearch>>Recherche sensible à la casse}}} /%
%/{{nowrap{<<option chkRegExpSearch>>Recherche des correspondances de modèle d'expression régulière}}}
{{nowrap{<<option chkIncrementalSearch>>Nombre de touches frappées lançant la recherche}}} /%
%/{{threechar smallform nowrap{<<option txtIncrementalSearchMin>> ou plus de caractères - }}} /%
%/{{threechar smallform nowrap{Délais: <<option txtIncrementalSearchDelay>> mili-secondes}}}<hr>
{{nowrap{<<option chkSearchList>>Afficher les résultats dans une liste}}} /%
%/{{nowrap{<<option chkSearchListTiddler>>Créer l'élément [[SearchResults]] contenant la liste des trouvés.}}}
{{nowrap{<<option chkSearchTitlesFirst>>Titres en premier}}} /%
%/{{nowrap{<<option chkSearchByDate>>Classer par date}}} /%
%/{{nowrap{<<option chkSearchHighlight>>Emphase du texte trouvé}}}
----
{{nowrap{<<option chkSearchExcludeTags>>Exclure les éléments dont les libellés sont par exemple:
*''excludeSearch''(ne s'affichent pas dans les recherches),
*''excludeList'' (ne sont pas affichés dans les onglets du menu de droite),
*''excludeMissing'' (ne s'affichent pas dans l'onglet //Orphelins// du menu de droite),
*''excludeShadowed'' (ne s'affichent pas dans l'onglet //Masqués)// du menu de droite}}}
{{editor{<<option txtSearchExcludeTags>>}}}
|! ~SpecialTags | !À tenir compte lors d'une recherche |
|excludeLists | Ajouter ce libellé à tous les Éléments qu'on ne veut pas voir dans le menu de droite [la partie d'en bas avec les onglets (SideBarTabs)] |
|excludeSearch | Ajouter ce libellé à tous les Éléments qu'on ne veut pas voir dans le Résulat de la recherche (search results). |
|systemConfig | Les Éléments avec le libellé ''systemConfig'' contiennent du code Javascripts pour les Extensions (plugins, ~CustomMacros). <br>__Démarrent au chargement du tiddlywiki__. |
|systemTiddler | # DefaultTiddlers - # MainMenu - # SiteSubtitle - # SiteTitle - # SiteUrl |
/***
|Name|SearchOptionsPlugin|
|Source|http://www.TiddlyTools.com/#SearchOptionsPlugin|
|Documentation|http://www.TiddlyTools.com/#SearchOptionsPluginInfo|
|Version|3.0.10|
|Author|Eric Shulman|
|Traduction & ajouts|Michel Ayotte|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|extend core search function with additional user-configurable options|
Adds extra options to core search function including selecting which data items to search, enabling/disabling incremental key-by-key searches, and generating a ''list of matching tiddlers'' instead of immediately displaying all matches. This plugin also adds syntax for rendering 'search links' within tiddler content to embed one-click searches using pre-defined 'hard-coded' search terms.
!!!!!Documentation
>see [[SearchOptionsPluginInfo]]
!!!!!Configuration
<<<
<<tiddler SearchOptions>>
<<option chkSearchResultsOptions>> Include {{{options...}}} slider in "search again" form
<<<
!!!!!Revisions
<<<
2011.04.08 3.0.10 fixed typo in CSS in formatSearchResults_buttons(). Restore missing options in Configuration section.
|please see [[SearchOptionsPluginInfo]] for additional revision details|
2005.10.18 1.0.0 Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.SearchOptionsPlugin= {major: 3, minor: 0, revision: 10, date: new Date(2011,3,18)};
//}}}
//{{{
var defaults={
chkSearchTitles: true,
chkSearchText: true,
chkSearchTags: true,
chkSearchFields: true,
chkSearchTitlesFirst: true,
chkSearchList: true,
chkSearchHighlight: true,
chkSearchListTiddler: false,
chkSearchByDate: false,
chkIncrementalSearch: true,
chkSearchShadows: true,
chkSearchOpenTiddlers: false,
chkSearchResultsOptions:true,
chkSearchExcludeTags: true,
txtSearchExcludeTags: 'excludeSearch',
txtIncrementalSearchDelay: 500,
txtIncrementalSearchMin: 3
}; for (var id in defaults) if (config.options[id]===undefined)
config.options[id]=defaults[id];
if (config.macros.search.reportTitle==undefined)
config.macros.search.reportTitle="SearchResults"; // note: not a cookie!
config.macros.search.label+="\xa0"; // a little bit of space just because it looks better
//}}}
// // searchLink: {{{[search[text to find]] OR [search[text to display|text to find]]}}}
//{{{
config.formatters.push( {
name: "searchLink",
match: "\\[search\\[",
lookaheadRegExp: /\[search\[(.*?)(?:\|(.*?))?\]\]/mg,
prompt: "search for: '%0'",
handler: function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var label=lookaheadMatch[1];
var text=lookaheadMatch[2]||label;
var prompt=this.prompt.format([text]);
var btn=createTiddlyButton(w.output,label,prompt,
function(){story.search(this.getAttribute("searchText"))},"searchLink");
btn.setAttribute("searchText",text);
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
});
//}}}
// // incremental search uses option settings instead of hard-coded delay and minimum input values
//{{{
var fn=config.macros.search.onKeyPress;
fn=fn.toString().replace(/500/g, "config.options.txtIncrementalSearchDelay||500");
fn=fn.toString().replace(/> 2/g, ">=(config.options.txtIncrementalSearchMin||3)");
eval("config.macros.search.onKeyPress="+fn);
//}}}
// // REPLACE story.search() for option to "show search results in a list"
//{{{
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
var co=config.options; // abbrev
var re=new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
if (config.options.chkSearchHighlight) highlightHack=re;
var matches = store.search(re,co.chkSearchByDate?"modified":"title","");
if (co.chkSearchByDate) matches=matches.reverse(); // most recent first
var q = useRegExp ? "/" : "'";
clearMessage();
if (!matches.length) {
if (co.chkSearchListTiddler) discardSearchResults();
displayMessage(config.macros.search.failureMsg.format([q+text+q]));
} else {
if (co.chkSearchList||co.chkSearchListTiddler)
reportSearchResults(text,matches);
else {
var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);
this.closeAllTiddlers(); story.displayTiddlers(null,titles);
displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
}
}
highlightHack = null;
}
//}}}
// // REPLACE store.search() for enhanced searching/sorting options
//{{{
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag,match)
{
var co=config.options; // abbrev
var tids = this.reverseLookup("tags",excludeTag,!!match,sortField);
var opened=[]; story.forEachTiddler(function(tid,elem){opened.push(tid);});
// eliminate tiddlers tagged with excluded tags
if (co.chkSearchExcludeTags&&co.txtSearchExcludeTags.length) {
var ex=co.txtSearchExcludeTags.readBracketedList();
var temp=[]; for(var t=tids.length-1; t>=0; t--)
if (!tids[t].tags.containsAny(ex)) temp.push(tids[t]);
tids=temp;
}
// scan for matching titles first...
var results = [];
if (co.chkSearchTitles) {
for(var t=0; t<tids.length; t++) {
if (co.chkSearchOpenTiddlers && !opened.contains(tids[t].title)) continue;
if(tids[t].title.search(searchRegExp)!=-1) results.push(tids[t]);
}
if (co.chkSearchShadows)
for (var t in config.shadowTiddlers) {
if (co.chkSearchOpenTiddlers && !opened.contains(t)) continue;
if ((t.search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.push((new Tiddler()).assign(t,config.shadowTiddlers[t]));
}
}
// then scan for matching text, tags, or field data
for(var t=0; t<tids.length; t++) {
if (co.chkSearchOpenTiddlers && !opened.contains(tids[t].title)) continue;
if (co.chkSearchText && tids[t].text.search(searchRegExp)!=-1)
results.pushUnique(tids[t]);
if (co.chkSearchTags && tids[t].tags.join(" ").search(searchRegExp)!=-1)
results.pushUnique(tids[t]);
if (co.chkSearchFields && store.forEachField!=undefined)
store.forEachField(tids[t],
function(tid,field,val) {
if (val.search(searchRegExp)!=-1) results.pushUnique(tids[t]);
},
true); // extended fields only
}
// then check for matching text in shadows
if (co.chkSearchShadows)
for (var t in config.shadowTiddlers) {
if (co.chkSearchOpenTiddlers && !opened.contains(t)) continue;
if ((config.shadowTiddlers[t].search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.pushUnique((new Tiddler()).assign(t,config.shadowTiddlers[t]));
}
// if not 'titles first', or sorting by modification date,
// re-sort results to so titles, text, tag and field matches are mixed together
if(!sortField) sortField = "title";
var bySortField=function(a,b){
if(a[sortField]==b[sortField])return(0);else return(a[sortField]<b[sortField])?-1:+1;
}
if (!co.chkSearchTitlesFirst || co.chkSearchByDate) results.sort(bySortField);
return results;
}
//}}}
// // HIJACK core {{{<<search>>}}} macro to add "report" and "simple inline" output
//{{{
config.macros.search.SOP_handler=config.macros.search.handler;
config.macros.search.handler = function(place,macroName,params)
{
// if "report", use SearchOptionsPlugin report generator for inline output
if (params[1]&¶ms[1].substr(0,6)=="report") {
var keyword=params[0];
var options=params[1].split("=")[1]; // split "report=option+option+..."
var heading=params[2]?params[2].unescapeLineBreaks():"";
var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
if (matches.length) wikify(heading+window.formatSearchResults(keyword,matches,options),place);
} else if (params[1]) {
var keyword=params[0];
var heading=params[1]?params[1].unescapeLineBreaks():"";
var seperator=params[2]?params[2].unescapeLineBreaks():", ";
var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
if (matches.length) {
var out=[];
for (var m=0; m<matches.length; m++) out.push("[["+matches[m].title+"]]");
wikify(heading+out.join(seperator),place);
}
} else
config.macros.search.SOP_handler.apply(this,arguments);
};
//}}}
// // SearchResults panel handling
//{{{
setStylesheet(".searchResults { padding:1em 1em 0 1em; }","searchResults"); // matches std tiddler padding
config.macros.search.createPanel=function(text,matches,body) {
function getByClass(e,c) { var d=e.getElementsByTagName("div");
for (var i=0;i<d.length;i++) if (hasClass(d[i],c)) return d[i]; }
var panel=createTiddlyElement(null,"div","searchPanel","searchPanel");
this.renderPanel(panel,text,matches,body);
var oldpanel=document.getElementById("searchPanel");
if (!oldpanel) { // insert new panel just above tiddlers
var da=document.getElementById("displayArea");
da.insertBefore(panel,da.firstChild);
} else { // if panel exists
var oldwrap=getByClass(oldpanel,"searchResults");
var newwrap=getByClass(panel,"searchResults");
// if no prior content, just insert new content
if (!oldwrap) oldpanel.insertBefore(newwrap,null);
else { // swap search results content but leave containing panel intact
oldwrap.style.display='block'; // unfold wrapper if needed
var i=oldwrap.getElementsByTagName("input")[0]; // get input field
if (i) { var pos=this.getCursorPos(i); i.onblur=null; } // get cursor pos, ignore blur
oldpanel.replaceChild(newwrap,oldwrap);
panel=oldpanel; // use existing panel
}
}
this.showPanel(true,pos);
return panel;
}
config.macros.search.renderPanel=function(panel,text,matches,body) {
var wrap=createTiddlyElement(panel,"div",null,"searchResults");
wrap.onmouseover = function(e){ addClass(this,"selected"); }
wrap.onmouseout = function(e){ removeClass(this,"selected"); }
// create toolbar: "open all", "fold/unfold", "close"
var tb=createTiddlyElement(wrap,"div",null,"toolbar");
var b=createTiddlyButton(tb, "open all", "open all matching tiddlers", function() {
story.displayTiddlers(null,this.getAttribute("list").readBracketedList()); return false; },"button");
var list=""; for(var t=0;t<matches.length;t++) list+='[['+matches[t].title+']] ';
b.setAttribute("list",list);
var b=createTiddlyButton(tb, "fold", "toggle display of search results", function() {
config.macros.search.foldPanel(this); return false; },"button");
var b=createTiddlyButton(tb, "close", "dismiss search results", function() {
config.macros.search.showPanel(false); return false; },"button");
createTiddlyText(createTiddlyElement(wrap,"div",null,"title"),"Search for: "+text); // title
wikify(body,createTiddlyElement(wrap,"div",null,"viewer")); // report
return panel;
}
config.macros.search.showPanel=function(show,pos) {
var panel=document.getElementById("searchPanel");
var i=panel.getElementsByTagName("input")[0];
i.onfocus=show?function(){config.macros.search.stayFocused(true);}:null;
i.onblur=show?function(){config.macros.search.stayFocused(false);}:null;
if (show && panel.style.display=="block") { // if shown, grab focus, restore cursor
if (i&&this.stayFocused()) { i.focus(); this.setCursorPos(i,pos); }
return;
}
if(!config.options.chkAnimate) {
panel.style.display=show?"block":"none";
if (!show) { removeChildren(panel); config.macros.search.stayFocused(false); }
} else {
var s=new Slider(panel,show,false,show?"none":"children");
s.callback=function(e,p){e.style.overflow="visible";}
anim.startAnimating(s);
}
return panel;
}
config.macros.search.foldPanel=function(button) {
var d=document.getElementById("searchPanel").getElementsByTagName("div");
for (var i=0;i<d.length;i++) if (hasClass(d[i],"viewer")) var v=d[i]; if (!v) return;
var show=v.style.display=="none";
if(!config.options.chkAnimate)
v.style.display=show?"block":"none";
else {
var s=new Slider(v,show,false,"none");
s.callback=function(e,p){e.style.overflow="visible";}
anim.startAnimating(s);
}
button.innerHTML=show?"fold":"unfold";
return false;
}
config.macros.search.stayFocused=function(keep) { // TRUE/FALSE=set value, no args=get value
if (keep===undefined) return this.keepReportInFocus;
this.keepReportInFocus=keep;
return keep
}
config.macros.search.getCursorPos=function(i) {
var s=0; var e=0; if (!i) return { start:s, end:e };
try {
if (i.setSelectionRange) // FF
{ s=i.selectionStart; e=i.selectionEnd; }
if (document.selection && document.selection.createRange) { // IE
var r=document.selection.createRange().duplicate();
var len=r.text.length; s=0-r.moveStart('character',-100000); e=s+len;
}
}catch(e){};
return { start:s, end:e };
}
config.macros.search.setCursorPos=function(i,pos) {
if (!i||!pos) return; var s=pos.start; var e=pos.end;
if (i.setSelectionRange) //FF
i.setSelectionRange(s,e);
if (i.createTextRange) // IE
{ var r=i.createTextRange(); r.collapse(true); r.moveStart("character",s); r.select(); }
}
//}}}
// // SearchResults report generation
// note: these functions are defined globally, so they can be more easily redefined to customize report formats//
//{{{
if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
{
var cms=config.macros.search; // abbrev
var body=window.formatSearchResults(text,matches);
if (!config.options.chkSearchListTiddler) // show #searchResults panel
window.scrollTo(0,ensureVisible(cms.createPanel(text,matches,body)));
else { // write [[SearchResults]] tiddler
var title=cms.reportTitle;
var who=config.options.txtUserName;
var when=new Date();
var tags="excludeLists excludeSearch temporary";
var tid=store.getTiddler(title); if (!tid) tid=new Tiddler();
tid.set(title,body,who,when,tags);
store.addTiddler(tid);
story.closeTiddler(title);
story.displayTiddler(null,title);
}
}
if (!window.formatSearchResults) window.formatSearchResults=function(text,matches,opt)
{
var body='';
var title=config.macros.search.reportTitle
var q = config.options.chkRegExpSearch ? "/" : "'";
if (!opt) var opt="all";
var parts=opt.split("+");
for (var i=0; i<parts.length; i++) { var p=parts[i].toLowerCase();
if (p=="again"||p=="all") body+=window.formatSearchResults_again(text,matches);
if (p=="summary"||p=="all") body+=window.formatSearchResults_summary(text,matches);
if (p=="list"||p=="all") body+=window.formatSearchResults_list(text,matches);
if (p=="buttons"||p=="all") body+=window.formatSearchResults_buttons(text,matches);
}
return body;
}
if (!window.formatSearchResults_again) window.formatSearchResults_again=function(text,matches)
{
var title=config.macros.search.reportTitle
var body='';
// search again
body+='{{span{<<search "'+text.replace(/"/g,'"')+'">> /%\n';
body+='%/<html><input type="button" value="Rechercher encore"';
body+=' onclick="var t=this.parentNode.parentNode.getElementsByTagName(\'input\')[0];';
body+=' config.macros.search.doSearch(t); return false;">';
if (!config.options.chkSearchResultsOptions) // omit "options..."
body+='</html>';
else {
body+=' <a href="javascript:;" onclick="';
body+=' var e=this.parentNode.nextSibling;';
body+=' var show=e.style.display!=\'block\';';
body+=' if(!config.options.chkAnimate) e.style.display=show?\'block\':\'none\';';
body+=' else anim.startAnimating(new Slider(e,show,false,\'none\'));';
body+=' return false;">options...</a>';
body+='</html>@@display:none;border-left:1px dotted;margin-left:1em;padding:0;padding-left:.5em;font-size:90%;/%\n';
body+=' %/<<tiddler SearchOptions>>@@';
};
body+='}}}\n\n';
return body;
}
if (!window.formatSearchResults_summary) window.formatSearchResults_summary=function(text,matches)
{
// summary: nn tiddlers found matching '...', options used
var body='';
var co=config.options; // abbrev
var title=config.macros.search.reportTitle
var q = co.chkRegExpSearch ? "/" : "'";
body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\n";
var opts=[];
if (co.chkSearchTitles) opts.push("titles");
if (co.chkSearchText) opts.push("text");
if (co.chkSearchTags) opts.push("tags");
if (co.chkSearchFields) opts.push("fields");
if (co.chkSearchShadows) opts.push("shadows");
if (co.chkSearchOpenTiddlers) body+="^^//search limited to displayed tiddlers only//^^\n";
body+="~~ searched in "+opts.join(" + ")+"~~\n";
body+=(co.chkCaseSensitiveSearch||co.chkRegExpSearch?"^^ using ":"")
+(co.chkCaseSensitiveSearch?"case-sensitive ":"")
+(co.chkRegExpSearch?"pattern ":"")
+(co.chkCaseSensitiveSearch||co.chkRegExpSearch?"matching^^\n":"");
return body;
}
if (!window.formatSearchResults_list) window.formatSearchResults_list=function(text,matches)
{
// bullet list of links to matching tiddlers
var body='';
var co=config.options; // abbrev
var pattern=co.chkRegExpSearch?text:text.escapeRegExp();
var sensitive=co.chkCaseSensitiveSearch?"mg":"img";
var link='{{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="'
+'if(config.options.chkSearchHighlight)'
+' highlightHack=new RegExp(\x27'+pattern+'\x27.escapeRegExp(),\x27'+sensitive+'\x27);'
+'story.displayTiddler(null,\x27%0\x27);'
+'highlightHack = null; return false;'
+'" title="%2">%1</a></html>}}}';
for(var t=0;t<matches.length;t++) {
body+="* ";
if (co.chkSearchByDate)
body+=matches[t].modified.formatString('YYYY.0MM.0DD 0hh:0mm')+" ";
var title=matches[t].title;
var fixup=title.replace(/'/g,"\\x27").replace(/"/g,"\\x22");
var tid=store.getTiddler(title);
var tip=tid?tid.getSubtitle():''; tip=tip.replace(/"/g,""");
body+=link.format([fixup,title,tip])+'\n';
}
return body;
}
if (!window.formatSearchResults_buttons) window.formatSearchResults_buttons=function(text,matches)
{
// embed buttons only if writing SearchResults to tiddler
if (!config.options.chkSearchListTiddler) return "";
// "open all" button
var title=config.macros.search.reportTitle;
var body="";
body+="@@display:block;<html><input type=\"button\" href=\"javascript:;\" "
+"onclick=\"story.displayTiddlers(null,[";
for(var t=0;t<matches.length;t++)
body+="'"+matches[t].title.replace(/\'/mg,"\\'")+"'"+((t<matches.length-1)?", ":"");
body+="],1);\" accesskey=\"O\" value=\"open all matching tiddlers\"></html> ";
// "discard SearchResults" button
body+="<html><input type=\"button\" href=\"javascript:;\" "
+"onclick=\"discardSearchResults()\" value=\"discard "+title+"\"></html>";
body+="@@\n";
return body;
}
if (!window.discardSearchResults) window.discardSearchResults=function()
{
// remove the tiddler
story.closeTiddler(config.macros.search.reportTitle);
store.deleteTiddler(config.macros.search.reportTitle);
store.notify(config.macros.search.reportTitle,true);
}
//}}}
// // DELIVER [[SearchOptions]] shadow payload
//{{{
config.shadowTiddlers.SearchOptions = store.getTiddlerText('SearchOptionsPlugin##panel','');
config.annotations.SearchOptions = 'created by SearchOptionsPlugin';
//}}}
/***
//{{{
!panel
Rechercher dans:
{{nowrap{<<option chkSearchOpenTiddlers>>Rechercher dans les éléments ouverts}}}
----
{{nowrap{<<option chkSearchTitles>>Titres <<option chkSearchText>>Texte <<option chkSearchTags>>Libellés}}} /%
%/{{nowrap{<<option chkSearchFields>>Champs <<option chkSearchShadows>>Masqués}}}
----
{{nowrap{<<option chkCaseSensitiveSearch>>Recherche sensible à la casse}}} /%
%/{{nowrap{<<option chkRegExpSearch>>Recherche des correspondances de modèle d'expression régulière}}}
{{nowrap{<<option chkIncrementalSearch>>Nombre de touches frappées lançant la recherche}}} /%
%/{{threechar smallform nowrap{<<option txtIncrementalSearchMin>> ou plus de caractères - }}} /%
%/{{threechar smallform nowrap{Délais: <<option txtIncrementalSearchDelay>> mili-secondes}}}<hr>
{{nowrap{<<option chkSearchList>>Afficher les résultats dans une liste}}} /%
%/{{nowrap{<<option chkSearchListTiddler>>Créer l'élément [[SearchResults]] contenant la liste des trouvés.}}}
{{nowrap{<<option chkSearchTitlesFirst>>Titres en premier}}} /%
%/{{nowrap{<<option chkSearchByDate>>Classer par date}}} /%
%/{{nowrap{<<option chkSearchHighlight>>Emphase du texte trouvé}}}
----
{{nowrap{<<option chkSearchExcludeTags>>Exclure les éléments dont les libellés sont par exemple:
*''excludeSearch''(ne s'affichent pas dans les recherches),
*''excludeList'' (ne sont pas affichés dans les onglets du menu de droite),
*''excludeMissing'' (ne s'affichent pas dans l'onglet //Orphelins// du menu de droite),
*''excludeShadowed'' (ne s'affichent pas dans l'onglet //Masqués)// du menu de droite}}}
{{editor{<<option txtSearchExcludeTags>>}}}
|! ~SpecialTags | !À tenir compte lors d'une recherche |
|excludeLists | Ajouter ce libellé à tous les Éléments qu'on ne veut pas voir dans le menu de droite [la partie d'en bas avec les onglets (SideBarTabs)] |
|excludeSearch | Ajouter ce libellé à tous les Éléments qu'on ne veut pas voir dans le Résulat de la recherche (search results). |
|systemConfig | Les Éléments avec le libellé ''systemConfig'' contient du code Javascripts pour les Extensions (plugins, ~CustomMacros). Démarrent au chargement du tiddlywiki. |
|systemTiddler | # DefaultTiddlers - # MainMenu - # SiteSubtitle - # SiteTitle - # SiteUrl |
!end
//}}}
***/
{{span{<<search "site">> /%
%/<html><input type="button" value="Rechercher encore" onclick="var t=this.parentNode.parentNode.getElementsByTagName('input')[0]; config.macros.search.doSearch(t); return false;"> <a href="javascript:;" onclick=" var e=this.parentNode.nextSibling; var show=e.style.display!='block'; if(!config.options.chkAnimate) e.style.display=show?'block':'none'; else anim.startAnimating(new Slider(e,show,false,'none')); return false;">options...</a></html>@@display:none;border-left:1px dotted;margin-left:1em;padding:0;padding-left:.5em;font-size:90%;/%
%/<<tiddler SearchOptions>>@@}}}
''3 tiddlers found matching '{{{site}}}'''
~~ searched in titles~~
* 2015.11.26 21:06 {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight) highlightHack=new RegExp('site'.escapeRegExp(),'img');story.displayTiddler(null,'SiteTitle');highlightHack = null; return false;" title="SiteTitle - michelayotte, 2015-11-26 21:06:30">SiteTitle</a></html>}}}
* 2014.02.19 20:21 {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight) highlightHack=new RegExp('site'.escapeRegExp(),'img');story.displayTiddler(null,'SiteSubtitle');highlightHack = null; return false;" title="SiteSubtitle - VotreNom, 2014-02-19 20:21:00">SiteSubtitle</a></html>}}}
* 2014.01.28 20:41 {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight) highlightHack=new RegExp('site'.escapeRegExp(),'img');story.displayTiddler(null,'MiA_SiteSubtite');highlightHack = null; return false;" title="MiA_SiteSubtite - MichelAyotte, 2014-01-28 20:41:00">MiA_SiteSubtite</a></html>}}}
@@display:block;<html><input type="button" href="javascript:;" onclick="story.displayTiddlers(null,['SiteTitle', 'SiteSubtitle', 'MiA_SiteSubtite'],1);" accesskey="O" value="open all matching tiddlers"></html> <html><input type="button" href="javascript:;" onclick="discardSearchResults()" value="discard SearchResults"></html>@@
/***
|''Name:''|SettingsPlugin|
|''Version:''|1.1.0 (2006-07-30)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#SettingsPlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[SettingsPlugin Documentation]]|
|''~SourceCode:''|[[SettingsPlugin SourceCode]]|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''~CoreVersion:''|2.0.7|
|''Browser:''|Firefox 1.5.0.2 or better; Internet Explorer 6.0|
^^This tiddler contains compressed source code. [[Full Source Code|SettingsPlugin SourceCode]].^^
***/
// /%
if(!version.extensions.SettingsPlugin){if(version.major<2){(function(){var s="Use TiddlyWiki 2.0 or better to run the Settings Plugin.";alert(s);throw s;})();}version.extensions.SettingsPlugin={major:1,minor:1,revision:0,date:new Date(2006,6,30),type:"plugin",source:"http://tiddlywiki.abego-software.de/#SettingsPlugin",documentation:"[[SettingsPlugin Documentation]]",sourcecode:"[[SettingsPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",coreVersion:"2.0.7",browser:"Firefox 1.5.0.2 or better; Internet Explorer 6.0"};if(!window.abego){window.abego={};}if(!abego.setTiddlerText){abego.setTiddlerText=function(_2,_3,_4,_5,_6,_7){var _8=_2.getTiddler(_3);if(_8&&(_8.text==_4)){return;}var _9=config.options.chkForceMinorUpdate;var _a=!_8?_5:_8.tags;_2.suspendNotifications();try{_2.saveTiddler(_3,_3,_4,_9?undefined:config.options.txtUserName,_9?undefined:new Date(),_a);}finally{_2.resumeNotifications();}if(_7){_2.notify(_3,true);}if(!_6&&config.options.chkAutoSave){saveChanges();}};}(function(){var _b="PrivateSettings";var _c="chkUsePrivateSettings";var _d="chkMakeSettingPrivateWhenChanged";var _e=null;var _f=false;var _10=function(_11,s){var _13=s.split(";");var _14={};for(var c=0;c<_13.length;c++){var p=_13[c].indexOf("=");if(p!=-1){var _17=_13[c].substr(0,p).trim();var _18=_13[c].substr(p+1).trim();_11[_17]=unescape(_18);_14[_17]=true;}}return _14;};var _19=function(_1a){var s=store.getTiddlerText(_b);_e=s?_10(_1a,s):{};};var _1c=function(_1d){_10(_1d,document.cookie);};var _1e=function(){var _1f={};_1c(_1f);return _1f;};var _20=function(){var _21={};_19(_21);return _21;};var _22=function(_23,_24){document.cookie=_23+"="+escape(_24)+"; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";};var _25=function(_26,s,_28){var _29=_20();if(s===null){if(!_e[_26]){return;}delete _29[_26];delete _e[_26];}else{var _2a=_29[_26];if(_2a!==undefined&&_2a==s){return;}_29[_26]=s;_e[_26]=true;}var t="";for(var i in _29){if(t){t+="; ";}t+=i+"="+escape(_29[i]);}abego.setTiddlerText(store,_b,t,["excludeLists","excludeSearch"],_28);if(!_28&&config.options.chkAutoSave){saveChanges();}};config.shadowTiddlers["BSD open source license (abego Software)"]="See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";config.shadowTiddlers["SettingsPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/#%5B%5BSettingsPlugin%20Documentation%5D%5D]].\n\n^^You may copy the documentation tiddler from the website to your TiddlyWiki.\nThen you don't need to access the internet to read the documentation.^^";config.shadowTiddlers["SettingsPlugin SourceCode"]="Rightclick this [[link|http://tiddlywiki.abego-software.de/src/Plugin-Settings-src.js]] and choose 'Save target/link as...' to get the plugin source code from the abego Software website.";config.shadowTiddlers["Show Settings"]="<<showSettings>>";if(config.options[_c]===undefined){config.options[_c]=false;}if(config.options[_d]===undefined){config.options[_d]=false;}config.shadowTiddlers.AdvancedOptions+="\n''Private Settings: ''<<option "+_c+">> Use private settings. <<option "+_d+">> Make setting private when changed.   [[Show Settings]].\n^^(Private settings are stored in this ~TiddlyWiki, shared settings are stored as cookies. For more information see the [[Settings documentation|SettingsPlugin Documentation]].)^^";abego.usePrivateSettings=function(){return _f;};abego.setUsePrivateSettings=function(f){if(f!=abego.usePrivateSettings()){_f=f;loadOptionsCookie();}};abego.isUsePrivateSettingsOption=function(_2e){return _2e==_c;};abego.makeSettingPrivateWhenChanged=function(){return config.options[_d];};abego.setMakeSettingPrivateWhenChanged=function(f){config.options[_d]=f;};abego.getSettings=function(){var _30={};_1c(_30);_f=_30[_c]=="true";if(abego.usePrivateSettings()){_19(_30);}return _30;};abego.getSetting=function(_31){var s=abego.getSettings()[_31];return !s?"":s;};abego.saveSetting=function(_33,_34){if(abego.isUsePrivateSettingsOption(_33)){_22(_33,_34);abego.setUsePrivateSettings(_34=="true");loadOptionsCookie();window.alert("You changed the 'Use private settings' option.\nPlease reload your TiddlyWiki to update the settings.\n");return;}if(abego.usePrivateSettings()&&(abego.isSettingPrivate(_33)||abego.makeSettingPrivateWhenChanged())){_25(_33,_34);}else{_22(_33,_34);}};abego.isSettingPrivate=function(_35){if(abego.isUsePrivateSettingsOption(_35)){return false;}if(!_e){_20();}return !!_e[_35];};abego.isPasswordSetting=function(_36){return (_36.substr(0,3)=="pas")||(_36.substr(0,6)=="chkpas");};abego.makeSettingPrivate=function(_37,_38,_39){if(abego.isPasswordSetting(_37)){_25(_37,null,_39);return;}var _3a=_20();var _3b=_3a[_37]!==undefined;if(_38==_3b){return;}var _3c=_1e();if(_38){_25(_37,_3c[_37],_39);}else{if(_3c[_37]===undefined){_22(_37,_3a[_37]);}_25(_37,null,_39);}};abego.setAllSettingsPrivate=function(_3d,_3e){var _3f=abego.getSettings();for(var s in _3f){abego.makeSettingPrivate(s,_3d,true);}if(config.options.chkAutoSave){saveChanges();}if(_3e){story.refreshTiddler(_3e,1,true);}return false;};})();config.macros.showSettings={label:"showSettings",prompt:"Display the current TiddlyWiki settings"};config.macros.showSettings.handler=function(_41,_42,_43,_44,_45,_46){var _47=function(a){var s=a.substr(0,3);return s=="txt"||s=="chk";};var _4a=function(a,b){var s1=a.toLowerCase();var s2=b.toLowerCase();return (s1<s2)?-1:(s1==s2)?0:1;};var _4f=function(a,b){var _52=_47(a);var _53=_47(b);if(_52){if(!_53){return -1;}else{return _4a(a.substr(3),b.substr(3));}}else{if(_53){return 1;}else{return _4a(a,b);}}};var s="<html><table><tr align=\"left\"><th>Private</th><th>Name</th><th>Value</th></tr>";var c=abego.getSettings();var _56=[];for(var i in c){if(!abego.isPasswordSetting(i)){_56.push(i);}}_56.sort(_4f);for(i=0;i<_56.length;i++){var _58=_56[i];var _59=_47(_58)?_58.substr(3)+" ("+_58.substr(0,3)+"...)":_58;var _5a=abego.isUsePrivateSettingsOption(_58)?"":"<input name=\""+_58+"\" type=\"checkbox\" onclick=\"abego.onPrivateSettingClick(this)\""+(abego.isSettingPrivate(_58)?" checked":"")+"/>";s+="<tr><td align=\"right\">"+_5a+"</td><td>"+_59+"</td><td>"+c[_58]+"</td></tr>\n";}s+="</table>";s+="<a class=\"button\" title=\"Make all current settings private\" href=\"javascript:;\" onclick=\"abego.setAllSettingsPrivate(true,'"+_46.title+"',1);\">Make all private</a>";s+="<a class=\"button\" title=\"Make all current settings shared\" href=\"javascript:;\" onclick=\"abego.setAllSettingsPrivate(false,'"+_46.title+"',1);\">Make all shared</a>";s+="</html>";wikify(s,_41);};abego.onPrivateSettingClick=function(_5b){abego.makeSettingPrivate(_5b.name,_5b.checked);return false;};this.loadOptionsCookie=function(){if(safeMode){return;}var _5c=abego.getSettings();for(var _5d in _5c){var _5e=_5c[_5d];switch(_5d.substr(0,3)){case "txt":config.options[_5d]=unescape(_5e);break;case "chk":config.options[_5d]=_5e=="true";break;}}};this.saveOptionCookie=function(_5f){if(safeMode){return;}var v="";switch(_5f.substr(0,3)){case "txt":v=config.options[_5f].toString();break;case "chk":v=config.options[_5f]?"true":"false";break;}abego.saveSetting(_5f,v);};loadOptionsCookie();}
// %/
<<tabs txtMainTab "Chrono" "Affichage chronologique" TabTimeline "Tous" "Tous les tiddlers" TabAll "Mot-Clef" "Tous les Mots-Clef" TabTags "Plus" "Autres listes" TabMore>>
//de// ''Michel'' [img[MiaTw.png]]@@
/***
''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''
|Name|SplashScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#SplashScreenPlugin|
|Version|0.21 |
|Requires|~TW2.08+|
!Description:
Provides a simple splash screen that is visible while the TW is loading.
!Installation
Copy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.
!Customizing
Once the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.
!History
* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.
* 26-06-06 : version 0.2, first release
!Code
***/
//{{{
window.old_lewcid_splash_restart=window.restart;
window.restart = function()
{ if (document.getElementById("SplashScreen"))
document.getElementById("SplashScreen").style.display = "none";
if (document.getElementById("contentWrapper"))
document.getElementById("contentWrapper").style.display = "block";
window.old_lewcid_splash_restart();
if (splashScreenInstall)
{if(config.options.chkAutoSave)
{saveChanges();}
displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");
}
}
var oldText = store.getTiddlerText("MarkupPreHead");
if (oldText.indexOf("SplashScreen")==-1)
{var siteTitle = store.getTiddlerText("SiteTitle");
var splasher='\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';
if (! store.tiddlerExists("MarkupPreHead"))
{var myTiddler = store.createTiddler("MarkupPreHead");}
else
{var myTiddler = store.getTiddler("MarkupPreHead");}
myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);
store.setDirty(true);
var splashScreenInstall = true;
}
//}}}
/***
|Name|[[StoryViewerPlugin]]|
|Source|http://www.TiddlyTools.com/#StoryViewerPlugin|
|Documentation|http://www.TiddlyTools.com/#StoryViewerPluginInfo|
|Version|1.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|view a set of tiddlers using a droplist, "first/previous/next/last" links, or timed slideshow|
The {{{<<storyViewer>>}}} macro allows you to quickly ''display //and// navigate between a set of tiddlers'', using a droplist of titles and/or individual "first/previous/next/last" buttons/text links. It also provides a "slideshow" feature that permits you to ''present one tiddler at a time with a countdown timer to automatically advance to the next tiddler'' after a specified number of seconds.
!!!!!Documentation
> see [[StoryViewerPluginInfo]]
!!!!!Revisions
<<<
2011.03.11 1.4.0 added 'sort:fieldname' parameter
2011.01.24 1.3.4 in droplist onchange handler, don't clear slideshow 'started' flag (allows slideshow to continue after manual navigation)
|please see [[StoryViewerPluginInfo]] for additional revision details|
2007.10.23 1.0.0 Initial release, split {{{<<storyViewer>>}}} macro definition from [[StorySaverPlugin]] to allow separate installation of story saving vs. story viewing features.
<<<
!!!!!Code
***/
//{{{
version.extensions.StoryViewerPlugin= {major: 1, minor: 4, revision: 0, date: new Date(2011,3,11)};
config.macros.storyViewer = {
tag: "story",
storynotfoundmsg: "'%0' is an empty/unrecognized story",
firstcmd: "first",
firstbutton: "<<",
firstmsg: "first: '%0'",
nextcmd: "next",
nextbutton: ">",
nextmsg: "next: '%0'",
previouscmd: "previous",
previousbutton: "<",
prevmsg: "previous: '%0'",
lastcmd: "last",
lastbutton: ">>",
lastmsg: "last: '%0'",
refreshmsg: "redisplay '%0'",
refreshmsg: "",
autostart: false,
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var parsed=paramString.parseParams('anon',null,true,false,false);
var here=story.findContainingTiddler(place);
if (here) var tid=here.getAttribute("tiddler");
var storyname="";
var p=params.shift();
var keywords=['first','previous','here','next','last','list','links','timer','sort'];
if (!p || keywords.indexOf(p.split(':')[0])!=-1) {
// find story from current tiddler name
if (!tid) return; // not in a tiddler... do nothing!
var stories=store.getTaggedTiddlers(this.tag);
if (!stories) return;
for (var s=0; s<stories.length; s++) {
if (!stories[s].linksUpdated) stories[s].changed();
var tids=stories[s].links.slice(0);
if (tids.contains(tid)) { storyname=stories[s].title; break; }
}
if (!storyname.length) return; // current tiddler is not part of a saved story
}
else { storyname=p; p=params.shift(); } // user-specified story name
var sortby=getParam(parsed,'sort','title');
var tids=this.getStory(storyname,sortby); // get tiddler list
var target=null;
switch (p?p.split(':')[0]:'') {
case 'first':
target=tids[0];
break;
case 'previous':
var i=tids.indexOf(tid);
if (i!=-1) var target=tids[Math.max(i-1,0)];
break;
case 'here':
if (tid) target=tid;
break;
case 'next':
var i=tids.indexOf(tid);
if (i!=-1) var target=tids[Math.min(i+1,tids.length-1)];
break;
case 'last':
target=tids[tids.length-1];
break;
case 'links':
this.renderAllLinks(place,storyname);
break;
case 'timer':
var delay=parseInt(getParam(parsed,'timer',15))*1000; // msecs between slides
var autostart=params[0]=='autostart'; if (autostart) params.shift();
var action=params[0]; // null/close/fold
this.renderTimer(place,tids,tid,delay,autostart,action);
break;
case 'list':
default:
var prompt=getParam(parsed,'prompt',storyname+'...');
var nobuttons=params.contains("nobuttons");
var allbuttons=params.contains("allbuttons");
var onlybuttons=params.contains("onlybuttons");
this.renderList(place,tids,tid,storyname,prompt,nobuttons,allbuttons,onlybuttons);
break;
}
var label=getParam(parsed,'label',params[0]||target);
if (target) this.renderLink(place,tid,target,label);
},
getStory: function(storyname,sortby) { // READ TIDDLER LIST
var tids=[];
var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
var tagged=store.sortTiddlers(fn.apply(store,[storyname]),sortby||'title');
if (tagged.length) // if storyname is a tag, get tagged tiddlers rather than links
for (var t=0; t<tagged.length; t++) tids.push(tagged[t].title);
else {
var t=store.getTiddler(storyname);
if (t && !t.linksUpdated) t.changed();
var tids=t?t.links.slice(0):[];
}
return tids;
},
renderLink: function(place,tid,target,label) {
// override default labelling with specified text (if any)
if (tid==target) { // self-referential links turn into 'refresh links'
var btn=createTiddlyButton(place,null,this.refreshmsg.format([tid]), function() {
var here=story.findContainingTiddler(place).getAttribute("tiddler");
story.refreshTiddler(here,null,true);
});
wikify(label,btn);
}
else // create link
wikify(label,createTiddlyLink(place,target,false));
},
renderAllLinks: function(place,storyname) {
var out="{{floatleft{";
out+="<<storyViewer [["+storyname+"]] first first>> ";
out+="<<storyViewer [["+storyname+"]] previous previous>> ";
out+="}}}";
out+="{{floatright{";
out+=" <<storyViewer [["+storyname+"]] next next>>";
out+=" <<storyViewer [["+storyname+"]] last last>>";
out+="}}}";
out+="{{center{<<storyViewer [["+storyname+"]] here>>}}}";
wikify(out,place);
},
renderList: function(place,tids,tid,storyname,prompt,nobuttons,allbuttons,onlybuttons) {
var h="";
h+='<form style="display:inline">';
if ((!nobuttons||onlybuttons) && allbuttons) {
h+='<input type="button" value="'+this.firstbutton+'" ';
h+=' style="padding:0" title="'+(tids[0]?this.firstmsg.format([tids[0]]):'')+'"';
h+=' onclick="if (this.form.list.length<2) return; ';
h+=' this.form.list.selectedIndex=1; this.form.list.onchange();">';
}
if (!nobuttons||onlybuttons) {
h+='<input type="button" value="'+this.previousbutton+'" style="padding:0 0.3em"';
h+=' onclick="if (this.form.list.length<2) return; ';
h+=' var i=this.form.list.selectedIndex-1; if (i<1) i=1; ';
h+=' this.form.list.selectedIndex=i; this.form.list.onchange();"';
h+=' onmouseover="if (this.form.list.length<2) return; ';
h+=' var i=this.form.list.selectedIndex-1; if (i<1) i=1; ';
h+=' var v=this.form.list.options[i].value; if (!v.length) return; ';
h+=' this.title=config.macros.storyViewer.prevmsg.format([v]);">';
}
h+='<select size="1" name="list"';
if (onlybuttons) h+=' style="display:none;"';
h+=' onchange="if (this.value) story.displayTiddler(this,this.value);">';
h+='<option value="">'+prompt+'</option>';
for (i=0; i<tids.length; i++) {
h+='<option '+
(tids[i]==tid?'selected ':'')+
'value="'+tids[i]+'">\xa0\xa0'+tids[i]+'</option>';
}
h+='</select>';
if (!nobuttons||onlybuttons) {
h+='<input type="button" value="'+this.nextbutton+'" style="padding:0 0.3em"';
h+=' onclick="var i=this.form.list.selectedIndex+1; ';
h+=' if (i>this.form.list.options.length-1) i=this.form.list.options.length-1; ';
h+=' this.form.list.selectedIndex=i; this.form.list.onchange();"';
h+=' onmouseover="var i=this.form.list.selectedIndex+1; ';
h+=' if (i>this.form.list.options.length-1) i=this.form.list.options.length-1; ';
h+=' var v=this.form.list.options[i].value; if (!v.length) return;';
h+=' this.title=config.macros.storyViewer.nextmsg.format([v]);">';
}
if ((!nobuttons||onlybuttons) && allbuttons) {
h+='<input type="button" value="'+this.lastbutton+'" ';
h+=' style="padding:0" title="'+(tids[tids.length-1]?this.lastmsg.format([tids[tids.length-1]]):'')+'"';
h+=' onclick="this.form.list.selectedIndex=this.form.list.options.length-1; this.form.list.onchange();">';
}
h+='</form>';
createTiddlyElement(place,"span").innerHTML=h;
},
renderTimer: function(place,tids,tid,delay,autostart,action) {
var now=new Date().getTime(); // msec
var target=createTiddlyElement(null,'input',now+Math.random()); // unique ID
target.setAttribute('type','button'); target.style.padding='0';
place.appendChild(target);
target.tid =tids[Math.min(tids.indexOf(tid)+1,tids.length-1)]||''; // next tiddler
target.action =action;
target.formatTimer =this.formatTimer;
target.start =this.startTimer;
target.stop =this.stopTimer;
target.onmouseover =this.pauseTimer;
target.onmouseout =this.resumeTimer;
target.tick =this.timerTick;
target.onclick =this.timerClick;
target.next =this.timerNext;
target.start(delay,autostart);
},
formatTimer: function(t) {
return '0:'+String.zeroPad(Math.floor(t/1000),2);
},
startTimer: function(delay,start) {
var co=config.options; // abbrev
start=config.macros.storyViewer.started=start||config.macros.storyViewer.started;
var now=new Date().getTime(); // msec
this.started=start;
this.delay=delay;
this.paused=start?0:delay;
this.stopTime=now+delay; // msec
this.title='CLICK='+(start?'reset':'start')+" slideshow timer... next: '"+this.tid+"'";
this.style.cursor='pointer';
this.value=this.formatTimer(delay);
if (start) {
var code="var e=document.getElementById('"+this.id+"'); if(e)e.tick()";
this.timer=setTimeout(code,500);
}
return false;
},
stopTimer: function() {
this.timer=clearTimeout(this.timer);
this.started=config.macros.storyViewer.started=false;
this.paused=0;
this.title="CLICK=start slideshow timer... next: '"+this.tid+"'";
this.value=this.formatTimer(this.delay);
return false;
},
pauseTimer: function() {
if (!this.started) return;
var now=new Date().getTime(); // msec
this.paused=Math.max(this.stopTime-now,0);
this.stopTime=now+this.paused;
return false;
},
resumeTimer: function() {
if (!this.started || !this.paused) return;
var now=new Date().getTime(); // msec
this.stopTime=now+this.paused;
this.paused=0;
return false;
},
timerTick: function() {
var now=new Date().getTime(); // msec
if (!this.started)
this.stopTime=now+this.delay;
else if (this.paused) {
this.stopTime=now+this.paused;
this.title="[PAUSED] MOUSEOUT=resume, CLICK=reset... next: '"+this.tid+"'";
}
var remaining=this.stopTime-now;
if (remaining>0) {
if (this.started && !this.paused) this.value=this.formatTimer(remaining);
var code="var e=document.getElementById('"+this.id+"'); if(e)e.tick()";
this.timer=setTimeout(code,500);
} else {
this.stop();
this.next();
}
return false;
},
timerClick: function() {
return this.started?this.stop():this.start(this.delay,true);
},
timerNext: function() { // OPEN NEXT TIDDLER
var here=story.findContainingTiddler(this);
config.macros.storyViewer.started=true; // next slide autostarts to continue slideshow
if (this.tid) story.displayTiddler(here,this.tid);
config.macros.storyViewer.started=false;
if (!here) return false;
var t=here.getAttribute('tiddler');
if (this.action=='close') story.closeTiddler(t);
if (this.action=='fold' && config.commands.collapseTiddler) // see CollapseTiddlerPlugin
config.commands.collapseTiddler.handler(null,here,t);
return false;
}
}
//}}}
//{{{
config.paramifiers.story = {
onstart: function(v) {
var t=store.getTiddler(v); if (t) t.changed();
var list=t?t.links:store.getTiddlerText(v,"").parseParams("open",null,false);
story.displayTiddlers(null,list);
}
};
//}}}
/***
|Name|StoryViewerPluginInfo|
|Source|http://www.TiddlyTools.com/#StoryViewerPlugin|
|Documentation|http://www.TiddlyTools.com/#StoryViewerPluginInfo|
|Version|1.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for StoryViewerPlugin|
The {{{<<storyViewer>>}}} macro allows you to quickly ''display //and// navigate between a set of tiddlers'', using a droplist of titles and/or individual "first/previous/next/last" buttons/text links. It also provides a "slideshow" feature that permits you to ''present one tiddler at a time with a countdown timer to automatically advance to the next tiddler'' after a specified number of seconds.
!!!!!Usage
<<<
{{{
<<storyViewer storyname|tagvalue list buttonoption prompt:... sort:...>>
<<storyViewer storyname|tagvalue first|previous|here|next|last sort:...>>
<<storyViewer storyname|tagvalue links sort:fieldname>>
<<storyViewer storyname|tagvalue timer:nnn autostart close|fold sort:...>>
}}}
where:
* ''storyname'' or ''tagvalue''<br>specifies a set of tiddler titles, defined either by matching a tag value, or by creating a tiddler, tagged with <<tag story>>, containing a space-separated list of titles. //Note: You can use the {{{<<saveStory>>}}} macro (see [[StorySaverPlugin]]) to automatically create stories using the titles of the tiddlers that are currently being viewed.// If you omit the storyname/tagname parameter, the plugin will attempt to identify a suitable story by locating the current tiddler title within a saved story tiddler. The story view controls are not displayed unless the current tiddler title is explicitly found in at least one saved story.
** Note: if [[MatchTagsPlugin]] is installed, you can use a compound //boolean tag expression//, enclosed within doubled square brackets. This allows you to generate sets of stories based on complex combinations of tags, rather than matching just one tag value. [[MatchTagsPlugin]] also allows you to use a //wildcard// expression, ".*" (without quotes), that will match all tiddlers, regardless of their tag value(s).
* ''list''<br>displays a droplist of tiddlers for the specified story, with previous/next pushbuttons on either side of the list. You can also specify which buttons will appear when using a droplist:
** ''allbuttons''<br>displays buttons for first/last as well as previous/next.
** ''nobuttons''<br>displays the droplist without any buttons
** ''onlybuttons''<br>hides the droplist and shows just the buttons
* ''prompt:...'' (default={{{"storyname..."}}})<br>specifies non-selectable label text to use as the first item in the droplist.
* ''sort:fieldname'' //(optional)//<br>when a ''tagvalue'' is used to select tiddlers, you can specify a tiddler fieldname that can be used to sort the resulting list of tiddlers, with an optional "-" prefix to indicate descending vs. ascending ordering, e.g, "sort:-modified" will generate a list of tiddlers in reverse date order (newest tiddler first).
* ''first'' or ''previous'' or ''here'' or ''next'' or ''last''<br>displays an individual link to the indicated tiddler within the story. The next/previous links are automatically calculated relative to the current tiddler. ''here'' displays the current tiddler title.
* ''links''<br>displays the set of first, previous, here, next and last links with just one convenient macro invocation, allowing you to quickly and easily embed story navigation links into any tiddler content.
* ''timer:nnn''<br>displays an automatic countdown 'slideshow' timer, where ''nnn'' is the number of seconds between slides. Click on the timer to start the countdown. The countdown is paused when hovering over the timer. Click a //running// timer to immediately advance to the next tiddler in the story. Optional slideshow parameters:
** ''autostart''<br>automatically starts the countdown without an initial click.
** ''close'' or ''fold''<br>close or fold (see [[CollapseTiddlerPlugin]]) the current tiddler when the next tiddler in the story is opened. The default is to simply display the next tiddler following the current one.
<<<
!!!!!Examples
<<<
{{smallform{
{{{
<<storyViewer MenuDefinitions list nobuttons>>
}}}
><<storyViewer MenuDefinitions list nobuttons>> //uses "saved story" tiddler//
{{{
<<storyViewer pluginInfo>>
}}}
><<storyViewer pluginInfo>>
{{{
<<storyViewer pluginInfo list allbuttons prompt:"TiddlyTools menu definitions...">>
}}}
><<storyViewer pluginInfo list allbuttons prompt:"TiddlyTools menu definitions...">>
{{{
<<storyViewer pluginInfo first>>
<<storyViewer pluginInfo previous>>
<<storyViewer pluginInfo next>>
<<storyViewer pluginInfo last>>
}}}
><<storyViewer pluginInfo first>>
><<storyViewer pluginInfo previous>>
><<storyViewer pluginInfo next>>
><<storyViewer pluginInfo last>>
{{{
<<storyViewer pluginInfo previous label:"back">>
<<storyViewer pluginInfo next label:"forward">>
}}}
><<storyViewer pluginInfo previous label:"back">>
><<storyViewer pluginInfo next label:"forward">>
{{{
<<storyViewer pluginInfo links>>
}}}
><<storyViewer pluginInfo links>>
{{{
<<storyViewer pluginInfo timer:20 fold>>
}}}
><<storyViewer pluginInfo timer:20 fold>>
{{{
<<storyViewer ".*" prompt:"timeline..." sort:-modified>>
}}}
><<storyViewer ".*" prompt:"timeline..." sort:-modified>>
}}}
<<<
!!!!!Revisions
<<<
2011.03.11 1.4.0 added 'sort:fieldname' parameter
2011.01.24 1.3.4 in droplist onchange handler, don't clear slideshow 'started' flag (allows slideshow to continue after manual navigation)
2011.01.12 1.3.3 added config.macros.storyViewer.started (controls 'autostart' for automatic presentation of multiple pages)
2011.01.11 1.3.2 use pushbutton instead of text to display slideshow timer
2011.01.11 1.3.1 code and documentation cleanup
2011.01.10 1.3.0 added slideshow (params= timer:nnn, autostart, close/fold). Added custom prompt for droplist (param= prompt:"text"). Added support for [[MatchTagsPlugin]]
2008.06.05 1.2.0 added custom story paramifier to extract story titles from tiddler links instead of using parseParams. Permits use of links from any tiddler as a story, even if it contains wiki-syntax formatting in addition to list of tiddler titles
2008.03.10 *.*.* plugin size reduction: documentation moved to [[StoryViewerPluginInfo]]
2007.12.31 1.1.0 instead of readBracketedList(), use internal tiddler.links[] to retrieve story list from tiddler content. Allows more flexible formatting of story tiddler content.
2007.12.04 *.*.* update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.10.23 1.0.0 Initial release, split {{{<<storyViewer>>}}} macro definition from [[StorySaverPlugin]] to allow separate installation of story saving vs. story viewing features.
<<<
<html>
<font size="+1">
{{center{@@background-color:#FCF;[[Retourner à la Durée|Pf04_Durée]]@@}}}</font>
<font size="+2">
Il importe que la personne qui donne la formation soit capable de sentir son public.
Ainsi, elle pourra prendre la décision d'une ''"pause"'' quand un climat trop chaud se fera sentir.
[img( 40% , )[https://sites.google.com/site/michelayotte/Home/Stress_Emotion.PNG]]
</font>
</html>
</html>
/***
|Name|StyleSheetAdjustments|
|Source|http://www.TiddlyTools.com/#StyleSheetAdjustments|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|CSS|
|Description|adjust TiddlyWiki default shadow stylesheets definitions|
***/
[[StyleSheetPlugins]] /* include adjustments to plugin-supplied definitions */
[[StyleSheetShortcuts]] /* include formatting "shortcut" definitions */
[[Jash.css]] /* Javascript Shell (jash) Styles */
/***
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'.
/***
!body /%==================================================%/
IE needs explicit "position:static" declaration (fixes 'partial background display bug')
***/
/*{{{*/
body { font-family: Verdana,Arial,Helvetica; position:static; }
/*}}}*/
/***
!backstage /%==================================================%/
fix for bug #347/#349, wherein backstageCloak covers backstagePanel whenever fixed elements are present
***/
/*{{{*/
#backstageCloak { z-index:49; }
#backstagePanel { margin:0em 0.5em 0em 0.5em; }
#backstageButton a:hover
{background-color:transparent !important;}
/*}}}*/
/***
!common colors /%==================================================%/
***/
/*{{{*/
/* these seem to have been omitted from the core defaults for link styles */
a { color:#014; }
a:hover { color:#def; }
/*}}}*/
/***
!HTML forms /%==================================================%/
***/
/*{{{*/
/* eliminate whitespace before/after form controls */
form { margin:0;padding:0; }
/*}}}*/
/***
!basic styling /%==================================================%/
***/
/*{{{*/
/* reduce whitespace before/after horizontal rule */
hr { margin:2px 0 1px 0;padding:0; }
/*}}}*/
/***
!header and titles /%==================================================%/
IE needs explicit "position:static" declaration (fixes 'background display hides text bug')
***/
/*{{{*/
.header
{ background:transparent; padding:.2em 1em; position:static; margin-bottom:.5em; }
.headerShadow, .headerForeground
{ padding:.5em; }
.header a, .header .button, .header .tiddlyLinkExisting, .header .tiddlyLinkNonExisting
{ font-weight: normal; }
.header .externalLink,
.siteSubtitle a, .siteSubtitle .button, .siteSubtitle .tiddlyLinkExisting, .siteSubtitle .tiddlyLinkNonExisting
{ text-decoration:none; }
.header table
{ border-collapse: collapse !important; }
/*}}}*/
/***
!displayArea /%==================================================%/
***/
/*{{{*/
#displayArea
{ margin:0em 17em 0em 11em; }
/*}}}*/
/***
!popups /%==================================================%/
white-space:nowrap prevents items from wrapping if popup is near right edge of window
z-index:1000 makes sure popup is above EVERYTHING else
***/
/*{{{*/
.popup
{ white-space: nowrap; z-index:1000; color: #000; background: #ffe; border: 1px solid #000;
-moz-border-radius-topright: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px;
-webkit-border-top-right-radius: 5px; -webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; }
.popup a, .popup .button, .popup .tiddlyLinkExisting, .popup .tiddlyLinkNonExisting
{ font-weight: normal; font-style: normal; }
.popup hr
{ color: #000; background: #ddd; border: 0; }
.popup li.disabled
{ color: #999; }
.popup li a, .popup li a:visited
{ color: #300; padding:1px; }
.popup li a:hover
{ background: #006; color: #fff !important;}
/*}}}*/
/***
!messageArea /%==================================================%/
***/
/*{{{*/
#messageArea
{ font-size:90%; -moz-border-radius:1em;-webkit-border-radius:1em; background:#eee; }
/*}}}*/
/***
!main menu (left sidebar) /%==================================================%/
***/
/*{{{*/
#mainMenu
{ z-index:1; width:9em; text-align:left; margin:0; margin-left:1.5em; padding:0; clear:both; }
*[id="mainMenu"] /* moz browsers only */
{ width:auto !important; }
/*}}}*/
/***
!sidebar (right sidebar) /%==================================================%/
***/
/*{{{*/
#sidebar
{ width:18em; margin-right:1em; clear:both; }
#sidebarTabs .tab
{ font-size:90%; -moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em; }
#sidebarTabs .tabContents
{ background:transparent; border:1px solid #999; padding:.5em; height:auto; overflow:auto; width:92.5%; }
#sidebarTabs .tabContents .tabContents
{ background:transparent; border:1px solid #999; padding:.5em; height:auto; }
#sidebarOptions input[type="text"]
{ font-size:8pt; }
}
*/
/*}}}*/
/***
!tabs /%==================================================%/
***/
/*{{{*/
.tabset
{ padding: 0.2em 0 0 0; }
.tab
{ padding:0 1px 0 1px; }
.viewer .tab
{ padding:0 .5em 0 .5em; }
.tabSelected
{ border: 1px solid; border-bottom: 0px !important; margin-bottom:-2px !important;
-moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em;}
.tabUnselected
{ border: 1px solid #999; border-bottom:0px;
-moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em;}
.tabContents
{ border: 1px solid; -moz-border-radius:1em;-webkit-border-radius:1em; padding: 1em; }
/*}}}*/
/***
!tiddler display elements /%==================================================%/
***/
/*{{{*/
.tiddler { padding: 0 1em 1em 1em; }
.annotation {
border: 1px solid;
-moz-border-radius:.5em;
-webkit-border-radius:.5em;
margin: .5em 0;
padding: .2em .5em;
font-size:90%;
}
.button, .button:hover, .button:active,
.viewer .button, .viewer .button:hover, .viewer .button:active
{ background:transparent; border:0; }
.toolbar
{ float:right; display:inline; padding-bottom:0; visibility:hidden; }
.selected .toolbar
{ visibility:visible; }
.toolbar .floatingPanel
{ visibility:visible !important; } /* make sure floating panels from toolbars don't disappear on mouseout */
.toolbar .button, .toolbar a
{ border:1px solid transparent; background:transparent; margin:0px 1px; padding:0px .2em; -moz-border-radius:.5em;-webkit-border-radius:.5em; }
.toolbar
{color:[[ColorPalette::TertiaryLight]];}
.toolbar a
{color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar
{color:[[ColorPalette::Foreground]];}
.selected .toolbar, .selected .toolbar .button, .selected .toolbar a
{ color:#006; }
.toolbar .button:hover, .toolbar a:hover
{ border:1px solid #69c !important; background:#006 !important; color:#fff !important; }
.shadow .tagging, .shadow .tagged
{ display:none; }
.tagging, .tagged
{ background-color: #ccc; border: 1px solid; }
.selected .tagging, .selected .tagged
{ background-color:#eee; border: 1px solid #999; }
.tagging, .tagged
{ -moz-border-radius:1em;-webkit-border-radius:1em; }
.subtitle
{ font-size:90%; }
.shadow input, .shadow textarea, .shadow button, .shadow checkbox, .shadow radio, .shadow select
{ font-size:90%; }
.shadow input, .shadow textarea, .shadow button, .shadow checkbox, .shadow radio, .shadow select
{ font-size:90%; }
.editor input
{ font-size: 8pt;}
.editor textarea
{ font-size: 8pt; font-family:monospace; }
.editor select
{ font-size: 8pt; border:1px solid; }
.title
{ font-size: 12pt; line-height:120%; }
.viewer
{ font-size: 9pt; padding: 0.7em; text-align:justify; }
.viewer pre, .viewer code, .viewer blockquote
{ font-size:8pt; text-align:left; }
.viewer pre
{ background:#ffe; border:1px solid; }
.viewer table, .viewer table tr, .viewer table td
{ border:1px solid; }
.viewer hr {
margin: 1px; padding:1px;
border:0;
border-top: solid 1px #666;
color: #666;
}
.viewer blockquote {
line-height: 1.5em;
padding-left: 1em;
margin-left: 1em;
border-left: 1px dotted;
}
/*}}}*/
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}
h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}
.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}
.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}
.tabSelected {color:[[ColorPalette::PrimaryDark]];
background:[[ColorPalette::TertiaryPale]];
border-left:1px solid [[ColorPalette::TertiaryLight]];
border-top:1px solid [[ColorPalette::TertiaryLight]];
border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}
#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}
.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}
#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}
.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}
.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
.tiddler .defaultCommand {font-weight:bold;}
.shadow .title {color:[[ColorPalette::TertiaryDark]];}
.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}
.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}
.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}
.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}
.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}
.imageLink, #displayArea .imageLink {background:transparent;}
.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}
.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}
.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}
.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}
.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}
.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}
#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/***
|Name|StyleSheetShortcuts|
|Source|http://www.TiddlyTools.com/#StyleSheetShortcuts|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|CSS|
|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 */
.left
{ display:block;text-align:left; }
.center
{ display:block;text-align:center; }
.center table
{ margin:auto !important; }
.right
{ display:block;text-align:right; }
.justify
{ display:block;text-align:justify; }
.indent
{ display:block;margin:0;padding:0;border:0;margin-left:2em; }
.floatleft
{ float:left; }
.floatright
{ 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
{ clear:both; }
.wrap
{ white-space:normal; }
.nowrap
{ white-space:nowrap; }
.hidden
{ display:none; }
.show
{ display:inline !important; }
.span
{ display:span; }
.block
{ display:block; }
.relative
{ position:relative; }
.absolute
{ position:absolute; }
/* font sizes */
.big
{ font-size:14pt;line-height:120% }
.medium
{ font-size:12pt;line-height:120% }
.normal
{ font-size:9pt;line-height:120% }
.small
{ font-size:8pt;line-height:120% }
.fine
{ font-size:7pt;line-height:120% }
.tiny
{ font-size:6pt;line-height:120% }
.larger
{ font-size:120%; }
.smaller
{ font-size:80%; }
/* font styles */
.bold
{ font-weight:bold; }
.italic
{ font-style:italic; }
.underline
{ text-decoration:underline; }
/* plain list items (no bullets or indent) */
.nobullets li { list-style-type: none; margin-left:-2em; }
/* vertical tabsets - courtesy of Tobias Beer */
.vTabs .tabset {float:left;display:block;padding:0px;margin-top:.5em;min-width:20%;}
.vTabs .tabset .tab {display:block;text-align:right;padding:2px 3px 2px 7px; margin:0 1px 1px 0;}
.vTabs .tabContents {margin-left:20%;max-width:80%;padding:5px;}
.vTabs .tabContents .tabContents {border:none; background:transparent;}
/* 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 */
*[class="ieOnly"]
{ 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 */
.outline
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; }
.menubox
{ 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; }
.groupbox
{ 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; }
.borderleft
{ margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }
.borderright
{ margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }
.borderbottom
{ margin:0;padding:1px 0;border:0;border-bottom:1px dotted; margin-bottom:1px; padding-bottom:1px; }
.bordertop
{ 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 */
.smallform
{ 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 */
.mouseover
{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 */
.zoomover
{ 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]]; }
/*}}}*/
/***
|Name|SwitchThemePlugin|
|Source|http://www.TiddlyTools.com/#SwitchThemePlugin|
|Documentation|http://www.TiddlyTools.com/#SwitchThemePluginInfo|
|Version|5.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|plugin|
|Description|Select alternative TiddlyWiki template/stylesheet 'themes' from a droplist|
!!!!!Documentation
>see [[SwitchThemePluginInfo]]
!!!!!Configuration
<<<
Current theme:<<switchTheme width:auto>>
<<option chkRandomTheme>> select a random theme at startup
//Note: to prevent a given theme from being chosen at random, tag it with <<tag excludeTheme>>//
<<<
!!!!!Installation Note
>As of 4/13/2008, a "core patch" function that provides backward-compatibility with TW2.3.x has been split into a separate tiddler, [[SwitchThemePluginPatch]], to reduce installation overhead for //this// plugin. ''You should only install the patch tiddler when using this plugin in documents based on a core version prior to TW2.4.0''
!!!!!Revisions
<<<
2009.10.01 [5.4.1] changed 'noRandom' tag to 'excludeTheme' and recognize 'excludeLists' tag
| Please see [[SwitchThemePluginInfo]] for previous revision details |
2008.01.22 [5.0.0] Completely re-written and renamed from [[SelectStylesheetPlugin]] (now retired)
//history for retired SelectStylesheetPlugin omitted//
2005.07.20 [1.0.0] initial release (as SelectStylesheetPlugin)
<<<
!!!!!Code
***/
//{{{
version.extensions.SwitchThemePlugin= {major: 5, minor: 4, revision: 1, date: new Date(2009,10,1)};
config.macros.switchTheme = {
handler: function(place,macroName,params) {
setStylesheet(".switchTheme {width:100%;font-size:8pt;margin:0em}","switchThemePlugin");
if (params[0] && (params[0].substr(0,6)=="width:")) var width=(params.shift()).substr(6);
if (params[0] && (params[0].substr(0,6)=="label:")) var label=(params.shift()).substr(6);
if (params[0] && (params[0].substr(0,7)=="prompt:")) var prompt=(params.shift()).substr(7);
if (params[0] && params[0].trim().length) // create a link that sets a specific theme
createTiddlyButton(place,label?label:params[0],prompt?prompt:params[0],
function(){ config.macros.switchTheme.set(params[0]); return false;});
else { // create a select list of available themes
var theList=createTiddlyElement(place,"select",null,"switchTheme",null);
theList.size=1;
if (width) theList.style.width=width;
theList.onchange=function() { config.macros.switchTheme.set(this.value); return true; };
this.refresh(theList);
}
},
refresh: function(list) {
var indent = String.fromCharCode(160)+String.fromCharCode(160);
while(list.length > 0){list.options[0]=null;} // clear list
list.options[list.length] = new Option("select a theme:","",true,true);
list.options[list.length] = new Option(indent+"[default]","StyleSheet");
list.options[list.length] = new Option(indent+"[random]","*");
var themes=store.getTaggedTiddlers("systemTheme");
for (var i=0; i<themes.length; i++)
if (themes[i].title!="StyleSheet" && !themes[i].isTagged('excludeLists'))
list.options[list.length]=new Option(indent+themes[i].title,themes[i].title);
// show current selection
for (var t=0; t<list.options.length; t++)
if (list.options[t].value==config.options.txtTheme)
{ list.selectedIndex=t; break; }
},
set: function(theme) {
if (!theme||!theme.trim().length) return;
if (theme=="*") { // select a random theme (except themes with "excludeTheme")
var curr=config.options.txtTheme;
var themes=store.getTaggedTiddlers("systemTheme");
if (!themes.length) return false;
var which=Math.floor(Math.random()*themes.length);
while (themes[which].title==curr
||themes[which].tags.contains('excludeTheme','excludeLists'))
which=Math.floor(Math.random()*themes.length);
theme=themes[which].title;
}
// apply selected theme
story.switchTheme(theme);
// sync theme droplists
var elems=document.getElementsByTagName("select");
var lists=[]; for (var i=0; i<elems.length; i++)
if (hasClass(elems[i],"switchTheme")) lists.push(elems[i]);
for (var k=0; k<lists.length; k++)
for (var t=0; t<lists[k].options.length; t++)
if (lists[k].options[t].value==config.options.txtTheme)
{ lists[k].selectedIndex=t; break; }
return;
}
}
//}}}
// // option to select a random theme at startup (if enabled)
//{{{
if (config.options.chkRandomTheme===undefined)
config.options.chkRandomTheme=false;
if (config.options.chkRandomTheme)
config.macros.switchTheme.set("*");
//}}}
// // hijack switchTheme to add Check/Init/Reset code handlers
//{{{
if (Story.prototype.switchTheme_saved===undefined) { // only once
Story.prototype.switchTheme_saved=Story.prototype.switchTheme;
Story.prototype.switchTheme=function(t){
function run(t,s){
var f=store.getTiddlerText(store.getTiddlerSlice(t,s));
return f?eval('(function(){\n'+f+'\n})()'):false;
}
if (!startingUp && (run(config.options.txtTheme,'Reset')||run(t,'Check'))) return;
this.switchTheme_saved.apply(this,arguments);
run(t,'Init');
}
}
//}}}
/***
|Name|SwitchThemePluginInfo|
|Source|http://www.TiddlyTools.com/#SwitchThemePlugin|
|Documentation|http://www.TiddlyTools.com/#SwitchThemePluginInfo|
|Version|5.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|documentation|
|Description|documentation for SwitchThemePlugin|
This plugin replaces the features previously provided by SelectStylesheetPlugin, and uses the ''TiddlyWiki core "theme" mechanism'' to select alternative templates and styles. ''//This plugin requires TiddlyWiki version 2.3.0 or later//''
!!!!!Usage
<<<
{{medium{__Defining a theme:__}}}
First, create/import a tiddler containing CSS definitions and tag it with<<tag systemTheme>>. At the top of the tiddler, embed a //slice table// with at least one slice, "~StyleSheet", whose value is the name of the tiddler itself, e.g., in a tiddler called [[MyTheme]], write:
{{{
/***
|StyleSheet|MyTheme|
***/
}}}
>Note use of {{{/***}}} and {{{***/}}} around the slice table. This syntax allows the browser to skip over the slice table definition when processing the ~CSS-syntax embedded within the tiddler.
A theme tiddler can also define one or more additional slices that associate customized versions of [[PageTemplate]], [[ViewTemplate]], and/or [[EditTemplate]], for use with that theme:
{{{
/***
|PageTemplate|MyPageTemplate|
|ViewTemplate|MyViewTemplate|
|EditTemplate|MyEditTemplate|
***/
}}}
where the slice //name// is the standard template name, and the slice //value// is the title of the alternative custom template to use. You can also associate a secondary set of ''"read only" templates that will be automatically applied whenever a document is being viewed online'' (i.e., via http: protocol)
{{{
|PageTemplateReadOnly|MyWebPageTemplate|
|ViewTemplateReadOnly|MyWebViewTemplate|
|EditTemplateReadOnly|MyWebEditTemplate|
}}}
These alternative templates can be used to present a reduced-feature "reader" interface when viewed on-line by others, while still offering a full-featured "author" interface when working locally.
In addition to the TW core slices described above, the plugin allows you to define extra slices that refer to tiddlers (or tiddler sections) containing ''custom javascript code that can be invoked whenever theme switching occurs''. A theme can include any of the following special plugin-enhanced slices:
{{{
|Check|MyThemeCheck|
|Init|MyThemeInit|
|Reset|MyThemeReset|
}}}
*{{block{
The code referenced by the ''Check'' slice (if any) is invoked ''before switching'' to a selected theme. ''If this code returns a non-zero (or true) result, then the new theme will not be applied. A zero (or false) value allows the theme switch to continue as usual.'' For example, the following code asks for confirmation, allowing the user to cancel the theme switch:
{{{
return !confirm('Are you sure you want to use this theme?');
}}}
}}}
*After a theme has been applied, the code referenced by the ''Init'' slice (if any) is invoked. This can be used to perform theme-related ''side-effects'', such as modifying various {{{config.options['...']}}} settings or displaying instructions/messages.
*When switching to another theme, any code referenced by a ''Reset'' slice //in the current theme// is invoked before the new theme is applied. ''If this code returns a non-zero result, then the new theme will not be applied.'' As with the ''Check'' code, this can be used to ask the user to confirm before switching themes. However, the primary intent of the ''Reset'' code is to permit restoration any modified settings that were altered by ''Init'' code that was previously invoked for the current theme.
{{medium{__Selecting a theme from a droplist:__}}}
To display a droplist of available themes, use this syntax:
{{{
<<switchTheme width:nnn>>
}}}
*''width:nnn[cm|px|em|%]'' (optional)<br>specifies the width of the droplist (using CSS measurements)(default=100%)
All tiddlers tagged with<<tag systemTheme>> will be included in the droplist of available themes for you to select (except those also tagged with <<tag excludeLists>>. The current selection is stored in a TiddlyWiki option cookie ("txtTheme") that is applied automatically each time you reload your document. If the selected theme does not exist in the document (e.g., it was deleted/renamed after being selected), the [default] CSS tiddler, [[StyleSheet]], will be used as a fallback. If [random] is seleced, the plugin automatically selects a random theme. You can exclude a theme from being randomly selected by tagging it with <<tag excludeTheme>>.
Example:
{{{<<switchTheme width:30%>>}}}
<<switchTheme width:30%>>
{{medium{__Selecting a theme from a command link:__}}}
The {{{<<switchTheme>>}}} macro can also be used to embed a command link that, when clicked, will apply a specific, pre-selected theme, using the following syntax:
{{{
<<switchTheme "label:link text" "prompt:tooltip text" TiddlerName>>
}}}
* ''label:text'' and ''prompt:text'' (optional)<br>define the link text the 'tooltip' text that appears near the mouse pointer when placed over the link, respectively.
*''~TiddlerName''<br>specifies the name of the theme tiddler to be applied (e.g., {{{<<switchTheme [[Woodshop]]>>}}}
Examples:
{{{
<<switchTheme Plain>>
<<switchTheme Blackout>>
<<switchTheme Woodshop>>
<<switchTheme Textures>>
<<switchTheme [[Edge of Night]]>>
<<switchTheme label:[default] StyleSheet>>
<<switchTheme label:randomize *>>
}}}
<<switchTheme Plain>> <<switchTheme Blackout>> <<switchTheme Woodshop>> <<switchTheme Textures>> <<switchTheme [[Edge of Night]]>> <<switchTheme label:[default] StyleSheet>> <<switchTheme label:randomize *>>
NOTE:
>You can also create a command link that specifies "*" for the theme name. This will select a theme //at random// from the list of available themes. To prevent a given theme from being selected, tag it with <<tag excludeTheme>>.
<<<
!!!!!Configuration
<<<
<<option chkRandomTheme>> select a random theme at startup
//Note: to prevent a given theme from being chosen at random, tag it with <<tag excludeTheme>>//
<<<
!!!!!Revisions
<<<
2009.10.01 5.4.1 changed 'noRandom' tag to 'excludeTheme' and recognize 'excludeLists' tag
2009.09.28 5.4.0 added Check/Init/Reset slices for invoking code during theme switching
2008.04.23 5.3.0 added option for chkRandomTheme (select random theme at startup)
2008.04.13 5.2.0 moved TW2.3.x fixup for core's switchTheme() function to [[SwitchThemePluginPatch]] and simplified random theme handling. Also, changed "Web*" prefix to "*ReadOnly" suffix for compatibility with TW240 core convention.
2008.02.01 5.1.3 in response to a change for core ticket #435 (see http://trac.tiddlywiki.org/changeset/3450) -- in switchTheme, use config.refresherData.* values (if defined), instead of config.refreshers.* This change allows the plugin to work with both the current release (~TW230) AND the upcoming ~TW240 release.
2008.02.01 5.1.2 in switchTheme, replace hard-coded "~StyleSheet" with config.refreshers.stylesheet (used as name of loaded styles)
2008.01.30 5.1.1 changed tag-detection to use "systemTheme" instead of "theme" for compatibility with core theme switching mechanism.
2008.01.26 5.1.0 added support for txtTheme="*" (applies random theme at startup) and {{{<<randomTheme>>}}} macro (selects/applies a random theme when a command link is clicked)
2008.01.25 5.0.1 in refresh() and set(), removed use of ">" to indicate current theme
2008.01.22 5.0.0 Completely re-written and renamed from [[SelectStylesheetPlugin]] (now retired)
>//previous history for [[SelectStylesheetPlugin]] omitted//
2005.07.20 1.0.0 Initial Release
<<<
/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.6.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|use alternative ViewTemplate/EditTemplate for specific tiddlers|
This plugin extends the core function, story.chooseTemplateForTiddler(), so that any given tiddler can be viewed and/or edited using alternatives to the standard tiddler templates.
!!!!!Documentation
>see [[TaggedTemplateTweakInfo]]
!!!!!Revisions
<<<
2009.09.02 [1.6.1] apply field-based template (if any) *before* tag-based template
| please see [[TaggedTemplateTweakInfo]] for previous revision details |
2007.06.11 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TaggedTemplateTweak= {major: 1, minor: 6, revision: 1, date: new Date(2009,9,2)};
if (!config.options.txtTemplateTweakFieldname)
config.options.txtTemplateTweakFieldname='template';
Story.prototype.taggedTemplate_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler
Story.prototype.chooseTemplateForTiddler = function(title,template)
{
// get core template and split into theme and template name
var coreTemplate=this.taggedTemplate_chooseTemplateForTiddler.apply(this,arguments);
var theme=""; var template=coreTemplate;
var parts=template.split(config.textPrimitives.sectionSeparator);
if (parts[1]) { theme=parts[0]; template=parts[1]; }
else theme=config.options.txtTheme||""; // if theme is not specified
theme+=config.textPrimitives.sectionSeparator;
// look for template using title as prefix
if (!store.getTaggedTiddlers(title).length) { // if tiddler is not a tag
if (store.getTiddlerText(theme+title+template))
{ return theme+title+template; } // theme##TitleTemplate
if (store.getTiddlerText(title+template))
{ return title+template; } // TitleTemplate
}
// look for templates using custom field value as prefix
var v=store.getValue(title,config.options.txtTemplateTweakFieldname);
if (store.getTiddlerText(theme+v+template))
{ return theme+v+template; } // theme##valueTemplate
if (store.getTiddlerText(v+template))
{ return v+template; } // valueTemplate
// look for template using tags as prefix
var tiddler=store.getTiddler(title);
if (!tiddler) return coreTemplate; // tiddler doesn't exist... use core result
for (i=0; i<tiddler.tags.length; i++) {
var t=tiddler.tags[i]+template; // add tag prefix to template
var c=t.substr(0,1).toUpperCase()+t.substr(1); // capitalized for WikiWord title
if (store.getTiddlerText(theme+t)) { return theme+t; } // theme##tagTemplate
if (store.getTiddlerText(theme+c)) { return theme+c; } // theme##TagTemplate
if (store.getTiddlerText(t)) { return t; } // tagTemplate
if (store.getTiddlerText(c)) { return c; } // TagTemplate
}
// no match... use core result
return coreTemplate;
}
//}}}
/***
|Name|TaggedTemplateTweakInfo|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.6.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for TaggedTemplateTweak|
This plugin extends the core function, story.chooseTemplateForTiddler(), so that any given tiddler can be viewed and/or edited using alternatives to the standard tiddler templates. To select alternative templates, a 'template prefix' is determined by using the tiddler's title or matching a tag value or using a value stored in a custom tiddler field.
!!!!!Usage
<<<
*The plugin first attempts to use the tiddler's //title// as a prefix added to the standard TiddlyWiki template titles, [[ViewTemplate]] and [[EditTemplate]] (i.e., ''TiddlerNameViewTemplate'' and ''TiddlerNameEditTemplate''). This allows you to associate a custom template with a specific tiddler, without needing to add any special tags or custom field values to that individual tiddler.
*You can also define a tiddler's template prefix by using a //custom tiddler field// named 'template'. If no corresponding template was found using the tiddler's title, then the tiddler's 'template' field value, if present, will be used as a prefix (e.g., if template='SomeThing', then [[SomeThingViewTemplate]] will be applied).
*If no template is found using the either the title or 'template' field, then each of the tiddler's tags is tried as a template prefix, until a corresponding template, if any, is found. For example, any tiddlers that are tagged with ''<<tag media>>'' could find alternative templates named [[mediaViewTemplate]] and [[mediaEditTemplate]].
*If you using a systemTheme, the plugin will also tries adding the currently selected theme name (specified by {{{config.options.txtTheme}}}) to the template name (e.g. ''[[SomeTheme##MediaViewTemplate]]'') so that the alternative template definitions can be contained as //sections// within a single systemTheme tiddler.
*Lastly, if no alternative template is found at all, the standard [[ViewTemplate]] or [[EditTemplate]] definition as determined by the TiddlyWiki core handler is used.
Notes:
*You can redefine the //name// of the custom field used to store the template prefix. For example, to use the name of a TiddlyWeb server-side 'bag' as a prefix (so that tiddlers from separate bags can have different appearances), add the following to a tiddler tagged with<<tag systemConfig>>:{{block{
{{{
config.options.txtTemplateTweakFieldname='server.bag'; // use TiddlyWeb bag name as prefix
}}}
}}}
*To permit use of templates that have proper WikiWord tiddler titles (e.g., [[MediaViewTemplate]] and [[MediaEditTemplate]]), the plugin also attempts to use a capitalized form of the tag value (e.g., ''Media'') as a prefix. //This capitalization is for comparison purposes only and will not alter the actual tag values that are stored in the tiddler.//
<<<
!!!!!Examples
<<<
|Sample tiddler| tag | view template | edit template |
|[[MediaSample - QuickTime]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[MediaSample - Windows]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[CDSample]]| <<tag CD>> | [[CDViewTemplate]] | [[CDEditTemplate]] |
|<<newTiddler label:"create new task..." title:SampleTask tag:task text:"Type some text and then press DONE to view the task controls">> | <<tag task>> | [[TaskViewTemplate]] | [[EditTemplate]] |
//(note: if these samples are not present in your document, please visit// http://www.TiddlyTools.com/ //to view these sample tiddlers on-line)//
<<<
!!!!!Revisions
<<<
2009.09.02 1.6.1 apply field-based template (if any) *before* tag-based template
2009.07.31 1.6.0 added support for using custom field value as prefix
2009.05.04 1.5.2 check for tiddler exist *after* title-as-prefix (allows shadow tiddlers to use custom templates)
2009.01.06 1.5.1 reversed logic so that title-as-prefix takes precedence over tag-matched prefix
2008.12.18 1.5.0 added handling for using tiddler //title// as prefix (e.g., {{{SomeTiddlerViewTemplate}}})
2008.08.29 1.4.1 corrected handling for tiddlers with no matching tagged template when non-default theme is in effect (e.g., use "MyTheme##ViewTemplate").
2008.05.15 1.4.0 support use of *shadow* tagged templates (e.g., [[DiscussionViewTemplate]] created by [[DiscussionPlugin]])
2008.05.10 1.3.0 corrected handling for determining core template when using theme with sections
2008.05.01 1.2.5 added support for tagged templates stored as sections in a theme
2008.04.01 1.2.0 added support for using systemTheme section-based template definitions (requested by Phil Hawksworth)
2008.01.22 [*.*.*] plugin size reduction - documentation moved to [[TaggedTemplateTweakInfo]]
2007.06.23 1.1.0 re-written to use automatic 'tag prefix' search instead of hard coded check for each tag. Allows new custom tags to be used without requiring code changes to this plugin.
2007.06.11 1.0.0 initial release
<<<
/***
|''Name:''|~TaggerPlugin|
|''Version:''|1.0.1 (2006-06-01)|
|''Source:''|http://tw.lewcid.org//#TaggerPlugin|
|''Author:''|SaqImtiaz|
|''Modifier:''|Michel Ayotte|
|''Description:''|Provides a drop down listing current tiddler tags, and allowing toggling of tags.|
|''Documentation:''|[[TaggerPluginDocumentation]]|
|''Source Code:''|[[TaggerPluginSource]]|
|''~TiddlyWiki:''|Version 2.0.8 or better|
|''Requires''|[[DeprecatedFunctionsPlugin]]|
|''Stylesheet Changes''|ViewTemplate|
|See Above|<div class='toolbar'><span style="padding-right:2.45em;" macro='tagger source:TagDB exclude:excludeLists'></span></div>|
***/
//{{{
config.tagger={
defaults:{
label: '*choisir son sujet parent* ',
tooltip: 'Manage tiddler tags',
taglist: 'true',
excludeTags: 'excludeLists',
notags: 'tiddler has no tags',
aretags: 'current tiddler tags:',
toggletext: 'add tags:'
}
};
config.macros.tagger={};
config.macros.tagger.arrow = (document.all?"▼":"▾"); // the fat one is the only one that works in IE
config.macros.tagger.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
var defaults = config.tagger.defaults;
var nAV = paramString.parseParams('tagman', null, true);
var label = ((nAV[0].label)&&(nAV[0].label[0])!='.')?nAV[0].label[0]+this.arrow: defaults.label+this.arrow;
var tooltip = ((nAV[0].tooltip)&&(nAV[0].tooltip[0])!='.')?nAV[0].tooltip[0]: defaults.tooltip;
var taglist = ((nAV[0].taglist)&&(nAV[0].taglist[0])!='.')?nAV[0].taglist[0]: defaults.taglist;
var exclude = ((nAV[0].exclude)&&(nAV[0].exclude[0])!='.')?(nAV[0].exclude[0]).readBracketedList(): defaults.excludeTags.readBracketedList();
if ((nAV[0].source)&&(nAV[0].source[0])!='.')var source = nAV[0].source[0];
if (source&&!store.getTiddler(source)) return false;
var onclick = function(e) {
if (!e) var e = window.event;
var popup = Popup.create(this);
var tagsarray = store.getTags();
var tags=new Array();
for (var i=0; i<tagsarray.length; i++){
tags.push(tagsarray[i][0]);}
if (source)
{var sourcetiddler=store.getTiddler(source);
tags=sourcetiddler.tags.sort();}
var currentTags = tiddler.tags.sort();
var createButtons=function(text,theTag,tooltipPrefix){
var sp = createTiddlyElement(createTiddlyElement(popup,"li"),"span",null,"tagger");
var theToggle = createTiddlyButton(sp,text,tooltipPrefix+" '"+theTag+"'",taggerOnToggle,"button","toggleButton");
theToggle.setAttribute("tiddler",tiddler.title);
theToggle.setAttribute("tag",theTag);
insertSpacer(sp);
if (window.createTagButton_orig_mptw)
createTagButton_orig_mptw(sp,theTag);
else
createTagButton(sp,theTag);
}
createTiddlyElement(popup,"li",null,"listTitle",(tiddler.tags.length == 0 ? defaults.notags : defaults.aretags));
for (var t=0; t<currentTags.length; t++){
createButtons("[x]",currentTags[t],"remove tag ");
}
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
if (taglist!='false')
{ createTiddlyElement(popup,"li",null,"listTitle",defaults.toggletext);
for (var i=0; i<tags.length; i++){
if (!tiddler.tags.contains(tags[i])&&!exclude.contains(tags[i]))
{createButtons("[ ]",tags[i],"add tag ");
}
}
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
}
var newTagButton = createTiddlyButton(createTiddlyElement(popup,"li"),("Create new tag"),null,taggerOnToggle);
newTagButton.setAttribute("tiddler",tiddler.title);
if (source) newTagButton.setAttribute("source",source);
Popup.show(popup,false);
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return(false);
};
createTiddlyButton(place,label,tooltip,onclick,"button","taggerDrpBtn");
};
window.taggerOnToggle = function(e) {
var tag = this.getAttribute("tag");
var title = this.getAttribute("tiddler");
var tiddler = store.getTiddler(title);
if (!tag)
{
var newtag=prompt("Enter new tag:","");
if (newtag!=''&&newtag!=null)
{
var tag=newtag;
if (this.getAttribute("source"))
{var sourcetiddler = store.getTiddler(this.getAttribute("source"));
sourcetiddler.tags.pushUnique(newtag);}
}
else
{return false;};
}
if (!tiddler || !tiddler.tags)
{store.saveTiddler(title,title,'',config.options.txtUserName,new Date(),tag);}
else
{if (tiddler.tags.find(tag)==null)
{tiddler.tags.push(tag)}
else if(!newtag)
{tiddler.tags.splice(tiddler.tags.find(tag),1)};
store.saveTiddler(tiddler.title,tiddler.title,tiddler.text,tiddler.modifier,tiddler.modified,tiddler.tags);};
story.refreshTiddler(title,null,true);
if(config.options.chkAutoSave)
saveChanges();
return false;
};
setStylesheet(
".tagger a.button {font-weight: bold;display:inline; padding:0px;}\n"+
".tagger #toggleButton {padding-left:2px; padding-right:2px; margin-right:1px; font-size:110%;}\n"+
"#nestedtagger {background:#2E5ADF; border: 1px solid #0331BF;}\n"+
".popup .listTitle {color:#000;}\n"+
"",
"TaggerStyles");
window.lewcidTiddlerSwapTag = function (tiddler, oldTag, newTag){
for (var i = 0; i < tiddler.tags.length; i++)
if (tiddler.tags[i] == oldTag) {
tiddler.tags[i] = newTag;
return true;}
return false;
}
window.lewcidRenameTag = function(e) {
var tag=this.getAttribute("tag");
var newtag=prompt("Rename tag '"+tag+"' to:",tag);
if ((newtag==tag)||(newtag==null)) {return false;}
if(store.tiddlerExists(newtag))
{if(confirm(config.messages.overwriteWarning.format([newtag.toString()])))
story.closeTiddler(newtag,false,false);
else
return null;}
tagged=store.getTaggedTiddlers(tag);
if (tagged.length!=0){
for (var j = 0; j < tagged.length; j++)
lewcidTiddlerSwapTag(tagged[j],tag,newtag);}
if (store.tiddlerExists(tag))
{store.saveTiddler(tag,newtag);}
if (document.getElementById("tiddler"+tag))
{var oldTagTiddler = document.getElementById(story.idPrefix + tag);
var before= story.positionTiddler(oldTagTiddler);
var place = document.getElementById(story.container);
story.closeTiddler(tag,false,false);
story.createTiddler(place,before,newtag,null);
story.saveTiddler(newtag);}
if(config.options.chkAutoSave)
saveChanges();
return false;
}
window.onClickTag=function(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var nested = (!isNested(theTarget));
if ((Popup.stack.length > 1)&&(nested==true)) {Popup.removeFrom(1);}
else if(Popup.stack.length > 0 && nested==false) {Popup.removeFrom(0);};
var theId = (nested==false)? "popup" : "nestedtagger";
var popup = createTiddlyElement(document.body,"ol",theId,"popup",null);
Popup.stack.push({root: this, popup: popup});
var tag = this.getAttribute("tag");
var title = this.getAttribute("tiddler");
if(popup && tag)
{
var tagged = store.getTaggedTiddlers(tag);
var titles = [];
var li,r;
for(r=0;r<tagged.length;r++)
if(tagged[r].title != title)
titles.push(tagged[r].title);
var lingo = config.views.wikified.tag;
if(titles.length > 0)
{
var openAll = createTiddlyButton(createTiddlyElement(popup,"li"),lingo.openAllText.format([tag]),lingo.openAllTooltip,onClickTagOpenAll);
openAll.setAttribute("tag",tag);
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
for(r=0; r<titles.length; r++)
{
createTiddlyLink(createTiddlyElement(popup,"li"),titles[r],true);
}
}
else
createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),lingo.popupNone.format([tag]));
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
var h = createTiddlyLink(createTiddlyElement(popup,"li"),tag,false);
createTiddlyText(h,lingo.openTag.format([tag]));
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
var renameTagButton = createTiddlyButton(createTiddlyElement(popup,"li"),("Rename tag '"+tag+"'"),null,lewcidRenameTag);
renameTagButton.setAttribute("tag",tag)
}
Popup.show(popup,false);
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return(false);
}
if (!window.isNested)
window.isNested = function(e) {
while (e != null) {
var contentWrapper = document.getElementById("contentWrapper");
if (contentWrapper == e) return true;
e = e.parentNode;
}
return false;
};
config.shadowTiddlers.TaggerPluginDocumentation="The documentation is available [[here.|http://tw.lewcid.org/#TaggerPluginDocumentation]]";
config.shadowTiddlers.TaggerPluginSource="The uncompressed source code is available [[here.|http://tw.lewcid.org/#TaggerPluginSource]]";
//}}}
!usage
{{{[img[TexturesParchmentGray]]}}}
[img[TexturesParchmentGray]]
!notes
!type
image/jpg
!file
./images/parchment_gray.jpg
!url
!data
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APcgQtDuMYBqMKTz2ox82O1O2A84pSNuMU8Ht2oOO1IeOtRg847U8c9OlBGDilGDkYpU447Urcmo8fNmozkmjb82CamzgYpO9BbApM0quOlKTignIpoAzmlJxSFsc0BwfrTgeKMmkJAo7cUx1zzSqMDBNOHWlOPxpO1M43Cn5yM0UDk80rKKYQMUmw5GKlAwOaQkGmbRmm+bzjBxQzZpVU5yalxgcUnXk0U3aPSlxjHpTgOtIRjmlCluaa3ApBnFO3EUm3PJpuQDg0xiAcZoGRUg3dSKf703HNKFNP2HqaYf0pytgYpSwximAnn0pO9KBjmnqoxk0jKQPamMoIqArls1Kh6DFTBh0IpxIxQNrdqcAKWmEKaaUI6U32NLnAxTDgd6UMOlPD4U0w7iOtRMGz1qVYc07yzRtI4pduBQue1PJA61E8lM3n8KnU5Uc0yQfnTMkA5puMtT1TNSbR6Uu0VE0ZqcnAprNikEg70MwbpTMkdKaWY9aTbnrTMkHkVIHO3pSb/WnKNxp/lnPtRgp9KepDCncUUGoT1o25oGelIVz0p3l0m3nFBiyKRYiKeYgaEj2mpKRhkYpoTBzmn0Uxmx9ajLZo3A0EkcikByaeDT1xjiloAxRS0GkJwM0A5GaWjNRsuTmoyKTGKUk4piAs1WNg4o2kdDS8ik3ilVs06mlgKaxzxQGIGKeCDSZHrUZemO3cU0k59qmAXZTQAOlSBs/WnUxs55poA9aeoIpWOBSbgacMUxsZ4pgJJp+2lZMnIqJ+OgpoGVpRmlBIPFSKCeTT6jfk0nIFKGI60jMWpM0ocA0ZyaUACnL6GjOBn1qNsHimEFeaUc80o+9T1elLe9NL5p28Y6Uh5X3pApNIenFNxjnvRnv3pwYdTT1I6mm7j2pm7mnZ3Dik7YpM4pCe9KSaWkzTgc0pfB9qaXU8d6SmfzpwbPBp4wBThjOBTWXBqLeF4FIXJpFPOTUmAw4pRxSn1pKQNnpQ2evakUA89KUgjvxSFCeRQFIwTT1K5wa//Z
!usage
{{{[img[TexturesStucco]]}}}
[img[TexturesStucco]]
!notes
!type
image/gif
!file
./images/stucco.gif
!url
!data
data:image/gif;base64,R0lGODlhgACAALMAALu8x+Xm7NfZ4cjN1fX5/ezw893k6f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAgACAAAAE/3CIcggt9OhdiSUH5WGHEGhgJahV4HVberYp6L2w2GVhwIsfDs5jKPhWPYFFUzwEJgRB8RaC1qgdgquHEQxiVVfGQL2iUMbL7YWtuLfu1IEs4rUuccJ3XhhpfBZ9WnAhBhoYfYI1HG6NRQYzgn0lJGuNlz6XQnJyk3EbRUCNBFN2TkhPHJWHS5M+hIxoh08USiFaExiWuR9XIJ66a2w5cluTwEtmt8IoM1VIOzYfAkpkVyS3ZzYViMWvMyAuzDAwFibjYIkVZNmjq5eLjoeHttxGKDYYkNdigHJvSvpkOrNBTZ5esewpwhcjkCoh604MO7QQxQRyrxpl+NdHAICLsv9epHFYwIoufCIk6sgiqY0TAwakdMPnwVkIYoV+4VjWiomFSCsGlAynLQSPKFYIDhJ0osAAQP4EzVsiLgYtIwGyeiLniE2iJQULUqkkBxISGRmo9XnqFNAmTjFX/lOlVeO2sTdHVIzjr5DMAnEJMhRJYpIhsE1iYZmxwk7WnTeOCguSsAq3fJZuKJk8FwyaVIy2leOUJZ9gyKzwaMLWsFeNrZ53OnHo5FPBrYSlRYaYa6EyiKctWcXDw5a6OLBL3/4ajSuqX4LoAOkMdhL01iXZSV3dBktm68ctTniiVXYg3Zwii+7mR0XH0is4x44FbBZpTdJo3t/J+ldqrU9sls//Sfillw95GWwkgloa8DLZV71gsxMS1MQjnDtgOMQfLBSCRRFMsJDmwTn21PWHRLD0kMJGk40ywlxXobEKOnfFQMETNpggXiZH2dTZZcKdZ14GAYry0jxpvDUPclnYmOSRrYmWF1nrzGHDY8hl1SEJtjCDzk0oDaWRBF2Uc4BQy3iyhihDNNkBOyrAWZqBK1nJVU3U1LOiUhO1FpxF22kwQExPBQAJBWiy6CZmbeJXFRN7lYEaQ6qwBuRPfkipTRt7FTRFaF08FYVqv6Fnyj+kBNgbVix6eddcgLXa0Ci2QSbbolARQp0LTZhCDqyiDXPfDogImNkmz8hqz12SKEIZ/0Te4WOIjaPOtR6qskk4521mZJuUpFOQQgZMqM6qynVoTEoTIhvkAg4WLb3lXTHsWKhYIMnN4uwtUlTDCYG0aREIj3YM4dJnW5XUVGMhNbooJ+JYi1k7KDECWMQeAofGtC1QE+DHFf7oplHCIUFgSWFlaq1+oTXplU4wC7OgFVHQgcJhRyVCIJ9qvMyZeTneY8gRMfkkJVXhcuufRg1aLGdhkaY2HUX56fjaihD+aGsw/zTWNRP66bWxCSBNYA2MM31gXWheVMiyLJs6gUdTYgFXrhAxvZjBFwMtqeatdBWRi3043ANqJ/qsrNQnS9+4jUR1S1kR0Aq90ot26XLlhv+EQ5Hhdh01udbMBepE8eJ5dgFjXTiQ06RQrGfgVtkGJgo8FcUT3zJjFVKpLZeMYMYm4lRNbHNMoPAkIoXxqwcbCzWQmqabEL4+hI8PiEACpuyvgWQurNYsEzGQyVNNmLM+d2KL5SKNPFxZMuk+BxQxuSCBWjIkzXl7lXVDJLzJCF5+EFewXxHEZF9bk7AaBIL4sEsSdXOa8Wr0mqLMwXpGYcVNfkAtM60DJnlBjS4AFrl45cdmMKtNZYqXpeYBTil4sED4VucZ1+mHY10wgKiAZBA2LPB0akuRLgbij3HwDzqd+tlgQCESiVFnZTwQ3CAmBh71SIYsP4kYYOKTlcv/IOKLrjOQS7olHBzaJkqS8hQGvnCUzUFhNCrqhBCi0orC9K0p6KHCFmAGmwvFboCHyYuS5qQe/glQhieqETcsRj3mCMx0GqSdmhpyjFnIyYfoIR+YFEkpTWiOIxmiDJXCtgxzzec2m/PfFSJhFCP8RjA2rM4nkgM0cxgpgBwATSUU9CL5wTKXeLJiZNjTwD9ooWdjLJfBTrc5bM3Lloq5xBDxdxcs7cQYvEwGeIAZrJMwZZEzYYUS81DDRSQzFhJRpCjpEaTJlQCPbzjGemaTCa1ZKQCiCge6ErSRJQllII165pKY9iUkSdKB2IBGA5uys9OxCIwtSkYkfrG8y7Tj/5jzKFo2MCmvSi7ibPAAg1u4YTWrBSOD3cQXVhSoRIyuSH2hgNoapGAIoeSHViKbCg4Ow6zujBBQJUEmEk9wBLV8sTzi/B1FvqUjJvwlLh6CCdRCKKQ8yuCY/RygL5xkCgDhkqDkXJMGp4MNgRCEXbObzQEA4BMLZu5S3lyNJ0cxLYgJwaSaEBDVyhchabgyY2DZDahAeEE+bCZqsdzTP0B6rmbUkxVYWqROLmCTIqoOYH87nTFGtFibOAVNLxrAAEihDxGEYow+OdTtYOlDBmoILeQxQVdxhxkxNYiWXpHsIklWEAbVJ0E2eISzADM7ItQmWNcA1p444Nta1Aityf+oXyeWVpRXFbZOBRHtD2jpK6zRgnZRMCVCoBVYSoUuHAbxSxpoahMmnO1Y49UdNCjB3IoS0nx7bZcJThDIxWw2lprIChwqpDzUzeNRA/tBHk+pkMaiKi7JGYgrNQm9BprGUMVo3tsghrgG9hFy18DuLC+oWErhxkJIAQS7RNmYLjrBLVAtgZ6CcLC57MFGwKTIGczW0HfooBbH7VnvSAU8GcHELLxsxvp65AW2AkaO5h2oa+GAKtwQdzOa44Y4+nvBOlA1LIzBVmW0VA+rnEi089WNpfizJKyFRjRYluYy09OcezEuLDk7SmKsl8X7ALQQzbiG8HQSvATtccdlRR3/LIzAMTybrp+rmDCQXaQm9pRga8dhlDb+hizz3oc4vPVCGWQKq3yBMNPmaea8QAG2jd5JL7i01YbN6TIs3qgOQH6hH2u8r11vsLWTyo1HO323hynDmWlsn+1G28tDJuRWmGxtLje5NqapGmVaNDGd3ffKKMlIWC/4biEw9uZuR9tP/ol2a1e3kRXUUxkNdaIN7+QiNkADdB1Enx8Zd1ODhXLVhYNUyvpJMlhXJkir7vQmZpCJMscm3ji9FIDj5m9FEgJ0kQFoQHMqn01HnOGIepSU5U1OVxasW8Q+DUNieGj+GMjT/BZzuAOkgqAJ6hd7pBwZOcDTiXvb2pCejQzE/zATRX0vbrKQxJbV0psfNdXbWg1bxvvkn0rrrCjVPgW1YYAx0Tmskxa159v2WjgfPGW+rQkIiX7lzFKGNQe2gcR3scYxS+j7aE2cHYKRxxSif5EkX2RNGjAMXLAWMJTtWHOdPLTtNskMucoJVBk0GO4jvqIU9UNrM8YaHjhoi03ooTLb/57Wb3cQ3AdBhynUEB+wg0XFlbQLXbPZOxTniXPrqPSeo5XlJ+oAIfuWQW8vcjB6XHJxpfTp4RVUd9ns+YMjDMap3lH65J2MMVGkhUplc47hIanSKKF1bc7yyIlAqCDY41rHPZif2mNyon8Q/EhAJa3wzUpRQ2kPfA1xkf/4DEMX3iNArhNI8hJGkpMtNcAYdbFQ00IqkOFAmgZpnVIlOSM5BMg5SRNY8YBx0qZqpQI8o3JoK5UCNJMx0JNYJ+gLz9IY4+EbelFptEFxLoN3/jY5MHgitcALh3AohDYCfXMK2tNgx7QqayBVs/FXf3BaedFe+KFbv2NOHBUPo0dQ6SRDamcpLJEzVDZS3rVi/UYutNNohjQMe8Zlm+Mys9JtK0c6x2U9hmIoazYvxDVhHUVwGNYxRpI3/7cv+QVxD5N05bRcS1FzzhMDQqF+sdOAs+AFAJgicfEptBEr+hR72MEtvrQymaFPWsVhwwAOjOYcnWAoMIEmwGMHOvT/L49VFHkTFjDkaxaRhJJlVRwBMJ2RFn9QZoaDFXxwKIEiCLYAE1foVxDlOFKWDX1QL27XPi2zW7+UWAGkjMVxAVxkTESyJPdWHQlDMl8weSIRECTlC/hWMywBdZM0SMcWRuLkVz9ReP/yTRjgDPqQc2gCPSZ3gRwjEYe1eyXRJf8Cdo1EY8MyEZOnO8sVTvYBEIChHQqTT04RZ1VwYxRhKAplDqoAIhTlI9oAhscmhYFobZtkDyoUCHHGS56gFeMRQYbjNtWSX0OAI5GBOXBFcE4xHf5GSJnokdXGJXykBXQgSo8hEDeWCOJwBPtDLGVCY1skBTYihtW2U8/2K1WY/yHllgW6YjJhogWn8DFtwQpQNWEeEo2ntSBHczNSlQiJARlVpE0Hd1NRlo6UB21j8SzwgQsTYFN0CZIyRj2GQFxzRRGVoD19FXDkoDPvmEI3aSb61yC9gj1X0kUqMVBuIzeMmEg9eGt1h3hsCR4JqYIcERME1pN2YmxS+VNBlEkqtB34Qh/cQgJ9MwiM42VZyBCNtnhm8BekIZNitiyrdVbOUGyGRl04hlINJFuOhBzrkTUPBQJ7yW2t1F3tN32oETP9cRKBVXh++TghwFZxVBzQMB4aqEDpyGk8VXzfRmNKSUoFaJzvqJsiKTficH1OJxbKmEG5VzBZBwyNJkgHcf84lIIjb3YveeecjnaP8OYHrvBQQECcpDCaG5dbwWB/ArkzFUOf+2FlOtBzg6RjPIFj5XVpbBBZpwB+uMaf2gAFoDcEb+Q6euYiZ8WD0nKMKeGJzFUYZ8kUQEBUvNlqLPKT8RcscGKgi3NTM0l61vajnxI810OGjNcoxNFsFjUPmzGUViMoqqNCTrKg7UFlLhhJzWYazHUGVbFPl9kDGtElaakGsNEFVWEHQvYsoJYcxLdj6SdxIVU4FEQKEkMP07dEXNCKWKkXauFitZMCQ+M/k1SI5BVWhQRBbVYiDqJJgAZLgdI2JjExgilJL2ZhN4FPXcpPd0Z5niGh9BFTguj/cd1QCn+5ej/JEXvEI1oRDHhUOqRADTZ1WMYQTb2DLAV1jA61LOeoMcqJQb42JIG2clqiEtgjn4WpUWIISjH0ny4RQwMCRx3IjHBzRtWHCPWUL7MwOz+wBRLAjB1IActpFd6nKcEZIbv1Q3FCOmE6Ap8SVHSWYlnmnTf1qgQCWg+XDixKfV3TSwj3B9DqdjnwVzWoU1JSF2lQLB2hIwQyOHwQAodIdbTFHIuyjMcyGjVmLnJiGY6wjbVRe+lECfK6GoN3Ln1ETfMkqqX0GAN0UVL3SQMZnXEpYQmyocnQOGZKO/75Eb8nGO8glxuLDx5DP++Up/8JLazFjq2on1jX/wMokkr6xWxiYCNDCVDU+XKqCUXMMoHQxqKsaHD4hV2TBGSZ0EWd8UayJTDZYUvg2JpjpCYqxgdtcnflVpNSpjBRpjKYshJm8wqUlaJkg7bg5x5tOXYaUyk01B3JtG1g1yytFot3wDBCp7edwRgnmCIyki+2ki0aQUsTV1D+mC1GAAWDg7YoUbVK8arPCABpAQjhAjBGuEnQBptzYBZXJU3qJ0ZSWWu0Qp9KmTcpgaSgdCIucKwD84oqklfGAY5gIFWeUxQX8Vi7AXp/lDmlWoyio0tLmyc+yBEvZaVkegl62B24+Kyq8bnRwIb6gWsvVTiSQbwohTPW6o8zOlba9v8G+dUCGoUMFLRXJOSloVEvDNJ+h/i59uk3zVhDeFMwvfkOkXBSiYuV2LquemQ86bcbSwojVglJbjGf5lZ6/klJVzMVWKSa3TqQT6oYvFplVKaUXhmRipWsHUB+fOo+g/EEo7U9K8JQautXffGtYaKZHZZT1LNHSrA8hCVqzWAN20F+/bYI72if5nAY74JLE+ad6/ICRfBnzUZMqZQ4QTLB2kokpXsy8pBJc+YnlFcvuPBWZHqzg6EERIV2R4M+xVVlrniGNxEunOB/26eOSmQdgDCRZWdMlLQ2VYejv9cqw8Rp88YVXMOoLLA5LrACauHGe8koK6u2VPNjaASF1VP9O1HkHc0XUdjREuqGAyb6ap60Q6AAmm72TuEnTke8KeURBJYlhYDjKtNTfS0iN0vBQddbAjsMwyvhQgkDXMLhsukhT3cQfWy6TCNzbi0DcBWnHM/7A9RQPItVA5tcDFzajozZOAMCNXKhwmx3t1HcvjYchfBbIK4WQrORFGo1Unw3CJajVk5JdrP4Pb9sZ682KjV8D6zSBqLnBNv4EwRhs+WwyY6sd8zhCYEkIYsFidbSHy8zbwslTw1o0Q0UhINSEntwD6+XZqwMkpOBZbN4Vd4oBpyJl2CMUf2Dc/UhYDqwjUX3ApOJMnrwi0bCJRbkZHvUHwxMh/5CHBAXAQA7
/***
|Theme|MiAtw_Taime|
|Source|~SiteWeb @@color:#639;''À DÉFINIR''@@|
|Version|1.0.0|
|Auteur|Michel Ayotte|
|License|LegalStatements|
|~|[[Open Source License|http://classic.tiddlywiki.com/#OpenSourceLicense]]|
|Description|Thème avec tags en haut + choix en bas + choix-theme (MiA^^tw^^)|
|StyleSheet|##StyleSheet|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|!Nécessaire|Projet_MainMenu|
***/
!StyleSheet
/*{{{*/
[[JqueryTreeviewCSS]]
[[StyleSheetAdjustmentsZ]]
/* RACCOURCIS */
/* text alignments */
.left
{ display:block;text-align:left; }
.center
{ display:block;text-align:center; }
.center table
{ margin:auto !important; }
.right
{ display:block;text-align:right; }
.floatleft { float:left; }
.floatcenter { float:center; }
.floatright { float:right; }
/* TOOLBAR */
.toolbar{
visibility:hidden;
}
.selected .toolbar{
visibility:visible;
}
.toolbar {color:[[ColorPalette::PrimaryDark]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
/* DIMINUE L'ESPACE ENTRE TOP_CITATIONS & TIDDLERBAR */
.tiddler, .viewer pre {
display: block;
margin-top: 2px;
margin-bottom: .5em;
padding-top: 2px;
padding-bottom: .5em;
text-align: left;
text-shadow: none;
}
/* DIMINUE LA HAUTEUR DE L'ENTÊTE */
.headerShadow {padding: .1em 2em .1em 2em;}
.headerForeground {padding: .1em 2em .1em 2em;}
.siteTitle {font-size:1.5em;}
.siteSubtitle {font-size:1em;}
/* AUGMENTE LA CASSE PAR DÉFAUT (qui est de 10) DES CARACTÈRES & TEXTURE DE TOUTE LA PAGE */
body {
font-family: Calibri, Arial, sans-serif;
font-size: 12pt;
background-image: url('[[TexturesStucco]]');
}
/* AFFICHAGE DU MENU D'EN HAUT (TopMenu) DE MIA-tw */
#topMenu{
display: block;
background-color:#CFF;
height: auto;
margin:0px 9px 1px 9px;
padding:2px 25px 2px 25px;
border: solid 1px #555;
-webkit-border-radius:0.7em;
-moz-border-radius:0.7em;
border-radius:0.7em;
}
/* AFFICHAGE DES CITATIONS */
#topCitations{
display: block;
background-color:#9CF;
font-size: 0.9em;
text-align: center;
height: 1.4em;
margin:0px 9px 1px 9px;
padding:2px 25px 2px 25px;
border: solid 1px #555;
-webkit-border-radius:0.7em;
-moz-border-radius:0.7em;
border-radius:0.7em;
}
/* AFFICHAGE DES ONGLETS DE LA TIDDLERSBAR (les tiddlers ouverts) */
#tiddlersBar {padding:7px 0.5em 2px 0.5em;}
.tab {border-radius: .6em .6em .6em .6em; padding:0.1em 0.6em 0.1em 0.6em;}
.tabContents {color:[[ColorPalette::Foreground]];}
.button {color:[[ColorPalette::PrimaryMid]];}
.tabUnselected {
background-color:[[ColorPalette::PrimaryPale]];
color:[[ColorPalette::Foreground]];
}
.button:hover {
background: #FC;
color:[[ColorPalette::Foreground]];
}
/* L'ONGLET AFFICHÉ A UNE ENTÊTE DE COULEUR DIFFÉRENTE */
.tabSelected {
background-color:#99FFFF;
color: D6D6FF;
font-variant:small-caps;}
}
/* DIMINUE L'ESPACE ENTRE LA TIDDLERSBAR & LA TOOLBAR */
#displayArea {margin-top:.5em;}
/* ARRONDIT LE CADRE DE LA FENÊTRE D'AFFICHAGE DU CONTENU DU TIDDLER & ajoute une petite marge entre celle-ci et celle du tiddler (Titre, tags, menu...) */
.viewer {
background-image: url('[[TexturesParchmentGray]]');
border: 1px solid #999;
-webkit-border-radius:0.9em;
-moz-border-radius:0.9em;
border-radius:0.9em;
margin:0.3em;
padding:1em;
}
/* AFFICHE UN CADRE ARRONDI AUTOUR DE LA ZONE D'ÉDITION*/
.editor textarea {
font-family: 'Bitstream Charter', 'Georgia','Times New Roman', 'serif';
border: 1px solid ##E6FFFF;
-webkit-border-radius:0.9em;
-moz-border-radius:0.9em;
border-radius:0.9em;
text-align: left;
height: 20em;
font-weight: normal;
padding:0.3em;
}
.tagged {
text-align: left;
margin:2em;
float:right;
}
/* MAINMENU (menu de gauche) */
/* MAINMENU (menu de gauche) */
#mainMenu { text-align:left; width:11em; padding:0.1em; }
#mainMenu table, #mainMenu table td { border:1px solid #999; border-collapse:collapse; padding:.1em; }
/* LES TEXTES DES TABLEAUX SONT ALIGÉS VERS LE HAUT */
.viewer td, .viewer tr, .twtable td, .twtable tr {
vertical-align: top;
}
/* CHANGE LA COULEUR DE L'ENTÊTE D'UN TABLEAU */
.viewer th, .viewer thead td, .twtable th, .twtable thead td {
background:ColorPalette::PrimaryPale;
border:1px solid ColorPalette::TertiaryDark;
color:ColorPalette::Background;}
/* ARRONDIT LES COINS DES ONGLETS */
#sidebar
{ width:17em; clear:both; }
#sidebarTabs .tab
{ font-size:90%; -moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em; }
sidebarTabs .button
{ margin:0px 0.2em; padding:0.2em 0.3em; border:1px solid transparent;
-moz-border-radius:3px; -webkit-border-radius:3px; display:block; }
sidebarTabs .button:hover
{ border:1px solid #999; }
/*}}}*/
!PageTemplate
<!--{{{-->
<div class='header' style="
color: #606060;
border: solid 1px #b7b7b7 !important;
color: #e9e9e9;
border: solid 1px #555 !important;
background: #6e6e6e;
background: -webkit-gradient(linear, left top, left bottom, from(#18F), to(#8CF));
background: -moz-linear-gradient(top, #18F, #8CF);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#18F', endColorstr='#8CF');
-webkit-border-radius: .9em;
-moz-border-radius: .9em;
border-radius: .9em;">
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div></div>
<div id='breadCrumbs' class='breadCrumbs' style='font-size:75%;padding:0 1em;'></div>
<div id='topMenu'><span class='topMenu' refresh='content' force='true' tiddler='TopMenu'></span></div>
<div id='topCitations'><span class='topCitations' refresh='content' force='true' tiddler='TopCitations'></span></div>
<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
<div id='mainMenu' refresh='content' force='true' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' force='true' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
<div class='title'>
<span style="padding-right:1em; color:[[ColorPalette::PrimaryDark]]; font-size:.8em;" class='title' macro='view title'></span>
<span style="font-size:.6em; padding-right:1em; float:right"class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></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>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class='title'>
<span style="padding-right:1.5em; color:[[ColorPalette::PrimaryDark]]; font-size:1em;" class='title' macro='view title'></span>
<span style="color:ColorPalette::SecondaryDark;" class='title' macro='edit title'></span>
<span style="font-size:0.7em; float:right" class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></span>
</div>
<div macro='annotations'></div>
<div class='editor' macro='edit tags'></div>
<div class='editorFooter'>
<span macro='message views.editor.tagPrompt'></span>
<span macro='tagChooser excludeLists'></span>
</div>
<div macro='tiddler QuickEditToolbar'></div>
<div class='editor' macro='edit text'></div>
<!--}}}-->
/***
|Theme|MiAtw_Taime|
|Source|~SiteWeb @@color:#639;''À DÉFINIR''@@|
|Version|1.0.0|
|Auteur|Michel Ayotte|
|License|LegalStatements|
|~|[[Open Source License|http://classic.tiddlywiki.com/#OpenSourceLicense]]|
|Description|Thème avec tags en haut + choix en bas + choix-theme (MiA^^tw^^)|
|StyleSheet|##StyleSheet|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|!Nécessaire|Projet_MainMenu|
***/
!StyleSheet
/*{{{*/
[[JqueryTreeviewCSS]]
[[StyleSheetAdjustmentsZ]]
/* RACCOURCIS */
/* text alignments */
.left
{ display:block;text-align:left; }
.center
{ display:block;text-align:center; }
.center table
{ margin:auto !important; }
.right
{ display:block;text-align:right; }
.floatleft { float:left; }
.floatcenter { float:center; }
.floatright { float:right; }
/* TOOLBAR */
.toolbar{
visibility:hidden;
}
.selected .toolbar{
visibility:visible;
}
.toolbar {color:[[ColorPalette::PrimaryDark]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}
/* DIMINUE L'ESPACE ENTRE TOP_CITATIONS & TIDDLERBAR */
.tiddler, .viewer pre {
display: block;
margin-top: 2px;
margin-bottom: .5em;
padding-top: 2px;
padding-bottom: .5em;
text-align: left;
text-shadow: none;
}
/* DIMINUE LA HAUTEUR DE L'ENTÊTE */
.headerShadow {padding: .1em 2em .1em 2em;}
.headerForeground {padding: .1em 2em .1em 2em;}
.siteTitle {font-size:1.5em;}
.siteSubtitle {font-size:1em;}
/* AUGMENTE LA CASSE PAR DÉFAUT (qui est de 10) DES CARACTÈRES & TEXTURE DE TOUTE LA PAGE */
body {
font-family: Calibri, Arial, sans-serif;
font-size: 12pt;
background-image: url('[[TexturesStucco]]');
}
/* AFFICHAGE DU MENU D'EN HAUT (TopMenu) DE MIA-tw */
#topMenuLocal{
display: block;
background-color:#CFF;
height: auto;
margin:0px 9px 1px 9px;
padding:2px 25px 2px 25px;
border: solid 1px #555;
-webkit-border-radius:0.7em;
-moz-border-radius:0.7em;
border-radius:0.7em;
}
/* AFFICHAGE DES CITATIONS */
#topCitations{
display: block;
background-color:#9CF;
font-size: 0.9em;
text-align: center;
height: 1.4em;
margin:0px 9px 1px 9px;
padding:2px 25px 2px 25px;
border: solid 1px #555;
-webkit-border-radius:0.7em;
-moz-border-radius:0.7em;
border-radius:0.7em;
}
/* AFFICHAGE DES ONGLETS DE LA TIDDLERSBAR (les tiddlers ouverts) */
#tiddlersBar {padding:7px 0.5em 2px 0.5em;}
.tab {border-radius: .6em .6em .6em .6em; padding:0.1em 0.6em 0.1em 0.6em;}
.tabContents {color:[[ColorPalette::Foreground]];}
.button {color:[[ColorPalette::PrimaryMid]];}
.tabUnselected {
background-color:[[ColorPalette::PrimaryPale]];
color:[[ColorPalette::Foreground]];
}
.button:hover {
background: #FC;
color:[[ColorPalette::Foreground]];
}
/* L'ONGLET AFFICHÉ A UNE ENTÊTE DE COULEUR DIFFÉRENTE */
.tabSelected {
background-color:#99FFFF;
color: D6D6FF;
font-variant:small-caps;}
}
/* DIMINUE L'ESPACE ENTRE LA TIDDLERSBAR & LA TOOLBAR */
#displayArea {margin-top:.5em;}
/* ARRONDIT LE CADRE DE LA FENÊTRE D'AFFICHAGE DU CONTENU DU TIDDLER & ajoute une petite marge entre celle-ci et celle du tiddler (Titre, tags, menu...) */
.viewer {
background-image: url('[[TexturesParchmentGray]]');
border: 1px solid #999;
-webkit-border-radius:0.9em;
-moz-border-radius:0.9em;
border-radius:0.9em;
margin:0.3em;
padding:1em;
}
/* AFFICHE UN CADRE ARRONDI AUTOUR DE LA ZONE D'ÉDITION*/
.editor textarea {
font-family: 'Bitstream Charter', 'Georgia','Times New Roman', 'serif';
border: 1px solid ##E6FFFF;
-webkit-border-radius:0.9em;
-moz-border-radius:0.9em;
border-radius:0.9em;
text-align: left;
height: 20em;
font-weight: normal;
padding:0.3em;
}
.tagged {
text-align: left;
margin:2em;
float:right;
}
/* MAINMENU (menu de gauche) */
/* MAINMENU (menu de gauche) */
#mainMenu { text-align:left; width:11em; padding:0.1em; }
#mainMenu table, #mainMenu table td { border:1px solid #999; border-collapse:collapse; padding:.1em; }
/* LES TEXTES DES TABLEAUX SONT ALIGÉS VERS LE HAUT */
.viewer td, .viewer tr, .twtable td, .twtable tr {
vertical-align: top;
}
/* CHANGE LA COULEUR DE L'ENTÊTE D'UN TABLEAU */
.viewer th, .viewer thead td, .twtable th, .twtable thead td {
background:ColorPalette::PrimaryPale;
border:1px solid ColorPalette::TertiaryDark;
color:ColorPalette::Background;}
/* ARRONDIT LES COINS DES ONGLETS */
#sidebar
{ width:17em; clear:both; }
#sidebarTabs .tab
{ font-size:90%; -moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em; }
sidebarTabs .button
{ margin:0px 0.2em; padding:0.2em 0.3em; border:1px solid transparent;
-moz-border-radius:3px; -webkit-border-radius:3px; display:block; }
sidebarTabs .button:hover
{ border:1px solid #999; }
/*}}}*/
!PageTemplate
<!--{{{-->
<div class='header' style="
color: #606060;
border: solid 1px #b7b7b7 !important;
color: #e9e9e9;
border: solid 1px #555 !important;
background: #6e6e6e;
background: -webkit-gradient(linear, left top, left bottom, from(#18F), to(#8CF));
background: -moz-linear-gradient(top, #18F, #8CF);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#18F', endColorstr='#8CF');
-webkit-border-radius: .9em;
-moz-border-radius: .9em;
border-radius: .9em;">
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div></div>
<div id='breadCrumbs' class='breadCrumbs' style='font-size:75%;padding:0 1em;'></div>
<div id='topMenuLocal'><span class='topMenuLocal' refresh='content' force='true' tiddler='TopMenuLocal'></span></div>
<div id='topCitations'><span class='topCitations' refresh='content' force='true' tiddler='TopCitations'></span></div>
<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
<div id='mainMenu' refresh='content' force='true' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' force='true' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
<div class='title'>
<span style="padding-right:1em; color:[[ColorPalette::PrimaryDark]]; font-size:.8em;" class='title' macro='view title'></span>
<span style="font-size:.6em; padding-right:1em; float:right"class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></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>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class='title'>
<span style="padding-right:1.5em; color:[[ColorPalette::PrimaryDark]]; font-size:1em;" class='title' macro='view title'></span>
<span style="color:ColorPalette::SecondaryDark;" class='title' macro='edit title'></span>
<span style="font-size:0.7em; float:right" class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></span>
</div>
<div macro='annotations'></div>
<div class='editor' macro='edit tags'></div>
<div class='editorFooter'>
<span macro='message views.editor.tagPrompt'></span>
<span macro='tagChooser excludeLists'></span>
</div>
<div macro='tiddler QuickEditToolbar'></div>
<div class='editor' macro='edit text'></div>
<!--}}}-->
/***
|Theme|MiAtw_Taime|
|Source|~SiteWeb @@color:#639;''À DÉFINIR''@@|
|Version|1.0.0|
|Auteur|Michel Ayotte|
|License|LegalStatements|
|~|[[Open Source License|http://classic.tiddlywiki.com/#OpenSourceLicense]]|
|Description|Thème avec tags en haut + choix en bas + choix-theme (MiA^^tw^^)|
|StyleSheet|##StyleSheet|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|!Nécessaire|Projet_MainMenu|
***/
!StyleSheet
/*{{{*/
[[JqueryTreeviewCSS]]
[[StyleSheetAdjustmentsZ]]
/* RACCOURCIS */
/* text alignments */
.left
{ display:block;text-align:left; }
.center
{ display:block;text-align:center; }
.center table
{ margin:auto !important; }
.right
{ display:block;text-align:right; }
.floatleft { float:left; }
.floatcenter { float:center; }
.floatright { float:right; }
/* DIMINUE L'ESPACE ENTRE TOP_CITATIONS & TIDDLERBAR */
.tiddler, .viewer pre {
display: block;
margin-top: 2px;
margin-bottom: .5em;
padding-top: 2px;
padding-bottom: .5em;
text-align: left;
text-shadow: none;
}
/* DIMINUE LA HAUTEUR DE L'ENTÊTE */
.headerShadow {padding: .1em 2em .1em 2em;}
.headerForeground {padding: .1em 2em .1em 2em;}
.siteTitle {font-size:1.5em;}
.siteSubtitle {font-size:1em;}
/* AUGMENTE LA CASSE PAR DÉFAUT (qui est de 10) DES CARACTÈRES & TEXTURE DE TOUTE LA PAGE */
body {
font-family: Calibri, Arial, sans-serif;
font-size: 12pt;
background-image: url('[[TexturesStucco]]');
}
/* AFFICHAGE DES CITATIONS */
#topCitations{
display: block;
background-color:#9CF;
font-size: 0.9em;
text-align: center;
height: 1.4em;
margin:0px 9px 1px 9px;
padding:2px 25px 2px 25px;
border: solid 1px #555;
-webkit-border-radius:0.7em;
-moz-border-radius:0.7em;
border-radius:0.7em;
}
/* AFFICHAGE DES ONGLETS DE LA TIDDLERSBAR (les tiddlers ouverts) */
#tiddlersBar {padding:7px 0.5em 2px 0.5em;}
.tab {border-radius: .6em .6em .6em .6em; padding:0.1em 0.6em 0.1em 0.6em;}
.tabContents {color:[[ColorPalette::Foreground]];}
.button {color:[[ColorPalette::PrimaryMid]];}
.tabUnselected {
background-color:[[ColorPalette::PrimaryPale]];
color:[[ColorPalette::Foreground]];
}
.button:hover {
background: #FC;
color:[[ColorPalette::Foreground]];
}
/* L'ONGLET AFFICHÉ A UNE ENTÊTE DE COULEUR DIFFÉRENTE */
.tabSelected {
background-color:#99FFFF;
color: D6D6FF;
font-variant:small-caps;}
}
/* DIMINUE L'ESPACE ENTRE LA TIDDLERSBAR & LA TOOLBAR */
#displayArea {margin-top:.5em;}
/* ARRONDIT LE CADRE DE LA FENÊTRE D'AFFICHAGE DU CONTENU DU TIDDLER & ajoute une petite marge entre celle-ci et celle du tiddler (Titre, tags, menu...) */
.viewer {
background-image: url('[[TexturesParchmentGray]]');
border: 1px solid #999;
-webkit-border-radius:0.9em;
-moz-border-radius:0.9em;
border-radius:0.9em;
margin:0.3em;
padding:1em;
}
/* AFFICHE UN CADRE ARRONDI AUTOUR DE LA ZONE D'ÉDITION*/
.editor textarea {
font-family: 'Bitstream Charter', 'Georgia','Times New Roman', 'serif';
border: 1px solid ##E6FFFF;
-webkit-border-radius:0.9em;
-moz-border-radius:0.9em;
border-radius:0.9em;
text-align: left;
height: 20em;
font-weight: normal;
padding:0.3em;
}
.tagged {
text-align: left;
margin:2em;
float:right;
}
/* LES TEXTES DES TABLEAUX SONT ALIGÉS VERS LE HAUT */
.viewer td, .viewer tr, .twtable td, .twtable tr {
vertical-align: top;
}
/* CHANGE LA COULEUR DE L'ENTÊTE D'UN TABLEAU */
.viewer th, .viewer thead td, .twtable th, .twtable thead td {
background:ColorPalette::PrimaryPale;
border:1px solid ColorPalette::TertiaryDark;
color:ColorPalette::Background;}
/* ARRONDIT LES COINS DES ONGLETS */
#sidebar
{ width:17em; clear:both; }
#sidebarTabs .tab
{ font-size:90%; -moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em; }
sidebarTabs .button
{ margin:0px 0.2em; padding:0.2em 0.3em; border:1px solid transparent;
-moz-border-radius:3px; -webkit-border-radius:3px; display:block; }
sidebarTabs .button:hover
{ border:1px solid #999; }
/*}}}*/
!PageTemplate
<!--{{{-->
<div class='header' style="
color: #606060;
border: solid 1px #b7b7b7 !important;
color: #e9e9e9;
border: solid 1px #555 !important;
background: #6e6e6e;
background: -webkit-gradient(linear, left top, left bottom, from(#18F), to(#8CF));
background: -moz-linear-gradient(top, #18F, #8CF);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#18F', endColorstr='#8CF');
-webkit-border-radius: .9em;
-moz-border-radius: .9em;
border-radius: .9em;">
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div></div>
<div id='topCitations'><span class='topCitations' refresh='content' force='true' tiddler='TopCitations'></span></div>
<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
<div class='title'>
<span style="padding-right:1em; color:[[ColorPalette::PrimaryDark]]; font-size:.8em;" class='title' macro='view title'></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>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class='title'>
<span style="padding-right:1.5em; color:[[ColorPalette::PrimaryDark]]; font-size:1em;" class='title' macro='view title'></span>
</div>
<div macro='annotations'></div>
<span macro='tagChooser excludeLists'></span>
</div>
<!--}}}-->
/***
|''Name:''|TiddlersBarPlugin|
|''Description:''|A bar to switch between tiddlers through tabs (like browser tabs bar).|
|''Version:''|1.2.5|
|''Date:''|Jan 18,2008|
|''Source:''|http://visualtw.ouvaton.org/VisualTW.html|
|''Author:''|Pascal Collin|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
!Demos
On [[homepage|http://visualtw.ouvaton.org/VisualTW.html]], open several tiddlers to use the tabs bar.
!Installation
#import this tiddler from [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] (tagged as systemConfig)
#save and reload
#''if you're using a custom [[PageTemplate]]'', add {{{<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>}}} before {{{<div id='tiddlerDisplay'></div>}}}
#optionally, adjust StyleSheetTiddlersBar
!Tips
*Doubleclick on the tiddlers bar (where there is no tab) create a new tiddler.
*Tabs include a button to close {{{x}}} or save {{{!}}} their tiddler.
*By default, click on the current tab close all others tiddlers.
!Configuration options
<<option chkDisableTabsBar>> Disable the tabs bar (to print, by example).
<<option chkHideTabsBarWhenSingleTab >> Automatically hide the tabs bar when only one tiddler is displayed.
<<option txtSelectedTiddlerTabButton>> ''selected'' tab command button.
<<option txtPreviousTabKey>> previous tab access key.
<<option txtNextTabKey>> next tab access key.
!Code
***/
//{{{
config.options.chkDisableTabsBar = config.options.chkDisableTabsBar ? config.options.chkDisableTabsBar : false;
config.options.chkHideTabsBarWhenSingleTab = config.options.chkHideTabsBarWhenSingleTab ? config.options.chkHideTabsBarWhenSingleTab : false;
config.options.txtSelectedTiddlerTabButton = config.options.txtSelectedTiddlerTabButton ? config.options.txtSelectedTiddlerTabButton : "closeOthers";
config.options.txtPreviousTabKey = config.options.txtPreviousTabKey ? config.options.txtPreviousTabKey : "";
config.options.txtNextTabKey = config.options.txtNextTabKey ? config.options.txtNextTabKey : "";
config.macros.tiddlersBar = {
tooltip : "see ",
tooltipClose : "click here to close this tab",
tooltipSave : "click here to save this tab",
promptRename : "Enter tiddler new name",
currentTiddler : "",
previousState : false,
previousKey : config.options.txtPreviousTabKey,
nextKey : config.options.txtNextTabKey,
tabsAnimationSource : null, //use document.getElementById("tiddlerDisplay") if you need animation on tab switching.
handler: function(place,macroName,params) {
var previous = null;
if (config.macros.tiddlersBar.isShown())
story.forEachTiddler(function(title,e){
if (title==config.macros.tiddlersBar.currentTiddler){
var d = createTiddlyElement(null,"span",null,"tab tabSelected");
config.macros.tiddlersBar.createActiveTabButton(d,title);
if (previous && config.macros.tiddlersBar.previousKey) previous.setAttribute("accessKey",config.macros.tiddlersBar.nextKey);
previous = "active";
}
else {
var d = createTiddlyElement(place,"span",null,"tab tabUnselected");
var btn = createTiddlyButton(d,title,config.macros.tiddlersBar.tooltip + title,config.macros.tiddlersBar.onSelectTab);
btn.setAttribute("tiddler", title);
if (previous=="active" && config.macros.tiddlersBar.nextKey) btn.setAttribute("accessKey",config.macros.tiddlersBar.previousKey);
previous=btn;
}
var isDirty =story.isDirty(title);
var c = createTiddlyButton(d,isDirty ?"!":"x",isDirty?config.macros.tiddlersBar.tooltipSave:config.macros.tiddlersBar.tooltipClose, isDirty ? config.macros.tiddlersBar.onTabSave : config.macros.tiddlersBar.onTabClose,"tabButton");
c.setAttribute("tiddler", title);
if (place.childNodes) {
place.insertBefore(document.createTextNode(" "),place.firstChild); // to allow break line here when many tiddlers are open
place.insertBefore(d,place.firstChild);
}
else place.appendChild(d);
})
},
refresh: function(place,params){
removeChildren(place);
config.macros.tiddlersBar.handler(place,"tiddlersBar",params);
if (config.macros.tiddlersBar.previousState!=config.macros.tiddlersBar.isShown()) {
story.refreshAllTiddlers();
if (config.macros.tiddlersBar.previousState) story.forEachTiddler(function(t,e){e.style.display="";});
config.macros.tiddlersBar.previousState = !config.macros.tiddlersBar.previousState;
}
},
isShown : function(){
if (config.options.chkDisableTabsBar) return false;
if (!config.options.chkHideTabsBarWhenSingleTab) return true;
var cpt=0;
story.forEachTiddler(function(){cpt++});
return (cpt>1);
},
selectNextTab : function(){ //used when the current tab is closed (to select another tab)
var previous="";
story.forEachTiddler(function(title){
if (!config.macros.tiddlersBar.currentTiddler) {
story.displayTiddler(null,title);
return;
}
if (title==config.macros.tiddlersBar.currentTiddler) {
if (previous) {
story.displayTiddler(null,previous);
return;
}
else config.macros.tiddlersBar.currentTiddler=""; // so next tab will be selected
}
else previous=title;
});
},
onSelectTab : function(e){
var t = this.getAttribute("tiddler");
if (t) story.displayTiddler(null,t);
return false;
},
onTabClose : function(e){
var t = this.getAttribute("tiddler");
if (t) {
if(story.hasChanges(t) && !readOnly) {
if(!confirm(config.commands.cancelTiddler.warning.format([t])))
return false;
}
story.closeTiddler(t);
}
return false;
},
onTabSave : function(e) {
var t = this.getAttribute("tiddler");
if (!e) e=window.event;
if (t) config.commands.saveTiddler.handler(e,null,t);
return false;
},
onSelectedTabButtonClick : function(event,src,title) {
var t = this.getAttribute("tiddler");
if (!event) event=window.event;
if (t && config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton])
config.commands[config.options.txtSelectedTiddlerTabButton].handler(event, src, t);
return false;
},
onTiddlersBarAction: function(event) {
var source = event.target ? event.target.id : event.srcElement.id; // FF uses target and IE uses srcElement;
if (source=="tiddlersBar") story.displayTiddler(null,'New Tiddler',DEFAULT_EDIT_TEMPLATE,false,null,null);
},
createActiveTabButton : function(place,title) {
if (config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton]) {
var btn = createTiddlyButton(place, title, config.commands[config.options.txtSelectedTiddlerTabButton].tooltip ,config.macros.tiddlersBar.onSelectedTabButtonClick);
btn.setAttribute("tiddler", title);
}
else
createTiddlyText(place,title);
}
}
story.coreCloseTiddler = story.coreCloseTiddler? story.coreCloseTiddler : story.closeTiddler;
story.coreDisplayTiddler = story.coreDisplayTiddler ? story.coreDisplayTiddler : story.displayTiddler;
story.closeTiddler = function(title,animate,unused) {
if (title==config.macros.tiddlersBar.currentTiddler)
config.macros.tiddlersBar.selectNextTab();
story.coreCloseTiddler(title,false,unused); //disable animation to get it closed before calling tiddlersBar.refresh
var e=document.getElementById("tiddlersBar");
if (e) config.macros.tiddlersBar.refresh(e,null);
}
story.displayTiddler = function(srcElement,tiddler,template,animate,unused,customFields,toggle){
story.coreDisplayTiddler(config.macros.tiddlersBar.tabsAnimationSource,tiddler,template,animate,unused,customFields,toggle);
var title = (tiddler instanceof Tiddler)? tiddler.title : tiddler;
if (config.macros.tiddlersBar.isShown()) {
story.forEachTiddler(function(t,e){
if (t!=title) e.style.display="none";
else e.style.display="";
})
config.macros.tiddlersBar.currentTiddler=title;
}
var e=document.getElementById("tiddlersBar");
if (e) config.macros.tiddlersBar.refresh(e,null);
}
var coreRefreshPageTemplate = coreRefreshPageTemplate ? coreRefreshPageTemplate : refreshPageTemplate;
refreshPageTemplate = function(title) {
coreRefreshPageTemplate(title);
if (config.macros.tiddlersBar) config.macros.tiddlersBar.refresh(document.getElementById("tiddlersBar"));
}
ensureVisible=function (e) {return 0} //disable bottom scrolling (not useful now)
config.shadowTiddlers.StyleSheetTiddlersBar = "/*{{{*/\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .button {border:0}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .tab {white-space:nowrap}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar {padding : 1em 0.5em 2px 0.5em}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += ".tabUnselected .tabButton, .tabSelected .tabButton {padding : 0 2px 0 2px; margin: 0 0 0 4px;}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += ".tiddler, .tabContents {border:1px [[ColorPalette::TertiaryPale]] solid;}\n";
config.shadowTiddlers.StyleSheetTiddlersBar +="/*}}}*/";
store.addNotification("StyleSheetTiddlersBar", refreshStyles);
config.refreshers.none = function(){return true;}
config.shadowTiddlers.PageTemplate=config.shadowTiddlers.PageTemplate.replace(/<div id='tiddlerDisplay'><\/div>/m,"<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>\n<div id='tiddlerDisplay'></div>");
//}}}
/%
!info
|Name|ToggleFullScreen|
|Source|http://www.TiddlyTools.com/#ToggleFullScreen|
|Version|2.1.0|
|Author|Eric Shulman|
|Modifier|Michel Ayotte (enlève la possibilité de revenir à la normale)|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|Create a link that shows/hides sidebars and page headers|
Usage
<<<
{{{
<<tiddler ToggleFullScreen>>
<<tiddler ToggleFullScreen with: label altlabel>>
}}}
embeds a command link into content, where:
*''label'' (optional, default={{{fullscreen}}})<br>command text
*''altlabel'' (optional, default={{{restore}}})<br>alternative command text shown when full screen is enabled
You can also enable/disable full screen immediately (without clicking a command link) by embedding the one of the following directly in your content:
{{{
<<tiddler ToggleFullScreen##ON>>
<<tiddler ToggleFullScreen##OFF>>
}}}
<<<
Example
<<<
{{{<<tiddler ToggleFullScreen with: fullscreen restore>>}}}
<<tiddler ToggleFullScreen##show with: fullscreen restore>>
<<<
Revisions
<<<
2011.05.13 2.1.0 refactored code and restored "##ON" and "#OFF" usage
2010.xx.xx 2.0.1 converted to transclusion
2008.10.13 1.1.3 re-written to support bookmarklet usage
2008.01.20 1.0.0 created (inline script)
<<<
!end
!code
<<tiddler {{
window.setFullScreen = function(fs) {
var co=config.options; var cm=config.macros;
cm.option.propagateOption('chkFullScreen','checked',fs,'input');
var showmm=!fs && co.chkShowLeftSidebar!==false;
var showsb=!fs && co.chkShowRightSidebar!==false;
var showcrumbs=!fs && co.chkShowBreadcrumbs!==false
&& cm.breadcrumbs && cm.breadcrumbs.crumbs.length;
var showstorymenu=!fs;
var da=document.getElementById('displayArea');
var cw=document.getElementById('contentWrapper');
var mm=document.getElementById('mainMenu');
var sb=document.getElementById('sidebar');
var sm=document.getElementById('storyMenu');
var bc=document.getElementById('breadCrumbs');
if (cw){ // toggle page header
var elems=cw.getElementsByTagName('*');
for (var i=0; i<elems.length; i++) if (hasClass(elems[i],'header'))
{ elems[i].style.display=fs?'none':'block'; break; }
}
if (mm) { // toggle MainMenu
mm.style.display=showmm?'block':'none';
da.style.marginLeft=showmm?(co.txtDisplayAreaLeftMargin||''):'1em';
}
if (sb) { // toggle sidebar
sb.style.display=showsb?'block':'none';
da.style.marginRight=showsb?(co.txtDisplayAreaRightMargin||''):'1em';
}
if (sm) sm.style.display=showstorymenu?'block':'none'; // toggle StoryMenu
if (bc) bc.style.display=showcrumbs?'block':'none'; // toggle BreadCrumbsPlugin
var b=document.getElementById('restoreFromFullscreenButton'); if (b) removeNode(b);
if (fs) {
setStylesheet(store.getTiddlerText('ToggleFullScreen##styles'),'fullScreenStyles');
var b=createTiddlyElement(null,'span','restoreFromFullscreenButton','selected');
b.innerHTML='◊';
b.title='RESTORE: redisplay page header, menu and sidebar';
b.onclick=function(ev){return window.setFullScreen(false);};
document.body.insertBefore(b,null);
}
return false;
};
'';}}>>
!end
!ON
<<tiddler ToggleFullScreen##code>><<tiddler {{window.setFullScreen(true);'';}}>>
!end
!OFF
<<tiddler ToggleFullScreen##code>><<tiddler {{window.setFullScreen(true);'';}}>>
!end
!show
<<tiddler ToggleFullScreen##code>><html><nowiki>
<a href='javascript:;' title="FULLSCREEN: toggle sidebars and page header"
onmouseover="
this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
+encodeURIComponent(encodeURIComponent(this.onclick))
+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
window.setFullScreen(!config.options.chkFullScreen); // toggle setting
this.innerHTML=!config.options.chkFullScreen?'$1':'$2'; // set command text
return false;
">$1</a></html>
!end
%/<<tiddler {{var src='ToggleFullScreen'; src+(tiddler&&tiddler.title==src?'##info':'##show');}}
with: {{'$'+'1'!='$1'?'$1':'fullscreen'}}
{{'$'+'2'!='$2'?'$2':'restore'}}>>
/%
!info
|Name|ToggleLeftSidebar|
|Source|http://www.TiddlyTools.com/#ToggleLeftSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide left sidebar (MainMenu)|
Usage
<<<
{{{
<<tiddler ToggleLeftSidebar>>
<<tiddler ToggleLeftSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleLeftSidebar##show
with: {{config.options.chkShowLeftSidebar?'◄':'►'}}>>
<<<
Configuration:
<<<
{{{
config.options.chkShowLeftSidebar (true)
config.options.txtToggleLeftSideBarLabelShow (►)
config.options.txtToggleLeftSideBarLabelHide (◄)
}}}
<<<
!end
!show
<<tiddler {{
var co=config.options;
if (co.chkShowLeftSidebar===undefined) co.chkShowLeftSidebar=true;
var mm=document.getElementById('mainMenu');
var da=document.getElementById('displayArea');
if (mm) {
mm.style.display=co.chkShowLeftSidebar?'block':'none';
da.style.marginLeft=co.chkShowLeftSidebar?'':'1em';
}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
+encodeURIComponent(encodeURIComponent(this.onclick))
+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
var co=config.options;
var opt='chkShowLeftSidebar';
var show=co[opt]=!co[opt];
var mm=document.getElementById('mainMenu');
var da=document.getElementById('displayArea');
if (mm) {
mm.style.display=show?'block':'none';
da.style.marginLeft=show?'':'1em';
}
saveOptionCookie(opt);
var labelShow=co.txtToggleLeftSideBarLabelShow||'►';
var labelHide=co.txtToggleLeftSideBarLabelHide||'◄';
if (this.innerHTML==labelShow||this.innerHTML==labelHide)
this.innerHTML=show?labelHide:labelShow;
this.title=(show?'hide':'show')+' left sidebar';
var sm=document.getElementById('storyMenu');
if (sm) config.refreshers.content(sm);
return false;
">$1</a></html>
!end
%/<<tiddler {{
var src='ToggleLeftSidebar';
src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
var co=config.options;
var labelShow=co.txtToggleLeftSideBarLabelShow||'►';
var labelHide=co.txtToggleLeftSideBarLabelHide||'◄';
'$1'!='$'+'1'?'$1':(co.chkShowLeftSidebar?labelHide:labelShow);
}} {{
var tip=(config.options.chkShowLeftSidebar?'hide':'show')+' left sidebar';
'$2'!='$'+'2'?'$2':tip;
}}>>
/%
!info
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide right sidebar (SideBarOptions)|
Usage
<<<
{{{
<<tiddler ToggleRightSidebar>>
<<tiddler ToggleRightSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleRightSidebar##show
with: {{config.options.chkShowRightSidebar?'►':'◄'}}>>
<<<
Configuration:
<<<
copy/paste the following settings into a tiddler tagged with <<tag systemConfig>> and then modify the values to suit your preferences:
{{{
config.options.chkShowRightSidebar=true;
config.options.txtToggleRightSideBarLabelShow="◄";
config.options.txtToggleRightSideBarLabelHide="►";
}}}
<<<
!end
!show
<<tiddler {{
var co=config.options;
if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebar=true;
var sb=document.getElementById('sidebar');
var da=document.getElementById('displayArea');
if (sb) {
sb.style.display=co.chkShowRightSidebar?'block':'none';
da.style.marginRight=co.chkShowRightSidebar?'':'1em';
}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
+encodeURIComponent(encodeURIComponent(this.onclick))
+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
var co=config.options;
var opt='chkShowRightSidebar';
var show=co[opt]=!co[opt];
var sb=document.getElementById('sidebar');
var da=document.getElementById('displayArea');
if (sb) {
sb.style.display=show?'block':'none';
da.style.marginRight=show?'':'1em';
}
saveOptionCookie(opt);
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
if (this.innerHTML==labelShow||this.innerHTML==labelHide)
this.innerHTML=show?labelHide:labelShow;
this.title=(show?'hide':'show')+' right sidebar';
var sm=document.getElementById('storyMenu');
if (sm) config.refreshers.content(sm);
return false;
">$1</a></html>
!end
%/<<tiddler {{
var src='ToggleRightSidebar';
src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
var co=config.options;
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
'$1'!='$'+'1'?'$1':(co.chkShowRightSidebar?labelHide:labelShow);
}} {{
var tip=(config.options.chkShowRightSidebar?'hide':'show')+' right sidebar';
'$2'!='$'+'2'?'$2':tip;
}}>>
/***
|Name:|ToggleTagPlugin|
|Description:|Makes a checkbox which toggles a tag in a tiddler|
|Version:|3.1.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#ToggleTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}
* TagName - the tag to be toggled, default value "checked"
* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler
* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'
(If a parameter is '.' then the default will be used)
* TouchMod flag - if non empty then touch the tiddlers mod date. Note, can set config.toggleTagAlwaysTouchModDate to always touch mod date
!!Examples
|Code|Description|Example|h
|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|
|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|
|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|
|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|
|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|
!!Notes
* If TiddlerName doesn't exist it will be silently created
* Set label to '-' to specify no label
* See also http://mgtd-alpha.tiddlyspot.com/#ToggleTag2
!!Known issues
* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing
* Should convert to use named params
***/
//{{{
if (config.toggleTagAlwaysTouchModDate == undefined) config.toggleTagAlwaysTouchModDate = false;
merge(config.macros,{
toggleTag: {
createIfRequired: true,
shortLabel: "[[%0]]",
longLabel: "[[%0]] [[%1]]",
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var tiddlerTitle = tiddler ? tiddler.title : '';
var tag = (params[0] && params[0] != '.') ? params[0] : "checked";
var title = (params[1] && params[1] != '.') ? params[1] : tiddlerTitle;
var defaultLabel = (title == tiddlerTitle ? this.shortLabel : this.longLabel);
var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;
var touchMod = (params[3] && params[3] != '.') ? params[3] : "";
label = (label == '-' ? '' : label); // dash means no label
var theTiddler = (title == tiddlerTitle ? tiddler : store.getTiddler(title));
var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {
if (!store.tiddlerExists(title)) {
if (config.macros.toggleTag.createIfRequired) {
var content = store.getTiddlerText(title); // just in case it's a shadow
store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);
}
else
return false;
}
if ((touchMod != "" || config.toggleTagAlwaysTouchModDate) && theTiddler)
theTiddler.modified = new Date();
store.setTiddlerTag(title,this.checked,tag);
return true;
});
}
}
});
//}}}
/%
!info
|Name|ToggleTiddlerTags|
|Source|http://www.TiddlyTools.com/#ToggleTiddlerTags|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|command link to show/hide tiddler tags display in all tiddlers at once|
Usage:
<<<
in tiddler content:
{{{
<<tiddler ToggleTiddlerTags>>
<<tiddler ToggleTiddlerTags with: label>>
}}}
or, in ViewTemplate:
{{{
<span class='toolbar' macro='tiddler ToggleTiddlerTags'></span>
OR, if TiddlyTools' CoreTweaks for ticket #610 is installed:
<span class='toolbar' macro='toolbar ... ToggleTiddlerTags...'></span>
}}}
or, in ToolbarCommands (with CoreTweaks #610 installed):
{{{
| ViewToolbar| ... ToggleTiddlerTags... |
| EditToolbar| ... ToggleTiddlerTags... |
}}}
<<<
!end
!show
<html><nowiki><a href='javascript:;' title='show/hide tiddler tags' onclick="
config.options.chkHideTiddlerTags=!config.options.chkHideTiddlerTags;
var show=config.options.chkHideTiddlerTags?'none':'block';
setStylesheet('.tiddler .tagged { display:'+show+'; }','toggleTiddlerTags');
">$1</a></html>
!end
%/<<tiddler {{'ToggleTiddlerTags##'+(tiddler&&tiddler.title=='ToggleTiddlerTags'?'info':'show')}}
with: {{"$1"=='$'+'1'?'tags':"$1"}}>>
|~ViewToolbar|closeTiddler closeOthers copyTiddler deleteTiddler +editTiddler > fields syncing permalink references jump|
|~ViewToolbarReadOnly|closeTiddler > fields syncing permalink references jump|
|~EditToolbar|toggleQuickEdit +saveTiddler -cancelTiddler autosizeEditor|
|~EditToolbarReadOnly|-cancelTiddler autosizeEditor|
<<tiddler SetTiddlerHeight=1em>><<QOTD CitationsCourtes_Violences 8000 norandom>>
{{center{
{{floatleft{<<tiddler ToggleLeftSidebar with:"<img src=https://sites.google.com/site/michelayotte/Home/Gauche-22.png>">> +++^21em^*[<img src=https://sites.google.com/site/michelayotte/Home/Nouveaux22.png>|Créer un nouvel élément] Pour créer un nouvel élément, un ''tiddler''.<br><<newTiddler>><br><br>Pour créer une petite note, à classer plus tard <br>[[PtitNote]]<br><br>''En début de journée:''<br><<newJournal "DD MMM YYYY" "journal">><br>=== +++^15em^*[<img src=https://sites.google.com/site/michelayotte/Home/Affichage-22.png>|Choisir les éléments à affichert]<<closeAll>><br>(tous les tiddlers seront fermés, <br>__sauf ceux en mode édition__)<br><br><<tiddler ToggleFullScreen with: PleinÉcran Normal>><br><<tiddler ToggleTiddlerTags with: 'Afficher ou non les Mots-Clef'>><br><br>[[Corbeille|Trash]]===}}}<<option chkSearchTitles>>''Titre''<<option chkSearchTags>>''~Mot-Clef''<<option chkSearchText>>''Texte'' <<search>>[[Or!|OutilsRecherche]] {{floatright{+++^33em^*[<img src=https://sites.google.com/site/michelayotte/Home/Sauvegarde-22.png>|cliquer pour choisir] [[Télécharger|http://bsl.tiddlyspot.com/download]] sur le ''disque dur'' et<br>Cliquer <<option chkAutoSave>> pour un enregistrement automatique de tout le wiki, <br>à chaque fois que vous cliquez sur ''valider''<br>après avoir créé ou modifié un tiddler.<br>ou ''Sauvegarder'' manuellement sur le disque dur <<saveChanges>><br><br>''Ecrire votre nom d'utilisateur''<br>Écrire ''le vôtre'' pour __signer vos modifications__,<br>//comme un ''~WikiWord'' (ex ~Pierre_Dupont//).<br>ou ''celui d'administrateur'' pour le __sauvegarder sur le web__<br><<option txtUserName>><br><br>Écrire ici le ''mot de passe'' nécessaire pour la sauvegarde sur le web<br><<option pasUploadPassword>><br><br>''Sauvegarde sur le Web''<br><<upload http://touchepas-bsl.tiddlyspot.com/store.cgi index.html . . touchepas-bsl>><br>=== <<tiddler ToggleRightSidebar with:"<img src=https://sites.google.com/site/michelayotte/Home/Droit-22.png>">>}}} }}}
{{center{
{{floatleft{<<tiddler ToggleLeftSidebar with:"<img src=Images/Gauche-22.png>">> +++^21em^*[<img src=Images/Nouveaux-22.png>|Créer un nouvel élément] Pour créer un nouvel élément, un ''tiddler''.<br><<newTiddler>><br><br>Pour créer une petite note, à classer plus tard <br>[[PtitNote]]<br><br>''En début de journée:''<br><<newJournal "DD MMM YYYY" "journal">><br>=== +++^15em^*[<img src=Images/Affichage-22.png>|Choisir les éléments à affichert]<<closeAll>><br>(tous les tiddlers seront fermés, <br>__sauf ceux en mode édition__)<br><br><<tiddler ToggleTiddlerTags with: 'Afficher ou non les Mots-Clef'>><br>===}}}<<option chkSearchTitles>>''Titr''<<option chkSearchTags>>''MC''<<option chkSearchText>>''Txt'' <<search>>[[Or!|OutilsRecherche]] {{floatright{+++^33em^*[<img src=Images/Sauvegarde-22.png>|cliquer pour choisir] [[Télécharger|http://bsl.tiddlyspot.com/download]] sur le ''disque dur'' et<br>Cliquer <<option chkAutoSave>> pour un enregistrement automatique de tout le wiki, <br>à chaque fois que vous cliquez sur ''valider''<br>après avoir créé ou modifié un tiddler.<br>ou ''Sauvegarder'' manuellement sur le disque dur <<saveChanges>><br><br>''Ecrire votre nom d'utilisateur''<br>Écrire ''le vôtre'' pour __signer vos modifications__,<br>//comme un ''~WikiWord'' (ex ~Pierre_Dupont//).<br>ou ''celui d'administrateur'' pour le __sauvegarder sur le web__<br><<option txtUserName>><br><br>Écrire ici le ''mot de passe'' nécessaire pour la sauvegarde sur le web<br><<option pasUploadPassword>><br><br>''Sauvegarde sur le Web''<br><<upload http://touchepas-bsl.tiddlyspot.com/store.cgi index.html . . touchepas-bsl>><br>=== <<tiddler ToggleRightSidebar with:"<img src=Images/Droit-22.png>">>}}} }}}
{{center{
{{floatleft{<<tiddler ToggleLeftSidebar with:"<img src=https://sites.google.com/site/michelayotte/Home/Gauche-22.png>">> +++^21em^*[<img src=https://sites.google.com/site/michelayotte/Home/Nouveaux22.png>|Créer un nouvel élément] Pour créer un nouvel élément, un ''tiddler''.<br><<newTiddler>><br><br>Pour créer une petite note, à classer plus tard <br>[[PtitNote]]<br><br>''En début de journée:''<br><<newJournal "DD MMM YYYY" "journal">><br>=== +++^15em^*[<img src=https://sites.google.com/site/michelayotte/Home/Affichage-22.png>|Choisir les éléments à affichert]<<closeAll>><br>(tous les tiddlers seront fermés, <br>__sauf ceux en mode édition__)<br><br><<tiddler ToggleTiddlerTags with: 'Afficher ou non les Mots-Clef'>><br>===}}}<<option chkSearchTitles>>''Titr''<<option chkSearchTags>>''MC''<<option chkSearchText>>''Txt'' <<search>>[[Or!|OutilsRecherche]] {{floatright{+++^33em^*[<img src=https://sites.google.com/site/michelayotte/Home/Sauvegarde-22.png>|cliquer pour choisir] [[Télécharger|http://bsl.tiddlyspot.com/download]] sur le ''disque dur'' et<br>Cliquer <<option chkAutoSave>> pour un enregistrement automatique de tout le wiki, <br>à chaque fois que vous cliquez sur ''valider''<br>après avoir créé ou modifié un tiddler.<br>ou ''Sauvegarder'' manuellement sur le disque dur <<saveChanges>><br><br>''Ecrire votre nom d'utilisateur''<br>Écrire ''le vôtre'' pour __signer vos modifications__,<br>//comme un ''~WikiWord'' (ex ~Pierre_Dupont//).<br>ou ''celui d'administrateur'' pour le __sauvegarder sur le web__<br><<option txtUserName>><br><br>Écrire ici le ''mot de passe'' nécessaire pour la sauvegarde sur le web<br><<option pasUploadPassword>><br><br>''Sauvegarde sur le Web''<br><<upload http://touchepas-bsl.tiddlyspot.com/store.cgi index.html . . touchepas-bsl>><br>=== <<tiddler ToggleRightSidebar with:"<img src=https://sites.google.com/site/michelayotte/Home/Droit-22.png>">>}}} }}}
/***
|Name:|TrashPlugin|
|Version:|1.2.0|
|Source:|http://www.TiddlyTools.com/#TrashPlugin|
|Author:|Eric Shulman|
|OriginalSource:|http://ido-xp.tiddlyspot.com/#TrashPlugin|
|OriginalAuthor:|Ido Magal (idoXatXidomagalXdotXcom)|
|Modifier: |Michel Ayotte |
|License:|[[BSD open source license]]|
|CoreVersion:|2.1.0|
|Description|add 'Trash' tag to tiddlers instead of deleting them|
!!!!!Documentation
<<<
When TrashPlugin is installed and you click on the 'delete' command in the tiddler toolbar, rather than directly removing the tiddler from the system, it will be tagged with the following tags:
{{{
Trash excludeLists excludeMissing excludeSearch systemConfigDisable
}}}
As a result, although the tiddler still exists within the document, it is ''hidden from view and will not be searched or invoked as a plugin.''
*{{block{
To view a list of all tiddlers tagged with {{{Trash}}}, simply open the [[Trash]] tiddler (aka, the "trash can").}}}
*{{block{
To reclaim a tiddler from the [[Trash]], click on a title in the trash can to open that tiddler. Then, edit it to remove the Trash tag (as well as the other tags noted above).}}}
*{{block{
To empty the trash can (i.e. actually //delete// the tiddlers), click on the ''//"empty trash"//'' button that appears in the [[Trash]] tiddler. You can also add this button to your [[SideBarOptions]] or any other desired location by using the following macro:
{{{
<<emptyTrash>>
}}}
}}}
*{{block{
To ''bypass the trash can'' and use the normal delete handling (with the usual confirmation messages, if chkConfirmDelete is enabled), hold CTRL while clicking 'delete'}}}
*{{block{
To ''bypass both the trash can //and// the confirmation message'' and //immediately delete// the tiddler without any further interaction, hold CTRL+SHIFT while clicking 'delete'}}}
<<<
!!!!!Revisions
<<<
2009.05.20 [1.2.0] documentation rewrite and code cleanup/reduction
2009.05.12 [1.1.0.5] refactored code to add entry point: {{{config.commands.deleteTiddler.sendToTrash(title)}}}
2008.11.14 [1.1.0.4] added SHIFT-CLICK = bypass trash and delete immediately WITHOUT CONFIRMATION
2008.10.14 [1.1.0.3] return FALSE from emptyTrash() handler (fixes IE page transition error)
2008.05.18 [1.1.0.2] when creating the Trash tiddler, pass an empty tags array [] instead of a null value, so other plugins (e.g., InstantTimestampPlugin) won't fail
2006.12.21 [1.1.0.1] only call setDirty() when actually removing tiddlers from trash
2006.12.12 [1.1.0.0] added movedMsg (feedback when tiddler is tagged as Trash). Make sure tiddler actually exists before tagging it with 'Trash'. Fetch correct tiddler before checking for 'systemConfig' tag
2006.12.11 [1.0.3.1] Don't create Trash tiddler until needed. Remove Trash tiddler when no trash remains. Don't tag Trash tiddler with 'TrashPlugin'. Moved all user-visible strings to variables so they can be translated by 'lingo' plugins. Use displayMessage() instead of alert()
2006.12.11 [1.0.3] Fixed broken reference to core deleteTiddler. Now storing reference to core deleteTiddler in emptyTrash macro. Reduced deleteTiddler hijacking to only the handler.
2006.12.11 [1.0.2] EmptyTrash now uses removeTiddler instead of deleteTiddler. Supports trashing systemConfig tiddlers (adds systemConfigDisable tag).
2006.12.10 [1.0.1] Replaced TW version with proper Core reference. Now properly hijacking deleteTiddler command.
2006.12.10 [1.0.0] First draft.
<<<
!!!!!Code
***/
//{{{
version.extensions.TrashPlugin= {major: 1, minor: 2, revision: 0, date: new Date(2009,5,20)};
//}}}
//{{{
config.macros.emptyTrash = {
tag: 'Trash',
movedMsg: "'%0' has been tagged as %1",
label: 'Vider la Corbeille',
tooltip: 'Delete all items tagged as %0',
tooltipOlder: 'Delete items tagged as %0 that are older than %1 days old',
emptyMsg: 'La corbeille est vide',
noneToDeleteMsg: 'There are no items in the trash older than %0 days',
confirmMsg: "The following tiddlers will be deleted:\n\n'%0'\n\nOK to proceed?",
deletedMsg: "Deleted '%0'",
handler: function ( place,macroName,params,wikifier,paramString,tiddler ) {
var namedParams = (paramString.parseParams(daysOld))[0];
var daysOld = namedParams['daysOld'] ? namedParams['daysOld'][0] : 0; // default
var buttonTitle = namedParams['title'] ? namedParams['title'][0] : this.label;
var buttonTip=this.tooltip.format([this.tag])
if (daysOld) buttonTip=this.tooltipOlder.format([this.tag,daysOld])
var b=createTiddlyButton(place,buttonTitle,buttonTip,this.emptyTrash);
b.setAttribute('daysOld',daysOld);
},
emptyTrash: function() {
var cme=config.macros.emptyTrash; // abbrev
var daysOld=this.getAttribute('daysOld');
var compareDate=new Date(); compareDate.setDate(compareDate.getDate()-daysOld);
var collected=[];
store.forEachTiddler(function(title,tiddler) {
if (tiddler.isTagged(cme.tag) && tiddler.modified<compareDate)
collected.push(title);
});
if (!collected.length)
displayMessage(daysOld ? cme.noneToDeleteMsg.format([daysOld]) : cme.emptyMsg);
else if (confirm(cme.confirmMsg.format([collected.join("', '")]))) {
for (var i=0;i<collected.length;i++) {
store.removeTiddler(collected[i]);
store.setDirty(true);
displayMessage(cme.deletedMsg.format([collected[i]]));
}
}
if (!store.getTaggedTiddlers(cme.tag).length) // remove Trash if empty
{ story.closeTiddler(cme.tag,true,false); store.removeTiddler(cme.tag); }
else
story.refreshTiddler(cme.tag,false,true); // refresh Trash if visible
return false;
}
}
//}}}
// // hijack delete command
//{{{
config.commands.deleteTiddler.orig_handler=config.commands.deleteTiddler.handler;
config.commands.deleteTiddler.handler=function(event,src,title) {
// BYPASS TRASH: CTRL=normal delete, CTRL+SHIFT=without confirmation
if (event.ctrlKey) {
if (event.shiftKey) { var temp=config.options.chkConfirmDelete; config.options.chkConfirmDelete=false; }
config.commands.deleteTiddler.orig_handler.apply(this,arguments);
if (event.shiftKey) config.options.chkConfirmDelete=temp;
story.refreshTiddler(config.macros.emptyTrash.tag,false,true);
return false;
}
config.commands.deleteTiddler.sendToTrash(title);
return false;
};
config.commands.deleteTiddler.sendToTrash = function(title) {
var cme=config.macros.emptyTrash; // abbrev
if (!store.tiddlerExists(title)) return; // make sure tiddler actually exists
if (!store.tiddlerExists(cme.tag)) // make sure Trash tiddler exists
store.saveTiddler(cme.tag,cme.tag,'<<emptyTrash>>','TrashPlugin',new Date(),[],{});
store.setTiddlerTag(title,1,cme.tag);
store.setTiddlerTag(title,1,'excludeLists');
store.setTiddlerTag(title,1,'excludeMissing');
store.setTiddlerTag(title,1,'excludeSearch');
if (store.getTiddler(title).isTagged('systemConfig'))
store.setTiddlerTag(title,1,'systemConfigDisable');
story.closeTiddler(title,true);
if(config.options.chkAutoSave) saveChanges();
displayMessage(cme.movedMsg.format([title,cme.tag]));
story.refreshTiddler(cme.tag,false,true);
};
//}}}
| source file:|{{{D:\data\tw\treeview\images\treeview-default.gif}}}|
| attached on:|23 May 2009 by MarkS|
| description:|Default image for treeview|
| embedded:|[[TreeviewDefaultGif|TreeviewDefaultGif]] - {{{type=image/gif, size=1222 bytes, encoded=1657 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./treeview/images/treeview-default.gif|./treeview/images/treeview-default.gif]]|
| remote link:|/%REMOTE_LINK%/[[http://www.symbex.net.au/Wiki/images/treeview-default.gif|http://www.symbex.net.au/Wiki/images/treeview-default.gif]]|
image
<<<
usage: {{{[img[tooltip|TreeviewDefaultGif]] or [img[tooltip|TreeviewDefaultGif][link]]}}}
[img[tooltip|TreeviewDefaultGif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhYACFAPcAAAAAAICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAABgAIUAAAj/AP8JHEiwoMGDCBMqXMjw
H4CHABRCbEixosWLBCNi3Mixo0WNHkOKFAlypMmTKFOqPBmgpUuXK2OKDHCQpsyb
G206HKgTp8+GOkH2/EkUIU2ID//RXFq0KcGgPJ1KfTpQ6NSrQwVmvfrzpVeuYMOK
VTq2rFmnW8+qXTsyLVuSb4uWjBq34USJSetynIvRrd6qfwMLHszV60vCIbf6RcxQ
MeOOjh/ndIiULFPJFCNjtqh5c+aanjkbbhm6tNTFplOvRK26tUnWpvm6Xigbdty7
CXGrls3ZM+/ZwIMLjzua9HC6BW2Hhqr1OHKrzskijchU+WPmZKNjt7658/Di3KOL
ox9Pvrx5ir+jp8dcOXfe1uuP1xYff/j88/iVFhfvXfh2/oA1px1lE1X3XYDZOfff
gAaFJxl4+UUo4YTO1SechcFhSJhuB3EYW4QazhYihSS2BiGDyQHYoIopDjidZQkC
119wM8oImnb7lajjjjz+NSJ8IALnYUbv9aiag0YyhmSSf52o4I1ProgiVS5WZqB/
UB5X42xbuuYkk2CGKeaYZJY5W0AAOw==
---END_DATA---
%/
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{
// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'michelayotte';
// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too
// disable autosave in d3
if (window.location.protocol != "file:")
config.options.chkGTDLazyAutoSave = false;
// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}
// create some shadow tiddler content
merge(config.shadowTiddlers,{
'TspotControls':[
"| tiddlyspot password:|<<option pasUploadPassword>>|",
"| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
"| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),
'TspotOptions':[
"tiddlyspot password:",
"<<option pasUploadPassword>>",
""
].join("\n"),
'TspotSidebar':[
"<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),
'WelcomeToTiddlyspot':[
"This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
"<<tiddler TspotControls>>",
"See also GettingStarted.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// @@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Help!// @@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n")
});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 20/04/2020 23:59:31 | ●●●●●●●●●●●● | [[index.html|file:///Z:/home/moi/Bureau/Tw_Virus/index.html]] | [[store.cgi|http://michelayotte.tiddlyspot.com/store.cgi]] | . | [[index.html | http://michelayotte.tiddlyspot.com/index.html]] | . |
| 22/04/2020 18:14:01 | MichelAyotte | [[index.html|file:///E:/Tw_Michel/index.html#MenuMichel]] | [[store.cgi|http://michelayotte.tiddlyspot.com/store.cgi]] | . | [[index.html | http://michelayotte.tiddlyspot.com/index.html]] | . | ok |
| 22/04/2020 18:18:24 | MichelAyotte | [[index.html|file:///E:/Tw_Michel/index.html#MenuMichel]] | [[store.cgi|http://michelayotte.tiddlyspot.com/store.cgi]] | . | [[index.html | http://michelayotte.tiddlyspot.com/index.html]] | . | ok |
| 22/04/2020 18:19:36 | MichelAyotte | [[index.html|file:///E:/Tw_Michel/index.html#MenuMichel]] | [[store.cgi|http://michelayotte.tiddlyspot.com/store.cgi]] | . | [[index.html | http://michelayotte.tiddlyspot.com/index.html]] | . | ok |
| 22/04/2020 18:22:13 | MichelAyotte | [[index.html|file:///E:/Tw_Michel/index.html#MenuMichel]] | [[store.cgi|http://michelayotte.tiddlyspot.com/store.cgi]] | . | [[index.html | http://michelayotte.tiddlyspot.com/index.html]] | . | ok |
| 22/04/2020 18:23:28 | MichelAyotte | [[index.html|file:///E:/Tw_Michel/index.html#MenuMichel]] | [[store.cgi|http://michelayotte.tiddlyspot.com/store.cgi]] | . | [[index.html | http://michelayotte.tiddlyspot.com/index.html]] | . |
| 21/05/2020 08:35:25 | MichelAyotte | [[/|file:///Z:/media/moi/Hp_Data/A_Tw-Michel_Mai/index.html/#MenuMichel]] | [[store.cgi|http://michelayotte.tiddlyspot.com/store.cgi]] | . | [[index.html | http://michelayotte.tiddlyspot.com/index.html]] | . | failed |
| 21/05/2020 08:36:12 | MichelAyotte | [[/|file:///Z:/media/moi/Hp_Data/A_Tw-Michel_Mai/index.html/#MenuMichel]] | [[store.cgi|http://michelayotte.tiddlyspot.com/store.cgi]] | . | [[index.html | http://michelayotte.tiddlyspot.com/index.html]] | . | failed |
| 21/05/2020 08:36:37 | Michel Ayotte | [[/|file:///Z:/media/moi/Hp_Data/A_Tw-Michel_Mai/index.html/#MenuMichel]] | [[store.cgi|http://michelayotte.tiddlyspot.com/store.cgi]] | . | [[index.html | http://michelayotte.tiddlyspot.com/index.html]] | . | failed |
| 21/05/2020 08:38:39 | MichelAyotte | [[/|file:///Z:/media/moi/Hp_Data/A_Tw-Michel_Mai/index.html/#MenuMichel]] | [[store.cgi|http://michelayotte.tiddlyspot.com/store.cgi]] | . | [[index.html | http://michelayotte.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 3,
date: new Date("Feb 24, 2008"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
if (!params) params = {};
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
options: [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine"
],
refreshOptions: function(listWrapper) {
var opts = [];
for(i=0; i<this.options.length; i++) {
var opt = {};
opts.push();
opt.option = "";
n = this.options[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
};
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
var rssString = generateRss();
// no UnicodeToUTF8 conversion needed when location is "file" !!!
if (document.location.toString().substr(0,4) != "file")
rssString = convertUnicodeToUTF8(rssString);
bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == 404)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
//}}}
| !VIRUS | !$$$ ou OR |
|[img[https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Rotavirus_Reconstruction.jpg/300px-Rotavirus_Reconstruction.jpg]]|<br>[img[https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Double_excelente_773942.jpg/450px-Double_excelente_773942.jpg]]|
!!! Quand la réalité dépasse la fiction !
Comment expliquer la situation sociale planétaire actuelle ? ? ?
Comment expliquer cette pandémie ? ? ?
Pour commencer, une vieille histoire de l’époque après que Rothschild, Rockefeller, J.P.Morgan… se soient déjà créés des empires financiers.
[[Histoire de la réserve fédérale américaine|http://www.dossiers-sos-justice.com/media/00/01/517365590.pdf]], et une autre version plus moderne:
[[Comment ça nous est présenté aujourd’hui|https://www.agoravox.fr/tribune-libre/article/theorie-du-complot-la-fed-banque-67466]] !!!
!!! Pourquoi des infos sur l'argent, alors que c'est le virus qui est le sujet ?
Quand on suit l’argent, on a souvent des résultats d’enquête probants.
Le temps passe et tous les pays se retrouvent avec des ''FEDERAL BANK'', toutes crées sur le ‘look’ étaZunien.
Et Rothschild se réserve le droit de ne prêter qu’à des pays,
et comme toutes les autres banques, il peut ''prêter aprox 20 fois ce qu’il a dans ses poches''.
!!! Comment ça marche ?
Quand vous avez le privilège d’avoir un compte de banque,
vous avez le droit de déposer 100$ et vous toucherez par exemple 5% d’intérêts.
Alors, avec cette nouvelle richesse, la banque péteuse de bretelles vas le prêter 20 fois fois, à disons 10%,
ce qui lui rapportera du ''200% annuellement''.
Bien entendu ce ne sont ''pas des prêts usuraires'' (qui seraient par le fait même illégaux), puisque le profit viens de 20 sources différentes.
''Ce profit vient le la légalisation du pétage de bretelle prémédité sue l’île de Jekyll.''
Et ce n’était pas une [[conspiration|https://fr.wikipedia.org/wiki/Conspiration]], puisqu’ils n’était pas des révolutionnaires qui voulaient renverser le pouvoir existant. Bien au contraire, par leur volonté d’une ''dynamique gagnant/gagnant'', tous les signataires de ces ententes on fait des ''$ $ $''.
Et quand vous déposez chez eux vous y gagnez & eux aussi ! ! !
//''Les anciennes caisses Desjardins ne pouvaient pas prêter + que ce qu’elles avaient ! ! ! ''//
Anciennement, il y avait de l’or dans les coffres, puis ce sont devenus des papiers
et enfin des 1 et des 0 dans un programme informatique.
!!! Faisons un bond en avant dans l’histoire.
Puis, il y eu la création du [[BRICs|https://fr.wikipedia.org/wiki/BRICS]] .
Le temps a passé et il y a quelques années, certains pays de cette organisation ont décidés de faire leur transactions avec de l’or.
Ça fluctuait moins que le ''$US'' & c’était plus tangible que du papier ou des 0 et des 1 sur un écran.
Les péteux d’bretelles n’y gagnaient rien, fini le partenariat gagnant/gagnant imaginé et concrètement réalisé [[sur l'île|https://archives.jekyllisland.com/]].
Quoi qu’il en soit, la débalance du commerce US/Chine rend Trump furieux.
Les Chinois répondent, on ne reconnaît plus la valeur de votre dollar ! AYOY ! ! !
''Le bout du nez de la guégerre s’est montré ! ! !''
!!! Délaissons la poulitique et retrouvons nos antagonistes.
Comme vous l’avez compris, pour moi, il y a deux gangs; celle des péteux de bretelles, les gros à grosses poches,
que certains appellent les Illuminatis, les Sionistes, les [[Fabriquants D’Hambourgeois|https://fr.wikipedia.org/wiki/Groupe_Bilderberg]], les Skulls & Bones... Ils contrôlent le FMI, OMS … les événements sous fausse bannière... et les lois via leur lobbying. J'ai appris qu'une autre organisation, dont je n'avais jamais entendu parler & qui non seulement semble, mais est très puissante, aux US et ailleurs dans le monde. Visionner ''The Family: La menace fondamentaliste'' sur Nefflix m'en a informé; une autre carte dans le jeu des puissants de ce monde.
^^//J’étais jeune à l’époque, mais j’m’en souviens, quand [[Kennedy|http://www.jp-petit.org/nouv_f/kennedy_dernier_discours.htm]] est mort.
Dans tout autre pays, les médias des gros pleins auraient décris l’événement comme un coup d’état.
L’histoire, la Vraie, celle avec un grand H, nous raconte que c’est une balle ''ricochet vas vite'' qui l’a tué ! ! ! //^^
Il semble avoir une frontière que même un [[président ne dois pas franchir|https://www.youtube.com/watch?v=h8blIylCxFI]].
Ce sont eux qui projettent un Nouvel Ordre Mondial.
Ces personnes détiennent autant d’argent que tout le reste de l’humanité et elles ne sont qu’un pour cent de la population !
Et c’n’est pas encore assez ? ? ?
''L’autre gang, c’est nous le 99%''.
Et parmi ce nous, il y en a qui sont plus dans misère qu’ici au Canada. Il y a des pays qui n’arrivent même pas à payer les intérêts de leur dette.
[[Dette basée sur des magouilles en apparence d’aide humanitaire|https://www.youtube.com/watch?v=eLYuJCZZOec]].
!!! Enfin, on s’rapproche du virus ! ! !
Quel serait le plan de la gang des gros ?
La première esquisse que je connais, c'est celle de Lord [[Bertrand_Russell|https://fr.wikipedia.org/wiki/Bertrand_Russell]].
Il a écrit dans son livre «The Impact of Science on Society»:
{{right{// «Présentement, la population du monde augmente… La guerre jusqu’à maintenant n’a pas eu de grands effets sur cette augmentation…
Je ne prétends pas que le contrôle des naissances est le seul moyen par lequel une population peut être empêchée d’augmenter. Il y en a d’autres…
La guerre a été plutôt décevante à cet égard, mais peut-être qu’une guerre bactériologique pourrait s’avérer efficace.
Si une Mort Noire pouvait se répandre à travers le monde à chaque génération, les survivants pourraient procréer librement sans trop remplir le monde…».//}}}
'' Je comprend donc que le gros Lard voulait se transformer en gros et chaud lapin ! ! ! ''
Je vous invite à visionner les vidéos de Ronald Bernard sur ~YouTube, ça éclaire.
Une autre esquisse de celui-ci existe, elle est publique et personne n’en fait de cas.
Pourtant, comme art public je ne crois pas qu’il fasse la promotion de valeurs humaines.
C’est un [[monument|https://fr.wikipedia.org/wiki/Georgia_Guidestones]] qui a été rédigé dans un parc des voisins d’en bas.
C’est quand même ‘‘BIZZ’’ qu’un incognito ait la permission d’ériger une pierre gravée de dix commandements bien différents de ceux de Moïse.
D’un autre côté, c'est quand même logique pour ceux de cette gang, dans leur optique de NOM (Nouvel Ordre Mondial).
!!! De l’esquisse à l’expérimentation
Il semble donc que [[Bill Gates|http://www.libertepolitique.com/Actualite/Decryptage/Bille-Gates-aime-l-humanite-mais-veut-en-supprimer-une-partie]] ait lu le gros Lard.
On comprend donc le pourquoi de sa fondation et toutes ses expérimentations de vaccins envoyés en Afrique.
Il est bon aussi de se rappeler que c’est un gros partenaire d’IBM depuis belle lurette.
Je me souviens qu’il y a plus de 20 ans, cette firme avait développée une micro-puce de la grosseur d’un grain de riz, du nom de ((Verichip(J'ai la mémoire qui flanche))) ?
Celle-ci pouvait être insérée dans l’épiderme de votre animal ou enfant préféré; ainsi vous pouviez facilement le retracer.
Bien entendu, sur le marché grand-public, elle est demeurée de cette taille, avec quand même plus de puissance.
Pendant ce temps, l’armée, elle l’aurait rapetissée, certains affirment qu’elle pourrait même être injectée.
''Dans un vaccin ? ? ?''
Ça viens d’où ce virus ? D'après les US, ça vient de Chine et eux disent que c'est les US.
{{center{''Tout l'monde a raison !''}}}
Les dernières infos suggèrent que c'est d'un __laboratoire chinois financé par Bill__ que le virus se serait échappé, malencontreusement ?
''À suivre !''
!!! Autres hypothèses ou autres facteurs de la pandémie.
''1''
Depuis que je suis né, à tous les printemps la grippe apparaît, et elle est autant plus virulente si le sol n'a pas gelé assez profondément durant l'hiver.
C'est normal !
''2''
Il est bon aussi de se rappeler que __la Vie veut toujours survivre__.
C’est pourquoi les exterminateurs de bibites de restaurants changent de poison régulièrement & c’est la même chose avec les vaccins.
Les virus attaqués par les vaccins, le combattent dans un premier temps,
puis sur le bord de mourir, la bibite/virus mute & le poison/vaccin devient inefficace. C’est le cycle normal de la Vie.
C'est la même logique qui explique, que plus vous utilisez les crèmes solaires, plus votre peau devient fragile aux rayonnements UV.
''3''
L'environnement influence ce qui vit dans celui-ci.
Comme la Chine n'est pas l'Italie, ni l'Iran, ni les US, est-ce assez pour expliquer les [[différentes mutations du virus|https://www.cdc.gov/coronavirus/types.html]] ?
Mystère !
''4''
L'environnement 5G influence-t-il ce qui vit dans celui-ci ?
On peut remarquer qu’[[en Chine c’est parti d’ici|http://en.hubei.gov.cn/news/newslist/201804/t20180416_1275769.shtml]] que ça a commencé.
Que l'[[Italie se modernise|https://www.universfreebox.com/article/41486/L-Italie-figure-de-proue-de-la-5G-en-Europe-testera-un-reseau-des-2018]].
Serait-il possible qu'il y ait un lien entre la 5G & un affaiblissement immunitaire ?
Se pourrait-il que ce [[petit film de 10 minutes|https://www.youtube.com/watch?v=45YzTRVtoVE]] explique la normalité de la pandémie et pourquoi
on nous prépare à ce qu'on revive cela encore deux autres années, le temps que la 5G se disperse & que le vaccin à puce soit fabriqué.
''5''
Pour vous détendre, voici un [[film de 20 minutes|https://www.youtube.com/watch?v=Q8qZvtreTck]] sur les modifications que l'((eau(80% du corps))) subit sous l'influence d'ondes vibratoires encore plus subtiles que la 5G.
!!! Résumé
* Le virus est de fabrication humaine
* Les pays les plus pauvres sont déjà criblés de dettes.
* Les pays les plus riches s’endettent pour préserver notre santé ou pour nous habituer au ((NOM(Nouvel Ordre Mondial))) qui nous obligera à nous faire vacciner.
* Les 2 blocs de pays risquent de se retrouver avec des niveaux de dettes, nez à nez.
** L’effacement de toutes les dettes serait-il une solution ? Envisageable, je l’espère !
* La valeur de ‘‘battant’’ sera remplacée par celle de ‘‘coopérant’’
** Donc de la compétition, nous passerons à des ''dynamiques à valeur humaines'' !
* En attendant, on en est pas là, et [[des comportements comme ceux-là|https://www.inquirer.com/health/coronavirus/coronavirus-philadelphia-hospital-beds-hahnemann-20200324.html]] peuvent se produire.
''Pendant que les garnements se battent, que pouvons nous faire pour contrer les prochaines grippes !''
Super grosse pétition pour [[stopper le 5G|https://www.5gspaceappeal.org/]]
Et ça vaut la peine de voir le [[nombre d'organismes et d'individus|https://www.5gspaceappeal.org/signatories-organizations]] qui l'ont signés.
{{center{
!! Enfin, je ne peux que vous souhaiter de sortir de la peur, et de remerciez la Vie !
''Saluez les gens avec un ((Prends soin de toi !(^dans l’amour))) au lieu d’un ((Fais attention à toi !(dans la peur))),
ça aide à rester en santé.''.}}}
//{{{
// do not copy this tiddler! you dont need this for HoverMenuPlugin to work!
config.hoverMenu.settings={
align: 'right', //align menu to right or left side of screen, possible values are 'right' and 'left'
x: 105, // horizontal distance of menu from side of screen, increase to your liking.
y: 230 //vertical distance of menu from top of screen at start, increase or decrease to your liking
};
//}}}
/***
|Name|ZzConfigOptions|
|Source|MiA^^tiddlywiki^^|
|Author|''Michel Ayotte''|
|Type|Configuration|
|Description|Options appliquées au démarrage|
***/
//{{{
config.options.txtUserName = "VotreNom"; // Change le nom.
config.options.chkShowRightSidebar = false; // Menu de droite.
config.options.chkShowLeftSidebar = false; // Menu de gauche.
//config.options.txtTheme = 'ThemeAdmin'; // Thème à utiliser au départ.
//config.options.txtTheme = 'ThemeAdminLocal'; // Thème à utiliser au départ.
config.options.txtTheme = 'ThemeSimple'; // Thème à utiliser au départ.
//config.options.chkShowQuickEdit=true; // Affiche la barre de formatage en mode édition (permet de colorer...+, encore plus).
//config.messages.backstage.open.text=""; // Une flèche coudée remplace le texte (pour la barre d'outils de maintenance).
showBackstage = false; // Cache la Barre d'outils de maintenance.
//config.options.chkAutoSave = true; // Sauvegarde automatique de tout le tiddlywikiaussitôt qu'un tiddler est validé.
//config.options.txtBackupFolder = 'BackUps'; // Repertoire de la copie de sauvegarde (backups).
config.options.chkSaveBackups = false; // Pas de backup automatiques.
//}}}
| source file:|{{{D:\data\tw\treeview\images\transparency_file.gif}}}|
| attached on:|26 May 2009 by MarkS|
| embedded:|[[transparency_file.gif|transparency_file.gif]] - {{{type=image/gif, size=151 bytes, encoded=207 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./treeview/images/transparency_file.gif|./treeview/images/transparency_file.gif]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|FileGif]] or [img[tooltip|FileGif][link]]}}}
[img[tooltip|FileGif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhDwAOAIMAAGpsYoy3oamMQdS9fDmJdP////9tcH98X4DgrxJSSIAaTwAD
yJDgJ4CsZcAAwAAADCH5BAMAAA4ALAAAAAAPAA4AAARE0DlBK5VYisL7EJnWeV+4
jcWggthmvMbIimg3T0WgHwXA3ada4cZ7FQ4A3zHDEy4xvIEuQCBwDkznU9IUYqGH
sHgsiQAAOw==
---END_DATA---
%/
| source file:|{{{D:\data\tw\treeview\images\transparency_folder-closed.gif}}}|
| attached on:|26 May 2009 by MarkS|
| embedded:|[[transparency_folder-closed.gif|transparency_folder-closed.gif]] - {{{type=image/gif, size=144 bytes, encoded=195 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./treeview/images/transparency_folder-closed.gif|./treeview/images/transparency_folder-closed.gif]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|FolderClosedGif]] or [img[tooltip|FolderClosedGif][link]]}}}
[img[tooltip|FolderClosedGif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEAAOAIMAAJdaH+C6eP/inq1zLf/////Sg59oJMOHNAABAOCvAFhgfBpP
AAIsfOAnAKxlfP//fCH5BAMAAA0ALAAAAAAQAA4AAAQ9sMlJq7336IPnICAxdIdg
FkGwadQRviE3lWZtA9Rg78Lo8TafxFAoGo8GCuDILOAmgEHT+JwYrthsZ9uIAAA7
---END_DATA---
%/
| source file:|{{{D:\data\tw\treeview\images\transparency_folder.gif}}}|
| attached on:|26 May 2009 by MarkS|
| embedded:|[[transparency_folder.gif|transparency_folder.gif]] - {{{type=image/gif, size=147 bytes, encoded=199 bytes}}}|
| local file:|/%LOCAL_LINK%/[[./treeview/images/transparency_folder.gif|./treeview/images/transparency_folder.gif]]|
| remote link:|//none//|
image
<<<
usage: {{{[img[tooltip|FolderGif]] or [img[tooltip|FolderGif][link]]}}}
[img[tooltip|FolderGif]]
<<<
/% DO NOT EDIT BELOW THIS POINT
---BEGIN_DATA---
image/gif;base64,
R0lGODlhEAAOAIMAAJdaH+C6eP/inq1zLf/////Sg59oJMOHNLw6mCkMTGXFpv/v
OQfvQMQGAGzAw0JQKyH5BAMAAA0ALAAAAAAQAA4AAARAsMlJq7336IPnICAxdIdg
FkGwadQRviE3lWZtA9RgD3zvNzpT0HYaGQqFAXLJHDUASabU+VRKl1SJYcvtdr6N
CAA7
---END_DATA---
%/
!!! Ma démarche
Aproximatiement à 15 ans, j'ai pris connaissance de l'oeuvre de [[Charles Fort|https://fr.wikipedia.org/wiki/Charles_Hoy_Fort]]. Wikipedia m'a appris que Robert Benayoun a assez bien défini sa méthode : « la connaissance par l'absurde » et je suis en désaccord avec cette vision. Peut-être l'a-t-il mieux connu que moi et qu'il a raison. Quoi qu'il en soit, son intérêt pour des faits, hypothèses et opinions différents m'a guidé. Si on prend l'analogie d'un chêne qui perd 200 glands, il est facile de constater que très peu, sinon un seul germera, les autres pourrissant et engraissant la terre. C'est l'exception qui vivra; de là mon intérêt pour ce qui est différent,
Un autre fait peu connu, pour ne pas dire caché, est celui d'expériences faites au début du siècle passé. Tout le monde apprend à l'école que l'alchimie est une chimère, et que la chimie est une vraie science qui proclame haut et fort que rien ne se perd, rien ne se crée. Je ne suis pas alchimiste et je ne pouvait que douter de sa réalité effective jusqu'à ce que je prenne connaissance de l'expérience suivante:
* Deux pots à fleurs, __de même terre__ sont remplis, à la surface d'un des pots, on met une graine de tomate et dans l'autre on enterre la graine, puis on arrose les deux pots avec __la même eau pendant quelque mois__.
* Bien entendu, le pot avec une graine enfouie a produit un beau plan. Puis on a fait brûler ce que contenant les deux pots et on en a analysé les cendres. Ô surprise ! Les cendres n'étaient pas identiques.
* Les cendres du pot qui avait germé étaient non seulement différentes de celle de l'autre pot, mais il y avait des éléments chimiques qui n'existaient pas dans l'autre. Comme la terre & l'eau et la graine étaient identiques, il ne restait plus qu'à conclure que le plant de tomate avait fait de l'alchimie en mutant certains éléments. Bien entendu, ce n'est pas le style de recherche dont on a poussé les études; ça allait trop à contre-sens de la normalité. C'est pourquoi, je me permet de proclamer haut et fort que les plans de tomates sont des alchimistes.
Quelques années plus tard, j'ai travaillé au journal ((La Presse(pas comme journaliste))) mais quand même j'ai eu beaucoup de contacts avec ((eux(les journalistes))) et comme c'était l'époque des événements d'Octobre, j'ai appris qu'il y avait une différence entre les faits réels qu'on peut publier, ceux dont on peux ((révéler l'existance(^en omettant certains détails que le public ne comprendrait pas ???))) et ceux qui doivent être oubliés.
''Je n'ai jamais oublié ces trois faits !''
!!! Ce site
J'ai créé ce site car il plus facile pour moi à gérer que Facebook ou Diaspora que j'ai essayé aussi.
Il est fait dans ((un seul fichier très léger(de moins d'un Mo))) que je peux travailler sur mon ordinateur sans être branché sur internet. Quand le texte est prêt, je l'envoie et il est publié tel que je l'ai conçu. Il est fait d'un [[TiddlyWiki|https://tiddlywiki.com]] dans sa vieille version qu'on qualifie de 'classique'; je ne me suis pas encore donné la peine d'étudier la nouvelle version, la ''5''. Je ne vais donc utiliser Facebook et Diasporama que pour en faire la promotion quand je ferai d'autres textes. Il y a fort à parier que je fasse des modifications mineures aux textes déjà présents mais celles-ci ne seront pas annoncées. Les annonces sur Facebook & Diasporama ne seront là, seulement quand de nouveaux textes seront produits.
!!! Virus_Argent
''Le texte Virus_Argent est un condensé de ce que j'ai pu trouver comme informations qui semblaient plus crédibles que d'autres.''
* Dans ce texte, vous découvrirez qu'une guerre monétaire balaie la surface de la terre, plus sûrement que le virus.
** Cette lecture avec tous ses liens, peut paraître longue, mais c'était le minimum pour bien présenter ma conception de la réalité actuelle. Et, je ne dis pas que je ne le retravaillerai pas.
* Si vous lisez jusqu'à la fin et que vous croyez à plus de 60% les faits, opinions & hypothèses présentées, j'aurai obtenu ma note de passage.
** Je dis 60% car je ne fais que me promener sur le web, je n'ai pas de contacts privilégiés et je ne me crois pas omniscient.
* Si ce texte vous a plu et que vous aimez la recherche de la vérité, je souhaite qu'il vous aie donné matière à réflexions et pistes à explorer, en attendant d'en savoir plus.
** Si effectivement ce texte vous a beaucoup plu, __n'en parlez trop__ ((pas à tout le monde(^Pas pour en faire un secret<br>Pour votre bien-être !))), vous risqueriez de recevoir du mépris, des railleries et des injures; même de la part de vieilles amitiés ou de la famille. Il y a des personnes sensibles qui peuvent avoir peur d'en perdre la raison.
*** Ne le partagez qu'à des personnes ouverte d'esprit, qui ont le temps de vérifier par eux-même si je me trompe ou si je me rapproche de la réalité.
<<foldHeadings closed>>