Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
|''Type:''|file|
|''URL:''|file://C:\buffer\tw\empty.bak.html|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|file://C:\buffer\tw\plugins\formatting_tiddlytools.html|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://cctiddly.sourceforge.net|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://cctiddly.sourceforge.net/|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://tiddlytools.com|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://tiddlywiki.bidix.info/|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://tiddlywikitips.com/|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://wiki.osmosoft.com/alpha/pardelib|
|''Workspace:''|(default)|
This tiddler was automatically created to record the details of this server
This is paradigmatically different in many, many ways. 1st, no evidence of markup ... or help on the subject. 2nd failure at an intuitive level e.g. I add an item to DefaultTiddlers but don't see how I can add that to the menu alongside GettingStarted. 3rd, just plain weirdness: "Help" is located under "Options" ... HeyHo.
bummer
Since "New Journal" doesn't create a CamelCase tiddler, I wasn't able to add that item to DefaultTiddlers. So I created this one. Which doesn't show up as a link in DefaultTiddlers. *sigh*
This is paradigmatically different in many, many ways. 1st, no evidence of markup ... or help on the subject. 2nd failure at an intuitive level e.g. I add an item to DefaultTiddlers but don't see how I can add that to the menu alongside GettingStarted. 3rd, just plain weirdness: "Help" is located under "Options" ... HeyHo.
bummer
Well, with help from a number of sources I've nailed the basics ... even discovered how to do --strikeout--!
----
--see [[Requirements]] from http://cctiddly.sourceforge.net/-- ... this didn't work. Dunno why, copied the source directly from the original. ''This is now working''
AltMenu is the Main Menu from http://www.hawksworx.com/playground/TeamTasks/ ... a simple slider, without the nice internal nesting the other has, but at least this works here.
I just now discovered AnonDefaultTiddlers ... a good thing to find!
A few minutes ago I finished the first cut of [[Resources]] ... something to build on.
Earlier, with email from Simon, I gave Import a spin ... managed to grab one Tiddler, but --didn't get the slider functionality I'd wanted. ~HeyHo, and so it goes!--
//Addendum//: ~Ace_NoOne on IRC pointed me to this: [[SourceForge #NestedSlidersPlugin|http://cctiddly.sourceforge.net/#NestedSlidersPlugin]]
That brought me to [[TiddlyTools #NestedSlidersPlugin|http://www.tiddlytools.com/#NestedSlidersPlugin]] and [[TiddlyTools #NestedSlidersPluginInfo|http://www.tiddlytools.com/#NestedSlidersPluginInfo]]
The key instructions were on [[the Wiki Plugins page|http://www.tiddlywiki.org/wiki/Plugins]], i.e. "In order to install a plugin, the respective tiddler(s) need to be imported (or simply copied in edit mode) from the source into the TiddlyWiki document. In order to be processed on startup, plugins need to be assigned the "systemConfig" tag. "
[[Requirements]] is now fully nested.
>//NB: constantly having to log in again and again and again is fucking bullshit. Ok? Ok. Now, where was I ... ohhhh yaa, now I have to restore that whole fucking paragraph full of links. (How long has this been around? Yaa yaa I know, all I'm good for is picking gnits ... GD amateurs.)
It's like Twitter ... unless you want to lose your work before committing you select all and copy, then hit the button.//
----
Of historical interest:
*A [[whole list of interviews with TiddlyHackers|http://mptw1.tiddlyspot.com/#The TiddlyWiki Report]] at Simon Baird's [["MonkeyPirateTiddlyWiki"|http://mptw1.tiddlyspot.com/]]. (Do peek [[Simon's main blog|http://glosoli.blogspot.com/]].)
Case in point: [["The TiddlyWiki Report, Part IV: Jeremy Ruston"|http://loosewire.typepad.com/blog/2005/08/the_tiddlywiki__3.html]] ("The man who started it all".)
And just now came upon Saq Imtiaz's [["TiddlySnip" FireFox extension|http://tiddlysnip.com/]]
Refactored [[Resources]] and GettingStarted.
Just now discovered http://tiddlychatter.tiddlyspot.com/
Also [[presentation template|http://lewcid.googlepages.com/presentation_empty_full.html]] ([[see it in action|http://lewcid.googlepages.com/tots.html]]) and [[WebView|http://www.giffmex.org/webviewtwexample.html]] (gotta luv the editor functions here!).
Should peek http://tiddlyspot.com/ as well.
Dragged in the TiddlerNotesPlugin, so [[Notes]] works ... but I had noped to use it in AnonGreets, so visitors could leave notes anonymousely (i.e. the //principle of ''non-destructive contribution''//) but no such luck.
''NB'': Lots of posts to grapple with on [[Saq's "Tiddly Learning" blog Lewcid.org|http://lewcid.org/]]
Hot Dang! see AccordionMenuDemo ... using [[tw.lewcid.org/#AccordionMenuPlugin|http://tw.lewcid.org/#AccordionMenuPlugin]]
''//~ToDo//'': Get a consistent look between this and the slider style in [[Resources]].
NB: StartingAccordion is a variant of GettingStarted ... note how it should be multiline but //each link causes a newline// ... ''not right''.
And likewise //Hot Dang//: DropDownDemo from [[tw.lewcid.org/#DropDownMenuPlugin|http://tw.lewcid.org/#DropDownMenuPlugin]]
Created TestTabs ... neat!
''//Project//'':
I'm seeing some really fine plugins on sites that are a) stale (unedited since sometime in 2006) and b) not accessible //via// "Import". So: how to harvest from sites such as [[Jim Barr's fully enhanced TW|http://tiddlywikitips.com/]]?
I just did a manual grap of his [[Plugin listTags]] ... no evidence that it's working; no documentation of how it's used. ~HeyHo.
His [[list of internal macros|http://tiddlywikitips.com/#Internal Macros]] is useful, for e.g. listing all tiddlers with a certain tag:
<<tag journal>>
I just grabbed his [[list of internal macros|InternalMacros]]. (The ref links are relative, so that needs to be hacked.)
Meh ... grabbed [[Plugin SplashScreen]] but no joy.
Meh again ... grabbed [[Plugin ImportTiddlers]] and got "A script from "http://wiki.osmosoft.com" was denied UniversalBrowserRead privileges." and exceptions / errors.
Ok, so now I'm getting "Could not open local document: C:\buffer\ripplerap\tiddlywikitips_empty.html" ... which isn't even slightly helpful. ~HeyHo ...
<<importTiddlers inline>>
''//NB://'' I had to un-deploy the systemConfig tag (by changing it to systemConfigwas) because it clashes with the "Backstage" import function.
----
Neato ... I just found how to include another tiddler's contents inside a tiddler, e.g. here's [[subtabB1]]:
<<tiddler "subtabB1">>
----
<<tag journal>>
*sigh* I click [[New Journal]] and the one I've been working on all day opens.
Can't have that sorta core dysfunction.
Can't.
~CannotRPTnot.
*sigh*
<<tag journal>>
//''NB''//: Disappointment: trying a use case, I a) imported a plugin (~RearrangeTiddlersPlugin) to my local file, b) uploaded that to [[my site|http://bentrem.sycks.net/tw/pardelib.html]], then c) came here and tried to import from my local ... which would have been nice. No joy. Meh.
>A script from "http://wiki.osmosoft.com" was denied UniversalBrowserRead privileges.
>[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.setRequestHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://wiki.osmosoft.com/alpha/pardelib :: doHttp :: line 6646" data: no]
When I tried to import from [[my site|http://bentrem.sycks.net/tw/pardelib.html]] I was again blocked, with a different error:
>"A script from "http://wiki.osmosoft.com" was denied UniversalBrowserRead privileges."
`cough`
I just tried to import from http://www.tiddlytools.com ... same problem.
So: ~ParDelib here is now out of sync with ~ParDelib local and at bentrem.sycks.net, which both have the Rearrange plugin.
And I can only see this getting worse.
Dang.
----
Ooooh, just gotta get the Plugin that gives Tiddlers a "collapse" function, see [[Deferential Geometry TW|http://deferentialgeometry.org/]]
That and getting the editor functions from [[WebView|http://www.giffmex.org/webviewtwexample.html]] ... I need a ~ToDo list! Break out the GTD functionality.
I just worked through [[Getting started with UploadPlugin|http://www.tiddlywiki.org/wiki/Getting_started_with_UploadPlugin]] and created a copy of this locally and uploaded to [[bentrem.sycks.net/tw/pardelib.html|http://bentrem.sycks.net/tw/pardelib.html]].
<<tag journal>>
My "CordonBlue" suggestion is getting [[some replies on Dev group|http://groups.google.com/group/TiddlyWikiDev/browse_thread/thread/6562d68583b31eb7?hl=en]]
----
Well ... just started playing with stuff from bidix.com ... saved a local version and found it very attractive.
Proceeded to use the UpLoad tiddler and *blink* found it configured to pardelib.html ... it wudda blown away my previous work.
So I reconfigured it to bidix.com and [[succeeded with the upload|http://bentrem.sycks.net/tw/bidix.html]], which was nice. But then I peeked the upload config for ParDelib and, ayup, it had been changed to bidix.html.
So ... I mean, really ... my whole machine has been taken over by a single file?!
Sorry folks, that's just wrong-headed. Fine, fine, use cookies ... but cookie for bidix.html should be distinct from pardelib.html ... I mean it: really.
----
Gotta keep an eye on these:
* [[Simon Baird's Monkey Pirate TW blog|http://monkeypiratetiddlywiki.blogspot.com/]]
* Lots of posts to grapple with on [[Saq's "Tiddly Learning" blog Lewcid.org|http://lewcid.org/]]
And, incidentally: the [["It's All Text" extension for Firefox|https://addons.mozilla.org/fr/firefox/addon/4125]] (created by [[Dr. What|http://docwhat.gerf.org]]. I gotta say I'm getting more than a little fed up with people who maintain anonymity. ''Get over yourselves!'')... this is called up by the "Externalize" tiddler some TWs are using.
----
Of note: [[VisualTW|http://visualtw.ouvaton.org/VisualTW.html]] has a very interesting host: http://ouvaton.org ... most of it (all?) is in French (which don't bother me a bit), and a good deal of it relates to [[the cooperative movement over there|http://www.entreprises.coop/]] ... very interesting!
<<tag journal>>
<<section ChangedBGsIn2Plugins I switched bg color in ~DropDown and Accordion from #0066aa to #3278FC
>>
<<section MenuAccordions Trying to work DropDownDemo into MainMenu, but here's a subtle downside:
as is, my conventional [[MainMenu|MenuMenuBak]] uses inclusions ... when I create a new journal, I don't edit MainMenu, I edit [[Journals]] ... and likewise with [[Blurts]]. MainMenu doesn't change, and I end up with nice stand-alone slabs of links.
If I use drop-downs, I need to edit MainMenu, and lost those nice slabs.
>>
----
I just brought in SectionMacro from [[SabWiki (by GiffMex, at rsabine.com/|http://rsabine.com/]]
I wanted this here to work in the Section: {{{<<tiddler [[GFreeComment]]>>}}}
<<section SnagsWithSectionMacro I had hoped this section would allow me to include another Plugin, i.e. the code immediately above, but no such luck ... I can't get the functionality, I can't even include that quote code section ... bummer.>>
A near equivalent: AnonGreets now uses this type of accordion:
* Show Code
**{{myclass{
{{{<<tiddler [[GFreeComment]]>>}}}
}}}
<<accordion>>Which works well enough, but there seems no way to close it!
<<section TableFormats [[Customize your TW experience|For advanced users: Customize your TW experience]], from [[TW for the Rest of Us|http://giffmex.org/twfortherestofus.html]] ... it uses an interesting table layout; the "invisible" part isn't quite working, and --I can't get align:left and vertical-align:top; to work. So maybe FormatTables will help.-- //ayup, it did!//
!!!//haaaahaha// ... the spaces caused things to a) right align, and then b) screw up totally. heh!!!
>>
<<section GFreeCommentsWorking I just got [[GFreeComment|GFreeCommentInfo]] working and included it in tiddlers as [[GFreeComment]]. see http://gfreecomment.appspot.com/
>>
<<section ReFactorRightSideBar Just added RearrangeTiddlersPlugin ...
... and just now hid Timeline and the other tabs behind a slider, cutting the contents of SideBarTabs to SideBarContents
>>
I'm using osmosoft.com/alpha/pardelib as my test bed.
And, by way of introduction:
* http://bentrem.sycks.net
* http://groundplane.wordpress.com
* http://gnodal.livejournal.com
* http://twitter.com/bentrem/
* Section 1
** [[Link1]]
** [[Link2]]
** [[Link3]]
*Section 2
** [[Link4]]
** [[Link5]]
** [[Link6]]
*Section 3
**[[Link7]]
**[[Link8]]
**[[Link9]]
<<accordion>>
MultiLine:
* [[section1]]
**{{myclass{
Praesent posuere sodales tortor. Mauris ut erat non lacus semper porta. Mauris enim.
Phasellus tempor, metus ut dapibus lobortis, leo magna ornare metus, et pellentesque neque massa eget turpis.
Proin nec tellus. Donec aliquet.
Nullam sed leo bibendum justo rutrum rhoncus.}}}
* section2
**{{myclass{
Donec rhoncus sem eget urna.
Aenean tempor dolor vitae nisi.
Donec leo urna, placerat porttitor, auctor ut, volutpat a, purus,
Etiam eu sapien id nulla malesuada scelerisque.
Maecenas rhoncus, nibh ut aliquam consequat, mi odio luctus sem, eu lobortis dolor neque nec lectus. }}}
* section3
**{{myclass{
Donec rhoncus sem eget urna.
Aenean tempor dolor vitae nisi.
Donec leo urna, placerat porttitor, auctor ut, volutpat a, purus,
Etiam eu sapien id nulla malesuada scelerisque.
Maecenas rhoncus, nibh ut aliquam consequat, mi odio luctus sem, eu lobortis dolor neque nec lectus. }}}
<<accordion>>
<<tag demo>>
/***
|''Name:''|AccordionMenuPlugin|
|''Description:''|Turn an unordered list into an accordion style menu|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#AccordionMenuPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.0|
|''Date:''|03/11/2007|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.5|
!!Usage:
* put {{{<<accordion>>}}} on the line after your unordered list
!!Customizing:
* customize the css via the shadow tiddler StyleSheetAccordionMenuPlugin
* or give the list a custom class by passing the classes as parameters to the macro.
** Eg: {{{<<accordion ClassName1 ClassName2>>}}}
!!Examples:
*[[AccordionMenuPluginDemo]]
***/
// /%
//!BEGIN-PLUGIN-CODE
config.macros.accordion={
dropchar : " \u00BB",
handler : function(place,macroName,params,wikifier,paramString,tiddler){
list = findRelated(place.lastChild,"UL","tagName","previousSibling");
if (!list)
return;
addClass(list,"accordion");
if (params.length){
addClass(list,paramString);
}
this.fixLinks(list.childNodes);
},
fixLinks : function(els){
for (var i=0; i<els.length; i++){
if(els[i].tagName.toLowerCase()=="li"){
var link = findRelated(els[i].firstChild,"A","tagName","nextSibling");
if(!link){
var ih = els[i].firstChild.data;
els[i].removeChild(els[i].firstChild);
link = createTiddlyElement(null,"a",null,null,ih+this.dropchar,{href:"javascript:;"});
els[i].insertBefore(link,els[i].firstChild);
}
else{
link.firstChild.data = link.firstChild.data + this.dropchar;
removeClass(link,"tiddlyLinkNonExisting");
}
link.onclick = this.show;
}
}
},
show : function(e){
var list = this.parentNode.parentNode;
var els = list.childNodes;
for (var i=0; i<els.length; i++){
removeClass(els[i],"accordion-active");
}
addClass(this.parentNode,"accordion-active");
}
};
config.shadowTiddlers["StyleSheetAccordionMenuPlugin"] = "/*{{{*/\n"+
"ul.accordion, ul.accordion li, ul.accordion li ul {margin:0; padding:0; list-style-type:none;text-align:left;}\n"+
"ul.accordion li ul {display:none;}\n"+
"ul.accordion li.accordion-active ul {display:block;}\n"+
"\n"+
"ul.accordion li.accordion-active a {cursor:default;}\n"+
"ul.accordion li.accordion-active ul li a{cursor:pointer;}\n"+
"\n"+
"ul.accordion a {display:block; padding:0.5em;}\n"+
"ul.accordion li a.tiddlyLink, ul.accordion li a.tiddlyLinkNonExisting, ul.accordion li a {font-weight:bold;}\n"+
"ul.accordion li a {background:#3278FC; color:#FFF; border-bottom:1px solid #fff;}\n"+
"ul.accordion li.accordion-active a, ul.accordion li a:hover {background:#00558F;color:#FFF;}\n"+
"\n"+
"ul.accordion li ul li{display:inline-block;overflow:hidden;}\n"+
"ul.accordion li.accordion-active ul li {background:#eff3fa; color:#000; padding:0em;}\n"+
"ul.accordion li.accordion-active ul li div {padding:1em 1.5em; background:#eff3fa;}\n"+
"ul.accordion li.accordion-active ul a{background:#eff3fa; color:#000; padding:0.5em 0.5em 0.5em 1.0em;border:none;}\n"+
"ul.accordion li.accordion-active ul a:hover {background:#e0e8f5; color:#000;}\n" +
"/*}}}*/";
store.addNotification("StyleSheetAccordionMenuPlugin",refreshStyles);
//!END-PLUGIN-CODE
// %/
@@display:none;clear:both;@@
''Creating a navigation menu using the AccordionMenuPlugin is as simple as:''
# writing a two level unordered list using ~TiddlyWiki syntax
# and placing {{{<<accordion>>}}} on the line after it.
Example:
{{{
* Section 1
** [[Link1]]
** [[Link2]]
** [[Link3]]
*Section 2
** [[Link4]]
** [[Link5]]
** [[Link6]]
*Section 3
**[[Link7]]
**[[Link8]]
**[[Link9]]
<<accordion>>
}}}
gives:
* Section 1
** [[Link1]]
** [[Link2]]
** [[Link3]]
*Section 2
** [[Link4]]
** [[Link5]]
** [[Link6]]
*Section 3
**[[Link7]]
**[[Link8]]
**[[Link9]]
<<accordion>>
''The AccordionMenuPlugin was written with navigation menu's in mind but can be put to other uses as well. ''
By wrapping the content in a DIV, you can have multi-line content as well. Example:
{{{
* [[section1]]
**{{myclass{
Praesent posuere sodales tortor. Mauris ut erat non lacus semper porta. Mauris enim.
Phasellus tempor, metus ut dapibus lobortis, leo magna ornare metus, et pellentesque neque massa eget turpis.
Proin nec tellus. Donec aliquet.
Nullam sed leo bibendum justo rutrum rhoncus.}}}
* section2
**{{myclass{
Donec rhoncus sem eget urna.
Aenean tempor dolor vitae nisi.
Donec leo urna, placerat porttitor, auctor ut, volutpat a, purus,
Etiam eu sapien id nulla malesuada scelerisque.
Maecenas rhoncus, nibh ut aliquam consequat, mi odio luctus sem, eu lobortis dolor neque nec lectus. }}}
* section3
**{{myclass{
Donec rhoncus sem eget urna.
Aenean tempor dolor vitae nisi.
Donec leo urna, placerat porttitor, auctor ut, volutpat a, purus,
Etiam eu sapien id nulla malesuada scelerisque.
Maecenas rhoncus, nibh ut aliquam consequat, mi odio luctus sem, eu lobortis dolor neque nec lectus. }}}
}}}
gives you:
* [[section1]]
**{{myclass{
Praesent posuere sodales tortor. Mauris ut erat non lacus semper porta. Mauris enim.
Phasellus tempor, metus ut dapibus lobortis, leo magna ornare metus, et pellentesque neque massa eget turpis.
Proin nec tellus. Donec aliquet.
Nullam sed leo bibendum justo rutrum rhoncus.}}}
* section2
**{{myclass{
Donec rhoncus sem eget urna.
Aenean tempor dolor vitae nisi.
Donec leo urna, placerat porttitor, auctor ut, volutpat a, purus,
Etiam eu sapien id nulla malesuada scelerisque.
Maecenas rhoncus, nibh ut aliquam consequat, mi odio luctus sem, eu lobortis dolor neque nec lectus. }}}
* section3
**{{myclass{
Donec rhoncus sem eget urna.
Aenean tempor dolor vitae nisi.
Donec leo urna, placerat porttitor, auctor ut, volutpat a, purus,
Etiam eu sapien id nulla malesuada scelerisque.
Maecenas rhoncus, nibh ut aliquam consequat, mi odio luctus sem, eu lobortis dolor neque nec lectus. }}}
<<accordion>>
[["Performance Tips"|Tips for speeding up performance on large TiddlyWikis]] and [[Customize your TW experience|For advanced users: Customize your TW experience]], both from [[TW for the Rest of Us|http://giffmex.org/twfortherestofus.html]]
External resources:
*[[Plugin Development|http://tiddlywiki.org/wiki/Plugin_Development]]
*[[Bookmarklets|http://lewcid.org/tiddlywiki-bookmarklets/]]
* [[TiddlyVault index of extensions from Giffmex.org|http://tiddlyvault.tiddlyspot.com/]]
AnonGreets
[[29 June 2008]]
Hi! You've found your way to my (very preliminary) ~ParDelib page.
I invite you to snoop the material I've listed in the left sidebar menu ...
... but perhaps you want to set up your own ccTiddlyWiki? (That's the software this site is running.)
If that's the case, then head on over to [[OsmoSoft's hosting site|http://wiki.osmosoft.com/alpha/]] ... fill your boots!
- -[[bentrem|http://twitter.com/bentrem]]
* Login
**{{myclass{
<<ccLogin>>
}}}
* Comment!
**{{myclass{
<<tiddler [[GFreeComment]]>>
}}}
<<accordion>>
PluginArchives
External:
*[[TWFaq|http://twfaq.tiddlyspot.com/]] and [[elaborate help|http://tiddlyspot.com/twhelp/]] at [[TiddlySpot.com|http://tiddlyspot.com/]]
*[[CheatSheet (PDF)|http://nothickmanuals.info/lib/exe/fetch.php/cheatsheets:tiddlywiki_cheatsheet.pdf]]
*[[Daniel Baird's UserGuide|http://danielbaird.com/tiddlywikiguides/userguide-sample.html#TiddlyWiki User's Guide]]
*[[TW Resources on TiddlyWiki.org's Wiki|http://www.tiddlywiki.org/wiki/TiddlyWiki_Resources]]
*[[Jim Barr's fully enhanced TW|http://tiddlywikitips.com/]]
*[[TW for the Rest of Us|http://giffmex.org/twfortherestofus.html]]
From [[JeremyRuston's "Getting Started" at TiddlyWiki.com|http://www.tiddlywiki.com/#GettingStarted]]:
----
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/]].
----
<<tag resources>>
Having updated upload config in Bidix, have I trashed upload here?
- CordonBlue
- [[w/Chris Brogan|ChrisBrogan1]]
- [[OS & Community|OpenSourceCommunity]]
- MoralProvocation
<<tag menus>>
A reply I just crafted while chatting with [[Chris Brogan|http://twitter.com/chrisbrogan]] on ~FaceBook:
""We're tying threads together."
Indeed, indeed!
Have you come across "autopoesis"?
Fractals and such ... self-organizing systems ...
So long as a critical number of individuals are striving towards ?what? however they conceive of "the good", things will work themselves out. Kinda like how in conflict situations (Gaza, Iraq, Sudan) all that's required for evil to triumph is that people of good-will do nothing.
Michael Mandelbaum was on Charlie Rose last night ... produced a nice trope: "the irresistable force of democracy and free markets meeting the immovable object that is China's Communist Party" ... it's like that ... tectonic.
My worry: that "fun" increase dissipation catastrophically. (~MySpace comes to mind.)
My project: to create an online system that empowers real discourse. (For my money, conventional forums / wiki / blogs don't cut the mustard.)
From [[ChrisDent/experimental/TiddlyWeb/COOKBOOK|http://trac.tiddlywiki.org/browser/Trunk/contributors/ChrisDent/experimental/TiddlyWeb/COOKBOOK]]
(Thanks to [[Jeremy Ruston for his reply to my "CordonBlue" suggestion in google group|http://groups.google.com/group/TiddlyWikiDev/browse_thread/thread/6562d68583b31eb7]].)
----
>Document a COOKBOOK for getting starting with TiddlyWeb. A fairly long and involved tutorial to cover the basics of making things go.
>This was just rolled out, and is not my area of expertise so I would very much welcome tweaks from others.
----
See also ChrisCookbook
Ripped off from [[Chris' TechnicalOverview|http://peermore.com:8080/recipes/AutoTiddlyWeb/tiddlers.wiki#TiddlyWebTechnicalOverview]]
----
TiddlyWeb is written using version 2.5 of [[Python]].
Its basic architecture is strongly based on [[Joe Gregorio]]'s [[Robaccia]] toy framework, meaning: TiddlyWeb is a [[WSGI]] application that uses [[Selector]] to dispatch a small number of URLs to simple functions in simple modules that satisfy the request.
The TiddlyWeb UrlMap maps URLs to code.
There are three primary entities operating in the TiddlyWeb system:
* [[Recipe]]s
* [[Bag]]s
* [[Tiddler]]s
These are represented in code by very simple classes. Recipe, Bag and Tiddler objects have no methods, only attributes. Other modules use the objects in concert with other modules to perform required actions. These other modules can be divided into sets:
* WebHandlers
* [[Store]]s
* [[Serializer]]s
* [[Control]]
* [[Filter]]s
* [[WSGI Middleware]]
The UrlMap dispatches requests to WebHandlers. The WebHandlers instantiate Recipe, Bag and Tiddler objects and then get them from or put them to [[Store]]s. When the request requires some form of output, a [[Serializer]] is used to transform the object to the required form. A bastardized form of [Content Negotiation] is done to select which Serializer to use.
There are some notes on [[AUTH]] and [[REVISIONS]].
More to come.
----
And //that//, as they say, //is ''that''!//
<<tag history>>
Posted to [[the TW Dev google group|http://groups.google.com/group/TiddlyWikiDev]] ... I had in mind such as [[The "TiddlyVault" index of extensions|http://tiddlyvault.tiddlyspot.com/"]] and [[TiddlyWiki in Action|http://giffmex.tiddlyspot.com/]]
----
As you can see by http://wiki.osmosoft.com/alpha/pardelib#Resources and my Journals there I've been spidering quite a bit.
When I come across something like the editor function in http://www.giffmex.org/webviewtwexample.html the fact that Import is of limited scope really hammers me in the head.
So thinking, I pondered how we might "sync" plugins / templates etc.
Of course ginsu / cook / recipes came to mind.
Anecdotally, ExtJS allows the download of a customized build.
With that in mind an RFE came to mind.
A repository where ~TWs could be built from scratch using the groups aggregated resources. (Have any of you come across "Puppet"? "Make, on steroids" is how one wag described it.)
For e.g. I uploade the empty.html's that I've collected.
Those go into a directory and get ginsu'd.
A menu is generated.
I select from that collection and the chimera is produced, for me to download.
Heck, I can imagine an Import that would allow me to drag in Tiddlers from whatever ~TWs I've loaded!
Apologies if this is madly impractical.
cheers
[[--bentrem|http://twitter.com/bentrem/]]
----
<<tag blurt>>
[[Blurts]] | [[Journals]] | MainMenu |
DefaultTiddlers | AnonDefaultTiddlers | SiteTitle & SiteSubtitle |
*PageTemplate -- Contains the overall structure of the page, including the gradient macro for the masthead.
*EditTemplate -- Contains the structure and order of the tiddler editor screen
*ViewTemplate -- Contains the structure and order of the tiddler view screen
*ToolbarCommands | SideBarTabs
*StyleSheetColors -- Contains the CSS for colors
*StyleSheetLayout -- Contains the CSS for layout
*StyleSheetPrint -- Contains the CSS used when printing from the TiddlyWiki
----
The following block was ripped off from [[the tiddlywiki homepage|http://tiddlywiki.com/]]
----
You can customise the appearance and behaviour of TiddlyWiki to almost any degree you want:
* 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
There are also a bunch of TiddlyWikiTools that you can use to enhance TiddlyWiki.
----
<<slider chkSliderOptionsPanel Resources 'Resources »' 'A list of sites'>>
<<tag resources>>
[[29 June 2008]]
OpenSourceCommunity
MoralProvocation
''horizontal:''
* menu #1
** [[item #1-1]]
** [[item #1-2]]
** [[item #1-3]]
* menu #2
** [[item #2-1]]
** [[item #2-2]]
** [[menu #2-3]]
* menu #3
** [[item #2-1]]
** [[item #2-2]]
** [[menu #2-3]]
<<dropMenu>>
''vertical:''
* menu #1
** [[item #1-1]]
** [[item #1-2]]
** [[item #1-3]]
* menu #2
** [[item #2-1]]
** [[item #2-2]]
** [[menu #2-3]]
<<dropMenu vertical>>
/% %/
''horizontal:''
{{{
* menu #1
** [[item #1-1]]
** [[item #1-2]]
** [[item #1-3]]
* menu #2
** [[item #2-1]]
** [[item #2-2]]
** [[menu #2-3]]
* menu #3
** [[item #2-1]]
** [[item #2-2]]
** [[menu #2-3]]
<<dropMenu>>
}}}
* menu #1
** [[item #1-1]]
** [[item #1-2]]
** [[item #1-3]]
* menu #2
** [[item #2-1]]
** [[item #2-2]]
** [[menu #2-3]]
* menu #3
** [[item #2-1]]
** [[item #2-2]]
** [[menu #2-3]]
<<dropMenu>>
''vertical:''
{{{
* menu #1
** [[item #1-1]]
** [[item #1-2]]
** [[item #1-3]]
* menu #2
** [[item #2-1]]
** [[item #2-2]]
** [[menu #2-3]]
<<dropMenu vertical>>
}}}
* menu #1
** [[item #1-1]]
** [[item #1-2]]
** [[item #1-3]]
* menu #2
** [[item #2-1]]
** [[item #2-2]]
** [[menu #2-3]]
<<dropMenu vertical>>
/% %/
*[[Roadmap and known bugs at Hawksworx.com|http://www.hawksworx.com/playground/TeamTasks/roadmap.html]] last modified byPhilHawkswort on 10 March 2008
*[["Tiddler Parts" plugin|http://tiddlywiki.abego-software.de/#PartTiddlerPlugin]] by [[Udo Borkowski|http://www.abego-software.de/]] (see also [[list of his plugins|http://tiddlywiki.abego-software.de/#Plugins]])
*[[FND's DevPad|http://devpad.tiddlyspot.com/]]
*[[Saq's "Tiddly Learning" blog Lewcid.org|http://lewcid.org/]]
*[[Some useful reference stuff by Jules|http://knighjm.googlepages.com/knightnet-default-tw.html#Reference]] including lists of built-in macros, formatting rules and useful javascript methods for developers.
*[[Repository for BidiX's TiddlyWiki Extensions|http://tiddlywiki.bidix.info/]]
*[[Extension Repository|http://tw.lewcid.org/]] from [[LewCid.org|http://lewcid.org/]]
*[[TiddlyChatter|http://tiddlychatter.tiddlyspot.com/]] at http://tiddlyspot.com/
*[[presentation template|http://lewcid.googlepages.com/presentation_empty_full.html]] ([[see it in action|http://lewcid.googlepages.com/tots.html]])
*[[WebView|http://www.giffmex.org/webviewtwexample.html]] (gotta luv the editor functions here!).
{{invisibletable{
|width:25em;align:left;vertical-align:top;Okay, so you know how to use ~TiddlyWiki, but now you want more. You want to change the color or layout. You want to add features to it. As the subtitle says, this is an entry-level introduction, so I am not going to show you how to do every possible thing you can do with ~TiddlyWiki. I probably don't know half of what can be done. Advanced documentation such as that found at http://www.tiddlywiki.org/wiki and http://tiddlyspot.com/twhelp/ can hopefully expand your horizons. What I will tell you is that there is a LOT more you can do with ~TiddlyWiki if you are interested and determined enough.|Here are a few ideas to get you started.<br><br>[[Advanced ideas for tags]]<br><br>[[More information on tables]]<br><br>[[Colors, images, gradients, stylesheets and other visuals]]<br><br>[[Changing the page layout]]<br><br>[[More with macros]]<br><br>[[A plug for Plugins]]<br><br>[[TiddlyVault collection of plugins and macros|TiddlyVault: your source for macros, plugins and themes]]<br><br>[[How to create new tiddlers based on a template tiddler]]<br><br>[[Create forms with editable fields]]<br><br>[[Access files, folders, etc from within TiddlyWiki]]<br><br>[[TiddlySnip Firefox addon]]|
}}}
I want to thank all the fine people at the Google group for ~TiddlyWiki. If it weren't for them, I wouldn't ever have been able to do these things, let alone explain them to you. It's rare to find such a helpful group of people available every day with same day answers. They are another reason ~TiddlyWiki is so great.
If you've forgotten your username and / or password, please contact the administrator:
simon@osmosoft.com
!This is the formatting:
{{{|!Table header|!Column Two|}}}
{{{|>| colspan |}}}
{{{| rowspan |left aligned|}}}
{{{|~| right aligned|}}}
{{{|bgcolor(#DC1A1A):colored| centered |}}}
{{{||*lists<br>*within<br>*tables<br><br>and double-spaced too|}}}
{{{|caption|c}}}
!This is the result:
|!Table header|!Column Two|
|>| colspan |
| rowspan |left aligned|
|~| right aligned|
|bgcolor(#DC1A1A):colored| centered |
||*lists<br>*within<br>*tables<br><br>and double-spaced too|
|caption|c
Say hello; leave me a note!
<html><div align="center">
<iframe border="0" style="border:none;padding:0;margin:0;" width="380" height="400" src="http://gfreecomment.appspot.com/freecomment/541?url=' + location.href + '"></iframe></html>
<html><div align="center">
<iframe border="0" style="border:none;padding:0;margin:0;" width="210" height="400" src="http://gfreecomment.appspot.com/freecomment/541?url=' + location.href + '">iframe</iframe></html>
This worked after stripping down the original cope, converting it from a document.write script to a naked <iframe>:
> <script type="text/javascript">
>document.write('<iframe border="0" style="border:none;padding:0;margin:0;" width="210" height="400" src="http://gfreecomment.appspot.com/freecomment/541?url=' + location.href + '">iframe</iframe>');
></script>
<<slider chkSliderOptionsPanel BasicRes 'Basic »' 'A list of sites'>>
<<slider chkSliderOptionsPanel AdvancedRes 'Advanced »' 'A list of sites'>>
<<slider chkSliderOptionsPanel ExporeRes 'To Be Explored »' 'A list of sites'>>
<<tag resources>>
To include another tiddler's contents inside a tiddler, e.g. here's [[subtabB1]]:
<<tiddler "subtabB1">>
<<tag demo>>
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Version|1.6.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Usage
<<<
When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
''Deferred execution from an 'onClick' link''
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered. You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text
''External script source files:''
You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
''Display script source in tiddler output''
By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.
''Defining javascript functions and libraries:''
Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
''Creating dynamic tiddler content''
An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
''Accessing the ~TiddlyWiki DOM''
The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
Access to this DOM element allows you to create scripts that can:
* vary their actions based upon the specific location in which they are embedded
* access 'tiddler-relative' information (use findContainingTiddler(place))
* perform direct DOM manipulations (when returning wikified text is not enough)
<<<
!!!!!Examples
<<<
an "alert" message box:
><script show>
alert('InlineJavascriptPlugin: this is a demonstration message');
</script>
dynamic output:
><script show>
return (new Date()).toString();
</script>
wikified dynamic output:
><script show>
return "link to current user: [["+config.options.txtUserName+"]]";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
if (!window.story) window.story=window;
var title=story.findContainingTiddler(place).id.substr(7);
return title+" is using "+store.getTiddlerText(title).length+" bytes";
</script>
creating an 'onclick' button/link that runs a script:
><script label="click here" title="clicking this link will show an 'alert' box" show>
if (!window.story) window.story=window;
alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
</script>
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
><script src="demo.js" show>
return "loading demo.js..."
</script>
><script label="click to execute demo() function" show>
demo()
</script>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.02.19 [1.6.0]'' added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
''2006.10.16 [1.5.2]'' add newline before closing '}' in 'function out_' wrapper. Fixes error caused when last line of script is a comment.
''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
''2006.01.05 [1.4.0]'' added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck
''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access
''2005.11.08 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
version.extensions.inlineJavascript= {major: 1, minor: 6, revision: 0, date: new Date(2007,2,19)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
if (lookaheadMatch[1]) { // load a script library
// make script tag, set src, add to body to execute, then remove for cleanup
var script = document.createElement("script"); script.src = lookaheadMatch[1];
document.body.appendChild(script); document.body.removeChild(script);
}
if (lookaheadMatch[5]) { // there is script code
if (lookaheadMatch[4]) // show inline script code in tiddler output
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (lookaheadMatch[2]) { // create a link to an 'onclick' script
// add a link, define click handler, save code in link (pass 'place'), set link attributes
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
link.code="function _out(place){"+lookaheadMatch[5]+"\n};_out(this);"
link.setAttribute("title",lookaheadMatch[3]?lookaheadMatch[3]:"");
link.setAttribute("href","javascript:;");
link.style.cursor="pointer";
}
else { // run inline script code
var code="function _out(place){"+lookaheadMatch[5]+"\n};_out(w.output);"
code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
!!!Getting an account on Lycos (tripod)
#Go to http://www.tripod.lycos.co.uk/
#Signup for an account
#Wait for your account verification email and verify your account
#When your account is verified, login to your account
#Go to ''My account'', below ''Take a tour'' on your left
#Go to bottom of the page and locate five icons (green and black)
#click on ''PHP4U''
#Click on ''Active PHP4U now''
#On this page, record down your database info. I use my test site as an example
{{{
Name: cctiddly_uk_db
Username: cctiddly
Password: no password needed
Host: localhost
}}}
!!!Config and upload your ccTiddly
*open your ''default.php'' under your ''config'' directory with your favorite editor
*Change the following variables to the values required (change
{{{
$tiddlyCfg['db']['host'] = "localhost"; //sql host
$tiddlyCfg['db']['login'] = "cctiddly"; //login name
$tiddlyCfg['db']['pass'] = ""; //login password
$tiddlyCfg['db']['name'] = "cctiddly_uk_db"; //db name
}}}
*because the MySQL on Lycos do not support ''set names'', disable utf-8 in your config file (set it to 0, available in v1.0 final)
{{{
$tiddlyCfg['pref']['utf8'] = 0;
}}}
<<tag requirements>>
[[all of the Internal Macro Tiddlers at TiddlyWikiTips.com|http://TiddlyWikiTips.com/index.html#[[Tip #12: TiddlyWiki Internal Macros]] TipAllTags TipCloseAll TipNewJournal TipNewTiddler TipPermaView TipSaveChanges TipSearch TipSlider TipTabbedContent TipTagPopUp TipTiddlerContents TipTimeline TipToday TipTWVersion]]
----
In addition to the excellent Plugins found here and throughout the TiddlyWiki world, TiddlyWiki contains some internal Macros that, for the most part, remain undocumented. They can offer lots of interesting possibilities when customizing your TiddlyWiki. The Macro list below was compiled from TiddlyWiki version 1.2.31. Click on a macro's description below to view more detail about each Macro including syntax, description, and examples!
|!Macro|!Description|!Syntax|
|allTags|[[List all Tags in a Tiddler|TipAllTags]]|{{{<}}}{{{<allTags>>}}}|
|closeAll|[[Close all displayed Tiddlers|TipCloseAll]]|{{{<}}}{{{<closeAll>>}}}|
|list all|[[List all Tiddlers in a Tiddler|TipListAll]]|{{{<}}}{{{<list all>>}}}|
|list missing|[[List all Missing Tiddlers in a Tiddler|TipListMissing]]|{{{<}}}{{{<list missing>>}}}|
|list orphans|[[List all orphaned Tiddlers in a Tiddler|TipListOrphans]]|{{{<}}}{{{<list orphans>>}}}|
|newJournal|[[Create new date & Time stamped Tiddler|TipNewJournal]]|{{{<}}}{{{<newJournal>>}}}|
|newTiddler|[[Create new Tiddler|TipNewTiddler]]|{{{<}}}{{{<newTiddler>>}}}|
|permaview|[[URL link for all open Tiddlers|TipPermaView]]|{{{<}}}{{{<permaview>>}}}|
|saveChanges |[[Save all TiddlyWiki changes|TipSaveChanges]]|{{{<}}}{{{<saveChanges>>}}}|
|search|[[Display a Search box|TipSearch]]|{{{<}}}{{{<search>>}}}|
|slider|[[Display a Slider|TipSlider]]|{{{<}}}{{{<slider sliderID sliderTiddler sliderLabel>>}}}|
|tabs|[[Display Tabbed content|TipTabbedContent]]|{{{<}}}{{{<tabs indentifier tabLabel tabName Tiddler>>}}}|
|tag|[[Display a Tag PopUp|TipTagPopUp]]|{{{<}}}{{{<tag tagName>>}}}|
|tiddler|[[Display inline contents of a Tiddler|TipTiddlerContents]]|{{{<}}}{{{<tiddler Tiddler>>}}}|
|timeline|[[Display Timeline in a Tiddler|TipTimeline]]|{{{<}}}{{{<timeline>>}}}|
|today|[[Dusplay Today's Date|TipToday]]|{{{<}}}{{{<today>>}}}|
|version|[[Display TiddlyWiki's version|TipTWVersion]]|{{{<}}}{{{<version>>}}}|
- [[Blank1]]
- [[Blank2]]
(//recent first//)
-[[29June08|29 June 2008]]
-[[28June08|28 June 2008]]
-[[27June08|27 June 2008]]
-[[26June08-2|26 June 2008-2]]
-[[26June08|26 June 2008]]
-[[25June08|25 June 2008]]
- [[23June08-2]]
- [[23June08]]
<<slider chkSliderOptionsPanel Items 'Items »' 'A second list of journals'>>
<<tag menus>>
* ChrisDentSez
<<dropMenu vertical>>
----
* Blurts
** CordonBlue
** [[w/Chris Brogan|ChrisBrogan1]]
** [[OS & Community|OpenSourceCommunity]]
** MoralProvocation
* Journals
** [[29June08|29 June 2008]]
** [[28June08|28 June 2008]]
** [[27June08|27 June 2008]]
** [[26June08-2|26 June 2008-2]]
** [[26June08|26 June 2008]]
** [[25June08|25 June 2008]]
** [[23June08-2]]
** [[23June08]]
<<dropMenu vertical>>
----
* [[Customization]]
* GettingStarted
* [[Resources|Resources]]
<<dropMenu vertical>>
----
----
*AboutMe
*[[Comment!|GFreeComment]]
<<dropMenu vertical>>
[[Canonical|http://wiki.osmosoft.com/alpha/pardelib]]
[[SaveA)s pardelibTW.html|http://wiki.osmosoft.com/alpha/pardelib]]
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<!--}}}-->
<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>ParDelib</b> is getting its ducks in a row<blink> ...</blink><br><span style="font-size: 14px; color:red;"><i>Javascript <b>Required</b></i> .</span></div>
ChrisDentSez
----
<<slider chkSliderOptionsPanel Blurts 'Blurts »' 'A list of blurts'>>
<<slider chkSliderOptionsPanel Journals 'Journals »' 'A list of journals'>>
----
*[[Customization]]
*GettingStarted
goto [[Resources|Resources]]
----
*AboutMe
[[Comment!|GFreeComment]]
[[SaveA)s pardelibTW.html|http://wiki.osmosoft.com/alpha/pardelib]]
<<tag bak>>
"''Even if you don't care, it still matters!''"
If there's something you don't care about, that "something" may still matter, it may be quite important.
If there's something that's important that you don't care about, the fact that you don't care about it may be important! You not caring may matter a lot.
Living as though we're contented cows is no way to live ... we're human beings, we're sentient. When we don't respond to moral provocation it's exactly as though we'd been lobotomized.
for more see http://groundplane.wordpress.com/gp-101/
Translators and commentators sometimes make it sound as if Machiavelli were talking about something altogether different than the tradition, as if this were just an instance in which one word was being used for entirely different ideas. But then Machiavelli's philosophical point would be lost. Machiavelli is taking the traditional concept of virtue as natural human excellence, with all its teleological baggage, and giving it a partially new content. Excellence for a ruler is not the same thing as excellence for a citizen, and excellence for a ruler involves a willingness to engage in what would otherwise be immoral, unjust conduct, and which still may tarnish the ruler's immortal soul, even if it is necessary in the situation for the safety / glory of the patria. It is not the case that all virtues (= excellences) go together and imply one another, as Socrates optimistically believed. New conception of an old concept, not just homonyms.
<<notes>>
<<tag demo>>
/***
''NestedSlidersPlugin for TiddlyWiki version 1.2.x and 2.0''
^^author: Eric Shulman
source: http://www.TiddlyTools.com/#NestedSlidersPlugin
license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
Quickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''
You can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.
For more details, please click on a section headline below:
++++!!!!![Configuration]>
Debugging messages for 'lazy sliders' deferred rendering:
<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering
<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered
===
++++!!!!![Usage]>
When installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify
*default to open
*cookiename
*heading level
*floater (with optional CSS width value)
*mouse auto rollover
*custom class/label/tooltip/accesskey
*automatic blockquote
*deferred rendering
The complete syntax, using all options, is:
//{{{
++++(cookiename)!!!!!^width^*{{class{[label=key|tooltip]}}}>...
content goes here
===
//}}}
where:
* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^
marks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^
* {{{(cookiename)}}}^^
saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.^^
* {{{!}}} through {{{!!!!!}}}^^
displays the slider label using a formatted headline (Hn) style instead of a button/link style^^
* {{{^width^}}} (or just {{{^}}})^^
makes the slider 'float' on top of other content rather than shifting that content downward. 'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.). If omitted, the default width is "auto" (i.e., fit to content)^^
* {{{*}}}^^
automatically opens/closes slider on "rollover" as well as when clicked^^
* {{{{{class{[label=key|tooltip]}}}}}}^^
uses custom label/tooltip/accesskey. {{{{{class{...}}}}}}, {{{=key}}} and {{{|tooltip}}} are optional. 'class' is any valid CSS class name, used to style the slider label text. 'key' must be a ''single letter only''. Default labels/tootips are: ">" (more) and "<" (less), with no default access key assignment.^^
* {{{">"}}} //(without the quotes)//^^
automatically adds blockquote formatting to slider content^^
* {{{"..."}}} //(without the quotes)//^^
defers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^
//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//
===
++++!!!!![Examples]>
simple in-line slider:
{{{
+++
content
===
}}}
+++
content
===
----
use a custom label and tooltip:
{{{
+++[label|tooltip]
content
===
}}}
+++[label|tooltip]
content
===
----
content automatically blockquoted:
{{{
+++>
content
===
}}}
+++>
content
===
----
all options combined //(default open, cookie, heading, sized floater, rollover, class, label/tooltip/key, blockquoted, deferred)//
{{{
++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...
content
===
}}}
++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...
content
===
----
complex nesting example:
{{{
+++^[get info...=I|click for information or press Alt-I]
put some general information here, plus a floating slider with more specific info:
+++^10em^[view details...|click for details]
put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===
===
===
}}}
+++^[get info...=I|click for information or press Alt-I]
put some general information here, plus a floating slider with more specific info:
+++^10em^[view details...|click for details]
put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===
===
===
===
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2006.07.28 - 2.0.0'' added custom class syntax around label/tip/key syntax: {{{{{classname{[label=key|tip]}}}}}}
''2006.07.25 - 1.9.3'' when parsing slider, save default open/closed state in button element, then in onClickNestedSlider(), if slider state matches saved default, instead of saving cookie, delete it. Significantly reduces the 'cookie overhead' when default slider states are used.
''2006.06.29 - 1.9.2'' in onClickNestedSlider(), when setting focus to first control, skip over type="hidden"
''2006.06.22 - 1.9.1'' added panel.defaultPanelWidth to save requested panel width, even after resizing has changed the style value
''2006.05.11 - 1.9.0'' added optional '^width^' syntax for floating sliders and '=key' syntax for setting an access key on a slider label
''2006.05.09 - 1.8.0'' in onClickNestedSlider(), when showing panel, set focus to first child input/textarea/select element
''2006.04.24 - 1.7.8'' in adjustSliderPos(), if floating panel is contained inside another floating panel, subtract offset of containing panel to find correct position
''2006.02.16 - 1.7.7'' corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie
''2006.02.15 - 1.7.6'' in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)
''2006.02.04 - 1.7.5'' add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals
''2006.01.18 - 1.7.4'' only define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.
''2006.01.16 - 1.7.3'' added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.
''2006.01.16 - 1.7.2'' added button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
''2006.01.14 - 1.7.1'' added optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.
''2006.01.14 - 1.7.0'' added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)
''2006.01.03 - 1.6.2'' When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)
''2005.12.15 - 1.6.1'' added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders
removed checkbox option for 'global' application of lazy sliders
''2005.11.25 - 1.6.0'' added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)
''2005.11.21 - 1.5.1'' revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.
''2005.11.20 - 1.5.0'' added (cookiename) syntax for optional tracking and restoring of slider open/close state
''2005.11.11 - 1.4.0'' added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style
''2005.11.07 - 1.3.0'' removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other
formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines
''2005.11.05 - 1.2.1'' changed name to NestedSlidersPlugin
more documentation
''2005.11.04 - 1.2.0'' added alternative character-mode syntax {{{(((}}} and {{{)))}}}
tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax
''2005.11.03 - 1.1.1'' fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used
code cleanup, added documentation
''2005.11.03 - 1.1.0'' changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}
changed name to EasySlidersPlugin
''2005.11.03 - 1.0.0'' initial public release
<<<
!!!!!Credits
<<<
This feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with initial research and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson.
<<<
!!!!!Code
***/
//{{{
version.extensions.nestedSliders = {major: 2, minor: 0, revision: 0, date: new Date(2006,7,28)};
//}}}
//{{{
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;
if (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;
// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");
//}}}
//{{{
config.formatters.push( {
name: "nestedSliders",
match: "\\n?\\+{3}",
terminator: "\\s*\\={3}\\n?",
lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\[\\>]*\\^)?)?(\\*)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(?:\\}{3})?(\\>)?(\\.\\.\\.)?\\s*",
handler: function(w)
{
// defopen=lookaheadMatch[1]
// cookiename=lookaheadMatch[2]
// header=lookaheadMatch[3]
// panelwidth=lookaheadMatch[4]
// rollover=lookaheadMatch[5]
// class=lookaheadMatch[6]
// label=lookaheadMatch[7]
// blockquote=lookaheadMatch[8]
// deferred=lookaheadMatch[9]
lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
{
// location for rendering button and panel
var place=w.output;
// default to closed, no cookie, no accesskey
var show="none"; var title=">"; var tooltip="show"; var cookie=""; var key="";
// extra "+", default to open
if (lookaheadMatch[1])
{ show="block"; title="<"; tooltip="hide"; }
// cookie, use saved open/closed state
if (lookaheadMatch[2]) {
cookie=lookaheadMatch[2].trim().slice(1,-1);
cookie="chkSlider"+cookie;
if (config.options[cookie]==undefined)
{ config.options[cookie] = (show=="block") }
if (config.options[cookie])
{ show="block"; title="<"; tooltip="hide"; }
else
{ show="none"; title=">"; tooltip="show"; }
}
// parse custom label/tooltip/accesskey: [label=X|tooltip]
if (lookaheadMatch[7]) {
title = lookaheadMatch[7].trim().slice(1,-1);
var pos=title.indexOf("|");
if (pos!=-1) { tooltip = title.substr(pos+1,title.length); title=title.substr(0,pos); }
if (title.substr(title.length-2,1)=="=") { key=title.substr(title.length-1,1); title=title.slice(0,-2); }
if (pos==-1) tooltip += " "+title; // default tooltip: "show/hide <title>"
}
// create the button
if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link
var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;
var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,lookaheadMatch[6],title);
btn.onclick=onClickNestedSlider;
btn.setAttribute("href","javascript:;");
btn.setAttribute("title",tooltip);
}
else
var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,lookaheadMatch[6]);
// set extra button attributes
btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
btn.defOpen=lookaheadMatch[1]!=null; // save default open/closed state (boolean)
btn.keyparam=key; // save the access key letter ("" if none)
if (key.length) {
btn.setAttribute("accessKey",key); // init access key
btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
}
// "non-click" MouseOver open/close slider
if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;
// create slider panel
var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";
var panel=createTiddlyElement(place,"div",null,panelClass,null);
panel.button = btn; // so the slider panel know which button it belongs to
panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):""; // save requested panel size
btn.sliderPanel=panel;
panel.style.display = show;
panel.style.width=panel.defaultPanelWidth;
// render slider (or defer until shown)
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
if ((show=="block")||!lookaheadMatch[9]) {
// render now if panel is supposed to be shown or NOT deferred rendering
w.subWikify(lookaheadMatch[8]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
// align slider/floater position with button
adjustSliderPos(place,btn,panel,panelClass);
}
else {
var src = w.source.substr(w.nextMatch);
var endpos=findMatchingDelimiter(src,"+++","===");
panel.setAttribute("raw",src.substr(0,endpos));
panel.setAttribute("blockquote",lookaheadMatch[8]?"true":"false");
panel.setAttribute("rendered","false");
w.nextMatch += endpos+3;
if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\n\n"+panel.getAttribute("raw"));
}
}
}
}
)
// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)
function findMatchingDelimiter(src,starttext,endtext) {
var startpos = 0;
var endpos = src.indexOf(endtext);
// check for nested delimiters
while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
// count number of nested 'starts'
var startcount=0;
var temp = src.substring(startpos,endpos-1);
var pos=temp.indexOf(starttext);
while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
// set up to check for additional 'starts' after adjusting endpos
startpos=endpos+endtext.length;
// find endpos for corresponding number of matching 'ends'
while (startcount && endpos!=-1) {
endpos = src.indexOf(endtext,endpos+endtext.length);
startcount--;
}
}
return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
window.onClickNestedSlider=function(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var theLabel = theTarget.firstChild.data;
var theSlider = theTarget.sliderPanel
var isOpen = theSlider.style.display!="none";
// if using default button labels, toggle labels
if (theLabel==">") theTarget.firstChild.data = "<";
else if (theLabel=="<") theTarget.firstChild.data = ">";
// if using default tooltips, toggle tooltips
if (theTarget.getAttribute("title")=="show")
theTarget.setAttribute("title","hide");
else if (theTarget.getAttribute("title")=="hide")
theTarget.setAttribute("title","show");
if (theTarget.getAttribute("title")=="show "+theLabel)
theTarget.setAttribute("title","hide "+theLabel);
else if (theTarget.getAttribute("title")=="hide "+theLabel)
theTarget.setAttribute("title","show "+theLabel);
// deferred rendering (if needed)
if (theSlider.getAttribute("rendered")=="false") {
if (config.options.chkDebugLazySliderRender)
alert("rendering '"+theLabel+"':\n\n"+theSlider.getAttribute("raw"));
var place=theSlider;
if (theSlider.getAttribute("blockquote")=="true")
place=createTiddlyElement(place,"blockquote");
wikify(theSlider.getAttribute("raw"),place);
theSlider.setAttribute("rendered","true");
}
// show/hide the slider
if(config.options.chkAnimate)
anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
else
theSlider.style.display = isOpen ? "none" : "block";
// reset to default width (might have been changed via plugin code)
theSlider.style.width=theSlider.defaultPanelWidth;
// align slider/floater position with target button
if (!isOpen) adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);
// if showing panel, set focus to first 'focus-able' element in panel
if (theSlider.style.display!="none") {
var ctrls=theSlider.getElementsByTagName("*");
for (var c=0; c<ctrls.length; c++) {
var t=ctrls[c].tagName.toLowerCase();
if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
{ ctrls[c].focus(); break; }
}
}
if (this.sliderCookie && this.sliderCookie.length) {
config.options[this.sliderCookie]=!isOpen;
if (config.options[this.sliderCookie]!=this.defOpen)
saveOptionCookie(this.sliderCookie);
else { // remove cookie if slider is in default display state
var ex=new Date(); ex.setTime(ex.getTime()-1000);
document.cookie = this.sliderCookie+"=novalue; path=/; expires="+ex.toGMTString();
}
}
return false;
}
// hijack animation handler 'stop' handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }
// adjust panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {
if (panelClass=="floatingPanel") {
var left=0;
var top=btn.offsetHeight;
if (place.style.position!="relative") {
var left=findPosX(btn);
var top=findPosY(btn)+btn.offsetHeight;
var p=place; while (p && p.className!='floatingPanel') p=p.parentNode;
if (p) { left-=findPosX(p); top-=findPosY(p); }
}
if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth-10;
panel.style.left=left+"px"; panel.style.top=top+"px";
}
}
function getWindowWidth() {
if(document.width!=undefined)
return document.width; // moz (FF)
if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
return document.documentElement.clientWidth; // IE6
if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )
return document.body.clientWidth; // IE4
if(window.innerWidth!=undefined)
return window.innerWidth; // IE - general
return 0; // unknown
}
//}}}
Originally posted as [[a comment to Nick Webb's "Tiddlypreneurship at Osmosoft"|http://www.erraticmusings.com/?p=16]]:
As for “whether or not open source software is solely the domain of developers” I’d agree with you on “shouldn’t be”, but would quite confidantly say “Is, most of the time, very definitely.”
Take ccTW for example. I got [[mine up and running at osmosoft|http://wiki.osmosoft.com/alpha/pardelib]] pretty quickly after having come across [[Confabb’s “Note Saver"|http://blog.confabb.com/?p=106]]. Fast start followed by grinding frustration … for example markup copied from another TW not working on my install; not the sort of snafu you want to encounter on your first day.
Addressing documentation (my trade) it’s only natural that developers leave just enough cookie crumbs for others like them to find their work … which isn’t at all the same as enabling a naive participant.
Case in point: configuration of a server side install. I’ve found a lot of Tiddlers that nominally address that, but none of them have actual config data and instructions.
Oh-wooops, one of them does … incidentally … the one that describes installing at Lycos. Go figure!
It’s a cultural thing. Developers leave gaping voids where they (quite correctly) presume other developers to be up to speed. In my estimation encountering 2 or 3 of those voids would be enough to deter a naive participant … and nobody would ever know.
It’s a cultural thing.
Ben Tremblay at June 24th, 2008 around 6:10 pm
----
''Update //14:35MDT 30JUNE08//''
From my experience with ~OpenSource settings (most recently [[TiddlyIRC|irc://irc.freenode.net/tiddlywiki]]) these are (in contradistinction to the paradigmatic hippie-bus setting, or the best of garage startups), somewhat like NGOs and not.for.profit situations (which are gardens of personality games and opportunistic nastiness), these situations are hallmarked by individuals who score points by the quality of their passive aggression and its attendant plausible deniability i.e. diss and ignore are the most used tools.
----
More info on the company (~OsmoSoftians!!) and its products can be found one the [[osmosoft.com homepage|http://osmosoft.com/]]
If you don't already have an account here please [[register|Register]] for one. (Note that user registration is a new feature and still requires some work.)
If you have any problems with this deployment please contact simon@osmosoft.com.
Feedback is welcomed!
/***
|''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"
});
*/
//}}}
/***
''Import Tiddlers Plugin for TiddlyWiki version 1.2.x and 2.0''
^^author: Eric Shulman - ELS Design Studios
source: http://www.TiddlyTools.com/#ImportTiddlersPlugin
license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
When many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. This plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. It can also be very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)
!!!!!Inline interface (live)
<<<
<<importTiddlers inline>>
<<<
!!!!!Macro Syntax
<<<
{{{<<importTiddlers>>}}}
creates "import tiddlers" link. click to show/hide import control panel
{{{<<importTiddlers inline>>}}}
creates import control panel directly in tiddler content
{{{<<importTiddlers filter source quiet ask>>}}}
non-interactive 'automatic' import.
''filter'' determines which tiddlers will be automatically selected for importing. Use one of the following keywords:
>''"new"'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document
>''"changes"'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler
>''"updates"'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)
>''"all"'' retrieves ALL tiddlers from the import source document, even if they have not been changed.
''source'' is the location of the imported document. It can be either a local document or an URL:
>filename is any local path/file, in whatever format your system requires
>URL is any remote web location that starts with "http://" or "https://"
''"quiet"'' (optional)
>supresses all status message during the import processing (e.g., "opening local file...", "found NN tiddlers..." etc). Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified. This ensures that changes to your document cannot occur without any visible indication at all.
''"ask"'' (optional)
>adds interactive confirmation. A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.
''Special tag values: importReplace and importPublic''
By adding these special tags to an existing tiddler, you can precisely control whether or not to allow updates to that tiddler as well as decide which tiddlers in your document can be automatically imported by others.
*''For maximum safety, the default action is to prevent existing tiddlers from being unintentionally overwritten by incoming tiddlers.'' To allow an existing tiddler to be overwritten by an imported tiddler, you must tag the existing tiddler with ''<<tag importReplace>>''
*''For maximum privacy, the default action for //outgoing// tiddlers is to NOT automatically share your tiddlers with others.'' To allow a tiddler in your document to be shared via auto-import actions by others, you must tag it with ''<<tag importPublic>>''
//Note: these tags are only applied when using the auto-import processing. When using the interactive control panel, all tiddlers in the imported document are available in the listbox, regardless of their tag values.//
<<<
!!!!!Interactive Usage
<<<
When used interactively, a control panel is displayed consisting of an "import source document" filename input (text field plus a ''[Browse...]'' button), a listbox of available tiddlers, a "differences only" checkbox, an "add tags" input field and four push buttons: ''[open]'', ''[select all]'', ''[import]'' and ''[close]''.
Press ''[browse]'' to select a TiddlyWiki document file to import. You can also type in the path/filename or a remote document URL (starting with http://)and press ''[open]''. //Note: There may be some delay to permit the browser time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//
Select one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.
''select: all, new, changes, or differences''
You can click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in:
>''"all"'' selects ALL tiddlers from the import source document, even if they have not been changed.
>''"new"'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document
>''"changes"'' selects only tiddlers that exist in both documents but that are newer in the source document
>''"differences"'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)
''Import Tagging:''
Tiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the "add tags" input field, and then //added// to the existing tags for each tiddler as it is imported.
''Skip, Rename, Merge, or Replace:''
When importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.
To bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.
//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//
''Import Report History''
When tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.
When the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.
If a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.
Note: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the "create a report" checkbox before beginning the import processing.
<<<
!!!!!Installation
<<<
copy/paste the following tiddlers into your document:
''ImportTiddlersPlugin'' (tagged with <<tag systemConfig>>)
create/edit ''SideBarOptions'': (sidebar menu items)
^^Add "< < ImportTiddlers > >" macro^^
''Quick Installation Tip #1:''
If you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.
<<<
!!!!!Revision History
<<<
''2006.02.17 [2.6.0]''
Removed "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.
''2006.02.16 [2.5.4]''
added checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.
''2006.02.14 [2.5.3]''
FF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()
''2006.02.10 [2.5.2]''
corrected unintended global variable in importReport().
''2006.02.05 [2.5.1]''
moved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals
''2006.01.18 [2.5.0]''
added checkbox for "create a report". Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.
''2006.01.15 [2.4.1]''
added "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic
''2006.01.15 [2.4.0]''
Added support for tagging individual tiddlers with importS