Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
|''URL:''|http://tiddlywiki.abego-software.de/|
|''Description:''|UdoBorkowski's Extensions for TiddlyWiki|
|''Author:''|UdoBorkowski|
Rename this tiddler to 'ColorPalette' to enable this color scheme
Background: #ffc
Foreground: #000
PrimaryPale: #fc8
PrimaryLight: #f81
PrimaryMid: #b40
PrimaryDark: #410
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #e88
TertiaryLight: #c66
TertiaryMid: #944
TertiaryDark: #633
This tiddler shows some more complex effects that can be obtained with cunning use of CSS. Not all of these will work properly on all browsers because of differences in CSS implementation, but they should fail gracefully.
You can have special formatting for a specific, named tiddler like this:
{{{
#tiddlerHelloThere .title {
background-color: #99aaee;
}
}}}
Or for the first displayed tiddler:
{{{
div.tiddler:first-child .title {
font-size: 28pt;
}
}}}
Or just for the first line of every tiddler:
{{{
.viewer:first-line {
background-color: #999999;
}
}}}
Or just for the first letter of every tiddler:
{{{
.viewer:first-letter {
float: left;
font-size: 28pt;
font-weight: bold;
}
}}}
Or just for tiddlers tagged with a particular tag (note that this won't work for tags that contain spaces):
{{{
div[tags~="welcome"].tiddler .viewer {
background-color: #ffccaa;
}
div[tags~="features"].tiddler .viewer {
background-color: #88aaff;
}
}}}
If you check this box in the InterfaceOptions, TiddlyWiki will automatically SaveChanges every time you edit a tiddler. In that way there's a lot less chance of you losing any information.
However, if you also have the SaveBackups checkbox ticked, you'll end up with a lot of archived files. You may prefer to select either one or the other.
One of the great strengths of TiddlyWiki is the way that its interface can be customised by editting various shadow tiddlers. However, a problem that has consistently emerged is the difficulty of reconciling the needs of authors, who need access to the full array of TiddlyWiki features, and the needs of ordinary readers, who generally benefit from seeing a restricted set of functionality more suited to their needs.
The new backstage area in release 2.2 offers a solution to this conundrum by providing a consistent way of accessing authoring functionality that is independent of the interface customisations (so, even if you blast away the contents of your PageTemplate, you can still access the backstage area).
The backstage area is only available when a TiddlyWiki is edittable - typically meaning that it's been opened off of a {{{file://}}} URL. It appears as an unobtrusive link in the topright corner of the page. Clicking it reveals the backstage toolbar consisting of commands like {{{saveChanges}}} and drop-down tasks like ImportTiddlers, SyncMacro, PluginManager and Tweak (which provides access to the new OptionsMacro).
|''URL:''|http://tiddlywiki.bidix.info/|
|''Description:''|Repository for BidiX's TiddlyWiki Extensions|
|''Author:''|BidiX|
To make quoted bits of text stand out, you can use BlockQuotes within your [[tiddler]]s, like this:
JeremyRuston said:
<<<
A 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.
<<<
Like BulletPoints and NumberedBulletPoints, you can have multiple levels of BlockQuotes. Just edit this tiddler to see how it's done.
>level 1
>level 1
>>level 2
>>level 2
>>>level 3
>>>level 3
>>level 2
>level 1
|''URL:''|http://bob.mcelrath.org/plugins.html|
|''Description:''|Bob McElrath's Plugins|
|''Author:''|BobMcElrath|
<br/>''~TiddlyWiki works with all major desktop browsers'' on Windows, Macintosh and Linux and many mobile browsers such as the Apple iPhone and the Nokia 770/N800
''You can ~SaveChanges with'' ~FireFox, Opera, ~InternetExplorer for Windows, Safari, and Camino
~BidiX has created an adaptation of the ~TiddlyWiki user interface specially for the iPhone
<<tabs "" [[Intro ]] "" [[BrowserIntro]] [[Camino ]] "Camino" [[Camino]] [[FireFox ]] "FireFox" [[FireFox]] [[InternetExplorer ]] "InternetExplorer" [[InternetExplorer]] [[Opera ]] "Opera" [[Opera]] [[Safari ]] "Safari" [[Safari]] [[SaveChanges ]] "SaveChanges" [[SaveChanges]] [[TiddlySaver ]] "TiddlySaver" [[TiddlySaver]] >>
Creating BulletPoints is simple.
* Just add an asterisk
* at the beginning of a line.
** If you want to create sub-bullets
** start the line with two asterisks
*** And if you want yet another level
*** use three asterisks
* Edit this tiddler to see how it's done
* You can also do NumberedBulletPoints
<br/>The Mozilla-based [[Camino browser|http://www.caminobrowser.org/]] on Macintosh OS X works well with TiddlyWiki, including the ability to SaveChanges.
Abandons any pending edits to the current tiddler, and switches it the default view. It is used with the ToolbarMacro like this:
{{{
<<toolbar cancelTiddler>>
}}}
When you upload a TiddlyWiki to a web server, if doesn't load properly, it may be a CharacterEncoding issue.
TiddlyWiki uses Unicode ~UTF-8 encoding and won't load properly if your host is serving it as ~ISO-8859-1. You should be able to check this by loading another page on the server in FireFox and selecting 'Page Info' on the 'Tools' menu.
If this is the case, it should be reasonably easy to sort out. We recommend that you contact your server host and ask them to serve it in ~UTF-8 mode. If you are more technically hands-on, you may be able to [[solve the issue yourself|http://www.w3.org/International/questions/qa-htaccess-charset]].
Closes all other open tiddlers, except for any that are being editted. It is used with the ToolbarMacro like this:
{{{
<<toolbar closeOthers>>
}}}
Closes the current tiddler, regardless of whether it is being editted. It is used with the ToolbarMacro like this:
{{{
<<toolbar closeTiddler>>
}}}
PageTemplate
|>|>|SiteTitle - SiteSubtitle|
|MainMenu|DefaultTiddlers<<br>><<br>><<br>><<br>>ViewTemplate<<br>><<br>>EditTemplate|SideBarOptions|
|~|~|OptionsPanel|
|~|~|AdvancedOptions|
|~|~|<<tiddler Configuration.SideBarTabs>>|
''StyleSheet:'' StyleSheetColors - StyleSheetLayout - StyleSheetPrint
SiteUrl
SideBarTabs
|[[Timeline|TabTimeline]]|[[All|TabAll]]|[[Tags|TabTags]]|>|>|[[More|TabMore]] |
|>|>||[[Missing|TabMoreMissing]]|[[Orphans|TabMoreOrphans]]|[[Shadowed|TabMoreShadowed]]|
@@margin-left:.5em;<<slider chkContents SideBarTabs "contents »" "show
lists of tiddlers contained in this document">>@@
~TiddlyWiki has an enthusiastic and friendly [[Community]] of people around the world helping to grow and improve it. But there's always more to do and we welcome any offers of assistance. There are many ways that you can help:
* Testing and [[reporting bugs|http://trac.tiddlywiki.org/wiki/ReportingBugs]] against the core code. Clear, easily reproducible bug reports are incredibly useful and really help the team improve the quality of ~TiddlyWiki
* [[Contributing code|http://trac.tiddlywiki.org/wiki/ContributingCode]]
* [[Making translations|http://trac.tiddlywiki.org/wiki/Translations]]
* Documentation needs planning, writing and editing, particularly user guide information at http://www.tiddlywiki.org
If you would like to make a financial contribution, ~TiddlyWiki is legally owned by the not-for-profit [[UnaMesa Foundation|http://www.unamesa.org/]] which welcomes donations.
You can wrap any text in an HTML {{{<span>}}} or {{{<div>}}} with a specified CSS class. This allows custom CSS styling in a nice, modular way. By placing a rule in your StyleSheet tiddler like {{{.wrappingClass{color: #666; background: #bbb} }}} you can markup a piece of text in the tiddler using this code:
{{{
{{wrappingClass{Text that is now accentuated}}}
}}}
{{wrappingClass{Text that is now accentuated}}}
By default, the text is placed in a {{{<span>}}}. To use a {{{<div>}}} instead, insert a line break before the text:
{{{
{{wrappingClass{
Text that is now accentuated}}}
}}}
{{wrappingClass{
Text that is now accentuated}}}
Sometimes it's necessary to include custom HTML markup in the {{{<head>}}} of a TiddlyWiki file - typically for compatibility with ad serving software, external libraries, or for custom meta tags. The CustomMarkup operation defines four shadow tiddlers whose contents are spliced into the saved HTML file. (If you do a view/source you'll see the markers referred to below).
|!Title |!Location |!Marker |
|MarkupPreHead |Start of the {{{<head>}}} section |{{{<!--PRE-HEAD-START-->}}} |
|MarkupPostHead |End of the {{{<head>}}} section |{{{<!--POST-HEAD-START-->}}} |
|MarkupPreBody |Start of the {{{<body>}}} section |{{{<!--PRE-BODY-START-->}}} |
|MarkupPostBody |End of the {{{<body>}}} section |{{{<!--POST-BODY-START-->}}} |
MarkupPreHead is the only one with shadow content: a link to the default location of the RSS feed.
Starting with this revision, you can skin TiddlyWiki with a special StyleSheet tiddler containing your own CSS style sheet declarations. Unlike hacking the HTML directly, the StyleSheet tiddler withstands upgrading to a new version of the TiddlyWiki code (see HowToUpgrade). You can also use the NestedStyleSheets feature to structure your CSS declarations.
The ExampleStyleSheet shows some of the basic options you can control (see AnotherExampleStyleSheet for more complex examples). SaveChanges and then click refresh in your browser to see StyleSheet changes. Any errors in your CSS syntax will be caught and displayed, but they shouldn't stop TiddlyWiki from working.
<br/>''You can customise the appearance and'' behaviour of TiddlyWiki to almost any degree you want:<br/>
* Use the ColorPalette to change the basic colour scheme
* Create a CustomStyleSheet for finer grained control over the appearance
* Customise the PageTemplate, ViewTemplate or EditTemplate to change the composition of the page and the layout of individual tiddlers
* Use off-the-shelf themes from [[TiddlyThemes|http://tiddlythemes.com/]]
* Visit the [[Configuration]] summary to see all the special configuration tiddlers
* Install [[Plugins]] to extend the core functionality (find them at [[TiddlyVault|http://tiddlyvault.tiddlyspot.com/]] or you can try [[writing or adapting your own|http://gimcrackd.com/etc/src/codex/]])
* Use TiddlyBookmarklets for low level hacking of TiddlyWiki documents
<br/>There are also a bunch of TiddlyWikiTools that you can use to enhance TiddlyWiki.
Several [[Macros]] including the TodayMacro take a DateFormatString as an optional argument. This string can be a combination of ordinary text, with some special characters that get substituted by parts of the date:
* {{{DDD}}} - day of week in full (eg, "Monday")
* {{{ddd}}} - short day of week (eg, "Mon")
* {{{DD}}} - day of month
* {{{0DD}}} - adds a leading zero
* {{{DDth}}} - adds a suffix
* {{{WW}}} - ISO-8601 week number of year
* {{{0WW}}} - adds a leading zero
* {{{MMM}}} - month in full (eg, "July")
* {{{mmm}}} - short month (eg, "Jul")
* {{{MM}}} - month number
* {{{0MM}}} - adds leading zero
* {{{YYYY}}} - full year
* {{{YY}}} - two digit year
* {{{wYYYY}}} - full year with respect to week number
* {{{wYY}}} two digit year with respect to week number
* {{{hh}}} - hours
* {{{0hh}}} - adds a leading zero
* {{{hh12}}} - hours in 12 hour clock
* {{{0hh12}}} - hours in 12 hour clock with leading zero
* {{{mm}}} - minutes
* {{{0mm}}} - minutes with leading zero
* {{{ss}}} - seconds
* {{{0ss}}} - seconds with leading zero
* {{{am}}} or {{{pm}}} - lower case AM/PM indicator
* {{{AM}}} or {{{PM}}} - upper case AM/PM indicator
Deletes the current tiddler. A confirmation dialogue is displayed unless disabled with the ConfirmBeforeDeleting checkbox in AdvancedOptions. It is used with the ToolbarMacro like this:
{{{
<<toolbar deleteTiddler>>
}}}
/***
|''Name''|DeprecatedFunctionsPlugin|
|''Description''|Provides support for functions removed from the TiddlyWiki core|
|''Version''|1.0.0|
|''Status''|stable|
|''Source''|http://www.tiddlywiki.com/plugins.html#DeprecatedFunctionsPlugin|
|''~CodeRepository:''|http://svn.tiddlywiki.org/Trunk/association/plugins/DeprecatedFunctionsPlugin/DeprecatedFunctionsPlugin.js |
|''License''|[[BSD open source license]]|
|''~CoreVersion''|2.3.0|
|''Feedback''|[[TiddlyWiki community|http://groups.google.com/group/TiddlyWiki]] |
|''Keywords''|legacySupport|
!Code
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};
//--
//-- Deprecated code
//--
// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};
// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var text = lookaheadMatch[1];
if(config.browser.isIE)
text = text.replace(/\n/g,"\r");
createTiddlyElement(w.output,"pre",null,null,text);
w.nextMatch = lookaheadRegExp.lastIndex;
}
};
// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
createTiddlyElement(place,"br");
};
// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
var i = this.indexOf(item);
return i == -1 ? null : i;
};
// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
return store.getLoader().internalizeTiddler(store,this,title,divRef);
};
// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
return store.getSaver().externalizeTiddler(store,this);
};
// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
return store.allTiddlersAsHtml();
}
// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
refreshPageTemplate(title);
}
// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
story.displayTiddlers(srcElement,titles,template,animate);
}
// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
story.displayTiddler(srcElement,title,template,animate);
}
// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;
// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");
}
//}}}
TiddlyWiki is now owned by UnaMesa, a non-profit foundation. Part of it's purpose is to provide a means for people who enjoy using TiddlyWiki to usefully reward the members of the community who have helped to create it, and so we will be exploring ways of accepting and distributing donations. For the moment, we don't have a formal scheme, but would encourage people to donate directly to individuals where they can.
<<<
On a personal note (writes JeremyRuston), in the two years that I had a personal donation account before I took up a [[commercial position with BT|http://jermolene.wordpress.com/2007/05/29/i-for-one-welcome-my-new-bt-overlords/]], just under a 100 people donated a total of nearly £1500 via PayPal. Knowing how much effort it is to make such a payment, I'm truly grateful to everyone who took the trouble, many thanks. I used the money to buy camera equipment, a [[hobby|http://flickr.com/photos/jermy]] that I couldn't have pursued at the time otherwise.
<<<
<br/>''To download an empty ~TiddlyWiki'', right click [[here|http://www.tiddlywiki.com/empty.html]] and select "Save as" to save a copy to your computer. This is version <<version>> of ~TiddlyWiki; the release notes can be found [[here|http://trac.tiddlywiki.org/wiki/History]].
''Once you've downloaded your'' ~TiddlyWiki file, the other tabs above will help you get started (we recommend you read the first two before doing anything important):
*Saving
*Editing
*Formatting
*Plugins
*Help and Support
Because TiddlyWiki is a single HTML file, you've actually already downloaded the entire software just by viewing this site. If you want to be able to SaveChanges, you can save your own blank TiddlyWiki to your local drive by right clicking on [[this link to empty.html|empty.html]] and selecting 'Save link as...' or 'Save target as...'. You can choose where to save the file, and what to call it (but make sure that it's saved in HTML format and with an HTML extension).
@@There can be confusing and subtle differences between different browsers. Some points to watch:@@
* If you're using [[Safari]] or [[Opera]] you will also need to download the [[TiddlySaver.jar|TiddlySaver.jar]] applet to the same folder
* If you're using Windows XP Service Pack 2 or Windows Vista, check for known ServicePack2Problems and VistaIssues
* Do ''not'' use the File/Save command in your browser to save TiddlyWiki, because of SaveUnpredictabilities.
* Make sure that you're saving in HTML (or "page source" format), not one of the new-fangled archive formats
If you're already using TiddlyWiki, see HowToUpgrade. If you want to save a complete copy of this site, including all the instructions and other text, you can use this [[this link|index.html]].
/***
|''Name:''|''dropTags''|
|''Version:''|0.5 (12-May-2006)|
|''Created by:''|SaqImtiaz|
|''Location:''|http://tw.lewcid.org/#DropTagsMacro|
|''Description:''|provides a drop down list of tags in the current tiddler,<<br>> a replacement for the core tags macro.|
|''Documentation:''|DropTagsMacroDocumentation |
|''Source Code:''|DropTagsMacroSource |
|''Requires:''|~TW2.07|
!About
*provides a drop down list of tags in the current tiddler, a replacement for the core tags macro.
''I recommend using either TaggerPlugin or monkeyTagger, with dropTags and dropTagging in the toolbar:''
!Usage
{{{<<dropTags>>}}} for <<dropTags>>
or {{{<<dropTags 'custom label'>>}}} for <<dropTags 'custom label'>>
!Installation:
*Copy this tiddler to your TW with the systemConfig tag
* copy the following to your ViewTemplate:
#either {{{<div class='tagged' macro='dropTags'></div>}}} to add to next to the tags macro in the viewer area, or
#{{{<div class='toolbar' >
<span style="padding-right:8.75em;" macro='dropTags "current tags: "+config.macros.dropTags.dropdownchar}}'></span>
<span macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></span>
</div>}}}
!History
*May 12th, version 0.5, fixed some nesting bugs, added support for IntellitaggerPlugin.
*May 3rd, version 0.41, made compatible with CustomPopups.
!Source Code
***/
//{{{
config.macros.dropTags={};
config.macros.dropTags.dropdownchar = (document.all?"▼":"▾"); // the fat one is the only one that works in IE
config.macros.dropTags.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
var arrow=config.macros.dropTags.dropdownchar;
var droptaglabel= (params[0] && params[0] !='.')? params[0]+arrow: 'tags'+arrow;
var droptagtooltip="current tags for this tiddler";
var droptag = function(e){
if (!e) var e = window.event;
var popup = Popup.create(this);
var lingo = config.views.wikified.tag;
if (tiddler.tags.length==0)
createTiddlyElement(popup,"li",null,"listTitle",lingo.labelNoTags);
else
for(var t=0; t<tiddler.tags.length; t++)
{createTagButton(createTiddlyElement(popup,"li"),tiddler.tags[t],tiddler.title);}
if (version.extensions.IntelliTaggerPlugin)
{createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
abego.IntelliTagger.createEditTagsButton(tiddler, createTiddlyElement(popup,"li"),"[IntelliEdit]","Edit tags with Intellitagger");}
Popup.show(popup,false);
e.cancelBubble = true;
if (e.stopPropagation)
e.stopPropagation();
return(false);
};
createTiddlyButton(place,droptaglabel,droptaglabel,droptag,"button","dropTagBtn");
};
setStylesheet(
".popup .highlight{background: #fe8; color:#000;}\n"+
"#nestedtagger {background:#abf; border: 1px solid #0331BF;}\n"+
"",
"DropTagsStyles");
if (!config.macros.tagger)
window.onClickTag=function(e){
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var nested = (!isNested(theTarget));
if ((Popup.stack.length > 1)&&(nested==true)) {Popup.removeFrom(1);}
else if(Popup.stack.length > 0 && nested==false) {Popup.removeFrom(0);};
var theId = (nested==false)? "popup" : "nestedtagger";
var popup = createTiddlyElement(document.body,"ol",theId,"popup",null);
Popup.stack.push({root: this, popup: popup});
var tag = this.getAttribute("tag");
var title = this.getAttribute("tiddler");
if(popup && tag)
{
var tagged = store.getTaggedTiddlers(tag);
var titles = [];
var li,r;
for(r=0;r<tagged.length;r++)
if(tagged[r].title != title)
titles.push(tagged[r].title);
var lingo = config.views.wikified.tag;
if(titles.length > 0)
{
var openAll = createTiddlyButton(createTiddlyElement(popup,"li"),lingo.openAllText.format([tag]),lingo.openAllTooltip,onClickTagOpenAll);
openAll.setAttribute("tag",tag);
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
for(r=0; r<titles.length; r++)
{
createTiddlyLink(createTiddlyElement(popup,"li"),titles[r],true);
}
}
else
createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),lingo.popupNone.format([tag]));
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
var h = createTiddlyLink(createTiddlyElement(popup,"li"),tag,false);
createTiddlyText(h,lingo.openTag.format([tag]));
}
Popup.show(popup,false);
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return(false);
}
if (!window.isNested)
window.isNested = function(e) {
while (e != null) {
var contentWrapper = document.getElementById("contentWrapper");
if (contentWrapper == e) return true;
e = e.parentNode;
}
return false;
};
config.shadowTiddlers.DropTagsMacroDocumentation="The documentation is available [[here.|http://tw.lewcid.org/#DropTagsMacroDocumentation]]";
config.shadowTiddlers.DropTagsMacroSource="The documentation is available [[here.|http://tw.lewcid.org/#DropTagsMacroDocumentation]]";
//}}}
Try holding down the alt- or shift-key while clicking on a link to a tiddler, on the 'options' button or on the CloseButton for a tiddler. Kind of a respectful homage to Mac OS X, which does something similar for many of its system animations. (On browsers like InternetExplorer that use the shift key to open a new window, it's best to use the alt-key).
Switches the current tiddler to the current edit view. It is used with the ToolbarMacro like this:
{{{
<<toolbar editTiddler>>
}}}
<br/>''~TiddlyWiki is made up of chunks of information called tiddlers.'' You're reading a tiddler called 'Editing' right now.
''When you open an empty ~TiddlyWiki file for'' the first time, you'll be presented with a tiddler called GettingStarted. You can use this to create the basic structure of your ~TiddlyWiki; the Title, Sub-title and Main Navigation. You can close tiddlers by clicking the 'close' link above each tiddler.
''You will notice that each tiddler has a'' command menu in it's top right corner (close, edit, and so on). You can use this to send the tiddler into edit mode, or if you prefer you can simply double click the tiddler when it's in read mode. When you're finished, click on done.
''If you'd like your tiddlers to be assigned to you'', you can enter your name in the relevant field on the right hand side (the 'sidebar'). If you can't see this field, click on [[this link|InterfaceOptions]] to reveal it.
''There are two ways to make links between tiddlers. ''If you're linking to a tiddler which already exists, put the tiddler name in double square brackets (Double click here, and you'll see double square brackets around the word [[example]]). You can use this technique to point to (and create) a new tiddler, or alternatively just write the tiddler name by joining words starting with capital letters, LikeThis. When you save the tiddler and click on the link, you can then add content to your new tiddler.
{{{
[img[title|filename]]
[img[filename]]
[img[title|filename][link]]
[img[filename][link]]
}}}
Images can be included by their filename or full URL. It's good practice to include a title to be shown as a tooltip, and when the image isn't available. An image can also link to another tiddler or or a URL
[img[Romanesque broccoli|fractalveg.jpg][http://www.flickr.com/photos/jermy/10134618/]]
{{{
[img[Fractal vegetable|fractalveg.jpg]]
[img[This is shown as a tooltip|http://example.com/image.jpg]]
[img[http://example.com/image.jpg]]
[img[http://example.com/image.jpg][ExampleDotCom]]
}}}
The tooltip is optional.
[<img[Forest|forest.jpg][http://www.flickr.com/photos/jermy/8749660/]][>img[Field|field.jpg][http://www.flickr.com/photos/jermy/8749285/]]You can also float images to the left or right: the forest is left aligned with {{{[<img[}}}, and the field is right aligned with {{{[>img[}}}.
@@clear(left):clear(right):display(block):You can use CSS to clear the floats@@
{{{
[<img[A woody bit of Hampstead Heath|forest.jpg]]
[>img[A field near Milton Keynes|field.jpg]]
}}}
There's now an option under InterfaceOptions to allow TiddlyWiki's animation effects to be turned off.
/***
|''Name:''|ExamplePlugin|
|''Description:''|To demonstrate how to write TiddlyWiki plugins|
|''Version:''|2.0.3|
|''Date:''|Sep 22, 2006|
|''Source:''|http://www.tiddlywiki.com/#ExamplePlugin|
|''Author:''|JeremyRuston (jeremy (at) osmosoft (dot) com)|
|''License:''|[[BSD open source license]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
***/
//{{{
// Uncomment the following line to see how the PluginManager deals with errors in plugins
// deliberateError();
// Log a message
pluginInfo.log.push("This is a test message from " + tiddler.title);
//}}}
#displayArea {background-color: #ffccff; }
#mainMenu {border: 1px solid #ffff88; }
#commandPanel {background-color: #008800; }
config.animFast = 0.12; // Speed for animations (lower == slower)
config.animSlow = 0.01; // Speed for EasterEgg animations
config.views.wikified.toolbarEdit.text = "Edit away, it won't get saved";
TiddlyWiki is being used for all kinds of things:
* EliseSpringer, a philospher at Wesleyan University in Connecticut, USA, is using TiddlyWiki for her homepage at http://espringer.web.wesleyan.edu/ and for [[ReasoningWell|http://reasoningwell.tiddlyspot.com/]], a wiki for her Philosophy faculty
* The website of a [[body-building club in Paris|http://www.superphysique.net/]]
* Teachers in Massachusetts to [[teach mathematics|http://luceatlux.net/mcasmath10/]]
* Schools in South Australia to [[distribute class materials to students|https://secure.ait.org/wiki/background.htm]]
* ChrisJohnson's [[personal home page|http://www.spkml.com/]]
* JacksonBoyle's collection of [[recipes|http://jacksonboyle.com/kitchen.htm]]
* JonathanCamp's guide to [[Prince 2 project management|http://www.microupdate.net/cms/doc/PrinceII.html]]
* BrandonSiegel's [[Case Personal Security Device Project|http://anubis.case.edu/398n]]
* MichaelDansie's site for the [[American Cryptogram Association|http://msig.med.utah.edu/RunningUtes/cryptogram/aca.html]]
* BrianHolland's [[student nodes|http://www.acsu.buffalo.edu/~bholland/]] from Buffalo Law School
* RuiCarmo's [[Python Grimoire|http://the.taoofmac.com/space/Python/Grimoire]], a sort of recipe book for the programming language Python
* Rich Kulesus' [[themer's blog|http://www.skinyourscreen.com/mrbiotech/]]
* Qliner Software are using TiddlyWiki to create the site for their [[hotkeys|http://www.qliner.com/hotkeys/]] product
* AndreasKänner's family home page at http://www.kaenner.de/
* MarkWygent of Wygent Reeds, a maker of Scottish bagpipe reeds from Delaware, has compiled a fascinating home page using TiddlyWiki at http://www.wygent.com/
* ChristopherJames has compiled a comprehensive guide to TabletPCs at http://www.tabletpcwiki.net/
* MiguelCentellas has created an extensive guide to Bolivian politics at http://www.centellas.org/politics/politiddly.html
* BrunoTiagoRodrigues has created a geocaching community site in Portuguese at http://travelbugrace.geocaching-pt.net/.
* CharlesStross, a celebrated British ScienceFiction writer, has used TiddlyWiki for his 'Tough Guide to the Rapture of the Nerds' at http://www.antipope.org/charlie/toughguide.html.
* KristofferNilausOlsen, a member of the Danish Student Group of Amnesty International, has used TiddlyWiki to collate reports of breaches of human rights. His site is at http://www.resultat.dk/sg/tw/students.html.
* MartinSilcock, an brand researcher working with Millward Brown, is using TiddlyWiki for his homepage at http://www.explorate.co.uk/.
* Many people are using the GTDTiddlyWiki variant for personal productivity, and there's been some interesting experiments in TiddlyWikiFiction.
Like most wikis, ~TiddlyWiki supports a range of simplified character formatting.
You can find a list on the [[TiddlyWiki.org website|http://tiddlywiki.org/wiki/TiddlyWiki_Markup]] or [[TW Help Formatting Text|http://twhelp.tiddlyspot.com/#FormattingText]]
Out of the box, TiddlyWiki offers:
* Works with all major desktop [[browsers]] on Windows, Macintosh and Linux and many mobile browsers such as the Apple iPhone and the Nokia 770/N800
** You can SaveChanges with FireFox, [[Opera]], InternetExplorer for Windows, [[Safari]], and [[Camino]]
** BidiX has created an adaptation of the TiddlyWiki user interface [[specially for the iPhone|http://www.apple.com/webapps/productivity/itwatiddlywikiforiphone.html]]
* The BackstageArea for handy access to authoring tools including [[importing|ImportTiddlers]] and [[synchronisation|http://www.tiddlywiki.org/wiki/Dev:Server_Adaptor_Mechanism]] of tiddlers with external files and servers
* Full text formatting including MonospacedText, ExtendedFormatting, NonWikiWordLinks, WikiWordEscape, PrettyLinks, SubHeadings, BulletPoints, NumberedBulletPoints, [[Tables]], BlockQuotes, HorizontalRules and the ability to use a CustomCssClass and InlineHTML
* [img[brixhamharbour.jpg][EmbeddedImages]]...EmbeddedImages
* [[Macros]] providing rich interactive features, including [[Sparklines]] and [[Gradients|GradientMacro]]
* InterfaceOptions and AdvancedOptions, including the ability to GenerateAnRssFeed, SaveBackups and AutoSave
* KeyboardShortcuts so you can finish editing a tiddler with Control-Enter or abandon it with Escape
* Extensive StartupParameters to control the behaviour of TiddlyWiki through specially crafted ~URLs
* There are [[translations]] of TiddlyWiki available in many languages, including Chinese, French, German, Spanish and Portuguese
The [[Community|Help and Support]] around TiddlyWiki has extended this basic functionality with a wide range of [[Plugins]] and TiddlyWikiAdaptations.
If you've any comments, corrections or observations about TiddlyWiki, the best way to get our attention is to post to the [[Community]] groups -- or write a blog entry.
FireFox lets you SaveChanges in TiddlyWiki, but you will see up to three dialogs asking your permission for the local file operations. You must allow all three operations for it to work properly. Note that you can select the //Remember this decision// option to avoid seeing the dialogs in future.
<<<
You can run into problems if you accidentally click 'Deny' on the dialog, and select //Remember this decision//.
To reverse the effects, first locate the file {{{prefs.js}}} in your FireFox profile directory. Under Windows you'll find it at something like {{{C:\Documents and Settings\Jeremy\Application Data\Mozilla\Firefox\Profiles\o3dhupu6.default\prefs.js}}}, where {{{Jeremy}}} is the name of your windows profile and {{{o3dhupu6}}} will be a similar string of gobbledegook. On the Mac it'll be at {{{~/Library/Application Support/Firefox/Profiles/o3dhupu6.default/prefs.js}}} and on most versions of Linux, at {{{~/.mozilla/firefox/o3dhupu6.default/prefs.js}}}.
Open the file in a text editor and find the line {{{user_pref("capability.principal.codebase.p0.denied", "UniversalXPConnect");}}} and simply replace the word {{{denied}}} with {{{granted}}}.
//(Thanks to JonScully for figuring out this fix)//
<<<
FireFox users should be aware that GreaseMonkey can break TiddlyWiki. There's also a rather unpredictable FireFoxKeyboardIssue.
Under FireFox, TiddlyWiki can get into a state where it ignores the arrow keys on the keyboard but accepts ordinary alphanumeric input. The triggers for this behaviour are unclear, but it doesn't just affect TiddlyWiki. The solution appears to be to locate the file {{{compreg.dat}}} in your FireFox profile folder and rename it to {{{compreg.dat.old}}}.
Released in September 2004, the [[first version|firstversion.html]] was pretty basic, weighing in at 52KB.
Here's one way to get a Flickr badge in TiddlyWiki:
<html>
<a href="http://www.flickr.com" style="text-align:center;">www.<strong style="color:#3993ff">flick<span style="color:#ff1c92">r</span></strong>.com</a><br>
<iframe style="background-color:#ffffff; border-color:#ffffff; border:none;" width="113" height="151" frameborder="0" scrolling="no" src="http://www.flickr.com/apps/badge/badge_iframe.gne?zg_bg_color=ffffff&zg_person_id=35468148136%40N01" title="Flickr Badge"></iframe>
</html>
Here's the HTML code to insert in a tiddler:
{{{
<html>
<a href="http://www.flickr.com" style="text-align:center;">www.<strong style="color:#3993ff">flick<span style="color:#ff1c92">r</span></strong>.com</a><br>
<iframe style="background-color:#ffffff; border-color:#ffffff; border:none;" width="113" height="151" frameborder="0" scrolling="no" src="http://www.flickr.com/apps/badge/badge_iframe.gne?zg_bg_color=ffffff&zg_person_id=35468148136%40N01" title="Flickr Badge"></iframe>
</html>
}}}
You'll need to know your Flickr person ID, which should replace the value "35468148136%40N01" in the HTML. There's a useful [[Flickr idGettr|http://eightface.com/code/idgettr/]] to help with this.
<br/>''Like most wikis'', ~TiddlyWiki supports a range of simplified character formatting.
''You can find a list on'' the [[TiddlyWiki.org website|http://tiddlywiki.org/wiki/TiddlyWiki_Markup]] or [[TW Help Formatting Text|http://twhelp.tiddlyspot.com/#FormattingText]] Below are a few examples:
|bgcolor:#04b; !To Produce |bgcolor:#04b; !Markup |
|bgcolor:#eaeaea; ''Bold'' |bgcolor:#eaeaea; {{{''Bold'' (double single quotes)}}} |
|bgcolor:#ccc; --Strikethrough-- |bgcolor:#ccc; {{{--Strikethrough-- (double hyphen) }}} |
|bgcolor:#eaeaea; __Underline__ |bgcolor:#eaeaea; {{{__Underline__ (double shift-hyphen)}}} |
|bgcolor:#ccc; //Italic// |bgcolor:#ccc; {{{//Italic// (double forward stroke)}}} |
|bgcolor:#eaeaea; Superscript: 12^^3^^=1728 |bgcolor:#eaeaea; {{{12^^3^^=1728 (double caret)}}} |
|bgcolor:#ccc; Subscript: C~~3~~H~~5~~N~~3~~O~~9~~ |bgcolor:#ccc; {{{C~~3~~H~~5~~N~~3~~O~~9~~ (double tilde)}}} |
NathanBower's GTDTiddlyWiki is a popular adaptation of TiddlyWiki geared towards DavidAllen's GettingThingsDone methodology for personal productivity. The [[original|http://shared.snapgrid.com/gtd_tiddlywiki.html]] is based on an obsolete, older version of TiddlyWiki; if you want to have the GTD look-and-feel but still be able to use the latest TiddlyWiki features, check out the GTD Style at [[TiddlerWiki|http://tiddlystyles.com/#GTDStyleSheet]]
A new feature for the ThirdVersion of TiddlyWiki is the ability to generate an RssFeed of its content. You can flick it on with a new addition to the InterfaceOptions. If enabled, it automatically saves an RSS 2.0 format file with the last few changed tiddlers in it. It's given the same filename as the TiddlyWiki file but with the ".xml" extension. Like all TiddlyWiki features, it's experimental, and will probably be a bit temperamental in your feedreader until the bugs are ironed out.
Note that you must set the tiddler SiteUrl to be the URL where your TiddlyWiki will be published. (Don't put leading spaces or line breaks before or after the URL).
The easiest way to learn about TiddlyWiki is to use it! Try clicking on various links and see what happens - you cannot damage tiddlywiki.com or your browser. (Use the <<closeAll>> button over on the right to clear all the displayed tiddlers and start again).
There is an extensive [[Community]] [[documentation wiki|http://www.tiddlywiki.org/]], including an invaluable [[FAQ|http://www.tiddlywiki.org/wiki/TiddlyWiki_FAQ]]. Other useful guides include:
* Jeremy Wagstaff's [[The Power of Tiddly|http://www.loosewireblog.com/2007/11/the-power-of-ti.html]]
* Dave Gifford's [[TiddlyWiki for the Rest of Us|http://www.giffmex.org/twfortherestofus.html]] and his [[slideshow introduction|http://www.giffmex.org/blog/?p=23]]
* Morris Gray's [[TW Help - TiddlyWiki help file for beginners|http://tiddlyspot.com/twhelp/]]
* Dmitri Popov's [[TiddlyWiki quick reference card|http://nothickmanuals.info/doku.php/cheatsheets]]
* Screencasts from [[JimVentola|http://faculty.massasoit.mass.edu/jventola/videocasts/tidhelp2/tidhelp2.html]] and [[LeonKilat|http://max.limpag.com/2006/09/07/using-a-tiddlywiki-a-video-guide/]].
When you're ready to create your own TiddlyWiki on your computer, follow the instructions in DownloadSoftware and SaveChanges. There is also a free hosted service at http://tiddlyspot.com/ that makes it easier to share your TiddlyWiki with others (for more demanding applications there are several other ServerSide solutions available).
|''URL:''|http://gimcrackd.com/etc/src/|
|''Description:''|Gimcrack'd: Code and Other Oddments|
|''Author:''|ChrisKlimas|
<<gradient horiz #bbbbbb #eeeeee #ffffff>>The new GradientMacro allows simple horizontal and vertical coloured gradients. They are constructed from coloured HTML elements, and don't require any images to work.>>
The GradientMacro is an ExtendedMacro that processes the text after it up until the next '>>' sequence. It looks like this:
{{{
<<gradient vert #ffffff #ffdddd #ff8888>>gradient fill>>
}}}
The first parameter can be ''vert'' or ''horiz'' to indicate the direction of the gradient. The following parameters are two or more colours (CSS RGB(r,g,b) format is also acceptable). The GradientMacro constructs a smooth linear gradient between each of the colours in turn.
| <<gradient vert #ffffff #ffdddd #ff8888>>No images were harmed in the making of this gradient fill>> | <<gradient vert #ffffff #ddffdd #88ff88>>No images were harmed in the making of this gradient fill>> | <<gradient vert #ffffff #ddddff #8888ff>>No images were harmed in the making of this gradient fill>> |
Inline CSS definitions can be added to gradient fills like this:
<<gradient vert #000000 #660000 #aa2222>>color:#ffffff;font-size:12pt;Darkness>>
{{{
<<gradient vert #000000 #660000 #aa2222>>color:#ffffff;font-size:12pt;Darkness>>
}}}
You can make an abrupt transition in the gradient by using the "snap" prefix, like this:
{{{
<<gradient vert #000000 #999999 snap:#aa2222 #ff444>>color:#ffffff;font-size:24pt;padding:4pt;More darkness>>
}}}
<<gradient vert #000000 #999999 snap:#aa2222 #ff444>>color:#ffffff;font-size:24pt;padding:4pt;More darkness>>
Several popular GreaseMonkey scripts can cause some or all features of TiddlyWiki to stop working - the default Linkify script seems to be particularly troublesome. There doesn't seem to be a //solid// way to disable GreaseMonkey from within TiddlyWiki (which is technically entirely understandable but does lead to a fairly grim user experience).
TiddlyWiki makes a great GuerillaWiki in situations where it's not practical to use a traditional wiki.
For instance, in a corporate setting, persuading an over-worked IT department to install you a Wiki server for you isn't always going to be possible overnight. And your PC is locked down so you can't install a conventional Wiki yourself. But, equally, you can't go and use one of the public hosted Wiki services because your Information Security department would not allow all that corporate data to flow into an outside server.
TiddlyWiki slices through those barriers by being usable on virtually all PCs.
<<tabs tabsCookie [[HelloThere ]] "" [[HelloThere]] [[Download ]] "" [[Download]] [[Saving ]] "" [[SaveChanges]] [[Editing ]] "" [[Editing]] [[Formatting ]] "" [[FormatExamples]] [[Plugins ]] "" [[Plugins]] [[Customisation ]] "" [[Customisation]] [[Help and Support ]] "" [[Help and Support]] >>{{floatright{<<toolbar editTiddler>><<toolbar closeTiddler>>}}}
<br/>@@font-size:12pt;color:#a00;Welcome to ~TiddlyWiki!@@<br/>
''~TiddlyWiki is a single html file containing'' all the characteristics of a [[wiki|WikiWikiWeb]] - all the content, all the functionality (including editing, saving, tagging and searching) and the style sheet. Because it's a single file, it's very portable - you can email it, put it on a web server or share it via a USB stick.
''But it's not just a wiki!'' It has very powerful plugin capabilities, so it can also be used as a platform for building new tools. You have full control over how it looks and behaves. For example, ~TiddlyWiki is already being used as:
@@color:#a00;
*A personal notebook
*A GTD ("Getting Things Done") productivity tool
*A collaboration tool
*For building websites (this site is a ~TiddlyWiki file!)
*For rapid prototyping
*...and much more!
@@
''You can import and export data'' to and from all sorts of places. There's a more detailed list of features [[here|Features]].
''You can have a play with this'' ~TiddlyWiki file by clicking on some of the links. Double click some of the text to see 'edit mode'. For the full range of functions, including editing and saving changes, [[Download]] a copy of the basic version to your desktop and open it from there. Have fun!
/***
|Name|HelloWorldMacro|
|Created by|SimonBaird|
|Location|http://simonbaird.com/mptw/#HelloWorldMacro|
|Version|1.1|
|Requires|~TW2.x|
!Description
It's a Hello World TiddlyWiki macros.
!History
* 11-Jan-06, version 1.1, updated for ~TW2.0
!Examples
|!Source|!Output|h
|{{{<<helloWorld dude>>}}}|<<helloWorld dude>>|
|{{{<<helloWorld 'to everyone'>>}}}|<<helloWorld 'to everyone'>>|
(You can use (single or double) quotes or double square brackets for params with spaces)
!Notes
This is intended to help you get started with customising your TW. To make the macro work you have to give this tiddler a tag of systemConfig then save and reload. To learn more about customising Tiddlywiki? Look at other people's plugins or... click View, Source in your browser and start reading. :)
!Code
***/
//{{{
config.macros.helloWorld = {};
config.macros.helloWorld.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
var who = params.length > 0 ? params[0] : "world";
wikify("Hello //" + who + "// from the '" + macroName + "' macro in tiddler [[" + tiddler.title + "]].", place);
}
//}}}
<br/>[>img[tiddlywiki.org logo|http://trac.tiddlywiki.org/chrome/site/tworg_logo_med.jpg][http://www.tiddlywiki.org]]''~TiddlyWiki today is the result of the efforts of dozens of people'' around the world generously contributing their time and skill, and offering considerable help and support.
''If you'd like help getting your ~TiddlyWiki project off the ground'', perhaps the best place to start is the community wiki at http://www.tiddlywiki.org. It contains detailed project documentation, as well as the master copy of the ~TiddlyWiki source code, and a system for tracking bugs and enhancement requests. The community welcomes [[contributions|Contribute]].
<<tiddler [[Tutorials and Guides]]>>
''Also, there are two Google Group discussion forums'' for discussions about ~TiddlyWiki, whether basic entry level questions or more complex challenges! They are the best places to ask questions about ~TiddlyWiki, and to connect with other enthusiasts:
* A ~TiddlyWiki group for general discussion, bug reports and announcements at http://groups.google.com/group/TiddlyWiki
* A ~TiddlyWikiDev group for discussion about ~TiddlyWiki development at http://groups.google.com/group/TiddlyWikiDev
''There are also resources for non-English language speakers'',
* ~TiddlyWikiFR, in French, at http://groups.google.com/group/TiddlyWikiFR
* ~TiddlyWiki 華語支援論壇, in Chinese, at http://groups.google.com/group/TiddlyWiki-zh
* ~TiddlyWikiPT, in Brazilian Portuguese, at http://groups.google.com.br/group/tiddlywikipt
Many ~TiddlyWiki hackers hang out on our IRC room, #tiddlywiki on irc.freenode.net.
~TiddlyWiki is legally owned by [[The UnaMesa Foundation|http://www.unamesa.org/]].
This is an advanced option that lets you choose whether editting features are shown when a TiddlyWiki file is viewed over {{{http:}}} (as opposed to {{{file:}}}).
To publish a TiddlyWiki with the editting features hidden you'll need to create a tiddler tagged with 'systemConfig' and include in it the line:
{{{
config.options.chkHttpReadOnly = true;
}}}
End users can then override the setting using the AdvancedOptions panel.
You can divide a tiddler into
----
sections by typing four dashes on a line by themselves
The core TiddlyWiki code is regularly updated with bug fixes and new features. If you're using an earlier revision of TiddlyWiki, you should consider upgrading to the latest version.
The steps you need to take depend on which version of TiddlyWiki you are upgrading from. From version 2.4.0 onwards, you can upgrade to the latest version using the 'Upgrade' tab in the BackstageArea, as described below. If you're using an earlier version of TiddlyWiki, you'll need to follow [[these instructions|HowToUpgradeOlderTiddlyWikis]] instead.
! Upgrading from TiddlyWiki 2.4.0+ to the most recent version
* Open the BackstageArea by clicking the 'backstage' button at the top right
* Click on the 'Upgrade' tab
* Click on the 'Upgrade' button, and follow the prompts
The steps you need to take depend on which version of TiddlyWiki you are upgrading from. From version 2.4.0 onwards, you can upgrade to the latest version using the 'Upgrade' tab in the BackstageArea, as described in HowToUpgrade. If you're using an earlier version of TiddlyWiki, you'll need to follow these instructions instead:
! Upgrading from TiddlyWiki earlier than version 2.4.0 to the latest version
* Download a fresh, empty version of TiddlyWiki by right-clicking on [[this link|http://www.tiddlywiki.com/empty.html]], selecting 'Save target' or 'Save link' and saving it in a convenient location as (say) "mynewtiddlywiki.html"
* Open the new TiddlyWiki file in your browser
* Choose ''import'' from the BackstageArea at the top of the window (you may need to click the 'backstage' button at the upper right to show the BackstageArea)
* Click the ''browse'' button and select your original TiddlyWiki file (say, "mytiddlywiki.html") from the file browser
* Click the ''open'' button on the import wizard; a list of all of your tiddlers is displayed
* Click on the top-left checkbox to select all the tiddlers in the list
* Scroll down to the bottom of the wizard and ensure that the checkbox labelled //Keep these tiddlers linked to this server...// is ''clear''
* Click the ''import'' button
The most likely cause of the upgrade process not working properly is that one of the [[Plugins]] you're using is not compatible with a change in the new release. If so, you can repeat the process omitting the troublesome plugins.
Entities in HTML documents allow characters to be entered that can't easily be typed on an ordinary keyboard. They take the form of an ampersand (&), an identifying string, and a terminating semi-colon (;). There's a complete reference [[here|http://www.htmlhelp.com/reference/html40/entities/]]; some of the more common and useful ones are shown below. Also see [[Paul's Notepad|http://thepettersons.org/PaulsNotepad.html#GreekHtmlEntities%20HtmlEntitiesList%20LatinHtmlEntities%20MathHtmlEntities]] for a more complete list.
|>|>|>|>|>|>| !HTML Entities |
| &nbsp; | | no-break space | | &apos; | ' | single quote, apostrophe |
| &ndash; | – | en dash |~| &quot; | " | quotation mark |
| &mdash; | — | em dash |~| &prime; | ′ | prime; minutes; feet |
| &hellip; | … | horizontal ellipsis |~| &Prime; | ″ | double prime; seconds; inches |
| &copy; | © | Copyright symbol |~| &lsquo; | ‘ | left single quote |
| &reg; | ® | Registered symbol |~| &rsquo; | ’ | right single quote |
| &trade; | ™ | Trademark symbol |~| &ldquo; | “ | left double quote |
| &dagger; | † | dagger |~| &rdquo; | ” | right double quote |
| &Dagger; | ‡ | double dagger |~| &laquo; | « | left angle quote |
| &para; | ¶ | paragraph sign |~| &raquo; | » | right angle quote |
| &sect; | § | section sign |~| &times; | × | multiplication symbol |
| &uarr; | ↑ | up arrow |~| &darr; | ↓ | down arrow |
| &larr; | ← | left arrow |~| &rarr; | → | right arrow |
| &lArr; | ⇐ | double left arrow |~| &rArr; | ⇒ | double right arrow |
| &harr; | ↔ | left right arrow |~| &hArr; | ⇔ | double left right arrow |
The table below shows how accented characters can be built up by subsituting a base character into the various accent entities in place of the underscore ('_'):
|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>| !Accented Characters |
| grave accent | &_grave; | À | à | È | è | Ì | ì | Ò | ò | Ù | ù | | | | | | |
| acute accent | &_acute; | Á | á | É | é | Í | í | Ó | ó | Ú | ú | | | Ý | ý | | |
| circumflex accent | &_circ; | Â | â | Ê | ê | Î | î | Ô | ô | Û | û | | | | | | |
| umlaut mark | &_uml; | Ä | ä | Ë | ë | Ï | ï | Ö | ö | Ü | ü | | | Ÿ | ÿ | | |
| tilde | &_tilde; | Ã | ã | | | | | Õ | õ | | | Ñ | ñ | | | | |
| ring | &_ring; | Å | å | | | | | | | | | | | | | |
| slash | &_slash; | | | | | | | Ø | ø | | | | | | | |
| cedilla | &_cedil; | | | | | | | | | | | | | | | Ç | ç |
To import tiddlers from another ~TiddlyWiki file, or from an external website, follow these instructions.
#Open your ~TiddlyWiki file from your computer.
#Click on the 'Backstage' link that you can see at the very top right hand side of the page.
#In the expanded menu, click on 'Import'. You will then see a window that looks like this - and you can follow the guidance from there. Note that you may need to grant authorisation to your ~TiddlyWiki file to import tiddlers - this is fine and expected.
<<importTiddlers>>
//Note also that the popular [[Firebug|http://www.joehewitt.com/software/firebug/]] extension for Firefox interferes with ImportTiddlers if its "Show XMLHttpRequest" option is switched on//
When you type more than three characters in the search box at the upper right, any matching tiddlers are automatically displayed with the text highlighted. There's a couple of minor issues: the highlights don't get removed when you clear the search, and occasionally, on some browsers, keystrokes get missed if you type quickly so you may need to click the 'search' button to manually trigger the search.
TiddlyWiki lets you write ordinary HTML by enclosing it in {{{<html>}}} and {{{</html>}}}:
<html>
<a href="javascript:;" onclick="onClickTiddlerLink(event);" tiddlyLink="TiddlyWiki" style="background-color: yellow;">Link to wikiwords from HTML</a>
</html>
The source for the above is:
{{{
<html>
<div style="background-color: yellow;">
<a href="javascript:;" onclick="onClickTiddlerLink(event);" tiddlyLink="Macros">Link to wikiwords from HTML</a>
</div>
</html>
}}}
HTML 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). However it doesn't work for some JavaScript code libraries; see CustomMarkup for another way to include custom HTML in your TiddlyWiki.
[[Plugins]] are just tiddlers containing JavaScript code that is tagged with <<tag systemConfig>>. TiddlyWiki executes any [[Plugins]] as it loads; they can add [[Macros]] or otherwise extend and enhance the base code.
The recommended way to install a plugin into your own copy of TiddlyWiki is to use ImportTiddlers (there are instructions for ManuallyInstallIngPlugins when required).
InterfaceOptions are displayed when you click the 'options' button on the right. They are saved in a cookie on your browser, making them sticky between visits:
<<<
<<tiddler OptionsPanel>>
<<<
* The user name for edits should be set //before// starting to edit things (ouch. another bug)
* SaveBackups gives the option of whether to generate backup files
* AutoSave gives the option of automatically saving every time a change is made
* RegExpSearch allows more complex search expressions
* CaseSensitiveSearch does as its name implies
<br/>''TiddlyWiki works on'' ~InternetExplorer 6.x and above under Windows. It also allows you to SaveChanges, albeit there are some annoying XP ServicePack2Problems and VistaIssues to work around.
Known problems with TiddlyWiki under InternetExplorer:
* [[Gradient|GradientMacro]] fills sometimes appear in the wrong place until you move the mouse over the tiddler
* Horizontal gradients don't work correctly
* Links to tiddlers with multiple consecutive spaces in their titles is broken
* Runs of spaces within tiddlers get conflated into a single space when you edit a tiddler. This is particularly annoying when using MonospacedText blocks
<br/>''There are several options'' that allow you to set up your ~TiddlyWiki to suit your requirements.
|''URL:''|http://jackparke.googlepages.com/jtw.html|
|''Description:''|Plugins, Macros and Hacks|
|''Author:''|JackParker|
I'm the original creator of TiddlyWiki (nowadays, it's more of a [[group effort|Community]]). I work at [[BT|http://www.btplc.com/]] where I am Head of Open Source Innovation. I run the [[Osmosoft]] team, and generally try to help BT be better at understanding and participating in open source.
I can be reached at {{{jeremy (at) osmosoft (dot) com}}}, and I regularly read and reply to messages on the [[TiddlyWiki Google Groups|Community]]. I (occasionally) blog at http://jermolene.wordpress.com/ and you can also find me on [[Flickr|http://www.flickr.com/photos/jermy/]], [[del.icio.us|http://del.icio.us/jeremyruston]] and [[twitter|http://twitter.com/Jermolene]].
Offers a popup menu to jump directly to any of the currently open tiddlers. It is used with the ToolbarMacro like this:
{{{
<<toolbar jump>>
}}}
Access keys are shortcuts to common functions accessed by typing a letter with either the 'alt' (PC) or 'control' (Mac) key:
|!PC|!Mac|!Function|
|Alt-F|Ctrl-F|Search|
|Alt-J|Ctrl-J|NewJournal|
|Alt-N|Ctrl-N|NewTiddler|
|Alt-S|Ctrl-S|SaveChanges|
These access keys are provided by the associated internal [[Macros]] for the functions above. The macro needs to be used in an open tiddler (or the MainMenu or SideBar) in order for the access keys to work.
While editing a tiddler:
* ~Control-Enter or ~Control-Return accepts your changes and switches out of editing mode (use ~Shift-Control-Enter or ~Shift-Control-Return to stop the date and time being updated for MinorChanges)
* Escape abandons your changes and reverts the tiddler to its previous state
In the search box:
* Escape clears the search term
|''URL:''|http://tw.lewcid.org/|
|''Description:''|a repository of my extensions for TW|
|''Author:''|SaqImtiaz|
You've clicked on an example link! Click close to close this tiddler.
The format for PrettyLinks allows for links that open local or network folders. Depending on your browser and operating system, the folders are opened in Windows Explorer, the OS X Finder, or the browser itself.
Edit this tiddler to see [[this link to a Windows network share|file://///server/share/folder/path/name]], [[this link to a Windows drive-mapped folder|file:///c:/folder/path/name]] and [[this link to a Unix-style folder|file:///folder/path/name]].
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
major: 1, minor: 1, revision: 0,
date: new Date("mar 17, 2007"),
source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};
if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};
bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){
url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
}
return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
[[Macros]] let you write tiddlers containing more exotic objects than just text. Built-in macros include:
* NewJournalMacro and NewTiddlerMacro
* GradientMacro
* [[Sparklines]]
* TabMacro
* TaggingMacro
* TodayMacro
* ToolbarMacro
Tag popup:
{{{
<<tag features>>
}}}
will result in <<tag features>>
Slider:
{{{
<<slider chkTestSlider OptionsPanel options "Change TiddlyWiki advanced options">>
}}}
Results in this button <<slider chkTestSlider OptionsPanel options "Change TiddlyWiki advanced options">>
The parameters are:
* cookie name to be used to save the state of the slider
* name of the tiddler to include in the slider
* title text of the slider
* tooltip text of the slider
<br/><html><a href="javascript:void(0)" onclick="story.closeAllTiddlers();story.displayTiddlers(null,store.getTiddlerText('DefaultTiddlers').readBracketedList().reverse())"><span title="Close all tiddlers and open Welcome" style="cursor:pointer">Home</span></a></html>
[[Browsers]]
[[Options]]
[[Features]]
[[RSS|RssFeed]]
^^[img[favicon.ico]] TiddlyWiki <<version>>
© 2008 [[UnaMesa|http://www.unamesa.org/]]^^
In some situations it can be useful to use the clipboard insead of InstallingPlugins using ImportTiddlers.
# Open a new browser window and navigate to the TiddlyWiki site containing the macro you want
# Double click the tiddler, or click the {{{source}}} button (on other sites it will sometimes be a {{{view}}} or {{{edit}}} button)
# The entire text of the tiddler should be selected; if not select it manually with Control-A or Command-A
# Copy the entire text of the tiddler to the clipboard
# Open your TiddlyWiki file in a new browser window
# Click {{{new tiddler}}} to create a new blank tiddler
## Paste the contents of the clipboard into it's body
## Set the title as appropriate
## Add the tag {{{systemConfig}}}
# Click {{{done}}} on the tiddler
# SaveChanges
# Reload your TiddlyWiki in the browser
The plugin should now be available for use.
|''URL:''|http://www.martinswiki.com/ |
|''Description:''|Martin Buddens's Plugins |
|''Author:''|MartinBudden |
MicroContent being a fashionable word for self-contained fragments of content that are typically smaller than entire pages. Often MicroContent is presented via some kind of aggregation that reduces the perceptual shock and resource cost of context switching (eg Blogs aggregating several entries onto a page or Flickr presenting photos in an album). This TiddlyWiki aggregates MicroContent items that I call 'tiddlers' into pages that are loaded in one gulp and progressively displayed as the user clicks hypertext links to read them.
Sometimes it's useful to stop a minor change to a tiddler from causing it to rise to the top of the timeline. This can be done by pressing the Shift key while clicking the 'done' toolbar button, or with the ~Shift-Control-Enter key. This behaviour can be switched to become the default with one of the AdvancedOptions.
The 'Missing' option on the MoreTab shows you the names of tiddlers that you've referred to but not gone ahead to define. It can be useful during writing sessions to keep track of things you need to come back and fill out.
|''URL:''|http://mptw.tiddlyspot.com/|
|''Description:''|a tiddlywiki distribution and plugins|
|''Author:''|SimonBaird|
{{{Monospaced text}}} is supported - edit this tiddler to see the syntax.
You can also have monospaced blocks (useful for source code):
{{{
var posTop = findPosY(e);
var posBot = posTop + e.offsetHeight;
var winTop = findScrollY();
var winHeight = findWindowHeight();
var winBot = winTop + winHeight;
if(posTop < winTop)
return(posTop);
else if(posBot > winBot)
{
if(e.offsetHeight < winHeight)
return(posTop - (winHeight - e.offsetHeight));
else
return(posTop);
}
else
return(winTop);
}}}
The functions of 'Timeline' and 'All' tabs have been around since the FirstVersion of TiddlyWiki. The purpose of the 'More' tab is to bring together some other, more specialised lists of tiddlers that can be useful during writing sessions. Currently, it offers lists of OrphanTiddlers and MissingTiddlers.
Within a CustomStyleSheet, you can include the text of another tiddler by including it in double square brackets. For example, if the tiddler MyFavouriteColour contains {{{#ff763e}}}, and the StyleSheet tiddler contained:
{{{
#mainMenu {background-color:[[MyFavouriteColour]];}
}}}
Then, the effect is that each CSS declaration will be set to {{{background-color: #ff763e;}}}.
In practice, for small bits of text like a colour, it makes sense to use TiddlerSlicing format to reference a chunk of text within a tiddler. See ColorPalette and StyleSheetColors for an example.
Of course, you can use this mechanism to redirect any part of a stylesheet, not just colours. And you can nest references for more complex effects.
A PageTemplate, ViewTemplate or EditTemplate can include the text of another tiddler by including it in double square brackets. For example:
{{{
<div>
[[MyHeader]]
</div>
}}}
You can also use TiddlerSlicing format to include a smaller chunk of the text of a tiddler.
TiddlyWiki has been improved in several areas for release 2.4. Here are some of the highlights; see the full [[release note at tiddlywiki.org|http://trac.tiddlywiki.org/wiki/History#Revision2.4.0]] for more details.
!!! Usability
There's several significant usability enhancements including:
* Much easier saving in [[Safari]] and [[Opera]] using the newly-signed TiddlySaver Java applet
* Automated TiddlyWiki core code upgrades (see HowToUpgrade) that we can use for future releases
* Friendlier customisation of ToolbarCommands
* Improvements to the ImportTiddlers user interface
* Added warning before closing a dirty tiddler
* Enhanced GradientMacro
* Enhanced tag chooser to allow selection of multiple tags by control-clicking on them
!!! Performance
* Speeded up SHA-1 hash function
!!! Hackability
As usual, several of the new features are intended to make life easier for plugin writers and other TiddlyWiki hackers:
* Several enhancements to the {{{<<view>>}}} macro
* Support for nested popups
* Improved SafeMode that now protects the shadow tiddlers
* Added support for temporary tiddlers via the {{{doNotSave()}}} method on the {{{Tiddler}}} object
* Added W3C locale specifier
* Several new CSS classes for easier restyling (eg the "tabsetWrapper" class for tabs)
TiddlyWiki benefits from an extensive set of [[translations|http://trac.tiddlywiki.org/wiki/Translations]]. There are several enhancements in this release to make it easier to maintain translations.
The {{{<<newJournal>>}}} macro creates a new tiddler with it's title set to the current date, and the cursor in the body text area ready to type.
This macro is identical to the NewTiddlerMacro except that the "title" parameter is treated as a DateFormatString so that you can specify your own date format.
The {{{<<newTiddler>>}}} macro displays a button that can be clicked to create a new tiddler. By default, the new tiddler is opened in edit mode or you can specify a custom template.
The available parameters are:
|!Parameter |!Description |
|label |The text of the button |
|prompt |The tooltip for the button |
|accessKey |The access key to trigger the button (specify a single letter; different browsers require a different modifier key like Alt- or Control-) |
|focus |Which of the edittable fields to default the focus to (eg, "title", "text", "tags") |
|template |The template to use to display the new tiddler (defaults to EditTemplate) |
|text |The default text for the new tiddler |
|title |The default title for the new tiddler |
|tag |A single tag to be applied to the new tiddler (repeat this parameter to specify multiple tags) |
For example: <<newTiddler label:"try this" accessKey:1 focus:tags text:"hello there!" tag:greeting tag:"an example">> (can also be triggered with Alt-1)
{{{
<<newTiddler label:"try this" accessKey:1 focus:tags text:"hello there!" tag:greeting tag:"an example">>
}}}
You can only prime the initial values of fields that map to a text input box in the specified template (for instance, if you specify the standard ViewTemplate as the template you won't be able to prime any fields). For example, this doesn't work as you might expect:
{{{
<<newTiddler template:ViewTemplate text:"To be or not to be">>
}}}
<<newTiddler template:ViewTemplate text:"To be or not to be">>
To make a tiddler that doesn't have a WikiWord as its name, you can enclose the name in [[double square brackets]] - edit this tiddler to see an example. After saving the tiddler you can then click on the link to create the new tiddler. NonWikiWordLinks permits tiddlers to be created with names that are made from character sets that don't have upper and lower case.
We've recently had a spate of cases of Norton AntiVirus software incorrectly identifying TiddlyWiki files as carrying the [[W32.Feebs]] virus. If you've been affected, see [[this discussion|http://groups.google.com/group/TiddlyWiki/browse_frm/thread/f98da9a720d01ba5/87a96ed9899e05c9?hl=en]] about recovering your data.
It's easy to create NumberedBulletPoints.
# Use a single '#' at the start of each line
# and the tiddler will automatically
# start numbering your list.
## If you want a sub-list
## within any bullets
## add two '#'s at the start of the lines.
# When you go back to a single '#'
# the main numbered list will start up
# where it left off.
It's just as simple to do normal BulletPoints.
TiddlyWiki is published under a BSD OpenSourceLicense that gives you the freedom to use it pretty much however you want, including for commercial purposes, as long as you keep my copyright notice. (You can see the full license text by doing a 'view source' in your browser). If you do use TiddlyWiki I'd appreciate a link back to http://www.tiddlywiki.com.
<br/>TiddlyWiki under Opera can save changes using the <<slider "" "TiddlySaver" "TiddlySaver" "" >> Java applet.
<br/>
<<tabs "" [[Intro ]] "" [[IntroOption]] [[AutoSave ]] "AutoSave" [[AutoSave]] [[EnableAnimations ]] "EnableAnimations" [[EnableAnimations]] [[GenerateAnRssFeed ]] "GenerateAnRssFeed" [[GenerateAnRssFeed]] [[HideEditingFeatures ]] "HideEditingFeatures" [[HideEditingFeatures]] [[InterfaceOptions ]] "InterfaceOptions" [[InterfaceOptions]] [[RegExpSearch ]] "RegExpSearch" [[RegExpSearch]] [[SaveBackups ]] "SaveBackups" [[SaveBackups]] [[SaveEmptyTemplate ]] "SaveEmptyTemplate" [[SaveEmptyTemplate]] [[ToggleLinks ]] "ToggleLinks" [[ToggleLinks]] >>
The 'Orphans' option on the MoreTab shows you the names of tiddlers that aren't linked to from any other tiddlers - in other words, tiddlers that there is no way for readers to find other than searching for them.
Osmosoft is a small team run by JeremyRuston within [[BT|http://www.btplc.com/]] that focuses on working with the wider community to improve TiddlyWiki and its related ecosystem. See http://www.osmosoft.com/ for more details.
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='ContentsSlider'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
The ParameterParser is used in several places in TiddlyWiki:
* to process the StartupParameters after the '#' in a TiddlyWiki URL
* to process the DefaultTiddlers list
* to process the parameters to [[Macros]]
* to process tag lists when editing a tiddler
It supports a list of parameters each of the form "name:value". For example:
{{{
name:John location:"Isle of Wight" [[dietary needs]]:none really:'yes, really'
}}}
Names and values that need to contain spaces may be quoted with single- or double-quotes or double-square brackets. The parser is generally tolerant of additional spaces.
When processing macro parameters, names and values may also be quoted with double-braces which causes them to be evaluated as a JavaScript expression. For example:
{{{
title:{{window.title}}
}}}
The ParameterParser will cope with either the name or the value being omitted, and will substitute a specified default. This is how the StartupParameters work; the default parameter name is specified as 'open'.
|''URL:''|http://bradleymeck.tiddlyspot.com/|
|''Description:''|Resources that are Ripe for the Picking|
|''Author:''|BradleyMeck|
|Standard Periodic Table (ref. Wikipedia)|c
|| !1 | !2 |!| !3 | !4 | !5 | !6 | !7 | !8 | !9 | !10 | !11 | !12 | !13 | !14 | !15 | !16 | !17 | !18 |
|!1|bgcolor(#a0ffa0): @@color(red):H@@ |>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>||bgcolor(#c0ffff): @@color(red):He@@ |
|!2|bgcolor(#ff6666): Li |bgcolor(#ffdead): Be |>|>|>|>|>|>|>|>|>|>||bgcolor(#cccc99): B |bgcolor(#a0ffa0): C |bgcolor(#a0ffa0): @@color(red):N@@ |bgcolor(#a0ffa0): @@color(red):O@@ |bgcolor(#ffff99): @@color(red):F@@ |bgcolor(#c0ffff): @@color(red):Ne@@ |
|!3|bgcolor(#ff6666): Na |bgcolor(#ffdead): Mg |>|>|>|>|>|>|>|>|>|>||bgcolor(#cccccc): Al |bgcolor(#cccc99): Si |bgcolor(#a0ffa0): P |bgcolor(#a0ffa0): S |bgcolor(#ffff99): @@color(red):Cl@@ |bgcolor(#c0ffff): @@color(red):Ar@@ |
|!4|bgcolor(#ff6666): K |bgcolor(#ffdead): Ca ||bgcolor(#ffc0c0): Sc |bgcolor(#ffc0c0): Ti |bgcolor(#ffc0c0): V |bgcolor(#ffc0c0): Cr |bgcolor(#ffc0c0): Mn |bgcolor(#ffc0c0): Fe |bgcolor(#ffc0c0): Co |bgcolor(#ffc0c0): Ni |bgcolor(#ffc0c0): Cu |bgcolor(#ffc0c0): Zn |bgcolor(#cccccc): Ga |bgcolor(#cccc99): Ge |bgcolor(#cccc99): As |bgcolor(#a0ffa0): Se |bgcolor(#ffff99): @@color(green):Br@@ |bgcolor(#c0ffff): @@color(red):Kr@@ |
|!5|bgcolor(#ff6666): Rb |bgcolor(#ffdead): Sr ||bgcolor(#ffc0c0): Y |bgcolor(#ffc0c0): Zr |bgcolor(#ffc0c0): Nb |bgcolor(#ffc0c0): Mo |bgcolor(#ffc0c0): Tc |bgcolor(#ffc0c0): Ru |bgcolor(#ffc0c0): Rh |bgcolor(#ffc0c0): Pd |bgcolor(#ffc0c0): Ag |bgcolor(#ffc0c0): Cd |bgcolor(#cccccc): In |bgcolor(#cccccc): Sn |bgcolor(#cccc99): Sb |bgcolor(#cccc99): Te |bgcolor(#ffff99): I |bgcolor(#c0ffff): @@color(red):Xe@@ |
|!6|bgcolor(#ff6666): Cs |bgcolor(#ffdead): Ba |bgcolor(#ffbfff):^^*1^^|bgcolor(#ffc0c0): Lu |bgcolor(#ffc0c0): Hf |bgcolor(#ffc0c0): Ta |bgcolor(#ffc0c0): W |bgcolor(#ffc0c0): Re |bgcolor(#ffc0c0): Os |bgcolor(#ffc0c0): Ir |bgcolor(#ffc0c0): Pt |bgcolor(#ffc0c0): Au |bgcolor(#ffc0c0): @@color(green):Hg@@ |bgcolor(#cccccc): Tl |bgcolor(#cccccc): Pb |bgcolor(#cccccc): Bi |bgcolor(#cccc99): Po |bgcolor(#ffff99): At |bgcolor(#c0ffff): @@color(red):Rn@@ |
|!7|bgcolor(#ff6666): Fr |bgcolor(#ffdead): Ra |bgcolor(#ff99cc):^^*2^^|bgcolor(#ffc0c0): Lr |bgcolor(#ffc0c0): Rf |bgcolor(#ffc0c0): Db |bgcolor(#ffc0c0): Sq |bgcolor(#ffc0c0): Bh |bgcolor(#ffc0c0): Hs |bgcolor(#ffc0c0): Mt |bgcolor(#ffc0c0): Ds |bgcolor(#ffc0c0): Rg |bgcolor(#ffc0c0): @@color(green):Uub@@ |bgcolor(#cccccc): Uut |bgcolor(#cccccc): Uuq |bgcolor(#cccccc): Uup |bgcolor(#cccccc): Uuh |bgcolor(#fcfecc): @@color(#cccccc):Uus@@ |bgcolor(#ecfefc): @@color(#cccccc):Uuo@@ |
| !Lanthanides^^*1^^|bgcolor(#ffbfff): La |bgcolor(#ffbfff): Ce |bgcolor(#ffbfff): Pr |bgcolor(#ffbfff): Nd |bgcolor(#ffbfff): Pm |bgcolor(#ffbfff): Sm |bgcolor(#ffbfff): Eu |bgcolor(#ffbfff): Gd |bgcolor(#ffbfff): Tb |bgcolor(#ffbfff): Dy |bgcolor(#ffbfff): Ho |bgcolor(#ffbfff): Er |bgcolor(#ffbfff): Tm |bgcolor(#ffbfff): Yb |
| !Actinides^^*2^^|bgcolor(#ff99cc): Ac |bgcolor(#ff99cc): Th |bgcolor(#ff99cc): Pa |bgcolor(#ff99cc): U |bgcolor(#ff99cc): Np |bgcolor(#ff99cc): Pu |bgcolor(#ff99cc): Am |bgcolor(#ff99cc): Cm |bgcolor(#ff99cc): Bk |bgcolor(#ff99cc): Cf |bgcolor(#ff99cc): Es |bgcolor(#ff99cc): Fm |bgcolor(#ff99cc): Md |bgcolor(#ff99cc): No |
*Chemical Series of the Periodic Table
**@@bgcolor(#ff6666): Alkali metals@@
**@@bgcolor(#ffdead): Alkaline earth metals@@
**@@bgcolor(#ffbfff): Lanthanides@@
**@@bgcolor(#ff99cc): Actinides@@
**@@bgcolor(#ffc0c0): Transition metals@@
**@@bgcolor(#cccccc): Poor metals@@
**@@bgcolor(#cccc99): Metalloids@@
**@@bgcolor(#a0ffa0): Nonmetals@@
**@@bgcolor(#ffff99): Halogens@@
**@@bgcolor(#c0ffff): Noble gases@@
*State at standard temperature and pressure
**those in @@color(red):red@@ are gases
**those in @@color(green):green@@ are liquids
**those in black are solids
I think this feature from the SecondVersion of TiddlyWiki is quite original. It's a button in the right-hand sidebar that sets the browser address bar to a URL embodying all the currently open tiddlers in the order that they are currently shown. To use it, arrange the open tiddlers that you want, click the permaview button, copy the URL from the browser address bar, and then paste it into an email, web page or whatever.
On some browsers, PermaView can be unreliable if any of the tiddler titles include characters that have special meanings in URLs (like "+" and "\") or are outside the basic ANSI character set.
Changes the browser address bar to a permalink to the current tiddler. It is used with the ToolbarMacro like this:
{{{
<<toolbar permalink>>
}}}
On some browsers, the PermalinkCommand can be unreliable if the tiddler title includes characters that have special meanings in URLs (like "+" and "\") or are outside the basic ANSI character set.
Sometimes text can inadvertently match TiddlyWiki formatting instructions - particularly program code, or text pasted from elsewhere. In these situations you can either use MonospacedText or you can accomplish the same thing without the monospaced effect like this:
{{{
This is AnotherLink, this is a copyright symbol © and this site is called <<tiddler SiteTitle>>
<nowiki>This is AnotherLink, this is a copyright symbol © and this site is called <<tiddler SiteTitle>></nowiki>
"""This is AnotherLink, this is a copyright symbol © and this site is called <<tiddler SiteTitle>>"""
}}}
Which displays as:
This is AnotherLink, this is a copyright symbol © and this site is called <<tiddler SiteTitle>>
<nowiki>This is AnotherLink, this is a copyright symbol © and this site is called <<tiddler SiteTitle>></nowiki>
"""This is AnotherLink, this is a copyright symbol © and this site is called <<tiddler SiteTitle>>"""
The [[Community]] is experimenting with using the [[del.icio.us|http://del.icio.us/]] bookmarking service as a PluginDirectory. The idea is to use the tag "TiddlyWikiPlugin" to identify the URL of a TiddlyWiki plugin. The del.icio.us fields should be set as follows:
|!Field |!Example |
|url |http://authorsite.com/#ThePlugin |
|title |ThePluginTitle |
|notes |Brief description/review of plugin |
|tags |TiddlyWikiPlugin <AuthorName> |
The beauty of this approach is that it aggregates together multiple comments about a single plugin. For example, this is the del.icio.us [[page about UdoBorkowski's YourSearch plugin|http://del.icio.us/url/8085cbf3bbeda20f39a04a2969616afd]]. You can also browse the tag directly to see recently added plugins: http://del.icio.us/tag/TiddlyWikiPlugin
BidiX has also created a special del.icio.us account (http://del.icio.us/TiddlyWikiPlugin) that he's using to compile a master list of plugins tagged with TiddlyWikiHackers.
It is recommended that [[Plugins]] start with some standard information in TiddlerSlicing format. For example, see the ExamplePlugin:
{{{
|''Name:''|ExamplePlugin|
|''Description:''|To demonstrate how to write TiddlyWiki plugins|
|''Version:''|2.0.2|
|''Date:''|Jul 12, 2006|
|''Source:''|http://www.tiddlywiki.com/#ExamplePlugin|
|''Author:''|JeremyRuston (jeremy (at) osmosoft (dot) com)|
|''License:''|[[BSD open source license]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
}}}
At the moment, only ~CoreVersion affects how [[Plugins]] are processed: if the ~CoreVersion is specified for a plugin, TiddlyWiki will only execute the plugin if the core code version matches or exceeds the version specified. For example, if you specify a ~CoreVersion of 2.2, version 2.1.x of TiddlyWiki will refuse to execute the plugin.
To indicate an error, plugins should just {{{throw}}} an exception. The text of the exception will be displayed in the PluginManager.
To make plugins, stylesheets and templates easier to read, you can use special alternative formatting for monospaced blocks.
In JavaScript code:
{{{
//{{{
var id = document.getElementById("mainMenu");
//}}}
}}}
In HTML templates:
{{{
<!--{{{-->
<div id="MainMenu">
</div>
<!--}}}-->
}}}
In CSS stylesheets
{{{
/*{{{*/
div {color: #ff0000;}
/*}}}*/
}}}
It will be displayed as:
//{{{
var id = document.getElementById("mainMenu");
//}}}
<!--{{{-->
<div id="MainMenu">
</div>
<!--}}}-->
/*{{{*/
div {color: #ff0000;}
/*}}}*/
<br/>''~TiddlyWiki can be extended by'' installing plugins that implement a wide variety of features (including new [[Macros]], themes or tweaks). Plugins are simply tidders (written in javascript) which contain the additional functionality. So, to install a plugin, you need to import the relevant tiddler(s) into your ~TiddlyWiki file.
Community member Dave Gifford oversees an extensive catalogue of available plugins at [[TiddlyVault|http://tiddlyvault.tiddlyspot.com/]].
Morris Gray has made a plugin vault the fits in the sidebar [[Sidebar Plugin Vault|http://sidebarpluginvault.tiddlyspot.com]]
When you've chosen the plugin you'd like to import, follow the directions in ImportTiddlers.
As with saving changes, this will only work when ~TiddlyWiki is opened on your local computer (as opposed to being viewed over the internet).
Finally, community member Chris Klimas has written [[The Macrocodex|http://gimcrackd.com/etc/src/codex/]], some superb documentation on writing plugins and macros for ~TiddlyWiki.
You can now link to [[external sites|http://www.osmosoft.com]] or [[ordinary tiddlers|TiddlyWiki]] with ordinary words, without the messiness of the full URL appearing. Edit this tiddler to see how.
You can also LinkToFolders.
|''URL:''|http://ptw.sourceforge.net/ptwe.html|
|''Description:''|BramChen's Extensions for TiddlyWiki|
|''Author:''|BramChen|
"TiddlyWiki offers a glimpse of how things are changing in terms of how people think about software... a new beginning for simple software." -- //Jeremy Wagstaff, [[WSJ.com|http://groups.google.com/group/TiddlyWiki/browse_thread/thread/53c7b7686b9bb5c2/122f1b2146d2ba6d?q=wsj&rnum=1]]//
"The original TiddlyWiki by Jeremy Ruston is, without a doubt, one of the most amazing dynamic web apps I've ever seen (sorry Gmail.)" -- [[Lifehacker.com recommendation|http://www.lifehacker.com/software/productivity/getting-things-done-tiddlywiki-102953.php]]
"It's blowing my mind." -- //Evan Williams, founder of Blogger and Odeo, [[EvHead|http://evhead.com/2005/05/tiddlywiki-reusable-non-linear.asp]]//
"What I love most about Tiddlywiki is that it is quite easy to use but incredibly flexible." -- //Ed Sim of Dawntreader Ventures, [[BeyondVC|http://www.beyondvc.com/2005/10/tiddlywiki.html]]//
"TiddlyWiki is completely blowing my mind... Completely tripped out. Try it and you'll see what I mean." -- //Russell Beattie of Yahoo!, [[Russell Beattie's Notebook|http://www.russellbeattie.com/notebook/1008896.html]]//
"OK, this is the first wiki interface I’ve seen that has real potential. Dunno quite why exactly, but this blows my mind." -- //Jason Kottke, [[Kottke's Remaindered Links|http://www.kottke.org/remainder/04/09/6574.html]]//
|''URL:''|http://solo.dc3.com/tw/|
|''Description:''|Bob Denny's extensions to TiddlyWiki|
|''Author:''|BobDenny|
Since the FirstVersion of TiddlyWiki, the ReferencesButton has been implemented as a canned search for the name of the current tiddler. That approach was a bit disruptive because of the way that a search operation wipes the current reading state of the document.
The new implementation offers a popup menu of the names of all the referring tiddlers. It can be consulted without disturbing any tiddlers that are currently open.
Offers a popup menu displaying the tiddlers that link to the current one. It is used with the ToolbarMacro like this:
{{{
<<toolbar references>>
}}}
RegExpSearch uses JavaScript's [[RegExp syntax|http://www.programmershelp.co.uk/docs/javascript/regexp.html#1193188]] to allow flexible searches.
TiddlyWiki's RSS feed is available [[here|http://www.tiddlywiki.com/index.xml]]. You can generate an RSS feed for your own TiddlyWiki using the GenerateAnRssFeed option.
<br/>''Safari can'' SaveChanges using the <<slider "" "TiddlySaver" "TiddlySaver" "" >> Java applet.
There are still some issues with Safari:
* PermaLinks with Unicode characters in them (like [[this one|http://avm.free.fr/tidlipo.html#AdaptationFran%C3%A7aise]]) don't work properly
SafeMode can be selected by putting {{{#start:safe}}} (see StartupParameters) on the end of a TiddlyWiki URL. It stops TiddlyWiki from executing any [[Plugins]], modifying shadow tiddlers, or reading/writing cookies. It can be useful for tracking down problems caused by rogue [[Plugins]].
This is one of the InterfaceOptions you can use to customize TiddlyWiki. It determines whether TiddlyWiki creates a backup file each time you SaveChanges. I'd suggest keeping it switched on for safety!
<br/>''Saving changes in ~TiddlyWiki requires'' a little configuration the first time you do it, but after that it's a breeze! Follow these guidelines and you'll be fine.
''First of all, it's important to'' save changes using ~TiddlyWiki's built in saving functionality (rather than the browser's 'Save As' function - [[here's why|SaveUnpredictabilities]]). On the version of ~TiddlyWiki that you've opened from your desktop, there's a button on the right hand side that says 'save changes' - that's the button you'll need to use.
''When you save your ~TiddlyWiki'' for the first time, your operating system will ask for permission to save changes to your TiddlyWiki. You'll need to grant this permission to enable saving. This experience will vary slightly depending on your operating system and browser, but if you're given the chance to check a box to remember your decision, that will save time later on.
''Once you've saved successfully'', you might want to think about configuring your backup settings. You can edit the AdvancedOptions to decide when backups are made and where they're saved.
''If you're still experiencing problems'', the following links will help:
*General guidance on FireFox, InternetExplorer, [[Opera]], [[Camino]] or [[Safari]]
* if you're using InternetExplorer on Windows you might run into XP ServicePack2Problems or VistaIssues
This causes a blank, template TiddlyWiki to be saved alongside your file when you SaveChanges. It's intended to help people who are distributing TiddlyWikiAdaptations, and isn't needed when you're an end-user of TiddlyWiki.
The template TiddlyWiki is called 'empty.html'.
Saves any pending edits to the current tiddler, and switches it to the default view. It is used with the ToolbarMacro like this:
{{{
<<toolbar saveTiddler>>
}}}
Several people have reported problems with reusing TiddlyWiki when they have used the File/Save command of their browser to save it. The issue is that some browsers (notably FireFox) don't save the text of the HTML file exactly as it appears on the server, but rather save a snapshot of the current state of the page. In the case of a highly dynamic page like TiddlyWiki, this leads to all sorts of peculiarness...
TiddlyWiki now displays a warning if it thinks that it has been saved wrongly.
/***
|''Name:''|SearchOptionsPlugin|
|''Source:''|http://www.TiddlyTools.com/#SearchOptionsPlugin|
|''Author:''|Eric Shulman - ELS Design Studios|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''~CoreVersion:''|2.0.10|
The 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.
!!!!!Usage
<<<
This 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.
<<<
!!!!!Configuration
<<<
In additional to the checkboxes in AdvancedOptions, a self-contained control panel is included here for your convenience:
<<option chkSearchTitles>> Search tiddler titles
<<option chkSearchText>> Search tiddler text
<<option chkSearchTags>> Search in tiddler tags
<<option chkSearchFields>> Search in tiddler data fields
<<option chkSearchShadows>> Search shadow tiddlers
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchList>> Show list of matching tiddlers
<<option chkSearchIncremental>> Incremental searching
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''SearchOptionsPlugin'' (tagged with <<tag systemConfig>>)
^^documentation and javascript for SearchOptionsPlugin handling^^
When 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.
<<<
!!!!!Revision History
<<<
''2007.01.17 [mgray]'' disabled 'no search on empty box' by adding Alert to doSearch() from older version.
''2006.10.10 [2.4.0]'' added support for "search in tiddler data" (tiddler.fields) Default is to search extended data.
''2006.04.06 [2.3.0]'' added support for "search in shadow tiddlers". Default is *not* to search in the shadows (i.e.standard TW behavior). Note: if a shadow tiddler has a 'real' counterpart, only the real tiddler is searched, since the shadow is inaccessible for viewing/editing.
''2006.02.03 [2.2.1]'' rewrite timeout clearing code and blank search text handling to match 2.0.4 core release changes. note that core no longer permits "blank=all" searches, so neither does this plugin. To search for all, use "." with text patterns enabled.
''2006.02.02 [2.2.0]'' in search.handler(), KeyHandler() function clears 'left over' timeout when search input is < 3 chars. Prevents searching on shorter text when shortened by rapid backspaces (<500msec)
''2006.02.01 [2.1.9]'' in Story.prototype.search(), correct inverted logic for using/not using regular expressions when searching
also, blank search text now presents "No search text. Continue anyway?" confirm() message box, so search on blank can still be processed if desired by user.
''2006.02.01 [2.1.8]'' in doSearch(), added alert/return if search text is blank
''2006.01.20 [2.1.7]'' fixed setting of config.macros.search.reportTitle so that Tweaks can override it.
''2006.01.19 [2.1.6]'' improved SearchResults formatting, added a "search again" form to the report (based on a suggestion from MorrisGray)
define results report title using config.macros.search.reportTitle instead of hard-coding the tiddler title
''2006.01.18 [2.1.5]'' Created separate functions for reportSearchResults(text,matches) and discardSearchResults(), so that other developers can create alternative report generators.
''2006.01.17 [2.1.4]'' Use 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.
''2006.01.15 [2.1.3]'' Added information (date/time, username, search options used) to SearchResults output
''2006.01.10 [2.1.2]'' use displayTiddlers() to render matched tiddlers. This lets you display multiple matching tiddlers, even if SinglePageModePlugin is enabled.
''2006.01.08 [2.1.1]'' corrected invalid variable reference, "txt.value" to "text" in story.search()
''2006.01.08 [2.1.0]'' re-write to match new store.search(), store.search.handler() and story.search() functions.
''2005.12.30 [2.0.0]'' Upgraded to TW2.0
when rendering SearchResults tiddler, closeTiddler() first to ensure display is refreshed.
''2005.12.26 [1.4.0]'' added option to search for matching text in tiddler tags
''2005.12.21 [1.3.7]'' use \\ to 'escape' single quotes in tiddler titles when generating "Open all matching tiddlers" link. Also, added access key: "O", to trigger "open all" link.
Based on a suggestion by UdoBorkowski.
''2005.12.18 [1.3.6]'' call displayMessage() AFTER showing matching tiddlers so message is not cleared too soon
''2005.12.17 [1.3.5]'' if no matches found, just display message and delete any existing SearchResults tiddler.
''2005.12.17 [1.3.4]'' use {/%%/{/%%/{ and }/%%/}/%%/} to 'escape' display text in SearchResults tiddler to ensure that formatting contained in search string is not rendered
Based on a suggestion by UdoBorkowski.
''2005.12.14 [1.3.3]'' tag SearchResults tiddler with 'excludeSearch' so it won't list itself in subsequent searches
Based on a suggestion by UdoBorkowski.
''2005.12.14 [1.3.2]'' added "open all matching tiddlers..." link to search results output.
Based on a suggestion by UdoBorkowski.
''2005.12.10 [1.3.1]'' added "discard search results" link to end of search list tiddler output for quick self-removal of 'SearchResults' tiddler.
''2005.12.01 [1.3.0]'' added chkSearchIncremental to enable/disable 'incremental' searching (i.e., search after each keystroke) (default is ENABLED).
added handling for Enter key so it can be used to start a search.
Based on a suggestion by LyallPearce
''2005.11.25 [1.2.1]'' renamed from SearchTitleOrTextPlugin to SearchOptionsPlugin
''2005.11.25 [1.2.0]'' added chkSearchList option
Based on a suggestion by RodneyGomes
''2005.10.19 [1.1.0]'' added chkSearchTitlesFirst option.
Based on a suggestion by ChristianHauck
''2005.10.18 [1.0.0]'' Initial Release
Based on a suggestion by LyallPearce.
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].
<<<
!!!!!Code
***/
//{{{
version.extensions.SearchTitleOrText = {major: 2, minor: 4, revision: 0, date: new Date(2006,10,12)};
//}}}
//{{{
if (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=true;
if (config.options.chkSearchText==undefined) config.options.chkSearchText=true;
if (config.options.chkSearchTags==undefined) config.options.chkSearchTags=true;
if (config.options.chkSearchFields==undefined) config.options.chkSearchFields=true;
if (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=false;
if (config.options.chkSearchList==undefined) config.options.chkSearchList=false;
if (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=false;
if (config.options.chkSearchShadows==undefined) config.options.chkSearchShadows=false;
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTitles>> Search in tiddler titles";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchText>> Search in tiddler text";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTags>> Search in tiddler tags";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchFields>> Search in tiddler data fields";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchShadows>> Search in shadow tiddlers";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTitlesFirst>> Search results show title matches first";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchList>> Search results show list of matching tiddlers";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchIncremental>> Incremental searching";
//}}}
//{{{
if (config.macros.search.reportTitle==undefined)
config.macros.search.reportTitle="SearchResults";
//}}}
//{{{
config.macros.search.handler = function(place,macroName,params)
{
var lastSearchText = "";
var searchTimeout = null;
var doSearch = function(txt)
{
if (!txt.value.length && !confirm("No search text. Continue anyway?")) { txt.focus(); return; }
{
story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);
lastSearchText = txt.value;
}
};
var clickHandler = function(e)
{
doSearch(this.nextSibling);
return false;
};
var keyHandler = function(e)
{
if (!e) var e = window.event;
switch(e.keyCode)
{
case 13: // ELS: handle enter key
doSearch(this);
break;
case 27:
this.value = "";
clearMessage();
break;
}
if (config.options.chkSearchIncremental)
{
if(this.value.length > 2)
{
if(this.value != lastSearchText)
{
if(searchTimeout) clearTimeout(searchTimeout);
var txt = this;
searchTimeout = setTimeout(function() {doSearch(txt);},500);
}
}
else
if(searchTimeout) clearTimeout(searchTimeout);
}
};
var focusHandler = function(e)
{
this.select();
};
var btn = createTiddlyButton(place,this.label,this.prompt,clickHandler);
var txt = createTiddlyElement(place,"input",null,null,null);
if(params[0])
txt.value = params[0];
txt.onkeyup = keyHandler;
txt.onfocus = focusHandler;
txt.setAttribute("size",this.sizeTextbox);
txt.setAttribute("accessKey",this.accessKey);
txt.setAttribute("autocomplete","off");
if(config.browser.isSafari)
{
txt.setAttribute("type","search");
txt.setAttribute("results","5");
}
else
txt.setAttribute("type","text");
}
//}}}
//{{{
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
var matches = store.search(highlightHack,"title","excludeSearch");
var q = useRegExp ? "/" : "'";
clearMessage();
if (!matches.length) {
if (config.options.chkSearchList) discardSearchResults();
displayMessage(config.macros.search.failureMsg.format([q+text+q]));
} else {
if (config.options.chkSearchList)
reportSearchResults(text,matches);
else {
var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);
this.closeAllTiddlers(); story.displayTiddlers(null,titles);
displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
}
}
highlightHack = null;
}
//}}}
//{{{
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)
{
var candidates = this.reverseLookup("tags",excludeTag,false,sortField);
// scan for matching titles first...
var results = [];
if (config.options.chkSearchTitles) {
for(var t=0; t<candidates.length; t++)
if(candidates[t].title.search(searchRegExp)!=-1)
results.push(candidates[t]);
if (config.options.chkSearchShadows)
for (var t in config.shadowTiddlers)
if ((t.search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.push((new Tiddler()).assign(t,config.shadowTiddlers[t]));
}
// then scan for matching text, tags, or field data
for(var t=0; t<candidates.length; t++) {
if (config.options.chkSearchText && candidates[t].text.search(searchRegExp)!=-1)
results.pushUnique(candidates[t]);
if (config.options.chkSearchTags && candidates[t].tags.join(" ").search(searchRegExp)!=-1)
results.pushUnique(candidates[t]);
if (config.options.chkSearchFields && store.forEachField!=undefined) // requires TW2.1 or above
store.forEachField(candidates[t],
function(tid,field,val) { if (val.search(searchRegExp)!=-1) results.pushUnique(candidates[t]); },
true); // extended fields only
}
// then check for matching text in shadows
if (config.options.chkSearchShadows)
for (var t in config.shadowTiddlers)
if ((config.shadowTiddlers[t].search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.pushUnique((new Tiddler()).assign(t,config.shadowTiddlers[t]));
// if not 'titles first', re-sort results to so titles, text, tag and field matches are mixed together
if(!sortField) sortField = "title";
var bySortField=function (a,b) {if(a[sortField] == b[sortField]) return(0); else return (a[sortField] < b[sortField]) ? -1 : +1; }
if (!config.options.chkSearchTitlesFirst) results.sort(bySortField);
return results;
}
//}}}
// // ''REPORT GENERATOR''
//{{{
if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
{
var title=config.macros.search.reportTitle
var q = config.options.chkRegExpSearch ? "/" : "'";
var body="\n";
// summary: nn tiddlers found matching '...', options used
body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\n";
body+="^^//searched in:// ";
body+=(config.options.chkSearchTitles?"''titles'' ":"");
body+=(config.options.chkSearchText?"''text'' ":"");
body+=(config.options.chkSearchTags?"''tags'' ":"");
body+=(config.options.chkSearchFields?"''fields'' ":"");
body+=(config.options.chkSearchShadows?"''shadows'' ":"");
if (config.options.chkCaseSensitiveSearch||config.options.chkRegExpSearch) {
body+=" //with options:// ";
body+=(config.options.chkCaseSensitiveSearch?"''case sensitive'' ":"");
body+=(config.options.chkRegExpSearch?"''text patterns'' ":"");
}
body+="^^";
// numbered list of links to matching tiddlers
body+="\n<<<";
for(var t=0;t<matches.length;t++) body+="\n# [["+matches[t].title+"]]";
body+="\n<<<\n";
// open all matches button
body+="<html><input type=\"button\" href=\"javascript:;\" ";
body+="onclick=\"story.displayTiddlers(null,["
for(var t=0;t<matches.length;t++)
body+="'"+matches[t].title.replace(/\'/mg,"\\'")+"'"+((t<matches.length-1)?", ":"");
body+="],1);\" ";
body+="accesskey=\"O\" ";
body+="value=\"open all matching tiddlers\"></html> ";
// discard search results button
body+="<html><input type=\"button\" href=\"javascript:;\" ";
body+="onclick=\"story.closeTiddler('"+title+"'); store.deleteTiddler('"+title+"'); store.notify('"+title+"',true);\" ";
body+="value=\"discard "+title+"\"></html>";
// search again
body+="\n\n----\n";
body+="<<search \""+text+"\">> ";
body+="<<option chkSearchTitles>>titles ";
body+="<<option chkSearchText>>text ";
body+="<<option chkSearchTags>>tags";
body+="<<option chkSearchFields>>fields";
body+="<<option chkSearchShadows>>shadows";
body+="<<option chkCaseSensitiveSearch>>case-sensitive ";
body+="<<option chkRegExpSearch>>text patterns";
// create/update the tiddler
var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();
tiddler.set(title,body,config.options.txtUserName,(new Date()),"excludeLists excludeSearch");
store.addTiddler(tiddler); story.closeTiddler(title);
// use alternate "search again" label in <<search>> macro
var oldprompt=config.macros.search.label;
config.macros.search.label="search again";
// render/refresh tiddler
story.displayTiddler(null,title,1);
store.notify(title,true);
// restore standard search label
config.macros.search.label=oldprompt;
}
if (!window.discardSearchResults) window.discardSearchResults=function()
{
// remove the tiddler
story.closeTiddler(config.macros.search.reportTitle);
store.deleteTiddler(config.macros.search.reportTitle);
}
//}}}
Released in December 2004, the [[second version|secondversion.html]] of TiddlyWiki grew 50% over the FirstVersion to 76KB. It added IncrementalSearch, the ReferencesButton, the PermaLinkButton, PermaView, CloseAll, SmoothScrolling, an ImprovedSidebar, an animation for the CloseButton and a tiny EasterEgg in homage to Macintosh OS X. It also introduced a new SiteDesign.
One of the neatest features of TiddlyWiki is that it is entirely self-contained in a single HTML file - even including graphics like the GradientMacro and [[Sparklines]]. The file contains the actual hypertext document, and the JavaScript, CascadingStyleSheets and HTML necessary to both view and edit it. This means that it is trivial to host a TiddlyWiki on a website, or to distribute one by email. And anyone with a reasonably recent web browser will be able to read and edit it.
Out of the box, TiddlyWiki doesn't have a ServerSide back end. In many applications that's a great strength because it means that you can work with TiddlyWiki without having to be connected to the Internet or, because it's SelfContained, installing any software.
In other applications, a ServerSide can be very useful, particularly if you want to edit a TiddlyWiki while it's online, or you need lots of people to be able to edit a TiddlyWiki at the same time. The development [[Community]] has come up with several ServerSide implementations that are suitable for a range of applications. The most popular and up-to-date ones that you can download and install on your own servers are:
* [[TiddlyWeb|http://www.tiddlywiki.org/wiki/TiddlyWeb]] in Python from ChrisDent
* [[Coral|https://coral.dev.java.net/]] in Java
* [[ccTiddly|http://cctiddly.sourceforge.net/]] from CoolCold
* [[PrinceTiddlyWiki|http://ptw.sourceforge.net/]] from BramChen
* [[ZiddlyWiki|http://www.ziddlywiki.org/]] from BobMcElrath and TimMorgan
* [[PhpTiddlyWiki|http://www.patrickcurry.com/tiddly/]] from PatrickCurry
[[TiddlySpot|http://tiddlyspot.com]] offers a fantastic, free hosted version of TiddlyWiki with some very cool features (although at present it does not support simultaneous editing by multiple users). It's based on BidiX's remarkable [[UploadPlugin|http://tiddlywiki.bidix.info/#HowToUpload]].
There are also some TiddlyWikiAdaptations that have taken some of the code and ideas from TiddlyWiki and diverged off to do their own thing.
Internet Explorer Windows XP ~SP2 seems to have a magical ability to keep track of html files that have been downloaded from the internet and saved on an NTFS drive. By storing additional data in an [[alternate data stream|http://www.microsoft.com/technet/sysinternals/FileAndDisk/Streams.mspx]], it manages to keep them in the 'Internet' zone regardless of attempts to rename or modify the file. But, in order to be able to SaveChanges, TiddlyWiki needs to run in the 'My Computer' zone.
The solution is to right-click on the TiddlyWiki html file and choose //Properties//. If the file is blocked, you'll see an 'Unblock' button on the resulting property sheet that removes the protection and allows the file to open in the 'My Computer' zone. Then open the file in Internet Explorer - it might put up its information bar asking you whether you want to run it. You need to 'Allow blocked content' to let TiddlyWiki do its stuff.
<<<
If you find yourself running into the information bar frequently, you can disable it by visiting the "Options" dialog and, on the "Advanced" tab make sure that "Allow active content to run in files on My Computer" is checked.
Alternatively, you can rename the file to {{{*.hta}}} which has the added bonus of automatically granting all necessary save permissions.
<<<
This is all a bit frustrating. An easy alternative is to use FireFox, which seems to do the trick on all platforms.
ShadowTiddlers are special tiddlers that have default values that take over if they are undefined or deleted. For example, PageTemplate and StyleSheetColors are both shadow tiddlers.
ShadowTiddlers make it harder to render a TiddlyWiki inoperative by accidentally deleting something important. You can see a list of shadow tiddlers in the Shadowed tab under the More tab in the right hand column. When you create a tiddler with the same title you override the underlying shadow tiddler.
----
<<list shadowed>>
<br/><br/><br/><<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<tiddler TspotSidebar>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
<<tiddler [[SideBarTabs]]>>
an experiment in usability and aesthetics
http://www.tiddlywiki.com/
Sparklines [[were invented|http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001OR&topic_id=1]] by EdwardTufte, author of a number of thoughtful and inspiring books on the presentation of visual information.
Sparklines are described by Tufte as "small, intense, wordlike graphics". They are designed to be used inline with ordinary text. For example, this <<sparkline 163 218 231 236 232 266 176 249 289 1041 1835 2285 3098 2101 1755 3283 3353 3335 2898 2224 1404 1354 1825 1839 2142 1942 1784 1145 979 1328 1611>> shows one measure of activity on www.tiddlywiki.com during the month of April 2005.
Creating a sparkline is easy using the new [[Macros]] feature:
{{{
<<sparkline 163 218 ... 1328 1611>>
}}}
The cunning thing about these sparklines is that they are created inline without requiring any graphics or other ServerSide support.
TiddlyWiki defines a small number of SpecialTags that are used to indicate that tiddlers should be treated differently in some way:
* ''excludeSearch'': excludes a tiddler from search results
* ''excludeLists'': excludes a tiddler from the lists in the sidebar tabs
* ''systemConfig'': marks tiddlers that contain JavaScript that should be executed once TiddlyWiki has loaded
* ''excludeMissing'': excludes a tiddler from the processing that generates the MissingTiddlers list. Use it when you have a tiddler that contains links to missing tiddlers and you don't want those missing links to appear in the MissingTiddlers list
TiddlyWiki uses several special tiddlers to as [[Configuration]] used for the MainMenu, the SiteTitle and the SiteSubtitle and other features. DefaultTiddlers is used to store the titles of the tiddlers that are shown at startup. SaveChanges is automatically displayed if there's a problem with saving. Any of them can be editted with the changes taking effect immediately.
When it loads, TiddlyWiki looks for the names of tiddlers to open as a space-separated list after the # in the URL. If there are no tiddlers in the URL it instead loads the tiddlers named in DefaultTiddlers, one of the SpecialTiddlers.
TiddlyWiki obtains its StartupParameters from the //location// portion of it's URL (the bit after the '#'). At it's simplest, the StartupParameters can list the names of the tiddlers to be opened when the TiddlyWiki is opened:
{{{
http://www.tiddlywiki.com/#HelloThere JeremyRuston
}}}
In fact, that usage is equivalent to:
{{{
http://www.tiddlywiki.com/#open:HelloThere open:JeremyRuston
}}}
The complete list of commands is:
|!Command |!Description |!Example |
|open:title |Opens the tiddler with the specified title |http://www.tiddlywiki.com/#open:HelloThere |
|start:safe |Switches to SafeMode |http://www.tiddlywiki.com/#start:safe |
|search:text |Performs a search for the specified text |http://www.tiddlywiki.com/#search:jeremy |
|tag:text |Displays tiddlers tagged with the specified tag |http://www.tiddlywiki.com/#tag:news |
|newTiddler:title |Opens a new tiddler with the specified title in edit mode |http://www.tiddlywiki.com/#newTiddler:"This is a new tiddler" |
|newJournal:titleFormat |Opens a new tiddler with the specified DateFormatString |http://www.tiddlywiki.com/#newJournal:"YYYY MMM DD" |
See the details of the underlying ParameterParser for more details.
/***
This is a sample style definition to demonstrate CustomCssClass formatting
***/
/*{{{*/
.wrappingClass {color: #666; background: #bbb;}
#tiddlerHello\000020There .title {display: none;}
#tiddlerHello\000020There .toolbar {display: none;}
.popup {
max-height:275px;
min-height:auto;
width: auto;
overflow: auto;
margin:auto;
background-color:#ccc;
}
.viewer .tabContents {
background: #fff;
border-top: 1px solid #999;
border-right: 0px solid #999;
border-bottom: 0px solid #999;
border-left: 0px solid #999;
}
.viewer .tabSelected {
background:url("http://img258.imageshack.us/img258/8210/selectedbuttonbggi0.gif") repeat-x top left;top left;
background-color:#fcb;
font-size:0.95em;
font-weight:bold;
color:#a00;
text-decoration:none;
border: 1px1px 0px 1px solid #999;
-moz-border-radius : 0.4em 0.4em 0 0;
}
.viewer .tabUnselected {
background:url("http://img520.imageshack.us/img520/8688/mainmenugray7ef.gif") repeat-x top left;top left;
background-color:#eee;
font-size:0.95em;
font-weight:bold;
color:#008;
text-decoration:none;
border:#000;
border-left: 1px solid #999;
border-top: 1px solid #999;
border-right: 1px solid #999;
-moz-border-radius : 0.4em 0.4em 0 0;
}
/*}}}*/
!Header 1
!!Header 2
!!!Header 3
!!!!Header 4
!!!!!Header 5
|>|bgcolor(#8af):@@color(#000080):''9 tiddlers found matching /{{{options}}}/''@@|bgcolor(#8af): @@color(#A00000): SearchHelp@@ |
|>|>|bgcolor(#E3FFE3):<<search>> <<option chkSearchTitles>> Titles <<option chkSearchText>> Text <<option chkSearchTags>>Tags <<option chkHoldSearches>> Hold |
| |bgcolor(#8af): @@color(#000080):sort by: ''Titles''@@ |bgcolor(#8af): @@color(#000080): ''Size'' (bytes)@@ |bgcolor(#8af): @@color(#000080): ''Tags''@@ |h
| 1|[[AutoSave]]| 343|@@options@@|
| 2|[[EnableAnimations]]| 102|@@options@@|
| 3|[[GenerateAnRssFeed]]| 656|@@options@@|
| 4|[[HideEditingFeatures]]| 430|@@features,options@@|
| 5|[[InterfaceOptions]]| 536|@@features,options@@|
| 6|[[RegExpSearch]]| 145|@@features,options@@|
| 7|[[SaveBackups]]| 201|@@features,options@@|
| 8|[[SaveEmptyTemplate]]| 272|@@features,options@@|
| 9|[[ToggleLinks]]| 454|@@features,options@@|
This is an example of a tab:
<<tabs txtFavourite
One "First tab" HelloThere
Two "Second tab" ThankYou
>>
*sample:
|!th1111111111|!th2222222222|
|>| colspan |
| rowspan |left|
|~| right|
|bgcolor(#a0ffa0):colored| center |
|caption|c
*another sample: see PeriodicTable.
For advanced effects, you can control the CSS style of a table by adding a row like this:
{{{
|cssClass|k
}}}
/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.chooseTemplateForTiddler()|
|Description|use alternative ViewTemplate/EditTemplate for tiddler's tagged with specific tag values|
The core function, "story.chooseTemplateForTiddler(title,template)" is essentially a "pass-thru" that returns the same template it was given, and is provided by the core so that plugins can customize the template selection logic to select alternative templates, based on whatever programmatic criteria is appropriate. This tweak extends story.chooseTemplateForTiddler() so that ''whenever a tiddler is marked with a specific tag value, it can be viewed and/or edited using alternatives to the standard tiddler templates.''
!!!!!Usage
<<<
Each alternative template is associated with a specific tiddler tag value by using that tag value as a prefix added to the standard TiddlyWiki template titles, [[ViewTemplate]] and [[EditTemplate]].
For example, any tiddlers that are tagged with ''<<tag media>>'' will look for alternative templates named [[mediaViewTemplate]] and [[mediaEditTemplate]]. Additionally, in order to find templates that have proper WikiWord tiddler titles (e.g., [[MediaViewTemplate]] and [[MediaEditTemplate]]), the plugin will also attempt to use a capitalized form of the tag value (e.g., ''Media'') as a prefix. //This capitalization is for comparison purposes only and will not alter the actual tag values that are stored in the tiddler.//
If no matching alternative template can be found by using //any// of the tiddler's tags (either "as-is" or capitalized), the tiddler defaults to using the appropriate standard [[ViewTemplate]] or [[EditTemplate]] definition.
''To add your own custom templates:''
>First, decide upon a suitable tag keyword to uniquely identify your custom templates and create custom view and/or edit templates using that keyword as a prefix (e.g., "KeywordViewTemplate" and "KeywordEditTemplate"). Then, simply create a tiddler and tag it with your chosen keyword... that's it! As long as the tiddler is tagged with your keyword, it will be displayed using the corresponding alternative templates. If you remove the tag or rename/delete the alternative templates, the tiddler will revert to using the standard viewing and editing templates.
<<<
!!!!!Examples
<<<
|Sample tiddler| tag | view template | edit template |
|[[MediaSample - QuickTime]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[MediaSample - Windows]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[CDSample]]| <<tag CD>> | [[CDViewTemplate]] | [[CDEditTemplate]] |
|<<newTiddler label:"create new task..." title:SampleTask tag:task text:"Type some text and then press DONE to view the task controls">> | <<tag task>> | [[TaskViewTemplate]] | [[EditTemplate]] |
//(note: if these samples are not present in your document, please visit// http://www.TiddlyTools.com/ //to view these sample tiddlers on-line)//
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
[[WikifyPlugin]]
<<<
!!!!!Revision History
<<<
''2007.06.23 [1.1.0]'' re-written to use automatic 'tag prefix' search instead of hard coded check for each tag. Allows new custom tags to be used without requiring code changes to this plugin.
''2007.06.11 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by Eric L Shulman / ELS Design Studios
<<<
!!!!!Code
***/
//{{{
version.extensions.taggedTemplate= {major: 1, minor: 1, revision: 0, date: new Date(2007,6,18)};
Story.prototype.taggedTemplate_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler
Story.prototype.chooseTemplateForTiddler = function(title,template)
{
// get default template from core
var template=this.taggedTemplate_chooseTemplateForTiddler.apply(this,arguments);
// if the tiddler to be rendered doesn't exist yet, just return core result
var tiddler=store.getTiddler(title); if (!tiddler) return template;
// look for template whose prefix matches a tag on this tiddler
for (t=0; t<tiddler.tags.length; t++) {
var tag=tiddler.tags[t];
if (store.tiddlerExists(tag+template)) { template=tag+template; break; }
// try capitalized tag (to match WikiWord template titles)
var cap=tag.substr(0,1).toUpperCase()+tag.substr(1);
if (store.tiddlerExists(cap+template)) { template=cap+template; break; }
}
return template;
}
//}}}
The TaggingMacro produces a list of links to tiddlers that carry the specified tag. If no tag is specified, it looks for tiddlers tagged with the name of the current tiddler. It looks like this:
{{{
<<tagging>>
<<tagging TiddlerTitle>>
<<tagging sep:[[, ]]>>
}}}
In HTML, the list is formatted like so:
{{{
<ul>
<li class="listTitle">List title label</li>
<li><a class="tiddlyLink ..." href="javascript:;" onclick="..."
refresh="link" tiddlyLink="ExampleOne">ExampleOne</a></li>
</ul>
}}}
The optional {{{sep}}} parameter specifies a string of characters to be inserted as a separator between each {{{<li>}}} element. In conjunction with the CSS {{{ul li {display: none;} }}} this allows the tagging list to be formatted as a nicely formatted inline list.
You can categorise a tiddler by assigning it special keywords called [[Tags]].
This site uses the convention that the names of [[Tags]] start with a lower case letter, and tiddlers with an upper case letter, but this is not actually enforced.
Tags can be tiddlers themselves, with their own tags, so you can have hierarchies of tiddlers. This is a surprisingly useful and powerful technique has been dubbed TagglyTagging by the [[Community]].
This is the ThirdVersion of TiddlyWiki, released in April 2005. The SecondVersion was released in December 2004, and before that the FirstVersion in September 2004.
See the RevisionHistory for details of minor changes and bug-fixes since the ThirdVersion. See HowToUpgrade an earlier version of TiddlyWiki to the latest revision.
A 'tiddler' is the name given to a unit of MicroContent in TiddlyWiki.
Tiddlers are pervasive in TiddlyWiki. The MainMenu is defined by a tiddler, plugins are delivered in tiddlers, there are special StyleSheet tiddlers, and so on.
Other systems have analogous concepts with more prosaic names: like "items", "entries", "entities". Even though "tiddler" is undoubtedly a SillyName it at least has the virtue of being confusingly distinctive rather than confusingly generic.
To hide text within a tiddler so that it is not displayed you can wrap it in {{{/%}}} and {{{%/}}}. It can be a useful trick for hiding drafts or annotating complex markup. Edit this tiddler to see an example.
/%This text is not displayed
until you try to edit %/
TiddlerSlicing allows you to use special notation to pull out a chunk of specially marked text from within a tiddler. Each slice has a name and a value which can be specified anywhere within a tiddler in any of these formats:
{{{
theName: textSlice
|theName:| textSlice |
|theName| textSlice |
}}}
The name may contain any of the characters "a-ZA-Z_0-9", and may also be decorated with {{{''}}} or {{{//}}} markers for ''bold'' and //italic// formatting that are ignored. For example:
{{{
|''theName:''| textSlice |
}}}
Slices can be then be referenced by qualifying the parent tiddler name with the symbols "::" and the name of the slice. For example:
{{{
ColorPalette::PrimaryLight
}}}
TiddlerSlicing doesn't work eveywhere; at this point it is mainly intended to support the ColorPalette and similar usages.
Finally, here's an example of some more complex slice formatting:
{{{
version: 1.2.3.4
Author: Joe Brown
''Credits:'' ASmith BBrown CCalony
//~SeeAlso:// The rise and fall of the M-perium
|!Name|!Value|
|Name:|TextSlice Tester|
|URL:|http:\\sample.com\TestSliced |
|''Type:''| Plugin |
|//Source//| http:\\sample.com\TestSliced\src\text.js |
}}}
The slices defined in that example are:
|version|1.2.3.4|
|Author|Joe Brown|
|Credits|ASmith BBrown CCalony|
|~SeeAlso|The rise and fall of the M-perium|
|Name|TextSlice Tester|
|URL|http:\\sample.com\TestSliced|
|Type|Plugin|
|Source|http:\\sample.com\TestSliced\src\text.js|
[[Bookmarklets|http://en.wikipedia.org/wiki/Bookmarklet]] can be useful for TiddlyWiki hackers. They are browser bookmarks that contain embedded JavaScript that can reach into the currently loaded TiddlyWiki page to manipulate them and extract data.
Drag these links to your bookmark/favourites bar, or right click on them and choose "add to bookmarks" or "add to favourites":
* [[Scrub shadow tiddlers|javascript:(function(){if(window.version&&window.version.title=='TiddlyWiki'){for(var s in config.shadowTiddlers){store.removeTiddler(s);}refreshDisplay();}})()]] - deletes any overridden shadow tiddlers, reverting them to their default values. Handy when you’ve gone mad with PageTemplate customisations and your TiddlyWiki document won’t display properly
* [[Scrub tiddler fields|javascript:(function(){if(window.version&&window.version.title=='TiddlyWiki'){store.forEachTiddler(function(title,tiddler){tiddler.fields={};});refreshDisplay();}})()]] - all the extended fields from a TiddlyWiki document, including that pesky “changecount” field
* [[Rescue raw TiddlyWiki content|javascript:(function(){if(window.version&&window.version.title=='TiddlyWiki'){var w=window.open();w.document.open();w.document.write('<html><body><pre>');w.document.write(store.allTiddlersAsHtml().htmlEncode());w.document.write('</pre></body></html>');w.document.close();}})()]] - opens a new window containing the raw content of a TiddlyWiki. Handy when you’ve inadvertently been editing an online version of TiddlyWiki that isn’t letting you save changes in the usual way
SaqImtiaz has a more extensive [[collection of bookmarklets|http://lewcid.org/tiddlywiki-bookmarklets/]] with better documentation.
If you're creating your own bookmarklets, this [[editor|http://subsimple.com/bookmarklets/jsbuilder.htm]] and these [[tips|http://subsimple.com/bookmarklets/tips.asp]] are useful resources.
<br/>''The TiddlySaver Java applet allows'' TiddlyWiki to save changes in Safari, Opera and other browsers (from a {{{file://}}} URL). It is a small file named [["TiddlySaver.jar"|TiddlySaver.jar]] that must be placed in the same directory as your TiddlyWiki file.
[["TiddlySaver.jar"|TiddlySaver.jar]] is signed by [[UnaMesa Association|UnaMesa]]. The [[UnaMesa Association|UnaMesa]] certificate is signed by the ''Thawte Code Signing CA'' intermediate certificate which is chained to the ''Thawte Premium Server CA'' root certificate.
*You need to trust this certificate Chain to be able to use the applet
''The first time you try to use the applet'', even if the certificate is indicated as valid, you should trust the certificate chain to be able to use the applet.
''Note'' that there is no longer any need for a {{{.java.policy}}} file.
''Note'' that there is currently [[a bug|http://trac.tiddlywiki.org/ticket/172]] that prevents TiddlySaver from working if you have specified a backup directory in AdvancedOptions and the directory doesn't exist.
''Thanks to'' Andrew Gregory for the original TiddlySaver code, and BidiX for arranging all the certificate magic.
|''URL:''|http://tiddlystyles.com/|
|''URL:''|http://www.tiddlytools.com/|
|''Description:''|Small Tools for Big Ideas!|
|''Author:''|EricShulman|
TiddlyWiki is a complete [[wiki|http://en.wikipedia.org/wiki/Wiki]] in a single HTML file. It contains the entire text of the wiki, and all the JavaScript, CSS and HTML goodness to be able to display it, and let you edit it or search it - without needing a server.
TiddlyWiki is published under an OpenSourceLicense and maintained by a busy [[Community]] of independent developers.
Before TiddlyWiki supported [[Plugins]], several independent developers created their own extended adaptations to support new features. These can be considered forks of the original core code, and won't necessarily be based on the latest version. For that reason, the trend more recently has been for developers to release new features as [[Plugins]] that can be readily mixed and matched and upgraded to the latest version.
Here's a list of known adaptations - note that many of these are quite old, and the links may be dead:
* TimoBenk's TiddlyTasks at http://m28s01.vlinux.de/tiddlytasks.html
* KeithHodges' TiddlyPom at http://www.warwick.ac.uk/~tuspam/tiddlypom.html
* RodneyGomes' RoWiki, based on PyTW, at http://rodney.gotdns.com/
* LarsEnglund's TiddlyWikiRDF at http://larsenglund.com/TiddlyWikiRDF/
* BramChen's PrinceTiddlyWiki at http://ptw.sourceforge.net/
* JoshGoebel's ServerSideWiki at http://www.serversidewiki.com
* MasakiYatsu's LesserWiki at http://lesserwiki.org/
* MichaelBridgen's StickyWiki at http://www.squaremobius.net/~mikeb/Darcs/sticky-wiki/
* DavidHarper's BloTid, at http://www.spacecoastweb.net/BloTid/Tiddly/
* JacquesTurbé's TidliPo, in French at http://avm.free.fr/tidlipo.html
* JoeRaii's pytw at http://www.cs.utexas.edu/~joeraii/pytw/ and his Siglet at http://www.cs.utexas.edu/~joeraii/siglet/
* JároliJózsef's MagyarTiddlyWiki at http://innen.hu/MagyarTiddlyWiki in Hungarian
* Yoshimov's EncryptedTiddlyWiki, at http://wiki.yoshimov.com/?page=EncryptedTiddlyWiki
* TiagoDionizio's TsWiki using Tcl and SQLite, at http://mega.ist.utl.pt/~tngd/wiki/
* TimMorgan's ZiddlyWiki based on Zope, at http://ziddlywiki.org/
* SteveRumsby's YetAnotherTiddlyWikiAdaptation at http://www.rumsby.org/yatwa/
* PhonoHawk's PerlTiddlyWiki at http://ccm.sherry.jp/tiddly/
* NathanBower's GTDTiddlyWiki at http://shared.snapgrid.com/gtd_tiddlywiki.html
* GeetDuggal's PileTiddly at http://www.geetduggal.com/PileTiddly/
* DanPhiffer's TiddlyWikiRemote at http://phiffer.org/tiddly/
* JonnyLeRoy's TiddlyTagWiki at http://www.digitaldimsum.co.uk/
* JodyFoo's TagglyWiki at http://informationality.com/tagglywiki/tagglywiki.html
* ChristianHauck's at http://www.christianhauck.net/html/14300.html
* TonyLownds's TiddlyHacks at http://tony.lownds.com/tiddly/dev/cgi/index.cgi
* AlanHecht's QwikiWeb at http://snipurl.com/qwikiweb
* TimCuthbertson and MattGiuca's TiddlyWikiCSS at http://codestar.lidonet.net/misc/tiddlywikicss.html
** PeterLazarev's further improvements at http://petka.webhop.net/#NiceTiddlyWiki
* PatrickCurry and GabrielJeffrey's PhpTiddlyWiki at http://www.patrickcurry.com/tiddly/
* PoulStaugaard and IvanMetalnikov's at http://poul.staugaard.dk/IeWiki.htm
* HenrikAastedSorensen's at http://aasted.org/wiki
* KamiWiki at http://rakusai.org/kamiwiki/
* IsaoSonobe's OgreKitWiki which is currently offline
* There's also KevemBuangga's TiddlyWikiClone at http://www.kevembuangga.com/hwk/hailiwiki.htm
* Also inspired by TiddlyWiki, Dr MichaelRees' [[DotWikIE|http://comet.it.bond.edu.au/dotsoft/Pages/dotwikiehome.aspx]],
* And AndreNho's StickWiki at http://stickwiki.sourceforge.net/
* [[MessageVault|http://www.kokogiak.com/gedankengang/2007/03/introducing-message-vault.html]] is a personal password store built on some TiddlyWiki technology
There's also some TiddlyWikiTools that extend TiddlyWiki.
TiddlyWiki has been used as the basis of a couple of experiments in hypertext fiction right from the start GinaTrapani created [[Baby Dog Sitter|http://scribbling.net/tiddlywiki-and-non-linear-fiction]] with the FirstVersion of TiddlyWiki, followed by "[[Die, Vampire! Die!|http://www.davidvanwert.com/wiki/dievampiredie.html]]" from DavidVanWert and AlexSchroeders [[Rose|http://www.emacswiki.org/alex/rose.html]].
Perhaps the most ambitious and sustained experiment is Gimcrack'd (http://gimcrackd.com/), and CharlesStross' [[Singularity!|http://www.accelerando.org/_static/toughguide.html]] is a fun read.
IsaoSonobe's TiddlyWikiPod is a nifty utility for Mac OS X that copies the content of a TiddlyWiki to an iPod where it can be read, and links followed, using the touch wheel. Isao has also added the ability to link to songs from the TiddlyWiki text which enables some interesting applications. At the moment, the instructions apply to the older SecondVersion of TiddlyWiki. It can be found at http://www8.ocn.ne.jp/~sonoisa/TiddlyWikiPod/index.html
SaqImtiaz and KalleAlm have just released a release candidate of [[TiddlySnip|http://tiddlysnip.com/]], a Firefox extension that lets you use your TiddlyWiki as a scrapbook. Simply select text, right click and choose {{{TiddlySnip selection}}}. Next time you open your TiddlyWiki file, your snippets will be there, already tagged and organised.
The first add-on tool for TiddlyWiki was IsaoSonobe's TiddlyWikiPod that let's you transfer the contents of a TiddlyWiki to an iPod (well, not an iPod shuffle).
MarkusKoch has [[released a script|http://bloggern.de/cms/wiki.php]] that allows Postnuke to publish content in TiddlyWiki format (Postnuke is a popular full-blown open source content management system).
The 33ad blog features a neat tool by JeremyKelley to create a calendar in TiddlyWiki table format: http://33ad.org/tools/gtdtwcal.php
See TiddlyBookmarklets for some ideas about using bookmarklets to extend and hack TiddlyWiki.
The {{{<<today>>}}} macro inserts the current date and time into a tiddler. It's updated each time the tiddler is redisplayed.
It can optionally take a DateFormatString to determine the way that the date is displayed:
{{{
<<today>>
<<today>>
}}}
Results in:
<<today>>
<<today>>
If your press the command key on the Mac or the control key on the PC while clicking on a link to a tiddler, the tiddler will be opened as usual if it isn't already open, but if //is// open, it will be closed. It makes a handy way to review links without having to move the mouse around to re-close tiddlers.
You can make this behaviour the default under AdvancedOptions (you can override back to the normal behaviour with the same command/control key).
A row of ToolbarButtons appears to the right of a tiddler title when the mouse is hovered over it. The buttons are:
* ''close'' - close the current tiddler
* ''edit'' - edit the current tiddler
* ''permalink'' - puts a link direct to the current tiddler into the address bar
* ''references'' - displays all the tiddlers that link to the current tiddler
* ''done'' - save changes to a tiddler being editted
* ''cancel'' - cancel changes to a tiddler being editted
* ''delete'' - delete the current tiddler
|~ViewToolbar| closeTiddler closeOthers +editTiddler saveTiddler> fields syncing permalink references jump|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|
The ToolbarMacro is used in the TiddlerTemplateMechanism to define the toolbar that appears when the mouse is hovered over a tiddler. It looks like this:
{{{
<<toolbar closeTiddler -editTiddler +jump>>
}}}
The arguments to the ToolbarMacro is a list of command names, as discussed in the CommandMechanism. The available commands are tagged <<tag commands>>.
You can precede a command name with a "+" to specify a default command that is automatically chosen when a tiddler is double-clicked, or the ctrl-Enter key combination pressed. Similarly, precede it with "-" to specify a command to be chosen when the Escape key is pressed.
/***
Contains the stuff you need to use Tiddlyspot
Note you must also have UploadPlugin installed
***/
//{{{
// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'twfacelift';
// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too
// disable autosave in d3
if (window.location.protocol != "file:")
config.options.chkGTDLazyAutoSave = false;
// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}
// create some shadow tiddler content
merge(config.shadowTiddlers,{
'WelcomeToTiddlyspot':[
"This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
"<<tiddler TspotControls>>",
"See also GettingStarted.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// @@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Help!// @@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),
'TspotControls':[
"| tiddlyspot password:|<<option pasUploadPassword>>|",
"| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
"| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),
'TspotSidebar':[
"<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),
'TspotOptions':[
"tiddlyspot password:",
"<<option pasUploadPassword>>",
""
].join("\n")
});
//}}}
''The ~TiddlyWiki community have created'' several tutorials and guides. Here are some of the most popular ones:
* Jeremy Wagstaff's [[The Power of Tiddly|http://www.loosewireblog.com/2007/11/the-power-of-ti.html]]
* Dave Gifford's [[TiddlyWiki for the Rest of Us|http://www.giffmex.org/twfortherestofus.html]] and his [[slideshow introduction|http://www.giffmex.org/blog/?p=23]]
* Morris Gray's [[TW Help - TiddlyWiki help file for beginners|http://tiddlyspot.com/twhelp/]]
* Dmitri Popov's [[TiddlyWiki quick reference card|http://nothickmanuals.info/doku.php/cheatsheets]]
* Screencasts from [[JimVentola|http://faculty.massasoit.mass.edu/jventola/videocasts/tidhelp2/tidhelp2.html]] and [[LeonKilat|http://max.limpag.com/2006/09/07/using-a-tiddlywiki-a-video-guide/]].
/***
''TwHelpSearch'' for TiddlyWiki 2.0.x to 2.2.x
^^author: Morris S. Gray
source: http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin
documentation: http://twhelp.tiddlyspot.com/#TWHelpSearchDoc
license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
|>|>|>|<<search>> |
|>|>| look for in |>|>|>|
| <<option chkSearchTitles>> | <<option chkSearchText>> | <<option chkSearchTags>> | <<option chkHoldSearches>> |
| titles | text | tags | hold |
''A Plugin Tweak for:'' SearchOptionsPlugin
!!!!!Description
<<<
This plugin defines an alternative format for the SearchResults tiddler that is generated by the SearchOptionsPlugin . It presents the search results in tabular form numbering the rows; and showing the tiddler title, the size in bytes, and the tags. It is ready to be used with the [[SortableGridPlugin|http://solo.dc3.com/tw/#SortableGridPlugin]] (check versions) so any column can be sorted; such as size in ascending or descending order.
<<<
!!!!!Installation
<<<
Import (or copy/paste) the following tiddlers into your ~TiddlyWiki:
* http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin
*SearchOptionsPlugin from http://www.tiddlytools.com/#SearchOptionsPlugin
* Get more documentation here [[TWHelpSearchDoc]] or here:
* http://twhelp.tiddlyspot.com/#TwHelpSearchDoc
<<<
!!!!!Revision History
<<<
''2007.09.12 [1.0.6]''
Added overflow scroll to TWHelp-SearchResults for long titles or tags.
''2006.02.03 [1.0.5]''
Added facility for holding the results of multiple searches with tick box on dashboard.
''2006.02.02 [1.0.4]''
Added several options, cleaned up design.Planning one version basic and one with added options this is the added options version.
''2006.01.27 [1.0.3''
Added a column for the size of the text in each tiddler, this does not include the size of the title or tags. Added overall TW statistics button requires TiddlerStatsPlugin.
''2006.01.23 [1.0.2 ]''
''a)''Changed function reportSearchResults(text,matches) to window.reportSearchResults=function(text,matches)
''b)''Added a line so that Incremental Search is automatically disabled config.options.chkSearchIncremental=false; turn off key-by-key searching
''c)''Removed space inside parens. bgcolor(#fe8 )" to "bgcolor(#fe8)". This
is what was causing IE to 'crap out' halfway through drawing the table
headings.
''d)''Added {{{config.options.chkSearchList=true;}}}
''2006.01.20 [1.0.1]''
ELS: reportSearchResults() definition moved to this Plugin Tweak tiddler and removed extranous code
''2006.01.19 [1.0.0]''
This is an adaptation of Eric Shulman's SearchOptionsPlugin. Adapted by MorrisGray to provide search results in table form. All the necessary controls for refining the search is provided within the table including slide-down access to AdvancedOptions.
<<<
!!!!!Code
***/
//{{{
if (config.options.chkSinglePageMode==undefined) config.options.chkSinglePageMode=false;
if (config.options.chkRegExpSearch==undefined) config.options.chkRegExpSearch=true;
if (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=false;
if (config.options.chkSearchText==undefined) config.options.chkSearchText=true;
if (config.options.chkSearchTags==undefined) config.options.chkSearchTags=false;
if (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=true;
if (config.options.chkSearchList==undefined) config.options.chkSearchList=true;
if (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=false;
if (config.options.chkToggleLinks==true) config.options.chkToggleLinks=false;
if (config.options.chkHoldSearches==undefined) config.options.chkHoldSearches=false;
if (config.options.chkSortTags==undefined) config.options.chkSortTags=false;
config.options.chkToggleLinks=false;
config.options.chkSinglePageMode=false;
config.options.chkHoldSearches=false;
config.options.chkSearchIncremental=false;
config.options.chkHttpReadOnly = false;
config.options.chkRegExpSearch=true;
config.options.chkSearchList=true;
config.options.chkToggleLinks=false;
config.shadowTiddlers.AdvancedOptions += "\n<<option chkHoldSearches>> Hold search results";
//}}}
//{{{
// Give the report a custom name
config.macros.search.reportTitle="TWHelp-SearchResults";
// Override default SearchOptionsPlugin formatting for SearchResults tiddler
window.reportSearchResults=function(text,matches)
{
var title=config.macros.search.reportTitle
config.macros.search.reportTitle;
var q = config.options.chkRegExpSearch ? "/" : "'";
if (!config.options.chkHoldSearches) body="";
body+="\n|>|bgcolor(#8af):@@color(#000080):''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''@@|bgcolor(#8af): @@color(#A00000): SearchHelp@@ "+"|"+"\n";
body+="|>|>|bgcolor(#E3FFE3):<<search>> <<option chkSearchTitles>> Titles <<option chkSearchText>> Text <<option chkSearchTags>>Tags <<option chkHoldSearches>> Hold |"+"\n";
body+="\n| |bgcolor(#8af): @@color(#000080):sort by: ''Titles''@@ |bgcolor(#8af): @@color(#000080): ''Size'' (bytes)@@ |bgcolor(#8af): @@color(#000080): ''Tags''@@ |h";
for(var t=0;t<matches.length;t++)
body+="\n"+"| "+(t+1)+"|[["+matches[t].title+"]]| "+matches[t].text.length+"|"+"@@"+matches[t].tags+"@@"+"|";
body+="\n";
// create/update the tiddler
var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();
tiddler.set(title,body,config.options.txtUserName,(new Date()),"excludeLists excludeSearch killbookmark");
store.addTiddler(tiddler); story.closeTiddler(title);
// render tiddler
var oldprompt=config.macros.search.label;
config.macros.search.label="search again"; // use alternate "search again" label
story.displayTiddler(null,title,1); // force refresh
config.macros.search.label=oldprompt; // restore standard search label
}
//}}}
[[UnaMesa|http://www.unamesa.org/]] is a non-profit organisation that owns and holds the IPR for TiddlyWiki in trust for the public.
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 09/07/2008 10:10:52 | YourName | [[twfacelift.html|file:///F:/TiddlyWiki2.4/TWFaceLift/twfacelift.html]] | [[store.cgi|http://twfacelift.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twfacelift.tiddlyspot.com/index.html]] | . | ok |
| 09/07/2008 10:22:48 | YourName | [[twfacelift.html|file:///F:/TiddlyWiki2.4/TWFaceLift/twfacelift.html]] | [[store.cgi|http://twfacelift.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twfacelift.tiddlyspot.com/index.html]] | . | ok |
| 09/07/2008 10:28:26 | YourName | [[twfacelift.html|file:///F:/TiddlyWiki2.4/TWFaceLift/twfacelift.html]] | [[store.cgi|http://twfacelift.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twfacelift.tiddlyspot.com/index.html]] | . | ok |
| 09/07/2008 11:14:41 | YourName | [[twfacelift.html|file:///F:/TiddlyWiki2.4/TWFaceLift/twfacelift.html]] | [[store.cgi|http://twfacelift.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twfacelift.tiddlyspot.com/index.html]] | . | ok |
| 10/07/2008 09:52:11 | YourName | [[twfacelift.html|file:///F:/TiddlyWiki2.4/TWFaceLift/twfacelift.html]] | [[store.cgi|http://twfacelift.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twfacelift.tiddlyspot.com/index.html]] | . | ok |
| 10/07/2008 10:18:19 | YourName | [[twfacelift.html|file:///F:/TiddlyWiki2.4/TWFaceLift/twfacelift.html]] | [[store.cgi|http://twfacelift.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twfacelift.tiddlyspot.com/index.html]] | . | ok |
| 13/07/2008 10:51:18 | YourName | [[twfacelift.html|file:///F:/TiddlyWiki2.4/TWFaceLift/twfacelift.html]] | [[store.cgi|http://twfacelift.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twfacelift.tiddlyspot.com/index.html]] | . | ok |
| 13/07/2008 11:54:25 | YourName | [[twfacelift.html|file:///F:/TiddlyWiki2.4/TWFaceLift/twfacelift.html]] | [[store.cgi|http://twfacelift.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twfacelift.tiddlyspot.com/index.html]] | . | ok |
| 13/07/2008 11:55:26 | YourName | [[twfacelift.html|file:///F:/TiddlyWiki2.4/TWFaceLift/twfacelift.html]] | [[store.cgi|http://twfacelift.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twfacelift.tiddlyspot.com/index.html]] | . | ok |
| 13/07/2008 16:02:59 | YourName | [[twfacelift.html|file:///F:/TiddlyWiki2.4/TWFaceLift/twfacelift.html#search:jeremy]] | [[store.cgi|http://twfacelift.tiddlyspot.com/store.cgi]] | . | [[index.html | http://twfacelift.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 19, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.2.0 (Beta 5)'
};
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");
merge(config.macros.option.types, {
'pas': {
elementType: "input",
valueField: "value",
eventName: "onkeyup",
className: "pasOptionInput",
typeValue: config.macros.option.passwordInputType,
create: function(place,type,opt,className,desc) {
// password field
config.macros.option.genericCreate(place,'pas',opt,className,desc);
// checkbox linked with this password "save this password on this computer"
config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
},
onChange: config.macros.option.genericOnChange
}
});
merge(config.optionHandlers['chk'], {
get: function(name) {
// is there an option linked with this chk ?
var opt = name.substr(3);
if (config.options[opt])
saveOptionCookie(opt);
return config.options[name] ? "true" : "false";
}
});
merge(config.optionHandlers, {
'pas': {
get: function(name) {
if (config.options["chk"+name]) {
return encodeCookie(config.options[name].toString());
} else {
return "";
}
},
set: function(name,value) {config.options[name] = decodeCookie(value);}
}
});
// need to reload options to load passwordOptions
loadOptionsCookie();
/*
if (!config.options['pasPassword'])
config.options['pasPassword'] = '';
merge(config.optionsDesc,{
pasPassword: "Test password"
});
*/
//}}}
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.0|
|''Date:''|May 5, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (#3125)|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 0,
date: new Date("May 5, 2007"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0 (#3125)'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
refreshOptions: function(listWrapper) {
var uploadOpts = [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine",
]
var opts = [];
for(i=0; i<uploadOpts.length; i++) {
var opt = {};
opts.push()
opt.option = "";
n = uploadOpts[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
}
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,null,null,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
bidix.upload.httpUpload(rssUploadParams,convertUnicodeToUTF8(generateRss()),callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == httpStatus.NotFound)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
/* don't want this for tiddlyspot sites
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
*/
//}}}
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'><span macro='dropTags "tags"'></span></div>
<div class='title' macro='view title'></div>
<div class='viewer' macro='view text wikified'></div>
TiddlyWiki works fine under Internet Explorer on Windows Vista, although you may run into the blocking problem described in ServicePack2Problems.
Under Vista, TiddlyWiki will not save changes correctly if you are viewing the TiddlyWiki file in Vista's file preview pane.
|''URL:''|http://visualtw.ouvaton.org/VisualTW.html|
|''Author:''|Pascal|
In late February 2007 an update to Norton's anti-virus software causes it to falsely identify TiddlyWiki files as containing the "W32.Feebs" virus. This is an incorrect report and should be ignored. See [[this discussion|http://groups.google.com/group/TiddlyWiki/browse_frm/thread/f98da9a720d01ba5/87a96ed9899e05c9?hl=en]] for more details.
TiddlyWiki seems to [[work fine on the Wii browser|http://blog.deuceofalltrades.com/2007/02/wii-browser-meets-microcontent.html]], at least for browsing -- it doesn't appear that you can save or upload changes.
Putting TiddlyWiki on a USB thumb drive lets you carry around a SelfContained notebook that you can update wherever there's a reasonably modern computer, whether it's a Mac, Linux or a PC. (To be even more independent you can [[install FireFox on the drive|http://www.mozilla.org/support/firefox/tips#oth_usb]] as well).
A Wiki is a popular way of building collaborative websites. It's based on the two ideas of allowing users to easily edit any page and the use of special formatting to create links between pages. See Wikipedia for [[more details|http://en.wikipedia.org/wiki/Wiki]].
TiddlyWiki is fundamentally different from a conventional Wiki because it is not based on separate, entire pages of content, but rather items of MicroContent referred to as [[Tiddlers|Tiddler]] that live together on the same page.
Out of the box, TiddlyWiki is also different because it doesn't support public editing - or indeed any persistent editing when viewed over the web. However, there are several TiddlyWikiAdaptations and [[Plugins]] that provide these features in a wide range of different configurations.
A WikiWord is a word composed of a bunch of other words slammed together with each of their first letters capitalised. WikiWord notation in a conventional WikiWikiWeb is used to name individual pages while TiddlyWiki uses WikiWord titles for smaller chunks of MicroContent. Referring to a page with a WikiWord automatically creates a link to it. Clicking on a link jumps to that page or, if it doesn't exist, to an editor to create it. It's also easy to have NonWikiWordLinks, and there's a WikiWordEscape for situations where you don't want a WikiWord to be interpreted as a link.
Sometimes it's handy to be able to write WikiWords without them being recognised as links (for people's names, for instance). You can do this by preceding the WikiWord with a tilde ({{{~}}}). For example, ~JamesBond, ~JavaScript and ~TiddlyWiki
I'm hoping that after using TiddlyWiki for a while a new WritingStyle will emerge that is appropriate for this medium. Jakob Neilsen wrote an article about [[writing styles|http://www.useit.com/alertbox/980906.html]] for MicroContent back in 1998 that still seems surprisingly relevant.
Here is a table of the browsers that work with TiddlyWiki:
|!Browser |!Version |!Allows SaveChanges? |
|InternetExplorer |6.0+ |Yes |
|FireFox |1.0+ |Yes |
|[[Safari]] |1.0+ |Yes, via plugin |
|[[Opera]] |? |See Opera notes |
|Netscape Navigator |7.0+ |Yes |
|[[Camino]] |1.0+ |Yes |
|[[Wii]] |All |No |
Please [[let me know|http://groups.google.com/group/TiddlyWiki]] of any additions or corrections.
<!--{{{-->
<div class='viewer' macro='view text wikified'></div>
<!--}}}-->
You just clicked on an example link, which was created by putting the word 'example' in double square brackets. You can now close this tiddler by clicking on the 'close' link above, and return to the guidelines.
Tiddlers tagged {{{systemServer}}} wrap up all the connection details of a particular server so that they can be accessed quickly.
A list of available {{{systemServer}}} tiddlers is presented at the start of the ImportTiddlers macro. Selecting one of them pre-selects the relevant fields in the wizard. After a successful import operation, ImportTiddlers also offers the opportunity to automatically create a {{{systemServer}}} tiddler with the details of the server that was used. {{{systemServer}}} tiddlers are also used by the [[syncing]] command.
Here's an example {{{systemServer}}} tiddler:
<<<
|''Description:''|My example server|
|''Type:''|mediawiki|
|''URL:''|http://www.myexampleserver.org/x/|
|''Workspace:''|Main|
|''~TiddlerFilter:''|[tags[important unpluggable]]|
<<<
The fields are as follows:
|!Field |!Description |!Status |
|Description |Brief description of the server |Optional |
|Type |Type of server connection eg {{{file}}} or {{{mediawiki}}} |Optional - defaults to {{{file}}} |
|URL |Host URL of the server |Mandatory |
|Workspace |Name of the workspace |Optional |
|TiddlerFilter |Specifies which tiddlers are to be imported |Optional |
TiddlyWiki has now been translated into over 20 languages - see the [[translation page at TiddlyWiki.org|http://trac.tiddlywiki.org/wiki/Translations]] for more details.