Qui ci sono le varie categorie della guida divise per argomento. se preferite cercare per località cliccate sui Paesi sotto il titolo
Per scrivere ''così'' scrivi {{{''così'' }}} NB: non le virgolette ( " ), ma due apostrofi ( ' )\nPer scrivere __così__ scrivi {{{__così__}}} NB: due underscore ( _ ) \nPer scrivere ==così== scrivi {{{==così==}}}\nPer scrivere //così// scrivi {{{//così//}}}\nPer scrivere @@così@@ scrivi {{{@@così@@}}}\nPer scrivere @@color:red;così@@ scrivi {{{ @@color:red;così@@}}}\n\nPer aggiungere un [[link|http://www.abc.com]] esterno scrivi {{{[[link|http://www.abc.com]]}}}\nPer aggiungere un [[link|AiutoVeloce]] interno scrivi {{{[[link|AiutoVeloce]]}}}, oppure [[AiutoVeloce]]\n(Se un link interno è composto da una sola parola o da più parole separate [[*|WikiWord]] scrivilo {{{[[In questo modo]]}}} )\n\nPer altri aiuti guarda il tag [[formatting]]\n
/***\n''Attach File Plugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.elsdesign.com/tiddlywiki/#AttachFilePlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nStore binary files (such as jpg, gif, pdf or even mp3) directly in your TiddlyWiki document, and then use them as embedded images or links in your tiddlers. Let's you create truly self-contained documents!\n!!!!!Inline interface (live)\n<<<\n<<attach inline>>\n<<<\n!!!!!Usage\n<<<\n# select ''attach file'' sidebar menu\n# press "Browse..." on the attach file control panel\n# select a file from the system-specific 'file picker' dialog and press OK\n# MIME type //(see below)// is automatically selected based on the filename\n# optionally, change the suggested MIME type\n# optionally, enter tiddler tags to add to the attachment\n# press OK\n\nAn 'attachment tiddler' is created, using the filename of the attachment as it's title. The contents of this tidder includes a standard header with a clickable link to the attachment as well as an embedded image of the attachment (if applicable). Below the attachment header are the MIME type and "base64" declarations for the attached file, followed by a base64 text-encoded block of binary data.\n\nAlthough you can edit an attachment tiddler, ''don't change any of the encoded content below the attachment header'', as it has been prepared for use in the rest of your document, and even changing a single character can make it unusable by the browser. //If needed, you ''can'' edit the MIME type declaration in the attachment data, but be very careful not to change anything else, including punctuation!//\n<<<\n!!!!!Known Limitations\nNote: ''This feature does not currently work with Internet Explorer... sorry.''\n*''problem #1:'' while it is easy to read text files, reading binary files is not supported by IE's FileSystemObject (FSO) methods, and other file I/O techniques are subject to security barriers or require additional MS proprietary technologies (like ASP or VB) that make implementation more difficult.\n*''problem #2:'' IE does not support the data: URI scheme, and cannot render the embedded images or links. This would seem to be an insurmountable shortcoming in the browser. Let's hope it is added in the next version...\n!!!!!Example\n<<<\nTo embed attached files as images or link to them from other tiddlers, use the standard TiddlyWiki image syntax or //external// link syntax, substituting a tiddler attachment title in place of the filename or URL that is normally entered.\n# Attachment as an embedded image:^^\n[img[Meow|AttachFileSample]]^^\n# Attachment as an external link:^^\n[[click here to view attachment|AttachFileSample]]^^\n# Regular TiddlyWiki link to an attachment tiddler:^^\n[[AttachFileSample]]^^\n<<<\n!!!!!MIME Types\n<<<\nThe following ''[[MIME|http://en.wikipedia.org/wiki/MIME]]'' file types are automatically suggested (based on filename extension) when using the [[Attach File|AttachFileHelp]] plug-in:\n|>|!text|\n|^^TXT TEXT JS VBS ASP CGI PL^^|text/plain|\n|^^HTM HTML HTA HTX MHT^^|text/html|\n|^^CSV^^|text/comma-separated-values|\n|^^JS^^|text/javascript|\n|^^CSS^^|text/css|\n|^^XML XSL XSLT^^|text/xml|\n|>|!images|\n|^^GIF^^|image/gif|\n|^^JPG JPE JPEG^^|image/jpeg|\n|^^PNG^^|image/png|\n|^^BMP^^|image/bmp|\n|^^TIF TIFF^^|image/tiff|\n|>|!sounds|\n|^^AU SND^^|audio/basic|\n|^^WAV^^|audio/wav|\n|^^RA RM RAM^^|audio/x-pn-realaudio|\n|^^MID MIDI^^|audio/x-midi|\n|^^MP3^^|audio/mp3|\n|^^M3U^^|audio/m3u|\n|>|!video|\n|^^ASF^^|video/x-ms-asf|\n|^^AVI^^|video/avi|\n|^^MPG MPEG^^|video/mpeg|\n|^^QT MOV QTVR^^|video/quicktime|\n|>|!formatted documents|\n|^^PDF^^|application/pdf|\n|^^RTF^^|application/rtf|\n|^^AI EPS PS^^|application/postscript|\n|^^WPD^^|application/wordperfect|\n|^^WRI^^|application/mswrite|\n|^^XLS XLS3 XLS4 XLS5 XLW^^|application/msexcel|\n|^^DOC^^|application/msword|\n|^^PPT PPS^^|application/mspowerpoint|\n|^^SWA^^|application/x-director|\n|^^SWF^^|application/x-shockwave-flash|\n|>|!compressed storage/download|\n|^^ZIP^^|application/x-zip-compressed|\n|^^GZ^^|application/x-gzip|\n|^^RAR^^|application/x-rar-compressed|\n|>|!programs|\n|^^COM EXE DLL OCX^^|application/octet-stream|\n|>|!WAP enabled content|\n|^^WML^^|text/vnd.wap.wml|\n|^^WMLS^^|text/vnd.wap.wmlscript|\n|^^WBMP^^|image/vnd.wap.wbmp|\n|^^WMLC^^|application/vnd.wap.wmlc|\n|^^WMLSC^^|application/vnd.wap.wmlscriptc|\n<<<\n!!!!!Installation\n<<<\nImport (or copy/paste) the following tiddlers into your document:\n''AttachFilePlugin'' (tagged with <<tag systemConfig>>)\n''AttachFileSample'' //(sample attachment tiddler containing an image file)//\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add {{{<<attach>>}}} macro^^\n<<<\n!!!!!Revision History\n<<<\n''2005.12.27 [3.0.0]''\nUpdate for TW2.0\nAutomatically add 'excludeMissing' tag to attachments\n''2005.12.16 [2.2.0]''\nDynamically create/remove attachPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.\n''2005.11.20 [2.1.0]''\nadded wikifier handler extensions for "image" and "prettyLink" to render tiddler attachments\n''2005.11.09 [2.0.0]''\nbegin port from old ELS Design plugin/adaptation hybrid based on ~TW1.2.33\n''2005.08.05 [1.1.0]''\nmoved CSS and HTML definitions into plugin code tiddler instead of using separate tiddlers\n''2005.07.27 [1.0.2]''\ncore update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()\n''2005.07.23 [1.0.1]''\nadded parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n// // +++[version]\n//{{{\nversion.extensions.attach = {major: 2, minor: 2, revision: 0, date: new Date(2005,12,16)};\n//}}}\n// // ===\n\n// // +++[1.2.x compatibility]\n//{{{\nif (!window.story) window.story=window; // for v1.2.x\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n// // ===\n\n// // +++[messages and macro definition]\n//{{{\nconfig.messages.attachmentLinkTooltip="Attachment: ";\nconfig.macros.attach = { label: "attach file", prompt: "Attach a file to this document" };\nconfig.macros.attach.handler = function(place,macroName,params) {\n if (params[0]!="inline")\n { createTiddlyButton(place,this.label,this.prompt,onClickAttachMenu); return; }\n createAttachPanel(place);\n document.getElementById("attachPanel").style.position="static";\n document.getElementById("attachPanel").style.display="block";\n}\n\nfunction createAttachPanel(place) {\n var panel=document.getElementById("attachPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.attach.css,"attachFile");\n panel=createTiddlyElement(place,"span","attachPanel",null,null)\n panel.innerHTML=config.macros.attach.html;\n var theList = document.getElementById("attachMIMEType");\n if (theList) for (var i=0;i<config.MIMETypes.length; i++)\n theList.options[i] = new Option(config.MIMETypes[i][1],config.MIMETypes[i][1],false,false);\n return panel;\n}\n\nfunction onClickAttachMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("attachPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createAttachPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n// //===\n\n// // +++[CSS for attach file control panel]\n//{{{\nconfig.macros.attach.css = '\s\n#attachPanel {\s\n display: none; position:absolute; z-index:10; width:30em; right:105%; top:0em;\s\n background-color: #eeeeee; color:#000000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em;\s\n -moz-border-radius:1em;\s\n}\s\n#attachPanel select { width:100%;margin:0px;font-size:8pt;line-height:110%;}\s\n#attachPanel input { width:100%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#attachPanel .btn { width:auto; }\s\n#attachPanel .btn1 { width:98%; }\s\n#attachPanel .btn2 { width:48%; }\s\n#attachPanel .btn3 { width:32%; }\s\n#attachPanel .btn4 { width:24%; }\s\n#attachPanel .btn5 { width:19%; }\s\n';\n//}}}\n// // ===\n\n// // +++[HTML for attach file control panel]\n//{{{\nconfig.macros.attach.html = '\s\nattach from source file:\s\n<input type="file" id="attachSource" size=45 onChange="onChangeAttachSource()">\s\n<select size=1 id="attachMIMEType"></select>\s\nadd tags:\s\n<input type=text id="attachTags" size=15 autocomplete=off>\s\n<div style="text-align:center">\s\n <input type=button style="width:30%" value="ok" onclick="onClickAttachOK()">\s\n <input type=button style="width:30%" value="cancel" onclick="onClickAttachCancel()">\s\n</div>\s\n';\n//}}}\n// // ===\n\n// // +++[wikifier for rendering image attachments]\n//{{{\n// find the formatter for "image" and replace the handler\nfor (var i=0; i<config.formatters.length && config.formatters[i].name!="image"; i++);\nif (i<config.formatters.length) config.formatters[i].handler=function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source);\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) // Simple bracketted link\n {\n var e = w.output;\n if(lookaheadMatch[5])\n {\n if(store.tiddlerExists(lookaheadMatch[5]))\n e = createTiddlyLink(w.output,lookaheadMatch[5],false);\n else\n e = createExternalLink(w.output,lookaheadMatch[5]);\n }\n var img = createTiddlyElement(e,"img");\n if(lookaheadMatch[1])\n img.align = "left";\n else if(lookaheadMatch[2])\n img.align = "right";\n if(lookaheadMatch[3])\n img.title = lookaheadMatch[3];\n img.src = lookaheadMatch[4];\n // ELS: ADDED\n if (isAttachment(lookaheadMatch[4])) img.src=getAttachment(lookaheadMatch[4]);\n // ELS: END\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n//}}}\n// // ===\n\n// // +++[wikifier for rendering attachments as links]\n//{{{\n// find the formatter for "prettyLink" and replace the handler\nfor (var i=0; i<config.formatters.length && config.formatters[i].name!="prettyLink"; i++);\nif (i<config.formatters.length) config.formatters[i].handler=function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart && lookaheadMatch[2])\n { // Simple bracketted link\n var link = createTiddlyLink(w.output,lookaheadMatch[1],false);\n w.outputText(link,w.nextMatch,w.nextMatch + lookaheadMatch[1].length);\n w.nextMatch += lookaheadMatch[1].length + 2;\n }\n else if(lookaheadMatch && lookaheadMatch.index == w.matchStart && lookaheadMatch[3])\n { // Pretty bracketted link\n var e;\n if(store.tiddlerExists(lookaheadMatch[4]))\n // ELS: ADDED\n if (isAttachment(lookaheadMatch[4]))\n {\n e = createExternalLink(w.output,lookaheadMatch[4]);\n e.href=getAttachment(lookaheadMatch[4]);\n e.title = config.messages.attachmentLinkTooltip + lookaheadMatch[4];\n }\n else\n // ELS: END\n e = createTiddlyLink(w.output,lookaheadMatch[4],false);\n else\n e = createExternalLink(w.output,lookaheadMatch[4]);\n w.outputText(e,w.nextMatch,w.nextMatch + lookaheadMatch[1].length);\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n//}}}\n// // ===\n\n// // +++[Utility API]\n//{{{\nfunction isAttachment(title)\n{\n var tiddler = store.getTiddler(title);\n if (tiddler==undefined || tiddler.tags==undefined) return false;\n return (tiddler.tags.find("attachment")!=null);\n}\n\nfunction getAttachment(title)\n{\n var theData = store.getTiddlerText(title);\n // remove header and embedded newlines from attachment text\n return "data:"+(theData.split('\sn----\sn'))[1].replace(/\s\sn/,'');\n}\n//}}}\n// // ===\n\n// // +++[explict global scoping for IE]\n//{{{\n// for functions/vars called from browser events\nwindow.onChangeAttachSource=onChangeAttachSource;\nwindow.onClickAttachCancel=onClickAttachCancel;\nwindow.onClickAttachOK=onClickAttachOK;\nwindow.isAttachment=isAttachment;\nwindow.getAttachment=getAttachment;\n//}}}\n// // ===\n\n// // +++[MIME Types]\n//{{{\nconfig.MIMETypes = [\n [" ", ""],\n [" txt text js vbs asp cgi pl ","text/plain"],\n [" htm html hta htx mht ", "text/html"],\n [" csv ", "text/comma-separated-values"],\n [" js ", "text/javascript"],\n [" css ", "text/css"],\n [" xml xsl xslt ", "text/xml"],\n [" ", ""],\n [" gif ", "image/gif"],\n [" jpg jpe jpeg ", "image/jpeg"],\n [" png ", "image/png"],\n [" bmp ", "image/bmp"],\n [" tif tiff ", "image/tiff"],\n [" ", ""],\n [" au snd ", "audio/basic"],\n [" wav ", "audio/wav"],\n [" ra rm ram ", "audio/x-pn-realaudio"],\n [" mid midi ", "audio/x-midi"],\n [" mp3 ", "audio/mp3"],\n [" m3u ", "audio/m3u"],\n [" ", ""],\n [" asf ", "video/x-ms-asf"],\n [" avi ", "video/avi"],\n [" mpg mpeg ", "video/mpeg"],\n [" qt mov qtvr ", "video/quicktime"],\n [" ", ""],\n [" pdf ", "application/pdf"],\n [" rtf ", "application/rtf"],\n [" ai eps ps ", "application/postscript"],\n [" ", ""],\n [" wpd ", "application/wordperfect"],\n [" wri ", "application/mswrite"],\n [" xls xls3 xls4 xls5 xlw ", "application/msexcel"],\n [" doc ", "application/msword"],\n [" ppt pps ", "application/mspowerpoint"],\n [" swa ", "application/x-director"],\n [" swf ", "application/x-shockwave-flash"],\n [" ", ""],\n [" zip ", "application/x-zip-compressed"],\n [" gz ", "application/x-gzip"],\n [" rar ", "application/x-rar-compressed"],\n [" com exe dll ocx ", "application/octet-stream"],\n [" ", ""],\n [" wml ", "text/vnd.wap.wml"],\n [" wmls ", "text/vnd.wap.wmlscript"],\n [" wbmp ", "image/vnd.wap.wbmp"],\n [" wmlc ", "application/vnd.wap.wmlc"],\n [" wmlsc ", "application/vnd.wap.wmlscriptc"]];\n//}}}\n// // ===\n\n// // +++[control panel interaction]\n//{{{\nfunction onChangeAttachSource()\n{\n var theFilename = document.getElementById("attachSource").value;\n var theExtension = theFilename.substr(theFilename.lastIndexOf('.')+1).toLowerCase();\n for (var i=0; i<config.MIMETypes.length; i++)\n if (config.MIMETypes[i][0].indexOf(theExtension)!=-1)\n {\n document.getElementById("attachMIMEType").value = config.MIMETypes[i][1];\n document.getElementById("attachMIMEType").selectedIndex = i;\n break;\n }\n}\n\nfunction onClickAttachCancel()\n{\n document.getElementById("attachPanel").style.display="none";\n}\n\nfunction onClickAttachOK()\n{\n var theSource = document.getElementById("attachSource").value;\n var theTags = "attachment excludeMissing "+document.getElementById("attachTags").value;\n var theMIMEType = document.getElementById("attachMIMEType").value;\n if (theMIMEType=="") return;\n var theData = loadBinaryFile(theSource); if (!theData) return;\n var theEncoded = encodeBase64(theData);\n var theTiddler = new Tiddler();\n var theTitle = theSource.replace(/\s\s/g,"/");\n var theTitle = theTitle.substr(theTitle.lastIndexOf('/')+1);\n var theText = "";\n if (theMIMEType.substr(0,5)=="image") theText+='[img['+theTitle+'|'+theTitle+']]\sn';\n theText += 'attachment: [['+theTitle+'|'+theTitle+']]\sn';\n theText += 'original size: '+theData.length+' bytes, encoded size: '+theEncoded.length+' bytes\sn';\n theText += '//{{{\sn';\n theText += '\sn----\sn';\n theText += theMIMEType + ";base64,\sn" + theEncoded;\n theText += '\sn----\sn';\n theText += '\sn//}}}\sn';\n theTiddler.set(theTitle,theText,config.options.txtUserName,new Date(),theTags);\n store.addTiddler(theTiddler);\n store.setDirty(true)\n clearMessage(); displayMessage('Attached '+theTitle);\n document.getElementById("attachPanel").style.display="none";\n story.displayTiddler(null,theTiddler.title,1,null,null,false);\n store.notifyAll();\n}\n//}}}\n// // ===\n\n// // +++[Binary to text encoding]\n//{{{\nfunction encodeBase64(theData)\n{\n if (!theData) return null;\n // encode as base64\n var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";\n var out = ""; //This is the output\n var chr1, chr2, chr3 = ""; //These are the 3 bytes to be encoded\n var enc1, enc2, enc3, enc4 = ""; //These are the 4 encoded bytes\n for (var count=0,i=0; i<theData.length; )\n {\n chr1 = theData.charCodeAt(i++); //Grab the first byte\n chr2 = theData.charCodeAt(i++); //Grab the second byte\n chr3 = theData.charCodeAt(i++); //Grab the third byte\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n if (isNaN(chr2))\n enc3 = enc4 = 64;\n else if (isNaN(chr3))\n enc4 = 64;\n out += keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);\n chr1 = chr2 = chr3 = "";\n enc1 = enc2 = enc3 = enc4 = "";\n count+=4; if (count>60) { out+='\sn'; count=0; } // add line break every 60 chars for readability\n }\n return out;\n}\n//}}}\n// // ===\n\n// // +++[Binary File I/O]\n//{{{\nfunction loadBinaryFile(fileUrl)\n{\n var r = mozillaLoadBinaryFile(fileUrl);\n if((r == null) || (r == false))\n r = ieLoadBinaryFile(fileUrl);\n return(r);\n}\n\nfunction mozillaLoadBinaryFile(filePath)\n{\n if(window.Components)\n try \n {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);\n file.initWithPath(filePath);\n if (!file.exists())\n return(null);\n var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);\n inputStream.init(file, 0x01, 00004, null);\n var bInputStream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);\n bInputStream.setInputStream(inputStream);\n return(bInputStream.readBytes(inputStream.available()));\n }\n catch(e)\n {\n alert("Exception while attempting to attach\sn\sn" + e);\n return(false);\n }\n return(null);\n}\n\nfunction ieLoadBinaryFile(filePath)\n{\n // TBD: load BINARY, not TEXT file\n // return(ieLoadFile(filePath));\n // alert("ieLoadBinaryFile(): not yet implemented...sorry");\n // return(null);\n try\n {\n var stream = new ActiveXObject("ADODB.Stream");\n }\n catch(e)\n {\n alert("Exception while attempting to attach\sn\sn" + e.toString());\n return(null);\n }\n stream.Type = 'adTypeBinary';\n stream.Open();\n stream.LoadFromFile(filePath);\n var content = stream.Read();\n stream.Close();\n return(content);\n\n}\n//}}}\n// // ===\n
To\nmake quoted bits of text stand out, you can use BlockQuotes within your\n[[tiddler]]s, like this:\n\nJeremyRuston said:\n<<<\nA\nTiddlyWiki is like a blog because it's divided up into neat little\nchunks, but it encourages you to read it by hyperlinking rather than\nsequentially: if you like, a non-linear blog analogue that binds the\nindividual microcontent items into a cohesive\nwhole.\n<<<\n\nLike BulletPoints and NumberedBulletPoints, you\ncan have multiple levels of BlockQuotes. Just [[edit]] this tiddler to\nsee how it's done.\n\n>level 1\n>level 1\n>>level\n2\n>>level 2\n>>>level 3\n>>>level\n3\n>>level 2\n>level 1\n
Creating\nBulletPoints is simple.\n* Just add an asterisk\n* at the beginning of\na line.\n** If you want to create sub-bullets\n** start the line with\ntwo asterisks\n*** And if you want yet another level\n*** use three\nasterisks\n* Edit this tiddler to see how it's done\n* You can also do\nNumberedBulletPoints
/***\n''CheckboxPlugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman\nsource: http://www.elsdesign.com/tiddlywiki/#CheckboxPlugin \nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nAdd checkboxes to your tiddler content. Checkbox states can be preserved in the document by either automatically modifying the tiddler content or setting/removing tags on specified tiddlers, or they may be saved as local cookies by assigning an optional 'chkID' to the checkbox. Add custom javascript for programmatic initialization and onClick handling for any checkbox. Also provides access to checkbox DOM element data and tracks the checkbox state in TiddlyWiki's config.options[] internal data.\n\n!!!!!Usage\n<<<\nThe checkbox syntax, including all optional parameters, is contained inside a matched set of [ and ] brackets.\n{{{ [x=id(title:tag){init_script}{onclick_script}] }}}\n\nAn alternative syntax lets you place the optional parameters ''outside'' the [ and ] brackets, and is provided for backward-compatibility with existing content that may include checkbox definitions based on earlier releases of this plugin:\n{{{ [x]=id(title:tag){init_script}{onclick_script} }}}\n\n//{{{\n[ ]or[_] and [x]or[X]\n//}}}\nSimple checkboxes. The current unchecked/checked state is indicated by the character between the {{{[}}} and {{{]}}} brackets ("_" means unchecked, "X" means checked). When you click on a checkbox, the current state is retained by directly modifying the tiddler content to place the corresponding "_" or "X" character in between the brackets\n//{{{\n[x=id]\n//}}}\nAssign an optional ID to the checkbox so you can use {{{document.getElementByID("id")}}} to manipulate the checkbox DOM element, as well as tracking the current checkbox state in {{{config.options["id"]}}}. If the ID starts with "chk" the checkbox state will also be saved in a cookie, so it can be automatically restored whenever the checkbox is re-rendered (overrides any default {{{[x]}}} or {{{[_]}}} value). If a cookie value is kept, the "_" or "X" character in the tiddler content remains unchanged, and is only applied as the default when a cookie-based value is not currently defined.\n//{{{\n[x(title:tag)]\n//}}}\nInitializes and tracks the current checkbox state by setting or removing ("TogglyTagging") a particular tag value from a specified tiddler. If you omit the tiddler title (and the ":" separator), the specified tag is assigned to the current tiddler. If you omit the tag value, as in {{{(title:)}}}, the default tag, {{{checked}}}, is assumed. Omitting both the title and tag, {{{()}}}, tracks the checkbox state by setting the "checked" tag on the current tiddler. When tag tracking is used, the "_" or "X" character in the tiddler content remains unchanged, and is not used to set or track the checkbox state. If a tiddler title named in the tag does not exist, the checkbox state defaults to //unselected//. When the checkbox is subsequently changed to //selected//, it will automatically (and silently) create the missing tiddler and then add the tag to it.\n//{{{\n[x{javascript}{javascript}]\n//}}}\nYou can define optional javascript code segments to add custom initialization and/or 'onClick' handling to a checkbox. The current checkbox state (and it's other DOM attributes) can be set or read from within these code segments by reference to the default context-object, 'this'.\n\nThe first code segment will be executed when the checkbox is initially displayed, so that you can programmatically determine it's starting checked/unchecked state. The second code segment (if present) is executed whenever the checkbox is clicked, so that you can perform programmed responses or intercept and override the checkbox state based on complex logic using the TW core API or custom functions defined in plugins (e.g. testing a particular tiddler title to see if certain tags are set or setting some tags when the checkbox is clicked).\n\nNote: if you want to use the default checkbox initialization processing with a custom onclick function, use this syntax: {{{ [x=id{}{javascript}] }}} \n<<<\n!!!!!Examples\n<<<\n//{{{\n[X] label\n[_] label\n//}}}\nchecked and unchecked static default values\n[X] label\n[_] label\n\n//{{{\n[_=demo] label\n//}}}\ndocument-based value (id='demo', no cookie)\n[_=demo] label\n\n//{{{\n[_=chkDemo] label\n//}}}\ncookie-based value (id='chkDemo')\n[_=chkDemo] label\n\n//{{{\n[_(CheckboxPlugin:demotag)] toggle 'demotag'\n//}}}\ntag-based value (TogglyTagging)\n[_(CheckboxPlugin:demotag)] toggle 'demotag'\n<html><a href="javascript:;" onclick="alert(store.getTiddler(story.findContainingTiddler(this).id.substr(7)).tags)">click to view tags</a></html>\n\n//{{{\n[X{this.checked=true}{alert(this.checked?"on":"off")}] message box with checkbox state\n//}}}\ncustom init and onClick functions\n[X{this.checked=true}{alert(this.checked?"on":"off")}] message box with checkbox state\n\nRetrieving option values:\nconfig.options['demo']=<script>return config.options['demo']?"true":"false";</script>\nconfig.options['chkDemo']=<script>return config.options['chkDemo']?"true":"false";</script>\n\n!!!!!Installation\nimport (or copy/paste) the following tiddlers into your document:\n''CheckboxPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n++++[2006.01.10 - 2.0.1]\nwhen toggling tags, force refresh of the 'tag tiddler'. For example, if you toggle the "systemConfig" tag on a plugin, the corresponding "systemConfig" TIDDLER will be automatically refreshed (if currently displayed), so that the 'tagged' list in that tiddler will remain up-to-date.\n===\n\n++++[2006.01.04 - 2.0.0]\n update for ~TW2.0\n===\n\n++++[2005.12.27 - 1.1.2]\n Fix lookAhead regExp handling for """[x=id]""", which had been including the "]" in the extracted ID. \n Added check for "chk" prefix on ID before calling saveOptionCookie()\n===\n\n++++[2005.12.26 - 1.1.2]\n Corrected use of toUpperCase() in tiddler re-write code when comparing """[X]""" in tiddler content with checkbox state. Fixes a problem where simple checkboxes could be set, but never cleared.\n===\n\n++++[2005.12.26 - 1.1.0]\n Revise syntax so all optional parameters are included INSIDE the [ and ] brackets. Backward compatibility with older syntax is supported, so content changes are not required when upgrading to the current version of this plugin. Based on a suggestion by GeoffSlocock\n===\n\n++++[2005.12.25 - 1.0.0]\n added support for tracking checkbox state using tags ("TogglyTagging")\n Revised version number for official post-beta release.\n===\n\n+++[2005.12.08 - 0.9.3]\n support separate 'init' and 'onclick' function definitions.\n===\n\n+++[2005.12.08 - 0.9.2]\n clean up lookahead pattern\n===\n\n+++[2005.12.07 - 0.9.1]\n only update tiddler source content if checkbox state is actually different. Eliminates unnecessary tiddler changes (and 'unsaved changes' warnings)\n===\n\n+++[2005.12.07 - 0.9.0]\n initial BETA release\n===\n<<<\n!!!!!Credits\n<<<\nThis feature was created by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.CheckboxPlugin = {major: 2, minor: 0, revision:1 , date: new Date(2006,1,10)};\n//}}}\n\n// // 1.2.x compatibility\n//{{{\nif (!window.story) window.story=window;\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n\n//{{{\nconfig.formatters.push( {\n name: "checkbox",\n match: "\s\s[[xX_ ][\s\s]\s\s=\s\s(\s\s{]",\n lookahead: "\s\s[([xX_ ])(\s\s])?(=[^\s\ss\s\s(\s\s]{]+)?(\s\s([^\s\s)]*\s\s))?({[^}]*})?({[^}]*})?(\s\s])?",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n {\n // get params\n var checked=lookaheadMatch[1];\n var id=lookaheadMatch[3];\n var tag=lookaheadMatch[4];\n var fn_init=lookaheadMatch[5];\n var fn_click=lookaheadMatch[6];\n // create checkbox element\n var c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick=onClickCheckbox;\n c.srcpos=w.matchStart+1; // remember location of "X"\n w.output.appendChild(c);\n // set default state\n c.checked=(checked.toUpperCase()=="X");\n // get/set state by ID\n if (id) {\n c.id=id.substr(1); // trim off leading "="\n if (config.options[c.id]!=undefined)\n c.checked=config.options[c.id];\n else\n config.options[c.id]=c.checked;\n }\n // get/set state by tag\n if (tag) {\n c.tiddler=story.findContainingTiddler(w.output).id.substr(7);\n c.tag=tag.substr(1,tag.length-2).trim(); // trim off parentheses\n var pos=c.tag.indexOf(":");\n if (pos==0) { c.tag=tag.substr(1); }\n if (pos>0) { c.tiddler=c.tag.substr(0,pos); c.tag=c.tag.substr(pos+1); }\n if (!c.tag.length) c.tag="checked";\n var t=store.getTiddler(c.tiddler);\n c.checked = (t && t.tags)?(t.tags.find(c.tag)!=null):false;\n }\n if (fn_init) c.fn_init=fn_init.trim().substr(1,fn_init.length-2); // trim off surrounding { and } delimiters\n if (fn_click) c.fn_click=fn_click.trim().substr(1,fn_click.length-2);\n c.onclick(); // compute initial state and save in tiddler/config/cookie\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n }\n)\n//}}}\n\n//{{{\nfunction onClickCheckbox()\n{\n if (this.fn_init)\n // custom function hook to set initial state (run only once)\n { try { eval(this.fn_init); this.fn_init=null; } catch(e) { displayMessage("Checkbox init error: "+e.toString()); } }\n else if (this.fn_click)\n // custom function hook to override or react to changes in checkbox state\n { try { eval(this.fn_click) } catch(e) { displayMessage("Checkbox click error: "+e.toString()); } }\n if (this.id)\n // save state in config AND cookie (only when ID starts with 'chk')\n { config.options[this.id]=this.checked; if (this.id.substr(0,3)=="chk") saveOptionCookie(this.id); }\n if ((!this.id || this.id.substr(0,3)!="chk") && !this.tag) {\n // save state in tiddler content only if not using cookie or tag tracking\n var t=store.getTiddler(story.findContainingTiddler(this).id.substr(7));\n if (this.checked!=(t.text.substr(this.srcpos,1).toUpperCase()=="X")) { // if changed\n t.set(null,t.text.substr(0,this.srcpos)+(this.checked?"X":"_")+t.text.substr(this.srcpos+1),null,null,t.tags);\n store.setDirty(true);\n }\n }\n if (this.tag) {\n var t=store.getTiddler(this.tiddler);\n if (!t) { t=(new Tiddler()); t.set(this.tiddler,"",config.options.txtUserName,(new Date()),null); store.addTiddler(t); } \n var tagged=(t.tags && t.tags.find(this.tag)!=null);\n if (this.checked && !tagged) { t.tags.push(this.tag); store.setDirty(true); }\n if (!this.checked && tagged) { t.tags.splice(t.tags.find(this.tag),1); store.setDirty(true); }\n story.refreshTiddler(this.tag,null,true); // if "tag tiddler" is showing, force a display update\n }\n return true;\n}\n//}}}\n
Il CocheCama è un modo molto economico per coprire lunghe distanze.\nE' un pullman molto comodo, su cui viene servito da mangiare come sugli aerei ed in cui si dorme molto meglio.\nI viaggi risulteranno molto più lunghi, ma il paesaggio solitamente ne vale la pena.
/***\nCollapseTiddlersPlugin\nsource: Bradley Meck\n\nAdds "collapse/expand" commands that can be added to the tiddler toolbar (see ViewTemplate and CollapsedTemplate)\n***/\n//{{{\nconfig.commands.collapseTiddler = {\n text: "Riduci",\n tooltip: "Riduci il frammento",\n handler: function(event,src,title)\n {\n var e = story.findContainingTiddler(src);\n var template;\n if(e.getAttribute("template") != "CollapsedTemplate" ){\n e.setAttribute("oldTemplate",e.getAttribute("template"));\n story.displayTiddler(null,title,"CollapsedTemplate");\n }\n }\n}\n\nconfig.commands.expandTiddler = {\n text: "Espandi",\n tooltip: "Espandi il frammento",\n handler: function(event,src,title)\n {\n var e = story.findContainingTiddler(src);\n story.displayTiddler(null,title,e.getAttribute("oldTemplate"));\n }\n}\n\nconfig.commands.collapseOthers = {\n text: "Riduci altri",\n tooltip: "Espandi questo frammento e riduci gli altri",\n handler: function(event,src,title)\n {\n var e = story.findContainingTiddler(src);\n story.forEachTiddler(function(title,tiddler){\n var t="CollapsedTemplate"; \n if (e==tiddler) t=e.getAttribute("oldTemplate"); if (!t||!t.length) t="ViewTemplate";\n story.displayTiddler(null,title,t);\n })\n }\n}\n\nconfig.macros.collapseAll = {\n handler: function(place,macroName,params,wikifier,paramString,tiddler){\n createTiddlyButton(place,"Collapse All","",function(){\n story.forEachTiddler(function(title,tiddler){\n story.displayTiddler(null,title,"CollapsedTemplate");\n })\n })\n }\n}\n\nconfig.macros.expandAll = {\n handler: function(place,macroName,params,wikifier,paramString,tiddler){\n createTiddlyButton(place,"Expand All","",function(){\n story.forEachTiddler(function(title,tiddler){\n if(tiddler.getAttribute("template") == "CollapsedTemplate")\n story.displayTiddler(null,title,tiddler.getAttribute("oldTemplate"));\n })\n })\n }\n}\n//}}}
<div class='toolbar' macro='toolbar expandTiddler -closeTiddler collapseOthers closeOthers permalink references jump +editTiddler'></div>\n<div class='title' macro='view title'></div><span macro='tiddler DoubleClickForFocus'></span>
ColorPad\n|bgcolor(#FFFFFF):FFF FFF |bgcolor(#CCCCCC):CCC CCC |bgcolor(#999999):999 999 |bgcolor(#666666):@@color(white):666 666@@ |bgcolor(#333333):@@color(white):333 333@@ |bgcolor(#000000):@@color(white):000 000@@ |bgcolor(#FFCC00):FFC C00 |bgcolor(#FF9900):~FF9 900 |bgcolor(#FF6600):@@color(white):~FF6 600@@ |bgcolor(#FF3300):@@color(white):~FF3 300@@ |>|>|>|>|>| |\n|bgcolor(#99CC00):99C C00 |>|>|>| |bgcolor(#CC9900):~CC9 900 |bgcolor(#FFCC33):FFC C33 |bgcolor(#FFCC66):FFC C66 |bgcolor(#FF9966):~FF9 966 |bgcolor(#FF6633):@@color(white):~FF6 633@@ |bgcolor(#CC3300):@@color(white):~CC3 300@@ |>|>|>| |bgcolor(#CC0033):@@color(white):~CC0 033@@ |\n|bgcolor(#CCFF00):CCF F00 |bgcolor(#CCFF33):CCF F33 |bgcolor(#333300):@@color(white):333 300@@ |bgcolor(#666600):@@color(white):666 600@@ |bgcolor(#999900):999 900 |bgcolor(#CCCC00):CCC C00 |bgcolor(#FFFF00):FFF F00 |bgcolor(#CC9933):~CC9 933 |bgcolor(#CC6633):@@color(white):~CC6 633@@ |bgcolor(#330000):@@color(white):330 000@@ |bgcolor(#660000):@@color(white):660 000@@ |bgcolor(#990000):@@color(white):990 000@@ |bgcolor(#CC0000):@@color(white):~CC0 000@@ |bgcolor(#FF0000):@@color(white):~FF0 000@@ |bgcolor(#FF3366):@@color(white):~FF3 366@@ |bgcolor(#FF0033):@@color(white):~FF0 033@@ |\n|bgcolor(#99FF00):99F F00 |bgcolor(#CCFF66):CCF F66 |bgcolor(#99CC33):99C C33 |bgcolor(#666633):@@color(white):666 633@@ |bgcolor(#999933):999 933 |bgcolor(#CCCC33):CCC C33 |bgcolor(#FFFF33):FFF F33 |bgcolor(#996600):@@color(white):996 600@@ |bgcolor(#993300):@@color(white):993 300@@ |bgcolor(#663333):@@color(white):663 333@@ |bgcolor(#993333):@@color(white):993 333@@ |bgcolor(#CC3333):@@color(white):~CC3 333@@ |bgcolor(#FF3333):@@color(white):~FF3 333@@ |bgcolor(#CC3366):@@color(white):~CC3 366@@ |bgcolor(#FF6699):@@color(white):~FF6 699@@ |bgcolor(#FF0066):@@color(white):~FF0 066@@ |\n|bgcolor(#66FF00):66F F00 |bgcolor(#99FF66):99F F66 |bgcolor(#66CC33):66C C33 |bgcolor(#669900):669 900 |bgcolor(#999966):999 966 |bgcolor(#CCCC66):CCC C66 |bgcolor(#FFFF66):FFF F66 |bgcolor(#996633):@@color(white):996 633@@ |bgcolor(#663300):@@color(white):663 300@@ |bgcolor(#996666):@@color(white):996 666@@ |bgcolor(#CC6666):@@color(white):~CC6 666@@ |bgcolor(#FF6666):@@color(white):~FF6 666@@ |bgcolor(#990033):@@color(white):990 033@@ |bgcolor(#CC3399):@@color(white):~CC3 399@@ |bgcolor(#FF66CC):@@color(white):~FF6 6CC@@ |bgcolor(#FF0099):@@color(white):~FF0 099@@ |\n|bgcolor(#33FF00):33F F00 |bgcolor(#66FF33):66F F33 |bgcolor(#339900):339 900 |bgcolor(#66CC00):66C C00 |bgcolor(#99FF33):99F F33 |bgcolor(#CCCC99):CCC C99 |bgcolor(#FFFF99):FFF F99 |bgcolor(#CC9966):~CC9 966 |bgcolor(#CC6600):@@color(white):~CC6 600@@ |bgcolor(#CC9999):~CC9 999 |bgcolor(#FF9999):~FF9 999 |bgcolor(#FF3399):@@color(white):~FF3 399@@ |bgcolor(#CC0066):@@color(white):~CC0 066@@ |bgcolor(#990066):@@color(white):990 066@@ |bgcolor(#FF33CC):@@color(white):~FF3 3CC@@ |bgcolor(#FF00CC):@@color(white):~FF0 0CC@@ |\n|bgcolor(#00CC00):00C C00 |bgcolor(#33CC00):33C C00 |bgcolor(#336600):@@color(white):336 600@@ |bgcolor(#669933):669 933 |bgcolor(#99CC66):99C C66 |bgcolor(#CCFF99):CCF F99 |bgcolor(#FFFFCC):FFF FCC |bgcolor(#FFCC99):FFC C99 |bgcolor(#FF9933):~FF9 933 |bgcolor(#FFCCCC):FFC CCC |bgcolor(#FF99CC):~FF9 9CC |bgcolor(#CC6699):@@color(white):~CC6 699@@ |bgcolor(#993366):@@color(white):993 366@@ |bgcolor(#660033):@@color(white):660 033@@ |bgcolor(#CC0099):@@color(white):~CC0 099@@ |bgcolor(#330033):@@color(white):330 033@@ |\n|bgcolor(#33CC33):33C C33 |bgcolor(#66CC66):66C C66 |bgcolor(#00FF00):00F F00 |bgcolor(#33FF33):33F F33 |bgcolor(#66FF66):66F F66 |bgcolor(#99FF99):99F F99 |bgcolor(#CCFFCC):CCF FCC |>|>| |bgcolor(#CC99CC):~CC9 9CC |bgcolor(#996699):@@color(white):996 699@@ |bgcolor(#993399):@@color(white):993 399@@ |bgcolor(#990099):@@color(white):990 099@@ |bgcolor(#663366):@@color(white):663 366@@ |bgcolor(#660066):@@color(white):660 066@@ |\n|bgcolor(#006600):@@color(white):006 600@@ |bgcolor(#336633):@@color(white):336 633@@ |bgcolor(#009900):009 900 |bgcolor(#339933):339 933 |bgcolor(#669966):669 966 |bgcolor(#99CC99):99C C99 |>|>| |bgcolor(#FFCCFF):FFC CFF |bgcolor(#FF99FF):~FF9 9FF |bgcolor(#FF66FF):@@color(white):~FF6 6FF@@ |bgcolor(#FF33FF):@@color(white):~FF3 3FF@@ |bgcolor(#FF00FF):@@color(white):~FF0 0FF@@ |bgcolor(#CC66CC):@@color(white):~CC6 6CC@@ |bgcolor(#CC33CC):@@color(white):~CC3 3CC@@ |\n|bgcolor(#003300):@@color(white):003 300@@ |bgcolor(#00CC33):00C C33 |bgcolor(#006633):@@color(white):006 633@@ |bgcolor(#339966):339 966 |bgcolor(#66CC99):66C C99 |bgcolor(#99FFCC):99F FCC |bgcolor(#CCFFFF):CCF FFF |bgcolor(#3399FF):339 9FF |bgcolor(#99CCFF):99C CFF |bgcolor(#CCCCFF):CCC CFF |bgcolor(#CC99FF):~CC9 9FF |bgcolor(#9966CC):@@color(white):996 6CC@@ |bgcolor(#663399):@@color(white):663 399@@ |bgcolor(#330066):@@color(white):330 066@@ |bgcolor(#9900CC):@@color(white):990 0CC@@ |bgcolor(#CC00CC):@@color(white):~CC0 0CC@@ |\n|bgcolor(#00FF33):00F F33 |bgcolor(#33FF66):33F F66 |bgcolor(#009933):009 933 |bgcolor(#00CC66):00C C66 |bgcolor(#33FF99):33F F99 |bgcolor(#99FFFF):99F FFF |bgcolor(#99CCCC):99C CCC |bgcolor(#0066CC):@@color(white):006 6CC@@ |bgcolor(#6699CC):669 9CC |bgcolor(#9999FF):999 9FF |bgcolor(#9999CC):999 9CC |bgcolor(#9933FF):@@color(white):993 3FF@@ |bgcolor(#6600CC):@@color(white):660 0CC@@ |bgcolor(#660099):@@color(white):660 099@@ |bgcolor(#CC33FF):@@color(white):~CC3 3FF@@ |bgcolor(#CC00FF):@@color(white):~CC0 0FF@@ |\n|bgcolor(#00FF66):00F F66 |bgcolor(#66FF99):66F F99 |bgcolor(#33CC66):33C C66 |bgcolor(#009966):009 966 |bgcolor(#66FFFF):66F FFF |bgcolor(#66CCCC):66C CCC |bgcolor(#669999):669 999 |bgcolor(#003366):@@color(white):003 366@@ |bgcolor(#336699):@@color(white):336 699@@ |bgcolor(#6666FF):@@color(white):666 6FF@@ |bgcolor(#6666CC):@@color(white):666 6CC@@ |bgcolor(#666699):@@color(white):666 699@@ |bgcolor(#330099):@@color(white):330 099@@ |bgcolor(#9933CC):@@color(white):993 3CC@@ |bgcolor(#CC66FF):@@color(white):~CC6 6FF@@ |bgcolor(#9900FF):@@color(white):990 0FF@@ |\n|bgcolor(#00FF99):00F F99 |bgcolor(#66FFCC):66F FCC |bgcolor(#33CC99):33C C99 |bgcolor(#33FFFF):33F FFF |bgcolor(#33CCCC):33C CCC |bgcolor(#339999):339 999 |bgcolor(#336666):@@color(white):336 666@@ |bgcolor(#006699):@@color(white):006 699@@ |bgcolor(#003399):@@color(white):003 399@@ |bgcolor(#3333FF):@@color(white):333 3FF@@ |bgcolor(#3333CC):@@color(white):333 3CC@@ |bgcolor(#333399):@@color(white):333 399@@ |bgcolor(#333366):@@color(white):333 366@@ |bgcolor(#6633CC):@@color(white):663 3CC@@ |bgcolor(#9966FF):@@color(white):996 6FF@@ |bgcolor(#6600FF):@@color(white):660 0FF@@ |\n|bgcolor(#00FFCC):00F FCC |bgcolor(#33FFCC):33F FCC |bgcolor(#00FFFF):00F FFF |bgcolor(#00CCCC):00C CCC |bgcolor(#009999):009 999 |bgcolor(#006666):@@color(white):006 666@@ |bgcolor(#003333):@@color(white):003 333@@ |bgcolor(#3399CC):339 9CC |bgcolor(#3366CC):@@color(white):336 6CC@@ |bgcolor(#0000FF):@@color(white):000 0FF@@ |bgcolor(#0000CC):@@color(white):000 0CC@@ |bgcolor(#000099):@@color(white):000 099@@ |bgcolor(#000066):@@color(white):000 066@@ |bgcolor(#000033):@@color(white):000 033@@ |bgcolor(#6633FF):@@color(white):663 3FF@@ |bgcolor(#3300FF):@@color(white):330 0FF@@ |\n|bgcolor(#00CC99):00C C99 |>|>|>| |bgcolor(#0099CC):009 9CC |bgcolor(#33CCFF):33C CFF |bgcolor(#66CCFF):66C CFF |bgcolor(#6699FF):669 9FF |bgcolor(#3366FF):@@color(white):336 6FF@@ |bgcolor(#0033CC):@@color(white):003 3CC@@ |>|>|>| |bgcolor(#3300CC):@@color(white):330 0CC@@ |\n|>|>|>|>|>| |bgcolor(#00CCFF):00C CFF |bgcolor(#0099FF):009 9FF |bgcolor(#0066FF):@@color(white):006 6FF@@ |bgcolor(#0033FF):@@color(white):003 3FF@@ |>|>|>|>|>| |
oscar [dot] collini [at] gmail [dot] com
I posti da visitare, tipici o particolari, gli angoli più belli di ogni paese
/***\n''Date Plugin for TiddlyWiki version 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.elsdesign.com/tiddlywiki/#DatePlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n^^last update: <<date tiddler "DDD, MMM DDth, YYYY hh:0mm:0ss">>^^\n\nThere are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW. While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier. This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.\n\nYou can ''specify a date using a combination of year, month, and day number values or mathematical expressions (such as "Y+1" or "D+30")'', and then just display it as formatted date text, or create a ''link to a 'dated tiddler''' for quick blogging, or create a ''popup menu'' containing the dated tiddler link plus links to ''tiddlers that were changed'' as well as any ''scheduled reminders'' for that date.\n!!!!!Usage\n<<<\nWhen installed, this plugin defines a macro: {{{<<date [mode] [date] [format] [linkformat]>>}}}. All of the macro parameters are optional and, in it's simplest form, {{{<<date>>}}}, it is equivalent to the ~TiddlyWiki core macro, {{{<<today>>}}}.\n\nHowever, where {{{<<today>>}}} simply inserts the current date/time in a predefined format (or custom format, using {{{<<today [format]>>}}}), the {{{<<date>>}}} macro's parameters take it much further than that:\n* [mode] is either ''display'', ''link'' or ''popup''. If omitted, it defaults to ''display''. This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.\n* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively. You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters. Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler. You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values. \n* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax. The default is "YYYY.0MM.0DD"\n>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^\n>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^\n>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^\n>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^\n* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format\n\nIn addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:\n\n''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}'' \n\nNote that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:\n* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status: 'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.\n* [weekend] - true indicates a weekend, false indicates a weekday. When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.\n<<<\n!!!!!Examples\n<<<\nThe current date: <<date>>\nThe current time: <<date today "0hh:0mm:0ss">>\nToday's blog: <<date link today "DDD, MMM DDth, YYYY">>\nRecent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>\nThe first day of next month will be a <<date Y M+1 1 "DDD">>\nThis tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>\nThe SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>\nThis document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>\n<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''DatePlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.01.18 [2.0.3]''\nIn 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content. With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned. To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit")=="text", and then append the new reminder to the contents of that control.\n''2006.01.11 [2.0.2]''\ncorrect 'weekend' override detection logic in showDate()\n''2006.01.10 [2.0.1]''\nallow custom-defined weekend days (default defined in config.macros.date.weekend[] array)\nadded flag param to showDate() API to override internal weekend[] array\n''2005.12.27 [2.0.0]''\nUpdate for TW2.0\nAdded parameter handling for 'linkformat'\n''2005.12.21 [1.2.2]''\nFF's date.getYear() function returns 105 (for the current year, 2005). When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number. But IE's date.getYear() already returns 2005. As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005). Adding +1900 is now conditional so the values will be correct on both browsers.\n''2005.11.07 [1.2.1]''\nadded support for "tiddler" dynamic date parameter\n''2005.11.06 [1.2.0]''\nadded support for "tiddler:title" dynamic date parameter\n''2005.11.03 [1.1.2]''\nwhen a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu. Based on a suggestion from BenjaminKudria.\n''2005.11.03 [1.1.1]''\nTemporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache. While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed. This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).\n''2005.11.01 [1.1.0]''\ncorrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended. This should hopefully speed up calendar generators and other plugins that render multiple dates...\n''2005.10.31 [1.0.1]''\ndocumentation and code cleanup\n''2005.10.31 [1.0.0]''\ninitial public release\n''2005.10.30 [0.9.0]''\npre-release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.date = {major: 2, minor: 0, revision: 3, date: new Date(2006,1,18)};\n//}}}\n\n//{{{\n// 1.2.x compatibility\nif (!window.story) window.story=window;\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n\n//{{{\nconfig.macros.date = {\n format: "YYYY.0MM.0DD", // default date display format\n linkformat: "YYYY.0MM.0DD", // 'dated tiddler' link format\n weekendbg: "#c0c0c0", // "cocoa"\n holidaybg: "#c0ffee", // "coffee"\n modifiedsbg: "#bbeeff", // "beef"\n remindersbg: "#ffaace", // "face"\n holidays: [ "01/01", "07/04", "07/24", "11/24" ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)\n weekend: [ 1,0,0,0,0,0,1 ] // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ]\n};\n//}}}\n\n//{{{\nconfig.macros.date.handler = function(place,macroName,params)\n{\n // do we want to see a link, a popup, or just a formatted date?\n var mode="display";\n if (params[0]=="display") { mode=params[0]; params.shift(); }\n if (params[0]=="popup") { mode=params[0]; params.shift(); }\n if (params[0]=="link") { mode=params[0]; params.shift(); }\n // get the date\n var now = new Date();\n var date = now;\n if (!params[0] || params[0]=="today")\n { params.shift(); }\n else if (params[0]=="filedate")\n { date=new Date(document.lastModified); params.shift(); }\n else if (params[0]=="tiddler")\n { date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }\n else if (params[0].substr(0,8)=="tiddler:")\n { if ((tiddler=store.getTiddler(params[0].substr(8)))) date=tiddler.modified; params.shift(); }\n else {\n var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));\n var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));\n var d = eval(params.shift().replace(/D/ig,now.getDate()+0));\n date = new Date(y,m-1,d);\n }\n // date format with optional custom override\n var format=this.format; if (params[0]) format=params.shift();\n var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();\n showDate(place,date,mode,format,linkformat);\n}\n//}}}\n\n//{{{\nwindow.showDate=showDate;\nfunction showDate(place,date,mode,format,linkformat,autostyle,weekend)\n{\n if (!mode) mode="display";\n if (!format) format=config.macros.date.format;\n if (!linkformat) linkformat=config.macros.date.linkformat;\n if (!autostyle) autostyle=false;\n\n // format the date output\n var title = date.formatString(format);\n var linkto = date.formatString(linkformat);\n\n // just show the formatted output\n if (mode=="display") { place.appendChild(document.createTextNode(title)); return; }\n\n // link to a 'dated tiddler'\n var link = createTiddlyLink(place, linkto, false);\n link.appendChild(document.createTextNode(title));\n link.title = linkto;\n link.date = date;\n link.format = format;\n link.linkformat = linkformat;\n\n // if using a popup menu, replace click handler for dated tiddler link\n // with handler for popup and make link text non-italic (i.e., an 'existing link' look)\n if (mode=="popup") {\n link.onclick = onClickDatePopup;\n link.style.fontStyle="normal";\n }\n\n // format the popup link to show what kind of info it contains (for use with calendar generators)\n if (!autostyle) return;\n if (hasModifieds(date))\n { link.style.fontStyle="normal"; link.style.fontWeight="bold"; }\n if (hasReminders(date))\n { link.style.textDecoration="underline"; }\n if(isToday(date))\n { link.style.border="1px solid black"; }\n\n if( (weekend!=undefined?weekend:isWeekend(date)) && (config.macros.date.weekendbg!="") )\n { place.style.background = config.macros.date.weekendbg; }\n if(isHoliday(date)&&(config.macros.date.holidaybg!=""))\n { place.style.background = config.macros.date.holidaybg; }\n if (hasModifieds(date)&&(config.macros.date.modifiedsbg!=""))\n { place.style.background = config.macros.date.modifiedsbg; }\n if (hasReminders(date)&&(config.macros.date.remindersbg!=""))\n { place.style.background = config.macros.date.remindersbg; }\n}\n//}}}\n\n//{{{\nfunction isToday(date) // returns true if date is today\n { var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }\n\nfunction isWeekend(date) // returns true if date is a weekend\n { return (config.macros.date.weekend[date.getDay()]); }\n\nfunction isHoliday(date) // returns true if date is a holiday\n{\n var longHoliday = date.formatString("0MM/0DD/YYYY");\n var shortHoliday = date.formatString("0MM/0DD");\n for(var i = 0; i < config.macros.date.holidays.length; i++) {\n var holiday=config.macros.date.holidays[i];\n if (holiday==longHoliday||holiday==shortHoliday) return true;\n }\n return false;\n}\n//}}}\n\n//{{{\n// Event handler for clicking on a day popup\nfunction onClickDatePopup(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var popup = createTiddlerPopup(this);\n if(popup) {\n // always show dated tiddler link at the top...\n createTiddlyLink(popup,this.date.formatString(this.linkformat),true);\n createTiddlyElement(popup,"hr",null,null,null);\n addModifiedsToPopup(popup,this.date,this.format);\n addRemindersToPopup(popup,this.date,this.linkformat);\n }\n scrollToTiddlerPopup(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n//{{{\nfunction indexModifieds() // build list of tiddlers, hash indexed by modification date\n{\n var modifieds= { };\n var tiddlers = store.getTiddlers("title");\n for (var t = 0; t < tiddlers.length; t++) {\n date = tiddlers[t].modified.formatString("YYYY0MM0DD")\n if (!modifieds[date])\n modifieds[date]=new Array();\n modifieds[date].push(tiddlers[t].title);\n }\n return modifieds;\n}\nfunction hasModifieds(date) // returns true if date has modified tiddlers\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n return (config.macros.date.modifieds[date.formatString("YYYY0MM0DD")]!=undefined);\n}\n\nfunction addModifiedsToPopup(popup,when,format)\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n var mods = config.macros.date.modifieds[when.formatString("YYYY0MM0DD")];\n if (mods) {\n mods.sort();\n var e=createTiddlyElement(popup,"div",null,null,"changes:");\n for(var t=0; t<mods.length; t++) {\n var link=createTiddlyLink(popup,mods[t],false);\n link.appendChild(document.createTextNode(indent+mods[t]));\n createTiddlyElement(popup,"br",null,null,null);\n }\n }\n}\n//}}}\n\n//{{{\nfunction indexReminders() // build list of tiddlers with reminders, hash indexed by reminder date\n{\n var reminders = { };\n\n if(window.findTiddlersWithReminders==undefined) return; // reminders plugin not installed\n\n var matches = store.search("reminder",false,false,"title","excludeSearch");\n var macroPattern = "<<([^>\s\ss]+)(?:\s\ss*)([^>]*)>>";\n var macroRegExp = new RegExp(macroPattern,"mg");\n var arr = [];\n for(var t=matches.length-1; t>=0; t--)\n {\n var targetText = matches[t].text;\n do {\n // Get the next formatting match\n var formatMatch = macroRegExp.exec(targetText);\n if(formatMatch)\n {\n if (formatMatch[1] != null && formatMatch[1].toLowerCase() == "reminder")\n {\n //Find the matching date.\n var params = formatMatch[2].readMacroParams();\n var dateHash = getParamsForReminder(params);\n var date = findDateForReminder(dateHash);\n if (date != null)\n {\n var dateindex = date.formatString("YYYY0MM0DD")\n if (!reminders[dateindex])\n reminders[dateindex]=new Array();\n reminders[dateindex].pushUnique(t);\n }\n }\n }\n } while(formatMatch);\n }\n return reminders;\n}\n\nfunction hasReminders(date) // returns true if date has reminders\n{\n return false; // ELS 2005.11.03: BYPASS due to performance issues\n if (!config.macros.date.reminders) config.macros.date.reminders = indexReminders();\n return (config.macros.date.reminders[date.formatString("YYYY0MM0DD")]!=undefined);\n}\n\nfunction addRemindersToPopup(popup,when,format)\n{\n if(window.findTiddlersWithReminders == null) return; // reminder plugin not installed\n var indent = String.fromCharCode(160)+String.fromCharCode(160);\n var e=createTiddlyElement(popup,"div",null,null,"reminders:");\n var reminders=findTiddlersWithReminders(when, [0,31],null,null);\n for(var t=0; t<reminders.length; t++) {\n link = createTiddlyLink(popup,reminders[t].tiddler,false);\n var diff=reminders[t].diff;\n diff=(!diff)?"Today":((diff==1)?"Tomorrow":diff+" days");\n var txt=(reminders[t].params["title"])?reminders[t].params["title"]:reminders[t].tiddler;\n link.appendChild(document.createTextNode(indent+diff+" - "+txt));\n createTiddlyElement(popup,"br",null,null,null);\n }\n var link = createTiddlyLink(popup,indent+"new reminder...",true); createTiddlyElement(popup,"br");\n var title = when.formatString(format);\n link.title="add a reminder to '"+title+"'";\n link.onclick = function() {\n // show tiddler editor\n story.displayTiddler(null, title, 2, null, null, false, false);\n // find body 'textarea'\n var c =document.getElementById("tiddler" + title).getElementsByTagName("*");\n for (var i=0; i<c.length; i++) if ((c[i].tagName.toLowerCase()=="textarea") && (c[i].getAttribute("edit")=="text")) break;\n // append reminder macro to tiddler content\n if (i<c.length) {\n if (store.tiddlerExists(title)) c[i].value+="\sn"; else c[i].value="";\n c[i].value += "<<reminder day:"+when.getDate()+" month:"+(when.getMonth()+1)+" year:"+(when.getYear()+1900)+" title: >>";\n }\n };\n}\n//}}}\n
[[Salve, viaggiatore!]]
Dove mangiare e bere.\nCerceremo di segnalare i posti dove si mangia bene e si spende poco...o dove la spesa vale la pena!
=in costruzione=
{{{\n[img[title|filename]]\n[img[filename]]\n[img[title|filename][link]]\n[img[filename][link]]\n}}}\nImages\ncan be included by their filename or full URL. It's good practice to\ninclude a title to be shown as a tooltip, and when the image isn't\navailable. An image can also link to another tiddler or or a\nURL\n[img[Romanesque\nbroccoli|fractalveg.jpg][http://www.flickr.com/photos/jermy/10134618/]]\n{{{\n[img[Fractal\nvegetable|fractalveg.jpg]]\n[img[This is shown as a\ntooltip|http://example.com/image.jpg]]\n[img[http://example.com/image.jpg]]\n[img[http://example.com/image.jpg][ExampleDotCom]]\n}}}\nThe\ntooltip is\noptional.\n\n[<img[Forest|forest.jpg][http://www.flickr.com/photos/jermy/8749660/]][>img[Field|field.jpg][http://www.flickr.com/photos/jermy/8749285/]]You\ncan also float images to the left or right: the forest is left aligned\nwith {{{[<img[}}}, and the field is right aligned with\n{{{[>img[}}}.\n@@clear(left):clear(right):display(block):You can use\nCSS to clear the floats@@\n{{{\n[<img[A woody bit of Hampstead\nHeath|forest.jpg]]\n[>img[A field near Milton Keynes|field.jpg]]\n}}}\n\n\nTwo notes about using images:\n#First, if you add images to the wiki, the wiki becomes less portable--you have to make sure that the wiki can get to the images you link to. \n#Second, it's considered rude to "hotlink" images on other people's servers. Don't just directly link to someone else's image; download it onto your computer and upload it back to your own server or to a free image host like [[Image Shack|http://www.imageshack.us/]].
Cittadina della provincia del Chubut (Patagonia).\nPersonalmente l'ho conosciuta per aver letto "in Patagonia" di Chatwin. Era uno dei due capolinea della [[Trochita|La Trochita]], e da qui ancora parte uno dei due percorsi turistici che questo treno continua a fare.\nLa città, devo essere sincero, non ha molte attrattive, ma i suoi dintorni (da quel poco che ho visto) sono molto belli; si tratta di una zona di montagne, laghi e cascate.\nA poche decine di minuti di autobus si trova il piccolo villagio di [[Trevelin]].
Like most wikis, TiddlyWiki supports a range of simplified character formatting:\n| !To get | !Type this |h\n| ''Bold'' | {{{''Bold''}}} |\n| ==Strikethrough== | {{{==Strikethrough==}}} |\n| __Underline__ | {{{__Underline__}}} (that's two underline characters) |\n| //Italic// | {{{//Italic//}}} |\n| Superscript: 2^^3^^=8 | {{{2^^3^^=8}}} |\n| Subscript: a~~ij~~ = -a~~ji~~ | {{{a~~ij~~ = -a~~ji~~}}} |\n| @@highlight@@ | {{{@@highlight@@}}} |\n<<<\nThe highlight can also accept CSS syntax to directly style the text:\n@@color:green;green coloured@@\n@@background-color:#ff0000;color:#ffffff;red coloured@@\n@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;border:1px solid black;Access any CSS style@@\n<<<\n\n//For backwards compatibility, the following highlight syntax is also accepted://\n{{{\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@\n}}}\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@
/***\n''HTML Formatting Plugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.elsdesign.com/tiddlywiki/#HTMLFormattingPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nThe shorthand Wiki-style formatting syntax of ~TiddlyWiki is very convenient and enables most content to be reasonably well presented. However, there are times when tried-and-true HTML formatting syntax allows more more precise control of the content display.\n\nWhen HTML formatting syntax is embedded within a tiddler (in between {{{<}}}{{{html>}}} and {{{<}}}{{{/html>}}} markers) TiddlyWiki passes this content to the browser for processing as 'native' HTML. However, TiddlyWiki does not also process the HTML source content for any embedded wiki-formatting syntax it may contain. This means that while you can use HTML formatted content, you cannot mix wiki-formatted content within the HTML formatting.\n!!!!!Usage\n<<<\nThe ~HTMLFormatting plugin allows you to freely ''mix wiki-style formatting syntax within HTML formatted content'' by extending the action of the standard TiddlyWiki formatting handler.\n\nWhen a tiddler is about to be displayed, ~TiddlyWiki looks for tiddler content contained within ''<{{{html}}}>'' and ''<{{{/html}}}>'' HTML tags. This content (if any) is passed directly to the browser's internal "rendering engine" to process as ~HTML-formatted content. Once the HTML formatting has been processed, all the pieces of text occuring in between the HTML formatting are then processed by the ~TiddlyWiki rendering engine, one piece at a time, so that normal wiki-style formatting can be applied to the individual text pieces.\n<<<\n!!!!!Line breaks\n<<<\nOne major difference between Wiki formatting and HTML formatting is how "line breaks" are processed. Wiki formatting treats all line breaks as literal content to be displayed //as-is//. However, because HTML normally ignores line breaks and actually processes them as simple "word separators" instead, many people who write HTML include extra line breaks in their documents, just to make the "source code" easier to read.\n\nEven though you can use HTML tags within your tiddler content, the default treatment for line breaks still follows the Wiki-style rule (i.e., all new lines are displayed as-is). When adding HTML content to a tiddler (especially if you cut-and-paste it from another web page), you should take care to avoid adding extra line breaks to the text.\n\nIf removing all the extra line breaks from your HTML content would be a big hassle, you can quickly //override the default Wiki-style line break rule// so that the line breaks use the standard HTML rules instead. Placing a ''<{{{hide linebreaks}}}>'' tag within the tiddler's HTML content changes all line breaks to spaces before rendering the content, so that the literal line breaks will be processed as simple word-breaks instead.\n\nNote: this does //not// alter the actual tiddler content that is stored in the document, just the manner in which it is displayed. Any line breaks contained in the tiddler will still be there when you edit its content. Also, to include a literal line break when the ''<{{{hide linebreaks}}}>'' tag is present, you will need to use a ''<{{{br}}}>'' or ''<{{{p}}}>'' HTML tag instead of simply typing a line break.\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''HTMLFormattingPlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for HTMLFormatting handling^^\n<<<\n!!!!!Revision History\n<<<\n''2005.12.01 [2.1.0]''\ndon't wikify #TEXT nodes inside SELECT and TEXTAREA elements\n''2005.11.06 [2.0.1]''\ncode cleanup\n''2005.10.31 [2.0.0]''\nreplaced hijack wikify() with hijack config.formatters["html"] and simplified recursive WikifyTextNodes() code\n''2005.10.09 [1.0.2]''\ncombined documentation and code into a single tiddler\n''2005.08.05 [1.0.1]''\nmoved HTML and CSS definitions into plugin code instead of using separate tiddlers\n''2005.07.26 [1.0.1]''\nRe-released as a plugin.\nAdded <{{{html}}}>...</{{{nohtml}}}> and <{{{hide newlines}}}> handling\n''2005.07.20 [1.0.0]''\nInitial Release (as code adaptation)\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.HTMLFormatting = {major: 2, minor: 1, revision: 0, date: new Date(2005,12,1)};\n\n// find the formatter for HTML and replace the handler\nfor (var i=0; i<config.formatters.length && config.formatters[i].name!="html"; i++);\nif (i<config.formatters.length) config.formatters[i].handler=function(w)\n{\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var html=lookaheadMatch[1];\n // optionally suppress wiki-style literal handling of newlines\n // strip any carriage returns added by Internet Explorer's textarea edit field\n // encode newlines as \sn so Internet Explorer's HTML parser won't eat them\n // encode macro brackets (<< and >>) so HTML parser won't eat them\n if (html.indexOf('<hide linebreaks>')!=-1) html=html.replace(regexpNewLine,' ');\n html=html.replace(regexpCarriageReturn,'');\n html=html.replace(regexpNewLine,'\s\sn');\n html=html.replace(/<</g,'%%(').replace(/>>/g,')%%');\n // create span to hold HTML\n // parse HTML and normalize the results\n // walk node tree and call wikify() on each text node\n var e = createTiddlyElement(w.output,"span");\n e.innerHTML=html;\n e.normalize(); \n wikifyTextNodes(e);\n // advance to next parse position\n w.nextMatch=lookaheadMatch.index + lookaheadMatch[0].length;\n }\n}\n\n// wikify text nodes remaining after HTML content is processed (pre-order recursion)\nfunction wikifyTextNodes(theNode)\n{\n for (var i=0;i<theNode.childNodes.length;i++) {\n var theChild=theNode.childNodes.item(i);\n if (theChild.nodeName.toLowerCase()=='option') continue;\n if (theChild.nodeName.toLowerCase()=='select') continue;\n wikifyTextNodes(theChild);\n if (theChild.nodeName=='#text') {\n var txt=theChild.nodeValue;\n // decode macro brackets and newlines\n txt=txt.replace(/\s%%\s(/g,'<<').replace(/\s)\s%%/g,'>>').replace(regexpBackSlashEn,'\sn');\n // replace text node with wikified() span\n var newNode=createTiddlyElement(null,"span");\n wikify(txt,newNode);\n theNode.replaceChild(newNode,theChild);\n }\n }\n}\n//}}}\n
|>|>| !Whitespace |\n| !Symbol | !Character | !Description |\n| nbsp | &nbsp; |non-breaking space |\n| ensp | &ensp; |en space |\n| emsp | &emsp; |em space |\n| thinsp | &thinsp; |thin space |\n| zwnj | &zwnj; |zero width non-joiner |\n| zwj | &zwj; |zero width joiner |\n| lrm | &lrm; |left-to-right mark |\n| rlm | &rlm; |right-to-left mark |\n| shy | &shy; |soft hyphen |\n|>|>| !Money |\n| !Symbol | !Character | !Description |\n| cent | &cent; |cent sign |\n| pound | &pound; |pound sign |\n| curren | &curren; |currency sign |\n| yen | &yen; |yen sign |\n| euro | &euro; |euro sign |\n|>|>| !Symbols |\n| !Symbol | !Character | !Description |\n| copy | &copy; |copyright sign |\n| reg | &reg; |registered trade mark |\n| trade | &trade; |trade mark sign |\n| ordm | &ordm; |masculine ordinal indicator |\n| ordf | &ordf; |feminine ordinal indicator |\n| dagger | &dagger; |dagger |\n| Dagger | &Dagger; |double dagger |\n| bull | &bull; |bullet |\n| spades | &spades; |spade |\n| clubs | &clubs; |club |\n| hearts | &hearts; |heart |\n| diams | &diams; |diamond |\n|>|>| !Lines |\n| !Symbol | !Character | !Description |\n| macr | &macr; |overline |\n| brvbar | &brvbar; |broken vertical bar |\n| ndash | &ndash; |en dash |\n| mdash | &mdash; |em dash |\n| oline | &oline; |overline |\n| lceil | &lceil; |left ceiling |\n| rceil | &rceil; |right ceiling |\n| lfloor | &lfloor; |left floor |\n| rfloor | &rfloor; |right floor |\n|>|>| !Arrows |\n| !Symbol | !Character | !Description |\n| larr | &larr; |left arrow |\n| uarr | &uarr; |up arrow |\n| rarr | &rarr; |right arrow |\n| darr | &darr; |down arrow |\n| harr | &harr; |left right arrow |\n| crarr | &crarr; |down arrow with corner leftwards / carriage return |\n| lArr | &lArr; |left double arrow |\n| uArr | &uArr; |up double arrow |\n| rArr | &rArr; |right double arrow |\n| dArr | &dArr; |down double arrow |\n| hArr | &hArr; |left right double arrow |\n|>|>| !Punctuation |\n| !Symbol | !Character | !Description |\n| iexcl | &iexcl; |inverted exclamation mark |\n| iquest | &iquest; |inverted question mark |\n| uml | &uml; |diaeresis |\n| acute | &acute; |acute accent |\n| para | &para; |paragraph sign |\n| sect | &sect; |section sign |\n| cedil | &cedil; |cedilla |\n| amp | &amp; |ampersand |\n| apos | &apos; |apostrophe mark |\n| circ | &circ; |circumflex accent |\n| tilde | &tilde; |small tilde |\n| hellip | &hellip; |horizontal ellipsis |\n|>|>| !Quotations |\n| !Symbol | !Character | !Description |\n| quot | &quot; |quotation mark |\n| raquo | &raquo; |right double angle quotation mark |\n| laquo | &laquo; |left double angle quotation mark |\n| lsquo | &lsquo; |left single quotation mark |\n| rsquo | &rsquo; |right single quotation mark |\n| sbquo | &sbquo; |single low-9 quotation mark |\n| ldquo | &ldquo; |left double quotation mark |\n| rdquo | &rdquo; |right double quotation mark |\n| bdquo | &bdquo; |double low-9 quotation mark |\n| lsaquo | &lsaquo; |single left-pointing angle quotation mark |\n| rsaquo | &rsaquo; |single right-pointing angle quotation mark |\n|>|>| !Greek Letters |\n| !Symbol | !upper-case | !lower-case |\n| Alpha | &Alpha; | &alpha; |\n| Beta | &Beta; | &beta; |\n| Gamma | &Gamma; | &gamma; |\n| Delta | &Delta; | &delta; |\n| Epsilon | &Epsilon; | &epsilon; |\n| Zeta | &Zeta; | &zeta; |\n| Eta | &Eta; | &eta; |\n| Theta | &Theta; | &theta; |\n| Iota | &Iota; | &iota; |\n| Kappa | &Kappa; | &kappa; |\n| Lambda | &Lambda; | &lambda; |\n| Mu | &Mu; | &mu; |\n| Nu | &Nu; | &nu; |\n| Xi | &Xi; | &xi; |\n| Omicron | &Omicron; | &omicron; |\n| Pi | &Pi; | &pi; |\n| Rho | &Rho; | &rho; |\n| Sigma | &Sigma; | &sigma; |\n| Tau | &Tau; | &tau; |\n| Upsilon | &Upsilon; | &upsilon; |\n| Upsilon | &upsih; | |\n| Phi | &Phi; | &phi; |\n| Chi | &Chi; | &chi; |\n| Psi | &Psi; | &psi; |\n| Omega | &Omega; | &omega; |\n|>|>| !Latin Letters |\n| !Symbol | !upper-case | !lower-case |\n| Agrave | &Agrave; | &agrave; |\n| Aacute | &Aacute; | &aacute; |\n| Acirc | &Acirc; | &acirc; |\n| Atilde | &Atilde; | &atilde; |\n| Auml | &Auml; | &auml; |\n| Aring | &Aring; | &aring; |\n| ~AElig | &AElig; | &aelig; |\n| Ccedil | &Ccedil; | &ccedil; |\n| Egrave | &Egrave; | &egrave; |\n| Eacute | &Eacute; | &eacute; |\n| Ecirc | &Ecirc; | &ecirc; |\n| Euml | &Euml; | &euml; |\n| Igrave | &Igrave; | &igrave; |\n| Iacute | &Iacute; | &iacute; |\n| Icirc | &Icirc; | &icirc; |\n| Iuml | &Iuml; | &iuml; |\n| ETH | &ETH; | &eth; |\n| Ntilde | &Ntilde; | &ntilde; |\n| Ograve | &Ograve; | &ograve; |\n| Oacute | &Oacute; | &oacute; |\n| Ocirc | &Ocirc; | &ocirc; |\n| Otilde | &Otilde; | &otilde; |\n| Ouml | &Ouml; | &ouml; |\n| Oslash | &Oslash; | &oslash; |\n| Ugrave | &Ugrave; | &ugrave; |\n| Uacute | &Uacute; | &uacute; |\n| Ucirc | &Ucirc; | &ucirc; |\n| Uuml | &Uuml; | &uuml; |\n| Yacute | &Yacute; | &yacute; |\n| THORN | &THORN; | &thorn; |\n| Yuml | &Yuml; | &yuml; |\n| ~OElig | &OElig; | &oelig; |\n| Scaron | &Scaron; | &scaron; |\n| szlig | &szlig; | |\n\n
inviaggio
/***\n|Name|HaloscanMacro|\n|Created by|JimSpeth|\n|Location|http://end.com/~speth/HaloscanMacro.html|\n|Version|1.1.0|\n|Requires|~TW2.x|\n\n!Description\nComment and trackback support for TiddlyWiki (via Haloscan).\n\n!History\n* 16-Feb-06, version 1.1.0, drastic changes, now uses settings from haloscan account config\n* 31-Jan-06, version 1.0.1, fixed display of counts for default tiddlers\n* 30-Jan-06, version 1.0, initial release\n\n!Examples\n|!Source|!Output|h\n|{{{<<haloscan comments>>}}}|<<haloscan comments>>|\n|{{{<<haloscan trackbacks>>}}}|<<haloscan trackbacks>>|\n\n!Installation\nRegister for a [[Haloscan|http://www.haloscan.com]] account. It's free and painless.\nInstall the HaloscanMacro in a new tiddler with a tag of systemConfig (save and reload to activate).\nIn the macro configuration code (below), change //WebMaster// to your Haloscan account name.\nUse the macro somewhere in a tiddler (see ViewTemplate for an example).\n\n!Settings\nYou can adjust various options for your account in the member configuration area of Haloscan's web site. The macro will use these settings when formatting the links.\n\n!Code\n***/\n//{{{\n\n/* change "YourName" to your Haloscan account name */\nconfig.macros.haloscan = {account: "inviaggio", baseURL: "http://www.haloscan.com/load/"};\n\nvar haloscanLoaded = 0;\nconfig.macros.haloscan.load = function ()\n{\n if (haloscanLoaded == 1)\n return;\n \n account = config.macros.haloscan.account;\n if (!account || (account == "inviaggio"))\n account = store.getTiddlerText("HaloscanAccount");\n \n var el = document.createElement('script');\n el.language = 'JavaScript'; \n el.type = 'text/javascript'; \n el.src = config.macros.haloscan.baseURL + account;\n document.documentElement.childNodes[0].appendChild(el);\n \n haloscanLoaded = 1;\n}\nconfig.macros.haloscan.load();\n\n/* this totally clobbers document.write, i hope that's ok */\nvar safeWrite = function(s)\n{\n document.written = s;\n return s;\n};\ndocument.write = safeWrite;\n\nconfig.macros.haloscan.refreshDefaultTiddlers = function ()\n{\n var start = store.getTiddlerText("DefaultTiddlers");\n if (start)\n {\n var titles = start.readBracketedList();\n for (var t=titles.length-1; t>=0; t--)\n story.refreshTiddler(titles[t], DEFAULT_VIEW_TEMPLATE, 1);\n }\n}\n\nvar haloscanRefreshed = 0;\nconfig.macros.haloscan.handler = function (place, macroName, params, wikifier, paramString, tiddler)\n{\n if (typeof HaloScan == 'undefined')\n {\n if (haloscanRefreshed == 0)\n {\n setTimeout("config.macros.haloscan.refreshDefaultTiddlers()", 1);\n haloscanRefreshed = 1;\n }\n return;\n }\n \n var id = story.findContainingTiddler(place).id.substr(7);\n var hs_search = new RegExp('\s\sW','gi');\n id = id.replace(hs_search,"_");\n \n account = config.macros.haloscan.account;\n if (!account || (account == "inviaggio"))\n account = store.getTiddlerText("HaloscanAccount");\n \n var haloscanError = function (msg)\n {\n createTiddlyError(place, config.messages.macroError.format(["HaloscanMacro"]), config.messages.macroErrorDetails.format(["HaloscanMacro", msg]));\n }\n \n if (params.length == 1)\n {\n if (params[0] == "comments")\n {\n postCount(id);\n commentsLabel = document.written;\n commentsPrompt = "Comments on this tiddler";\n var commentsHandler = function(e) { HaloScan(id); return false; };\n var commentsButton = createTiddlyButton(place, commentsLabel, commentsPrompt, commentsHandler);\n }\n else if (params[0] == "trackbacks")\n {\n postCountTB(id);\n trackbacksLabel = document.written;\n trackbacksPrompt = "Trackbacks for this tiddler";\n var trackbacksHandler = function(e) { HaloScanTB(id); return false; };\n var trackbackButton = createTiddlyButton(place, trackbacksLabel, trackbacksPrompt, trackbacksHandler);\n }\n else\n haloscanError("unknown parameter: " + params[0]);\n }\n else if (params.length == 0)\n haloscanError("missing parameter");\n else\n haloscanError("bad parameter count");\n}\n\n//}}}\n
You can divide a tiddler into\n----\nsections by typing four dashes on a line by themselves
Informazioni varie su questo sito
TiddlyWiki lets you write ordinary HTML by enclosing it in {{{<html>}}} and {{{</html>}}}:\n\n<html>\n<a href="javascript:;" onclick="onClickTiddlerLink(event);" \ntiddlyLink="TiddlyWiki" style="background-color: yellow;"> Link to wikiwords from HTML</a>\n</html>\n\nThe source for the above is:\n\n{{{\n<html>\n<div style="background-color: yellow;">\n<a href="javascript:;" onclick="onClickTiddlerLink(event);" tiddlyLink="Macros">Link to wikiwords from HTML</a>\n</div>\n</html>\n}}}\n\nHTML can enable some exotic new features (like [[embedding GMail and Outlook|http://groups.google.com/group/TiddlyWiki/browse_thread/thread/d363303aff5868d0/056269d8409d121f?lnk=st&q=embedding+gmail&rnum=1#056269d8409d121f]] in a TiddlyWiki). But, care needs to be taken with including things like JavaScript code. For example, this Flickr badge doesn't work in any of the browsers I've tried:\n\n<html>\n<!-- Start of Flickr Badge -->\n<style type="text/css">\n#flickr_badge_source_txt {padding:0; font: 11px Arial, Helvetica, Sans serif; color:#666666;}\n#flickr_badge_icon {display:block !important; margin:0 !important; border: 1px solid rgb(0, 0, 0) !important;}\n#flickr_icon_td {padding:0 5px 0 0 !important;}\n.flickr_badge_image {text-align:center !important;}\n.flickr_badge_image img {border: 1px solid black !important;}\n#flickr_www {display:block; padding:0 10px 0 10px !important; font: 11px Arial, Helvetica, Sans serif !important; color:#3993ff !important;}\n#flickr_badge_uber_wrapper a:hover,\n#flickr_badge_uber_wrapper a:link,\n#flickr_badge_uber_wrapper a:active,\n#flickr_badge_uber_wrapper a:visited {text-decoration:none !important; background:inherit !important;color:#3993ff;}\n#flickr_badge_wrapper {}\n#flickr_badge_source {padding:0 !important; font: 11px Arial, Helvetica, Sans serif !important; color:#666666 !important;}\n</style>\n<table id="flickr_badge_uber_wrapper" cellpadding="0" cellspacing="10" border="0"><tr><td><a href="http://www.flickr.com" id="flickr_www">www.<strong style="color:#3993ff">flick<span style="color:#ff1c92">r</span></strong>.com</a><table cellpadding="0" cellspacing="10" border="0" id="flickr_badge_wrapper">\n<script type="text/javascript" src="http://www.flickr.com/badge_code_v2.gne?count=5&display=latest&size=t&layout=v&source=user&user=35468148136%40N01"></script>\n</table>\n</td></tr></table>\n<!-- End of Flickr Badge -->\n</html>
//TW Italian Plugin by Mathew Warburton 2.0.1 release\n\nconfig.commands.closeTiddler.text = "Chiudi";\nconfig.commands.closeTiddler.tooltip = "Chiude questo frammento";\nconfig.commands.closeOthers.text = "Chiude altri ";\nconfig.commands.closeOthers.tooltip = "Chiude gli altri frammenti";\nconfig.commands.editTiddler.text = "Modifica";\nconfig.commands.editTiddler.tooltip = "Edita il frammento";\nconfig.commands.saveTiddler.text = "Salva";\nconfig.commands.saveTiddler.tooltip = "Salva le modifiche";\nconfig.commands.cancelTiddler.text = "Annulla";\nconfig.commands.cancelTiddler.tooltip = "Annulla le modifiche";\nconfig.commands.deleteTiddler.text = "Elimina";\nconfig.commands.deleteTiddler.tooltip = "Elimina questo frammento";\nconfig.commands.deleteTiddler.warning = "Sicuro di voler eliminare '%0'?";\nconfig.commands.permalink.text = "Indirizzo";\nconfig.commands.permalink.tooltip = "Indica sulla barra l'indirizzo di questo frammento";\nconfig.commands.references.text = "Collegati";\nconfig.commands.references.tooltip = "Elenca i frammenti che puntano qui";\nconfig.commands.references.popupNone = "Nessun frammento punta qui";\nconfig.commands.jump.text = "Vai a ";\nconfig.commands.jump.tooltip = "Vai ad un altro frammento aperto";\n\nconfig.macros.allTags.noTags = "Non ci sono frammenti categorizzati";\nconfig.macros.allTags.tooltip = "Mostra i frammenti del tipo ";\nconfig.macros.closeAll.label = "Chiudi tutti";\nconfig.macros.closeAll.prompt = "Chiude tutti i frammenti aperti(esclusi quelli in modifica)";\nconfig.macros.list.all.prompt = "Elenca tutti i frammenti in ordine alfabetico";\nconfig.macros.list.missing.prompt = "Elenca frammenti collegati tra loro non ancora definiti";\nconfig.macros.list.orphans.prompt = "Elenca i frammenti non collegati";\n\nconfig.macros.list.shadowed.prompt = "Frammenti nascosti contenenti le impostazioni del programma";\n\nconfig.macros.newJournal.label = "nuovo diario";\nconfig.macros.newJournal.months = ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre","Dicembre"];\nconfig.macros.newJournal.prompt = "Crea un nuovo frammento con data e ora corrente";\nconfig.macros.newTiddler.label = "nuovo frammento";\nconfig.macros.newTiddler.prompt = "Crea un nuovo frammento";\nconfig.macros.permaview.label = "Indirizzo di Pagina";\nconfig.macros.permaview.prompt = "Indica sulla barra l'indirizzo della pagina e dei frammenti aperti";\nconfig.macros.saveChanges.label = "Salva modifiche";\nconfig.macros.saveChanges.prompt = "Salva tutti i frammenti per creare un nuovo TiddlyWiki";\nconfig.macros.search.label = "Cerca:";\nconfig.macros.search.prompt = "Cerca in questo TiddlyWiki";\nconfig.macros.search.successMsg = " Trovati frammenti contenenti ";\nconfig.macros.search.failureMsg = "Nessun frammento contiene: ";\nconfig.macros.timeline.dateFormat = "DD MMM YYYY";\nconfig.macros.tagging.label = "Etichettato:";\nconfig.macros.tagging.labelNotTag = "Categoria:";\nconfig.macros.tagging.tooltip = "Frammenti di Tipo '%0'";\n\nconfig.messages.backupFailed = "Salvataggio file di backup non riuscito";\nconfig.messages.backupSaved = "Backup riuscito";\nconfig.messages.cantSaveError = "Non si possono salvare le modifiche con questo browser. Se puoi usa Firefox";\nconfig.messages.customConfigError = "Errore in customConfig - '%0' ";\nconfig.messages.emptyFailed = "Salvataggio file modello vuoto non riuscito";\nconfig.messages.emptySaved = "Modello vuoto salvato";\nconfig.messages.externalLinkTooltip = "Collegamento a %0";\nconfig.messages.invalidFileError = "Il file originale non sembra di tipo TiddlyWiki: ";\nconfig.messages.macroError = "Errore nella macro <<%0>>";\nconfig.messages.macroErrorDetails = "Errore in esecuzione della macro <<%0>>:\sn%1";\nconfig.messages.missingMacro = "La macro non esiste";\nconfig.messages.mainFailed = "File TiddlyWiki principale non salvato. Le tue modifiche non sono state salvate";\nconfig.messages.mainSaved = "File TiddlyWiki primario salvato ";\nconfig.messages.noTags = "Non ci sono frammenti del tipo ";\nconfig.messages.notFileUrlError = "Devi esportare questo TiddlyWiki prima di poterlo salvare";\nconfig.messages.overwriteWarning = "Il frammento '%0' esiste già. OK per sostituirlo";\nconfig.messages.rssFailed = "Salvataggio RSS feed file non riuscito";\nconfig.messages.rssSaved = "RSS feed salvato come";\nconfig.messages.savedSnapshotError = "Sembra che questo TiddlyWiki sia stato salvato scorrettamente. Per informazioni vai a http://www.tiddlywiki.com/#DownloadSoftware";\nconfig.messages.subtitleUnknown = "( sconosciuto )";\nconfig.messages.undefinedTiddlerToolTip = "Il frammento '%0'non esiste ";\nconfig.messages.shadowedTiddlerToolTip = "Il frammento '%0' non esiste, è un modello predefinito ";\nconfig.messages.unsavedChangesWarning = "ATTENZIONE non sono state ancora salvate le modifiche in TiddlyWiki\sn\snOK per salvare\snANNULLA per annullarle";\nconfig.messages.messageClose.text = "Chiudi";\nconfig.messages.messageClose.tooltip = "Chiudi l'area di messaggio";\n\n\nconfig.messages.dates.months = ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre","Dicembre"];\nconfig.messages.dates.days = ["Domenica", "Lunedì","Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"];\n\nconfig.views.editor.defaultText = "Edita '%0'.";\nconfig.views.editor.tagChooser.popupNone = "Nessuna categoria è definita";\nconfig.views.editor.tagChooser.tagTooltip = "Aggiungi la categoria ";\nconfig.views.editor.tagChooser.text = "Esistenti";\nconfig.views.editor.tagChooser.tooltip = "Seleziona la categoria tra quelle già presenti";\nconfig.views.editor.tagPrompt = "Aggiungi le categorie separandole con uno spazio, [[se il titolo è di più di una parola mettilo tra due parentesi quadre]] o scegli tra quelle ";\n\nconfig.shadowTiddlers.OptionsPanel = "'Queste OpzioniInterfaccia per personalizzare il tuo TiddlyWiky vengono salvate nel browser\sn\snDigita un nome utente per firmare le tue modifiche. Usa un formato di parola Wiki (es PincoPallino)\sn\sn <<option txtUserName>>\sn<<option chkSaveBackups>> SalvaBackups\sn<<option chkAutoSave>> SalvataggioAutomatico\sn<<option chkGenerateAnRssFeed>> GeneraUnArchivioRSS\sn<<option chkRegExpSearch>> RicercaEstesa\sn<<option chkCaseSensitiveSearch>> ConsideraCaratteriInRicerca\sn<<option chkAnimate>> AbilitaAnimazioni\sn\sn Apri OpzioniAvanzate";\n\nconfig.shadowTiddlers.SideBarOptions = "<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel Opzioni 'Modifica le opzioni avanzate di interfaccia del TiddlyWiki'>>";\n\nconfig.shadowTiddlers.SideBarTabs = "<<tabs txtMainTab 'Data' 'Elenca i frammenti cronologicamente' TabTimeline Tutti 'Tutti i frammenti in ordine alfabetico' TabAll 'Categorie' 'Elenca i frammenti per tipo' TabTags 'Altro' 'Altri Elenchi' TabMore>>";\nconfig.shadowTiddlers.TabMore = "<<tabs txtMoreTab 'Mancanti' 'Frammenti non ancora editati' TabMoreMissing 'Orfani' 'Frammenti non collegati tra loro' TabMoreOrphans 'Nascosti' 'Frammenti Nascosti' TabMoreShadowed >>";\n\n\nconfig.shadowTiddlers.OpzioniAvanzate = "<<option chkOpenInNewWindow>> ApriCollegamentiInNuovaFinestra\sn<<option chkSaveEmptyTemplate>> SalvaModelloVuoto\sn<<option chkToggleLinks>> Cliccando su un collegamento ad un frammento già aperto lo chiude\sn^^(evita con Control o altro tasto modificabile)^^ \sn<<option chkHttpReadOnly>> Non rendere editabile dal web\sn<<option chkForceMinorUpdate>> Tratta le modifiche minori e mantieni data ed ora precedenti\sn^^(disattiva con Shift in modifica o con la combinazione Ctrl-Shift-Enter)^^\sn<<option chkConfirmDelete>> Richiedi Conferma prima di eliminare il frammento\sn <<option txtMaxEditRows>>Numero massimo di righe per ciascun frammento: \sn <<option txtBackupFolder>>Percorso della directory di backup: \sn";\n\nconfig.shadowTiddlers.GettingStarted = "Per iniziare ad usare questo documento vuoto, comincia ad editare i seguenti frammenti:\sn* SiteTitle e SiteSubtitle: Il titolo ed il sottotitolo della pagina visibili nella barra del browser\sn* MainMenu: Il menù principale di TW\sn* DefaultTiddlers: Inserisci i collegamenti ai frammenti che desideri compaiono all'apertura di questo TiddlyWiki.\sn Inserisci anche un tuo nome utente che ti permetterà di firmare le tue modifiche: <<option txtUserName>>";\n\n\nconfig.views.wikified.defaultText = "Questo frammento non esiste ancora. Doppio click per crearlo";\nconfig.views.wikified.tag.labelTags = "Categorie : ";\nconfig.views.wikified.tag.openTag = "Apri la categoria '%0'";\nconfig.views.wikified.tag.labelNoTags = "Nessuna categoria.";\nconfig.views.wikified.tag.openAllText = "Apri tutti i tiddler di questa categoria ";\nconfig.views.wikified.tag.openAllTooltip = "Apri tutti ";\nconfig.views.wikified.tag.popupNone = "Non ci sono altri frammenti del tipo '%0'";\nconfig.views.wikified.tag.tooltip = "Mostra frammenti del tipo '%0' ";
Da [[Esquel]] parte [[la Trochita|http://latrochita.org.ar/]], un treno a vapore a scartamento ridotto che collegava Esquel a El Maiten e che ora fa solo due brevi tratti turistici che partono dai due capolinea.\nIl tratto che parte da El Maiten, oltre ad essere più vicino a Bariloche, fa sosta in un museo e forse sarebbe più interessante, ma c'era solo il sabato e io non potevo. \nDopo aver prenotato il posto telefonicamente mi presento in biglietteria (in realtà non hanno nessuna prenotazione, vi consiglio di arrivare per tempo).\nIo ho trovato un posto nella carrozza di seconda classe nº1221, posto 13, esattamente davanti alla stufa. Sì la stufa, le carrozze sono riscaldate da una stufa a legna in mezzo al vagone, su cui, quando il viaggio intero poteva durare anche tre giorni, si cucinava, si scaldava l'acqua per il mate e così via.\nI sedili e le pareti sono di legno verde pastello; i finestrini sono a ghigliottina (mai nome fu più appropriato: i fermi si sbloccano con facilità con gli scossoni del treno e...//ZAC!//, sul cranio!).\nIl viaggio prosegue attraverso la steppa, con le pecore (che non hanno ancora capito che il treno passa con regolarità) che scappano e le mucche che invece guardano passare il treno con la faccia della mucca che guarda passare il treno <<smiley :-)>>\nIl viaggio continua fino al paese (8 case...veramente) di Nahuel Pan, dove si possono comprare oggetti di artigianato Mapuche.\n\nPer quello che mi riguarda il viaggio è stato molto bello e divertente, il treno è bellissimo, con la locomotiva nera e rossa e le carrozze di legno...sembra davvero di tornare indietro nel tempo.\n\nLo consiglio vivamente
"Mein Leipzig lob ich mir!/Es ist ein klein Paris, und bildet seine Leute." (Goethes Faust, der Tragödie, erster Teil, vv. 2171-2172)\nBeh, sostenere che Leipzig (Lipsia) sia una piccola Parigi mi pare francamente un paragone un po' forzato; forse la città più ricca dell'ex DDR, e più precisamente del Land Sachsen (Sassonia), Lipsia non mi è mai sembrata una gran bella città anche se non le mancano i monumenti di rilievo e anche se è stata una delle città più importanti della Germania per quel che riguarda la cultura tra XVIII e XIX secolo, visto che ha ospitato personalità del calibro di Bach, Mendelssohn, Schiller e Goethe, e visto che la sua università gode di grandissima fama. Sono stato due volte a Lipsia tra il novembre del 2000 e l'aprile del 2001 e la cosa che mi colpì maggiormente fu l'enorme ardore edilizio, si costruiva ovunque, e dove non si costruiva ex-novo, si ristrutturava quel che già c'era; mi sembrava anche di non trovarmi nella Germania che conoscevo, all'epoca si respirava ancora una certa aria di DDR, aleggiava nell'aria una certa vena nostalgica legata però al desiderio di unirsi ideologicamente, oltre che geograficamente, ai fratelli occidentali dei quali si invidiava sì il benessere ma coi quali si era, e si è, ovviamente uniti da inscindibili legami di sangue, nonostante il Muro e tutto ciò che aveva accompagnato 40 anni di dittatura filo-sovietica. Per capire meglio Lipsia, e in generale la Germania, soprattutto quella ex-orientale, si dovrebbe fare un salto alla Hauptbahnhof, una delle stazioni ferroviarie più grandi d'Europa, e trasformata recentemente in un vero e proprio centro commerciale in cui convivono le tradizioni sassoni, würstel e birra in primis, con i kebab, e con alcune tra le più raffinate botteghe di abbigliamento e con alcune tra le più luccicanti gioiellerie del globo. La stazione centrale di Lipsia è uno spaccato della Germania attuale, multiculturale eppure per tantissime cose ancorata alla tradizioni, soprattutto ripeto nell'ex DDR, colorata e variopinta anche forse per combattere il grigiore esterno dei mesi invernali, profumata di odori tipicamente tedeschi e altri invece che ci si aspetterebbe di trovare in qualche bazar di Istanbul.\nUna volta usciti all'aria aperta ci aspettano la Thomaskirche e la Nikolaikirche, e poi il Rathaus e il grande spazio della Augustusplatz e dell'isola pedonale centrale; a pochi chilometri dal centro ecco invece il Völkerschlachtdenkmal, il monumento che ricorda la "Battaglia delle Nazioni" combattuta nell'ottobre 1813 dalle truppe francesi di Napoleone contro gli eserciti alleati di Russia, Prussia, Austria e Svezia, la cui vittoria cambiò le sorti dell'intera Europa.\n\nAlcuni link utili:\n* http://www.leipzig.de/\n* http://www.ece.de/de/shopping/center/phl/phl.jsp\n*http://www.leipzig-info.net/Info/Voelkerschlachtdenkmal.html\n* http://www.kartoffelhaus-no-1.de/\n* http://www.auerbachs-keller-leipzig.de/
<<tagCloud formatting plugin systemConfig systemTiddlers stile tag info ComeSpostarsi DoveDormire DoveMangiare DaVisitare ComeArrivare>>
Meglio conosciuto come //Mercatinno//, è il paese del papa (Benedetto XVI)
{{{Monospaced\ntext}}} is supported - edit this tiddler to see the syntax.\n\nYou can\nalso have monospaced blocks (useful for source code):\n\n{{{\nvar\nposTop = findPosY(e);\nvar posBot = posTop + e.offsetHeight;\nvar\nwinTop = findScrollY();\nvar winHeight = findWindowHeight();\nvar\nwinBot = winTop + winHeight;\nif(posTop <\nwinTop)\nreturn(posTop);\nelse if(posBot >\nwinBot)\n{\nif(e.offsetHeight < winHeight)\nreturn(posTop -\n(winHeight -\ne.offsetHeight));\nelse\nreturn(posTop);\n}\nelse\nreturn(winTop);\n}}}\n
In corso...\n\n![[arrivare a Monaco]] - [[dormire a Monaco]] - [[mangiare a Monaco]] - [[visitare Monaco]]
A [[Trevelin]], Chubut.\nAll'inizio del paese, arrivando da [[Esquel]], basta seguire i cartelli con l'immagine qui sotto e arrivate da Nain Maggie.\nE' una sala da tè in cui si può assaggiare il famoso tè gallese (i gallesi hanno colonizzato, a quanto pare, una vasta area della patagonia e sono ancora molto legati alle loro tradizioni) accompagnato da una quantità di dolci tale da mettere in crisi perfino il sottoscritto <<smiley :-)>>\n\nCome scrivevo sul mio moleskine:\n> Da Nain Maggie entro e ordino un tè gallese completo. \n> (//Immaginate ora un tono alla Fantozzi//) Entrano nell'ordine:\n> una brocca di tè enorme, un bricco di latte, zucchero, burro, formaggio, due fette di diversi pani tostati e imburrati,3 tipi di marmellata, 5 (!) fette di torte diverse (con dulce de leche, al cioccolato, alla crema, alle mele e la famosa torta nera gallese)...e uno scons!\n> Dopo cinque tazze di tè (e circa metà brocca) e una "pausa di riflessione" tra la torta nº3 e la nº4, crollo miseramente sullo scons!\n> Pago e mi avvio caracollando verso la fermata dell'autobus per Esquel.\n[img[http://img111.imageshack.us/img111/179/nainmaggie0sx.png]]
/***\n''NestedSlidersPlugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman\nsource: http://www.elsdesign.com/tiddlywiki/#NestedSlidersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nQuickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''\n\nYou can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.\n\nFor more details, please click on a section headline below:\n++++!!!!![Configuration]>\nDebugging messages for 'lazy sliders' deferred rendering:\n<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering\n<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered\n===\n++++!!!!![Usage]>\nWhen installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify\n*default to open\n*cookiename\n*heading level\n*floater\n*rollover\n*custom label/tooltip\n*automatic blockquote\n*deferred rendering\nThe complete syntax, using all options, is:\n//{{{\n++++(cookiename)!!!!!^*[label|tooltip]>...\ncontent goes here\n===\n//}}}\nwhere:\n* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^\nmarks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^\n* {{{(cookiename)}}}^^\nsaves the slider opened/closed state, and restores this state whenever the slider is re-rendered.^^\n* {{{!}}} through {{{!!!!!}}}^^\ndisplays the slider label using a formatted headline (Hn) style instead of a button/link style^^\n* {{{"^"}}} //(without the quotes)//^^\nmakes the slider 'float' on top of other content rather than shifting that content downward^^\n* {{{"*"}}} //(without the quotes)//^^\nautomatically opens/closes slider on "rollover" as well as when clicked^^\n* {{{[label]}}} or {{{[label|tooltip]}}}^^\nuses custom label/tooltip. (defaults are: ">" (more) and "<" (less)^^\n* {{{">"}}} //(without the quotes)//^^\nautomatically adds blockquote formatting to slider content^^\n* {{{"..."}}} //(without the quotes)//^^\ndefers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^\n\n//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//\n===\n++++!!!!![Examples]>\nsimple in-line slider: \n{{{\n+++\n content\n===\n}}}\n+++\n content\n===\n----\nuse a custom label and tooltip: \n{{{\n+++[label|tooltip]\n content\n===\n}}}\n+++[label|tooltip]\n content\n===\n----\ncontent automatically blockquoted: \n{{{\n+++>\n content\n===\n}}}\n+++>\n content\n===\n----\nall options combined //(default open, cookie, heading, floater, rollover, label/tooltip, blockquoted, deferred)//\n{{{\n++++(testcookie)!!!^*[label|tooltip]>...\n content\n===\n}}}\n++++(testcookie)!!!^*[label|tooltip]>...\n content\n===\n----\ncomplex nesting example:\n{{{\n+++^[get info...|click for information]\n put some general information here, plus a floating slider with more specific info:\n +++^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^*[glossary definition]explaining technical terms===\n ===\n===\n}}}\n+++^[get info...|click for information]\n put some general information here, plus a floating slider with more specific info:\n +++^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^*[glossary definition]explaining technical terms===\n ===\n===\n----\nnested floaters\n>menu: <<tiddler NestedSlidersExample>>\n(see [[NestedSlidersExample]] for definition)\n----\n===\n+++!!!!![Installation]>\nimport (or copy/paste) the following tiddlers into your document:\n''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)\n===\n+++!!!!![Revision History]>\n\n++++[2006.01.18 - 1.7.4]\nonly define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.\n===\n\n++++[2006.01.16 - 1.7.3]\nadded adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.\n===\n\n++++[2006.01.16 - 1.7.2]\nadded button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends\n===\n\n++++[2006.01.14 - 1.7.1]\nadded optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.\n===\n\n++++[2006.01.14 - 1.7.0]\nadded optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)\n===\n\n+++[2006.01.03 - 1.6.2]\nWhen using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)\n===\n\n+++[2005.12.15 - 1.6.1]\nadded optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders\nremoved checkbox option for 'global' application of lazy sliders\n===\n\n+++[2005.11.25 - 1.6.0]\nadded optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)\n===\n\n+++[2005.11.21 - 1.5.1]\nrevised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.\n===\n\n+++[2005.11.20 - 1.5.0]\n added (cookiename) syntax for optional tracking and restoring of slider open/close state\n===\n\n+++[2005.11.11 - 1.4.0]\n added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style\n===\n\n+++[2005.11.07 - 1.3.0]\n removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other\n formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines\n===\n\n+++[2005.11.05 - 1.2.1]\n changed name to NestedSlidersPlugin\n more documentation\n===\n\n+++[2005.11.04 - 1.2.0]\n added alternative character-mode syntax {{{(((}}} and {{{)))}}}\n tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax\n===\n\n+++[2005.11.03 - 1.1.1]\n fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used\n code cleanup, added documentation\n===\n\n+++[2005.11.03 - 1.1.0]\n changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}\n changed name to EasySlidersPlugin\n===\n\n+++[2005.11.03 - 1.0.0]\n initial public release\n===\n\n===\n+++!!!!![Credits]>\nThis feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with research, programming and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson\n===\n***/\n// //+++!!!!![Code]\n//{{{\nversion.extensions.nestedSliders = {major: 1, minor: 7, revision: 4, date: new Date(2006,1,18)};\n//}}}\n\n//{{{\n// options for deferred rendering of sliders that are not initially displayed\nif (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;\nif (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;\n\n// default styles for 'floating' class\nsetStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \s\n background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");\n//}}}\n\n//{{{\nconfig.formatters.push( {\n name: "nestedSliders",\n match: "\s\sn?\s\s+{3}",\n terminator: "\s\ss*\s\s={3}\s\sn?",\n lookahead: "\s\sn?\s\s+{3}(\s\s+)?(\s\s([^\s\s)]*\s\s))?(\s\s!*)?(\s\s^)?(\s\s*)?(\s\s[[^\s\s]]*\s\s])?(\s\s>)?(\s\s.\s\s.\s\s.)?\s\ss*",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n {\n // location for rendering button and panel\n var place=w.output;\n\n // default to closed, no cookie\n var show="none"; var title=">"; var tooltip="show"; var cookie="";\n\n // extra "+", default to open\n if (lookaheadMatch[1])\n { show="block"; title="<"; tooltip="hide"; }\n\n // cookie, use saved open/closed state\n if (lookaheadMatch[2]) {\n cookie=lookaheadMatch[2].trim().substr(1,lookaheadMatch[2].length-2);\n cookie="chkSlider"+cookie;\n if (config.options[cookie]==undefined)\n { config.options[cookie] = (show=="block") }\n if (config.options[cookie])\n { show="block"; title="<"; tooltip="hide"; }\n else\n { show="none"; title=">"; tooltip="show"; }\n }\n\n // custom label/tooltip\n if (lookaheadMatch[6]) {\n title = lookaheadMatch[6].trim().substr(1,lookaheadMatch[6].length-2);\n if ((pos=title.indexOf("|")) != -1)\n { tooltip = title.substr(pos+1,title.length); title = title.substr(0,pos); }\n else\n { tooltip += " "+title; }\n }\n\n // create the button\n if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link\n var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;\n var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,null,title);\n btn.onclick=onClickNestedSlider;\n btn.setAttribute("href","javascript:;");\n btn.setAttribute("title",tooltip);\n }\n else\n var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider);\n btn.sliderCookie = cookie; // save the cookiename (if any) in the button object\n\n // "non-click" MouseOver open/close slider\n if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;\n\n // create slider panel\n var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";\n var panel=createTiddlyElement(place,"div",null,panelClass,null);\n panel.style.display = show;\n panel.button = btn; // so the slider panel know which button it belongs to\n btn.sliderPanel=panel;\n\n // render slider (or defer until shown) \n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n if (lookaheadMatch[1]||!lookaheadMatch[8]) {\n // render now if "++++" (init open) or NOT "..." (deferred render)\n w.subWikify(lookaheadMatch[7]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);\n // align slider/floater position with button\n adjustSliderPos(place,btn,panel,panelClass);\n }\n else {\n var src = w.source.substr(w.nextMatch);\n var endpos=findMatchingDelimiter(src,"+++","===");\n panel.setAttribute("raw",src.substr(0,endpos));\n panel.setAttribute("blockquote",lookaheadMatch[7]?"true":"false");\n panel.setAttribute("rendered","false");\n w.nextMatch += endpos+3;\n if (w.source.substr(w.nextMatch,1)=="\sn") w.nextMatch++;\n if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\sn\sn"+panel.getAttribute("raw"));\n }\n }\n }\n }\n)\n\n// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)\nfunction findMatchingDelimiter(src,starttext,endtext) {\n var startpos = 0;\n var endpos = src.indexOf(endtext);\n // check for nested delimiters\n while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {\n // count number of nested 'starts'\n var startcount=0;\n var temp = src.substring(startpos,endpos-1);\n var pos=temp.indexOf(starttext);\n while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }\n // set up to check for additional 'starts' after adjusting endpos\n startpos=endpos+endtext.length;\n // find endpos for corresponding number of matching 'ends'\n while (startcount && endpos!=-1) {\n endpos = src.indexOf(endtext,endpos+endtext.length);\n startcount--;\n }\n }\n return (endpos==-1)?src.length:endpos;\n}\n//}}}\n\n//{{{\nfunction onClickNestedSlider(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theLabel = theTarget.firstChild.data;\n var theSlider = theTarget.sliderPanel\n var isOpen = theSlider.style.display!="none";\n // if using default button labels, toggle labels\n if (theLabel==">") theTarget.firstChild.data = "<";\n else if (theLabel=="<") theTarget.firstChild.data = ">";\n // if using default tooltips, toggle tooltips\n if (theTarget.getAttribute("title")=="show")\n theTarget.setAttribute("title","hide");\n else if (theTarget.getAttribute("title")=="hide")\n theTarget.setAttribute("title","show");\n if (theTarget.getAttribute("title")=="show "+theLabel)\n theTarget.setAttribute("title","hide "+theLabel);\n else if (theTarget.getAttribute("title")=="hide "+theLabel)\n theTarget.setAttribute("title","show "+theLabel);\n // deferred rendering (if needed)\n if (theSlider.getAttribute("rendered")=="false") {\n if (config.options.chkDebugLazySliderRender)\n alert("rendering '"+theLabel+"':\sn\sn"+theSlider.getAttribute("raw"));\n var place=theSlider;\n if (theSlider.getAttribute("blockquote")=="true")\n place=createTiddlyElement(place,"blockquote");\n wikify(theSlider.getAttribute("raw"),place);\n theSlider.setAttribute("rendered","true");\n }\n // show/hide the slider\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n theSlider.style.display = isOpen ? "none" : "block";\n if (this.sliderCookie && this.sliderCookie.length)\n { config.options[this.sliderCookie]=!isOpen; saveOptionCookie(this.sliderCookie); }\n // align slider/floater position with target button\n adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);\n return false;\n}\n\n// hijack animation handler 'stop' handler so overflow is visible after animation has completed\nSlider.prototype.coreStop = Slider.prototype.stop;\nSlider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }\n\n// adjust panel position based on button position\nif (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {\n ///////////////////////////////////////////////////////////////////////////////\n /// EXPERIMENTAL HACK - WORKS IN SOME CASES, NOT IN OTHERS\n ///////////////////////////////////////////////////////////////////////////////\n // "if this panel is floating and the parent is not also a floating panel"...\n if (panelClass=="floatingPanel" && place.className!="floatingPanel") {\n var left=0; var top=btn.offsetHeight;\n if (place.style.position!="relative") { left+=findPosX(btn); top+=findPosY(btn); }\n panel.style.left=left+"px"; panel.style.top=top+"px";\n }\n}\n//}}}\n// //===
To\nmake a tiddler that doesn't have a WikiWord as its name, you can\nenclose the name in [[double square brackets]] - edit this tiddler to\nsee an example. After saving the tiddler you can then click on the link\nto create the new tiddler. NonWikiWordLinks permits tiddlers to be\ncreated with names that are made from character sets that don't have\nupper and lower case.
It's\neasy to create NumberedBulletPoints.\n# Use a single '#' at the start\nof each line\n# and the tiddler will automatically\n# start numbering\nyour list.\n## If you want a sub-list\n## within any bullets\n## add\ntwo '#'s at the start of the lines.\n# When you go back to a single\n'#'\n# the main numbered list will start up\n# where it left\noff.\n\nIt's just as simple to do normal BulletPoints.
'Queste OpzioniInterfaccia per personalizzare il tuo TiddlyWiky vengono salvate nel browser\n\n<<option chkSaveBackups>> SalvaBackups\n<<option chkAutoSave>> SalvataggioAutomatico\n<<option chkGenerateAnRssFeed>> GeneraUnArchivioRSS\n<<option chkRegExpSearch>> RicercaEstesa\n<<option chkCaseSensitiveSearch>> ConsideraCaratteriInRicerca\n<<option chkAnimate>> AbilitaAnimazioni\n\n Apri OpzioniAvanzate
/***\n<<tiddler PasswordTweakDoc>>\n!Code\n***/\n//{{{\nversion.extensions.PasswordTweak = {\n major: 1, minor: 0, revision: 2, date: new Date(2006,3,12),\n type: 'tweak',\n source: 'http://tiddlywiki.bidix.info/#PasswordTweak',\n docs: 'http://tiddlywiki.bidix.info/#PasswordTweakDoc'\n};\n//}}}\n/***\n!!config.macros.option\n***/\n//{{{\nconfig.macros.option.passwordCheckboxLabel = "Save this password on this computer";\nconfig.macros.option.passwordType = "password"; // password | text\n\nconfig.macros.option.onChangeOption = function(e)\n{\n var opt = this.getAttribute("option");\n var elementType,valueField;\n if(opt) {\n switch(opt.substr(0,3)) {\n case "txt":\n elementType = "input";\n valueField = "value";\n break;\n case "pas":\n elementType = "input";\n valueField = "value";\n break;\n case "chk":\n elementType = "input";\n valueField = "checked";\n break;\n }\n config.options[opt] = this[valueField];\n saveOptionCookie(opt);\n var nodes = document.getElementsByTagName(elementType);\n for(var t=0; t<nodes.length; t++) {\n var optNode = nodes[t].getAttribute("option");\n if (opt == optNode) \n nodes[t][valueField] = this[valueField];\n }\n }\n return(true);\n};\n\nconfig.macros.option.handler = function(place,macroName,params)\n{\n var opt = params[0];\n var size = 15;\n if (params[1])\n size = params[1];\n if(config.options[opt] === undefined) {\n return;}\n var c;\n switch(opt.substr(0,3)) {\n case "txt":\n c = document.createElement("input");\n c.onkeyup = this.onChangeOption;\n c.setAttribute ("option",opt);\n c.size = size;\n c.value = config.options[opt];\n place.appendChild(c);\n break;\n case "pas":\n // input password\n c = document.createElement ("input");\n c.setAttribute("type",config.macros.option.passwordType);\n c.onkeyup = this.onChangeOption;\n c.setAttribute("option",opt);\n c.size = size;\n c.value = config.options[opt];\n place.appendChild(c);\n // checkbox link with this password "save this password on this computer"\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option","chk"+opt);\n place.appendChild(c);\n c.checked = config.options["chk"+opt];\n // text savePasswordCheckboxLabel\n place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));\n break;\n case "chk":\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option",opt);\n place.appendChild(c);\n c.checked = config.options[opt];\n break;\n }\n};\n//}}}\n/***\n!! Option cookie stuff\n***/\n//{{{\nwindow.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;\nwindow.loadOptionsCookie = function()\n{\n var cookies = document.cookie.split(";");\n for(var c=0; c<cookies.length; c++) {\n var p = cookies[c].indexOf("=");\n if(p != -1) {\n var name = cookies[c].substr(0,p).trim();\n var value = cookies[c].substr(p+1).trim();\n switch(name.substr(0,3)) {\n case "txt":\n config.options[name] = unescape(value);\n break;\n case "pas":\n config.options[name] = unescape(value);\n break;\n case "chk":\n config.options[name] = value == "true";\n break;\n }\n }\n }\n};\n\nwindow.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;\nwindow.saveOptionCookie = function(name)\n{\n var c = name + "=";\n switch(name.substr(0,3)) {\n case "txt":\n c += escape(config.options[name].toString());\n break;\n case "chk":\n c += config.options[name] ? "true" : "false";\n // is there an option link with this chk ?\n if (config.options[name.substr(3)]) {\n saveOptionCookie(name.substr(3));\n }\n break;\n case "pas":\n if (config.options["chk"+name]) {\n c += escape(config.options[name].toString());\n } else {\n c += "";\n }\n break;\n }\n c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";\n document.cookie = c;\n};\n//}}}\n/***\n!! Initializations\n***/\n//{{{\nconfig.shadowTiddlers.PasswordTweakDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#PasswordTweakDoc]]\sn"; \n\n// define config.options.pasPassword\nif (!config.options.pasPassword) {\n config.options.pasPassword = 'defaultPassword';\n window.saveOptionCookie('pasPassword');\n}\n// since loadCookies is first called befor password definition\n// we need to reload cookies\nwindow.loadOptionsCookie();\n//}}}\n
/***\n''PlayerPlugin for TiddlyWiki version 1.2.x and 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.elsdesign.com/tiddlywiki/#PlayerPlugin \nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\nstatus: ''ALPHA / EXPERIMENTAL''\n\nEmbed a media player in a tiddler. \n\n!!!!!Usage\n<<<\n{{{<<player [type] [URL] [width] [height] [hidecontrols]>>}}}\n\nwhere ''type'' is optional, and is one of the following: ''windows'', ''realone'', ''quicktime'', or ''flash''. If the media type is not specified, the plugin automatically renders Windows, Real, QuickTime or Flash player by matching known file extensions and/or specialized streaming-media transfer protocols (such as RTSP:). For unrecognized media types, the plugin assumes WindowsMedia (the player with the most users... *sigh*)\n<<<\n!!!!!Examples\n<<<\n+++[Windows Media]...\nTimes Square Live Webcam\n{{{<<player http://www.earthcam.com/usa/newyork/timessquare/asx/tsq_stream.asx>>}}}\n<<player http://www.earthcam.com/usa/newyork/timessquare/asx/tsq_stream.asx>>\n===\n+++[RealOne]...\nBBC London: Live and Recorded news\n{{{<<player http://www.bbc.co.uk/london/realmedia/news/tvnews.ram>>}}}\n<<player http://www.bbc.co.uk/london/realmedia/news/tvnews.ram>>\n===\n+++[Quicktime]...\nAmerica Free TV: Classic Comedy\n{{{<<player http://www.americafree.tv/unicast_mov/AmericaFreeTVComedy.mov>>}}}\n<<player http://www.americafree.tv/unicast_mov/AmericaFreeTVComedy.mov>>\n===\n+++[Flash]...\nAsteroids: arcade game\n{{{<<player http://www.80smusiclyrics.com/games/asteroids/asteroids.swf>>}}}\n<<player http://www.80smusiclyrics.com/games/asteroids/asteroids.swf>>\n===\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''PlayerPlugin '' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for macro handling^^\n<<<\n!!!!!Revision History\n<<<\n''2006.01.19 [0.5.0]''\nInitial ALPHA release\n''2005.12.23 [0.0.0]''\nStarted\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.player = {major: 0, minor: 5, revision: 0, date: new Date(2006,1,19)};\n//}}}\n\n//{{{\nconfig.macros.player = {};\nconfig.macros.player.html = {};\nconfig.macros.player.handler= function(place,macroName,params) {\n\n var type="";\n if ((params[0]=="windows")||(params[0]=="realone")||(params[0]=="quicktime")||(params[0]=="flash"))\n type=params.shift;\n\n var url=params[0]; if (!url) url="";\n if (type=="") {\n if ((url.indexOf('mms')!=-1)||(url.indexOf('.asx')!=-1)||(url.indexOf('.wvx')!=-1)||(url.indexOf('.wmv')!=-1))\n type="windows";\n else if ((url.indexOf('rtsp')!=-1)||(url.indexOf('.ram')!=-1)||(url.indexOf('.rpm')!=-1)||(url.indexOf('.rm' )!=-1)||(url.indexOf('.ra' )!=-1))\n type="realone";\n else if ((url.indexOf('.mov')!=-1)||(url.indexOf('.qt' )!=-1))\n type="quicktime";\n else if ((url.indexOf('.swf')!=-1)||(url.indexOf('.flv')!=-1))\n type="flash";\n }\n var width=params[1]; if (!width) width=400;\n var height=params[2]; if (!height) height=300;\n var hide=(params[3]=='hidecontrols')?"0":"1"; \n\n if (type=="") type="windows"; //default for most users :-(\n switch (type) {\n case "windows":\n var html=config.macros.player.html.win; break;\n case "realone":\n var html=config.macros.player.html.real; break;\n case "quicktime":\n var html=config.macros.player.html.quicktime; break;\n case "flash":\n var html=config.macros.player.html.flash; break;\n }\n html=html.replace(/%w%/mg,width);\n html=html.replace(/%h%/mg,height);\n html=html.replace(/%u%/mg,url);\n html=html.replace(/%s%/mg,hide);\n createTiddlyElement(place,"span").innerHTML=html;\n}\n//}}}\n\n//{{{\n// Windows Media Player\n// v7.1 ID: classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6\n// v9 ID: classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95\nconfig.macros.player.html.win=' \s\n <object id="player" width="%w%" height="%h%" \s\n classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" \s\n codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" \s\n align="baseline" border="0" \s\n standby="Loading Microsoft Windows Media Player components..." \s\n type="application/x-oleobject"> \s\n <param name="FileName" value="%u%"> <param name="ShowControls" value="%s%"> \s\n <param name="ShowPositionControls" value="1"> <param name="ShowAudioControls" value="1"> \s\n <param name="ShowTracker" value="1"> <param name="ShowDisplay" value="0"> \s\n <param name="ShowStatusBar" value="0"> <param name="AutoSize" value="1"> \s\n <param name="ShowGotoBar" value="0"> <param name="ShowCaptioning" value="0"> \s\n <param name="AutoStart" value="1"> <param name="AnimationAtStart" value="1"> \s\n <param name="TransparentAtStart" value="0"> <param name="AllowScan" value="1"> \s\n <param name="EnableContextMenu" value="1"> <param name="ClickToPlay" value="1"> \s\n <param name="InvokeURLs" value="1"> <param name="DefaultFrame" value="datawindow"> \s\n <embed src="%u%" \s\n align="baseline" border="0" width="%w%" height="%h%" \s\n type="application/x-mplayer2" \s\n pluginspage="http://www.microsoft.com/windows/windowsmedia/download/default.asp" \s\n name="player" showcontrols="%s%" showpositioncontrols="1" \s\n showaudiocontrols="1" showtracker="1" showdisplay="0" \s\n showstatusbar="0" autosize="1" showgotobar="0" showcaptioning="0" \s\n autostart="1" autorewind="0" animationatstart="1" transparentatstart="0" \s\n allowscan="1" enablecontextmenu="1" clicktoplay="0" invokeurls="1" \s\n defaultframe="datawindow"> \s\n </embed> \s\n </object>';\n//}}}\n\n//{{{\n// RealNetworks' RealOne Player\nconfig.macros.player.html.real=' \s\n <table><tr><td> \s\n <object id="player" width="%w%" height="%h%" \s\n CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> \s\n <PARAM NAME="CONSOLE" VALUE="player"> \s\n <PARAM NAME="CONTROLS" VALUE="ImageWindow"> \s\n <PARAM NAME="AUTOSTART" Value="false"> \s\n <PARAM NAME="MAINTAINASPECT" Value="false"> \s\n <PARAM NAME="NOLOGO" Value="true"> \s\n <PARAM name="BACKGROUNDCOLOR" VALUE="#333333"> \s\n <PARAM NAME="SRC" VALUE="%u%"> \s\n <EMBED width="%w%" height="%h%" controls="ImageWindow" type="audio/x-pn-realaudio-plugin" \s\n name="player" \s\n src="%u%" \s\n console=player \s\n maintainaspect=false \s\n nologo=true \s\n backgroundcolor=#333333 \s\n autostart=false> \s\n </OBJECT> \s\n </td></tr><tr><td> \s\n <object id="controls" width="%w%" height="60" \s\n CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> \s\n <PARAM NAME="CONSOLE" VALUE="player"> \s\n <PARAM NAME="CONTROLS" VALUE="All"> \s\n <PARAM NAME="NOJAVA" Value="true"> \s\n <PARAM NAME="MAINTAINASPECT" Value="false"> \s\n <PARAM NAME="NOLOGO" Value="true"> \s\n <PARAM name="BACKGROUNDCOLOR" VALUE="#333333"> \s\n <PARAM NAME="SRC" VALUE="%u%"> \s\n <EMBED WIDTH=%w% HEIGHT=60 NOJAVA=true type="audio/x-pn-realaudio-plugin" \s\n controls="All" \s\n name="controls" \s\n src="%u%" \s\n console=player \s\n maintainaspect=false \s\n nologo=true \s\n backgroundcolor=#333333> \s\n </OBJECT> \s\n </td></tr></table>';\n//}}}\n\n//{{{\n// QuickTime Player\nconfig.macros.player.html.quicktime=' \s\n <OBJECT ID="player" WIDTH="%w%" HEIGHT="%h%" \s\n CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" \s\n CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab"> \s\n <PARAM name="SRC" VALUE="%u%"> \s\n <PARAM name="AUTOPLAY" VALUE="true"> \s\n <PARAM name="CONTROLLER" VALUE="true"> \s\n <PARAM name="BGCOLOR" VALUE="#333333"> \s\n <PARAM name="SCALE" VALUE="tofit"> \s\n <PARAM name="SAVEEMBEDTAGS" VALUE="true"> \s\n <EMBED name="player" WIDTH="%w%" HEIGHT="%h%" \s\n SRC="%u%" \s\n AUTOPLAY="true" \s\n SCALE="tofit" \s\n CONTROLLER="true" \s\n BGCOLOR="#333333" \s\n EnableJavaSript="true" \s\n PLUGINSPAGE="http://www.apple.com/quicktime/download/"> \s\n </EMBED> \s\n </OBJECT>';\n//}}}\n\n//{{{\n// Flash Player\nconfig.macros.player.html.flash='\s\n <object id="player" width="%w%" height="%h%" \s\n classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" \s\n codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"> \s\n <param name="movie" value="%u%"> \s\n <param name="quality" value="high"> \s\n <param name="SCALE" value="exactfit"> \s\n <param name="bgcolor" value="333333"> \s\n <embed src="%u%" \s\n height="%h%" width="%w%" quality="high" \s\n pluginspage="http://www.macromedia.com/go/getflashplayer" \s\n type="application/x-shockwave-flash" scale="exactfit"> \s\n </embed> \s\n </object>';\n//}}}\n
Format\nblocks of CSS definitions as:\n{{{\n/*{{{*/\ndiv {color:\n#ff0000;}\n/*}}}*/\n}}}\nIt will be displayed as:\n/*{{{*/\ndiv {color:\n#ff0000;}\n/*}}}*/
You\ncan now link to [[external sites|http://www.osmosoft.com]] or\n[[ordinary tiddlers|TiddlyWiki]] with ordinary words, without the\nmessiness of the full URL appearing. Edit this tiddler to see\nhow.\n\nYou can also LinkToFolders.
/***\n''QuoteOfTheDayPlugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.elsdesign.com/tiddlywiki/#QuoteOfTheDayPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nDisplay a randomly selected "quote of the day"\n\n!!!!!Usage\n<<<\n{{{<<QOTD //tiddlername//>>}}}\nPut your quotations into a tiddler (called //tiddlername//). Separate each quote by a horizontal rule (use "----" on a line by itself). Each time the macro is rendered it will display a different quotation, selected at random from the specified tiddler.\n<<<\n!!!!!Example\n<<<\n{{{<<QOTD Quotations>>}}}\n<<QOTD Quotations>>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''QuoteOfTheDayPlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for QuoteOfTheDay handling^^\n<<<\n!!!!!Revision History\n<<<\n''2005.10.21 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\nBased on a suggestion by M.Russula\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.QOTD = {major: 1, minor: 0, revision: 0, date: new Date(2005,10,21)};\nconfig.macros.QOTD = {};\nconfig.macros.QOTD.handler= function(place,macroName,params) {\n var txt=store.getTiddlerText(params[0]); if (!txt) return;\n var quotes=txt.split("\sn----\sn");\n // then, get a random index number between 0 and N-1 and wikify that text\n wikify(quotes[Math.floor(Math.random()*quotes.length)],place);\n}\n//}}}
//"La città murata sulla Romantische Straße, nella quale c’è un negozio di Natale aperto tutto l’anno”//, questo è ciò che troverete su ogni pubblicazione che parli di Rothenburg. Ma, per fortuna, questa cittadina di circa 13 mila abitanti è molto più di questa breve e superficiale semplificazione. Al confine tra Bayern e ~Baden-Württemberg, con un bagaglio storico che non ha paura di paragoni, sorge su un’altura nella valle del Tauber, circondata da vigneti, da campi dedicati alla coltivazione di un tubero di cui non è ancora stata trovata traccia al di fuori di quella zona, e da paesaggi quasi ovunque bucolici.\nSi entra in città da una delle quattro porte medievali ottimamente conservate, così come la totalità della cinta muraria, e subito si ha la sensazione di tornare indietro di 7-8 secoli, ai tempi del mitico borgomastro Heinrich Toppler, se non fosse per le orde di Giapponesi che quotidianamente invadono il centro storico (da una recente statistica realizzata nel Paese del Sol Levante è emerso che Rothenburg è tra le prime 5 località tedesche più conosciute dai Giapponesi) e che fotografano qualsiasi cosa; per la cronaca, ho visto con i miei occhi una signora con gli occhi a mandorla fotografare alcuni addetti del Comune che stavano lucidando una fontana per abbellirla poi con gli addobbi natalizi! Comunque sia, è meraviglioso perdersi nell’intricato reticolo di viuzze che si dipartono da Marktplatz, scoprire angoli di quiete inaspettata all’ombra dei campanili delle chiese cittadine o delle torri che interrompono il fluire della cinta muraria, passeggiare lungo l’animata e centralissima Herrngasse, fiancheggiata da alcune case a graticcio e arrivare, magari, fino al suo limite esterno, ovvero sia il soleggiato Burggarten, una vera e propria terrazza sulla città e sulla valletta sottostante. Durante la visita vi consiglio di non perdere l’occasione per degustare uno dei vini bianchi prodotti nella regione, magari nei pressi del Plönlein lungo la Schmiedgasse; Franken è infatti una piccola isola vinicola nell’oceano birraio costituito dal Freistaat Bayern; lasciate invece perdere le Schneeballen, sono una specialità locale, ma sono quasi sempre prodotte industrialmente e non quotidianamente dai mastri dolciari di una volta.\n\n![[arrivare a Rothenburg]] - [[dormire a Rothenburg]] - [[mangiare a Rothenburg]] - [[visitare Rothenburg]]\n
In questa pagina troverete diverse informazioni sui posti che abbiamo visitato.\n\nCi saranno consigli su cosa vedere e cosa evitare, dove [[mangiare|DoveMangiare]] e dove [[dormire|DoveDormire]], notizie e curiosità...\nGli stati che abbiamo visitato li trovate qui a lato. \n\nsiamo solo all'inizio...abbiamo solo un paio di località, per vedere se il sistema funziona...a breve aggiungeremo diversi altri articoli.\ntornate a trovarci!\n\nPer contattarci scrivete a: @@inViaggio[dot]guide[at]gmail[dot]com@@\n\n~~DISCLAIMER: tutti gli articoli riportano considerazioni personali dell'autore. Il fatto che si citi un locale invece di un altro è dato solamente dal fatto che è stato visitato dall'autore e che questi, quella volta, si sia trovato bene.\nNon si tratta di pubblicità e non rispondiamo del fatto che altri non si trovino bene come l'autore.
San Carlos de Bariloche (chiamata solitamente solo Bariloche) è una città del nord della Patagonia, nella provincia del Rio Negro.\nHa circa 100.000 abitanti, di cui meno della metà vive nella città propriamente detta; il resto abita in vari quartieri che fanno perte della città sebbene ne siano staccati fisicamente.\nBariloche sorge sulla riva meridionale del lago Nahuel Huapi e alle pendici delle Ande.\nFondata da emigranti tedeschi e svizzeri, porta ancora le tracce della loro influenza. Infatti le costruzioni pubbliche (municipio, stazione, intendenza del Parco,...) hanno uno stile //alpino//.\n\n![[arrivare a Bariloche]] - [[dormire a Bariloche]] - [[mangiare a Bariloche]] - [[visitare Bariloche]]
/***\n''SearchOptionsPlugin for TiddlyWiki version 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.elsdesign.com/tiddlywiki/#SearchOptionsPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nThe TiddlyWiki search function normally looks in both tiddler titles and tiddler body content ('text'). However, narrowing the search so that it examines only titles or only text, or expanding the search to include text contained in tiddler tags can be very helpful, especially when searching on common words or phrases. In addition, it is often useful for the search results to show tiddlers with matching titles before tiddlers that contain matching text or tags.\n\n!!!!!Usage\n<<<\nThis plugin adds checkboxes (see below and in AdvancedOptions) to let you selectively configure the TiddlyWiki search function to just examine any combination of tiddler titles, text, or tags. It also provides an option to switch the search results order between 'titles mixed in' (default) and 'titles shown first', as well as an option display the search results as a list of links (in an auto-generated "SearchResults" tiddler), rather than actually displaying all matching tiddlers. You can also enable/disable the "incremental search" (key-by-key searching), so that a search is only initiated when you press the ENTER key or click on the "search:" prompt text.\n<<<\n!!!!!Configuration\n<<<\nIn additional to the checkboxes in AdvancedOptions, a self-contained control panel is included here for your convenience:\n<<option chkSearchTitles>> Search tiddler titles\n<<option chkSearchText>> Search tiddler text\n<<option chkSearchTags>> Search in tiddler tags\n<<option chkSearchTitlesFirst>> Show title matches first\n<<option chkSearchList>> Show list of matching tiddlers\n<<option chkSearchIncremental>> Incremental searching\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''SearchOptionsPlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for SearchOptionsPlugin handling^^\n\nWhen installed, this plugin automatically adds checkboxes in the AdvancedOptions shadow tiddler so you can enable/disable the extended search behavior. However, if you have customized your AdvancedOptions, you will need to manually add {{{<<option chkSearchTitles>>}}}, {{{<<option chkSearchText>>}}} and {{{<<option chkSearchTitlesFirst>>}}} (with suitable prompt text) to your customized tiddler.\n<<<\n!!!!!Revision History\n<<<\n''2006.01.20 [2.1.7]''\nfixed setting of config.macros.search.reportTitle so that Tweaks can override it.\n''2006.01.19 [2.1.6]''\nimproved SearchResults formatting, added a "search again" form to the report (based on a suggestion from MorrisGray)\ndefine results report title using config.macros.search.reportTitle instead of hard-coding the tiddler title\n''2006.01.18 [2.1.5]''\nCreated separate functions for reportSearchResults(text,matches) and discardSearchResults(), so that other developers can create alternative report generators.\n''2006.01.17 [2.1.4]''\nUse regExp.search() instead of regExp.test() to scan for matches. Correctd the problem where only half the matching tiddlers (the odd-numbered ones) were being reported.\n''2006.01.15 [2.1.3]''\nAdded information (date/time, username, search options used) to SearchResults output\n''2006.01.10 [2.1.2]''\nuse displayTiddlers() to render matched tiddlers. This lets you display multiple matching tiddlers, even if SinglePageModePlugin is enabled.\n''2006.01.08 [2.1.1]''\ncorrected invalid variable reference, "txt.value" to "text" in story.search()\n''2006.01.08 [2.1.0]''\nre-write to match new store.search(), store.search.handler() and story.search() functions.\n''2005.12.30 [2.0.0]''\nUpgraded to TW2.0\nwhen rendering SearchResults tiddler, closeTiddler() first to ensure display is refreshed.\n''2005.12.26 [1.4.0]''\nadded option to search for matching text in tiddler tags\n''2005.12.21 [1.3.7]''\nuse \s\s to 'escape' single quotes in tiddler titles when generating "Open all matching tiddlers" link. Also, added access key: "O", to trigger "open all" link.\nBased on a suggestion by UdoBorkowski.\n''2005.12.18 [1.3.6]''\ncall displayMessage() AFTER showing matching tiddlers so message is not cleared too soon\n''2005.12.17 [1.3.5]''\nif no matches found, just display message and delete any existing SearchResults tiddler.\n''2005.12.17 [1.3.4]''\nuse """{{{""" and """}}}""" to 'escape' display text in SearchResults tiddler to ensure that formatting contained in search string is not rendered \nBased on a suggestion by UdoBorkowski.\n''2005.12.14 [1.3.3]''\ntag SearchResults tiddler with 'excludeSearch' so it won't list itself in subsequent searches\nBased on a suggestion by UdoBorkowski.\n''2005.12.14 [1.3.2]''\nadded "open all matching tiddlers..." link to search results output.\nBased on a suggestion by UdoBorkowski.\n''2005.12.10 [1.3.1]''\nadded "discard search results" link to end of search list tiddler output for quick self-removal of 'SearchResults' tiddler.\n''2005.12.01 [1.3.0]''\nadded chkSearchIncremental to enable/disable 'incremental' searching (i.e., search after each keystroke) (default is ENABLED).\nadded handling for Enter key so it can be used to start a search.\nBased on a suggestion by LyallPearce\n''2005.11.25 [1.2.1]''\nrenamed from SearchTitleOrTextPlugin to SearchOptionsPlugin\n''2005.11.25 [1.2.0]''\nadded chkSearchList option\nBased on a suggestion by RodneyGomes\n''2005.10.19 [1.1.0]''\nadded chkSearchTitlesFirst option.\nBased on a suggestion by ChristianHauck\n''2005.10.18 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\nBased on a suggestion by LyallPearce.\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.SearchTitleOrText = {major: 2, minor: 1, revision: 6, date: new Date(2006,1,19)};\n//}}}\n\n//{{{\nif (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=true;\nif (config.options.chkSearchText==undefined) config.options.chkSearchText=true;\nif (config.options.chkSearchTags==undefined) config.options.chkSearchTags=true;\nif (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=false;\nif (config.options.chkSearchList==undefined) config.options.chkSearchList=false;\nif (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=true;\n\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchTitles>> Search in tiddler titles";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchText>> Search in tiddler text";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchTags>> Search in tiddler tags";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchTitlesFirst>> Search results show title matches first";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchList>> Search results show list of matching tiddlers";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchIncremental>> Incremental searching";\n//}}}\n\n//{{{\nif (config.macros.search.reportTitle==undefined)\n config.macros.search.reportTitle="SearchResults";\n//}}}\n\n//{{{\nconfig.macros.search.handler = function(place,macroName,params)\n{\n var lastSearchText = "";\n var searchTimeout = null;\n var doSearch = function(txt)\n {\n story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);\n lastSearchText = txt.value;\n };\n var clickHandler = function(e)\n {\n doSearch(this.nextSibling);\n return false;\n };\n var keyHandler = function(e)\n {\n if (!e) var e = window.event;\n switch(e.keyCode)\n {\n case 13: // ELS: handle enter key\n doSearch(this);\n break;\n case 27:\n this.value = "";\n clearMessage();\n break;\n }\n if (config.options.chkSearchIncremental)\n if((this.value.length > 2) && (this.value != lastSearchText))\n {\n if(searchTimeout)\n clearTimeout(searchTimeout);\n var txt = this;\n searchTimeout = setTimeout(function() {doSearch(txt);},500);\n }\n };\n var focusHandler = function(e)\n {\n this.select();\n };\n var btn = createTiddlyButton(place,this.label,this.prompt,clickHandler);\n var txt = createTiddlyElement(place,"input",null,null,null);\n if(params[0])\n txt.value = params[0];\n txt.onkeyup = keyHandler;\n txt.onfocus = focusHandler;\n txt.setAttribute("size",this.sizeTextbox);\n txt.setAttribute("accessKey",this.accessKey);\n txt.setAttribute("autocomplete","off");\n if(config.browser.isSafari)\n {\n txt.setAttribute("type","search");\n txt.setAttribute("results","5");\n }\n else\n txt.setAttribute("type","text");\n}\n//}}}\n\n//{{{\nStory.prototype.search = function(text,useCaseSensitive,useRegExp)\n{\n highlightHack = new RegExp(useRegExp ? text.escapeRegExp() : text,useCaseSensitive ? "mg" : "img");\n var matches = store.search(highlightHack,"title","excludeSearch");\n var q = useRegExp ? "/" : "'";\n clearMessage();\n if (!matches.length) {\n if (config.options.chkSearchList) discardSearchResults();\n displayMessage(config.macros.search.failureMsg.format([q+text+q]));\n } else {\n if (config.options.chkSearchList) \n reportSearchResults(text,matches);\n else {\n var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);\n this.closeAllTiddlers(); story.displayTiddlers(null,titles);\n displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));\n }\n }\n highlightHack = null;\n}\n//}}}\n\n//{{{\nTiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)\n{\n var candidates = this.reverseLookup("tags",excludeTag,false,sortField);\n\n // scan for matching titles\n var title_results = [];\n if (config.options.chkSearchTitles)\n for(var t=0; t<candidates.length; t++)\n if(candidates[t].title.search(searchRegExp)!=-1)\n title_results.push(candidates[t]);\n\n // scan for matching text\n var text_results = [];\n if (config.options.chkSearchText)\n for(var t=0; t<candidates.length; t++)\n if(candidates[t].text.search(searchRegExp)!=-1)\n text_results.push(candidates[t]);\n\n // scan for matching tags\n var tag_results = [];\n if (config.options.chkSearchTags)\n for(var t=0; t<candidates.length; t++)\n if(candidates[t].tags.join(" ").search(searchRegExp)!=-1)\n tag_results.push(candidates[t]);\n\n // merge the results, eliminating redundant matches\n var results = [];\n for(var t=0; t<title_results.length; t++) results.pushUnique(title_results[t]);\n for(var t=0; t<text_results.length; t++) results.pushUnique(text_results[t]);\n for(var t=0; t<tag_results.length; t++) results.pushUnique(tag_results[t]);\n\n // if not 'titles first', re-sort results to so titles, text and tag matches are mixed together\n if(!sortField) sortField = "title";\n var bySortField=function (a,b) {if(a[sortField] == b[sortField]) return(0); else return (a[sortField] < b[sortField]) ? -1 : +1; }\n if (!config.options.chkSearchTitlesFirst) results.sort(bySortField);\n return results;\n}\n//}}}\n\n// // ''REPORT GENERATOR''\n//{{{\nif (!window.reportSearchResults) window.reportSearchResults=function(text,matches)\n{\n var title=config.macros.search.reportTitle\n var q = config.options.chkRegExpSearch ? "/" : "'";\n var body="";\n\n // summary: nn tiddlers found matching '...', options used\n body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\sn";\n body+="^^//searched in:// ";\n body+=(config.options.chkSearchTitles?"''titles'' ":"");\n body+=(config.options.chkSearchText?"''text'' ":"");\n body+=(config.options.chkSearchTags?"''tags'' ":"");\n if (config.options.chkCaseSensitiveSearch||config.options.chkRegExpSearch) {\n body+=" //with options:// ";\n body+=(config.options.chkCaseSensitiveSearch?"''case sensitive'' ":"");\n body+=(config.options.chkRegExpSearch?"''text patterns'' ":"");\n }\n body+="^^";\n\n // numbered list of links to matching tiddlers\n body+="\sn<<<";\n for(var t=0;t<matches.length;t++) body+="\sn# [["+matches[t].title+"]]";\n body+="\sn<<<\sn";\n\n // open all matches button\n body+="<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n body+="onclick=\s"story.displayTiddlers(null,["\n for(var t=0;t<matches.length;t++)\n body+="'"+matches[t].title.replace(/\s'/mg,"\s\s'")+"'"+((t<matches.length-1)?", ":"");\n body+="],1);\s" ";\n body+="accesskey=\s"O\s" ";\n body+="value=\s"open all matching tiddlers\s"></html> ";\n\n // discard search results button\n body+="<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n body+="onclick=\s"story.closeTiddler('"+title+"'); store.deleteTiddler('"+title+"');\s" ";\n body+="value=\s"discard "+title+"\s"></html>";\n\n // search again\n body+="\sn\sn----\sn";\n body+="<<search \s""+text+"\s">> ";\n body+="<<option chkSearchTitles>>titles ";\n body+="<<option chkSearchText>>text ";\n body+="<<option chkSearchTags>>tags";\n body+="<<option chkCaseSensitiveSearch>>case-sensitive ";\n body+="<<option chkRegExpSearch>>text patterns";\n\n // create/update the tiddler\n var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();\n tiddler.set(title,body,config.options.txtUserName,(new Date()),"excludeLists excludeSearch");\n store.addTiddler(tiddler); story.closeTiddler(title);\n\n // use alternate "search again" label in <<search>> macro\n var oldprompt=config.macros.search.label;\n config.macros.search.label="search again";\n\n // render tiddler\n story.displayTiddler(null,title,1); // force refresh\n\n // restore standard search label\n config.macros.search.label=oldprompt;\n\n}\n\nif (!window.discardSearchResults) window.discardSearchResults=function()\n{\n // remove the tiddler\n story.closeTiddler(config.macros.search.reportTitle);\n store.deleteTiddler(config.macros.search.reportTitle);\n}\n//}}}\n\n\n
+++!!![Area Autori]\nautore:<<option txtUserName>>\n<<newTiddler>>\n<<newJournal 'DD MMM YYYY'>>\n[[lista|TableOfContents]] - [[aiuto|AiutoVeloce]] - [[*|http://inviaggio.altervista.org/index.htm]]\nuser:<<option txtUploadUserName>>\npswd:<<option pasUploadPassword>>\n!<<upload http://inviaggio.altervista.org/store.php index.htm>>\n!<<saveChanges>>\n===\n<<search>><<closeAll>><<permaview>>\n<<slider chkSliderOptionsPanel OptionsPanel Opzioni 'Modifica le opzioni avanzate di interfaccia del TiddlyWiki'>>
@@color:#000099;''//una guida informale//''@@
@@color:#ffff00;//~InViaggio//@@
http://inviaggio.altervista.org
// //''Name:'' InsertSmiley\n// //''Version:'' <<getversion smiley>> (<<getversiondate smiley "DD MMM YYYY">>)\n// //''Author:'' AlanHecht\n// //''Type:'' [[Macro|Macros]]\n\n// //''Description:'' Inserts a small smiley graphic at the location of the macro and does not require any external graphics. The method used should work on most current browser platforms.\n\n// //''Syntax:'' << {{{smiley ;-)}}}>>\n// //Examples: <<smiley>> <<smiley :-(>> <<smiley ;-)>> <<smiley :-|>> <<smiley :-D>>\n\n// //''Directions:'' <<tiddler MacroDirections>>\n\n// //''Notes:'' A regular smiley <<smiley>> will be displayed if no smiley string is provided. Most smileys will work with or without the "nose" -- e.g. {{{;-)}}} is the same as {{{;)}}}\n\n// //''Revision History:''\n// // v0.1.0 (20 July 2005): initial release\n// // v0.1.1 (20 July 2005): << {{{smiley}}}>> with no parameter displays a standard smiley\n\n// //''Code section:''\nversion.extensions.smiley = {major: 0, minor: 1, revision: 1, date: new Date("Jul 20, 2005")};\nconfig.macros.smiley = {}\nconfig.macros.smiley.handler = function(place,macroName,params)\n{\n var palette = ["transparent","#000000","#1a1507","#352e18","#464646","#666666","#a3141e","#b06b63","#cc9900","#dd9030","#dddddd","#e89d00","#edc32a","#f3cb3c","#fdf201","#fdf526","#ff3149","#ffac00","#ffbf06","#ffc846","#ffcc66","#ffd758","#ffdd01","#ffea7b","#ffed55","#ffffff"];\n var data = params;\n var imageMap = null;\n if(!data[0] || data[0] == ":-)" || data[0] == ":)")\n imageMap = "aaaaabbbbbaaaaaaaabdtyyvtdbaaaaabnyxxxxxujbaaabmyyffyffuujbaadyyyeeyeetttdabppppddyddpmmlbbwoooooooowsrlbbwwpooooowwmrlbbwwboooowwwbllbbwwwboooowbrllbacwwwbbbbbrllcaablswwwwsrrlibaaablsssrrllibaaaaabcrrlllcbaaaaaaaabbbbbaaaaa";\n else if(data[0] == ":-(" || data[0] == ":(")\n imageMap = "aaaaabbbbbaaaaaaaabdtyyvtdbaaaaabnyxxxxxujbaaabmyyyyyyyuujbaadyyyeeyeetttdabppppddyddpmmlbbwoooooooowsrlbbwwpooooowwmrlbbwwoooooowwrllbbwwwwbbbbbsrllbacwwbwwwwsbllcaablswwwwsrrlibaaablsssrrllibaaaaabcrrlllcbaaaaaaaabbbbbaaaaa";\n else if(data[0] == ";-)" || data[0] == ";)")\n imageMap = "aaaaabbbbbaaaaaaaabdtyyvtdbaaaaabnyxxxxxujbaaabmyyxxxxxuujbaadyyyxxxeetttdabppphddyddpmmlbbwoooooooowsrlbbwwpooooowwmrlbbwwboooowwwbllbbwwwboooowbrllbacwwwbbbbbrllcaablswwwwsrrlibaaablsssrrllibaaaaabcrrlllcbaaaaaaaabbbbbaaaaa";\n else if(data[0] == ":-|" || data[0] == ":|")\n imageMap = "aaaaabbbbbaaaaaaaabdtyyvtdbaaaaabnyxxxxxujbaaabmyyffyffuujbaadyyyeeyeetttdabppppddyddpmmlbbwoooooooowsrlbbwwpooooowwmrlbbwwoooooowwrllbbwwwwbbbbbsrllbacwwwwwwwsrllcaablswwwwsrrlibaaablsssrrllibaaaaabcrrlllcbaaaaaaaabbbbbaaaaa";\n else if(data[0] == ":-D" || data[0] == ":D")\n imageMap = "aaaaabbbbbaaaaaaaabdtyyvtdbaaaaabnyxxxxxujbaaabmyyeeyeeuujbaadyyyeeyeetttdabppppyyyyypmmlbbwbbbbbbbbbbblbbwbkzzzzzzzkbwbbwbfzzzzzzzfbwbbwbkzzzzzzzkbwbacwbkzzzzzkblcaablsbkzzzkblibaaablsbbbbblibaaaaabcrrlllcbaaaaaaaabbbbbaaaaa";\n else\n createTiddlyElement(place,"span",null,"errorNoSuchMacro","unknown smiley");\n if(imageMap)\n {\n var box = createTiddlyElement(place,"span",null,"smiley",String.fromCharCode(160));\n box.style.position = "relative";\n box.style.width = "15px";\n box.style.height = "15px";\n box.style.marginLeft = "1px";\n box.style.marginRight = "1px";\n box.style.paddingRight = "12px";\n box.style.verticalAlign = "top";\n\n //now divide into 15x15 grid and create each pixel\n // rows\n for(r=0; r<15; r++)\n {\n // columns\n for(c=0; c<15; c++)\n {\n //create each pixel with the correct background\n var pix = document.createElement("img");\n pix.className = "smileyPixel";\n pix.style.position = "absolute";\n pix.border = 0;\n pix.style.top = r + "px";\n pix.style.left = c + "px";\n pix.style.width = "1px";\n pix.style.height = "1px";\n pix.style.backgroundColor = palette[imageMap.charCodeAt((r*15)+c)-97];\n pix.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";\n box.appendChild(pix);\n }\n }\n }\n}\n
.tagcloud span {\n color: #6699cc;\n height: 1.8em;\n margin: 3px !important;\n}\n.tagcloud1 {\n color: #6699cc;\n font-size: 0.8em;\n}\n.tagcloud2 {\n color: #6699cc;\n font-size: 1.2em;\n}\n.tagcloud3 {\n color: #6699cc;\n font-size: 1.6em;\n}\n.tagcloud4 {\n color: #6699cc;\n font-size: 2.0em;\n}\n.tagcloud5 {\n color: #6699cc;\n font-size: 2.4em;\n font-weight: bold;\n}\ndiv[tags~="todo"].viewer {\n background-color: #ffffc8;\n}\nh1, h2, h3, h4, h5, h6 {\n background-color: #8ba3ff;\n color: #fff;\n text-align: center;\n}\n#popup {\n background-color: #4275a8;\n color: #fff;\n border-right: 2px solid #bcbcbc;\n border-bottom: 2px solid #bcbcbc;\n}\n#popup a {\n color: #eee;\n}\n#popup a:hover {\n background-color: #6699cc;\n color: #fff;\n}\n.toolbar a {\n color: #4275a8;\n padding-left: 2px;\n}\n.toolbar a:active {\n color: #ffffff;\n background-color: #4275a8;\n}\n.toolbar a:hover {\n color: #ffffff;\n background-color: #6699cc;\n}\ntoolbar {\n position: relative;\n top: -5px;\n left: -1px;\n border: 0px;\n background-color: transparent;\n color: #000;\n height: 16px;\n padding-top: 2px;\n margin-left: 35px;\n margin-bottom: 10px;\n}\n.toolbar #popup {\n background-color: #4275a8;\n color: #fff;\n border-right: 2px solid #bcbcbc;\n border-bottom: 2px solid #bcbcbc;\n width: 9.5em;\n}\n.toolbar #popup a {\n color: #eee;\n}\n.toolbar #popup a:hover {\n background-color: #6699cc;\n color: #fff;\n}\nhr {\n border: none;\n border-top: dotted 1px #777;\n height: 1px;\n color: #777;\n margin: 7px 0px 0px 0px;\n}\n#titleline .tiddlylink {\n color: #fff;\n}\n.tiddler .button {\n color: #6699cc;\n}\n.tiddler .button:active {\n background-color: #fff;\n color: #4275a8;\n}\n.tiddler .button:hover {\n background-color: #6699cc;\n color: #fff;\n}\n.tiddler .tabselected {\n color: #6699cc;\n font-weight: bold;\n background-color: #dcdcdc;\n position: relative;\n top: -2px;\n}\n.tiddler .tabunselected {\n font-style: italic;\n color: #6699cc;\n background-color: #eee;\n}\n.tiddler .tabcontents {\n color: #7189e5;\n background-color: #dcdcdc;\n}\n.tiddler .tabcontents span {\n font-weight: bold;\n}\n.tiddler .tabcontents .tiddlylink {\n color: #6699cc;\n}\n.tiddler .tabcontents .tiddlylink:hover {\n color: #fff;\n background-color: #4275a8;\n}\n#messagearea {\n background-color: #ffd85d;\n color: #000000;\n}\n#messagearea a:link, #messagearea a:visited {\n color: #4275a8;\n}\n#messagearea a:hover {\n color: #fff;\n background-color: #4275a8;\n}\n#messagearea a:active {\n color: #4275a8;\n}\n#mainmenu {\n border: 1px solid #555;\n background-color: #eee;\n color: #4275a8;\n font-size: 9pt;\n margin: 5px 0px 0px 5px;\n}\n#mainmenu .button {\n color: #6699cc;\n}\n#mainmenu .button:active {\n background-color: #fff;\n color: #4275a8;\n}\n#mainmenu .button:hover {\n background-color: #6699cc;\n color: #fff;\n}\n#mainmenu .tiddlylink {\n color: #4275a8;\n}\n#mainmenu h1 {\n font-size: 11pt;\n}\n#mainmenu h1 .tiddlylink {\n font-size: 11pt;\n color: #fff;\n}\n#mainmenu h2 {\n font-size: 10pt;\n}\n#mainmenu h2 .tiddlylink {\n font-size: 10pt;\n color: #fff;\n}\n#mainmenu .tiddlylink:hover {\n background-color: #4275a8;\n color: #ffffff;\n}\n#mainmenu .externallink:hover {\n background-color: #4275a8;\n color: #ffffff;\n text-decoration: underline;\n}\n#mainmenu .externallink {\n color: #4275a8;\n text-decoration: none;\n}\n#sitetitle {\n font-size: 26pt;\n}\n#sitesubtitle {\n padding-left: 1em;\n font-size: 10pt;\n}\n#header {\n border-bottom: solid 1px #69c;\n}\n#header a {\n color: #69c;\n}\n#titleline {\n padding: 2em 2em 2.5em 2em;\n color: #69c;\n background-color: #fff;\n}\n#titleline .tiddlylink {\n color: #69c;\n}\n#titleline .tiddlylink:hover {\n background-color: #4275a8;\n color: #69c;\n}\n#titleline .externallink:hover {\n background-color: #4275a8;\n color: #69c;\n text-decoration: underline;\n}\n#titleline .externallink {\n color: #69c;\n text-decoration: none;\n}\nbody {\n font: 13px/125% lucida grande, trebuchet ms, bitstream vera sans, verdana, helvetica, sans-serif;\n}\n.editor textarea {\n height: 300px;\n background-color: #f2f2f2;\n}\n.editor input {\n background-color: #dcdcdc;\n}\n.title {\n font-size: 10pt;\n font-weight: bold;\n background-color: #dcdcdc;\n color: #4275a8;\n margin-top: 15px;\n padding-left: 30px;\n padding-right: 30px;\n}\n.viewer {\n padding: 10px;\n border: 1px solid #dcdcdc;\n background-color: #f2f2f2;\n z-index: -2;\n}\n.viewer h1, .viewer h2, .viewer h3, .viewer h4, .viewer h5, .viewer h6 {\n background-color: #8ba3ff;\n color: #fff;\n text-align: center;\n}\n.viewer a:link, .body a:visited {\n text-decoration: none;\n color: #4275a8;\n}\n.viewer a:hover {\n color: #ffffff;\n background-color: #4275a8;\n}\n.viewer table {\n border-collapse: collapse;\n border: 2px solid #303030;\n font-size: 11px;\n margin: 5px;\n}\n.viewer th {\n background: #dedede;\n border: 1px solid #aaa;\n color: #000;\n padding: 3px;\n}\n.viewer td {\n border: 1px solid #aaa;\n padding: 3px;\n}\n.viewer caption {\n padding: 3px;\n}\n.viewer hr {\n border: none;\n border-top: dotted 1px #777;\n height: 1px;\n color: #777;\n margin: 7px 0px 0px 0px;\n}\n.viewer pre {\n border: 1px solid #cbcbcb;\n margin: 5px;\n padding: 2px;\n background: #eaeaea;\n color: #3c6fa2;\n}\n.viewer code {\n background: #eaeaea;\n color: #3c6fa2;\n}\n.viewer input {\n border: 0px solid black;\n color: #4275a8;\n}\n.viewer #popup {\n background-color: #4275a8;\n color: #fff;\n border-right: 2px solid #bcbcbc;\n border-bottom: 2px solid #bcbcbc;\n}\n.viewer #popup a {\n color: #6699cc;\n}\n.viewer #popup a:hover {\n background-color: #6699cc;\n color: #fff;\n}\n.viewer .button {\n background-color: transparent;\n}\n.viewer .button:active {\n background-color: #fff;\n color: #4275a8;\n}\n.viewer .button:hover {\n background-color: #6699cc;\n color: #fff;\n}\n.sparkline {\n background-color: #99ccff;\n border: none;\n}\n.sparktick {\n background-color: #6699cc;\n outline: 0;\n}\n#sidebar {\n float: right;\n width: 16em;\n color: #000;\n font-size: 8pt;\n}\n#sidebar input {\n border: 0px solid black;\n background-color: #f2f2f2;\n color: #4275a8;\n}\n#sidebar a {\n color: #4275a8;\n}\n#sidebar a:active {\n background-color: #fff;\n color: #4275a8;\n}\n#sidebar a:hover {\n background-color: #6699cc;\n color: #fff;\n}\n#sidebaroptions {\n padding-top: 0.5em;\n background-color: #fbfbfb;\n color: #000;\n}\n#sidebaroptions .button {\n color: #6699cc;\n}\n#sidebaroptions .button:active {\n background-color: #fff;\n color: #4275a8;\n}\n#sidebaroptions .button:hover {\n background-color: #6699cc;\n color: #fff;\n}\n#sidebaroptions .sliderpanel {\n background-color: #dcdcdc;\n}\n#sidebaroptions .sliderpanel a {\n color: #4275a8;\n}\n#sidebaroptions .sliderpanel a:active {\n color: #fff;\n background-color: #4275a8;\n}\n#sidebaroptions .sliderpanel a:hover {\n color: #fff;\n background-color: #6699cc;\n}\n.sidebarsubheading {\n font-size: 7pt;\n color: #fbfbfb;\n}\n#sidebartabs {\n color: #000;\n background-color: #fbfbfb;\n}\n#sidebartabs a {\n color: #4275a8;\n}\n#sidebartabs a:hover {\n color: #fff;\n background-color: #4275a8;\n}\n#sidebartabs a:active {\n color: #000;\n background-color: #4275a8;\n}\n#sidebartabs .tabselected {\n color: #6699cc;\n font-weight: bold;\n background-color: #dcdcdc;\n position: relative;\n top: -2px;\n}\n#sidebartabs .tabunselected {\n font-style: italic;\n color: #6699cc;\n background-color: #eee;\n}\n#sidebartabs .tabcontents {\n color: #7189e5;\n background-color: #dcdcdc;\n}\n#sidebartabs .tabcontents span {\n font-weight: bold;\n}\n#sidebartabs .tabcontents .tiddlylink {\n color: #6699cc;\n}\n#sidebartabs .tabcontents .tiddlylink:hover {\n color: #fff;\n background-color: #4275a8;\n}\n#sidebartabs .txtmoretab .tabselected {\n color: #fff;\n background-color: #8ba3ff;\n}\n#sidebartabs .txtmoretab .tabunselected {\n font-weight: normal;\n font-style: italic;\n color: #fff;\n background-color: #4275a8;\n}\n#sidebartabs .txtmoretab .tabcontents {\n color: #000;\n background-color: #8ba3ff;\n}\n#sidebartabs .txtmoretab .tabcontents .tiddlylink {\n color: #fff;\n}\n#sidebartabs .tabcontents .button {\n color: #fff;\n}\n#sidebartabs .tabcontents .button:active {\n background-color: #fff;\n color: #4275a8;\n}\n#sidebartabs .tabcontents .button:hover {\n background-color: #6699cc;\n color: #fff;\n}\n#sidebartabs .tabcontents #popup {\n background-color: #4275a8;\n color: #fff;\n border-right: 2px solid #bcbcbc;\n border-bottom: 2px solid #bcbcbc;\n}\n#sidebartabs .tabcontents #popup a {\n color: #eee;\n}\n#sidebartabs .tabcontents hr {\n color: #fff;\n}\n#sidebartabs .tabcontents #popup a:hover {\n background-color: #6699cc;\n color: #fff;\n}\n\n}
!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5
\n<<tableOfContents>>
/***\n''Table of Contents Plugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.elsdesign.com/tiddlywiki/#TableOfContentsPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nWhen there are many tiddlers in a document, the standard 'tabbed list of tiddlers' in the right-hand sidebar can become very long, occupying a lot of page space and requiring a lot scrolling in order to locate and select a tiddler.\n\nThe TableOfContentsPlugin addresses this problem by replacing the standard tabbed list display with a single listbox/droplist control that uses a very small amount of page space, regardless of the number of tiddlers in the document.\n\n!!!!!Usage\n<<<\nTo view a tiddler, simply select (or double-click) its title from the listbox and it will automatically be displayed on the page. The listbox also includes special 'command' items that determine the order and type of tiddlers that are shown in the list:\n\n''[by title]'' displays all tiddlers in the document.\n''[by date/author/tags]'' displays indented sections, sorted accordingly, with headings (indicated by a '+') that can be expanded, one at a time, to view the list of tiddlers in that section.\n''[missing]'' displays tiddlers that have been referenced within the document but do not yet exist.\n''[orphans]'' displays tiddlers that do exist in the document but have not been referenced by a link from anywhere else within the document.\n''[system]'' displays special tiddlers that are used by TiddlyWiki to configure built-in features and add-on macros/extensions. The list includes all tiddlers tagged with <<tag systemTiddlers>> ("templates") or <<tag systemConfig>> (plug-in extensions), plus any 'shadow tiddlers' (built-in default systemTiddlers) that have not been over-ridden by custom tiddler definitions.\n\nThe current list ''display setting is indicated by an arrow (">")'' symbol to the left of command item. Selecting a command item causes the listbox to be reloaded with the appropriate contents and sort order.\n\nWhen you are viewing a list of tiddlers by date/author/tags, ''shift-clicking'' on a section heading or command item causes the listbox display to ''toggle between "show-one-section-at-a-time" and "expand-all-sections"'' display options, allowing you to quickly see all tiddler titles at once without having to view individual indented sections one at a time.\n\nThe ''size of the listbox can be adjusted'' so you can view more (or less) tiddler titles at one time. Select ''[-]'' to reduce the size by one line, ''[+]'' to increase the size by one line, or ''[=]'' to autosize the list to fit the current contents (toggles on/off). //Note: If the listbox is reduced to a single line, it displayed as a droplist instead of a fixed-sized listbox.// You can ''show/hide the entire listbox'' by selecting the "contents" label that appears above the listbox.\n<<<\n!!!!!Control Panel\n<<<\nBy default, tiddlers tagged with <<tag excludeLists>>, are omitted from the TableOfContents so that 'system' tiddlers (e.g. MainMenu, SiteTitle, StyleSheet, etc.) can be hidden, reducing "information overload" and making it easier to select relevant tiddlers when reading your document. However, when //editing// your document, including these hidden tiddlers in the list can be more helpful, so that changes to the menus, titles, styles, etc. can be more quickly accomplished.\n----\n''To include hidden tiddlers in the TableOfContents display, select the following option:''\n<<option chkTOCIncludeHidden>> include hidden tiddlers in TableOfContents(ignores <<tag excludeLists>> tag)\n^^note: this setting is ignored when ''<<option chkHttpReadOnly>> HideEditingFeatures when viewed over HTTP'' is enabled^^\n<<<\n!!!!!Parameters\n<<<\nThe macro accepts optional parameters to control various features and functions:\n* ''label:text''\nReplace the default text ("contents") that appears above the TableOfContents listbox. //Note: to include spaces in the label text, you must enclose the entire parameter in quotes// (e.g., {{{"label:my list of tiddlers"}}})\n* ''sort:fieldtype''\nSets the initial display order for items in the listbox. 'fieldtype' is one of the following pre-defined keywords: ''title'', ''modified'' //(date)//, ''modifier'' //(author)//, ''tags'', ''missing'', ''orphans'', or ''system''\n* ''date:format''\nControls the formatting of dates in TableOfContents display. 'format' is a text-substitution template containing one or more of the following special notations.\n** DDD - day of week in full (eg, "Monday")\n** DD - day of month, 0DD - adds leading zero\n** MMM - month in full (eg, "July")\n** MM - month number, 0MM - adds leading zero\n** YYYY - full year, YY - two digit year\n** hh - hours\n** mm - minutes\n** ss - seconds\n//Note: to include spaces in the formatting template, you must enclose the entire parameter in quotes// (e.g., {{{"date:DDD, DD/MM/YY"}}})\n* ''size:nnn''\nSets the initial number of lines to display in the listbox. If this parameter is omitted or "size:1" is specified, a single-line droplist is created. When a size > 1 is provided, a standard, fixed-size scrollable listbox is created. You can use "size:0" or "size:auto" to display a varible-height listbox that automatically adjusts to fit the current list contents without scrolling.\n* ''width:nnn[cm|px|em|%]''\nSets the width of the listbox control. Overrides the built-in CSS width declaration (=100%). Use standard CSS width units (cm=centimeters, px=pixels, em=M-space, %=proportional to containing area). You can also use a ".TOCList" custom CSS class definition to override the built-in CSS declarations for the listbox.\n* ''hidelist''\nHides the listbox when the TableOfContents is first displayed. Initially, only the listbox label and size controls will appear. Clicking on the listbox label text will alternately show/hide the listbox display. //Note: this setting does not affect the content of the listbox, only whether or not it is initially visible.//\n* ''prompt''\nSets the non-selectable prompt text that is displayed as the first line of the listbox //(note: this feature is not supported by the listbox control on all browsers)//. Let's you include a short text message (such as "select a tiddler"), even when displaying a compact single-line droplist.\n* ''padding:nnn[cm|px|em|%]''\nOverrides default listbox control padding. Sets the CSS padding style.\n* ''margin:nnn[cm|px|em|%]''\nOverrides default listbox control spacing. Sets the CSS margin style.\n* ''inline''\nNormally, the TableOfContents plugin is contained inside a {{{<div>}}} element. This setting causes the plugin to use a {{{<span>}}} instead, allowing for more flexible 'inline' placement when embedded within other content.\n<<<\n!!!!!Examples\n<<<\n<<tableOfContents "label:all tiddlers" sort:title width:40% size:1>>\n<<tableOfContents "label:by date" sort:modified size:1 width:40%>>\n<<tableOfContents "label:tagged tiddlers" sort:tags size:1 width:40%>>\n<<tableOfContents "label:system tiddlers" sort:system size:1 width:40%>>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''TableOfContentsPlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for TableOfContents handling^^\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add {{{<<tableOfContents>>}}} macro^^\n\n<<<\n!!!!!Revision History\n<<<\n''2005.12.21 [2.2.2]''\nin onClickTOCList() and onDblClickTOCList(), prevent mouse events from 'bubbling' up to other handlers\n''2005.10.30 [2.2.1]''\nin refreshTOCList(), fixed calculation of "showHidden" to check for 'readOnly' (i.e., "via HTTP") flag\nbased on a report from LyallPearce\n''2005.10.30 [2.2.0]''\nhide tiddlers tagged with 'excludeLists' (with option to override, i.e., "include hidden tiddlers")\n''2005.10.09 [2.1.0]''\ncombined documentation and code in a single tiddler\nadded click toggle for expand-all vs. show-one-branch\n''2005.08.07 [2.0.0]''\nmajor re-write to not use static ID values for listbox controls, so that multiple macro instances can exist without corrupting each other or the DOM. Moved HTML and CSS definitions into plugin code instead of using separate tiddlers. Added macro parameters for label, sort, date, size, width, hidelist and showtabs\n''2005.08.03 [1.0.3]''\nadded "showtabs" optional parameter\n''2005.07.27 [1.0.2]''\ncore update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet(). Added show/hide toggle (click on 'contents' link)\n''2005.07.23 [1.0.1]''\nadded parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.tableOfContents = {major: 2, minor: 2, revision: 3, date: new Date(2006,1,4)};\n//}}}\n\n// // 1.2.x compatibility\n//{{{\nif (!window.story) window.story=window;\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n\n//{{{\n// define defaults for cookie-based option values\nif (config.options.txtTOCSortBy==undefined) config.options.txtTOCSortBy="modified";\nif (config.options.txtTOCListSize==undefined) config.options.txtTOCListSize=12;\nif (config.options.chkTOCShow==undefined) config.options.chkTOCShow=true;\nif (config.options.chkTOCIncludeHidden==undefined) config.options.chkTOCIncludeHidden=false;\n\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkTOCIncludeHidden>> include hidden tiddlers in TableOfContents";\n\n// define macro "tableOfContents" to render controls\nconfig.macros.tableOfContents = { label: "tiddler" };\n\nconfig.macros.tableOfContents.css = '\s\n.TOC { padding:0.5em 1em 0.5em 1em; }\s\n.TOC a { padding:0em 0.25em 0em 0.25em; color:inherit; }\s\n.TOCList { width: 100%; font-size:8pt; margin:0em; }\s\n';\n\nconfig.macros.tableOfContents.html = '\s\n<div style="text-align:right">\s\n <span style="float:left">\s\n <a href="JavaScript:;" id="TOCMenu" style="padding: 0em;"\s\n onclick="onClickTOCMenu(this)" title="show/hide table of contents">%label%</a>\s\n </span>\s\n <a href="JavaScript:;" id="TOCSmaller" style="display:inline"\s\n onclick="resizeTOC(this)" title="riduci grandezza lista">&#150;</a>\s\n <a href="JavaScript:;" id="TOCLarger"style="display:inline"\s\n onclick="resizeTOC(this)" title="aumenta grandezza lista">+</a>\s\n <a href="JavaScript:;" id="TOCMaximize"style="display:inline"\s\n onclick="resizeTOC(this)" title="ottimizza grandezza lista">=</a>\s\n</div>\s\n';\n\nconfig.macros.tableOfContents.handler = function(place,macroName,params) { \n var parsedParams = new Array();\n parsedParams['label']=this.label;\n parsedParams['inline']=false;\n while (params.length>0) {\n if (params[0]=="label:none")\n parsedParams['label']="";\n else if (params[0].substr(0,6)=="label:")\n parsedParams['label']=params[0].substr(6);\n if (params[0].substr(0,7)=="prompt:")\n parsedParams['prompt']=params[0].substr(7);\n if (params[0].substr(0,8)=="padding:")\n parsedParams['padding']=params[0].substr(8);\n if (params[0].substr(0,7)=="margin:")\n parsedParams['margin']=params[0].substr(7);\n if (params[0].substr(0,5)=="sort:")\n parsedParams['sortby']=params[0].substr(5);\n if (params[0].substr(0,5)=="date:")\n parsedParams['date']=params[0].substr(5);\n if ((params[0]=="size:auto")||(params[0]=="size:0"))\n parsedParams['autosize']=true;\n else if (params[0] && (params[0].substr(0,5)=="size:"))\n parsedParams['requestedSize']=params[0].substr(5);\n if (params[0].substr(0,6)=="width:")\n parsedParams['width']=params[0].substr(6);\n if (params[0]=="hidelist")\n parsedParams['hidelist']=true;\n if (params[0]=="inline")\n parsedParams['inline']=true;\n params.shift(); \n }\n setStylesheet(config.macros.tableOfContents.css,"tableOfContents");\n var newTOC=createTiddlyElement(place,parsedParams['inline']?"span":"div",null,"TOC",null)\n if (parsedParams['margin']) { newTOC.style.margin=parsedParams['margin']; }\n if (parsedParams['padding']) { newTOC.style.padding=parsedParams['padding']; }\n if (parsedParams['label']!="") newTOC.innerHTML=config.macros.tableOfContents.html.replace(/%label%/,parsedParams['label']);\n var newTOCList=createTOCList(newTOC,parsedParams)\n refreshTOCList(newTOCList);\n store.addNotification(null,reloadTOCLists); // reload listbox after every tiddler change\n}\n\n// IE needs explicit global scoping for functions/vars called from browser events\nwindow.onChangeTOCList=onChangeTOCList;\nwindow.onClickTOCList=onClickTOCList;\nwindow.onDblClickTOCList=onDblClickTOCList;\nwindow.reloadTOCLists=reloadTOCLists;\nwindow.refreshTOCList=refreshTOCList;\nwindow.onClickTOCMenu=onClickTOCMenu;\nwindow.resizeTOC=resizeTOC;\n \nfunction createTOCList(place,params)\n{\n var theList = createTiddlyElement(place,"select",null,"TOCList",params['prompt'])\n theList.onchange=onChangeTOCList;\n theList.onclick=onClickTOCList;\n theList.ondblclick=onDblClickTOCList;\n theList.style.display=config.options.chkTOCShow ? "block" : "none" ;\n theList.sortBy=config.options.txtTOCSortBy;\n theList.dateFormat="DD MMM YYYY";\n theList.requestedSize=config.options.txtTOCListSize;\n theList.expandall=false;\n if (params['sortby'])\n { theList.sortBy=params['sortby']; theList.noSortCookie=true; }\n if (params['date'])\n { theList.dateFormat=params['date']; }\n if (params['autosize'])\n { theList.autosize=true; theList.noSizeCookie=true; }\n if (params['requestedSize'])\n { theList.requestedSize=params['requestedSize']; theList.noSizeCookie=true; }\n if (params['width'])\n { theList.style.width=params['width']; }\n if (params['hidelist'])\n { theList.style.display ="none" ; theList.noShowCookie=true; }\n if (params['expandall'])\n { theList.expandall=true; }\n return theList;\n}\n\nfunction onChangeTOCList()\n{\n var thisTiddler=this.options[this.selectedIndex].value;\n if ((this.size==1)&&(thisTiddler!='')) story.displayTiddler(null,thisTiddler,1);\n refreshTOCList(this);\n return false;\n}\n\nfunction onClickTOCList(e)\n{\n\n if (!e) var e = window.event;\n if (this.size==1)\n return; // don't toggle display for droplist\n if (e.shiftKey)\n { this.expandall=!this.expandall; refreshTOCList(this);}\n e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();\n return true;\n}\n\nfunction onDblClickTOCList(e)\n{\n if (!e) var e = window.event;\n var thisTiddler=this.options[this.selectedIndex].value;\n if (thisTiddler!='') story.displayTiddler(null,thisTiddler,1);\n e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nfunction reloadTOCLists()\n{\n var all=document.all? document.all : document.getElementsByTagName("*");\n for (var i=0; i<all.length; i++)\n if (all[i].className=="TOCList")\n { all[i].selectedIndex=-1; refreshTOCList(all[i]); }\n}\n\nvar TOCCmdMax=7;\nfunction refreshTOCList(theList)\n{\n // DEBUG var starttime=new Date();\n var selectedIndex = theList.selectedIndex;\n if (selectedIndex==-1) selectedIndex=0;\n var sortBy = theList.sortBy;\n var showHidden = config.options.chkTOCIncludeHidden\n && !(config.options.chkHttpReadOnly && readOnly);\n\n if (selectedIndex==0) sortBy=theList.sortBy; // "nnn tiddlers" heading\n if (selectedIndex==1) sortBy='title';\n if (selectedIndex==2) sortBy='modified';\n if (selectedIndex==3) sortBy='modifier';\n if (selectedIndex==4) sortBy='tags';\n if (selectedIndex==5) sortBy='missing';\n if (selectedIndex==6) sortBy='orphans';\n if (selectedIndex==7) sortBy='system';\n if (selectedIndex>TOCCmdMax)\n {\n if (theList.options[theList.selectedIndex].value=='')\n expandTOC(theList);\n return;\n }\n theList.sortBy = sortBy;\n if (!theList.noSortCookie)\n { config.options.txtTOCSortBy=sortBy; saveOptionCookie("txtTOCSortBy"); }\n\n // get the list of tiddlers and filter out 'hidden' tiddlers (i.e., tagged with "excludeLists")\n var tiddlers = [];\n switch (sortBy) {\n case "missing":\n tiddlers = store.getMissingLinks();\n break;\n case "tags":\n tiddlers = store.getTags();\n break;\n case "orphans":\n var titles = store.getOrphans();\n for (var t = 0; t < titles.length; t++)\n if (showHidden || store.getTiddler(titles[t]).tags.find("excludeLists")==null)\n tiddlers.push(titles[t]);\n break;\n case "system":\n var temp = store.getTaggedTiddlers("systemTiddlers");\n for (var t = 0; t < temp.length; t++)\n if (showHidden || temp[t].tags.find("excludeLists")==null)\n tiddlers.pushUnique(temp[t].title,true);\n var temp = store.getTaggedTiddlers("systemConfig");\n for (var t = 0; t < temp.length; t++)\n if (showHidden || temp[t].tags.find("excludeLists")==null)\n tiddlers.pushUnique(temp[t].title,true);\n for (var t in config.shadowTiddlers) tiddlers.pushUnique(t,true);\n tiddlers.sort();\n break;\n default:\n var temp = store.getTiddlers(sortBy);\n for (var t = 0; t < temp.length; t++)\n if (showHidden || temp[t].tags.find("excludeLists")==null)\n tiddlers.push(temp[t]);\n }\n\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n theList.saved=null;\n\n // add heading and control items to list\n var i=0;\n var theHeading=tiddlers.length+' tiddlers:';\n if (sortBy=='missing') theHeading=tiddlers.length+' missing tiddlers:';\n if (sortBy=='orphans') theHeading=tiddlers.length+' orphaned tiddlers:';\n if (sortBy=='tags') theHeading=tiddlers.length+' tags:';\n if (sortBy=='system') theHeading=tiddlers.length+' system tiddlers:';\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n var sel=">";\n theList.options[i++]=new Option(theHeading,'',false,false);\n theList.options[i++]=new Option(((sortBy=="title")?sel:indent)+' [per titolo]','',false,false);\n theList.options[i++]=new Option(((sortBy=="modified")?sel:indent)+' [per data]','',false,false);\n theList.options[i++]=new Option(((sortBy=="modifier")?sel:indent)+' [per autore]','',false,false);\n theList.options[i++]=new Option(((sortBy=="tags")?sel:indent)+' [per categoria]','',false,false);\n theList.options[i++]=new Option(((sortBy=="missing")?sel:indent)+' [mancanti]','',false,false);\n theList.options[i++]=new Option(((sortBy=="orphans")?sel:indent)+' [orfani]','',false,false);\n theList.options[i++]=new Option(((sortBy=="system")?sel:indent)+' [system]','',false,false);\n // output the tiddler list\n switch(sortBy)\n {\n case "title":\n for (var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modified":\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });\n // continue with same logic as for 'modifier'...\n case "modifier":\n var lastSection = "";\n for (var t = 0; t < tiddlers.length; t++)\n {\n var tiddler = tiddlers[t];\n var theSection = "";\n if (sortBy=="modified") theSection = tiddler.modified.formatString(theList.dateFormat);\n if (sortBy=="modifier") theSection = tiddler.modifier;\n if (theSection != lastSection)\n {\n theList.options[i++] = new Option('+ '+theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n expandTOC(theList);\n break;\n case "tags":\n // tagged tiddlers, by tag\n var tagcount=0;\n var lastTag = null;\n for (var t = 0; t < tiddlers.length; t++) // actually a list of tags, not tiddlers...\n {\n var theTag = tiddlers[t][0];\n var tagged = new Array();\n var temp = store.getTaggedTiddlers(theTag);\n for(r=0; r<temp.length; r++)\n if (showHidden || temp[r].tags.find("excludeLists")==null)\n tagged.push(temp[r]);\n if (tagged.length)\n {\n tagcount++;\n theList.options[i++]= new\n Option('+ '+theTag+" ("+tagged.length+")","",false,false);\n for(r=0; r<tagged.length; r++)\n theList.options[i++] = new\n Option(indent+indent+tagged[r].title,tagged[r].title,false,false);\n }\n }\n // count untagged tiddlers\n var temp = store.getTiddlers("title");\n var c=0; for (r=0; r<temp.length;r++) if (!temp[r].tags.length) c++;\n // create 'pseudo-tag' listing untagged tiddlers (if any)\n if (c>0)\n {\n theList.options[i++] = new Option("+ untagged ("+c+")","",false,false);\n for (r=0; r<temp.length;r++) if (!temp[r].tags.length)\n theList.options[i++] = new\n Option(indent+indent+temp[r].title,temp[r].title,false,false);\n }\n theList.options[0].text=tagcount+' tags:';\n expandTOC(theList);\n break;\n case "missing":\n case "orphans":\n case "system":\n for (var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t],tiddlers[t],false,false);\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n theList.size = (theList.autosize)?theList.options.length:theList.requestedSize;\n // DEBUG var endtime=new Date();\n // DEBUG alert("refreshTOC() elapsed time: "+(endtime-starttime)+" msec");\n}\n\n// show/hide branch of TOCList based on current selection\nfunction expandTOC(theList)\n{\n var selectedIndex = theList.selectedIndex;\n if (selectedIndex==-1) selectedIndex=0;\n var sortBy = theList.sortBy;\n\n // don't collapse/expand list for alpha-sorted "flatlist" TOC contents\n if ((sortBy=="title")||(sortBy=="missing")||(sortBy=="orphans")||(sortBy=="system"))\n return;\n // or list control items\n if ((selectedIndex>0)&&(selectedIndex<=TOCCmdMax))\n return;\n\n var theText = theList.options[selectedIndex].text;\n var theValue = theList.options[selectedIndex].value;\n // save fully expanded list contents (if not already saved)\n if (!theList.saved)\n {\n theList.saved = new Array();\n for (var i=0; i < theList.length; i++)\n {\n opt = theList.options[i];\n theList.saved[i] = new Option(opt.text, opt.value, opt.defaultSelected, opt.selected);\n }\n }\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n\n // put back all items \n if (theList.expandall)\n {\n var i=0;\n for (var t=0; t<theList.saved.length; t++)\n {\n opt=theList.saved[t];\n theList.options[i++] = new Option(opt.text,opt.value,opt.defaultSelected,opt.selected);\n if (opt.text==theText) selectedIndex=i-1;\n }\n theList.selectedIndex = selectedIndex;\n theList.size = (theList.autosize)?theList.options.length:theList.requestedSize;\n return;\n }\n\n // put back heading items until item text matches current selected heading\n var i=0;\n for (var t=0; t<theList.saved.length; t++)\n {\n opt=theList.saved[t];\n if (opt.value=='')\n theList.options[i++] = new Option(opt.text,opt.value,opt.defaultSelected,opt.selected);\n if (opt.text==theText)\n break;\n }\n selectedIndex=i-1; // this is the NEW index of the current selected heading\n // put back items with value!='' until value==''\n for ( t++; t<theList.saved.length; t++)\n {\n opt=theList.saved[t];\n if (opt.value!='')\n theList.options[i++] = new Option(opt.text,opt.value,opt.defaultSelected,opt.selected);\n if (opt.value=='')\n break;\n }\n // put back remaining items with value==''\n for ( ; t<theList.saved.length; t++)\n {\n opt=theList.saved[t];\n if (opt.value=='')\n theList.options[i++] = new Option(opt.text,opt.value,opt.defaultSelected,opt.selected);\n }\n theList.selectedIndex = selectedIndex;\n theList.size = (theList.autosize)?theList.options.length:theList.requestedSize;\n}\n\n// these functions process clicks on the 'control links' that are displayed above the listbox\nfunction getTOCListFromButton(which)\n{\n var theList = null;\n switch (which.id)\n {\n case 'TOCMenu':\n var theSiblings = which.parentNode.parentNode.parentNode.childNodes;\n var thePlace=which.parentNode.parentNode.parentNode.parentNode.parentNode.id;\n break;\n case 'TOCSmaller':\n case 'TOCLarger':\n case 'TOCMaximize':\n var theSiblings = which.parentNode.parentNode.childNodes;\n var thePlace=which.parentNode.parentNode.parentNode.parentNode.id;\n break;\n }\n for (k=0; k<theSiblings.length; k++)\n if (theSiblings[k].className=="TOCList") { theList=theSiblings[k]; break; }\n // DEBUG if (theList) alert('found '+theList.className+' for '+which.id+' button in '+thePlace);\n return theList;\n}\n\nfunction onClickTOCMenu(which)\n{\n var theList=getTOCListFromButton(which);\n if (!theList) return;\n var opening = theList.style.display=="none";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theList,opening,false,"none"));\n else\n theList.style.display = opening ? "block" : "none" ;\n if (!theList.noShowCookie)\n { config.options.chkTOCShow = opening; saveOptionCookie("chkTOCShow"); }\n return(false);\n}\n\nfunction resizeTOC(which)\n{\n var theList=getTOCListFromButton(which);\n if (!theList) return;\n\n var size = theList.size;\n if (theList.style.display=="none") // make sure list is visible\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theList,true,false,"none"));\n else\n theList.style.display = "block" ;\n switch (which.id)\n {\n case 'TOCSmaller': // decrease current listbox size\n if (theList.autosize) { theList.autosize=false; size=config.options.txtTOCListSize; }\n if (size==1) break;\n size -= 1; // shrink by one line\n theList.requestedSize = theList.size = size;\n break;\n case 'TOCLarger': // increase current listbox size\n if (theList.autosize) { theList.autosize=false; size=config.options.txtTOCListSize; }\n if (size>=theList.options.length) break;\n size += 1; // grow by one line\n theList.requestedSize = theList.size = size;\n break;\n case 'TOCMaximize': // toggle autosize\n theList.autosize = (theList.size!=theList.options.length);\n theList.size = (theList.autosize)?theList.options.length:theList.requestedSize;\n break;\n }\n if (!theList.noSizeCookie && !theList.autosize)\n { config.options.txtTOCListSize=size; saveOptionCookie("txtTOCListSize"); }\n}\n//}}}\n
*sample:\n|!th1111111111|!th2222222222|\n|>| colspan |\n| rowspan |left|\n|~| right|\n|bgcolor(#a0ffa0):colored| center |\n|caption|c\n*another sample: see PeriodicTable.\n
To\nhide text within a tiddler so that it is not displayed you can wrap it\nin {{{/%}}} and {{{%/}}}. It can be a useful trick for hiding drafts or\nannotating complex markup. Edit this tiddler to see an example.\n/%This\ntext is not displayed\nuntil you try to edit %/
/***\n|''Name:''|TiddlerStatsPlugin|\n|''Version:''|0.8 |\n|''Source:''|http://thePettersons.org/PaulsNotepad.html#%5B%5BTiddlerStatsPlugin%5D%5D |\n|''Author:''|[[Paul Petterson]] |\n|''Type:''|Macro Extension |\n|''Requires:''|TiddlyWiki 1.2.32 or higher |\n!Description\nWant to know how big your TW really is? Want to see how big your biggest tiddler is? TiddlerStats is the answer!\n\nFinds and displays the number of and size of all tiddlers, the biggest, smallest, and average size. Even draws up a sparkline with that info in it!\n\n!Syntax\n{{{<<tiddlerStats>>}}}\n\n!Sample\n<<tiddlerStats>>\n\n!Known issues\n* I added standard deviation and that just can't be right - but I haven't had time to see what I did wrong yet.\n\n!Notes\n* Sparkline isn't showing up if you embed this macro in a tiddler that's displayed via a slider. This doesn't look like an issue with the macro yet...\n\n!Todo\n* Add support for # of tiddlers changed in last 1..7, 14, 30 days\n\n!Revision history\nv0.8 - first public release.\n\n!Code\n***/\n// // 1.2.x compatibility\n//{{{\nif (!window.story) window.story=window;\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n\n/*\n{{{\n*/\nconfig.macros.tiddlerStats = {}\nconfig.macros.tiddlerStats.tiddlerSize = function( tiddler ) {\n var x = 12 ; // Modified is always 12 characters...\n if ( tiddler.text ) x += tiddler.text.length ;\n if ( tiddler.title ) x += tiddler.title.length ;\n if ( tiddler.modifier ) x+= tiddler.modifier.length ;\n\n var tiddlerTags = tiddler.tags.join() ;\n if ( tiddlerTags ) x+= tiddlerTags.length ;\n return x\n}\n\nconfig.macros.tiddlerStats.handler = function( place, macroName, params ) {\n var count = 0, size = 0, min = 999, max = 0, x;\n var xsquared = 0, smallest, largest ;\n\n//////// 1/5/2006 ELS\n// for(var tkey in store.tiddlers) {\n var tiddlers; var i; for(tiddlers=store.getTiddlers("title"),i=0; i<tiddlers.length; i++) { var tkey=tiddlers[i].title;\n////////\n var t = store.getTiddler(tkey);\n count++ ;\n\n x = config.macros.tiddlerStats.tiddlerSize( t ) ;\n size += x ;\n xsquared += (x^2) ;\n if ( min > x ) {\n min = x ;\n smallest = tkey ;\n }\n if ( max < x ) { \n max = x ;\n largest = tkey ;\n }\n }\n \n var average = size / count ;\n //square root of[ (sum of Xsquared -((sum of X)*(sum of X)/N))/ (N-1))\n var ps = (xsquared - ( size * size / count)) / (count - 1) ;\n var sdev = Math.sqrt( Math.abs( ps )) ;\n var incontrol = 0 ;\n var bucket = parseInt( max / sdev ) + 1;\n var data = new Array() ;\n for( var i = 0 ; i < bucket; i++ ) data[i] = 0 ;\n \n//////// 1/5/2006 ELS\n// for(var tkey2 in store.tiddlers) {\n var tiddlers; var i; for(tiddlers=store.getTiddlers("title"),i=0; i<tiddlers.length; i++) { var tkey2=tiddlers[i].title;\n////////\n var t = store.getTiddler(tkey2);\n x = config.macros.tiddlerStats.tiddlerSize( t ) ;\n if (((average - sdev) < x) && (x < (average + sdev))) incontrol++ ;\n bucket = parseInt( x / sdev ) ;\n data[bucket]++ ;\n }\n\n createTiddlyElement( place, "b", null, null, "TiddlyWiki usage statistics" ) ;\n var ul = createTiddlyElement( place, "ul", null, null, null ) ;\n createTiddlyElement( ul, "li", null, null, count + " Tiddlers" ) ;\n createTiddlyElement( ul, "li", null, null, size + " bytes (total content size)" ) ;\n createTiddlyElement( ul, "li", null, null, average + " is the average tiddler size" ) ;\n createTiddlyElement( ul, "li", null, null, sdev + " is the standard deviation" ) ;\n createTiddlyElement( ul, "li", null, null, incontrol + " within 1 standard deviation of the average" ) ;\n var li = createTiddlyElement( ul, "li", null, null, min + " is the smallest tiddler size " ) ;\n createTiddlyLink( li, smallest, true ) ;\n li = createTiddlyElement( ul, "li", null, null, max + " is the largest tiddler size " ) ;\n createTiddlyLink( li, largest, true ) ;\n li = createTiddlyElement( ul, "li", null, null, null ) ;\n config.macros.sparkline.handler( li, "sparkline?", data ) ;\n\n var tbl = createTiddlyElement(place,"table",null,null,"");\n var tb = createTiddlyElement( tbl, "tbody", null, null );\n var tr ;\n for( var i = 0; i < data.length ; i++ ) {\n if ( data[i] > 0 ) {\n tr = createTiddlyElement( tb, "tr", null, null, null );\n createTiddlyElement(tr,"td",null,null, i );\n createTiddlyElement(tr,"td",null,null, (i * sdev) + " < " + ((i+1) * sdev) );\n createTiddlyElement(tr,"td",null,null, data[i] );\n }\n }\n}\n/*\n}}}\n*/\n
Dalla definizione di Jeremy Ruston, l'inventore di TiddlyWiki\n<<<\nA TiddlyWiki is like a blog because it's divided up into neat little chunks, but it encourages you to read it by hyperlinking rather than sequentially: if you like, a non-linear blog analogue that binds the individual microcontent items into a cohesive whole. I think that TiddlyWiki represents a novel medium for writing, and will promote its own distinctive WritingStyle.\n<<<\n
/***\n''ToolkitPlugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.elsdesign.com/tiddlywiki/#ToolkitPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nTiddlyWiki uses many different options, messages, shadow tiddlers, styles, notification functions and macro handlers to control a variety of program behaviors and appearances. While many of these values are normally hidden from the TW user, it can be helpful to know this information when diagnosing the behavior of macros that may be interacting with core functions and can even modify or dynamically add to the internal values currently being used.\n\n!!!!!Usage\n<<<\n''{{{<<sysInfo options|messages|shadows|styles|notify|macros>>}}}''\n\nThe ''sysInfo'' macro lets you view many key program values, so you can quickly determine the internal state of the TW core functions and the effect of any macros that may have modified or extended the TW program operating environment. Key values that sysInfo can display includes:\n*''options'' include default values hard-coded into TW, persistent local options stored in cookies, and plugin configuration options defined in systemConfig tiddlers.\n*''messages'' include built-in error text and custom-defined messages from plugins.\n*''shadows'' includes all built-in 'shadow tiddlers'.\n*''styles'' include default hard-coded CSS definitions, custom StyleSheet tiddlers, and plugin-defined styles.\n*''notify'' lists built-in or plugin-defined functions that are triggered whenever changes to tiddlers are made.\n*''macros'' include built-in and plugin-defined handlers for program functions that can be embedded and displayed within tiddler content.\n\n''{{{<<sysConfig options|messages>>}}}''\n\nThe ''sysConfig'' macro generates a form that lets you manually create or update browser cookies that can override ANY of the values currently defined in the config.options[...] array, even if those settings are not normally made visible to the TW user. sysConfig can also be used to display a list of all message text definitions, using a simple "id=text" format.\n\n''{{{<<DOMViewer rows:nn indent:xxxx inline path elementID|tiddlertitle>>}}}''\n\nWhenever TiddlyWiki renders a given tiddler, it creates a 'tree' of DOM (Document Object Model) elements that represent the information that is displayed by the browser. You can use the ''DOMViewer'' macro to examine the internal DOM elements that are produced by TiddlyWiki's formatter (the 'wikifier'), or elements directly produced by embedded macros that create custom formatted output. This can be particularly helpful when trying to fine tune the layout and appearance of your tiddler content.\n\nDOMViewer creates a textarea control and reports the DOM tree for the current 'insertion point' where the DOMViewer macro is being placed. ''inline'' flag uses TiddlyWiki rendering instead of textarea control. ''path'' shows the relative location of each child element in the DOM tree, using subscript notation, ''[elementID or tiddlertitle]'' displays DOM elements starting from the node with the specified ID. If that ID is not found in the DOM tree, the macro attempts to open a tiddler with that title and then displays the "tiddler"+title DOM elements that were rendered.\n<<<\n!!!!!Examples\n<<<\nTiddlyWiki current operating values, styles, and function definitions:\n<<sysInfo options messages shadows styles notify macros>>\n''[[ToolkitExample:DOMViewer]]''\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document\n(each tagged with <<tag systemConfig>>):\n''[[ToolkitPlugin]]''\n^^documentation and javascript for Toolkit macro handling^^\n<<<\n!!!!!Revision History\n<<<\n''2006.01.01 [2.0.0]''\nupdate for TW2.0\n''2005.10.09 [1.0.2]''\ndocumentation and code cleanup only.\n''2005.09.29 [1.0.1]''\ndocumentation and code cleanup only.\nmerged separate Toolkit:* code tiddlers into one tiddler for easier distribution\n''2005.09.27 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\n<<<\n!!!!!Code\n***/\n// // 1.2.x compatibility\n//{{{\nif (!window.story) window.story=window;\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n\n// // ''{{{<<sysInfo options|messages|shadows|styles|notify|macros>>}}}''\n//{{{\nversion.extensions.sysInfo = {major: 2, minor: 0, revision: 0, date: new Date(2006,1,1)};\n\nconfig.macros.sysInfo = { };\nconfig.macros.sysInfo.handler = function(place,macroName,params) {\n // OPTIONS\n if (!params[0]||(params.find("options")!=null)) {\n var theOptList=createTiddlyElement(place,"select");\n var c=0;\n theOptList.options[c++]=new Option("options...","",false,false);\n var cookies = { };\n if (document.cookie != "") {\n var p = document.cookie.split("; ");\n for (var i=0; i < p.length; i++) {\n var pos=p[i].indexOf("=")\n if (pos==-1)\n cookies[p[i]]="";\n else\n cookies[p[i].substr(0,pos)]=unescape(p[i].slice(pos+1));\n }\n }\n var opt=new Array(); for (var i in config.options) opt.push(i); opt.sort();\n for(var i=0; i < opt.length; i++) {\n var txt = opt[i];\n var val = "config.options."+txt+"\sn"+config.options[opt[i]];\n if (cookies[opt[i]]) txt += " [cookie]";\n theOptList.options[c++]=new Option(txt,val,false,false);\n }\n }\n // MESSAGES\n if (!params[0]||(params.find("messages")!=null)) {\n var theMsgList=createTiddlyElement(place,"select");\n var c=0;\n theMsgList.options[c++]=new Option("messages...","",false,false);\n var msgs=new Array(); for (var i in config.messages) msgs.push(i); msgs.sort();\n for(var i=0; i < msgs.length; i++) {\n var txt = msgs[i];\n var val = "config.messages."+txt+"\sn"+config.messages[msgs[i]];\n theMsgList.options[c++]=new Option(txt,val,false,false);\n }\n }\n // SHADOWS\n if (!params[0]||(params.find("shadows")!=null)) {\n var theShadowList=createTiddlyElement(place,"select");\n var c=0;\n theShadowList.options[c++]=new Option("shadows...","",false,false);\n var shadows=new Array(); for (var i in config.shadowTiddlers) shadows.push(i); shadows.sort();\n for(var i=0; i < shadows.length; i++) {\n var txt = shadows[i];\n var val = "config.shadowTiddlers."+txt+"\sn"+config.shadowTiddlers[shadows[i]];\n theShadowList.options[c++]=new Option(txt,val,false,false);\n }\n }\n // STYLES\n if (!params[0]||(params.find("styles")!=null)) {\n var theStyleList=createTiddlyElement(place,"select");\n var c=0;\n theStyleList.options[c++]=new Option("stylesheets...","",false,false);\n var styles=document.getElementsByTagName("style");\n for(var i=0; i < styles.length; i++) {\n var id=styles[i].getAttribute("id"); if (!id) id="(default)";\n var txt=id;\n var val="/* stylesheet:"+txt+" */\sn"+styles[i].innerHTML;\n theStyleList.options[c++]=new Option(txt,val,false,false);\n }\n }\n // NOTIFY\n if (!params[0]||(params.find("notify")!=null)) {\n var theNotifyList=createTiddlyElement(place,"select");\n var c=0;\n theNotifyList.options[c++]=new Option("notifications...","",false,false);\n for (var i=0; i<store.namedNotifications.length; i++) {\n var n = store.namedNotifications[i];\n var fn = n.notify.toString();\n fn = fn.substring(fn.indexOf("function ")+9,fn.indexOf("{")-1);\n var txt=(n.name?n.name:"any change")+"="+fn;\n var val="/* notify: "+txt+" */"+n.notify.toString();\n theNotifyList.options[c++]=new Option(txt,val,false,false);\n }\n }\n // MACROS\n if (!params[0]||(params.find("macros")!=null)) {\n var theMacroList=createTiddlyElement(place,"select");\n var c=0;\n theMacroList.options[c++]=new Option("macro handlers...","",false,false);\n var macros=new Array();\n for (var m in config.macros) macros.push(m);\n macros.sort();\n for(var i=0; i < macros.length; i++) {\n if (config.macros[macros[i]].handler) {\n var txt=macros[i];\n var val="/* macro:"+txt+" */"+config.macros[macros[i]].handler.toString();\n theMacroList.options[c++]=new Option(txt,val,false,false);\n }\n }\n }\n // TEXTAREA DISPLAY\n theTextArea=createTiddlyElement(place,"textarea");\n theTextArea.rows=10;\n theTextArea.cols=60;\n theTextArea.style.width="100%";\n theTextArea.style.fontSize="8pt";\n var num=!params[0]?6:params.length; var pct=100/num+"%";\n if (theOptList) {\n theOptList.textarea=theTextArea;\n theOptList.onchange=function() { this.textarea.value=this.value; }\n theOptList.style.fontSize="8pt"; theOptList.style.width=pct;\n }\n if (theMsgList) {\n theMsgList.textarea=theTextArea;\n theMsgList.onchange=function() { this.textarea.value=this.value; }\n theMsgList.style.fontSize="8pt"; theMsgList.style.width=pct;\n }\n if (theShadowList) {\n theShadowList.textarea=theTextArea;\n theShadowList.onchange=function() { this.textarea.value=this.value; }\n theShadowList.style.fontSize="8pt"; theShadowList.style.width=pct;\n }\n if (theStyleList) {\n theStyleList.textarea=theTextArea;\n theStyleList.onchange=function() { this.textarea.value=this.value; }\n theStyleList.style.fontSize="8pt"; theStyleList.style.width=pct;\n }\n if (theNotifyList) {\n theNotifyList.textarea=theTextArea;\n theNotifyList.onchange=function() { this.textarea.value=this.value; }\n theNotifyList.style.fontSize="8pt"; theNotifyList.style.width=pct;\n }\n if (theMacroList) {\n theMacroList.textarea=theTextArea;\n theMacroList.onchange=function() { this.textarea.value=this.value; }\n theMacroList.style.fontSize="8pt"; theMacroList.style.width=pct;\n }\n}\n//}}}\n// // ''{{{<<sysConfig options|messages>>}}}''\n//{{{\nversion.extensions.sysConfig= {major: 2, minor: 0, revision: 0, date: new Date(2006,1,1)};\nconfig.macros.sysConfig = { };\nconfig.macros.sysConfig.handler = function(place,macroName,params) {\n // OPTIONS\n if (!params[0]||(params.find("options")!=null)) {\n var out="";\n var options=new Array(); for (var i in config.options) options.push(i); options.sort();\n for(var i=0; i < options.length; i++)\n if ((options[i].substr(0,3)=="txt")||(options[i].substr(0,3)=="chk"))\n out += "<<option "+options[i]+">> "+options[i]+"\sn";\n else\n out += options[i]+"="+config.options[options[i]]+"\sn";\n }\n // MESSAGES\n if (!params[0]||(params.find("messages")!=null)) {\n var out="";\n var msgs=new Array(); for (var i in config.messages) msgs.push(i); msgs.sort();\n for(var i=0; i < msgs.length; i++)\n out += msgs[i]+"="+config.messages[msgs[i]]+"\sn";\n }\n if (out.length>0) wikify(out,place);\n}\n//}}}\n// // ''{{{<<DOMViewer rows:nn indent:xxxx inline path elementID|tiddlertitle>>}}}''\n//{{{\nversion.extensions.DOMViewer = {major: 2, minor: 0, revision: 0, date: new Date(2006,1,1)};\nconfig.macros.DOMViewer = { };\nconfig.macros.DOMViewer.handler = function(place,macroName,params) {\n // set default params\n var inline=false;\n var theRows=15;\n var theIndent="| ";\n var showPath=false;\n var theTarget=place;\n // unpack options parameters\n if (params[0]=='inline') { inline=true; theIndent=">"; params.shift(); } \n if (params[0]&&(params[0].substr(0,7)=="indent:")) { theIndent=params[0].substr(7); params.shift(); } \n if (params[0]&&(params[0].substr(0,5)=="rows:")) { theRows=params[0].substr(5); params.shift(); } \n if (params[0]=='path') { showPath=true; params.shift(); } \n if (params[0]) {\n theTarget=document.getElementById(params[0]);\n if (!theTarget)\n if (store.getTiddler(params[0])!=undefined) {\n theTarget=document.getElementById("tiddler"+params[0]);\n if (!theTarget && confirm("DOMViewer asks:\sn\snIs it OK to open tiddler '"+params[0]+"' now?")) { \n story.displayTiddler(null,params[0],1,null,null,false);\n theTarget=document.getElementById("tiddler"+params[0]);\n }\n }\n params.shift();\n }\n // generate and display DOM tree\n if (inline) {\n var out=getNodeTree(theTarget,theIndent,showPath,inline);\n wikify(out,place);\n }\n else {\n var out=getNodeTree(theTarget,theIndent,showPath,inline);\n var css=".DOMViewer{width:100%;font-size:8pt;color:inherit;background:transparent;border:0px;}";\n setStylesheet(css,"DOMViewerPlugin");\n theTextArea=createTiddlyElement(place,"textarea",null,"DOMViewer",out);\n theTextArea.rows=theRows;\n theTextArea.cols=60;\n theTextArea.wrap="off";\n theTextArea.theTarget=theTarget;\n theTextArea.theIndent=theIndent;\n theTextArea.showPath=showPath;\n }\n}\nfunction getNodeTree(theNode,theIndent,showPath,inline,thePrefix,thePath)\n{\n if (!theNode) return "";\n if (!thePrefix) thePrefix="";\n if (!thePath) thePath="";\n var mquote='"'+(inline?"{{{":"");\n var endmquote=(inline?"}}}":"")+'"';\n // generate output for this node\n var out = thePrefix;\n if (showPath && thePath.length)\n out += (inline?"//":"")+thePath.substr(1)+":"+(inline?"//":"")+"\sr\sn"+thePrefix;\n if (theNode.className=="DOMViewer")\n return out+'[DOMViewer]\sr\sn'; // avoid self-referential recursion\n out += (inline?"''":"")+theNode.nodeName.toUpperCase()+(inline?"''":"");\n if (theNode.nodeName=="#text")\n out += ' '+mquote+theNode.nodeValue.replace(/\sn/g,'\s\sn')+endmquote;\n if (theNode.className)\n out += ' class='+mquote+theNode.className+endmquote;\n if (theNode.type)\n out += ' type='+mquote+theNode.type+endmquote;\n if (theNode.id)\n out += ' id='+mquote+theNode.id+endmquote;\n if (theNode.name)\n out += " "+theNode.name+(theNode.value?"="+mquote+theNode.value+endmquote:"");\n if (theNode.href)\n out += ' href='+mquote+theNode.href+endmquote;\n if (theNode.src)\n out += ' src='+mquote+theNode.src+endmquote;\n if (theNode.attributes && theNode.getAttribute("tiddlyLink")!=undefined)\n out += ' tiddler='+mquote+theNode.getAttribute("tiddlyLink")+endmquote;\n out += "\sr\sn";\n // recursively generate output for child nodes\n thePath=thePath+"."+theNode.nodeName.toLowerCase();\n thePrefix=theIndent+thePrefix;\n for (var i=0;i<theNode.childNodes.length;i++)\n {\n var thisChild=theNode.childNodes.item(i);\n var theNum=(inline?"~~":"(")+(i+1)+(inline?"~~":")");\n out += getNodeTree(thisChild,theIndent,showPath,inline,thePrefix,thePath+theNum);\n }\n return out;\n}\n//}}}\n
Paesino della provincia del Chubut, di origine gallese, a pochi chilometri di autobus da Esquel.\nE' noto ai lettori di Chatwin per la tomba del cavallo [[Malacara|El Malacara]].
This\nform is provided for uploading any file with the store.php script\ndescribe in UploadPlugin\n----\n<html><center>\n<form\nenctype="multipart/form-data"\naction="http://web.bidix.info/TiddlyWiki/store2.php"\nmethod="post">\n <input type="hidden" name="MAX_FILE_SIZE"\nvalue="3000000" />\nThis file : <input name="userfile"\ntype="file" /><p>\nOptions* : <input type="text"\nname="UploadPlugin" size=70\nvalue="backupDir=backupDir;user=UPLOAD_USER;password=UPLOAD_PASSWORD;"\n/><p>\n <input type="submit" value="Upload"\n/>\n</form></center>\n</html>\n----\n * Don't save\nyour real username and password in any tiddler
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |\n| 23/4/2006 18:1:24 | YourName | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 26/4/2006 21:58:48 | InViaggio | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 26/4/2006 21:59:34 | InViaggio | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 27/4/2006 15:38:1 | InViaggio | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 27/4/2006 15:39:14 | InViaggio | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 27/4/2006 15:39:38 | InViaggio | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 27/4/2006 15:40:59 | InViaggio | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 12/5/2006 20:17:7 | OscarCollini | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 12/5/2006 20:19:1 | OscarCollini | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 12/6/2006 18:38:30 | LorenzoVentura | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 12/6/2006 18:41:19 | LorenzoVentura | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 5/8/2006 20:14:17 | OscarCollini | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | | Ok |\n| 5/8/2006 20:14:48 | OscarCollini | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 27/2/2007 14:20:41 | OscarCollini | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 27/2/2007 14:23:19 | OscarCollini | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |\n| 27/2/2007 14:24:48 | OscarCollini | [[http://inviaggio.altervista.org/|http://inviaggio.altervista.org/]] | [[store.php|http://inviaggio.altervista.org/store.php]] | | index.htm | |
!Options\nused by UploadPlugin\nUsername: <<option\ntxtUploadUserName>>\nPassword: <<option\npasUploadPassword>>\n\nUrl of the [[store.php]] script^^(1)^^:\n<<option txtUploadStoreUrl 50>>\nRelative Directory to\nstore the file^^(2)^^: <<option txtUploadDir 50>>\nFilename\nof the uploaded file^^(3)^^: <<option txtUploadFilename\n40>>\nDirectory to backup file on webserver^^(4)^^:\n<<option txtUploadBackupDir>>\n\n^^(1)^^Mandatory either in\nUploadOptions or in MacroParameter\n^^(2)^^If empty stores in the\n[[store.php]] directory\n^^(3)^^If empty takes the actual\nfilename\n^^(4)^^If empty existing the file with same name on webserver\nwill be overwriten\n\n!Upload\n{{{<<upload\n[[UploadStoreUrl]}}}^^(1)^^{{{ [UploadFilename]\n[UploadBackupDir]]>>}}}\n\n<<upload>>
/***\n<<tiddler UploadPluginDoc>>\n!Code\n***/\n//{{{\nversion.extensions.UploadPlugin = {\n major: 3, minor: 3, revision: 0, \n date: new Date(2006,3,12),\n type: 'macro',\n source: 'http://tiddlywiki.bidix.info/#UploadPlugin',\n docs: 'http://tiddlywiki.bidix.info/#UploadPluginDoc'\n};\n//}}}\n\n////+++!![config.lib.file]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.file) config.lib.file= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.file.dirname = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(0, lastpos);\n } else {\n return filePath.substring(0, filePath.lastIndexOf("\s\s"));\n }\n};\nconfig.lib.file.basename = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("#")) != -1) \n filePath = filePath.substring(0, lastpos);\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(lastpos + 1);\n } else\n return filePath.substring(filePath.lastIndexOf("\s\s")+1);\n};\nwindow.basename = function() {return "@@deprecated@@";};\n//}}}\n////===\n\n////+++!![config.lib.log]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.log) config.lib.log= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.Log = function(tiddlerTitle, logHeader) {\n if (version.major < 2)\n this.tiddler = store.tiddlers[tiddlerTitle];\n else\n this.tiddler = store.getTiddler(tiddlerTitle);\n if (!this.tiddler) {\n this.tiddler = new Tiddler();\n this.tiddler.title = tiddlerTitle;\n this.tiddler.text = "| !date | !user | !location |" + logHeader;\n this.tiddler.created = new Date();\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[tiddlerTitle] = this.tiddler;\n else\n store.addTiddler(this.tiddler);\n }\n return this;\n};\n\nconfig.lib.Log.prototype.newLine = function (line) {\n var now = new Date();\n var newText = "| ";\n newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";\n newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";\n newText += config.options.txtUserName + " | ";\n var location = document.location.toString();\n var filename = config.lib.file.basename(location);\n if (!filename) filename=location;\n newText += "[["+filename+"|"+location + "]] |";\n this.tiddler.text = this.tiddler.text + "\sn" + newText;\n this.addToLine(line);\n};\n\nconfig.lib.Log.prototype.addToLine = function (text) {\n this.tiddler.text = this.tiddler.text + text;\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[this.tiddler.tittle] = this.tiddler;\n else {\n store.addTiddler(this.tiddler);\n story.refreshTiddler(this.tiddler.title);\n store.notify(this.tiddler.title, true);\n }\n if (version.major < 2)\n store.notifyAll(); \n};\n//}}}\n////===\n\n////+++!![config.lib.options]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.options) config.lib.options = {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\n\nconfig.lib.options.init = function (name, defaultValue) {\n if (!config.options[name]) {\n config.options[name] = defaultValue;\n saveOptionCookie(name);\n }\n};\n//}}}\n////===\n\n////+++!![PasswordTweak]\n\n//{{{\nversion.extensions.PasswordTweak = {\n major: 1, minor: 0, revision: 2, date: new Date(2006,3,11),\n type: 'tweak',\n source: 'http://tiddlywiki.bidix.info/#PasswordTweak'\n};\n//}}}\n/***\n!!config.macros.option\n***/\n//{{{\nconfig.macros.option.passwordCheckboxLabel = " ";\nconfig.macros.option.passwordType = "password"; // password | text\n\nconfig.macros.option.onChangeOption = function(e)\n{\n var opt = this.getAttribute("option");\n var elementType,valueField;\n if(opt) {\n switch(opt.substr(0,3)) {\n case "txt":\n elementType = "input";\n valueField = "value";\n break;\n case "pas":\n elementType = "input";\n valueField = "value";\n break;\n case "chk":\n elementType = "input";\n valueField = "checked";\n break;\n }\n config.options[opt] = this[valueField];\n saveOptionCookie(opt);\n var nodes = document.getElementsByTagName(elementType);\n for(var t=0; t<nodes.length; t++) {\n var optNode = nodes[t].getAttribute("option");\n if (opt == optNode) \n nodes[t][valueField] = this[valueField];\n }\n }\n return(true);\n};\n\nconfig.macros.option.handler = function(place,macroName,params)\n{\n var opt = params[0];\n var size = 15;\n if (params[1])\n size = params[1];\n if(config.options[opt] === undefined) {\n return;}\n var c;\n switch(opt.substr(0,3)) {\n case "txt":\n c = document.createElement("input");\n c.onkeyup = this.onChangeOption;\n c.setAttribute ("option",opt);\n c.size = size;\n c.value = config.options[opt];\n place.appendChild(c);\n break;\n case "pas":\n // input password\n c = document.createElement ("input");\n c.setAttribute("type",config.macros.option.passwordType);\n c.onkeyup = this.onChangeOption;\n c.setAttribute("option",opt);\n c.size = size;\n c.value = config.options[opt];\n place.appendChild(c);\n // checkbox link with this password " "\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option","chk"+opt);\n place.appendChild(c);\n c.checked = config.options["chk"+opt];\n // text savePasswordCheckboxLabel\n place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));\n break;\n case "chk":\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option",opt);\n place.appendChild(c);\n c.checked = config.options[opt];\n break;\n }\n};\n//}}}\n/***\n!! Option cookie stuff\n***/\n//{{{\nwindow.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;\nwindow.loadOptionsCookie = function()\n{\n var cookies = document.cookie.split(";");\n for(var c=0; c<cookies.length; c++) {\n var p = cookies[c].indexOf("=");\n if(p != -1) {\n var name = cookies[c].substr(0,p).trim();\n var value = cookies[c].substr(p+1).trim();\n switch(name.substr(0,3)) {\n case "txt":\n config.options[name] = unescape(value);\n break;\n case "pas":\n config.options[name] = unescape(value);\n break;\n case "chk":\n config.options[name] = value == "true";\n break;\n }\n }\n }\n};\n\nwindow.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;\nwindow.saveOptionCookie = function(name)\n{\n var c = name + "=";\n switch(name.substr(0,3)) {\n case "txt":\n c += escape(config.options[name].toString());\n break;\n case "chk":\n c += config.options[name] ? "true" : "false";\n // is there an option link with this chk ?\n if (config.options[name.substr(3)]) {\n saveOptionCookie(name.substr(3));\n }\n break;\n case "pas":\n if (config.options["chk"+name]) {\n c += escape(config.options[name].toString());\n } else {\n c += "";\n }\n break;\n }\n c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";\n document.cookie = c;\n};\n//}}}\n/***\n!! Initializations\n***/\n//{{{\n// define config.options.pasPassword\nif (!config.options.pasPassword) {\n config.options.pasPassword = 'defaultPassword';\n window.saveOptionCookie('pasPassword');\n}\n// since loadCookies is first called befor password definition\n// we need to reload cookies\nwindow.loadOptionsCookie();\n//}}}\n////===\n\n////+++!![config.macros.upload]\n\n//{{{\nconfig.macros.upload = {\n accessKey: "U",\n formName: "UploadPlugin",\n contentType: "text/html;charset=UTF-8",\n defaultStoreScript: "store.php"\n};\n\n// only this two configs need to be translated\nconfig.macros.upload.messages = {\n aboutToUpload: "About to upload TiddlyWiki to %0",\n errorDownloading: "Error downloading",\n errorUploadingContent: "Error uploading content",\n fileNotFound: "file to upload not found",\n fileNotUploaded: "File %0 NOT uploaded",\n mainFileUploaded: "Main TiddlyWiki file uploaded to %0",\n urlParamMissing: "url param missing",\n rssFileNotUploaded: "RssFile %0 NOT uploaded",\n rssFileUploaded: "Rss File uploaded to %0"\n};\n\nconfig.macros.upload.label = {\n promptOption: "Salva e aggiorna questa pagina con le opzioni in UploadOptions",\n promptParamMacro: "Salva e aggiorna questa pagina in %0",\n saveLabel: "salva sul web", \n saveToDisk: "salva su disco",\n uploadLabel: "carica su web" \n};\n\nconfig.macros.upload.handler = function(place,macroName,params){\n // parameters initialization\n var storeUrl = params[0];\n var toFilename = params[1];\n var backupDir = params[2];\n var uploadDir = params[3];\n var username = params[4];\n var password; // for security reason no password as macro parameter\n var label;\n if (document.location.toString().substr(0,4) == "http")\n label = this.label.saveLabel;\n else\n label = this.label.uploadLabel;\n var prompt;\n if (storeUrl) {\n prompt = this.label.promptParamMacro.toString().format([this.dirname(storeUrl)]);\n }\n else {\n prompt = this.label.promptOption;\n }\n createTiddlyButton(place, label, prompt, \n function () {\n config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password); \n return false;}, \n null, null, this.accessKey);\n};\nconfig.macros.upload.UploadLog = function() {\n return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );\n};\nconfig.macros.upload.UploadLog.prototype = config.lib.Log.prototype;\nconfig.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {\n var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";\n line += uploadDir + " | " + toFilename + " | " + backupDir + " |";\n this.newLine(line);\n};\nconfig.macros.upload.UploadLog.prototype.endUpload = function() {\n this.addToLine(" Ok |");\n};\nconfig.macros.upload.basename = config.lib.file.basename;\nconfig.macros.upload.dirname = config.lib.file.dirname;\nconfig.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)\n{\n // parameters initialization\n storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);\n toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);\n if (toFilename === '') {\n toFilename = config.lib.file.basename(document.location.toString());\n }\n backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);\n uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);\n username = (username ? username : config.options.txtUploadUserName);\n password = config.options.pasUploadPassword; // for security reason no password as macro parameter\n\n clearMessage();\n // only for forcing the message to display\n if (version.major < 2)\n store.notifyAll();\n if (!storeUrl) {\n alert(config.macros.upload.messages.urlParamMissing);\n return;\n }\n \n var log = new this.UploadLog();\n log.startUpload(storeUrl, toFilename, uploadDir, backupDir);\n if (document.location.toString().substr(0,5) == "file:") {\n saveChanges();\n }\n displayMessage(config.macros.upload.messages.aboutToUpload.format([this.dirname(storeUrl)]), this.dirname(storeUrl));\n this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);\n if(config.options.chkGenerateAnRssFeed) {\n //var rssContent = convertUnicodeToUTF8(generateRss());\n var rssContent = generateRss();\n var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";\n this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, null, username, password, \n function (responseText) {\n if (responseText.substring(0,1) != '0') {\n displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));\n }\n else {\n if (uploadDir) {\n rssPath = uploadDir + "/" + config.macros.upload.basename(rssPath);\n } else {\n rssPath = config.macros.upload.basename(rssPath);\n }\n displayMessage(config.macros.upload.messages.rssFileUploaded.format(\n [config.macros.upload.dirname(storeUrl)+"/"+rssPath]), config.macros.upload.dirname(storeUrl)+"/"+rssPath);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n });\n }\n return;\n};\n\nconfig.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var original;\n if (document.location.toString().substr(0,4) == "http") {\n original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);\n return;\n }\n else {\n // standard way : Local file\n \n original = loadFile(getLocalPath(document.location.toString()));\n if(window.Components) {\n // it's a mozilla browser\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]\n .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);\n converter.charset = "UTF-8";\n original = converter.ConvertToUnicode(original);\n }\n catch(e) {\n }\n }\n }\n //DEBUG alert(original);\n this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password);\n};\n\nconfig.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it\n var endSaveArea = '</d' + 'iv>';\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n {\n alert(config.messages.invalidFileError.format([document.location.toString()]));\n return;\n }\n var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + \n allTiddlersAsHtml() + "\sn\st\st" +\n original.substr(posClosingDiv);\n var newSiteTitle;\n if(version.major < 2){\n newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();\n } else {\n newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();\n }\n revised = revised.replace(new RegExp("<title>[^<]*</title>", "im"),"<title>"+ newSiteTitle +"</title>");\n var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir, \n username, password, function (responseText) {\n if (responseText.substring(0,1) != '0') {\n alert(responseText);\n displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));\n }\n else {\n if (uploadDir !== '') {\n toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);\n } else {\n toFilename = config.macros.upload.basename(toFilename);\n }\n displayMessage(config.macros.upload.messages.mainFileUploaded.format(\n [config.macros.upload.dirname(storeUrl)+"/"+toFilename]), config.macros.upload.dirname(storeUrl)+"/"+toFilename);\n var log = new config.macros.upload.UploadLog();\n log.endUpload();\n store.setDirty(false);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n }\n );\n};\n\nconfig.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir, \n username, password, callbackFn) {\n var boundary = "---------------------------"+"AaB03x"; \n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n if (window.netscape){\n try {\n if (document.location.toString().substr(0,4) != "http") {\n netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}\n }\n catch (e) { }\n } \n //DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");\n // compose headers data\n var sheader = "\sr\sn";\n sheader += "--" + boundary + "\sr\snContent-disposition: form-data;name=\s"";\n sheader += config.macros.upload.formName +"\s"\sr\sn\sr\sn";\n sheader += "backupDir="+backupDir\n +";user=" + username \n +";password=" + password\n +";uploaddir=" + uploadDir\n + ";;\sr\sn"; \n sheader += "\sr\sn" + "--" + boundary + "\sr\sn";\n sheader += "Content-disposition: form-data;name=\s"userfile\s";filename=\s""+toFilename+"\s"\sr\sn";\n sheader += "Content-Type: " + config.macros.upload.contentType + "\sr\sn";\n sheader += "Content-Length: " + content.length + "\sr\sn\sr\sn";\n // compose trailer data\n var strailer = new String();\n strailer = "\sr\sn--" + boundary + "--\sr\sn";\n var data;\n data = sheader + content + strailer;\n //request.open("POST", storeUrl, true, username, password);\n request.open("POST", storeUrl, true);\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if (request.status == 200)\n callbackFn(request.responseText);\n else\n alert(config.macros.upload.messages.errorUploadingContent);\n }\n };\n request.setRequestHeader("Content-Length",data.length);\n request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);\n request.send(data); \n};\n\n\nconfig.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir, \n username, password) {\n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n try {\n if (uploadUrl.substr(0,4) == "http") {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n else {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n }\n } catch (e) { }\n //request.open("GET", document.location.toString(), true, username, password);\n request.open("GET", document.location.toString(), true);\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if(request.status == 200) {\n config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl, \n uploadToFilename, uploadDir, uploadBackupDir, username, password);\n }\n else\n alert(config.macros.upload.messages.errorDownloading.format(\n [document.location.toString()]));\n }\n };\n request.send(null);\n};\n\n//}}}\n////===\n\n////+++!![Initializations]\n\n//{{{\nconfig.lib.options.init('txtUploadStoreUrl','store.php');\nconfig.lib.options.init('txtUploadFilename','');\nconfig.lib.options.init('txtUploadDir','');\nconfig.lib.options.init('txtUploadBackupDir','');\nconfig.lib.options.init('txtUploadUserName',config.options.txtUserName);\nconfig.lib.options.init('pasUploadPassword','');\nconfig.shadowTiddlers.UploadPluginDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadPluginDoc ]]\sn"; \n\n\n//}}}\n////===\n\n////+++!![Core Hijacking]\n\n//{{{\nconfig.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;\nconfig.macros.saveChanges.label = config.macros.upload.label.saveToDisk;\n//}}}\n////===
/***\n|''Name:''|UploadPlugin|\n|''Type:''|Plugin|\n|''Version:''|3.3.0\n(11/03/2006)|\n|''Source:''|[[TiddlyWiki.BidiX.info/#UploadPlugin|http://tiddlywiki.BidiX.info/#UploadPlugin]]|\n|''Documentation:''|[[TiddlyWiki.BidiX.info/#UploadPluginDoc|http://tiddlywiki.BidiX.info/#UploadPluginDoc]]|\n|''Author:''|BidiX[at]BidiX.info\n|\n|''Required:''|TW 2.0.6 |\n\n!Description\nUploadPlugin, with\n[[store.php]], provides @@upload@@ and @@save to web@@ functions. See\nHowToUpload\n([[HowToUpload|http://TiddlyWiki.bidix.info/#HowToUpload]]).\nUploadPlugin\nuses Username and Password from UploadOptions stored in cookies to\nauthenticate itself to [[store.php]].\nFrench translation available as\na separate tiddler UploadPluginMsgFR\n\n!!UploadPlugin\n*If the\nTiddlyWiki is viewed from @@local disk@@\n:\n**{{{<<saveChanges>>}}} \n***display as ''salva in locale''\n***work as usual\n**{{{<<upload>>}}}\n***display as\n''aggiorna''\n***after saving to disk, upload in the storeUrl\ndirectory.\n*If the TiddlyWiki is viewed from @@website@@ and is\n@@readOnly@@ (in core TiddlyWiki since 2.0.6)\n:\n**{{{<<saveChanges>>}}} \n***print nothing\n***has been\ndisabled\n**{{{<<upload>>}}}\n***display as '''salva su web''\n***save in the uploadDir directory.\n*If GenerateAnRssFeed in\nAdvancedOptions is set :\n**generate the content of the RSSFeed\n\n**upload the RssFile in uploadDir directory\n**Caution : use the\nSiteUrl tiddler to specify the right url of the TiddlyWiki in the\ngenerated RssFile\n*DisplayMessage\n*Log upload action in\nUploadLog\nhint : if UploadLog is the first tiddler in the Timeline\nTab, no tiddler has been updated since last\nupload.\n\n!![[store.php]]\n*UserVariables to set\n:\n//{{{\n$AUTHENTICATE_USER = true; // true | false\n$USERS = array(\n\n'UserName1'=>'Password1', \n 'UserName2'=>'Password2', \n\n'UserName3'=>'Password3'); // set usernames and strong\npasswords\n$DEBUG = false; // true | false\n//}}}\n*method\nGET\n**display an information page\n*method POST\n**if\n$~AUTHENTICATE_USER is ''true''\n***presence and value of user and\npassword are checked with $USER and $PASSWORD \n**if toFilename already\nexists and backDir parameter specified\n***rename toFilename to\nbackupDir/toFilename.AAAAMMDD.HHSS.html\n**copy temporaryUploadedFile\nto toFilename\n** return status\n\n!Usage :\n\n{{{\n<<upload>>\n uses UploadOptions saved in cookies :\n\ntxtUploadUserName: username\n pasUploadPassword : password\n\ntxtUploadStoreUrl : store script\n txtUploadDir : relative path for\nupload directory\n txtUploadFilename : upload filename\n\ntxtUploadBackupDir : relative path for backup\ndirectory\n\n<<upload [storeUrl [toFilename [backupDir [uploadDir\n[username]]]]]>>\n optional positional parameters can be passed\nto overwrite UploadOptions in this order. \n}}}\n\nInstall the\n{{{<<upload ... >>}}} macro in SideBarOptions just below\n{{{<<saveChanges>>}}} macro.\n\n\n!User manual\nSee\nHowToUpload\n\n!Installation :\n*Install the UploadPlugin as\nusual\n*Upload the [[store.php]] file on your php aware webserver in\nyour TiddlyWiki directory\n*Protect your server against malicious\nupload. Two approaches :\n**set $~AUTHENTICATE_USER to true in the\n[[store.php]] script\n***configure $USER and $PASSWORD in the\n[[store.php]] script on your webserver\n***set UploadOptions in\nconformity with [[store.php]]\n**Use server protection :\n***for Apache\nweb server ([[for detail see Apache\ndocumentation|http://httpd.apache.org/docs/1.3/howto/htaccess.html]]) :\n\n****configure and upload the [[.htaccess]] [[.passwd]]\n***for other\nweb servers see the appropriate documentation\n*Configure an upload\nbutton, for example in the SideBarOptions\n!Suppported\nBrowser\n*Firefox : tested Ok\n*Internet Explorer : tested Ok\n*Safari\n: reported ok on OS X\n*Others : Not tested, please report\nstatus.\n\n!Revision history\n*V 3.3.0 (12/03/2006)\n**Code\nrefactoring\n**suppress saveChanges hijacking\n*V3.2.2\n(25/02/2006)\n**Use PasswordTweak 1.0.1\n**uploaddir is a relative\npath\n**backupdir is a relative path\n+++[previous revisions]\n*V3.2.1\n(13/02/2006)\n**name and password added to open.request (Thanks to\nTedPavlic)\n*V3.2.0 (14/02/2006)\n**Use PassworDTweak\n(http://tiddlyWiki.bidix.info/#PasswordTweak) for password\n*V3.1.0\n(12/02/2006)\n**UploadOptions in Cookies\n**Username and password from\nUploadOptions pass to store.php script for authentification\ncheck\n*V3.0.3 (03/02/2006)\n**Firefox 1.5.0.1 crashes due to global\nvar fixed\n*V3.0.2 (25-Jan-2006)\n**HTTPS compatible\n*V3.0.1\n(18-Jan-2006)\n**UTF8toUnicode conversion problem in Firefox\n*V3.0.0\n(15-Jan-2006)\n**Asynchronous upload\n**Synchronous upload before\nunload of the page\n**All strings extracted in macro\nconfig\n**Compatibility checked with TW 2.0.2 & TW 1.2.39 for both\nFF 1.5 and IE 6\n*V2.0.2 (8-Jan-2006)\n**conversion of SiteTitle and\nSiteSubtitle in web page Title\n*V2.0.1 (8-Jan-2006)\n**Compatibilty\nwith TiddlyWiki 2.0.1\n*V2.0.0 (3-Jan-2006)\n**Save to\nweb\n**Compatibilty with TiddlyWiki 1.2.39 and TiddlyWiki 2.0.0 Beta\n6\n*v1.1.0 (27-Dec-2005)\n**Upload RSS File\n*v1.0.3\n(26-Dec-2005)\n**UploadLog tiddler\n*v1.0.2 (24-Dec-2005)\n**Optional\nparameter toFilename\n**Optional parameter backupDir\n*v1.0.1\n(23-Dec-2005)\n**reformatting code\n* v1.0.0 (17-Dec-2005)\n** first\npublic working version\n===\n\n
|''Name:''|UploadToFileMacro|\n|''Type:''|Macro|\n|''Version:''|1.0.0\n(14/03/2006)|\n|''Source:''|[[TiddlyWiki.BidiX.info/#UploadToFileMacro|http://tiddlywiki.BidiX.info/#UploadToFileMacro]]|\n|''Documentation:''|[[TiddlyWiki.BidiX.info/#UploadToFileMacroDoc|http://tiddlywiki.BidiX.info/#UploadToFileMacroDoc]]|\n|''Author:''|BidiX[at]BidiX.info\n|\n|''Required:''|[[UploadPlugin|http://tiddlywiki.BidiX.info/#UploadPlugin]]\n|\n\n!Description\nUpload a tiddler as a file using UploadPlugin\ncontext. Used with the SimonBaird's RunMacroIfTagged in\n[[ViewTemplate|BidiXStyleViewTemplate]] provides a new command in the\ntiddler toolbar.\n\n!Usage\n{{{\n <<uploadToFile>>\n\n<<uploadTofile [filename [tiddlerTitle]]>>\n \n\ntiddlerTitle: if omitted the title of the current tiddler \n filename:\nif omitted the title of the current tiddler\n\n}}}\n\n!Revision\nhistory\n* v1.0.0 (14/03/2006)\n** initial release\n
Capitale dell’Austria e, come è di moda dire adesso, della Mitteleuropa, Wien non è una città tipicamente tedesca, quindi turisticamente incentrata su Rathaus e su un paio di chiese, ma al contrario offre molto di più, soprattutto a chi ha a disposizione 3-4 giorni per godere appieno delle sue molteplici sfaccettature. Quanto segue è una breve introduzione alla visita della città in cui ho privilegiato le bellezze all’aria aperta, se così vogliamo dire, ma ovviamente non va dimenticato che a Wien ci sono parecchi musei di primissimo piano (Kunsthistorisches Museum, Akademie der bildenden Künste, MAK, il complesso del Museum Quartier), così come le regge imperiali Hofburg (la reggia invernale) e Schönbrunn (la reggia estiva).\n\n![[arrivare a Vienna]] - [[dormire a Vienna]] - [[mangiare a Vienna]] - [[visitare Vienna]]\n
\n<div class='toolbar' macro='toolbar collapseTiddler -closeTiddler collapseOthers closeOthers permalink references jump +editTiddler '></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'>Frammento inserito da <span macro='view modifier link'></span> il <span macro='view modified date [[DD MMM YYYY]]'></span> | <span class='comments' macro='haloscan comments'></span> | <span class='comments' macro='haloscan trackbacks'></span></div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>
// //''Name:'' Weblog\n// //''Version:'' 0.1.4\n// //''Author:'' ClintChecketts\n// //http://15black.bluedepot.com\n// //''Type:'' Plugin\n\n// //''Description:'' Posts the most recently edited tiddlers tagged as 'posts' when the TiddlyWiki is opened, similar to a blog.\n\n// //''Syntax:'' Change the daysOrPosts and numOfDaysOrPosts variables in the code section. \n// //Examples: \n/*\n{{{\n var daysOrPosts = "days";\n var numOfDaysOrPosts = "2";\n}}}\nwill display the defaultTiddlers then all the tiddlers from the 2 most recent days that are tagged as 'posts'\n\n{{{\n var daysOrPosts = "posts";\n var numOfDaysOrPosts = "15";\n}}}\nwill display the defaultTiddlers then the 15 most recent tiddlers tagged as 'posts'\n*/\n\n// //''Directions:'' Copy this tiddler and tag it as systemConfig. Next, change the daysOrPosts and numOfDaysOrPosts variable to your liking. (About 8 lines below this)\n\n// //''Know Issues:'' If a defaultTiddlers references a tiddler that has recently been referenced it will appear in the chronological order rather than at the top of the page. Also, if you are inserting the 15 most recent posts and default tiddlers new enough they too will be part of that count. If there is not text in the default tiddler, the weblog plugin isn't run.\n\n// //''Revision History:''\n// // v0.1.0 (03 Aug 2005): initial release\n// // v0.1.2 (03 Aug 2005): fixed 'day' sorting order and permalink breakage\n// // v0.1.3 (10 Aug 2005): fixed error for when the numOfDaysOrPosts is greater than number of tiddlers.\n// // v0.1.4 (12 Aug 2005): changed the plugin from excluding systemTiddlers to only including 'posts' tiddlers\n\n// //''Code section:''\nvar daysOrPosts = "days";\nvar numOfDaysOrPosts = "2";\n// // Enter the tagged posts that you want to display\nvar postTag = "posts";\n\nwindow.displayTiddlers_original_TiddlyBlog = window.displayTiddlers;\nwindow.displayTiddlers = function(src,titles,state,highlightText,highlightCaseSensitive,animate,slowly) {\n // if using the addressbar to select tiddlers return\n if(window.location.hash) daysOrPosts = "";\n if(daysOrPosts == "posts"){\n //lookup the last few posts\n var tiddlerNames = store.reverseLookup("tags",postTag,true,"modified");\n //Just display all tiddlers if there aren't enough\n if(tiddlerNames.length-numOfDaysOrPosts<0) numOfDaysOrPosts = tiddlerNames.length; \n for(var t = tiddlerNames.length-numOfDaysOrPosts;t<=tiddlerNames.length-1;t++)\n displayTiddler(src,tiddlerNames[t].title,state,highlightText,highlightCaseSensitive,animate,slowly);\n }\n if (daysOrPosts == "days"){\n var lastDay = "";\n var tiddlerNames = store.reverseLookup("tags",postTag,true,"modified");\n var t = tiddlerNames.length -1;\n var tFollower = 0;\n for(t;t>=0;t--) if(numOfDaysOrPosts >= 0){\n var theDay = tiddlerNames[t].modified.convertToYYYYMMDDHHMM().substr(0,8);\n if(theDay != lastDay){\n numOfDaysOrPosts = numOfDaysOrPosts -1;\n lastDay = theDay;\n tFollower = t;\n }\n }\n\n for(tFollower = tFollower+1; tFollower < tiddlerNames.length;tFollower++){\n displayTiddler(src,tiddlerNames[tFollower].title,state,highlightText,highlightCaseSensitive,animate,slowly);\n }\n\n }\n\n // call the original displayTiddlers function\n window.displayTiddlers_original_TiddlyBlog(src,titles,state,highlightText,highlightCaseSensitive,animate,slowly);\n\n}
Una parola WikiWord è composta da più parole senza spazi e con tutte le iniziali maiuscole
Sometimes\nit's handy to be able to write WikiWords without them being recognised\nas links (for people's names, for instance). You can do this by\npreceding the WikiWord with a tilde ({{{~}}}). For example, ~JamesBond,\n~JavaScript and ~TiddlyWiki
Da Buenos Aires si può arrivare a Bariloche in Aereo o in Autobus (CocheCama).\nI voli interni partono dall'aeroporto Newbery, meglio conosciuto come Aeroparque.\nSia dall'aeroporto internazionale di Ezeiza che dal centro città si può arrivare all'Aeroparque con il taxi o con gli autobus di compagnie private (personalmente ho viaggiato con la compagnia [[Manuel Tienda Leon]], che ha un servizio molto buono).\n\nIn autobus si parte invece dal Terminal degli Autobus (che è raggiunto da taxi o da "noleggi con autista"). Il viaggio si può fare con la compagnia ~ViaBariloche; è un viaggio lungo, occupa tutto il pomeriggio e la notte, ma non è affatto scomodo e permette un bel risparmio di soldi (i voli interni hanno prezzi diversi per argentini e per turisti. Almeno fino al 2004 solo la compagnia American Falcon aveva una sola tariffa) e permette di ammirare un po' di paesaggio.
* In macchina: consiglio, provenendo dall’Italia, di percorrere l’A 12 – A 93 fino a München, di girare poi tutt’attorno alla capitale bavarese seguendo le indicazioni per Stuttgart. Si continua poi sulla A 8 fino a Ulm, e da lì, sulla A 7 fino a [[Rothenburg ob der Tauber]]; il centro cittadino è vietato alla circolazione delle auto, ma lungo le mura ci sono parecchi parcheggi, gratuiti e a pagamento, che possono ospitare centinaia di macchine.\n\n* In treno: il viaggio non è lunghissimo, ma si deve cambiare almeno 3 volte\nItalia - München\nMünchen - Steinach bei Rothenburg\nSteinach - Rothenburg\n\nItalia - München\nMünchen - Augsburg\nAugsburg - Steinach bei Rothenburg\nSteinach - [[Rothenburg|Rothenburg ob der Tauber]]\n\nItalia - München\nMünchen - Nürnberg\nNürnberg - Ansbach\nAnsbach - Steinach bei Rothenburg\nSteinach - [[Rothenburg|Rothenburg ob der Tauber]]\n
* In macchina: provenendo dall’Italia, percorrere l’ A 22 - A 12 – A 93 fino a Rosenheim, e seguire poi le indicazioni per Salzburg – Linz. Wien si raggiunge in circa 6 ore dal Brennero ed è circondata da due grandi anelli stradali, Gürtel e Ring che delimitano la città dalla periferia e poi il centro dal Gürtel stesso.\n* In treno: \nItalia – Innsbruck\nInnsbruck – Wien Westbahnhof\n
Muehlthaler (Stockdorf, fuori Monaco; a 1 km dalla ferrovia, si arriva fino al centro di Monaco con 4,40€)
* Frau Pelikan, Schillerstr. 12\n* Konditorei - Hotel Garni Frei, Galgengasse 39\n* Jugendherberge, Spitalhof \n* Goldeness Fass
Hotel Best Western „Jäger“, Hernalserhauptstraße, 1170 Wien
Tiddler che riguardano il modo in cui si scrive su questo sito
config.options.chkHttpReadOnly = false;
* Boliche di Alberto\n** Sia quello in centro che quello sul lungolago. Attenzione: portate molto ricche, non prendete un pasto completo a testa...ne avanzerebbe!
Weinbauer (Schwabing, Monaco nord, dal centro U-bahn per Leopoldstrasse; notevoli le aringhe e i pissoire <<smiley :-)>>)\n\nPiatsa, Grieschische Spezialitäten, Leopoldstraße 33, tel. +49 - (0)89 - 348000, fermata U-Bahn Giselastraße o Münchner Freihheit, ristorante greco a Schwabing, ambiente abbastanza piccolo ma veramente bello, soprattutto se i Tedeschi dovessero veramente decidersi a vietare il fumo nei locali pubblici\n\nBobolovski's, Ursulastraße 10, fermata U-Bahn Münchner Freihheit, sempre a Schwabing, Kneipe per studenti, ambiente ovviamente giovane, menù non particolarmente vario ma veramente bell'ambiente
* Gasthof Rödertor – Rothenburger Kartoffelstube, Ansbacherstr. 7, menù esclusivamente a base di patate\n* Zum Rappen – Pfannkuchenkuchel, Vorm Würzburger Tor 6/10, menù quasi interamente dedicato a uova e derivati, omelette, frittate, etc.\n* Zum Pulverer, Herrngasse, ottima Gasthof, da provare, secondo il mio modesto parere, il gebackene Camembert\n* Altfränkische Weinstube, Klosterhof 7\n
* Palatschinkenpfandl, Köllnerhofgasse 4, 1010 Wien\n* Salm Bräu Gaststätte, Rennweg 8, 1030 Wien\n* Sophienalpe, Sofienalpe 13, 1140 Wien\n* Resi Tant, Dornbacherstraße 127, 1170 Wien\n* Donauturm, Donauturmstraße 4, 1220 Wien\n\nA Wien è ancora fortissima la tradizione dei “Cafe”, che sarebbe volgare chiamare semplicemente bar; sono locali in cui spesso si respira ancora l’atmosfera dell’indimenticato impero asburgico e in cui si accompagna uno dei tanti caffè viennesi con una fetta di torta, non solo di Sacher.\n
Plugin che rendono il sito più bello o più comodo...''non toccare !''
<?php\n/***\n! User settings\nEdit these lines according to your need\n***/\n//{{{\n$AUTHENTICATE_USER = true; // true | false\n$USER = array(\n 'Username1'=>'Password1', \n 'Username2'=>'Password2', \n 'UserName3'=>'Password3');\n$DEBUG = false; // true | false\n//}}}\n/***\n!Code\nNo change needed under\n***/\n//{{{\n\n/***\n * store.php - upload a file in this directory\n * version :1.2 - 12/02/2006 - BidiX@BidiX.info\n * \n * see : \n * http://tiddlywiki.bidi.info/#UploadPlugin for usage\n * http://www.php.net/manual/en/features.file-upload.php \n * for détails on uploading files\n * usage : \n * POST \n * UploadPlugin[backupDir=<backupdir>;user=<user>;password=<password>;]\n * userfile <file>\n * GET\n *\n * Revision history\n * v 1.2 - 12/02/2006 : \n * POST \n * UploadPlugin[backupDir=<backupdir>;user=<user>;password=<password>;]\n * userfile <file>\n* if $AUTHENTICATE_USER\n * presence and value of user and password are checked with \n * $USER and $PASSWORD\n * v 1.1 - 23/12/2005 : \n * POST UploadPlugin[backupDir=<backupdir>] userfile <file>\n * v 1.0 - 12/12/2005 : \n * POST userfile <file>\n *\n * Copyright (c) BidiX@BidiX.info 2005-2006\n ***/\n//}}}\n\n//{{{\n\nif ($_SERVER['REQUEST_METHOD'] == 'GET') {\n?>\n<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >\n <title>BidiX.info - TiddlyWiki UploadPlugin - Store script</title>\n </head>\n <body>\n <p>\n <p>store.php V 1.2\n <p>BidiX@BidiX.info\n <p>&nbsp;</p>\n <p>&nbsp;</p>\n <p>&nbsp;</p>\n <p align="center">This page is designed to upload a <a href="http://www.tiddlywiki.com/">TiddlyWiki<a>.</p>\n <p align="center">for details see : <a href="http://www.bidix.info/TiddlyWiki/BidiXTW.html#HowToUpload">www.bidix.info/TiddlyWiki/BidiXTW.html#HowToUpload<a>.</p> \n </body>\n</html>\n<?php\n}\nelse {\n $uploaddir = './';\n $backuperror = false;\n $optionStr = $_POST['UploadPlugin'];\n $optionArr=explode(';',$optionStr);\n $options = array();\n $backupFilename = '';\n foreach($optionArr as $o) {\n list($key, $value) = split('=', $o);\n $options[$key] = $value;\n }\n if ((!$AUTHENTICATE_USER) \n || (($options['user']) && ($options['user'] == $USER) && ($options['password']) && ($options['password'] == $PASSWORD))) {\n if (file_exists($uploaddir . $_FILES['userfile']['name']) && ($options['backupDir'] != '')) {\n if (! file_exists($options['backupDir'])) {\n mkdir($options['backupDir']) or ($backuperror = "mkdir error");\n }\n $filename = $_FILES['userfile']['name'];\n $backupFilename = $options['backupDir'].'/'.substr($filename, 0, strpos($filename, '.'))\n .date('.Ymd.His').substr($filename,strpos($filename,'.'));\n rename($filename, $backupFilename) or ($backuperror = "rename error");\n }\n if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {\n if (!$backuperror) {\n if($DEBUG) {\n echo "debug mode \sn\sn";\n }\n echo "0 - File successfully loaded in " .$uploaddir . $_FILES['userfile']['name']. "\sn";\n if ($backupFilename)\n echo "backupFile=$backupFilename;\sn";\n } else {\n echo "BackupError : $backuperror - File successfully loaded in " .$uploaddir . $_FILES['userfile']['name']. "\sn";\n }\n } \n else {\n echo "Error : " . $_FILES['error']." - File NOT uploaded !\sn";\n }\n }\n else {\n echo "Error : UserName or Password do not match \sn";\n echo "UserName : [".$options['user']. "] Password : [". $options['password'] . "]\sn";\n }\n if ($DEBUG) {\n echo '\snHere is some more debugging info : \sn';\n print ("\s$_FILES : \sn");\n print_r($_FILES);\n print ("\s$options : \sn");\n print_r($options);\n }\n}\n//}}}\n?>
Configurazioni di sistema.\n''Chi tocca muore!''
Configurazioni di sistema.\n''Chi tocca muore!''
Qui potete trovare tutti i ''tag'' (cioè le etichette) utilizzati in questo sito, e per ciascuna di questi potete trovare una lista delle pagine "taggate"....più semplice provare che cercare di capire quello che ho scritto!
version.extensions.tagCloud = {major: 1, minor: 0 , revision: 1, date: new Date(2005,8,16)};\n//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman\n// // source: http://15black.bluedepot.com/twtests/tagcloud.htm\n\nsetStylesheet("\s\n .tagCloud span{height: 1.8em;margin: 3px;}\s\n .tagCloud1{font-size: 1.2em;}\s\n .tagCloud2{font-size: 1.4em;}\s\n .tagCloud3{font-size: 1.6em;}\s\n .tagCloud4{font-size: 1.8em;}\s\n .tagCloud5{font-size: 1.8em;font-weight: bold;}","tagCloudsStyles"\n);\n\nconfig.macros.tagCloud = {\n noTags: "No tag cloud created because there are no tags.",\n tooltip: "%1 tiddlers tagged with '%0'"\n};\n\nconfig.macros.tagCloud.handler = function(place,macroName,params) {\n \nvar tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);\n\nvar tags = store.getTags();\nfor (t=0; t<tags.length; t++) {\n for (p=0;p<params.length; p++) if (tags[t][0] == params[p]) tags[t][0] = "";\n}\n\n if(tags.length == 0) \n createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);\n //Findout the maximum number of tags\n var mostTags = 0;\n for (t=0; t<tags.length; t++) if (tags[t][0].length > 0){\n if (tags[t][1] > mostTags) mostTags = tags[t][1];\n }\n //divide the mostTags into 4 segments for the 4 different tagCloud sizes\n var tagSegment = mostTags / 4;\n\n for (t=0; t<tags.length; t++) if (tags[t][0].length > 0){\n var tagCloudElement = createTiddlyElement(tagCloudWrapper,"span",null,null,null);\n tagCloudWrapper.appendChild(document.createTextNode(" "));\n var theTag = createTiddlyButton(tagCloudElement,tags[t][0],this.tooltip.format(tags[t]),onClickTag,"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));\n theTag.setAttribute("tag",tags[t][0]);\n }\n\n};\n
Un tiddler è ogni riquadro contenente un testo.\nOgni tiddler può contenere testo, immagini e link (ad altri tiddler o a pagine esterne).\n\nE' la base di questo sito, basato su TiddlyWiki
Ovviamente bariloche non presenta monumenti storici notevoli, ma la sua giovane età è compensata da panorami incredibili.\nVi segnalo, nelle vicinanze di Bariloche, ma che necessitano sempre di un mezzo di trasporto:\n* El Valle Encantado\n* Lago Traful e il Mirador\n* la Isla Victoria con il Bosque de Arrayanes\n* tutto il lungolago attraverso il Circuito Chico\n\nun po' più lontani da Bariloche\n* la cascata de Los Alerces e tutta la zona del rio Manso
* Jakobskirche\n* Franziskanerkirche \n* Joanniskirche (la chiesa cattolica nel centro cittadino)\n* Marktplatz (vi prego di pensare a me quando passate davanti all’ex Goethe Institut)\n* Herrngasse e se volete farvi del male, Käthe Wohlfahrt Weihnachtsdorf/Museum\n* Giro di ronda\n* Kriminalmuseum\n* Reichsstadtmuseum
Per avere una prima e sommaria idea della capitale austriaca, si può utilizzare una delle qualsiasi guide che si trovano in commercio e che vi proporranno due o tre itinerari a seconde del tempo che si ha a disposizione. E quindi i suggerimenti riguarderanno Kärntnerstraße e Stephansdom, Graben con Peterskirche e Kohlmarkt, Michaelerkirche e Hofburg, Rathaus e gli altri palazzi sul Ring, Karlskirche, e magari una puntatina fino a Schönbrunn.\nTutto questo va sicuramente bene, ma vi consiglio caldamente anche un giretto nella Wien “minore”, con visita al grande spazio aperto del Freyung con la Schottenkirche, per passare poi alle chiese Maria am Gestade e Ruprechtkirche, la più antica della città; sempre a proposito di edifici sacri, fate una scappata fino alla Franziskanerkirche e alla Domenikanerkirche, e perdetevi nel dedalo di vie e viuzze nella zona attorno a Stephansdom. Se fossi in voi, il sabato mattina non mi perderei una visita al Naschmarkt, il mercatino delle pulci, animato mercato multietnico interessante soprattutto per questa sua caratteristica più che per le possibilità di acquisti. \nDurante la bella stagione non mi perderei nemmeno una passeggiata sulla Donau Insel oppure nel parco del Prater, vaste aree zone sul Danubio e nei suoi pressi, in cui sembra veramente di non essere più in una moderna capitale europea, ma in una zona rurale lontana anni luce dal centro storico.\n