Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
//only to generate an <<tag Menu>> item
|''PageTemplate''|##PageTemplate|
|''StyleSheet''|##StyleSheet|
|ViewTemplate|TiddlySlidy##ViewTemplate|
|EditTemplate|TiddlySlidy##EditTemplate|
!PageTemplate
<!--{{{-->
<div id='header'>
<p class='siteTitle' refresh='content' tiddler='SiteTitle'></p>
<div class="modeSwitch" refresh='content' tiddler='ModeSwitch'></div>
</div>
<div id='messageArea'></div>
<div id='author'>
<div id="mainNav">
<div id='authorButtons' refresh='content' tiddler='AuthorButtons'></div>
<div id='mainMenu' refresh='content' force='true' tiddler='MainMenuWrapper'></div>
</div>
<div id="displayContainer">
<div id='displayArea'>
<div id='tiddlerDisplay'></div>
</div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
</div>
</div>
<div id='footer'></div>
<!--}}}-->
!StyleSheet
[[TiddlySlidy##StyleSheet]]
/*{{{*/
#contentWrapper {
width: 100%;
max-width: 100%;
}
#author {
width: 100em;
margin: 0 auto;
text-align: left;
}
#mainNav {
width: 18em;
max-width: 20%;
float: left;
margin: 1em 0;
}
#displayContainer {
float: right;
width: 75em;
margin: 0;
}
#tiddlerDisplay {
display: inline-block;
margin: 0;
padding: 0;
}
#displayArea {
width: 50em;
display: inline;
margin: 0;
padding: 0;
}
#sidebar {
width: 18em;
margin: 0;
right: 0;
top: 0;
float: left;
margin: 0;
padding: 0;
margin: 0;
position: static;
float: right;
/* IE6 hack */
_position: absolute;
_top: 8em;
}
#footer {
clear: both;
}
#sidebarTabs .tabContents {
margin: 0 auto;
text-align: left;
}
#sidebarOptions {
padding-top:1em;
}
#sidebarOptions a {
margin:0;
padding:0;
display: inline;
}
#sidebarOptions input {
margin:0.4em 0.5em;
}
#sidebarTabs .tabContents {
width: 15em;
overflow: hidden;
color: [[ColorPalette::SecondaryMid]];
border: 2px solid [[ColorPalette::PrimaryPale]];
background-color: [[ColorPalette::Background]];
margin: 0;
}
#sidebar .tabUnselected {
background-color: [[ColorPalette::SecondaryMid]];
color: [[ColorPalette::Background]];
margin: 0;
}
#sidebar .tiddlyLinkExisting {
color: [[ColorPalette::SecondaryMid]];
margin: 0;
}
#authorButtons {
height: 3.5em;
padding: 0 auto;
}
#sidebar a.button,
#authorButtons a.button {
text-align: center;
font-size: 1.2em;
}
/* ie6.0 hack */
div#tiddlerDisplay div.viewSlide {
_height: 475px;
}
/*}}}*/
/***
|Name|BreadcrumbsPlugin|
|Author|Eric Shulman|
|Source|http://www.TiddlyTools.com/#BreadcrumbsPlugin|
|Documentation|http://www.TiddlyTools.com/#BreadcrumbsPluginInfo|
|Version|2.1.4|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|list/jump to tiddlers viewed during this session plus "back" button/macro|
This plugin provides a list of links to all tiddlers opened during the session, creating a "trail of breadcrumbs" from one tiddler to the next, allowing you to quickly navigate to any previously viewed tiddler, or select 'home' to reset the display to the initial set of tiddlers that were open at the start of the session (i.e., when the document was loaded into the browser).
!!!!!Documentation
<<<
see [[BreadcrumbsPluginInfo]]
<<<
!!!!!Configuration
<<<
<<option chkCreateDefaultBreadcrumbs>> automatically create breadcrumbs display (if needed)
<<option chkShowBreadcrumbs>> show/hide breadcrumbs display
<<option chkReorderBreadcrumbs>> re-order breadcrumbs when visiting a previously viewed tiddler
<<option chkBreadcrumbsHideHomeLink>> omit 'Home' link from breadcrumbs display
<<option chkBreadcrumbsSave>> prompt to save breadcrumbs when 'Home' link is pressed
<<option chkShowStartupBreadcrumbs>> show breadcrumbs for 'startup' tiddlers
<<option chkBreadcrumbsReverse>> show breadcrumbs in reverse order (most recent first)
<<option chkBreadcrumbsLimit>> limit breadcrumbs display to {{twochar{<<option txtBreadcrumbsLimit>>}}} items
<<option chkBreadcrumbsLimitOpenTiddlers>> limit open tiddlers to {{twochar{<<option txtBreadcrumbsLimitOpenTiddlers>>}}} items
<<<
!!!!!Revisions
<<<
2011.02.16 2.1.4 in refresh(), use 'inline' instead of 'block' style (avoids unwanted linebreak). In previousTiddler(), allow handling even if not in a tiddler so that back button can be placed in ~MainMenu or ~SidebarOptions.
| Please see [[BreadcrumbsPluginInfo]] for previous revision details |
2006.02.01 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.BreadcrumbsPlugin= {major: 2, minor: 1, revision: 4, date: new Date(2011,2,16)};
var defaults={
chkShowBreadcrumbs: true,
chkReorderBreadcrumbs: true,
chkCreateDefaultBreadcrumbs: true,
chkShowStartupBreadcrumbs: false,
chkBreadcrumbsReverse: false,
chkBreadcrumbsLimit: false,
txtBreadcrumbsLimit: 5,
chkBreadcrumbsLimitOpenTiddlers:false,
txtBreadcrumbsLimitOpenTiddlers:3,
chkBreadcrumbsHideHomeLink: false,
chkBreadcrumbsSave: false,
txtBreadcrumbsHomeSeparator: ' | ',
txtBreadcrumbsCrumbSeparator: ' > '
};
for (var id in defaults) if (config.options[id]===undefined)
config.options[id]=defaults[id];
config.macros.breadcrumbs = {
crumbs: [], // the list of current breadcrumbs
askMsg: "Save current breadcrumbs before clearing?\n"
+"Press OK to save, or CANCEL to continue without saving.",
saveMsg: 'Enter the name of a tiddler in which to save the current breadcrumbs',
saveTitle: 'SavedBreadcrumbs',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var area=createTiddlyElement(place,"span",null,"breadCrumbs",null);
area.setAttribute("homeSep",params[0]||config.options.txtBreadcrumbsHomeSeparator);
area.setAttribute("crumbSep",params[1]||config.options.txtBreadcrumbsCrumbSeparator);
this.render(area);
},
add: function (title) {
var thisCrumb = title;
var ind = this.crumbs.indexOf(thisCrumb);
if(ind === -1)
this.crumbs.push(thisCrumb);
else if (config.options.chkReorderBreadcrumbs)
this.crumbs.push(this.crumbs.splice(ind,1)[0]); // reorder crumbs
else
this.crumbs=this.crumbs.slice(0,ind+1); // trim crumbs
if (config.options.chkBreadcrumbsLimitOpenTiddlers)
this.limitOpenTiddlers();
this.refresh();
return false;
},
getAreas: function() {
var crumbAreas=[];
// find all DIVs with classname=="breadCrumbs"
var all=document.getElementsByTagName("*");
for (var i=0; i<all.length; i++)
try{ if (hasClass(all[i],"breadCrumbs")) crumbAreas.push(all[i]); } catch(e) {;}
// or, find single DIV w/fixed ID (backward compatibility)
var byID=document.getElementById("breadCrumbs")
if (byID && !hasClass(byID,"breadCrumbs")) crumbAreas.push(byID);
if (!crumbAreas.length && config.options.chkCreateDefaultBreadcrumbs) {
// no crumbs display... create one
var defaultArea = createTiddlyElement(null,"span",null,"breadCrumbs",null);
defaultArea.style.display= "none";
var targetArea= document.getElementById("tiddlerDisplay");
targetArea.parentNode.insertBefore(defaultArea,targetArea);
crumbAreas.push(defaultArea);
}
return crumbAreas;
},
refresh: function() {
var crumbAreas=this.getAreas();
for (var i=0; i<crumbAreas.length; i++) {
crumbAreas[i].style.display = config.options.chkShowBreadcrumbs?"inline":"none";
removeChildren(crumbAreas[i]);
this.render(crumbAreas[i]);
}
},
render: function(here) {
var co=config.options; var out=""
if (!co.chkBreadcrumbsHideHomeLink) {
createTiddlyButton(here,"Home",null,this.home,"tiddlyLink tiddlyLinkExisting");
out+=here.getAttribute("homeSep")||config.options.txtBreadcrumbsHomeSeparator;
}
for (c=0; c<this.crumbs.length; c++) // remove non-existing tiddlers from crumbs
if (!store.tiddlerExists(this.crumbs[c]) && !store.isShadowTiddler(this.crumbs[c]))
this.crumbs.splice(c,1);
var count=this.crumbs.length;
if (co.chkBreadcrumbsLimit && co.txtBreadcrumbsLimit<count) count=co.txtBreadcrumbsLimit;
var list=[];
for (c=this.crumbs.length-count; c<this.crumbs.length; c++) list.push('[['+this.crumbs[c]+']]');
if (co.chkBreadcrumbsReverse) list.reverse();
out+=list.join(here.getAttribute("crumbSep")||config.options.txtBreadcrumbsCrumbSeparator);
wikify(out,here);
},
home: function() {
var cmb=config.macros.breadcrumbs;
if (config.options.chkBreadcrumbsSave && confirm(cmb.askMsg)) cmb.saveCrumbs();
story.closeAllTiddlers(); restart();
cmb.crumbs = []; var crumbAreas=cmb.getAreas();
for (var i=0; i<crumbAreas.length; i++) crumbAreas[i].style.display = "none";
return false;
},
saveCrumbs: function() {
var tid=prompt(this.saveMsg,this.saveTitle); if (!tid||!tid.length) return; // cancelled by user
var t=store.getTiddler(tid);
if(t && !confirm(config.messages.overwriteWarning.format([tid]))) return;
var who=config.options.txtUserName;
var when=new Date();
var text='[['+this.crumbs.join(']]\n[[')+']]';
var tags=t?t.tags:[]; tags.pushUnique('story');
var fields=t?t.fields:{};
store.saveTiddler(tid,tid,text,who,when,tags,fields);
story.displayTiddler(null,tid);
story.refreshTiddler(tid,null,true);
displayMessage(tid+' has been '+(t?'updated':'created'));
},
limitOpenTiddlers: function() {
var limit=config.options.txtBreadcrumbsLimitOpenTiddlers; if (limit<1) limit=1;
for (c=this.crumbs.length-1; c>=0; c--) {
var tid=this.crumbs[c];
var elem=story.getTiddler(tid);
if (elem) { // tiddler is displayed
if (limit <=0) { // display limit has been reached
if (elem.getAttribute("dirty")=="true") { // tiddler is being edited
var msg= "'"+tid+"' is currently being edited.\n\n"
+"Press OK to save and close this tiddler\n"
+"or press Cancel to leave it opened";
if (confirm(msg)) {
story.saveTiddler(tid);
story.closeTiddler(tid);
}
}
else story.closeTiddler(this.crumbs[c]);
}
limit--;
}
}
}
};
//}}}
// // PreviousTiddler ('back') command and macro
//{{{
config.commands.previousTiddler = {
text: 'back',
tooltip: 'view the previous tiddler',
handler: function(event,src,title) {
var crumbs=config.macros.breadcrumbs.crumbs;
if (crumbs.length<2) config.macros.breadcrumbs.home();
else story.displayTiddler(story.findContainingTiddler(src),crumbs[crumbs.length-2]);
return false;
}
};
config.macros.previousTiddler= {
label: 'back',
prompt: 'view the previous tiddler',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var label=params.shift(); if (!label) label=this.label;
var prompt=params.shift(); if (!prompt) prompt=this.prompt;
createTiddlyButton(place,label,prompt,function(ev){
return config.commands.previousTiddler.handler(ev,this)
});
}
}
//}}}
// // HIJACKS
//{{{
// update crumbs when a tiddler is displayed
if (Story.prototype.breadCrumbs_coreDisplayTiddler==undefined)
Story.prototype.breadCrumbs_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler) {
var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
this.breadCrumbs_coreDisplayTiddler.apply(this,arguments);
if (!startingUp || config.options.chkShowStartupBreadcrumbs)
config.macros.breadcrumbs.add(title);
}
// update crumbs when a tiddler is deleted
if (TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler==undefined)
TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler=TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler= function() {
this.breadCrumbs_coreRemoveTiddler.apply(this,arguments);
config.macros.breadcrumbs.refresh();
}
//}}}
!SideBar
{{avatar{
<<image http://caspian.tiddlyspace.com/bags/caspian_public/tiddlers/SiteIcon width:128 height:128 preserveAspectRatio:yes>>
}}}{{description{<<tiddler SiteSubtitle>> <<switchTheme width:auto>>}}}
{{twSearch{
<<search>>
}}}
{{tools{
{{pushLeft{<<newTiddler>>}}}<<permaview>>{{pushLeft{<<newJournal>>}}}<<closeAll>>
}}}
<<tiddler SideBarTabs>>
!MissingAndOrphans
<<tiddler TabMoreMissing>>
<<tiddler TabMoreOrphans>>
!SideBar
{{avatar{
<<image SiteIcon width:128 height:128 preserveAspectRatio:yes>>
}}}{{description{<<tiddler SiteSubtitle>>}}}
{{twSearch{
<<search>>
}}}
{{tools{
{{pushLeft{<<newTiddler>>}}}<<permaview>>{{pushLeft button followMenuButton{<<followSpace>>}}}<<closeAll>>
}}}
<<tiddler SideBarTabs>>
!MissingAndOrphans
<<tiddler TabMoreMissing>>
<<tiddler TabMoreOrphans>>
/%
!info
|Name|CloseOtherTiddlers|
|Source|http://www.TiddlyTools.com/#CloseOtherTiddlers|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|close all other tiddlers when a specific tiddler is viewed|
Usage:
<<<
{{{
<<tiddler CloseOtherTiddlers>>
}}}
<<<
!end
%/<<tiddler {{
var out='CloseOtherTiddlers##info';
if (!tiddler||tiddler.title!='CloseOtherTiddlers') {
var here=story.findContainingTiddler(place);
story.closeAllTiddlers(here?here.getAttribute("tiddler"):null);
out='';
}
out;}}>>
Background: #fff
Foreground: #000
PrimaryPale: #e8e8e8
PrimaryLight: #747474
PrimaryMid: #333
PrimaryDark: #111
SecondaryPale: #f8f8f8
SecondaryLight: #dddddd
SecondaryMid: #5B6D6E
SecondaryDark: #000
TertiaryPale: #e8e8e8
TertiaryLight: #dddddd
TertiaryMid: #404040
TertiaryDark: #000
Error: #faa
SelectedPale: #dafaff
SelectedLight: #459BF9
SelectedDark: #07f
TiddlySlidyLight: #50a0fc
TiddlySlidyMid: #2d00ff
TiddlySlidyDark: #0069dd
<<search>>
----
<<newTiddler>>
<<saveChanges>>
<<upload>>
<<switchTheme width:auto>>
----
ImportTiddlers
[[Sync]]
SideBarOptions
[[Indexes]]
/*{{{*/
.controls {
font-size: 1.2em;
color: [[ColorPalette::PrimaryMid]];
background-color: [[ColorPalette::PrimaryPale]];
border: 2px solid [[ColorPalette::SecondaryLight]];
width: 600px;
height: 2em;
margin: 0 auto 1em auto;
padding: 1em;
font-family: Helvetica Neue, Arial, Helvetica, sans-serif;
text-align: center;
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
border-radius: 8px;
}
.knob {
float: left;
margin: 0;
border: 2px solid [[ColorPalette::PrimaryPale]];
background-color: [[ColorPalette::PrimaryPale]];
font-family: Helvetica, Arial, sans-serif;
font-size: 1em;
font-weight: normal;
width: 1.5em;
height: 1.5em;
line-height: 1.5em;
text-align: center;
-moz-border-radius: 1px;
-webkit-border-radius: 1px;
border-radius: 1px;
}
.contents {
width: 6em;
text-align: center;
}
.controls a:hover div,
.controls a:hover div div,
.controls .contents a:hover {
text-decoration: none;
color: [[ColorPalette::Foreground]];
background-color: [[ColorPalette::Background]];
}
.controls a:active div,
.controls a:active div div,
.controls .contents a:active {
color: [[ColorPalette::Background]];
}
.controls *:focus {
outline: none;
}
.controls .fullscreen a:hover div,
.controls .fullscreen a:active div {
text-decoration: none;
background-color: [[ColorPalette::PrimaryMid]];
border: 2px solid [[ColorPalette::PrimaryMid]];
}
.controls .fullscreen a:hover div div,
.controls .fullscreen a:active div div {
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
.knob div {
font-weight: bolder;
-webkit-border-radius: 1em;
-moz-border-radius: 1em;
border-radius: 1em;
color: [[ColorPalette::Background]];
background-color: [[ColorPalette::PrimaryMid]];
-webkit-box-shadow: 2px 2px 3px rgba(135, 139, 144, 0.4);
-moz-box-shadow: 2px 2px 3px rgba(135, 139, 144, 0.4);
box-shadow: 2px 2px 3px rgba(135, 139, 144, 0.4);
}
.squeeze {
letter-spacing: -3px;
}
.fullscreen {
float: right;
background-color: [[ColorPalette::PrimaryPale]];
margin-top: -0.2em;
}
.fullscreen div {
border: 2px solid [[ColorPalette::PrimaryMid]];
background-color: [[ColorPalette::PrimaryPale]];
width: 1em;
height: 1em;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
}
.fullscreen div div {
text-indent: -300px;
overflow: hidden;
background-color: [[ColorPalette::PrimaryMid]];
border: 2px solid [[ColorPalette::PrimaryMid]];
margin-top: -1px;
margin-left: -1px;
display: block;
float: left;
width: 50%;
height: 50%;
}
.progressBar {
margin-top: 0.4em;
}
.progressBar ul {
list-style-type: none;
word-spacing: 0px;
display: inline;
padding: 0px;
}
.progressBar li {
display: inline;
cursor: pointer;
}
.progressBar a {
display: block;
margin: 2px;
float: left;
border: 2px solid [[ColorPalette::PrimaryMid]];
line-height: 5px;
min-width: 5px;
width: 5px;
background-color: [[ColorPalette::PrimaryPale]];
color: [[ColorPalette::Foreground]];
padding: 0;
-webkit-border-radius: 1em;
-moz-border-radius: 1em;
-border-radius: 1em;
-webkit-box-shadow: 2px 2px 3px rgba(135, 139, 144, 0.4);
-moz-box-shadow: 2px 2px 3px rgba(135, 139, 144, 0.4);
box-shadow: 2px 2px 3px rgba(135, 139, 144, 0.4);
}
.progressBar .selected {
background-color: [[ColorPalette::PrimaryMid]];
color: [[ColorPalette::PrimaryMid]];
border-color: [[ColorPalette::PrimaryMid]];
}
/*
* tooltip balloon
*/
#balloonHook {
display: none;
position: relative;
z-index: 100;
opacity: 0.9;
}
#balloonHook .balloon {
position: absolute;
z-index: 101;
margin: 1em auto;
background-color: [[ColorPalette::PrimaryPale]];
font-family: Constantia,Palatino,"Palatino Linotype","Palatino LT STD","Times New Roman",serif;
width: 15em;
left: -7.25em;
bottom: 0.2em;
display: block;
opacity: 0.95;
}
#balloonHook .balloon > div {
background-color: [[ColorPalette::PrimaryMid]];
}
#balloonHook .balloon .content {
color: [[ColorPalette::Background]];
background-color: [[ColorPalette::PrimaryMid]];
line-height: 1em;
padding: 1em;
text-align:center;
-moz-border-radius: 1em;
-webkit-border-radius: 1em;
}
#balloonHook .balloon .pointer {
height: 0.5em;
}
#balloonHook .balloon .pointer span {
background-color: [[ColorPalette::PrimaryPale]];
width: 49.5%;
height: 100%;
}
#balloonHook .balloon .pointer .left {
-moz-border-radius-topright: 1em;
-webkit-border-top-right-radius: 1em;
float: left;
}
#balloonHook .balloon .pointer .right {
-moz-border-radius-topleft: 1em;
-webkit-border-top-left-radius: 1em;
float: right;
}
.contents {
float: left;
font-size: 0.8em;
padding: 0.4em 1em 0;
font-weight: lighter;
}
.contents a {
padding: 0.3em 1em;
}
.contents > a.tiddlyLink,
.contents > a.tiddlyLink:hover {
padding: 1em 0 0.5em 0;
}
.contents .spacer {
padding-left: 0.3em;
}
#contents .balloon {
bottom: 0.6em;
left: -4.5em;
}
#contentsBalloon,
#contentsBalloon a.tiddlyLink {
background-color: [[ColorPalette::PrimaryMid]];
color: [[ColorPalette::Background]];
font-size: 1.1em;
}
#contentsBalloon a.tiddlyLink:hover {
color: [[ColorPalette::PrimaryMid]];
background-color: [[ColorPalette::Background]];
}
#contentsBalloon ul {
list-style: none;
text-align: left;
padding-left: 0;
margin-left: 0;
line-height: 1.8em;
}
#contentsBalloon li {
list-style: none;
}
/*}}}*/
/%
!info
|Name|CycleThemes|
|Source|http://www.TiddlyTools.com/#CycleThemes|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|creates command link to cycle through systemThemes|
Usage
<<<
{{{
<<tiddler CycleThemes>>
<<tiddler CycleThemes with: label "theme theme theme">>
}}}
*''label'' (optional)<br>text of command link. default='next theme'
*''"theme theme theme"'' (optional)<br>list of theme tiddlers to cycle through. default=[[StyleSheet]] plus all tiddlers tagged with<<tag systemTheme>>, except those tagged with<<tag excludeTheme>>or<<tag excludeLists>>
<<<
Examples
<<<
*Cycle through all themes:<br>{{{<<tiddler CycleThemes>>}}}<br><<tiddler CycleThemes##show with: 'next theme' >>
*Toggle between two themes:<br>{{{<<tiddler CycleThemes with: "toggle" "StyleSheet Plain">>}}}<br><<tiddler CycleThemes##show with: "toggle" "StyleSheet Plain">>
*Apply a theme:<br>{{{<<tiddler CycleThemes with: "default" StyleSheet>>}}}<br><<tiddler CycleThemes##show with: "use default StyleSheet" StyleSheet>>
<<<
!end
!show
<html><nowiki><a href="javascript:;"
onmouseover="
this.title='current theme: '+config.options.txtTheme;
this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
+encodeURIComponent(encodeURIComponent(this.onclick))
+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
var titles='$2'.readBracketedList();
if ('$2'=='$'+'2') {
var tids=store.getTaggedTiddlers('systemTheme');
titles=tids.map(function(t){return t.tags.contains('excludeTheme','excludeLists')?null:t.title;});
titles.pushUnique('StyleSheet');
}
var curr=titles.indexOf(config.options.txtTheme);
var next=curr+1>=titles.length?0:curr+1;
while(!titles[next] && next!=curr) next=next+1>=titles.length?0:next+1;
story.switchTheme(titles[next]);
return false;"
>$1</a></html>
!end
%/<<tiddler {{var src='CycleThemes'; src+(tiddler&&tiddler.title==src?'##info':'##show')}}
with: {{'$1'=='$'+'1'?'next theme':'$1'}} "$2">>
Current theme:<<switchTheme width:auto>>
/***
|Name|DefaultTheme|
|Source|http://www.TiddlyTools.com/#DefaultTheme|
|Version|1.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|Description|Default systemTheme definition|
|StyleSheet|##StyleSheet|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|PageTemplateReadOnly|##PageTemplateReadOnly|
|ViewTemplateReadOnly|##ViewTemplateReadOnly|
|EditTemplateReadOnly|##EditTemplateReadOnly|
!StyleSheet
/*{{{*/
[[StyleSheet]]
/*}}}*/
!PageTemplate
<!--{{{-->
[[PageTemplate]]
<!--}}}-->
!ViewTemplate
<!--{{{-->
[[ViewTemplate]]
<!--}}}-->
!EditTemplate
<!--{{{-->
[[EditTemplate]]
<!--}}}-->
!PageTemplateReadOnly
<!--{{{-->
[[PageTemplateReadOnly]]
<!--}}}-->
!ViewTemplateReadOnly
<!--{{{-->
[[ViewTemplate]]
<!--}}}-->
!EditTemplateReadOnly
<!--{{{-->
[[EditTemplateReadOnly]]
<!--}}}-->
***/
[[GettingStarted]][[WelcomeToTiddlyspot]]
iTW is a TiddlyWiki with the look and feel of an iPhone application. It works also fine in Safari, and correctly in FireFox.
The main features of iTW are :
* iPhone oriented navigation with HistoryPlugin : SinglePageMode and <<back>><<history>><<forward>> buttons
* iPhone like list
** [[systemList format|systemList tag]] : the entire line is "tappable"
** ListByTag to easily display list of tiddlers using tags
* TopMenu customizable with [[Navigation]] buttons, <<tag Menu>> Button and <<search>> box
* Ready to ''save to web'' or to ''upload edited tiddlers'' with :
** UploadPlugin
** UploadTiddlerPlugin
Thanks to make comments and suggestions to BidiX.
//{{{
TiddlyWiki.prototype.getValue = function(tiddler,fieldName)
{
var t = this.resolveTiddler(tiddler);
if(!t)
return undefined;
fieldName = fieldName.toLowerCase();
var primitives = config.textPrimitives;
if(fieldName.indexOf(primitives.sectionSeparator) === 0 || fieldName.indexOf(primitives.sliceSeparator) === 0) {
var sliceType = fieldName.substr(0, 2);
var sliceName = fieldName.substring(2);
return store.getTiddlerText("%0%1%2".format(t.title,sliceType,sliceName));
} else {
var accessor = TiddlyWiki.standardFieldAccess[fieldName];
if(accessor) {
return accessor.get(t);
}
return t.fields[fieldName];
}
};
//}}}
To get started with this blank [[TiddlyWiki]] <<version>>, you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<<switchTheme width:auto>>
/*{{{*/
#messageArea {
border:none;
background: transparent;
}
#messageArea .messageBox {
border:2px solid [[ColorPalette::SecondaryMid]];
color:[[ColorPalette::Foreground]];
background:[[ColorPalette::SecondaryLight]];
width:20em;
padding:10px;
margin-top:0px;
margin-bottom:5px;
-moz-border-radius:5px;
-webkit-border-radius:5px;
filter:alpha(opacity=80);
}
#messageArea .messageText {
display:block;
width:15em;
margin:0;
padding:0;
}
#messageArea .messageClear {
display:block;
float:right;
width:1em;
}
#messageArea .messageClear a {
text-decoration:none;
background-color: transparent;
color:[[ColorPalette::Foreground]];
}
/*}}}*/
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{
window.hideWhenLastTest = false;
window.removeElementWhen = function(test,place) {
window.hideWhenLastTest = test;
if (test) {
removeChildren(place);
place.parentNode.removeChild(place);
}
};
merge(config.macros,{
hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( eval(paramString), place);
}},
showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !eval(paramString), place);
}},
hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAny(params), place);
}},
showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAny(params), place);
}},
hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
}},
showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
}},
hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title == params[0], place);
}},
showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title != params[0], place);
}},
'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !window.hideWhenLastTest, place);
}}
});
//}}}
/***
|''Name:''|HistoryPlugin|
|''Description:''|Limits to only one tiddler open. Manages an history stack and provides macro to navigate in this history (<<history>><<back>><<forward>>).|
|''Version:''|1.0.0|
|''Date:''|2008-03-23|
|''Source:''|http://tiddlywiki.bidix.info/#HistoryPlugin|
|''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.3.0|
***/
//{{{
Story.prototype.tiddlerHistory = [];
Story.prototype.historyCurrentPos = -1;
Story.prototype.currentTiddler = null;
Story.prototype.maxPos = 11;
Story.prototype.old_history_displayTiddler = Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)
{
title = ((typeof title === "string") ? title : title.title);
//SinglePageMode
if (this.currentTiddler) this.closeTiddler(this.currentTiddler);
if (template == 2) {
//switch to Edit mode : don't manage
story.old_history_displayTiddler(null,title,template,animate,slowly);
return;
}
// if same tiddler no change
if (this.tiddlerHistory[this.historyCurrentPos] == title) {
this.currentTiddler = title;
story.old_history_displayTiddler(null,title,template,animate,slowly);
return;
}
if (this.historyCurrentPos == this.tiddlerHistory.length -1) {
// bottom of stack
this.tiddlerHistory.push(title);
if (this.tiddlerHistory.length > 11) {
this.tiddlerHistory.shift();
} else {
this.historyCurrentPos += 1;
}
} else {
// middle of stack
this.historyCurrentPos += 1;
if (this.tiddlerHistory[this.historyCurrentPos] != title) {
// path change => cut history
this.tiddlerHistory[this.historyCurrentPos] = title;
var a = [];
for(var i = 0; i <= this.historyCurrentPos;i++) {
a[i] = this.tiddlerHistory[i];
}
this.tiddlerHistory = a;
}
}
this.currentTiddler = title;
story.old_history_displayTiddler(null,title,template,animate,true);
scrollTo(0, 1);
}
Story.prototype.old_history_closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler = function(title,animate,slowly)
{
this.currentTiddler = null;
story.old_history_closeTiddler.apply(this,arguments);
}
config.macros.history = {};
config.macros.history.action = function(event) {
var popup = Popup.create(this);
if(popup)
{
if (!story.tiddlerHistory.length)
createTiddlyText(popup,"No history");
else
{
var c = story.tiddlerHistory.length;
for (i=0; i<c;i++ )
{
var elmt = createTiddlyElement(popup,"li");
var btn = createTiddlyButton(elmt,story.tiddlerHistory[i],story.tiddlerHistory[i],config.macros.history.onClick);
btn.setAttribute("historyPos",i);
}
}
}
Popup.show(popup,false);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
}
config.macros.history.handler = function(place,macroName,params)
{
createTiddlyButton(place, 'history', 'history', config.macros.history.action);
}
config.macros.history.onClick = function(ev)
{
var e = ev ? ev : window.event;
var historyPos = this.getAttribute("historyPos");
story.historyCurrentPos = historyPos -1;
story.displayTiddler(null,story.tiddlerHistory[historyPos]);
return false;
};
config.macros.back = {};
config.macros.back.action = function() {
if (story.historyCurrentPos > 0) {
if (story.currentTiddler) story.closeTiddler(story.currentTiddler);
story.historyCurrentPos = story.historyCurrentPos -2;
story.displayTiddler(null,story.tiddlerHistory[story.historyCurrentPos+1]);
} else {
//if (story.currentTiddler) story.old_history_displayTiddler(null,story.currentTiddler);
};
return false;
}
config.macros.back.handler = function(place,macroName,params)
{
createTiddlyButton(place, '<', 'back', config.macros.back.action,"backButton");
}
config.macros.forward = {};
config.macros.forward.action = function() {
if (story.historyCurrentPos < story.tiddlerHistory.length -1) {
if (story.currentTiddler) story.closeTiddler(story.currentTiddler);
//story.historyCurrentPos = story.historyCurrentPos;
story.displayTiddler(null,story.tiddlerHistory[story.historyCurrentPos+1]);
} else {
//if (story.currentTiddler) story.old_history_displayTiddler(null,story.currentTiddler);
}
return false;
}
config.macros.forward.handler = function(place,macroName,params)
{
createTiddlyButton(place, '>', 'forward', config.macros.forward.action, "ibutton");
}
//}}}
{{homeTitle{iTW - a ~TiddlyWiki for iPhone}}}
<<listByTag '' created ''>>
[img[http://db.tt/jbwKSTh]]
/***
|''Name''|ImageMacroPlugin|
|''Version''|0.9.31|
|''Description''|Allows the rendering of svg images in a TiddlyWiki|
|''Author''|Osmosoft|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''Notes''|Currently only works in modern browsers (not IE)|
|''Requires''|BinaryTiddlersPlugin|
!Usage
{{{<<image SVG>>}}} will render the text of the tiddler with title SVG as an SVG image (but not in ie where it will fail silently)
!!Parameters
width/height: specify width/height parameters
link: make the image link to a given location
tiddlyLink: link to a tiddler
!Notes
Binary tiddlers in TiddlyWeb when passed through the wikifier will be shown as images.
eg. {{{<<view text wikified>>}}} on a binary tiddler will show the image.
{{{<<view fieldname image>>}}}
will render the value of the tiddler field 'fieldname' as an image. This field can contain a tid
{{{<<image SiteIcon>>}}}
will create an image tag where the tiddler has content type beginning image and not ending +xml
will attempt to create svg object in other scenarios
{{{<<image /photos/x.jpg>>}}}
will create an image tag with src /photos/x.jpg as long as there is not a tiddler called /photos/x.jpg in
which case it will render that tiddler as an image. Note for the case of svg files it will attempt to render as an svg if possible via the image
tag. It doesn't embed the svg in the dom for security reasons as svg code can contain javascript.
!Code
***/
//{{{
(function($) {
var macro = config.macros.image = {
shim: "/bags/common/tiddlers/shim",
ieVersion: config.browser.isIE ? parseInt(config.browser.ieVersion[1], 10) : false,
svgns: "http://www.w3.org/2000/svg",
xlinkns: "http://www.w3.org/1999/xlink",
svgAvailable: document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"),
_fixPrefix: 1,
_external_cache: {},
_image_tag_cache: {},
_image_dimensions: {},
locale: {
badImage: "This image cannot be displayed."
},
handler: function(place, macroName, params, wikifier, paramString, tiddler){
var imageSource = params[0];
// collect named arguments
var args = macro.getArguments(paramString, params);
this.renderImage(place, imageSource, args);
},
init: function() {
var startupImages = store.getTaggedTiddlers("systemImage");
var place = $("<div />").attr("id", "systemImageArea").appendTo("body").hide()[0];
for(var i = 0; i < startupImages.length; i++) {
var image = startupImages[i];
macro.renderImage(place, image.title, { idPrefix: "" });
}
var data = new Image();
data.onload = function() {
macro.supportsDataUris = this.width != 1 || this.height != 1 ? false : true;
};
data.onerror = data.onload;
data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
},
refreshImage: function(src) {
var elements = macro._image_tag_cache[src] ? macro._image_tag_cache[src] : [];
if(macro._image_dimensions[src]) {
macro._image_dimensions[src] = false;
}
for(var i = 0; i < elements.length; i++) {
var el = $(elements[i]);
var newSrc = "%0?nocache=%1".format(src, Math.random());
el.attr("src", newSrc); // force reload
}
},
isBinaryImageType: function(contentType) {
return (contentType && contentType.indexOf("image") === 0 &&
contentType.indexOf("+xml") != contentType.length - 4) ? true : false;
},
isImageTiddler: function(tiddler) {
return macro.isSVGTiddler(tiddler) || macro.isBinaryImageTiddler(tiddler);
},
isSVGTiddler: function(tiddler) {
var type = tiddler ? tiddler.fields['server.content-type'] : false;
return type == "image/svg+xml";
},
isBinaryImageTiddler: function(tiddler) {
return macro.isBinaryImageType(tiddler.fields['server.content-type']);
},
renderImage: function(place, imageSource, options) {
var imageTiddler = store.getTiddler(imageSource);
var container;
var classes = ["image"];
if(options.link) {
classes = classes.concat(["imageLink", "externalLink"]);
container = $("<a />").attr("href", options.link).appendTo(place)[0];
} else if(options.tiddlyLink) {
classes.push("imageLink");
container = createTiddlyLink(place, options.tiddlyLink, false);
} else {
container = $("<span />").appendTo(place)[0];
}
$(container).addClass(classes.join(" "));
options = options ? options : {};
if(imageTiddler && macro.isBinaryImageTiddler(imageTiddler)) { // handle the case where we have an image url
return macro._renderBinaryImageTiddler(container, imageTiddler, options);
} else if(imageTiddler){ // handle the case where we have a tiddler
return macro._renderSVGTiddler(container, imageTiddler, options);
} else { // we have a string representing a url
return macro._renderBinaryImageUrl(container, imageSource, options);
}
},
_renderAlternateText: function(container, options) {
var img;
var src = options.src || "";
if(options.width && options.height) {
img = $("<img />").attr("src", src).addClass("svgImageText").attr("width", options.width).
attr("height", options.height).appendTo(container);
}
var alt = options.alt;
if(img && alt) {
img.attr("alt", alt).attr("title", alt);
} else if(alt) {
$(container).addClass("svgImageText").text(alt);
}
macro._image_tag_cache[src] = img;
},
_renderSVGTiddler: function(place, tiddler, options) {
if(!options) {
options = {};
}
merge(options, { tiddler: tiddler, fix: true});
if(macro.svgAvailable) {
this._importSVG(place, options); // display the svg
} else if(options.altImage) {
var image = options.altImage;
delete options.altImage;
this._renderBinaryImageUrl(place, image, options);
} else {
this._renderAlternateText(place, options); // instead of showing the image show the alternate text.
}
},
_renderBinaryImageTiddler: function(place, tiddler, options) {
var resourceURI;
var fields = tiddler.fields;
if(fields["server.type"] == "tiddlyweb") { // construct an accurate url for the resource
resourceURI = "%0/%1/tiddlers/%2".format(config.defaultCustomFields["server.host"],
fields["server.workspace"], fields["server.title"]);
} else { // guess the url for the resource
resourceURI = tiddler.title;
}
var ctype = fields["server.content-type"] || tiddler.type;
var text = tiddler.text;
if(macro.supportsDataUris && ctype && text.indexOf("<html") == -1) {
var uri = "data:%0;base64,%1".format(ctype, text);
options.src = resourceURI;
return macro._renderBinaryImageUrl(place, uri, options);
} else if(options.src) {
return macro._renderBinaryImageUrl(place, options.src, options);
} else {
return macro._renderBinaryImageUrl(place, resourceURI, options);
}
},
_renderImageTag: function(container, src, width, height, options) {
var img;
img = $("<img />").appendTo(container);
if(height) {
img.attr("height", height);
}
if(width) {
img.attr("width", width);
}
if(macro.ieVersion && macro.ieVersion < 7 && macro.shim && options.ie6png) {
$(img).css({width: userW, height: userH,
filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%0', sizingMethod='scale')".format(src)
}).attr("src", macro.shim);
} else {
img.attr("src", src);
}
if(!macro._image_tag_cache[options.srcUrl]) {
macro._image_tag_cache[options.srcUrl] = [];
}
img = $(img).addClass(options.imageClass)[0];
macro._image_tag_cache[options.srcUrl].push(img);
return img;
},
_getDimensions: function(realDimensions, reqDimensions, preserve) {
var w = realDimensions.width;
var h = realDimensions.height;
var reqh = reqDimensions.height;
var reqw = reqDimensions.width;
var finalw = w, finalh = h;
var ratiow = reqw / w, ratioh = reqh / h;
var scaledw = ratioh * w;
var scaledh = ratiow * h;
if(!reqw && reqh) {
finalw = scaledw;
finalh = reqh;
} else if(reqw && !reqh) {
finalw = reqw;
finalh = scaledh;
} else if(reqh && reqw) {
var preserveWidth = w > h ? true : false;
if(preserve) {
if(preserveWidth && scaledh < reqh) {
finalh = scaledh;
finalw = reqw;
} else {
finalh = reqh;
finalw = scaledw;
}
} else {
finalw = reqw;
finalh = reqh;
}
}
return { width: parseInt(finalw, 10), height: parseInt(finalh, 10) };
},
_renderBinaryImageUrl: function(container, src, options) {
var srcUrl = options.src ? options.src : src;
srcUrl = srcUrl.indexOf("/") === -1 ? "/%0".format(srcUrl) : srcUrl; // for IE.
var image_dimensions = macro._image_dimensions[srcUrl];
var image = new Image(); // due to weird scaling issues where you use just a width or just a height
var createImageTag = function(dimensions, error) {
if(error) {
var altImage = options.altImage;
if(altImage) {
delete options.altImage;
macro._renderBinaryImageUrl(container, altImage, options);
} else {
options.src = src;
macro._renderAlternateText(container, options);
}
} else {
var dim = macro._getDimensions(dimensions, {
width: options.width, height: options.height }, options.preserveAspectRatio);
options.srcUrl = srcUrl;
macro._renderImageTag(container, src, dim.width, dim.height, options);
}
};
if(!image_dimensions) {
image.onload = function() {
var dimensions = { width: image.width, height: image.height};
macro._image_dimensions[srcUrl] = dimensions;
createImageTag(dimensions);
};
image.onerror = function() {
createImageTag(null, true);
};
image.src = src;
} else {
createImageTag(image_dimensions);
}
},
_generateIdPrefix: function(){
return "twsvgfix_" + (this._fixPrefix++).toString() + "_";
},
_fixSVG: function(childNodes, idPrefix) {
var urlPattern = /url\(\#([^\)]*)\)*/ig;
var fixes = [
{ attr: "id", pattern: /^(.*)$/ig },
{ attr: "href", namespace: macro.xlinkns, pattern: /^#(.*)$/ig }
];
var url_fixes = ["filter", "fill", "mask", "stroke", "style"];
for(var i = 0; i < url_fixes.length; i++) {
fixes.push({ attr: url_fixes[i], pattern: urlPattern });
}
for(var t = 0; t < childNodes.length; t++) {
var node = childNodes[t];
for(var a = 0; a < fixes.length; a++) {
var fix = fixes[a];
var attr = fix.attr;
var ns = fix.namespace || "";
if(node.hasAttributeNS && node.hasAttributeNS(ns, attr)) {
var v = node.getAttributeNS(ns, attr);
fix.pattern.lastIndex = 0;
var match = fix.pattern.exec(v);
if(match) {
// Make sure replacement string doesn't contain any single dollar signs
var toReplace = match[1];
if(toReplace.indexOf(idPrefix) !== 0 && toReplace.indexOf("twglobal_") !== 0) {
var replacement = (idPrefix + toReplace).replace("$", "$$$$");
v = v.replace(match[1], replacement);
}
node.setAttributeNS(ns, attr,v);
}
}
}
var children = node.childNodes;
if(children.length > 0) {
this._fixSVG(children, idPrefix);
}
}
},
_importSVG: function(place, options){
options = options ? options : {};
var svgDoc, tiddlerText = options.tiddler.text;
if (window.DOMParser) {
svgDoc = new DOMParser().parseFromString(tiddlerText, "application/xml").documentElement;
var idPrefix = options.idPrefix || this._generateIdPrefix();
this._fixSVG([svgDoc], idPrefix);
var el = document.importNode(svgDoc, true);
var svgHolder = document.createElementNS(macro.svgns,"svg");
var width = options.width;
var height = options.height;
if(width || height) {
if(width && height) { // set view box of containing svg element based on the svg viewbox and width and height.
var viewBox = el.getAttribute("viewBox");
var topLeft = "0 0";
if(viewBox) {
topLeft = viewBox.replace(/([0-9]*) +([0-9]*) +([0-9]*) +([0-9]*) */gi,"$1 $2");
}
svgHolder.setAttributeNS(macro.svgns, "viewBox", "0 0 %0 %1".format(width, height));
} else {
if(!width) {
width = el.getAttribute("width");
}
if(!height) {
height = el.getAttribute("height");
}
}
svgHolder.setAttribute("width", width);
svgHolder.setAttribute("height", height);
el.setAttribute("width", "100%");
el.setAttribute("height", "100%");
svgHolder.setAttribute("class", "svgImage svgIcon %0".format(options.imageClass || ""));
svgHolder.appendChild(el);
place.appendChild(svgHolder);
}
else {
var existing = el.className ? el.className.baseVal : "";
el.setAttribute("class","svgImage %0".format(existing));
place.appendChild(el);
}
// if a tiddler attribute is set this is read as a link
$("[tiddler], [tiddlyLink]", place).attr("refresh", "link").click(function(ev) {
var tiddler = $(ev.target).attr("tiddlyLink");
if(tiddler) {
story.displayTiddler(ev.target, tiddler);
}
});
}
},
getArguments: function(paramString, params) {
var args = paramString.parseParams("name", null, true, false, true)[0];
var options = {};
for(var id in args) {
if(true) {
var p = args[id];
if(id == "def") {
options[id] = p;
} else {
options[id] = p[0];
}
}
}
var width = isNaN(params[1]) ? false : parseInt(params[1], 10);
var height = isNaN(params[2]) ? false : parseInt(params[2], 10);
options.width = macro.lookupArgument(options, "width", width);
options.height = macro.lookupArgument(options, "height", height);
options.preserveAspectRatio = args.preserveAspectRatio &&
args.preserveAspectRatio[0] == "yes" ? true : false;
options.tiddlyLink = macro.lookupArgument(options, "tiddlyLink", false);
options.link = macro.lookupArgument(options, "link", false);
return options;
},
lookupArgument: function(args, id, ifEmpty) {
return args[id] ? args[id] : ifEmpty;
}
};
// update views
var _oldwikifiedview = config.macros.view.views.wikified;
// update wikifier to check tiddler type before rendering
merge(config.macros.view.views, {
wikified: function(value, place, params, wikifier, paramString, tiddler) {
if(macro.isImageTiddler(tiddler) && params[0] == "text") {
var newplace = $("<div />").addClass("wikifiedImage").appendTo(place)[0];
macro.renderImage(newplace, tiddler.title, { alt: macro.locale.badImage });
} else {
_oldwikifiedview.apply(this, arguments);
}
},
image: function(value, place, params, wikifier, paramString, tiddler) {
// a field can point to another tiddler whereas text is the current tiddler.
var title = params[0] == "text" ? tiddler.title : value;
paramString = '"%0" %1'.format(title, params.splice(2).join(" "))
invokeMacro(place, "image", paramString, null, tiddler);
}
});
config.shadowTiddlers.StyleSheetImageMacro = [".wikifiedImage svg, .wikifiedImage .image { width: 80%; }",
".svgImageText { background-color:[[ColorPalette::Error]]; color:#ddd; display: inline-block; }",
"span.svgImageText { display: inline-block; overflow-hidden; }"
].join("");
store.addNotification("StyleSheetImageMacro", refreshStyles);
})(jQuery);
//}}}
//{{{
/*
* ListByTag
*/
Array.prototype.tiddlerList = function(listFormat,max) {
var output = "";
if (!listFormat)
// listFormat = "'\\n{{tiddlerListItem{{{tiddlerListItemTitle{[[' + tiddler.title + ']]}}} - ' + tiddler.created.formatString('0DD/0MM/YY') + ' - ' + tiddler.modifier + '\\n{{tiddlerExcerpt{' + text + ' ... \\n}}}}}}'";
listFormat = "'\\n{{tiddlerListItem{{{tiddlerListItemTitle{[[' + tiddler.title + ']]}}} - ' + tiddler.created.formatString('0DD/0MM/YY') + ' - ' + tiddler.modifier + '}}}'";
if (!max)
max = this.length;
if (this.length > 0 && this[0] instanceof Tiddler) {
for (var i=0;i<max;i++) {
var tiddler = this[i];
var text = "{{{"+wikifyPlain(tiddler.title, store, 100)+"}}}";
output += eval(listFormat);
}
}
output += "\n----\n";
return output;
};
// tag, sorted, listformat, max(0), noReverse(true)
config.macros.listByTag = {};
config.macros.listByTag.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
params[0] = (params[0] ? params[0] : tiddler.title);
var tiddlers = store.getTaggedTiddlers(params[0],params[1]);
if (params[3] == 0) params[3] = null;
if (! params[4])
tiddlers = tiddlers.reverse();
wikify(tiddlers.tiddlerList(params[2],params[3]),place,null,tiddler.tiddler);
var tiddlerElem = document.getElementById(story.idPrefix + tiddler.title);
var e = null;
if(tiddlerElem != null) {
var children = tiddlerElem.getElementsByTagName("span");
for(var t=0; t<children.length; t++) {
var c = children[t];
if(c.className == 'tiddlerListItem') {
c.addEventListener('mousedown', function(event) {
var tiddlyLink = event.currentTarget.firstChild.firstChild;
var tiddlerTitle = tiddlyLink.getAttribute("tiddlyLink");
story.displayTiddler(null, tiddlerTitle);
event.preventDefault();
}, true);
}
}
}
};
//}}}
/***
|''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);
}
//}}}
<<switchTheme width:auto>>
[[Welcome|WelcomeToTiddlyspot]]
[[GettingStarted]]
<!--{{{-->
<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='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div><div style="position:fixed;z-index:1001;bottom:.3em;right:.3em;cursor:pointer;font-size:9pt;">
<a href="javascript:window.scrollTo(0,0)" title="scroll to top of page">▲</a>
</div>
<!--}}}-->
/***
|''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"
});
*/
//}}}
Current theme:<<switchTheme width:auto>>
/***
|Name|Plain|
|Source|http://www.TiddlyTools.com/#Plain|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|CSS|
|Description|theme: white backgrounds with minimal adjustments|
|StyleSheet|Plain|
|PageTemplate|##PageTemplate|
|PageTemplateReadOnly|PageTemplateReadOnly|
|EditTemplateReadOnly|EditTemplateReadOnly|
***/
/*{{{*/
/* ==== Plain ==== */
body { background-color:#ffe !important; }
.menubox { background-color:#fff; }
.viewer { border: 1px solid #999; background:#fff; -moz-border-radius:1em;-webkit-border-radius:1em; padding:1em; }
/*}}}*/
[[StyleSheetAdjustments]]
!PageTemplate
<!--{{{-->
<!--
|Name|PageTemplate|
|Source|http://www.TiddlyTools.com/#PageTemplate|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|template|
|Description|custom version of shadow template for controlling page layout|
-->
<div id='siteHeader' class='header'>
<span id='siteTitle' class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span id='siteSubtitle' class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='siteMenu' class='siteMenu' refresh='content' tiddler='SiteMenu' style='clear:both'></div>
<div id='breadCrumbs' class='breadCrumbs'></div>
<div id='mainMenu'>
<div id='mainMenuStandard' refresh='content' tiddler='MainMenu'></div>
<div id='mainMenuExtras' macro='tiddler MainMenuExtras'></div>
<div id='mainMenuFooter' macro='tiddler MainMenuFooter'></div>
</div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea' ondblclick='clearMessage();return false;'></div>
<div id='storyMenu' class='storyMenu' refresh='content' force='false' tiddler='StoryMenu'></div>
<div id='searchPanel' class='searchPanel smallform' style='display:none;margin:1em;clear:both;z-index:10001'
macro='moveablePanel name:searchresults undocked manager hover width:auto height:auto'></div>
<div id='tiddlerDisplay' style="clear:both"></div>
</div>
<div style="position:fixed;z-index:1001;bottom:.3em;right:.3em;cursor:pointer;font-size:9pt;">
<a href="javascript:window.scrollTo(0,0)" title="scroll to top of page">▲</a>
</div>
<span style='display:none' macro='tiddler SiteStartup'></span>
<!--}}}-->
|''PageTemplate''|##PageTemplate|
|''StyleSheet''|##StyleSheet|
|ViewTemplate|TiddlySlidy##ViewTemplate|
!PageTemplate
<!--{{{-->
<div id='messageArea'></div>
<div id='presentation'>
<div id='slide'>
<div id='tiddlerDisplay'>display</div>
</div>
</div>
<div id='footer'>
<div class="controls" refresh='content' tiddler='ControlPanel'></div>
</div>
<!--}}}-->
!StyleSheet
[[TiddlySlidy##StyleSheet]]
/*{{{*/
a#backstageShow {
color: [[ColorPalette::SecondaryPale]];
}
/* ie6.0 hack */
div#tiddlerDisplay div.tiddler {
_height: 475px;
}
/*}}}*/
/***
|Name|PreviewPlugin|
|Source|http://www.TiddlyTools.com/#PreviewPlugin|
|Documentation|http://www.TiddlyTools.com/#PreviewPluginInfo|
|Version|1.8.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|add key-by-key wikified preview to any textarea input field|
Provides key-by-key ''LIVE PREVIEW'' of //formatted// tiddler content as you type input into a textarea (multi-line) edit field.
!!!!!Documentation
>see [[PreviewPluginInfo]]
!!!!!Configuration
<<<
Automatically freeze preview updates when a tiddler takes more than <<option txtPreviewAutoFreeze>> milliseconds to render.
<<<
!!!!!Revisions
<<<
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.11.18 [1.8.1] in config.commands.previewTiddler, changed alt command text to use character-based "psuedo-checkbox" instead of embedded html fragment
2007.09.27 [1.8.0] split TidIDE preview functionality into separate stand-alone plugin (see [[TidIDEPlugin]]).
|please see [[TidIDEPluginInfo]] for additional revision details|
2006.04.15 [0.5.0] Initial ALPHA release. Converted from inline script.
<<<
!!!!!Code
***/
// // version info
//{{{
version.extensions.PreviewPlugin= {major: 1, minor: 8, revision: 1, date: new Date(2007,11,18)};
//}}}
// // macro definition
//{{{
if (config.options.txtPreviewAutoFreeze==undefined)
config.options.txtPreviewAutoFreeze=250; // limit (in milliseconds) for auto-freezing preview display
config.macros.preview = {
renderMsg: "rendering preview...",
timeoutMsg: " (> %0ms)",
freezeMsg: " - preview is frozen. Press [refresh] to re-display.",
handler: function(place,macroName,params) {
var hide=params[0]=="hide"; if (hide) params.shift();
var field=params[0];
var height=params[1]; if (!height) height=15;
var here=this.findContainingForm(place);
if (!here) here=story.findContainingTiddler(place);
if (!here) here=place.parentNode;
if (!here) here=place;
var elems=here.getElementsByTagName("textarea");
if (field) for (var e=0; e<elems.length; e++) // find matching textarea (by fieldname)
if (elems[e].getAttribute("edit")==field) var ta=elems[e];
else
if (elems.length) var ta=elems[elems.length-1]; // default to last rendered text area
if (!ta) {
var elems=here.getElementsByTagName("input");
if (field) for (var e=0; e<elems.length; e++) // find matching input field (by fieldname)
if (elems[e].getAttribute("edit")==field) var ta=elems[e];
else
if (elems.length) var ta=elems[elems.length-1]; // default to last rendered input field
}
if (!ta) return false; // no textarea or input field found... do nothing...
var id=(new Date().getTime()).toString()+Math.random(); // unique instance ID
ta.id=id+"_edit";
ta.setAttribute("previewid",id+"_preview");
ta.saved_onkeyup=ta.onkeyup;
ta.onkeyup=function(ev) {
if (this.saved_onkeyup) this.saved_onkeyup.apply(this,arguments);
config.macros.preview.render(this.id,this.getAttribute("previewid"));
}
var html=this.html.replace(/%previd%/g,id+"_preview")
html=html.replace(/%srcid%/g,id+"_edit");
html=html.replace(/%hide%/g,hide?"none":"block");
html=html.replace(/%limit%/g,config.options.txtPreviewAutoFreeze);
html=html.replace(/%frozen%/g,hide?"checked":"");
html=html.replace(/%height%/g,height);
html=html.replace(/%halfheight%/g,height/2);
createTiddlyElement(place,"span").innerHTML=html;
this.render(id+"_edit",id+"_preview");
},
findContainingForm: function(e) {
while (e && e.nodeName.toLowerCase()!="form") e=e.parentNode;
return e;
},
render: function(srcid,previd,force) {
var value=document.getElementById(srcid).value;
var panel=document.getElementById(previd);
var f=this.findContainingForm(panel);
if (!f || (f.freeze.checked && !force)) return;
var p=panel.firstChild; var d=f.domview; var h=f.htmlview; if (!p||!d||!h) return;
p.innerHTML="";
f.status.value=this.renderMsg;
var start=new Date();
wikify(value.replace(/\r/g,''),p);
var end=new Date();
this.renderDOM(previd);
this.renderHTML(previd);
f.status.value="elapsed: "+(end-start+1)+"ms";
// automatically suspend preview updates for slow rendering tiddlers
if (end-start+1>config.options.txtPreviewAutoFreeze) {
f.freeze.checked=true;
f.status.value+=this.timeoutMsg.format([config.options.txtPreviewAutoFreeze]);
}
if (f.freeze.checked) f.status.value+=this.freezeMsg;
},
renderDOM: function(id) {
var panel=document.getElementById(id);
var f=this.findContainingForm(panel); if (!f) return;
var p=panel.firstChild; var d=f.domview; var h=f.htmlview; if (!p||!d||!h) return;
var height=p.getAttribute("height");
p.style.height=((f.dom.checked||f.html.checked)?height/2:height)+"em";
if (f.dom.checked) d.value=this.getNodeTree(p,"| ");
if (!d.style||!h.style) return;
d.style.height=height/2+"em";
d.style.display=f.dom.checked?"inline":"none";
d.style.width=f.html.checked?"49.5%":"100%";
h.style.width=f.dom.checked?"49.5%":"100%";
},
renderHTML: function(id) {
var panel=document.getElementById(id);
var f=this.findContainingForm(panel); if (!f) return;
var p=panel.firstChild; var d=f.domview; var h=f.htmlview; if (!p||!d||!h) return;
var height=p.getAttribute("height");
p.style.height=((f.dom.checked||f.html.checked)?height/2:height)+"em";
if (f.html.checked) h.value=this.formatHTML(p.innerHTML);
if (!h.style||!d.style) return;
h.style.height=height/2+"em";
h.style.display=f.html.checked?"inline":"none";
h.style.width=f.dom.checked?"49.5%":"100%";
d.style.width=f.html.checked?"49.5%":"100%";
},
formatHTML: function(txt) {
if (config.browser.isIE) return txt; // BYPASS - 4/24/2006 due to IE hang problem. Will fix later...
var out="";
var indent="";
var level=0;
for (var i=0;i<txt.length;i++) {
var c=txt.substr(i,1);
if (c=="<") {
if (txt.substr(i+1,1)=="/") indent=indent.substr(0,indent.length-2);
out+="\n"+indent;
if (txt.substr(i+1,1)!="/" && txt.substr(i+1,3)!="br>" && txt.substr(i+1,2)!="p>" && txt.substr(i+1,3)!="hr>") indent+=" ";
}
out+=c;
if (c=="\n")
out+=indent;
if (c==">" && txt.substr(i+1,1)!="<")
out+="\n"+indent;
}
return out;
},
getNodeTree: function(theNode,theIndent,showPath,inline,thePrefix,thePath)
{
if (!theNode) return "";
if (!thePrefix) thePrefix="";
if (!thePath) thePath="";
var mquote='"'+(inline?"{{{":"");
var endmquote=(inline?"}}}":"")+'"';
// generate output for this node
var out = thePrefix;
if (showPath && thePath.length)
out += (inline?"//":"")+thePath.substr(1)+":"+(inline?"//":"")+"\r\n"+thePrefix;
if (theNode.className=="DOMViewer")
return out+'[DOMViewer]\r\n'; // avoid self-referential recursion
out += (inline?"''":"")+theNode.nodeName.toUpperCase()+(inline?"''":"");
if (theNode.nodeName=="#text")
out += ' '+mquote+theNode.nodeValue.replace(/\n/g,'\\n')+endmquote;
if (theNode.className)
out += ' class='+mquote+theNode.className+endmquote;
if (theNode.type)
out += ' type='+mquote+theNode.type+endmquote;
if (theNode.id)
out += ' id='+mquote+theNode.id+endmquote;
if (theNode.name)
out += " "+theNode.name+(theNode.value?"="+mquote+theNode.value+endmquote:"");
if (theNode.href)
out += ' href='+mquote+theNode.href+endmquote;
if (theNode.src)
out += ' src='+mquote+theNode.src+endmquote;
if (theNode.attributes && theNode.getAttribute("tiddlyLink")!=undefined)
out += ' tiddler='+mquote+theNode.getAttribute("tiddlyLink")+endmquote;
out += "\r\n";
// recursively generate output for child nodes
thePath=thePath+"."+theNode.nodeName.toLowerCase();
thePrefix=theIndent+thePrefix;
for (var i=0;i<theNode.childNodes.length;i++)
{
var thisChild=theNode.childNodes.item(i);
var theNum=(inline?"~~":"(")+(i+1)+(inline?"~~":")");
out += this.getNodeTree(thisChild,theIndent,showPath,inline,thePrefix,thePath+theNum);
}
return out;
},
html: " <form style='width:100%'><span id='%previd%' editID='%srcid%' style='display:%hide%'><div class='viewer' \
height='%height%' style='margin:0;margin-top:.5em;height:%height%em;overflow:auto;white-space:normal'> \
\
</div> \
<!-- DOM and HTML viewers --> \
<textarea name=domview cols=60 rows=12 wrap=off \
onfocus='this.select()' style='display:none;width:100%;height:%halfheight%em;'></textarea><!-- \
--><textarea name=htmlview cols=60 rows=12 wrap=off \
onfocus='this.select()' style='display:none;width:100%;height:%halfheight%em;'></textarea> \
<!-- status line, preview option checkboxes, run/refresh buttons --> \
<table width='100%' style='border:0;padding:0;margin:0'><tr style='border:0;padding:0;margin:0'> \
<td style='border:0;padding:0;margin:0'><!-- \
--><input type=text name=status style='padding:0;width:100%;' \
title='ELAPSED: time (in milliseconds) used to render tiddler content in preview display'><!-- \
--></td><td style='width:1%;border:0;padding:0;margin:0;'><!-- \
--><input type=text name=limit size='6' maxlength='6' style='padding:0;width:5em;text-align:center' \
value='%limit%ms' title='TIME LIMIT: maximum rendering time (in milliseconds) before auto-freezing preview' \
onfocus='this.select()' \
onchange='var val=this.value.replace(/[^0-9]/g,\"\"); if (!val.length) val=this.defaultValue; \
this.value=val+\"ms\"; config.options.txtPreviewAutoFreeze=val; saveOptionCookie(\"txtPreviewAutoFreeze\"); \
this.form.freeze.checked=false; config.macros.preview.render(\"%srcid%\",\"%previd%\",true);'><!-- \
--></td><td style='width:1%;border:0;padding:0;margin:0;'><!-- \
--><input type=text name=height size='4' maxlength='4' style='padding:0;width:4em;text-align:center' \
value='%height%em' title='HEIGHT: size (in \"ems\") of preview area, including controls' \
onfocus='this.select()' \
onchange='var val=this.value.replace(/[^0-9]/g,\"\"); if (!val.length) val=this.defaultValue; \
this.value=val+\"em\"; document.getElementById(\"%previd%\").firstChild.setAttribute(\"height\",val); \
config.macros.preview.render(\"%srcid%\",\"%previd%\",true)'><!-- \
--></td><td style='width:1%;border:0;padding:0;margin:0;text-align:right;white-space:nowrap'> \
<input type=checkbox name=dom style='display:inline;width:auto;margin:1px;' \
title='show Document Object Model (DOM) information' \
onclick='config.macros.preview.renderDOM(\"%previd%\");'>DOM \
<input type=checkbox name=html style='display:inline;width:auto;margin:1px;' \
title='show rendered HTML' \
onclick='config.macros.preview.renderHTML(\"%previd%\");'>HTML \
<input type=checkbox name=freeze style='display:inline;width:auto;margin:1px;' %frozen% \
title='do not update preview display as changes are made' \
onclick='var p=document.getElementById(\"%previd%\"); \
if (this.checked) this.form.status.value+=config.macros.preview.freezeMsg; \
else config.macros.preview.render(\"%srcid%\",\"%previd%\",true);'>freeze \
<input type=button style='display:inline;width:auto;' value='refresh' \
title='update preview display' \
onclick='config.macros.preview.render(\"%srcid%\",\"%previd%\",true)'> \
</td></tr></table> \
</span></form>"
}
//}}}
// // toolbar definition
//{{{
config.commands.previewTiddler = {
text: 'preview',
tooltip: 'show key-by-key preview',
text_alt: '\u221Apreview',
handler: function(event,src,title) {
var here=story.findContainingTiddler(src); if (!here) return;
var elems=here.getElementsByTagName("span");
for (var e=0; e<elems.length; e++) {
if (elems[e].getAttribute("editid")) {
var show=elems[e].style.display=="none";
src.innerHTML=show?this.text_alt:this.text;
elems[e].style.display=show?"block":"none";
config.macros.preview.findContainingForm(elems[e]).freeze.checked=!show;
if (show) config.macros.preview.render(elems[e].getAttribute("editid"),elems[e].id);
}
}
return false;
}
};
//}}}
summary:this is a summary
!testsection
This is a testsection
consisting of
several
lines
/***
|''Name''|RandomColorPalettePlugin|
|''Description''|Adds a random color palette to TiddlyWiki|
|''Author''|Jon Robson|
|''Version''|1.2.8|
|''Status''|stable|
|''Source''|http://svn.tiddlywiki.org/Trunk/contributors/JonRobson/plugins/RandomColorPalettePlugin/RandomColorPalettePlugin.js|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
!Usage
{{{
<<RandomColorPalette>>
Sets and saves a random color palette on execution
<<RandomColorPaletteButton>>
Creates a button, which when clicked will change the color palette
}}}
!Parameters
rgb: yes
By default the ColorPalette is defined in hex. You can output the colours as rgb by simply including this parameter.
hue:[0,360]
Seeds the randomiser with this hue.
saturation:[0,1]
Seeds the randomiser with a given saturation
lightness:[0,1]
Seeds the randomiser with a value for the lightest color tone (0 being darkest, 1 being lightest).
darkest:[0,1]
Seeds the randomiser with a value for the darkest color tone (0 being darkest, 1 being lightest).
huevariance: [0,90]
Given a certain hue, specify the angle from the secondary colour to which the secondary and tertiary colours should be determined.
Note parameters can be discovered by viewing the ColorPaletteParameter slice within the generated ColorPalette.
!Code
***/
//{{{
(function($){
RGB.prototype.toRGBString = function() {
return "rgb(%0,%1,%2)".format([parseInt(this.r * 255, 10),
parseInt(this.g * 255, 10), parseInt(this.b * 255, 10)])
}
function HSL_TO_RGB(h, s, l){ // h (hue) between 0 and 360, s (saturation) & l (lightness) between 0 and 1
var c;
if(l <= 0.5) {
c = 2 * l * s;
} else {
c = ( 2 - (2 * l)) * s;
}
var h1 = h / 60;
var x = c * (1 - Math.abs((h1 % 2) - 1));
var r, g, b;
if(typeof(h) == 'undefined') {
r = 0;
g = 0;
b = 0;
} else if(0 <= h1 && h1 < 1) {
r = c;
g = x;
b = 0;
} else if(1 <= h1 && h1 < 2) {
r = x;
g = c;
b = 0;
} else if(2 <= h1 && h1 < 3) {
r = 0;
g = c;
b = x;
}
else if(3 <= h1 && h1 < 4) {
r = 0;
g = x;
b = c;
} else if(4 <= h1 && h1 < 5) {
r = x;
g = 0;
b = c;
} else if(5 <= h1 && h1 < 6) {
r = c;
g = 0;
b = x;
}
m = l - (0.5 * c);
r += m;
g += m;
b += m;
return new RGB(r, g, b);
}
var macro = config.macros.RandomColorPalette = {
messagesOn: false,
changedPaletteText: "We have assigned you a random theme by adjusting the [[ColorPalette]] tiddler.\nDon't like it? Click <<RandomColorPalette>> for another one.",
handler: function(place, macroName, params, wikifier, paramString, tiddler) {
paramString = paramString || "";
var options = paramString.parseParams("name", null, true, false, true)[0];
macro.generatePalette(options, true);
},
generateRandomNumber: function(min, max, info) {
var num = (Math.random() * 1);
if(!info) {
info = { attempts:0 };
}
info.attempts += 1;
var good = true;
if(min == max) return max;
if(min && num < min) {
good = false;
} else if(max && num > max) {
good = false;
}
if(!good) {
if(info.attempts < 5) {
return macro.generateRandomNumber(min, max, info);
} else {
if(max) {
return max;
} else if(min) {
return min;
} else {
return 1;
}
}
}
return num;
},
getExistingPalette: function(asJSON) {
var title = "ColorPalette";
var tiddlerText;
if(store.tiddlerExists(title)) {
tiddlerText = store.getTiddlerText(title);
} else if(store.isShadowTiddler(title)){
tiddlerText = config.shadowTiddlers[title];
}
if(asJSON) {
var json = {};
if(tiddlerText) {
var lines = tiddlerText.split("\n");
for(var i = 0; i < lines.length; i++) {
var definition = lines[i].split(":");
if(definition.length == 2) {
var name = definition[0].trim();
var value = definition[1].trim();
json[name] = value;
}
}
}
return json;
} else {
return tiddlerText;
}
},
generatePalette: function(options, save) {
var outputRGB = options.rgb && options.rgb[0];
var palette = macro.getExistingPalette(true);
var hue = options.hue ? parseInt(options.hue[0]) : Math.floor(Math.random() * 359);
var saturation = options.saturation ? parseFloat(options.saturation[0]) : macro.generateRandomNumber(0.3, 0.7);
var dark = options.darkest ? parseFloat(options.darkest[0]) : macro.generateRandomNumber(0, 0.1);
var pale = options.lightness ? parseFloat(options.lightness[0]) : macro.generateRandomNumber(0.6 + dark, 1);
var lightness_values = {Dark:dark, Mid:pale - ( ( pale - dark ) / 2 ),
Light:pale - ( ( pale - dark ) / 4 ), Pale:pale};
var opposite_hue = (hue + 180) % 360;
var seed = options.huevariance ? options.huevariance[0] : Math.floor((85 * Math.random()) + 5); // we want it to be at least 5 degrees
var huetwo = (opposite_hue + seed) % 360;
var huethree = (opposite_hue - seed) % 360;
if(huetwo < 0) {
huetwo = 360 + huetwo;
}
if(huethree < 0) {
huethree = 360 + huethree;
}
for(var j in lightness_values) {
if(true) {
palette["Primary" + j] = HSL_TO_RGB(hue, saturation, lightness_values[j]);
palette["Secondary" + j] = HSL_TO_RGB(huetwo, saturation, lightness_values[j]);
palette["Tertiary" + j] = HSL_TO_RGB(huethree, saturation, lightness_values[j]);
}
}
palette.Background = HSL_TO_RGB(hue, saturation, 0.92);
palette.Foreground = HSL_TO_RGB(hue, saturation, 0.08);
palette.ColorPaletteParameters = ["HSL([", hue, "|", seed, "], [", saturation, "],",
"[", dark, "|", pale, "])"].join("");
// construct new ColorPalette
var text = ["/*{{{*/\n"];
var colorcode;
for(var id in palette) {
if(true) {
var color = palette[id];
if(outputRGB) {
colorcode = color.toRGBString();
} else {
colorcode = color.toString();
}
text.push("%0: %1\n".format([id, colorcode]));
}
}
text.push("/*}}}*/");
text = text.join("");
if(save) {
macro.saveColorPalette(text);
}
return text;
},
saveColorPalette: function(text) {
var tid = store.getTiddler("ColorPalette");
if(!tid) {
tid = new Tiddler("ColorPalette");
tid.fields = merge({}, config.defaultCustomFields);
tid.modifier = "RandomColorPalette Macro";
} // TODO: detect that the ColorPalette in the space comes from outside recipe
tid.fields["server.page.revision"] = "false"; // edit conflicts dont matter
// save the color palette in tid
tid = store.saveTiddler(tid.title, tid.title, text, tid.modifier, tid.modified,
tid.tags, tid.fields, false, tid.created, tid.creator);
// an interval is used to cope with users clicking on the palette button quickly.
if(macro._nextSave) {
window.clearTimeout(macro._nextSave);
}
macro._nextSave = window.setTimeout(function() {
autoSaveChanges(null, [tid]);
}, 2000);
// temporary workaround for IE.
$.twStylesheet.remove({ id: "StyleSheetColors" });
$.twStylesheet.remove({ id: "StyleSheet" });
refreshAll();
macro.reportChange();
return tid;
},
reportChange: function() {
if(macro.messagesOn) { // only display message once..
var msgPlace = getMessageDiv();
if(!$(".changedPalette", msgPlace)[0]) {
var tempPlace = document.createElement("div");
wikify("{{changedPalette{" + macro.changedPaletteText + "}}}", tempPlace);
msgPlace.appendChild(tempPlace);
}
}
}
};
config.macros.RandomColorPaletteButton = {
text: "New ColorPalette",
tooltip: "Generate a random colour scheme for your TiddlyWiki",
handler: function(place, macroName, params, wikifier, paramString, tiddler) {
var btnHandler = function(ev) {
macro.handler(place, macroName, params, wikifier, paramString, tiddler);
return false;
};
createTiddlyButton(place, this.text, this.tooltip, btnHandler);
}
};
})(jQuery);
//}}}
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<tiddler TspotSidebar>><<switchTheme width:auto>><<RandomColorPaletteButton>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
Current theme:<<switchTheme width:auto>>
/***
|Name|SideBySide|
|Source|http://www.TiddlyTools.com/#Plain|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|CSS|
|Requires|ToolbarCommands|
|Description|default theme with side-by-side editor/preview display|
|StyleSheet|StyleSheet|
|PageTemplate|PageTemplate|
|EditTemplate|##EditTemplate|
|PageTemplateReadOnly|PageTemplateReadOnly|
|EditTemplateReadOnly|##EditTemplateReadOnly|
***/
!!!EditTemplate
<!--{{{-->
<span class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></span>
<div class='title' macro='view title'></div>
<div style='clear:both'></div>
<div class='editor' macro='edit title'></div>
<div macro='tiddler QuickEditToolbar'></div>
<div class='editor'>
<table style='width:100%'><tr style='vertical-align:top'>
<td style='width:50%'><span macro='edit text'></span></td>
<td style='width:50%'><span macro='preview text'></span></td>
</tr></table>
</div>
<span macro='resizeEditor'></span>
<div class='editor' macro='edit tags'></div>
<div class='toolbar editorFooter' style='text-align:left !important;float:left !important'>
<span macro='message views.editor.tagPrompt'></span>
<span macro='tagChooser'></span>
</div>
<div style='clear:both'></div>
<!--}}}-->
!!!!!end EditTemplate
!!!EditTemplateReadOnly
<!--{{{-->
<span class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbarReadOnly]]'></span>
<div class='title' macro='view title'></div>
<div style='clear:both'></div>
<div class='editor' macro='edit title'></div>
<div class='editor'>
<table style='width:100%'><tr style='vertical-align:top'>
<td style='width:50%'><span macro='edit text'></span></td>
<td style='width:50%'><span macro='preview text'></span></td>
</tr></table>
</div>
<span macro='resizeEditor'></span>
<div class='editor' macro='edit tags'></div>
<div class='toolbar editorFooter' style='text-align:left !important;float:left !important'>
<span macro='message views.editor.tagPrompt'></span>
<span macro='tagChooser'></span>
</div>
<div style='clear:both'></div>
<!--}}}-->
!!!!!end EditTemplateReadOnly
/***
|Name|StyleSheetAdjustments|
|Source|http://www.TiddlyTools.com/#StyleSheetAdjustments|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|CSS|
|Description|adjust TiddlyWiki default shadow stylesheets definitions|
***/
[[StyleSheetPlugins]] /* include adjustments to plugin-supplied definitions */
[[StyleSheetShortcuts]] /* include formatting "shortcut" definitions */
[[Jash.css]] /* Javascript Shell (jash) Styles */
/***
These 'style tweaks' can be easily included in other stylesheet tiddler so they can share a baseline look-and-feel that can then be customized to create a wide variety of 'flavors'.
/***
!body /%==================================================%/
IE needs explicit "position:static" declaration (fixes 'partial background display bug')
***/
/*{{{*/
body { font-family: Verdana,Arial,Helvetica; position:static; }
/*}}}*/
/***
!backstage /%==================================================%/
fix for bug #347/#349, wherein backstageCloak covers backstagePanel whenever fixed elements are present
***/
/*{{{*/
#backstageCloak { z-index:49; }
#backstagePanel { margin:0em 0.5em 0em 0.5em; }
#backstageButton a:hover
{background-color:transparent !important;}
/*}}}*/
/***
!common colors /%==================================================%/
***/
/*{{{*/
/* these seem to have been omitted from the core defaults for link styles */
a { color:#014; }
a:hover { color:#def; }
/*}}}*/
/***
!HTML forms /%==================================================%/
***/
/*{{{*/
/* eliminate whitespace before/after form controls */
form { margin:0;padding:0; }
/*}}}*/
/***
!basic styling /%==================================================%/
***/
/*{{{*/
/* reduce whitespace before/after horizontal rule */
hr { margin:2px 0 1px 0;padding:0; }
/*}}}*/
/***
!header and titles /%==================================================%/
IE needs explicit "position:static" declaration (fixes 'background display hides text bug')
***/
/*{{{*/
.header
{ background:transparent; padding:.2em 1em; position:static; margin-bottom:.5em; }
.headerShadow, .headerForeground
{ padding:.5em; }
.header a, .header .button, .header .tiddlyLinkExisting, .header .tiddlyLinkNonExisting
{ font-weight: normal; }
.header .externalLink,
.siteSubtitle a, .siteSubtitle .button, .siteSubtitle .tiddlyLinkExisting, .siteSubtitle .tiddlyLinkNonExisting
{ text-decoration:none; }
.header table
{ border-collapse: collapse !important; }
/*}}}*/
/***
!displayArea /%==================================================%/
***/
/*{{{*/
#displayArea
{ margin:0em 17em 0em 11em; }
/*}}}*/
/***
!popups /%==================================================%/
white-space:nowrap prevents items from wrapping if popup is near right edge of window
z-index:1000 makes sure popup is above EVERYTHING else
***/
/*{{{*/
.popup
{ white-space: nowrap; z-index:1000; color: #000; background: #ffe; border: 1px solid #000;
-moz-border-radius-topright: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px;
-webkit-border-top-right-radius: 5px; -webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; }
.popup a, .popup .button, .popup .tiddlyLinkExisting, .popup .tiddlyLinkNonExisting
{ font-weight: normal; font-style: normal; }
.popup hr
{ color: #000; background: #ddd; border: 0; }
.popup li.disabled
{ color: #999; }
.popup li a, .popup li a:visited
{ color: #300; padding:1px; }
.popup li a:hover
{ background: #006; color: #fff !important;}
/*}}}*/
/***
!messageArea /%==================================================%/
***/
/*{{{*/
#messageArea
{ font-size:90%; -moz-border-radius:1em;-webkit-border-radius:1em; background:#eee; }
/*}}}*/
/***
!main menu (left sidebar) /%==================================================%/
***/
/*{{{*/
#mainMenu
{ z-index:1; width:9em; text-align:left; margin:0; margin-left:1.5em; padding:0; clear:both; }
*[id="mainMenu"] /* moz browsers only */
{ width:auto !important; }
/*}}}*/
/***
!sidebar (right sidebar) /%==================================================%/
***/
/*{{{*/
#sidebar
{ width:18em; margin-right:1em; clear:both; }
#sidebarTabs .tab
{ font-size:90%; -moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em; }
#sidebarTabs .tabContents
{ background:transparent; border:1px solid #999; padding:.5em; height:auto; overflow:auto; width:92.5%; }
#sidebarTabs .tabContents .tabContents
{ background:transparent; border:1px solid #999; padding:.5em; height:auto; }
#sidebarOptions input[type="text"]
{ font-size:8pt; }
}
*/
/*}}}*/
/***
!tabs /%==================================================%/
***/
/*{{{*/
.tabset
{ padding: 0.2em 0 0 0; }
.tab
{ padding:0 1px 0 1px; }
.viewer .tab
{ padding:0 .5em 0 .5em; }
.tabSelected
{ border: 1px solid; border-bottom: 0px !important; margin-bottom:-2px !important;
-moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em;}
.tabUnselected
{ border: 1px solid #999; border-bottom:0px;
-moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em;}
.tabContents
{ border: 1px solid; -moz-border-radius:1em;-webkit-border-radius:1em; padding: 1em; }
/*}}}*/
/***
!tiddler display elements /%==================================================%/
***/
/*{{{*/
.tiddler { padding: 0 1em 1em 1em; }
.annotation {
border: 1px solid;
-moz-border-radius:.5em;
-webkit-border-radius:.5em;
margin: .5em 0;
padding: .2em .5em;
font-size:90%;
}
.button, .button:hover, .button:active,
.viewer .button, .viewer .button:hover, .viewer .button:active
{ background:transparent; border:0; }
.toolbar
{ float:right; display:inline; padding-bottom:0; visibility:hidden; }
.selected .toolbar
{ visibility:visible; }
.toolbar .floatingPanel
{ visibility:visible !important; } /* make sure floating panels from toolbars don't disappear on mouseout */
.toolbar .button, .toolbar a
{ border:1px solid transparent; background:transparent; margin:0px 1px; padding:0px .2em; -moz-border-radius:.5em;-webkit-border-radius:.5em; }
.toolbar
{color:[[ColorPalette::TertiaryLight]];}
.toolbar a
{color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar
{color:[[ColorPalette::Foreground]];}
.selected .toolbar, .selected .toolbar .button, .selected .toolbar a
{ color:#006; }
.toolbar .button:hover, .toolbar a:hover
{ border:1px solid #69c !important; background:#006 !important; color:#fff !important; }
.shadow .tagging, .shadow .tagged
{ display:none; }
.tagging, .tagged
{ background-color: #ccc; border: 1px solid; }
.selected .tagging, .selected .tagged
{ background-color:#eee; border: 1px solid #999; }
.tagging, .tagged
{ -moz-border-radius:1em;-webkit-border-radius:1em; }
.subtitle
{ font-size:90%; }
.shadow input, .shadow textarea, .shadow button, .shadow checkbox, .shadow radio, .shadow select
{ font-size:90%; }
.shadow input, .shadow textarea, .shadow button, .shadow checkbox, .shadow radio, .shadow select
{ font-size:90%; }
.editor input
{ font-size: 8pt;}
.editor textarea
{ font-size: 8pt; font-family:monospace; }
.editor select
{ font-size: 8pt; border:1px solid; }
.title
{ font-size: 12pt; line-height:120%; }
.viewer
{ font-size: 9pt; padding: 0.7em; text-align:justify; }
.viewer pre, .viewer code, .viewer blockquote
{ font-size:8pt; text-align:left; }
.viewer pre
{ background:#ffe; border:1px solid; }
.viewer table, .viewer table tr, .viewer table td
{ border:1px solid; }
.viewer hr {
margin: 1px; padding:1px;
border:0;
border-top: solid 1px #666;
color: #666;
}
.viewer blockquote {
line-height: 1.5em;
padding-left: 1em;
margin-left: 1em;
border-left: 1px dotted;
}
/*}}}*/
Current theme:<<switchTheme width:auto>>
/***
|Name|StyleSheetCaspian|
|Source|http://caspian.tiddlyspace.com/|
|Version|1.0.0|
|Author|@jon|
|License||
|Requires|<<tag StyleSheetCaspian>>|
|Description|Caspian systemTheme definition|
|StyleSheet|##StyleSheet|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|PageTemplateReadOnly|##PageTemplateReadOnly|
|ViewTemplateReadOnly|##ViewTemplateReadOnly|
|EditTemplateReadOnly|##EditTemplateReadOnly|
|ViewTemplateTS|##ViewTemplateTS|
|EditTemplateTS|##EditTemplateTS|
|PageTemplateTS|##PageTemplateTS|
|ViewTemplateTSReadOnly|##ViewTemplateTSReadOnly|
|EditTemplateTSReadOnly|##EditTemplateTSReadOnly|
|PageTemplateTSReadOnly|##PageTemplateTSReadOnly|
!StyleSheet
[[StyleSheetTiddler]]
[[StyleSheetTiddlySpace]]
/*{{{*/
.loggedInUser.readOnly #sidebar .tools .button {
margin-left: 0px;
margin-right: 16px;
}
.loggedInUser.readOnly #sidebar .tools .pushLeft.button {
margin-right: 0px;
}
@media all and (max-width: 960px) {
#header { width: 300px; }
#sidebar { display: none; }
.tiddler .modifierIcon img,
.tiddler .modifierIcon svg,
.tiddler .spaceSiteIcon .originButton img,
.originButton svg {
width: 32px;
height: 32px;
margin-left: 15px;
margin-right: 0px;
}
}
#backstageArea .button:active {
color: white;
background: #DB4;
border: 1px solid #841;
}
#backstageArea .button:hover {
color: #014;
background: #FE8;
border-color: #DB4;
}
#contentWrapper {
margin-left: 166px;
margin-right: 166px;
width: 845px;
}
#searchResults {
margin: auto;
background: white;
margin-bottom: 20px;
padding: 8px;
border-radius: 8px;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
}
body.readOnly,
body {
background-image: url(/BackgroundImage);
background-color: [[ColorPalette::PrimaryMid]] !important;
}
#contentWrapper {
width: 845px;
font-size: 0.8em;
}
#header {
margin-left: 12px;
color: white;
width: 845px;
margin-top: 30px;
margin-bottom: 30px;
letter-spacing: -1px;
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
font-size: 50px;
font-weight: bold;
height: 58px;
text-shadow: rgba(0, 0, 0, 0.496094) 1px 3px 5px;
}
/* content */
#content {
width: 520px;
float: left;
}
#content .tiddler {
border-top: none;
/*box-shadow: 1px 10px 10px [[ColorPalette::PrimaryLight]];*/
}
.tiddler .subtitle {
font-style: normal;
}
.tiddler .titleBar {
margin-left: 68px;
}
a.externalLink {
background: transparent url(/externalLink.png) no-repeat scroll 100% 45%;
padding-right: 1em;
}
.tiddler div.toolbar {
right: -6px;
}
#content .tiddler .heading {
left: -55px;
}
.tiddler.missing .spaceSiteIcon {
display: none;
}
.readOnly .tiddler .spaceSiteIcon,
.tiddler .spaceSiteIcon {
visibility: hidden;
}
.tiddler.selected .spaceSiteIcon {
visibility: visible;
}
.readOnly .tiddler.selected .spaceSiteIcon {
visibility: hidden;
}
#content .tiddler .spaceSiteIcon {
margin-right: 10px;
padding: 5px;
border-radius: 10px 0px 0px 10px;
o-border-radius: 10px 0px 0px 10px;
moz-border-radius: 10px 0px 0px 10px;
webkit-border-radius: 10px 0px 0px 10px;
}
#content .tiddler .editorHeading {
left: 0px;
}
#content .tiddler .modifierIcon {
right: -18px
}
#content .tiddler .heading,
#content .tiddler .content {
width: 490px;
}
.tiddler .viewer {
margin: 0px 0px 0px 10px;
}
#displayArea, #tiddlerDisplay {
margin:auto;
width: 500px;
}
.tagInfo {
border-left: none;
border-right: none;
margin-left: 0px;
}
/* side bar */
.anonymousUser #sidebar .tools .button.followMenuButton {
display: none;
}
#sidebar {
width: 250px;
float: right;
position: relative;
right: auto;
/*font-family: 'Lucida Sans', 'Lucida Grande', 'Lucida Sans Unicode', sans-serif;*/
}
.tabContents .timeline {
background: none;
}
#sidebar .avatar {
-webkit-box-shadow: #CCC 1px 4px 4px;
background-color: white;
left: -5px;
padding: 8px;
position: relative;
top: -24px;
width: 128px;
}
#sidebar .avatar .image {
display: block;
background-color: whiteSmoke;
}
.twSearch .searchButton {
display: none;
}
.twSearch .searchField {
width: 210px;
}
#sidebar .tools .button {
width: 91px;
height: 32px;
display: inline-block;
text-align: center;
vertical-align: middle;
margin-top: 6px;
line-height: 32px;
font-size: 12px;
color: white;
background-color: #408DAC !important;
font-weight: bold;
border: none;
border-radius: 5px;
margin-right: 0px;
margin-left: 16px;
margin-bottom: 6px;
}
#sidebar .tools .pushLeft.button,
#sidebar .tools .pushLeft .button{
margin-left: 0px;
}
.readOnly #sidebar .tools .button{
margin-left: 0px;
margin-right: 16px;
}
#sidebar .tools .button a {
color: white;
}
#sidebar .tools .button:hover {
opacity:0.8;
}
#sidebarCaspian {
padding-left: 20px;
padding-right: 20px;
width: 210px;
background-color: white;
border-radius: 10px;
-webkit-border-radius: 10px;
position: relative;
}
.twSearch input {
float: left;
}
/*}}}*/
!PageTemplate
<!--{{{-->
<div id='header' tiddler='SiteTitle' refresh='content'> </div>
<div id='content'>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
</div>
<div id='sidebar'>
<div id='sidebarCaspian' refresh='content' force='true' tiddler='Caspian##SideBar' class='viewer'></div>
</div>
<div class="clear"><div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
<div class='toolbar'
macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'>
</div>
<div class='heading'>
<span class="titleBar">
<div class='title' macro='view title text'></div>
<span class="subtitle" macro="view modified date"></span>
</span>
</span>
<div class='tagClear'></div>
</div>
<div class='content'>
<div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagInfo'>
[[ViewTemplateExtras]]
<div class='tidTags' macro='tags'></div>
<div class='tagging' macro='tagging'></div>
</div>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class='toolbar'
macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'>
</div>
<div class='heading editorHeading'>
<div class='editor title' macro='edit title'></div>
<div class='tagClear'></div>
</div>
<div class='annotationsBox' macro='annotations'></div>
<div class='tagClear'></div>
</div>
<div class='editor' macro='edit text'></div>
<div class='editorFooter'>
<div class='tagTitle'>tags</div>
<div class='editor' macro='edit tags'></div>
<div class='tagAnnotation'>
<span macro='message views.editor.tagPrompt'></span>
<span macro='tagChooser excludeLists'></span>
</div>
</div>
[[EditTemplateExtras]]
<!--}}}-->
!PageTemplateReadOnly
<!--{{{-->
[[PageTemplateReadOnly]]
<!--}}}-->
!ViewTemplateReadOnly
<!--{{{-->
[[ViewTemplate]]
<!--}}}-->
!EditTemplateReadOnly
<!--{{{-->
[[EditTemplateReadOnly]]
<!--}}}-->
!PageTemplateTS
<!--{{{-->
<div id='header' tiddler='SiteTitle' refresh='content'> </div>
<div id='content'>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
</div>
<div id='sidebar'>
<div id='sidebarCaspian' refresh='content' force='true' tiddler='CaspianTS##SideBar' class='viewer'></div>
</div>
<div class="clear"><div>
<!--}}}-->
!ViewTemplateTS
<!--{{{-->
<div class='toolbar'
macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'>
</div>
<div class='heading'>
<span class='spaceSiteIcon'
macro='tiddlerOrigin label:no spaceLink:yes height:24 width:24 preserveAspectRatio:yes'>
</span>
<span class="titleBar">
<div class='title' macro='view title text'></div>
<span class="subtitle" macro='viewRevisions page:5'>
<span macro='image clock.png'></span>
<span macro="view modified date"></span>
</span>
<div macro="view title replyLink"></div>
</span>
<span class='followPlaceHolder' macro='followTiddlers'></span>
<span class='modifierIcon'
macro='view modifier SiteIcon label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
</span>
<div class='tagClear'></div>
</div>
<div class='content'>
<div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagInfo'>
[[ViewTemplateExtras]]
<div class='tidTags' macro='tags'></div>
<div class='tagging' macro='tagging'></div>
</div>
<!--}}}-->
!EditTemplateTS
<!--{{{-->
<div class='toolbar'
macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'>
</div>
<div class='heading editorHeading'>
<div class='editor title' macro='edit title'></div>
<div class='tagClear'></div>
</div>
<div class='annotationsBox' macro='annotations'>
<div class='editSpaceSiteIcon'
macro='tiddlerOrigin height:16 width:16 label:no interactive:no'>
</div>
<div class="privacyEdit" macro='setPrivacy label:no interactive:no'></div>
<div class='tagClear'></div>
</div>
<div class='editor' macro='edit text'></div>
<div class='editorFooter'>
<div class='tagTitle'>tags</div>
<div class='editor' macro='edit tags'></div>
<div class='tagAnnotation'>
<span macro='message views.editor.tagPrompt'></span>
<span macro='tagChooser excludeLists'></span>
</div>
</div>
[[EditTemplateExtras]]
<!--}}}-->
***/
Current theme:<<switchTheme width:auto>>
/***
|Name|StyleSheetLottie|
|Source|http://lottie.tiddlyspace.com/|
|Version|1.0.0|
|Author|@jon|
|License||
|Requires|<<tag StyleSheetLottie>>|
|Description|Lottie systemTheme definition|
|StyleSheet|##StyleSheet|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|PageTemplateReadOnly|##PageTemplateReadOnly|
|ViewTemplateReadOnly|##ViewTemplateReadOnly|
|EditTemplateReadOnly|##EditTemplateReadOnly|
|ViewTemplateTS|##ViewTemplateTS|
|EditTemplateTS|##EditTemplateTS|
|ViewTemplateTSReadOnly|##ViewTemplateTSReadOnly|
|EditTemplateTSReadOnly|##EditTemplateTSReadOnly|
|PageTemplateTSReadOnly|##PageTemplateTSReadOnly|
!StyleSheet
[[StyleSheetTiddlySpace2]]
/*{{{*/
/* general */
.tiddlyLinkExisting, .siteTitle {
font-weight: normal;
}
body {
background-color: [[ColorPalette::PrimaryDark]];
font: normal normal normal 16px/1.6 'helvetica neue', helvetica, arial, sans-serif;
}
#contentWrapper {
margin: auto;
margin-top: 20px;
margin-bottom: 20px;
width: 600px;
background-color: white;
padding-top: 20px;
padding-left: 50px;
padding-right: 50px;
padding-bottom: 20px;
}
.tiddler,
.menu,
.siteTitle {
border-bottom: solid 1px #CCC;
}
.tiddler .listTitle {
display: none;
}
.tiddler .origin {
display: inline;
margin-right: 8px;
float: left;
}
.tiddler .titleBar {
margin-right: 0px;
}
.tiddler .origin,
.tiddler .titleBar,
.tiddler .viewer {
margin-left: 0px;
}
.tiddler .originButton {
display: inline;
}
.tiddler .followPlaceHolder {
bottom: 0px;
right: 16px;
top: auto;
}
/*header*/
.siteTitle {
font-family: Georgia, serif;
font-size: 50px;
}
.menu {
text-transform: uppercase;
font-size: 12px;
padding-bottom: 30px;
}
.siteTitle {
padding: 40px 0px;
text-align: center;
}
.menu .searchButton {
display: none;
}
.searchField {
float: right;
}
/*body*/
#tiddlerDisplay, #searchResults {
margin: 0px;
}
.tiddler {
border-top: none;
}
.tiddler .header {
line-height: 48px;
}
.tiddler,
#footer {
font-size: 12px;
}
.tiddler .tagInfo {
margin: 10px 0 0 0px;
padding: 10px 0px;
background: none;
border: none;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
.tagInfo ul {
padding-left: 0;
}
.tiddler .tidTags {
float: right;
margin-right: 6px;
}
.tiddler .tidTags a {
border: solid 1px #CCC;
border-radius: 8px;
background-color: white;
}
.tiddler .tagInfo a:hover {
border-color: red;
}
/*}}}*/
!PageTemplate
<!--{{{-->
<div id='header'>
<div class='menu'>
<span refresh='content' tiddler='MainMenu'></span>
<div macro='search'></div>
</div>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
</div>
<div id='body'>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
</div>
<div id='footer' refresh='content' tiddler='Footer'></div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
<div class='toolbar'
macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'></div>
<div class='heading'>
<div class="titleBar">
<div class='title' macro='view title text'></div>
</div>
<div class='tagInfo'>
<div class='tidTags' macro='tags'></div>
<div class='tagging' macro='tagging'></div>
</div>
<div class='tagClear'></div>
</div>
<div class='content'>
<div class='viewer' macro='view text wikified'></div>
</div>
<span class="subtitle" macro="view modified date"></span>
</span>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class='toolbar'
macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'>
</div>
<div class='heading editorHeading'>
<div class='editor title' macro='edit title'></div>
<div class='tagClear'></div>
</div>
<div class='annotationsBox' macro='annotations'></div>
<div class='tagClear'></div>
</div>
<div class='editor' macro='edit text'></div>
<div class='editorFooter'>
<div class='tagTitle'>tags</div>
<div class='editor' macro='edit tags'></div>
<div class='tagAnnotation'>
<span macro='message views.editor.tagPrompt'></span>
<span macro='tagChooser excludeLists'></span>
</div>
</div>
<!--}}}-->
!PageTemplateReadOnly
<!--{{{-->
[[PageTemplateReadOnly]]
<!--}}}-->
!ViewTemplateReadOnly
<!--{{{-->
[[ViewTemplate]]
<!--}}}-->
!EditTemplateReadOnly
<!--{{{-->
[[EditTemplateReadOnly]]
<!--}}}-->
!ViewTemplateTS
<!--{{{-->
<div class='toolbar'
macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'></div>
<div class='heading'>
<div class="titleBar">
<div class='title' macro='view title text'></div>
</div>
<div class='tagInfo'>
<ul class='origin'>
<li macro='tiddlerOrigin label:no spaceLink:yes height:16 width:16 preserveAspectRatio:yes'></li>
</ul>
<div class='tidTags' macro='tags'></div>
<div class='tagging' macro='tagging'></div>
</div>
<div class='modifierIcon'
macro='view modifier SiteIcon label:no spaceLink:yes height:48 width:48 preserveAspectRatio:yes'>
</div>
<div class='tagClear'></div>
</div>
<div class='content'>
<div class='viewer' macro='view text wikified'></div>
</div>
<span class="subtitle" macro='viewRevisions page:5'>
<span macro='image clock.png'></span>
<span macro="view modified date"></span>
</span>
<div macro="view title replyLink"></div>
<div class='followPlaceHolder' macro='followTiddlers'></div>
<!--}}}-->
!EditTemplateTS
<!--{{{-->
<div class='toolbar'
macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'>
</div>
<div class='heading editorHeading'>
<div class='editor title' macro='edit title'></div>
<div class='tagClear'></div>
</div>
<div class='annotationsBox' macro='annotations'>
<div class='editSpaceSiteIcon'
macro='tiddlerOrigin height:16 width:16 label:no interactive:no'>
</div>
<div class="privacyEdit" macro='setPrivacy label:no interactive:no'></div>
<div class='tagClear'></div>
</div>
<div class='editor' macro='edit text'></div>
<div class='editorFooter'>
<div class='tagTitle'>tags</div>
<div class='editor' macro='edit tags'></div>
<div class='tagAnnotation'>
<span macro='message views.editor.tagPrompt'></span>
<span macro='tagChooser excludeLists'></span>
</div>
</div>
<!--}}}-->
***/
/***
|Name|StyleSheetShortcuts|
|Source|http://www.TiddlyTools.com/#StyleSheetShortcuts|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|CSS|
|Description|'convenience' classes for common formatting, alignment, boxes, tables, etc.|
These 'style tweaks' can be easily included in other stylesheet tiddler so they can share a baseline look-and-feel that can then be customized to create a wide variety of 'flavors'.
***/
/*{{{*/
/* text alignments */
.left
{ display:block;text-align:left; }
.center
{ display:block;text-align:center; }
.center table
{ margin:auto !important; }
.right
{ display:block;text-align:right; }
.justify
{ display:block;text-align:justify; }
.indent
{ display:block;margin:0;padding:0;border:0;margin-left:2em; }
.floatleft
{ float:left; }
.floatright
{ float:right; }
.valignTop, .valignTop table, .valignTop tbody, .valignTop th, .valignTop tr, .valignTop td
{ vertical-align:top; }
.valignBottom, .valignBottom table, .valignBottom tbody, .valignBottom th, .valignBottom tr, .valignBottom td
{ vertical-align:bottom; }
.clear
{ clear:both; }
.wrap
{ white-space:normal; }
.nowrap
{ white-space:nowrap; }
.hidden
{ display:none; }
.show
{ display:inline !important; }
.span
{ display:span; }
.block
{ display:block; }
.relative
{ position:relative; }
.absolute
{ position:absolute; }
/* font sizes */
.big
{ font-size:14pt;line-height:120% }
.medium
{ font-size:12pt;line-height:120% }
.normal
{ font-size:9pt;line-height:120% }
.small
{ font-size:8pt;line-height:120% }
.fine
{ font-size:7pt;line-height:120% }
.tiny
{ font-size:6pt;line-height:120% }
.larger
{ font-size:120%; }
.smaller
{ font-size:80%; }
/* font styles */
.bold
{ font-weight:bold; }
.italic
{ font-style:italic; }
.underline
{ text-decoration:underline; }
/* plain list items (no bullets or indent) */
.nobullets li { list-style-type: none; margin-left:-2em; }
/* vertical tabsets - courtesy of Tobias Beer */
.vTabs .tabset {float:left;display:block;padding:0px;margin-top:.5em;min-width:20%;}
.vTabs .tabset .tab {display:block;text-align:right;padding:2px 3px 2px 7px; margin:0 1px 1px 0;}
.vTabs .tabContents {margin-left:20%;max-width:80%;padding:5px;}
.vTabs .tabContents .tabContents {border:none; background:transparent;}
/* multi-column tiddler content (not supported in Internet Explorer) */
.twocolumns { display:block;
-moz-column-count:2; -moz-column-gap:1em; -moz-column-width:50%; /* FireFox */
-webkit-column-count:2; -webkit-column-gap:1em; -webkit-column-width:50%; /* Safari */
column-count:2; column-gap:1em; column-width:50%; /* Opera */
}
.threecolumns { display:block;
-moz-column-count:3; -moz-column-gap:1em; -moz-column-width:33%; /* FireFox */
-webkit-column-count:3; -webkit-column-gap:1em; -webkit-column-width:33%; /* Safari */
column-count:3; column-gap:1em; column-width:33%; /* Opera */
}
.fourcolumns { display:block;
-moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%; /* FireFox */
-webkit-column-count:4; -webkit-column-gap:1em; -webkit-column-width:25%; /* Safari */
column-count:4; column-gap:1em; column-width:25%; /* Opera */
}
/* page breaks */
.breakbefore { page-break-before:always; }
.breakafter { page-break-before:always; }
/* show/hide browser-specific content for InternetExplorer vs. non-IE ("moz") browsers */
*[class="ieOnly"]
{ display:none; } /* hide in moz (uses CSS selector) */
* html .mozOnly, *:first-child+html .mozOnly
{ display: none; } /* hide in IE (uses IE6/IE7 CSS hacks) */
/* borderless tables */
.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody
{ border:0 !important; margin:0 !important; padding:0 !important; }
.widetable, .widetable table
{ width:100%; }
/* thumbnail images (fixed-sized scaled images) */
.thumbnail img { height:5em !important; }
/* stretchable images (auto-size to fit tiddler) */
.stretch img { width:95%; }
/* grouped content */
.outline
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; }
.menubox
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#fff; color:#000; }
.menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
{ color:#009 !important; }
.groupbox
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#ffe; color:#000; }
.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting
{ color:#009 !important; }
.groupbox code
{ color:#333 !important; }
.borderleft
{ margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }
.borderright
{ margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }
.borderbottom
{ margin:0;padding:1px 0;border:0;border-bottom:1px dotted; margin-bottom:1px; padding-bottom:1px; }
.bordertop
{ margin:0;padding:0;border:0;border-top:1px dotted; margin-top:1px; padding-top:1px; }
/* scrolled content */
.scrollbars { overflow:auto; }
.height10em { height:10em; }
.height15em { height:15em; }
.height20em { height:20em; }
.height25em { height:25em; }
.height30em { height:30em; }
.height35em { height:35em; }
.height40em { height:40em; }
/* compact form */
.smallform
{ white-space:nowrap; }
.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select
{ font-size:8pt; }
/* stretchable edit fields and textareas (auto-size to fit tiddler) */
.stretch input { width:99%; }
.stretch textarea { width:99%; }
/* compact input fields (limited to a few characters for entering percentages and other small values) */
.onechar input { width:1em; }
.twochar input { width:2em; }
.threechar input { width:3em; }
.fourchar input { width:4em; }
.fivechar input { width:5em; }
/* text colors */
.white { color:#fff !important }
.gray { color:#999 !important }
.black { color:#000 !important }
.red { color:#f66 !important }
.green { color:#0c0 !important }
.blue { color:#99f !important }
/* rollover highlighting */
.mouseover
{color:[[ColorPalette::TertiaryLight]] !important;}
.mouseover a
{color:[[ColorPalette::TertiaryLight]] !important;}
.selected .mouseover
{color:[[ColorPalette::Foreground]] !important;}
.selected .mouseover .button, .selected .mouseover a
{color:[[ColorPalette::PrimaryDark]] !important;}
/* rollover zoom text */
.zoomover
{ font-size:80% !important; }
.selected .zoomover
{ font-size:100% !important; }
/* [[ColorPalette]] text colors */
.Background { color:[[ColorPalette::Background]]; }
.Foreground { color:[[ColorPalette::Foreground]]; }
.PrimaryPale { color:[[ColorPalette::PrimaryPale]]; }
.PrimaryLight { color:[[ColorPalette::PrimaryLight]]; }
.PrimaryMid { color:[[ColorPalette::PrimaryMid]]; }
.PrimaryDark { color:[[ColorPalette::PrimaryDark]]; }
.SecondaryPale { color:[[ColorPalette::SecondaryPale]]; }
.SecondaryLight { color:[[ColorPalette::SecondaryLight]];}
.SecondaryMid { color:[[ColorPalette::SecondaryMid]]; }
.SecondaryDark { color:[[ColorPalette::SecondaryDark]]; }
.TertiaryPale { color:[[ColorPalette::TertiaryPale]]; }
.TertiaryLight { color:[[ColorPalette::TertiaryLight]]; }
.TertiaryMid { color:[[ColorPalette::TertiaryMid]]; }
.TertiaryDark { color:[[ColorPalette::TertiaryDark]]; }
.Error { color:[[ColorPalette::Error]]; }
/* [[ColorPalette]] background colors */
.BGBackground { background-color:[[ColorPalette::Background]]; }
.BGForeground { background-color:[[ColorPalette::Foreground]]; }
.BGPrimaryPale { background-color:[[ColorPalette::PrimaryPale]]; }
.BGPrimaryLight { background-color:[[ColorPalette::PrimaryLight]]; }
.BGPrimaryMid { background-color:[[ColorPalette::PrimaryMid]]; }
.BGPrimaryDark { background-color:[[ColorPalette::PrimaryDark]]; }
.BGSecondaryPale { background-color:[[ColorPalette::SecondaryPale]]; }
.BGSecondaryLight { background-color:[[ColorPalette::SecondaryLight]]; }
.BGSecondaryMid { background-color:[[ColorPalette::SecondaryMid]]; }
.BGSecondaryDark { background-color:[[ColorPalette::SecondaryDark]]; }
.BGTertiaryPale { background-color:[[ColorPalette::TertiaryPale]]; }
.BGTertiaryLight { background-color:[[ColorPalette::TertiaryLight]]; }
.BGTertiaryMid { background-color:[[ColorPalette::TertiaryMid]]; }
.BGTertiaryDark { background-color:[[ColorPalette::TertiaryDark]]; }
.BGError { background-color:[[ColorPalette::Error]]; }
/*}}}*/
/*{{{*/
.tiddler .originButton div {
display: inline-block;
}
.tiddler .spaceSiteIcon .siteIcon {
_display: inline; /* IE doesn't like inline-block */
}
.tiddler .originButton {
display: block;
}
.selected .tagging,
.selected .tagging:hover {
border: none;
background: none;
}
.tagging {
float: none;
background: none;
border: none;
}
.tagging li.listTitle {
margin-left: 0px;
}
.tagging li {
margin: 0 8px;
}
.tagging .tiddlyLink {
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-o-border-radius: 3px;
border-radius: 3px;
padding: 1px 2px;
line-height: 1.2em;
}
/* for following */
#popup .siteIcon {
float: left;
height: 25px;
}
.content {
width: 100%; /* IE */
font-size: 0.9em;
}
.editorHeading {
height: 48px;
}
.heading {
left: 0;
margin-bottom: 40px;
position: relative;
top: 32px;
}
.followButton a {
display: block;
margin-top: -20px;
}
.tiddler .followPlaceHolder {
display: block;
position: absolute;
top: 16px;
right: 64px;
_right: 138px; // add width of modifierIcon
}
.tiddler .followButton {
position: relative;
height: 24px;
text-align: left;
color: #fff;
background: [[ColorPalette::PrimaryMid]];
padding: 10px 0px 0px 10px;
width: 38px;
margin: -16px -8px 24px 0;
}
/* creates the larger triangle */
.followButton:before {
content: "\00a0";
display: block; /* reduce the damage in FF3.0 */
position: relative;
bottom: -20px;
right: 0;
width: 0;
height: 0;
border-width: 0 0 20px 20px;
border-style: solid;
border-color: transparent [[ColorPalette::PrimaryMid]];
}
.toolbar svg {
height: 16px;
width: 16px;
}
.toolbar svg .glyph {
fill: #ccc;
}
.toolbar a:hover .glyph {
fill: black;
}
.toolbar a:active .glyph {
fill: [[ColorPalette::Background]];
}
.originButton,
.followPlaceHolder,
.tiddler .subtitle {
cursor: pointer;
}
.editSpaceSiteIcon .originButton {
cursor: auto;
}
.tiddler .subtitle:hover {
font-weight: bold;
background: none;
}
.originButton img,
.originButton svg {
margin-left: 0px;
}
.modifierIcon {
position: absolute;
width: 74px;
top: 0px;
right: 0px;
_right: 74px; /* in IE6 positioning works incorrectly so use -width instead */
text-align: right;
}
.modifierIcon img,
.modifierIcon svg {
margin-right: 8px;
}
.tiddler .viewer {
padding-bottom: 16px;
margin: 0 0 0 56px;
line-height: 1.4em;
}
.viewer pre {
margin-left: 0;
}
.siteIcon .label {
color: [[ColorPalette::TertiaryDark]];
}
.tiddler .spaceSiteIcon {
float: left;
margin-right: 0;
margin-top: 0;
position: relative;
display: block;
}
.tiddler .titleBar {
display: block;
margin-right: 136px;
margin-left: 56px;
}
.followButton a {
color: [[ColorPalette::Background]];
}
.tiddler {
position: relative;
padding: 0;
margin-bottom: 3em;
border-top: 3px solid [[ColorPalette::PrimaryMid]];
background: #fff;
}
.tiddler .editor {
padding: 0px 8px;
}
.tiddler .heading .title {
position: relative;
display: block;
word-wrap: break-word;
font-size: 32px;
line-height: 32px;
}
.tiddler .heading .editor.title {
font-size: 1.7em;
line-height: normal;
}
.tiddler .headingClear {
clear: both;
}
.tiddler .subtitle {
font-style: italic;
font-size: 0.9em;
color: #a6a59e;
margin-top: 0;
}
.toolbar {
position: absolute;
padding: 0;
top: 8px;
right: -8px;
}
.toolbar .moreCommand.highlight {
background: none;
}
.tiddler .toolbar .button {
border: none;
display: inline;
padding: 0px;
margin-right: 16px;
}
.tiddler .toolbar a:hover {
background: none;
}
.tiddler .tagged .listTitle {
display: none;
}
.revButton {
float: right;
}
/*! EditTemplate specific*/
.tiddler .privacySettings {
text-align: center;
}
.tiddler .privacySettings .originButton {
display: inline;
}
.editSpaceSiteIcon, .privacyEdit {
float: left;
}
.editSpaceSiteIcon svg,
.editSpaceSiteIcon img,
.editSpaceSiteIcon .roundelLabel {
float: left;
}
.tagTitle {
position: absolute;
text-align: center;
width: 48px;
top: 0px;
left: -56px;
}
.editSpaceSiteIcon .originButton img,
.editSpaceSiteIcon .originButton svg {
height: 16px;
margin-left: 24px;
margin-right: 32px;
width: 16px;
}
.tagAnnotation {
margin-top: 8px;
padding-bottom: 8px;
}
.annotationsBox {
margin-top: 8px;
}
.editorFooter {
position: relative;
padding: 0;
margin-top: 16px;
margin-left: 64px;
}
.tiddler .editorFooter .editor {
padding-left: 0px;
}
.heading .editor input {
width: 100%;
font-size: 1.5em;
}
.spaceSiteIcon .externalImage .image a:hover,
.modifierIcon .externalImage .image a:hover {
background: none;
}
div.toolbar {
visibility:hidden;
right:-16px;
}
.selected div.toolbar {
visibility: visible;
}
.followButton a:hover {
background: [[ColorPalette::PrimaryMid]];
text-decoration: underline;
}
a.image:hover {
background: transparent;
}
@media all and (max-device-width: 480px) {
div.toolbar {
visibility:visible;
}
}
@media only screen and (device-width: 768px) {
div.toolbar {
visibility:visible;
}
}
@media all and (max-width: 960px) {
.tiddler .titleBar {
margin-left: 36px;
margin-right: 80px;
}
.tiddler .heading {
margin-bottom: 48px;
}
.tiddler .heading .title {
font-size: 32px;
line-height: 32px;
}
.tiddler .modifierIcon img,
.tiddler .modifierIcon svg,
.tiddler .spaceSiteIcon .originButton img,
.originButton svg {
width: 32px;
height: 32px;
margin-left: 0px;
margin-right: 0px;
}
.tiddler .followPlaceHolder {
right: 48px;
}
.tiddler .followButton {
width: 24px;
}
.tiddler .viewer {
margin: 0px 0px 0px 36px;
padding-top: 0;
}
br {
line-height: 0.5em;
}
}
/*}}}*/
/*{{{*/
body {
font-size: 1em;
font-family: helvetica, arial, sans-serif;
background-color: #fff;
color: [[ColorPalette::Foreground]];
}
body ul { margin: 0; }
#popup {
background-color: [[ColorPalette::TertiaryPale]];
}
#popup.confirmationPopup, .followList {
font-size: 0.8em;
padding: 1em;
border: solid 1px [[ColorPalette::SecondaryMid]];
background-color: [[ColorPalette::SecondaryPale]];
}
.followList .listTitle {
text-decoration: underline;
}
#popup .followTiddlersList a {
display: inline;
padding: 0;
}
#popup li a {
color: [[ColorPalette::PrimaryMid]];
font-weight: bold;
}
#popup li a:hover {
color: [[ColorPalette::PrimaryPale]];
background: [[ColorPalette::PrimaryMid]];
}
#popup li.listTitle {
border-bottom: 1px solid #000;
font-weight: bold;
margin-bottom: 10px;
}
#popup.followList {
margin-left: 50px;
margin-top: -30px;
}
.followTiddlersList .label {
display: block;
left: 10px;
top: 0px;
line-height: 16px;
position: relative;
}
#popup .followTiddlersList .siteIcon{
height: auto;
}
#popup .followTiddlersList li{
clear: both;
display: block;
height: 48px;
margin-bottom: 8px;
position: relative;
}
#popup .followTiddlersList a{
display: inline;
}
#displayArea {
margin: 0;
top: 0px;
left: 0px;
width: 100%;
position: relative;
}
.revisionCloak {
position: absolute;
position: fixed !important;
height: 100%;
width: 100%;
top: 0;
left: 0;
border: 0;
margin: 0;
padding: 0;
opacity: 0.5;
filter: alpha(opacity=50);
background-color: #000;
}
/* *** Header *** */
.header {
position: relative;
background-color: [[ColorPalette::PrimaryMid]];
_width: 100%; /* ie 6 demands */
}
.headerForeground {
background-color: [[ColorPalette::PrimaryMid]];
float: left;
margin: 24px 16px 0px 72px;
padding: 0;
position: relative;
top: 0;
_width: 70%; /*ie6: needed for the background to actually be transparent*/
_background-color: transparent; /*ie6: needed to show the search box*/
}
.clearFloat {
clear: both;
}
#contentWrapper {
position: relative;
padding-top: 1px;
top: -1px;
}
#tiddlerDisplay {
_position: relative; /* ie 6*/
}
.siteTitle {
clear: both;
display: block;
font-size: 32px;
font-weight: bold;
line-height: 32px;
}
.siteSubtitle {
display: block;
font-size: 14px;
height: 16px;
margin-bottom: 8px;
}
#sidebarSearch {
padding: 0;
position: absolute;
right: 80px;
top: 8px;
width: 176px;
}
#sidebarSearch .txtOptionInput {
width: 100%;
margin-top: 5px;
_color: #bbb; /* ie6 danger */
}
#sidebarSearch .txtOptionInput:focus {
color: #000;
}
#sidebarSearch .searchButton {
display: none;
}
/* *** Menu Bar *** */
#mainMenu {
position: static;
text-align: left;
margin-left: 72px;
float: left;
width: auto;
padding: 0;
font-size: 1em;
line-height: normal;
}
#mainMenu a {
color: #fff;
padding: 8px;
font-size: 0.9em;
margin-right: 16px;
}
#mainMenu a:hover {
background-color: [[ColorPalette::PrimaryMid]];
color: [[ColorPalette::Background]]
}
#sidebarOptions {
margin-right: 72px;
float: right;
font-size: 1.1em;
line-height: 1.6em;
min-height: 1em;
padding-top: 0;
}
#sidebarOptions a {
margin-right: 8px;
}
.confirmationPopup .button,
#sidebarOptions .button {
cursor: pointer;
line-height: 1.4em;
text-align: center;
margin-right: 8px;
margin-left:-2px;
}
.confirmationPopup .button {
font-size: 0.9em;
padding: 2px;
}
#sidebarOptions .button {
font-size: 0.7em;
float: left;
width: 80px;
padding: 0px;
color: #fff;
}
.confirmationPopup a.button,
#sidebarOptions a {
border: none;
margin: 0 0.2em;
padding: 0.6em 0.25em;
display: inline;
color: #666;
}
.confirmationPopup a.button:hover,
#sidebarOptions a:hover {
color: #000;
}
.confirmationPopup a.button:active,
#sidebarOptions a:active {
border: solid 1px [[ColorPalette::PrimaryMid]];
background-color: #fff;
background: -webkit-gradient( linear, left bottom, left top, color-stop(0.1,rgb(200,200,200)), color-stop(1, rgb(100,100,100)));
background: -moz-linear-gradient(center bottom , rgb(200,200,200) 10%,rgb(100,100,100) 100%) repeat scroll 0 0 transparent;
}
/* *** Sidebar *** */
#sidebar .wizard table {
margin: 0px;
}
.tabContents .listTitle:first-child {
margin-top: 0px;
}
#menuBar {
background: [[ColorPalette::PrimaryLight]];
left: 0;
right: 0;
position: relative;
margin: 0;
padding: 0.5em 0 0.5em 0;
min-height: 1em;
overflow: hidden;
_width: 100%; /* for ie 6 */
}
#sidebarOptions a.button:hover {
color: [[ColorPalette::PrimaryPale]];
background: [[ColorPalette::PrimaryMid]];
}
#tiddlerDisplay, #searchResults {
margin: 16px 448px 0 72px;
}
#sidebarTabs {
position: absolute;
right: 72px;
width: 352px;
top: 0;
}
#sidebarTabs .tabsetWrapper .tabset {
width: 87px;
border-top: 1px solid [[ColorPalette::PrimaryPale]];
border-left: 1px solid [[ColorPalette::PrimaryPale]];
border-bottom: 1px solid [[ColorPalette::PrimaryPale]];
height: auto;
float: left;
word-wrap: break-word;
top: 0;
padding: 0;
}
#sidebarTabs .tabsetWrapper .tabContents {
background-color: [[ColorPalette::PrimaryPale]];
border: 3px solid [[ColorPalette::PrimaryMid]];
width: 242px;
_width: 238px;
left: -3px;
_left: -5px;
position: relative;
min-height: 34em;
padding: 8px;
font-size: 0.8em;
}
/* ---- Side style --- */
#sidebarTabs .tabsetWrapper .tabset .tab {
font-size: 0.9em;
padding: 0.7em 8px 0.5em;
color: #fff;
background: [[ColorPalette::PrimaryLight]];
border: none;
line-height: 16px;
position: relative;
display: block;
margin: 0;
}
#sidebarTabs .tabsetWrapper .tabset .tabSelected {
color: [[ColorPalette::PrimaryMid]];
background: [[ColorPalette::PrimaryPale]];
border-top: 3px solid [[ColorPalette::PrimaryMid]];
border-bottom: 3px solid [[ColorPalette::PrimaryMid]];
border-left: 3px solid [[ColorPalette::PrimaryMid]];
z-index: 10;
margin-top: -1px;
font-weight: bold;
}
#sidebarTabs .tabContents li {
border: none;
margin-left: 0;
word-wrap: break-word;
}
.tabContents .timeline {
background: [[ColorPalette::PrimaryPale]];
margin-bottom: 8px;
}
#sidebarTabs .timeline li.listTitle {
color: #132E43;
margin-left: 8px 0;
padding: 0.3em 0.11em;
font-size: 1em;
border-bottom: none;
}
#sidebarTabs .tabContents li a {
display: block;
text-align: left;
margin: 0 0 1px 0;
padding: 0.3em 1em;
background: [[ColorPalette::PrimaryPale]];
}
#sidebarTabs .tabsetWrapper .tabset a:hover,
#sidebarTabs .tabContents li a:hover {
color: [[ColorPalette::PrimaryPale]];
background: [[ColorPalette::PrimaryMid]];
}
/* Activity Stream */
#sidebarTabs .tabContents .activityStream .feedItem a {
display: inline-block;
padding: 0;
background: none;
}
/* ---- Tagging box --- */
.tagInfo {
border: 1px solid #cccccc;
padding: 10px 15px;
-moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
box-shadow: 0 2px 2px rgba(0,0,0,0.2);
color: [[ColorPalette::TertiaryMid]];
background: -moz-linear-gradient(100% 100% 90deg, #f4f4f4, #e5e5e5);
background: -webkit-gradient(linear, left top, right top, from(#e5e5e5), to(#f4f4f4));
margin-top: 1em;
font-size: 13px;
margin: 0 0 0 56px;
}
.tagInfo ul {
list-style: none;
padding-left: 2.2em;
}
.tagInfo ul li {
display: inline;
}
.tagInfo ul li.listTitle,
.tagInfo .tagging ul li.listTitle {
color: [[ColorPalette::PrimaryMid]];
font-size: 13px;
}
.tagInfo ul li a {
border: none;
}
.tagInfo .tagging ul li {
float: none;
display: inline-block;
}
.tagInfo .tagging {
padding: 0;
}
.viewRevision .toolbar {
right: 48px;
top: 8px;
}
.viewRevision .modifierIcon img,
.viewRevision .modifierIcon svg {
margin-right: 8px;
}
.viewRevision .toolbar svg {
width: 32px;
height: 32px;
}
/* --- IE hacks from lattice --- */
/* ie hacks */
* html #menuBar {
margin-bottom: 8px;
}
.toolbar .svgIconText {
*display: inline;
}
div.tiddler .toolbar a {
cursor: pointer;
float: left\9;
display: inline\9;
}
* html .toolbar {
right: 8px;
}
* html .followButton a {
margin-top: 0px;
margin-right: 8px;
}
* html #tiddlerDisplay {
margin-top: 0px;
}
/* for printing purposes */
@media print {
#mainMenu,
#sidebar,
#messageArea,
.toolbar,
.followPlaceHolder,
#backstageButton,
#backstageArea,
#sidebarTabs,
#sidebarSearch .txtOptionInput,
#sidebarOptions {
display: none !important;
}
#displayArea {
margin: 1em 1em 0em;
}
noscript {
display:none; /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
#tiddlerDisplay {
margin: 16px 16px;
}
}
@media all and (max-width: 960px){
#tiddlerDisplay,
#searchResults {
margin: 16px 366px 0 16px;
}
#mainMenu {
margin-left: 16px;
}
.headerForeground {
margin-left: 16px;
}
#sidebarSearch {
right: 16px;
}
#sidebarOptions {
margin-right: 16px;
}
#sidebarTabs {
right: 16px;
width: 326px;
}
#sidebarTabs .tabsetWrapper .tabset {
font-size: 0.9em;
width: 77px;
}
#sidebarTabs .tabsetWrapper .tabContents {
width: 226px;
_width: 222px;
}
#sidebarTabs .tabContents li a {
font-size: 0.9em;
}
}
/*}}}*/
[[StyleSheetTiddler]]
[[StyleSheetCaspian]]
/*{{{*/
body {
font-size: 1em;
font-family: helvetica, arial, sans-serif;
background-color: #fff;
color: [[ColorPalette::Foreground]];
}
body ul { margin: 0; }
#popup {
background-color: [[ColorPalette::TertiaryPale]];
}
#popup.confirmationPopup, .followList {
font-size: 0.8em;
padding: 1em;
border: solid 1px [[ColorPalette::SecondaryMid]];
background-color: [[ColorPalette::SecondaryPale]];
}
.followList .listTitle {
text-decoration: underline;
}
#popup .followTiddlersList a {
display: inline;
padding: 0;
}
#popup li a {
color: [[ColorPalette::PrimaryMid]];
font-weight: bold;
}
#popup li a:hover {
color: [[ColorPalette::PrimaryPale]];
background: [[ColorPalette::PrimaryMid]];
}
#popup li.listTitle {
border-bottom: 1px solid #000;
font-weight: bold;
margin-bottom: 10px;
}
#popup.followList {
margin-left: 50px;
margin-top: -30px;
}
.followTiddlersList .label {
display: block;
left: 10px;
top: 0px;
line-height: 16px;
position: relative;
}
#popup .followTiddlersList .siteIcon{
height: auto;
}
#popup .followTiddlersList li{
clear: both;
display: block;
height: 48px;
margin-bottom: 8px;
position: relative;
}
#popup .followTiddlersList a{
display: inline;
}
#displayArea {
margin: 0;
top: 0px;
left: 0px;
width: 100%;
position: relative;
}
.revisionCloak {
position: absolute;
position: fixed !important;
height: 100%;
width: 100%;
top: 0;
left: 0;
border: 0;
margin: 0;
padding: 0;
opacity: 0.5;
filter: alpha(opacity=50);
background-color: #000;
}
/* *** Header *** */
.header {
position: relative;
background-color: [[ColorPalette::PrimaryMid]];
_width: 100%; /* ie 6 demands */
}
.headerForeground {
background-color: [[ColorPalette::PrimaryMid]];
float: left;
margin: 24px 16px 0px 72px;
padding: 0;
position: relative;
top: 0;
_width: 70%; /*ie6: needed for the background to actually be transparent*/
_background-color: transparent; /*ie6: needed to show the search box*/
}
.clearFloat {
clear: both;
}
#contentWrapper {
position: relative;
padding-top: 1px;
top: -1px;
}
#tiddlerDisplay {
_position: relative; /* ie 6*/
}
.siteTitle {
clear: both;
display: block;
font-size: 32px;
font-weight: bold;
line-height: 32px;
}
.siteSubtitle {
display: block;
font-size: 14px;
height: 16px;
margin-bottom: 8px;
}
#sidebarSearch {
padding: 0;
position: absolute;
right: 80px;
top: 8px;
width: 176px;
}
#sidebarSearch .txtOptionInput {
width: 100%;
margin-top: 5px;
_color: #bbb; /* ie6 danger */
}
#sidebarSearch .txtOptionInput:focus {
color: #000;
}
#sidebarSearch .searchButton {
display: none;
}
/* *** Menu Bar *** */
#mainMenu {
position: static;
text-align: left;
margin-left: 72px;
float: left;
width: auto;
padding: 0;
font-size: 1em;
line-height: normal;
}
#mainMenu a {
color: #fff;
padding: 8px;
font-size: 0.9em;
margin-right: 16px;
}
#mainMenu a:hover {
background-color: [[ColorPalette::PrimaryMid]];
color: [[ColorPalette::Background]]
}
#sidebarOptions {
margin-right: 72px;
float: right;
font-size: 1.1em;
line-height: 1.6em;
min-height: 1em;
padding-top: 0;
}
#sidebarOptions a {
margin-right: 8px;
}
.confirmationPopup .button,
#sidebarOptions .button {
cursor: pointer;
line-height: 1.4em;
text-align: center;
margin-right: 8px;
margin-left:-2px;
}
.confirmationPopup .button {
font-size: 0.9em;
padding: 2px;
}
#sidebarOptions .button {
font-size: 0.7em;
float: left;
width: 80px;
padding: 0px;
color: #fff;
}
.confirmationPopup a.button,
#sidebarOptions a {
border: none;
margin: 0 0.2em;
padding: 0.6em 0.25em;
display: inline;
color: #666;
}
.confirmationPopup a.button:hover,
#sidebarOptions a:hover {
color: #000;
}
.confirmationPopup a.button:active,
#sidebarOptions a:active {
border: solid 1px [[ColorPalette::PrimaryMid]];
background-color: #fff;
background: -webkit-gradient( linear, left bottom, left top, color-stop(0.1,rgb(200,200,200)), color-stop(1, rgb(100,100,100)));
background: -moz-linear-gradient(center bottom , rgb(200,200,200) 10%,rgb(100,100,100) 100%) repeat scroll 0 0 transparent;
}
/* *** Sidebar *** */
#sidebar .wizard table {
margin: 0px;
}
.tabContents .listTitle:first-child {
margin-top: 0px;
}
#menuBar {
background: [[ColorPalette::PrimaryLight]];
left: 0;
right: 0;
position: relative;
margin: 0;
padding: 0.5em 0 0.5em 0;
min-height: 1em;
overflow: hidden;
_width: 100%; /* for ie 6 */
}
#sidebarOptions a.button:hover {
color: [[ColorPalette::PrimaryPale]];
background: [[ColorPalette::PrimaryMid]];
}
#tiddlerDisplay, #searchResults {
margin: 16px 448px 0 72px;
}
#sidebarTabs {
position: absolute;
right: 72px;
width: 352px;
top: 0;
}
#sidebarTabs .tabsetWrapper .tabset {
width: 87px;
border-top: 1px solid [[ColorPalette::PrimaryPale]];
border-left: 1px solid [[ColorPalette::PrimaryPale]];
border-bottom: 1px solid [[ColorPalette::PrimaryPale]];
height: auto;
float: left;
word-wrap: break-word;
top: 0;
padding: 0;
}
#sidebarTabs .tabsetWrapper .tabContents {
background-color: [[ColorPalette::PrimaryPale]];
border: 3px solid [[ColorPalette::PrimaryMid]];
width: 242px;
_width: 238px;
left: -3px;
_left: -5px;
position: relative;
min-height: 34em;
padding: 8px;
font-size: 0.8em;
}
/* ---- Side style --- */
#sidebarTabs .tabsetWrapper .tabset .tab {
font-size: 0.9em;
padding: 0.7em 8px 0.5em;
color: #fff;
background: [[ColorPalette::PrimaryLight]];
border: none;
line-height: 16px;
position: relative;
display: block;
margin: 0;
}
#sidebarTabs .tabsetWrapper .tabset .tabSelected {
color: [[ColorPalette::PrimaryMid]];
background: [[ColorPalette::PrimaryPale]];
border-top: 3px solid [[ColorPalette::PrimaryMid]];
border-bottom: 3px solid [[ColorPalette::PrimaryMid]];
border-left: 3px solid [[ColorPalette::PrimaryMid]];
z-index: 10;
margin-top: -1px;
font-weight: bold;
}
#sidebarTabs .tabContents li {
border: none;
margin-left: 0;
word-wrap: break-word;
}
.tabContents .timeline {
background: [[ColorPalette::PrimaryPale]];
margin-bottom: 8px;
}
#sidebarTabs .timeline li.listTitle {
color: #132E43;
margin-left: 8px 0;
padding: 0.3em 0.11em;
font-size: 1em;
border-bottom: none;
}
#sidebarTabs .tabContents li a {
display: block;
text-align: left;
margin: 0 0 1px 0;
padding: 0.3em 1em;
background: [[ColorPalette::PrimaryPale]];
}
#sidebarTabs .tabsetWrapper .tabset a:hover,
#sidebarTabs .tabContents li a:hover {
color: [[ColorPalette::PrimaryPale]];
background: [[ColorPalette::PrimaryMid]];
}
/* Activity Stream */
#sidebarTabs .tabContents .activityStream .feedItem a {
display: inline-block;
padding: 0;
background: none;
}
/* ---- Tagging box --- */
.tagInfo {
border: 1px solid #cccccc;
padding: 10px 15px;
-moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
box-shadow: 0 2px 2px rgba(0,0,0,0.2);
color: [[ColorPalette::TertiaryMid]];
background: -moz-linear-gradient(100% 100% 90deg, #f4f4f4, #e5e5e5);
background: -webkit-gradient(linear, left top, right top, from(#e5e5e5), to(#f4f4f4));
margin-top: 1em;
font-size: 13px;
margin: 0 0 0 56px;
}
.tagInfo ul {
list-style: none;
padding-left: 2.2em;
}
.tagInfo ul li {
display: inline;
}
.tagInfo ul li.listTitle,
.tagInfo .tagging ul li.listTitle {
color: [[ColorPalette::PrimaryMid]];
font-size: 13px;
}
.tagInfo ul li a {
border: none;
}
.tagInfo .tagging ul li {
float: none;
display: inline-block;
}
.tagInfo .tagging {
padding: 0;
}
.viewRevision .toolbar {
right: 48px;
top: 8px;
}
.viewRevision .modifierIcon img,
.viewRevision .modifierIcon svg {
margin-right: 8px;
}
.viewRevision .toolbar svg {
width: 32px;
height: 32px;
}
/* --- IE hacks from lattice --- */
/* ie hacks */
* html #menuBar {
margin-bottom: 8px;
}
.toolbar .svgIconText {
*display: inline;
}
div.tiddler .toolbar a {
cursor: pointer;
float: left\9;
display: inline\9;
}
* html .toolbar {
right: 8px;
}
* html .followButton a {
margin-top: 0px;
margin-right: 8px;
}
* html #tiddlerDisplay {
margin-top: 0px;
}
/* for printing purposes */
@media print {
#mainMenu,
#sidebar,
#messageArea,
.toolbar,
.followPlaceHolder,
#backstageButton,
#backstageArea,
#sidebarTabs,
#sidebarSearch .txtOptionInput,
#sidebarOptions {
display: none !important;
}
#displayArea {
margin: 1em 1em 0em;
}
noscript {
display:none; /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
#tiddlerDisplay {
margin: 16px 16px;
}
}
@media all and (max-width: 960px){
#tiddlerDisplay,
#searchResults {
margin: 16px 366px 0 16px;
}
#mainMenu {
margin-left: 16px;
}
.headerForeground {
margin-left: 16px;
}
#sidebarSearch {
right: 16px;
}
#sidebarOptions {
margin-right: 16px;
}
#sidebarTabs {
right: 16px;
width: 326px;
}
#sidebarTabs .tabsetWrapper .tabset {
font-size: 0.9em;
width: 77px;
}
#sidebarTabs .tabsetWrapper .tabContents {
width: 226px;
_width: 222px;
}
#sidebarTabs .tabContents li a {
font-size: 0.9em;
}
}
/*}}}*/
[[StyleSheetTiddler]]
/***
|Name|SwitchThemePlugin|
|Source|http://www.TiddlyTools.com/#SwitchThemePlugin|
|Documentation|http://www.TiddlyTools.com/#SwitchThemePluginInfo|
|Version|5.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|plugin|
|Description|Select alternative TiddlyWiki template/stylesheet 'themes' from a droplist|
!!!!!Documentation
>see [[SwitchThemePluginInfo]]
!!!!!Configuration
<<<
Current theme:<<switchTheme width:auto>>
<<option chkRandomTheme>> select a random theme at startup
//Note: to prevent a given theme from being chosen at random, tag it with <<tag excludeTheme>>//
<<<
!!!!!Installation Note
>As of 4/13/2008, a "core patch" function that provides backward-compatibility with TW2.3.x has been split into a separate tiddler, [[SwitchThemePluginPatch]], to reduce installation overhead for //this// plugin. ''You should only install the patch tiddler when using this plugin in documents based on a core version prior to TW2.4.0''
!!!!!Revisions
<<<
2009.10.01 [5.4.1] changed 'noRandom' tag to 'excludeTheme' and recognize 'excludeLists' tag
| Please see [[SwitchThemePluginInfo]] for previous revision details |
2008.01.22 [5.0.0] Completely re-written and renamed from [[SelectStylesheetPlugin]] (now retired)
//history for retired SelectStylesheetPlugin omitted//
2005.07.20 [1.0.0] initial release (as SelectStylesheetPlugin)
<<<
!!!!!Code
***/
//{{{
version.extensions.SwitchThemePlugin= {major: 5, minor: 4, revision: 1, date: new Date(2009,10,1)};
config.macros.switchTheme = {
handler: function(place,macroName,params) {
setStylesheet(".switchTheme {width:100%;font-size:8pt;margin:0em}","switchThemePlugin");
if (params[0] && (params[0].substr(0,6)=="width:")) var width=(params.shift()).substr(6);
if (params[0] && (params[0].substr(0,6)=="label:")) var label=(params.shift()).substr(6);
if (params[0] && (params[0].substr(0,7)=="prompt:")) var prompt=(params.shift()).substr(7);
if (params[0] && params[0].trim().length) // create a link that sets a specific theme
createTiddlyButton(place,label?label:params[0],prompt?prompt:params[0],
function(){ config.macros.switchTheme.set(params[0]); return false;});
else { // create a select list of available themes
var theList=createTiddlyElement(place,"select",null,"switchTheme",null);
theList.size=1;
if (width) theList.style.width=width;
theList.onchange=function() { config.macros.switchTheme.set(this.value); return true; };
this.refresh(theList);
}
},
refresh: function(list) {
var indent = String.fromCharCode(160)+String.fromCharCode(160);
while(list.length > 0){list.options[0]=null;} // clear list
list.options[list.length] = new Option("select a theme:","",true,true);
list.options[list.length] = new Option(indent+"[default]","StyleSheet");
list.options[list.length] = new Option(indent+"[random]","*");
var themes=store.getTaggedTiddlers("systemTheme");
for (var i=0; i<themes.length; i++)
if (themes[i].title!="StyleSheet" && !themes[i].isTagged('excludeLists'))
list.options[list.length]=new Option(indent+themes[i].title,themes[i].title);
// show current selection
for (var t=0; t<list.options.length; t++)
if (list.options[t].value==config.options.txtTheme)
{ list.selectedIndex=t; break; }
},
set: function(theme) {
if (!theme||!theme.trim().length) return;
if (theme=="*") { // select a random theme (except themes with "excludeTheme")
var curr=config.options.txtTheme;
var themes=store.getTaggedTiddlers("systemTheme");
if (!themes.length) return false;
var which=Math.floor(Math.random()*themes.length);
while (themes[which].title==curr
||themes[which].tags.contains('excludeTheme','excludeLists'))
which=Math.floor(Math.random()*themes.length);
theme=themes[which].title;
}
// apply selected theme
story.switchTheme(theme);
// sync theme droplists
var elems=document.getElementsByTagName("select");
var lists=[]; for (var i=0; i<elems.length; i++)
if (hasClass(elems[i],"switchTheme")) lists.push(elems[i]);
for (var k=0; k<lists.length; k++)
for (var t=0; t<lists[k].options.length; t++)
if (lists[k].options[t].value==config.options.txtTheme)
{ lists[k].selectedIndex=t; break; }
return;
}
}
//}}}
// // option to select a random theme at startup (if enabled)
//{{{
if (config.options.chkRandomTheme===undefined)
config.options.chkRandomTheme=false;
if (config.options.chkRandomTheme)
config.macros.switchTheme.set("*");
//}}}
// // hijack switchTheme to add Check/Init/Reset code handlers
//{{{
if (Story.prototype.switchTheme_saved===undefined) { // only once
Story.prototype.switchTheme_saved=Story.prototype.switchTheme;
Story.prototype.switchTheme=function(t){
function run(t,s){
var f=store.getTiddlerText(store.getTiddlerSlice(t,s));
return f?eval('(function(){\n'+f+'\n})()'):false;
}
if (!startingUp && (run(config.options.txtTheme,'Reset')||run(t,'Check'))) return;
this.switchTheme_saved.apply(this,arguments);
run(t,'Init');
}
}
//}}}
/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.6.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|use alternative ViewTemplate/EditTemplate for specific tiddlers|
This plugin extends the core function, story.chooseTemplateForTiddler(), so that any given tiddler can be viewed and/or edited using alternatives to the standard tiddler templates.
!!!!!Documentation
>see [[TaggedTemplateTweakInfo]]
!!!!!Revisions
<<<
2009.09.02 [1.6.1] apply field-based template (if any) *before* tag-based template
| please see [[TaggedTemplateTweakInfo]] for previous revision details |
2007.06.11 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TaggedTemplateTweak= {major: 1, minor: 6, revision: 1, date: new Date(2009,9,2)};
if (!config.options.txtTemplateTweakFieldname)
config.options.txtTemplateTweakFieldname='template';
Story.prototype.taggedTemplate_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler
Story.prototype.chooseTemplateForTiddler = function(title,template)
{
// get core template and split into theme and template name
var coreTemplate=this.taggedTemplate_chooseTemplateForTiddler.apply(this,arguments);
var theme=""; var template=coreTemplate;
var parts=template.split(config.textPrimitives.sectionSeparator);
if (parts[1]) { theme=parts[0]; template=parts[1]; }
else theme=config.options.txtTheme||""; // if theme is not specified
theme+=config.textPrimitives.sectionSeparator;
// look for template using title as prefix
if (!store.getTaggedTiddlers(title).length) { // if tiddler is not a tag
if (store.getTiddlerText(theme+title+template))
{ return theme+title+template; } // theme##TitleTemplate
if (store.getTiddlerText(title+template))
{ return title+template; } // TitleTemplate
}
// look for templates using custom field value as prefix
var v=store.getValue(title,config.options.txtTemplateTweakFieldname);
if (store.getTiddlerText(theme+v+template))
{ return theme+v+template; } // theme##valueTemplate
if (store.getTiddlerText(v+template))
{ return v+template; } // valueTemplate
// look for template using tags as prefix
var tiddler=store.getTiddler(title);
if (!tiddler) return coreTemplate; // tiddler doesn't exist... use core result
for (i=0; i<tiddler.tags.length; i++) {
var t=tiddler.tags[i]+template; // add tag prefix to template
var c=t.substr(0,1).toUpperCase()+t.substr(1); // capitalized for WikiWord title
if (store.getTiddlerText(theme+t)) { return theme+t; } // theme##tagTemplate
if (store.getTiddlerText(theme+c)) { return theme+c; } // theme##TagTemplate
if (store.getTiddlerText(t)) { return t; } // tagTemplate
if (store.getTiddlerText(c)) { return c; } // TagTemplate
}
// no match... use core result
return coreTemplate;
}
//}}}
~ListFilter (testing GetValueSectionSliceTweak and TiddlyWikiListPlugin )
<<list filter [tag[project]] template:[[TemplateExample##1]] emptyMessage:"No tiddlers to list">>
/%
!1
<<view title link>>
<<view ##testsection wikified>>
**summary: <<view ::summary>>
**nonexisting results in: <<view ::noneexisting>>
!end
%/
/***
|Name|TextAreaPlugin|
|Source|http://www.TiddlyTools.com/#TextAreaPlugin|
|Documentation|http://www.TiddlyTools.com/#TextAreaPluginInfo|
|Version|2.2.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Adds Find/Again keyboard search, autosize, and 'stretch bar' resize for textarea controls|
!!!!!Documentation
>see [[TextAreaPluginInfo]]
!!!!!Configuration
<<<
<<option chkTextAreaExtensions>> use control-f (find), control-g (find again) inside text area
<<option chkDisableAutoSelect>> place cursor at start of textarea instead of pre-selecting content
<<option chkResizeEditor>> modify shadow EditTemplate to add resizeable text area (and autosize command)
<<<
!!!!!Revisions
<<<
2009.04.08 [2.2.1] added autosizeEditor macro to enable automatic autosizing without using toolbar command
2009.04.06 [2.2.0] added resizeListbox macro definition and adjusted dragbar width calculation.
|please see [[TextAreaPluginInfo]] for additional revision details|
2006.01.22 [1.0.0] Moved from temporary "System Tweaks" tiddler into 'real' TextAreaPlugin tiddler.
<<<
!!!!!Code
***/
//{{{
version.extensions.TextAreaPlugin= {major: 2, minor: 2, revision: 1, date: new Date(2009,4,8)};
if (config.options.chkTextAreaExtensions===undefined) config.options.chkTextAreaExtensions=true;
if (config.options.chkDisableAutoSelect===undefined) config.options.chkDisableAutoSelect=true;
if (config.options.chkResizeEditor===undefined) config.options.chkResizeEditor=true;
// automatically tweak shadow EditTemplate to add "autosizeEditor" toolbar command
if (config.options.chkResizeEditor)
config.shadowTiddlers.EditTemplate=config.shadowTiddlers.EditTemplate.replace(/deleteTiddler/,"deleteTiddler autosizeEditor");
// automatically tweak shadow EditTemplate to add "resizeEditor" macro
if (config.options.chkResizeEditor)
config.shadowTiddlers.EditTemplate+="<span macro='resizeEditor'></span>";
// Put focus in a specified tiddler field
Story.prototype.TextAreaExtensions_focusTiddler=Story.prototype.focusTiddler;
Story.prototype.focusTiddler = function(title,field)
{
this.TextAreaExtensions_focusTiddler.apply(this,arguments); // first call core
var e = this.getTiddlerField(title,field);
if (e && config.options.chkDisableAutoSelect) {
if (e.setSelectionRange) // FF
e.setSelectionRange(0,0);
else if (e.createTextRange) // IE
{ var r=e.createTextRange(); r.collapse(true); r.select(); }
}
if (e && config.options.chkTextAreaExtensions) addKeyDownHandlers(e);
}
//}}}
//{{{
function addKeyDownHandlers(e)
{
// exit if not textarea or element doesn't allow selections
if (e.tagName.toLowerCase()!="textarea"||!e.setSelectionRange||e.initialized) return;
// utility function: exits keydown handler and prevents browser from processing the keystroke
var processed=function(ev) {
ev.cancelBubble=true; // IE4+
try{event.keyCode=0;}catch(e){}; // IE5
if (window.event) ev.returnValue=false; // IE6
if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
if (ev.stopPropagation) ev.stopPropagation(); // all
return false;
}
// capture keydown in edit field
e.saved_onkeydown=e.onkeydown; // save current keydown handler (if any)
e.onkeydown=function(ev) { if (!ev) var ev=window.event;
var key=ev.keyCode;
if (!key) {
var char=event.which?event.which:event.charCode;
if (char==102) key=70;
if (char==103) key=71;
}
// process CTRL-F (find matching text) or CTRL-G (find next match)
if (ev.ctrlKey && (key==70||key==71)) {
// prompt for text to find
var defFind=e.findText?e.findText:e.value.substring(e.selectionStart,e.selectionEnd);
if (key==70||!e.findText||!e.findText.length) // ctrl-f or no saved search text
{ var f=prompt("find:", defFind); e.focus(); if (f) e.findText=f; }
if (!e.findText||!e.findText.length) return processed(ev); // if no search text, exit
// do case-insensitive match with 'wraparound'... if not found, alert and exit
var newstart=e.value.toLowerCase().indexOf(e.findText.toLowerCase(),e.selectionStart+1);
if (newstart==-1) newstart=e.value.toLowerCase().indexOf(e.findText.toLowerCase());
if (newstart==-1) { alert("'"+e.findText+"' not found"); e.focus(); return processed(ev); }
// set new selection, scroll it into view, and report line position in status bar
e.setSelectionRange(newstart,newstart+e.findText.length);
var linecount=e.value.split('\n').length;
var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
window.status="line: "+thisline+"/"+linecount;
return processed(ev);
}
if (e.saved_onkeydown) // call previous keydown handler (if any)
e.saved_onkeydown(ev);
}
e.initialized=true;
}
//}}}
// // 'autosize' toolbar command
//{{{
config.commands.autosizeEditor = {
text: 'autosize',
tooltip: 'automatically adjust the editor height to fit the contents',
text_alt: '\u221Aautosize',
hideReadOnly: false,
handler: function(event,src,title) {
var here=story.findContainingTiddler(src); if (!here) return;
var ta=here.getElementsByTagName('textarea'); if (!ta) return;
for (i=0;i<ta.length;i++) {
// only autosize textareas actually used to edit tiddler fields
if (ta[i].getAttribute("edit")==undefined) continue;
ta[i].button=src;
if (!ta[i].maxed)
config.commands.autosizeEditor.on(ta[i]);
else
config.commands.autosizeEditor.off(ta[i],true);
}
return false;
},
on: function(e) {
if (e.maxed) return; // already autosizing!
if (e.savedheight==undefined)
e.savedheight=e.style.height;
if (e.savedkeyup==undefined) {
e.savedkeyup=e.onkeyup;
e.onkeyup=function(ev) {
if (!ev) var ev=window.event; var e=resolveTarget(ev);
e.style.height=e.scrollHeight+'px';
if (e.savedkeyup) e.savedkeyup();
}
}
// IE reports error: "not implemented" for onkeypress
if (!config.browser.isIE && e.savedkeypress==undefined) {
e.savedkeypress=e.onkeypress;
e.onkeypress=function(ev) {
if (!ev) var ev=window.event; var e=resolveTarget(ev);
if (ev.keyCode==33) { // PGUP
if (window.scrollByPages) window.scrollByPages(-1);
return false;
}
if (ev.keyCode==34) { // PGDN
if (window.scrollByPages) window.scrollByPages(1);
return false;
}
if (e.savedkeypress) e.savedkeypress();
}
}
e.style.height=e.scrollHeight+'px';
if (e.button) e.button.innerHTML=config.commands.autosizeEditor.text_alt;
e.maxed=true;
},
off: function(e,resetHeight) {
if (resetHeight) e.style.height=e.savedheight;
e.onkeyup=e.savedkeyup;
// IE reports error: "not implemented" for onkeypress
if (!config.browser.isIE) e.onkeypress=e.savedkeypress;
if (e.button) e.button.innerHTML=config.commands.autosizeEditor.text;
e.maxed=false;
}
};
config.macros.autosizeEditor={
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var here=story.findContainingTiddler(place); if (!here) return;
var ta=here.getElementsByTagName('textarea'); if (!ta) return;
for (i=0;i<ta.length;i++) {
// only autosize textareas actually used to edit tiddler fields
if (ta[i].getAttribute("edit")==undefined) continue;
config.commands.autosizeEditor.on(ta[i]);
}
return false;
}
}
//}}}
// // grab-and-stretch handle
//{{{
config.macros.resizeEditor = { // add stretch bar to editor textarea
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var here=story.findContainingTiddler(place); if (!here) return;
var ta=here.getElementsByTagName('textarea');
if (ta) for (i=0;i<ta.length;i++) {
// only resize tiddler editor textareas
if (ta[i].getAttribute("edit")==undefined) continue;
new window.TextAreaResizer(ta[i]);
}
}
}
config.macros.resizeTiddler = { // add stretch bar to tiddler viewer element
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var here=story.findContainingTiddler(place); if (!here) return;
var elems=here.getElementsByTagName('div');
if (elems) for (i=0;i<elems.length;i++) if (hasClass(elems[i],'viewer')) break;
if (i<elems.length) new window.TextAreaResizer(elems[i]);
}
}
config.macros.resizeFrame = { // add stretch bar to iframes
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var here=story.findContainingTiddler(place); if (!here) return;
var fr=here.getElementsByTagName('iframe');
if (fr) for (i=0;i<fr.length;i++) new window.TextAreaResizer(fr[i]);
}
}
config.macros.resizeListbox = { // add stretch bar to listbox controls
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var here=story.findContainingTiddler(place); if (!here) here=place;
var fr=here.getElementsByTagName('select');
if (fr) for (i=0;i<fr.length;i++) new window.TextAreaResizer(fr[i]);
}
}
// TextAreaResizer script by Jason Johnston (jj@lojjic.net)
// Created August 2003. Use freely, but give me credit.
// adds a handle below textareas that the user can drag with the mouse to resize the textarea.
// MODIFIED by ELS for use with TW
window.TextAreaResizer = function(elt) {
this.element = elt;
this.create();
}
window.TextAreaResizer.prototype = {
create : function() {
var elt = this.element;
var thisRef = this;
var h = this.handle = document.createElement("div");
h.style.height = "3px"; // was 4px... looked too fat!
h.style.overflow = "hidden"; // ELS: force IE to trim height to < 1em
var adjust=elt.nodeName=='textarea'?4:0; // 4 pixels for textarea border edge
// h.style.width=(elt.offsetWidth-adjust)+"px";
h.style.width="auto";
h.style.backgroundColor = "#999"; // ELS: standard mid-tone (dark) gray
h.style.cursor = "s-resize";
h.title = "Drag to resize text box";
h.onmousedown=function(evt){thisRef.dragStart(evt)};
elt.parentNode.insertBefore(h, elt.nextSibling);
},
dragStart : function(evt) {
if (!evt) var evt=window.event;
this.dragStop(evt); // ELS: stop any current drag processing first
var thisRef = this;
this.dragStartY = evt.clientY;
this.dragStartH = this.element.offsetHeight;
document.savedmousemove=document.onmousemove;
document.onmousemove=this.dragMoveHdlr=function(evt){thisRef.dragMove(evt)};
document.savedmouseup=document.onmouseup;
document.onmouseup=this.dragStopHdlr=function(evt){thisRef.dragStop(evt)};
},
dragMove : function(evt) {
if (!evt) var evt=window.event;
// ELS: make sure height is at least 10px
var h=this.dragStartH+evt.clientY-this.dragStartY;
if (h<10) h=10; this.element.style.height=h+"px";
// ELS: match handle to textarea width (which may have changed due to document scrollbars)
// var adjust=this.element.nodeName.toLowerCase()=='textarea'?4:0; // 4 pixels for textarea
// this.handle.style.width=(this.element.offsetWidth-adjust)+"px";
// ELS: when manually resizing, disable autoresizing (without restoring saved height)
if (this.element.maxed!=undefined && this.element.maxed)
config.commands.autosizeEditor.off(this.element,false);
},
dragStop : function(evt) {
if (!evt) var evt=window.event;
document.onmousemove=(document.savedmousemove!=undefined)?document.savedmousemove:null;
document.onmousemove=(document.savedmouseup!=undefined)?document.savedmouseup:null;
},
destroy : function() {
var elt = this.element;
elt.parentNode.removeChild(this.handle);
elt.style.height = "";
}
};
//}}}
Current theme:<<switchTheme width:auto>>
/***
|Name|TiddlySlidy|
|Source|http://tiddlyslidy.com|
|Version|1.0.0|
|Author|Psd|
|License||
|Requires|<<tag TiddlySlidy>>|
|Description|TiddlySlidy systemTheme definition|
|StyleSheet|##StyleSheet|
|PageTemplate|AuthorMode##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|PageTemplateReadOnly|##PageTemplateReadOnly|
|ViewTemplateReadOnly|##ViewTemplateReadOnly|
|EditTemplateReadOnly|##EditTemplateReadOnly|
!StyleSheet
/*{{{*/
html, body {
padding: 0;
margin:0;
font-family: Helvetica Neue, Arial, Helvetica, sans-serif;
color: [[ColorPalette::PrimaryLight]];
background-color: [[ColorPalette::SecondaryPale]];
}
#header {
height: 4em;
padding: 1.5em 2em 1.5em 2.6em;
background-color: [[ColorPalette::PrimaryPale]];
border: 2px solid [[ColorPalette::SecondaryLight]];
}
#contentWrapper {
background-color: [[ColorPalette::SecondaryPale]];
}
a#backstageShow {
color: [[ColorPalette::PrimaryPale]];
}
#header .siteTitle {
font-family: Georgia, serif;
font-size: 3em;
padding: 0em;
margin: 0em;
}
#header .modeTitle {
font-size: 1.4em;
margin-top: 0.5em;
}
#header .modeSwitch {
float:right;
margin-top: -2.5em;
margin-bottom: 1em;
height: 3em;
}
#displayArea {
margin: 1em auto 1em auto;
width: 50%;
}
#presentation {
border: none;
background-color: [[ColorPalette::SecondaryPale]];
margin: 0 auto 0 0;
}
#tiddlerDisplay {
margin: auto;
width: 100%;
height: 100%;
background-color: [[ColorPalette::Background]];
border: none;
width: 640px;
min-height: 460px;
}
#footer {
height: 4em;
padding: 0 2em 1em 2em;
background-color: [[ColorPalette::SecondaryPale]];
border: none;
}
#slide {
border: 2px solid [[ColorPalette::SecondaryLight]];
background-color: [[ColorPalette::Background]];
margin: 1em auto;
width: 640px;
height: 460px;
_height: auto;
overflow: hidden;
}
#thumbnail {
margin: 1em;
border: 2px solid [[ColorPalette::PrimaryMid]];
}
#contentWrapper .themeButton,
#contentWrapper .button {
width: 5em;
text-align: center;
letter-spacing: 1px;
line-height: 2em;
padding: 0.3em 2em 0.3em 2em;
margin: 2em 1em 0em 1em;
background-color: [[ColorPalette::Background]];
background: [[ColorPalette::SecondaryLight]] url(images/bg-button.gif);
border: 1px solid [[ColorPalette::PrimaryLight]];
color: [[ColorPalette::PrimaryMid]];
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-webkit-box-shadow: 2px 2px 3px rgba(135, 139, 144, 0.4);
-moz-box-shadow: 2px 2px 3px rgba(135, 139, 144, 0.4);
box-shadow: 2px 2px 3px rgba(135, 139, 144, 0.4);
}
#contentWrapper .themeButton:hover,
#contentWrapper .themeButton:active,
#contentWrapper .button:hover,
#contentWrapper .button:active
{
background: [[ColorPalette::SecondaryLight]] url(images/bg-button.gif);
background-position:0 -400px;
border: 1px solid [[ColorPalette::PrimaryMid]];
color: [[ColorPalette::PrimaryMid]];
outline: none;
}
#contentWrapper .themeButton.selected:hover,
#contentWrapper .themeButton.selected:active,
#contentWrapper .themeButton.selected {
cursor: default;
border: 1px solid [[ColorPalette::PrimaryLight]];
color: [[ColorPalette::Background]];
background: -webkit-gradient(linear, left top, left bottom, color-stop(0.0, [[ColorPalette::SelectedLight]]), color-stop(1.0, [[ColorPalette::SelectedDark]]));
background: -moz-linear-gradient(top, [[ColorPalette::SelectedLight]] 0%, [[ColorPalette::SelectedDark]] 100%);
background-color: [[ColorPalette::SelectedDark]];
}
#mainMenu {
width: 100%;
position: relative;
margin: 0;
padding: 0;
}
#mainMenu ul {
margin: 0;
padding: 0;
list-style: none;
}
#mainMenu li {
text-align: right;
display: block;
width: 80%;
border: 2px solid [[ColorPalette::PrimaryPale]];
background-color: [[ColorPalette::Background]];
margin-bottom: 0.2em;
padding: 0 2em 0 0;
}
#mainMenu li a {
color: [[ColorPalette::SecondaryMid]];
display: block;
padding-right: 1em;
width: 90%;
}
#mainMenu li a.selected,
#mainMenu li a:hover,
#mainMenu li a.selected:active {
color: [[ColorPalette::Background]];
background-color: [[ColorPalette::SecondaryMid]];
}
h2 {
border: none;
color: [[ColorPalette::TertiaryMid]];
font-size: 2em;
font-weight: normal;
padding-bottom: 0.5em;
margin: 0;
}
.toolbar {
float: right;
padding: 1em 0;
font-size: 1.2em;
}
.toolbarOptions {
padding: 1em 0;
}
/* TBD: refactor */
.toolbarOptions select {
margin-right: 2em;
}
.button {
-moz-border-radius: 4px;
}
#presentation .toolbar,
#presentation .toolbarOptions,
#presentation h2.preview {
display: none;
}
.tiddler,
.viewSlide {
height: 97%;
overflow: hidden;
}
table.twtable {
width: 100%;
border-top: 1px solid [[ColorPalette::PrimaryLight]];
border-bottom: 1px solid [[ColorPalette::PrimaryLight]];
border-left: none;
border-right: none;
margin-left: 0mm;
font-size: 0.5em;
line-height: 1.5em;
}
.wizard table.twtable {
font-size: 1.5em;
}
.twtable th {
background-color: [[ColorPalette::PrimaryDark]];
font-weight: normal;
}
.twtable th,
.twtable tr,
.twtable td {
border: none;
}
.twtable .evenRow {
background-color: [[ColorPalette::PrimaryPale]];
}
.twtable .oddRow {
background-color: [[ColorPalette::SecondaryPale]];
}
[[GrowlStyle]]
[[ControlPanelStyle]]
.editor {
font-size: 1.5em;
padding-top: 0.2em;
padding-bottom: 1em;
}
.editor input,
.editor textarea {
border: 2px solid [[ColorPalette::PrimaryPale]];
}
.editSlide {
padding: 0 1em;
}
#fullframe {
background-color: #000;
}
#fullframe .preview,
#fullframe .toolbar,
#fullframe .toolbarOptions {
display: none;
}
#messageArea a.button {
border: 0;
background: none;
padding-left: 0;
margin-left: 0;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
/*}}}*/
!PageTemplate
<!--{{{-->
<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='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='viewer' macro='view text wikified'></div>
<div macro='tiddler CloseOtherTiddlers'></div>
<div class='tagClear'></div>
[[ViewToolbar]]
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div><div macro='annotations'></div>
<div class="label">Master</div><div class="master editor" macro="edit theme"></div>
<div macro='message views.editor.tagPrompt'></div>
<div class='editor' macro='edit tags'></div>
<div class='editor' macro='edit text'></div>
[[EditToolbar]]
<!--}}}-->
!PageTemplateReadOnly
<!--{{{-->
[[PageTemplateReadOnly]]
<!--}}}-->
!ViewTemplateReadOnly
<!--{{{-->
[[ViewTemplate]]
<!--}}}-->
!EditTemplateReadOnly
<!--{{{-->
[[EditTemplateReadOnly]]
<!--}}}-->
***/
Background: #fff
Foreground: #000
PrimaryPale: #e8e8e8
PrimaryLight: #747474
PrimaryMid: #333
PrimaryDark: #111
SecondaryPale: #f8f8f8
SecondaryLight: #dddddd
SecondaryMid: #5B6D6E
SecondaryDark: #000
TertiaryPale: #e8e8e8
TertiaryLight: #dddddd
TertiaryMid: #404040
TertiaryDark: #000
Error: #faa
SelectedPale: #dafaff
SelectedLight: #459BF9
SelectedDark: #07f
TiddlySlidyLight: #50a0fc
TiddlySlidyMid: #2d00ff
TiddlySlidyDark: #0069dd
/***
|''Name''|TiddlyWikiListPlugin|
|''Description''|A more powerful generic version of TiddlyWiki's timeline and list macros|
|''Author''|Jon Robson|
|''Version''|0.6.0|
!Usage
{{{<<list filter [tag[foo]] template:Bar emptyMessage:"No tiddlers to list">>}}}
{{{<<timeline filter:[tag[foo]]>>}}} only show those tiddlers tagged foo in the timeline.
{{{<<timeline template:Foo>>}}} use a template tiddler Foo to render each item in the timeline. For example Foo might contain
{{{
<<view title link>>
}}}
***/
//{{{
(function($) {
var macro = config.macros.timeline;
merge(macro, {
handler: function(place,macroName,params, wikifier, paramString, tiddler) {
var container = $("<div />").attr("params", paramString).
attr("macroName", macroName).appendTo(place)[0];
macro.refresh(container);
},
refresh: function(container) {
$(container).attr("refresh", "macro").empty();
var paramString = $(container).attr("params");
var args = paramString.parseParams("anon", null, null)[0];
var params = args.anon || [];
var field = params[0] || "modified";
var dateFormat = params[2] || this.dateFormat;
var groupTemplate = macro.groupTemplate.format(field, dateFormat);
groupTemplate = args.groupTemplate ? store.getTiddlerText(args.groupTemplate[0]) || groupTemplate :
groupTemplate;
var itemTemplate = macro.itemTemplate;
itemTemplate = args.template ? store.getTiddlerText(args.template[0]) || itemTemplate :
itemTemplate;
var tiddlers = args.filter ? store.sortTiddlers(store.filterTiddlers(args.filter[0]), field) :
store.reverseLookup("tags", "excludeLists", false, field);
var lastGroup = "";
var last = params[1] ? tiddlers.length-Math.min(tiddlers.length,parseInt(params[1])) : 0;
for(var t=tiddlers.length-1; t>=last; t--) {
var tiddler = tiddlers[t];
var theGroup = wikifyPlainText(groupTemplate,0,tiddler);
if(theGroup != lastGroup) {
var ul = document.createElement("ul");
addClass(ul,"timeline");
container.appendChild(ul);
createTiddlyElement(ul,"li",null,"listTitle",theGroup);
lastGroup = theGroup;
}
var item = createTiddlyElement(ul,"li",null,"listLink");
wikify(itemTemplate,item,null,tiddler);
}
},
groupTemplate: "<<view %0 date '%1'>>",
itemTemplate: "<<view title link>>"
});
config.macros.newtimeline = config.macros.timeline;
config.macros.list.template = "<<view title link>>";
config.macros.list.handler = function(place,macroName,params,wikifier,paramString)
{
var args = paramString.parseParams("anon", null, null)[0];
var type = args.anon ? args.anon[0] : "all";
var template = args.template ? store.getTiddlerText(args.template[0]) : false;
if(!template) {
template = config.macros.list.template;
}
var list = document.createElement("ul");
place.appendChild(list);
if(this[type].prompt)
createTiddlyElement(list,"li",null,"listTitle",this[type].prompt);
var results;
if(this[type].handler)
results = this[type].handler(params);
for(var t = 0; t < results.length; t++) {
var li = document.createElement("li");
list.appendChild(li);
var tiddler = results[t];
if(typeof(tiddler) == 'string') { // deal with missing etc..
tiddler = store.getTiddler(tiddler) || new Tiddler(tiddler);
}
wikify(template, li, null, tiddler);
}
if(results.length === 0 && args.emptyMessage) {
$(list).addClass("emptyList");
$("<li />").text(args.emptyMessage[0]).appendTo(list);
}
};
config.macros.list.filter.handler = function(params)
{
var filter = params[1];
var results = [];
if(filter) {
var tiddlers = store.filterTiddlers(filter);
for(var t=0; t<tiddlers.length; t++)
results.push(tiddlers[t]);
}
return results;
};
})(jQuery);
//}}}
{{floatright{<<previousTiddler "â—„">>}}}/%<<back>>%/
<<switchTheme width:auto>>
<<tag Menu>>
/%<<history>>%/
/%<<forward>>%/
<<search>>
<<slider chkTopMenuPanel TopMenu##breadcrumbs "history »" "See recent history">>/%
!breadcrumbs
<html><div id='breadCrumbs' class='breadCrumbs'></div></html>
!end
%/
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{
// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'minitest';
// 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,{
'TspotOptions':[
"tiddlyspot password:",
"<<option pasUploadPassword>>",
""
].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"),
'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"),
'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")
});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 17/03/2011 11:13:22 | YourName | [[/|http://minitest.tiddlyspot.com/]] | [[store.cgi|http://minitest.tiddlyspot.com/store.cgi]] | . | [[index.html | http://minitest.tiddlyspot.com/index.html]] | . |
| 17/03/2011 11:20:06 | YourName | [[/|http://minitest.tiddlyspot.com/]] | [[store.cgi|http://minitest.tiddlyspot.com/store.cgi]] | . | [[index.html | http://minitest.tiddlyspot.com/index.html]] | . |
| 17/03/2011 11:22:42 | YourName | [[/|http://minitest.tiddlyspot.com/]] | [[store.cgi|http://minitest.tiddlyspot.com/store.cgi]] | . | [[index.html | http://minitest.tiddlyspot.com/index.html]] | . |
| 17/03/2011 12:31:40 | YourName | [[/|http://minitest.tiddlyspot.com/]] | [[store.cgi|http://minitest.tiddlyspot.com/store.cgi]] | . | [[index.html | http://minitest.tiddlyspot.com/index.html]] | . | ok |
| 17/03/2011 12:45:17 | YourName | [[/|http://minitest.tiddlyspot.com/]] | [[store.cgi|http://minitest.tiddlyspot.com/store.cgi]] | . | [[index.html | http://minitest.tiddlyspot.com/index.html]] | . |
| 18/03/2011 08:38:01 | YourName | [[/|http://minitest.tiddlyspot.com/]] | [[store.cgi|http://minitest.tiddlyspot.com/store.cgi]] | . | [[index.html | http://minitest.tiddlyspot.com/index.html]] | . |
| 19/03/2011 02:36:44 | YourName | [[/|http://minitest.tiddlyspot.com/]] | [[store.cgi|http://minitest.tiddlyspot.com/store.cgi]] | . | [[index.html | http://minitest.tiddlyspot.com/index.html]] | . | ok |
| 19/03/2011 02:38:47 | YourName | [[/|http://minitest.tiddlyspot.com/]] | [[store.cgi|http://minitest.tiddlyspot.com/store.cgi]] | . | [[index.html | http://minitest.tiddlyspot.com/index.html]] | . | ok |
| 19/03/2011 02:39:58 | YourName | [[/|http://minitest.tiddlyspot.com/]] | [[store.cgi|http://minitest.tiddlyspot.com/store.cgi]] | . | [[index.html | http://minitest.tiddlyspot.com/index.html]] | . |
| 08/07/2011 15:10:54 | YourName | [[/|http://minitest.tiddlyspot.com/#TemplateExample%20ProjectTest]] | [[store.cgi|http://minitest.tiddlyspot.com/store.cgi]] | . | [[index.html | http://minitest.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 3,
date: new Date("Feb 24, 2008"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
if (!params) params = {};
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
options: [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine"
],
refreshOptions: function(listWrapper) {
var opts = [];
for(i=0; i<this.options.length; i++) {
var opt = {};
opts.push();
opt.option = "";
n = this.options[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
};
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
var rssString = generateRss();
// no UnicodeToUTF8 conversion needed when location is "file" !!!
if (document.location.toString().substr(0,4) != "file")
rssString = convertUnicodeToUTF8(rssString);
bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == 404)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
//}}}
~ListFilter (testing GetValueSectionSliceTweak and TiddlyWikiListPlugin )
<<list filter [tag[project]] template:[[iPhoneLikeButton##1]] emptyMessage:"No tiddlers to list">>
/%
!1
----
{{big floatleft{<<view title link>>}}}{{center{<<view modified>>}}}{{floatright big{ > }}}
----
!end
%/
Current theme:<<switchTheme width:auto>>
/***
|Name|iPhoneTheme|
|Source|http://itw.bidix.info/|
|Version|1.0.0|
|Author|BidiX|
|License||
|Requires|<<tag iPhoneTheme>>|
|Description|a systemTheme definition|
|StyleSheet|##StyleSheet|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|PageTemplateReadOnly|##PageTemplateReadOnly|
|ViewTemplateReadOnly|##ViewTemplateReadOnly|
|EditTemplateReadOnly|##EditTemplateReadOnly|
!StyleSheet
[[StyleSheetShortcuts]]
/*{{{*/
body {font-size:12px; font-family:arial,helvetica; margin:0; padding:0; min-height: 418px; width: 100%}
#messageArea {position:fixed; top:28px; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
#displayArea {margin:0em 0em 0em 0em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; left:0em;}
#topMenu {
positon:relative;
padding-top:0.5em;
padding-left:0.5em;
}
#topMenu br {display:none; }
#topMenu {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFJJREFUeNpcjjsOgDAMQy3f/2qMzAwMbOwg6pCPSisGy8+2FAXLunE/TgJGmUvl1jkl78Q2Z/f2ceyYevG6n7wxhLr5y52jjx9G747akYxXgAEA9FZw6HEbDVoAAAAASUVORK5CYII=) #6d84a2 repeat-x;
box-sizing: border-box;
border-bottom: 1px solid #2d3642;
margin: 0;
line-height: 20px;
height: 30px;
font-size: 12px;
font-weight: bold;
padding: 1px 10px 10px 10px;
text-align: center;
color: #FFFFFF;
text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0;
text-overflow: ellipsis;
box-sizing: border-box;
overflow: hidden;
white-space: nowrap;
}
.backButton, .ibutton, #topMenu .button, .toolbar .button {
top: 6px;
-webkit-border-radius: 0;
padding: 0 1px 2px 1px;
height: 28px;
line-height: 28px;
font-weight: bold;
color: #FFFFFF;
text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0;
text-decoration: none;
background: #4A6C9B;
border-color: #4A6C9B;
}
#topMenu .backButton {
position: absolute;
left: 6px;
right: auto;
font-size: 20px;
-webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAeCAIAAAA6iHCJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtJJREFUeNrEV21P01AYbbtubNExBnXDbYjjZYI4BMdgEANDQoTElw/+Rw0mBs0UiSGaoJFEQEPwjRhFCW/JxrZ2Xdu1fe71bpAhCHzqupPnS5ObPOeec+5zb+lHLxao05HPiwvzr3/++J7N7FFGgaaDLe034+O+wCXyxSKET1u5+Wc98XTK39zeOzjudLmNIoAR2tlaf/Zkqm9gKNI/RBigE9dtb23MJKZj8fvuC16b3WGxsJRxOFfHeQOtH+ZnOI+XRfgEBoLAzz6fjo7ebfD4GYYhMiEdDGRAW6xOt6d7YGzl4xIL/7mgyPL044edkVt19T4EFAJEVQYud+MvOCkHc7MJ3+VrXGOzXrHeZS1s9trjOVj7tiqpONTWBRgD6BVmQFls9iMaSHnx/bu3ffEHgC2gVVqAIojKR3Iw9zLRcjVmtTnA0NydxQDg0IWvq59kYIOeZtWs9gQkagcMcgK/vLjYNXQHcEkas0AcYPdNIPr7Q/0M69B089ofavB5ZVm3OJ2cTwegzAUgxGbSe8tLS52xewjRZGabzAABZt+8mvGHBsiYNF+AAw1cXEBGNUiQqWpAlArM5MSYBXgEOl0NkLcCkxak28MRKbuDMa6KDAwAUnU8HO2Q+N0SJ3OLMCA7V1S9vt7d3tSg5LNV0ACXwOekcGfreVbVVYUqMjOvyPsH71cqkxsZ7NHFJIXBTCMONMAlEryoxAfDucyOmaOpmINyaTowrK23IyDxKbNzUIYoKU3+i37OXpCESvfGCOw11uMMcCkQke4rDlrS1coOSk2VOXftERfKtZsURmLXQUqBVqiUABgrQirc0Xp4Fv4t8kxN8dLkaJQupOVcGnTN0PuQHHlRSG1Eu9tUTLOnxZ5clclsfmK078va7/WN7axomCN2e42Xc/VEIoiiM0KePeM20DTY3M22BZtuhENW1rC/NrI3WVGTmZxSKEr7V4ABAJ+53J1I3nPjAAAAAElFTkSuQmCC) 0 8 0 14;
border-width: 0 8px 0 14px;
}
#topMenu .backButton .pressed {
-webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAeCAIAAAA6iHCJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAsJJREFUeNrEV9tP01AYP6eXrZddyoAtDGkRHnwUjdEHEUKCaJyQIT4Y/z9jYgJE0QgENYjRRB+JZIMxCco2iQ4YdO3annM8XAJhgE9t98v30pyTfr/v991a+PzNF3AxdH1v7vV46Xdpe6sM3AKEqqr1D6aSl9T9p2dTny+6OT8zuZTJtrQmREEICqJbBAghhlEtFQtaR/v99FMOY3zuvYW5l9nlvKp1SXKY5XkIGeAeAoIsiHKh8PPD9ASHyTkMvi7MruTy7VqnHIpACAmhxLGLDCDDBKVQPNH2t7zNIUzqjk3DWMost8STohShfql34A0EMVzZqdAs1DuYfvUiqrTK4aazR24DsixfXwfzMxOmDeIx5SB4BLwGw5zSoKrv5deLqtZNAESIAO9Bwz9VB7NT4/F4G8Py3ut/BMc2TrKwMDtp2igshhDGwC/QUI8Y7GyV135tJju0g8Yj/jEglMGBu/czU02xZsjwCPvn/kSDb5/mHMJG5Aj2Uf8TDTbWV5eyqx3qZUIgAX6DTjyWCSpRReGCImkELEPnJDFoYc6gY6gRMBHHjIw9gcTcXzwQNsIIU9r8kxoetYxdQEhDZKADUDBr9rWeq7a5C+mu8N0YGrmFgNZ9pUWRHctogAaHNVksbPQNpgIswsjxmwGdCdSEkLK29uNeahRbe7RL/SvEYw0opEhzsVjs7RuoGRWfswCOjRcjXEBUk62WqftdB8cwHdJzsz8qc45d83wkE8IzmDk7KfO57MDQME9bxOOqRMiWxMCpLBxaOJZczmSGHqSJpWOEPBMAOKZ+/cbto16oMznWls/nHqbHgFO1a4a7W5u+zXEss7rd3dWpmwYHLvgdkJTEam5l5NHjj+/elrcqhgPdYkBzH5KF3rtpB6Edvcb9ZxuI0cT3xcVbd4YiIZHnONe+ThEyTIuOH1aI0sd/AgwAlqkuN/kCJYwAAAAASUVORK5CYII=) 0 8 0 14;
}
#topMenu .ibutton{
position: absolute;
padding : 0px 7px 2px 6px;
right: 6px;
-webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAeCAIAAACqmwlGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbVJREFUeNqUlEtLw0AUhSfJTRpTk5Za1FAfxS5sBVtfC7tQdOcv8C+6FURx50JBEUGwG0HrA5EqtlRtTNM0d+KtrqyCk8NAmJnzce7AzZW2do8ZY/d31bPjw1rt8aP1zn4qblq2nVkqr0xmc7QFzsOTw4PKxXkuX8xOLxqDZh/gOq1m42l/Z3u2OL+8sg63N9dXN1erG5sDg5aqarKi9AFWCofsiUw2f3q0Z49PKFZquLCwlkyPSrISMkaBfYsO6UrTDTORrpwdgazGreRw0OXsP5FNAgM0w0TOkCMTUCxugQxaFwMmJjIDIvMF6vkWmQlADFAYQAiQ+8IAmQF5SB/RBB72EroBj5TAAxR+A+fAMUQMBQEyR09w3I723hYEyAxM6kkQILPMIgqkHiYcQO0UOeELE45gElA9Ud4cvaTogApAv7qINQw5gCInE0bQ9YRa1fdSSVMuzuTcVoP4fwPIVipMyQroc/mxt5cH33P4X9OADumKDGRjEAPX62TskdF0qnJZfa6/eF6nD9D12Eg6MTtXUlS18eoATbZ60zF0rbxUHNA1+DUqqfnbnk9W13Fo+ynAAB714wGw06ZOAAAAAElFTkSuQmCC) 0 5 0 5;
border-width: 0 5px 0 5px;
}
#topMenu .button {
position: relative;
// height: 28px;
padding : 8px 8px 8px 8px;
// margin-top: 16px;
// line-height: 28px;
-webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAeCAIAAACqmwlGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbVJREFUeNqUlEtLw0AUhSfJTRpTk5Za1FAfxS5sBVtfC7tQdOcv8C+6FURx50JBEUGwG0HrA5EqtlRtTNM0d+KtrqyCk8NAmJnzce7AzZW2do8ZY/d31bPjw1rt8aP1zn4qblq2nVkqr0xmc7QFzsOTw4PKxXkuX8xOLxqDZh/gOq1m42l/Z3u2OL+8sg63N9dXN1erG5sDg5aqarKi9AFWCofsiUw2f3q0Z49PKFZquLCwlkyPSrISMkaBfYsO6UrTDTORrpwdgazGreRw0OXsP5FNAgM0w0TOkCMTUCxugQxaFwMmJjIDIvMF6vkWmQlADFAYQAiQ+8IAmQF5SB/RBB72EroBj5TAAxR+A+fAMUQMBQEyR09w3I723hYEyAxM6kkQILPMIgqkHiYcQO0UOeELE45gElA9Ud4cvaTogApAv7qINQw5gCInE0bQ9YRa1fdSSVMuzuTcVoP4fwPIVipMyQroc/mxt5cH33P4X9OADumKDGRjEAPX62TskdF0qnJZfa6/eF6nD9D12Eg6MTtXUlS18eoATbZ60zF0rbxUHNA1+DUqqfnbnk9W13Fo+ynAAB714wGw06ZOAAAAAElFTkSuQmCC) 0 5 0 5;
border-width: 0 5px 0 5px;
}
.toolbar .button {
position: relative;
height: 28px;
padding : 8px 8px 8px 8px;
margin-top: 16px;
line-height: 28px;
-webkit-border-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAeCAIAAACqmwlGAAACJWlDQ1BJQ0MgUHJvZmlsZQAAeJyVkstrE1EUh7+ZIJFSgsqYhSiMqCAYSx4Ws0yaPkibNtMkJQ+6SWbSJDqZDJNJrOKif4Erd65cCMGdImhdudSF4AOkCzduRHDlg65i08U4ExBC8cCF7xzOPY/fveD7XTVNXQTahm3llubkUrki+/fwIXGaE0xV1a6ZVJQME23/EwLAx6tV09Ql/V7659krxrXd79sz4pfNyfcACFilcgWEECA1HE4AUs3hAiDdsk0bhCYgqc2qBsJdIGQVcikQBkCg4fALIFBz+DUQ6KsNG4Q9IGxoLQPE40Bcq3dVEBPAltZV2yAOgIN2u6OBbwBcVk3LBt874GKpXJGdkXt/IPEMxK/j2OZnGOzAuTfj2IUhBH/B09449mMZARCguxWLAiBM9eHY8mi03wB/AIZPRqPh49HooAjiI/hwRu1Z/b96CcJbOMp3dnZ8eG+7NIkdXQAIw8MElHcg8wru78Cl5xB8ADmgCGIs5h5HQwCmU9lVJbkuR+LR2SOe/P+trffcPqeAaaO2lgWCwDfTVgoud/v5BZe3Wotpl7Xq/IrLd5qpNS/HWsy5fKO6rLhcNzbyXn1dyYx7zXn59e5CflyzUHTZ6uU2XL7ZWfHytfq8N5uhr3k1W3bam58UWVZRSLKOTIQ4UWbB+ZMAgZMgKUuxyPWXu/7z/+pk17dtgFTHvG21Gk1bTpqmXg/JaUOdCcnRcDjOIYF5rvXkqWSvAAABuklEQVQ4jZ2UMWtUQRDHZ3ZnffjuDOrlvEsMHAqCIgQDIqeNCF4hYmGs/AoWksLWKqUWqfwQgmnE6gQRRFIEIrFQEATRUw45TcK9Z97bNzMWp4LPIvsctvz/Zn+zLIOpjgHg7srz/rO3wy8fd5Mt+Lvs/ubc0Xbv0snlpYsAgKmOF2/11zc2a53eocZsY8qWgNEOfx99Tj70zy7Mrz7o4e17jx8+eT9/YbExZWuRseU8MEOSyWiHN1+u3rx23G65c7Onrx9rO7IoCizlIwpk8UBsOD7xev0F/TAznZbzhZY7/1Odlhu8a5O6wwVrwXvmAQB03zShjTK/d/tJoY0IQMMBACXl3If5AIByTiB+N5NQQjypcs6hSqpMyrkvqiip+PChVTyBCkvwK6mQihcOdVLxJNk2p8NAQLJtAgBAE6oEUCH6G0CsEEc0sU3D8zVKJjNUuKSqkvmPoasChiLQsK+hisYZFzfFJyF58UlUnzFXz7c4GYQAnAyudJuY6vjG0tqrN58obiHFaF1ZhL0WaZEOz5yae7TSxV+79f7a043xt9HXPM9KgHH1I9MHLy/Ul+90YbJbQ3z+1E898dPExYV7UAAAAABJRU5ErkJggg==) 0 5 0 5;
border-width: 0 5px 0 5px;
}
#topMenu .txtOptionInput {
vertical-align: baseline;
}
.popup li a {display:block; padding:1em; font-weight:bold; cursor:pointer;}
.toolbar {height: 34px;}
.selected .toolbar a {color:#FFF;}
.selected .toolbar a:hover {color:#FFF;}
.tagged { float:left; }
.tagged li { display:inline; }
.tagged { background:transparent !important; border:0 !important; }
.tagged .button {color: [[ColorPalette::TiertiaryPale]] !important; }
.tiddler {padding:0em 1em 0em 1em;}
.tiddlerListItem .tiddlerListItemTitle, .tiddlerListItem .tiddlerListItemTitle a {
line-height: 28px;
font-size: 1.35em;
color: #000;
background: #FFF;
text-decoration: none;
}
.tiddlerListItem {
display: block;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1woZERcgh0frmgAAALVJREFUeNrt1TEKAjEQheH/qZWNxd7GSmQX8QpewDN5BS8ggoiVt9nCZkufTXaJCxbirIU41YTAfCSZJLLN0DHiC/GjiKRSUhmNTHIAqFKO7dMQKxlneSVpGY7YPgLnbG4VBT2dSYIuPWgR3l22Dz1o/Sn0qoWvQJON55KmYYikGbAF2qI3YGe7ibonLVD0gDpku4YCOkTSCNgMAXSI7TuwT8VDAQDl/4mkIqF15Nul/6f1TjwAO6BGddCkxQkAAAAASUVORK5CYII=) no-repeat right center;
padding-right: 24px;
border:0;
border-top:dashed 1px [[ColorPalette::TertiaryDark]];
}
.tiddlerListItem a, .tiddlerListItem code {
font-family: Arial;
font-size: 1em;
color: #333;
background: #FFF;
text-decoration: none;
}
.homeTitle {
line-height: 28px;
font-family: Arial;
font-size: 2em;
font-weight: bold;
color:[[ColorPalette::SecondaryDark]];
background: #FFF;
text-decoration: none;
}
/*}}}*/
/*{{{*/
@media print {
#topMenu {display: none ! important;}
}
/*}}}*/
!PageTemplate
<!--{{{-->
<div id='displayArea'>
<div id='topMenu' refresh='content' tiddler='TopMenu'></div>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
<div class='toolbar' macro=previousTiddler "â—„"'><span class='toolbar' macro='toolbar +editTiddler > closeTiddler permalink references'></div>
<div macro="hideWhenTaggedAny noTitle">
<div class='title' macro='view title'></div>
</div>
<div macro="hideWhenTaggedAny systemTool systemList">
<div class='tagged' macro='tags'></div>
</div>
<div class='tagClear'></div>
<div class='viewer' macro='view text wikified'></div>
<div macro="showWhenTagged [[systemList]]">
<div class='viewer' macro="listByTag '' modified ''"></div>
</div>
<div style="position:fixed;z-index:1001;bottom:.3em;right:.3em;cursor:pointer;font-size:9pt;">
<a href="javascript:window.scrollTo(0,0)" title="scroll to top of page">▲</a>
</div><div macro='tiddler CloseOtherTiddlers'></div>
<div class='tagClear'></div>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<!--}}}-->
!PageTemplateReadOnly
<!--{{{-->
[[PageTemplateReadOnly]]
<!--}}}-->
!ViewTemplateReadOnly
<!--{{{-->
[[ViewTemplate]]
<!--}}}-->
!EditTemplateReadOnly
<!--{{{-->
[[EditTemplateReadOnly]]
<!--}}}-->
***/
config.macros.search.label="";
config.options.txtTheme="default";
{{{
config.macros.RandomColorPaletteButton.text="farver";
config.macros.RandomColorPaletteButton.tooltip="Generér en tilfældig";
config.macros.RandomColorPalette.changedPaletteText ="Du har fået et nyt farveskema - vil du have et andet - klikker du igen";
}}}