Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
You can associate your account with multiple identities. If you have an open id for example you could log into TiddlySpace with that as well as a TiddlySpace user account.
{{inlineList{
<<TiddlySpaceIdentities>>
}}}
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options ยป" "Change TiddlyWiki advanced options">>
<<TiddlySpaceChangePassword>>
<<tabs txtSpaceTab
members Members BackstageSpaceMembers
includes "include spaces" BackstageSpaceInclusions
tiddlers "tiddlers control panel" BackstageTiddlers
plugins "Manage installed plugins" PluginManager
options "TiddlyWiki options" BackstageOptions
tweaks "Tweak the appearance and behaviour of TiddlyWiki" AdvancedOptions
"import" "Import tiddlers from a TiddlyWiki" BackstageFileImport
>>
This space includes the public tiddlers from the following spaces:
<<TiddlySpaceInclusion list>>
<<TiddlySpaceInclusion passive>>
The following people are members of the space ''<<message extensions.tiddlyspace.currentSpace.name>>''. Only members have access to the private tiddlers in a space.
<<TiddlySpaceMembers>>
<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>
<<TiddlySpaceSpaces add>>
You are currently a member of the following spaces.
{{inlineList{
<<TiddlySpaceSpaces list>>
}}}
{{backstageClear{}}}
/***
|''Name''|BinaryTiddlersPlugin|
|''Description''|renders base64-encoded binary tiddlers as images or links|
|''Author''|FND|
|''Version''|0.3.0|
|''Status''|@@beta@@|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/BinaryTiddlersPlugin.js|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''CoreVersion''|2.5|
!Code
***/
//{{{
(function($) {
var ctfield = "server.content-type";
var plugin = config.extensions.BinaryTiddlersPlugin = {
isWikiText: function(tiddler) {
var ctype = tiddler.fields[ctfield];
if(ctype) {
return !this.isBinary(tiddler) && !this.isTextual(ctype);
} else {
return true;
}
},
// NB: pseudo-binaries are considered non-binary here
isBinary: function(tiddler) {
var ctype = tiddler.fields[ctfield];
return ctype ? !this.isTextual(ctype) : false;
},
isTextual: function(ctype) {
return ctype.indexOf("text/") == 0 || this.endsWith(ctype, "+xml");
},
endsWith: function(str, suffix) {
return str.length >= suffix.length &&
str.substr(str.length - suffix.length) == suffix;
}
};
// hijack text viewer to add special handling for binary tiddlers
var _view = config.macros.view.views.wikified;
config.macros.view.views.wikified = function(value, place, params, wikifier,
paramString, tiddler) {
var ctype = tiddler.fields["server.content-type"];
if(params[0] == "text" && ctype && !tiddler.tags.contains("systemConfig")) {
var el;
if(plugin.isBinary(tiddler)) {
var uri = "data:%0;base64,%1".format([ctype, tiddler.text]); // TODO: fallback for legacy browsers
if(ctype.indexOf("image/") == 0) {
el = $("<img />").attr("alt", tiddler.title).attr("src", uri);
} else {
el = $("<a />").attr("href", uri).text(tiddler.title);
}
} else {
el = $("<pre />").text(tiddler.text);
}
el.appendTo(place);
} else {
_view.apply(this, arguments);
}
};
// hijack edit macro to disable editing of binary tiddlers' body
var _editHandler = config.macros.edit.handler;
config.macros.edit.handler = function(place, macroName, params, wikifier,
paramString, tiddler) {
if(params[0] == "text" && plugin.isBinary(tiddler)) {
return false;
} else {
_editHandler.apply(this, arguments);
}
};
// hijack autoLinkWikiWords to ignore binary tiddlers
var _autoLink = Tiddler.prototype.autoLinkWikiWords;
Tiddler.prototype.autoLinkWikiWords = function() {
return plugin.isWikiText(this) ? _autoLink.apply(this, arguments) : false;
};
})(jQuery);
//}}}
This tiddler has been deleted.
/*{{{*/
Background: #e4e1f3
Foreground: #0d0b1d
PrimaryPale: #bdb7e3
PrimaryLight: #7b6fc6
PrimaryMid: #473b97
PrimaryDark: #030207
SecondaryPale: #b7e3cf
SecondaryLight: #6fc69f
SecondaryMid: #3b976d
SecondaryDark: #020705
TertiaryPale: #e3b7c3
TertiaryLight: #c66f88
TertiaryMid: #973b55
TertiaryDark: #070204
Error: #f88
ColorPaletteParameters: HSL([248|85], [0.438199819996953],[0.020199364982545376|0.8048013914376497])
/*}}}*/
/***
|''Name''|DiffFormatter|
|''Description''|highlighting of text comparisons|
|''Author''|FND|
|''Version''|0.9.0|
|''Status''|beta|
|''Source''|http://svn.tiddlywiki.org/Trunk/contributors/FND/formatters/DiffFormatter.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''Keywords''|formatting|
!Description
Highlights changes in a unified [[diff|http://en.wikipedia.org/wiki/Diff#Unified_format]].
!Notes
Based on Martin Budden's [[DiffFormatterPlugin|http://svn.tiddlywiki.org/Trunk/contributors/MartinBudden/formatters/DiffFormatterPlugin.js]].
!Usage
The formatter is applied to blocks wrapped in <html><code>{{{diff{..}}}</code></html> within tiddlers tagged with "diff".
!Revision History
!!v0.9 (2010-04-07)
* initial release; fork of DiffFormatterPlugin
!StyleSheet
.diff { white-space: pre; font-family: monospace; }
.diff ins, .diff del { display: block; text-decoration: none; }
.diff ins { background-color: #dfd; }
.diff del { background-color: #fdd; }
.diff .highlight { background-color: [[ColorPalette::SecondaryPale]]; }
!Code
***/
//{{{
(function() {
config.shadowTiddlers.StyleSheetDiffFormatter = store.getTiddlerText(tiddler.title + "##StyleSheet");
store.addNotification("StyleSheetDiffFormatter", refreshStyles);
var formatters = [{
name: "diffWrapper",
match: "^\\{\\{diff\\{\n", // XXX: suboptimal
termRegExp: /(.*\}\}\})$/mg,
handler: function(w) {
var el = createTiddlyElement(w.output, "div", null, "diff");
w.subWikifyTerm(el, this.termRegExp);
}
}, {
name: "diffRange",
match: "^(?:@@|[+\\-]{3}) ",
lookaheadRegExp: /^(?:@@|[+\-]{3}) .*\n/mg,
handler: function(w) {
createTiddlyElement(w.output, "div", null, "highlight").
innerHTML = "…";
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
}, {
name: "diffAdded",
match: "^\\+",
termRegExp: /(\n)/mg,
handler: function(w) {
var el = createTiddlyElement(w.output, "ins", null, "added");
w.subWikifyTerm(el, this.termRegExp);
}
}, {
name: "diffRemoved",
match: "^-",
termRegExp: /(\n)/mg,
handler: function(w) {
var el = createTiddlyElement(w.output, "del", null, "removed");
w.subWikifyTerm(el, this.termRegExp);
}
}
];
config.parsers.diffFormatter = new Formatter(formatters);
config.parsers.diffFormatter.format = "diff";
config.parsers.diffFormatter.formatTag = "diff";
})();
//}}}
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'></div>
<div class='heading'>
<div class='editor title' macro='edit title'></div>
<div class='tagClear'></div>
</div>
<div class='annotationsBox' 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 excludeLists'></span>
</div>
<!--}}}-->
//{{{
//
// source: http://plugins.jquery.com/project/floatobject
//
// usage: jQuery(selector).makeFloat(params);
//
// where params is an object:
// x: number of pixels from the left of the window, or the string 'current' to use the current object location
// y: the same is x but for the Y axis
// speed: 'slow' , 'normal', 'fast'
//
// example: jQuery('#mydiv').makeFloat({x:'current',y:'100',speed:'normal'});
//
(function($){
/*----------------------------------------------------------------------------------
Class: FloatObject
-------------------------------------------------------------------------------------*/
function FloatObject(jqObj, params)
{
this.jqObj = jqObj;
switch(params.speed)
{
case 'fast': this.steps = 5; break;
case 'normal': this.steps = 10; break;
case 'slow': this.steps = 20; break;
default: this.steps = 10;
};
var offset = this.jqObj.offset();
this.currentX = offset.left;
this.currentY = offset.top;
this.width = this.jqObj.width();
this.height = this.jqObj.height();
this.alwaysVisible = params.alwaysVisible;
this.alwaysTop = params.alwaysTop;
this.origX = typeof(params.x) == "string" ? this.currentX : params.x;
this.origY = typeof(params.y) == "string" ? this.currentY : params.y;
//now we make sure the object is in absolute positions.
this.jqObj.css({'position':'absolute' , 'top':this.currentY ,'left':this.currentX});
}
FloatObject.prototype.updateLocation = function()
{
this.updatedX = $(window).scrollLeft() + this.origX;
if( this.alwaysTop == false ){
this.updatedY = $(window).scrollTop()+ this.origY;
if( this.alwaysVisible ){
if( this.origX + this.width > this.windowWidth() )
this.updatedX = this.windowWidth() - this.width + $(window).scrollLeft();
if( this.origY + this.height > this.windowHeight() )
{
this.updatedY = $(window).scrollTop() + this.windowHeight() - this.height;
if( this.updatedY < this.origY ) this.updatedY = this.origY;
}
}
}
else
{
if( $(window).scrollTop() > this.origY )
{
this.updatedY = $(window).scrollTop() + 5;
}
else
{
this.updatedY = this.origY + 5;
}
}
this.dx = Math.abs(this.updatedX - this.currentX );
this.dy = Math.abs(this.updatedY - this.currentY );
return this.dx || this.dy;
}
FloatObject.prototype.windowHeight = function()
{
var de = document.documentElement;
return self.innerHeight ||
(de && de.clientHeight) ||
document.body.clientHeight;
}
FloatObject.prototype.windowWidth = function()
{
var de = document.documentElement;
return self.innerWidth ||
(de && de.clientWidth) ||
document.body.clientWidth;
}
FloatObject.prototype.move = function()
{
if( this.jqObj.css("position") != "absolute" ) return;
var cx = 0;
var cy = 0;
if( this.dx > 0 )
{
if( this.dx < this.steps / 2 )
cx = (this.dx >= 1) ? 1 : 0;
else
cx = Math.round(this.dx/this.steps);
if( this.currentX < this.updatedX )
this.currentX += cx;
else
this.currentX -= cx;
}
if( this.dy > 0 )
{
if( this.dy < this.steps / 2 )
cy = (this.dy >= 1) ? 1 : 0;
else
cy = Math.round(this.dy/this.steps);
if( this.currentY < this.updatedY )
this.currentY += cy;
else
this.currentY -= cy;
}
this.jqObj.css({'left':this.currentX, 'top': this.currentY });
}
/*----------------------------------------------------------------------------------
Object: floatMgr
-------------------------------------------------------------------------------------*/
$.floatMgr = {
FOArray: new Array() ,
timer: null ,
initializeFO: function(jqObj,params)
{
var settings = $.extend({
x: 0 ,
y: 0 ,
speed: 'normal' ,
alwaysVisible: false ,
alwaysTop: false},params||{});
var newFO = new FloatObject(jqObj,settings);
$.floatMgr.FOArray.push(newFO);
if( !$.floatMgr.timer ) $.floatMgr.adjustFO();
//now making sure we are registered to all required window events
if( !$.floatMgr.registeredEvents )
{
$(window).bind("resize", $.floatMgr.onChange);
$(window).bind("scroll", $.floatMgr.onChange);
$.floatMgr.registeredEvents = true;
}
} ,
adjustFO: function()
{
$.floatMgr.timer = null;
var moveFO = false;
for( var i = 0 ; i < $.floatMgr.FOArray.length ; i++ )
{
FO = $.floatMgr.FOArray[i];
if( FO.updateLocation() ) moveFO = true;
}
if( moveFO )
{
for( var i = 0 ; i < $.floatMgr.FOArray.length ; i++ )
{
FO = $.floatMgr.FOArray[i];
FO.move();
}
if( !$.floatMgr.timer ) $.floatMgr.timer = setTimeout($.floatMgr.adjustFO,50);
}
} ,
stopFloatChk: false ,
onChange: function()
{
if( !$.floatMgr.timer && !$.floatMgr.stopFloatChk ) $.floatMgr.adjustFO();
}
};
/*----------------------------------------------------------------------------------
Function: makeFloat
-------------------------------------------------------------------------------------*/
$.fn.makeFloat = function(params) {
var obj = this.eq(0); //we only operate on the first selected object;
$.floatMgr.initializeFO(obj,params);
if( $.floatMgr.timer == null ) $.floatMgr.adjustFO();
return obj;
};
$.fn.stopFloat = function(params) {
$.floatMgr.stopFloatChk = true;
};
$.fn.restartFloat = function(params) {
$.floatMgr.stopFloatChk = false;
};
})(jQuery);
//}}}
To get started with this blank ~TiddlyWiki, you'll need to modify the following tiddlers:
* If you don't like the color scheme click <<RandomColorPaletteButton>> to generate a new random color scheme.
* [[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>>
/***
|''Name''|ImageMacroPlugin|
|''Version''|0.7.0|
|''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)|
|''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)|
!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.
!Code
***/
//{{{
(function($) {
var macro = config.macros.image = {
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: {},
isBinaryImageType: function(contentType) {
if(contentType && contentType.indexOf("image") === 0 &&
contentType.indexOf("+xml") != contentType.length - 4) {
return true;
} else {
return false;
}
},
isImageTiddler: function(tiddler) {
return macro.isSVGTiddler(tiddler) || macro.isBinaryImageTiddler(tiddler);
},
isSVGTiddler: function(tiddler) {
var type;
type = tiddler ? tiddler.fields['server.content-type'] : false;
return type == "image/svg+xml";
},
isBinaryImageTiddler: function(tiddler) {
return macro.isBinaryImageType(tiddler.fields['server.content-type']);
},
generateIdPrefix: function(){
return "tw_svgfix_" + (this._fixPrefix++).toString() + "_";
},
fixSVG: function(childNodes,idPrefix) {
if(!idPrefix) {
idPrefix = this.generateIdPrefix();
}
var urlPattern = /^\s*url\(\#([^\)]*)\)\s*$/ig;
var fixes = [
{ attr: "id", namespace: "", pattern: /^(.*)$/ig },
{ attr: "filter", namespace: "", pattern: urlPattern },
{ attr: "fill", namespace: "", pattern: urlPattern },
{ attr: "stroke", namespace: "", pattern: urlPattern },
{ attr: "href", namespace: macro.xlinkns, pattern: /^#(.*)$/ig }
];
for(var t = 0; t < childNodes.length; t++) {
var node = childNodes[t];
for(var a = 0; a < fixes.length; a++) {
var fix = fixes[a];
if(node.hasAttributeNS && node.hasAttributeNS(fix.namespace, fix.attr)) {
var v = node.getAttributeNS(fix.namespace, fix.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 replacement = (idPrefix + match[1]).replace("$", "$$$$");
v = v.replace(match[1], replacement);
node.setAttributeNS(fix.namespace, fix.attr,v);
}
}
}
var children = node.childNodes;
if(children.length > 0) {
this.fixSVG(children, idPrefix);
}
}
},
importSVGfallback: function(place,options){
// no fallback yet for browsers such as IE
},
importSVG: function(place,options){
if(!options) {
options = {};
}
var tiddlerText = options.tiddler.text;
var svgDoc;
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 existingDefs = el.getElementsByTagNameNS(macro.svgns, "defs");
var elDef;
if(existingDefs.length === 0) {
elDef = document.createElementNS(macro.svgns, "defs");
} else {
elDef = existingDefs[0];
}
if(options.def) {
for(var i = 0; i < options.def.length; i++) {
var text = store.getTiddlerText(options.def[i]);
var def = new DOMParser().parseFromString(text, "application/xml").documentElement;
this.fixSVG([def], idPrefix);
elDef.appendChild(document.importNode(def, true));
}
}
el.insertBefore(elDef, el.firstChild);
var svgHolder = document.createElementNS(macro.svgns,"svg");
var width = options.width;
var height = options.height;
// what if width and height exist in css?
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 {
el.setAttribute("class","svgImage svgIcon");
place.appendChild(el);
}
// if a tiddler attribute is set this is read as a link
jQuery("[tiddler]", place).click(function(ev) {
var tiddler = $(ev.target).attr("tiddler");
if(tiddler) {
story.displayTiddler(ev.target, tiddler);
}
});
}
else{
this.importSVGfallback(place,options);
}
},
supportsDataUris: false,
renderBinaryImageTiddler: function(place, tiddler, options) {
var ctype = tiddler.fields["server.content-type"] || tiddler.type;
if(macro.supportsDataUris && ctype) {
var uri = "data:%0;base64,%1".format([ctype, tiddler.text]); // TODO: fallback for legacy browsers
return macro.renderBinaryImageUrl(place, uri, options);
} else if(options.src) {
return macro.renderBinaryImageUrl(place, options.src, options);
} else {
var src;
var fields = tiddler.fields;
if(fields["server.type"] == 'tiddlyweb') { // construct an accurate url for the resource
src = "%0%1/tiddlers/%2".format([fields['server.host'],
fields['server.workspace'],fields['server.title']]);
} else { // guess the url for the resource
src = tiddler.title;
}
return macro.renderBinaryImageUrl(place, src, options);
}
},
renderImage: function(place, imageSource, options) {
var imageTiddler = store.getTiddler(imageSource);
if(imageTiddler && macro.isBinaryImageTiddler(imageTiddler)) { // handle the case where we have an image url
return macro.renderBinaryImageTiddler(place, imageTiddler, options);
} else if(imageTiddler){ // handle the case where we have a tiddler
return macro.renderSVGTiddler(place, imageTiddler, options);
} else { // we have a string representing a url
// check if we can access the json format of this url
var newplace = $('<div class="externalImage"/>').appendTo(place)[0];
try{
var img = new Image();
img.onload = function(ev) {
return macro.renderBinaryImageUrl(newplace, imageSource, options);
};
img.onerror = function(ev) {
var renderTiddler = function(tiddler, contentType) {
macro._external_cache[imageSource] = {tiddler: tiddler, contentType: contentType};
if(contentType == 'application/json') { // assume tiddlyweb server
contentType = tiddler.type;
} else { // try and use the response as tiddler text
tiddler = {text: tiddler};
}
if(macro.isBinaryImageType(contentType)) {
options.src = imageSource;
return macro.renderBinaryImageTiddler(newplace, tiddler, options);
} else {
return macro.renderSVGTiddler(newplace, tiddler, options);
}
};
var cached = macro._external_cache[imageSource];
if(cached) { // use cache where possible
renderTiddler(cached.tiddler, cached.contentType)
} else {
ajaxReq({ // deal with tiddlyweb binary images
url: imageSource,
beforeSend: function(xhr) {
xhr.setRequestHeader("Accept", "application/json,*/*");
xhr.setRequestHeader("X-ControlView", "false"); // for tiddlyspace usage
},
success: function(tiddler, status, xhr) {
if(!tiddler) {
return macro.renderBinaryImageUrl(newplace, imageSource, options);
}
var header = xhr.getResponseHeader("content-type");
var contentType;
if(header) {
header = header ? header.split(";") : [];
contentType = header[0] || false;
}
renderTiddler(tiddler, contentType);
},
error: function() {
return macro.renderBinaryImageUrl(newplace, imageSource, options);
}
});
}
};
img.src = imageSource;
} catch(e) { // the url is external thus our ajax request failed. we could try proxying..
return macro.renderBinaryImageUrl(newplace, imageSource, options); // attempt to render as image
}
}
},
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);
},
renderAlternateText: function(place, options) {
if(options.alt) {
$("<div class='svgImageTest svgIconText' />").text(options.alt).appendTo(place);
}
},
renderSVGTiddler: function(place, tiddler, options) {
if(!options) {
options = {};
}
options.tiddler = tiddler;
options.fix = true;
if(macro.svgAvailable) {
this.importSVG(place, options); // display the svg
} else {
// instead of showing the image show the alternate text.
this.renderAlternateText(place, options);
}
},
renderBinaryImageUrl: function(place, src, options) {
var container = $('<div class="image" />').appendTo(place)[0];
var image = new Image(); // due to weird scaling issues where you use just a width or just a height
var createImageTag = function(userW, userH) {
var img = $("<img />");
img.attr("src", src);
img.appendTo(container);
if(userH) {
img.attr("height", userH);
}
if(userW) {
img.attr("width", userW);
}
img.addClass(options.imageClass);
};
image.onload = function() {
var w = image.width;
var h = image.height;
var userH = options.height;
var userW = options.width;
var ratio;
if(userH && !userW) {
ratio = userH / h;
userW = ratio * w;
} else if (userW && !userH) {
ratio = userW / w;
userH = ratio * h;
}
createImageTag(userW, userH);
};
image.onerror = function() {
createImageTag(options.width, options.height);
};
image.src = src;
},
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 = params[1] || false;
var height = params[2] || false;
if(width && width.indexOf(":") > -1) {
width = false;
}
if(height && height.indexOf(":") > -1) {
height = false;
}
options.width = macro.lookupArgument(options, "width", width);
options.height = macro.lookupArgument(options, "height", height);
return options;
},
lookupArgument: function(args, id, ifEmpty) {
if(args[id]) {
return args[id];
} else {
return ifEmpty;
}
}
};
var datauriTest = function() {
var data = new Image();
data.onload = function() {
if(this.width != 1 || this.height != 1) {
macro.supportsDataUris = false;
} else {
macro.supportsDataUris = true;
}
};
data.onerror = data.onload;
data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
};
datauriTest();
// update views
var _oldwikifiedview = config.macros.view.views.wikified;
// update wikifier to check tiddler type before rendering
config.macros.view.views.wikified = function(value, place, params, wikifier, paramString, tiddler) {
if(macro.isImageTiddler(tiddler) && params[0] == "text") {
var newplace = $('<div class="wikifiedImage" />').appendTo(place)[0];
macro.renderImage(newplace, tiddler.title, {});
} else {
_oldwikifiedview(value, place, params, wikifier, paramString, tiddler);
}
};
config.macros.view.views.image = function(value, place, params, wikifier, paramString, tiddler) {
invokeMacro(place, "image", "%0 %1".format([value, params.splice(2).join(" ")]), null, tiddler);
};
config.shadowTiddlers.StyleSheetImageMacro = ".wikifiedImage svg, .wikifiedImage .image { width: 80%; }";
store.addNotification("StyleSheetImageMacro", refreshStyles);
})(jQuery);
//}}}
/***
|''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);
}
//}}}
[[WelcomeToTiddlyspot]] [[GettingStarted]] [[Download|http://sandboxmm.tiddlyspot.com/download]] <<tiddler ToggleFullScreen>>
<!--{{{-->
<link rel='shortcut icon' href='/bags/tiddlyspace/tiddlers/favicon.ico' />
<!--}}}-->
<!--{{{-->
<div class='header'>
<div id='sidebarSearch'>
<span macro='search'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='clearFloat'></div>
</div>
<div id='menuBar'>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
<div macro="tiddler {{jQuery('#sidebarTabs').makeFloat({x:'current',y:'current',speed:'fast'});'';}}"></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"
});
*/
//}}}
/***
|''Name''|RandomColorPalettePlugin|
|''Description''|Adds a random color palette to TiddlyWiki|
|''Author''|Jon Robson|
|''Version''|1.2.4|
|''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];
var tiddler = 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];
if(this.inprogress) {
return;
}
this.inprogress = true;
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("/*}}}*/");
var tid = store.getTiddler('ColorPalette');
if(!tid) {
tid = new Tiddler('ColorPalette');
tid.fields = merge({}, config.defaultCustomFields);
tid.modifier ='RandomColorPalette Macro';
} else {
// save location may be different
tid.fields = merge(tid.fields, config.defaultCustomFields);
}
tid.text = text.join("");
this.inprogress = false;
if(save) {
macro.saveColorPalette(tid);
}
return tid;
},
saveColorPalette: function(tid) {
// save the color palette in tid
tid = store.saveTiddler(tid.title, tid.title, tid.text, tid.modifier, tid.modified,
tid.tags, tid.fields, false, tid.created, '');
// 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);
refreshAll();
macro.reportChange();
},
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() {
config.macros.RandomColorPalette.handler(place, macroName, params, wikifier, paramString, tiddler);
};
createTiddlyButton(place, this.text, this.tooltip, btnHandler);
}
};
})(jQuery);
//}}}
<!--{{{-->
<div macro='slideRevision'></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::RevisionToolbar]] icons:yes more:popup'></div>
<div class="followPlaceHolder" macro="followTiddlers"></div>
<div class='heading'>
<div class='spaceSiteIcon' macro='tiddlerOrigin label:yes height:48 width:48'></div>
<div class='modifierIcon'
macro="view modifier SiteIcon label:yes height:48 width:48 labelPrefix:'modified by '">
</div>
<div class='title' macro='view title'></div>
<div class='tagClear'></div>
</div>
<div class='tagClear'></div>
<div class='concertina' ></div>
<div class='content'>
<div class='info'>
<div class='calendar'>
<div class='month' macro='view modified date mmm'></div>
<div class='date' macro='view modified date 0DD'></div>
<div class='time' macro='view modified date 0hh:0mm'></div>
</div>
<div class='tagClear'></div>
<div class='tagged' macro='tags'></div>
</div>
<div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagClear'></div>
<div class='tagging' macro='tagging'></div>
<div class='tagClear'></div>
<!--}}}-->
/***
|''Name''|RevisionsCommandPlugin|
|''Description''|provides access to tiddler revisions|
|''Author''|FND|
|''Contributors''|Martin Budden|
|''Version''|0.3.2|
|''Status''|@@beta@@|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/RevisionsCommandPlugin.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/plugins/|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''CoreVersion''|2.6.0|
|''Keywords''|serverSide|
!Usage
Extend [[ToolbarCommands]] with {{{revisions}}}.
!Revision History
!!v0.1 (2009-07-23)
* initial release (renamed from experimental ServerCommandsPlugin)
!!v0.2 (2010-03-04)
* suppressed wikification in diff view
!!v0.3 (2010-04-07)
* restored wikification in diff view
* added link to side-by-side diff view
!To Do
* strip server.* fields from revision tiddlers
* resolve naming conflicts
* i18n, l10n
* code sanitizing
* documentation
!Code
***/
//{{{
(function($) {
jQuery.twStylesheet(".diff { white-space: pre, font-family: monospace }",
{ id: "diff" });
var cmd = config.commands.revisions = {
type: "popup",
hideShadow: true,
text: "revisions",
tooltip: "display tiddler revisions",
revTooltip: "", // TODO: populate dynamically?
loadLabel: "loading...",
loadTooltip: "loading revision list",
selectLabel: "select",
selectTooltip: "select revision for comparison",
selectedLabel: "selected",
compareLabel: "compare",
linkLabel: "side-by-side view",
revSuffix: " [rev. #%0]",
diffSuffix: " [diff: #%0 #%1]",
dateFormat: "YYYY-0MM-0DD 0hh:0mm",
listError: "revisions could not be retrieved",
handlePopup: function(popup, title) {
stripSuffix = function(type, title) {
var str = cmd[type + "Suffix"];
var i = str.indexOf("%0");
i = title.indexOf(str.substr(0, i));
if(i != -1) {
title = title.substr(0, i);
}
return title;
};
title = stripSuffix("rev", title);
title = stripSuffix("diff", title);
var tiddler = store.getTiddler(title);
var type = this._getField("server.type", tiddler);
var adaptor = new config.adaptors[type]();
var limit = null; // TODO: customizable
var context = {
host: this._getField("server.host", tiddler),
workspace: this._getField("server.workspace", tiddler)
};
var loading = createTiddlyButton(popup, cmd.loadLabel, cmd.loadTooltip);
var params = { popup: popup, loading: loading, origin: title };
adaptor.getTiddlerRevisionList(title, limit, context, params, this.displayRevisions);
},
displayRevisions: function(context, userParams) {
removeNode(userParams.loading);
if(context.status) {
var callback = function(ev) {
var e = ev || window.event;
var revision = resolveTarget(e).getAttribute("revision");
context.adaptor.getTiddlerRevision(tiddler.title, revision, context,
userParams, cmd.displayTiddlerRevision);
};
var table = createTiddlyElement(userParams.popup, "table");
for(var i = 0; i < context.revisions.length; i++) {
var tiddler = context.revisions[i];
var row = createTiddlyElement(table, "tr");
var timestamp = tiddler.modified.formatString(cmd.dateFormat);
var revision = tiddler.fields["server.page.revision"];
var cell = createTiddlyElement(row, "td");
createTiddlyButton(cell, timestamp, cmd.revTooltip, callback, null,
null, null, { revision: revision });
cell = createTiddlyElement(row, "td", null, null, tiddler.modifier);
cell = createTiddlyElement(row, "td");
createTiddlyButton(cell, cmd.selectLabel, cmd.selectTooltip,
cmd.revisionSelected, null, null, null,
{ index:i, revision: revision, col: 2 });
cmd.context = context; // XXX: unsafe (singleton)!?
}
} else {
$("<li />").text(cmd.listError).appendTo(userParams.popup);
}
},
revisionSelected: function(ev) {
var e = ev || window.event;
e.cancelBubble = true;
if(e.stopPropagation) {
e.stopPropagation();
}
var n = resolveTarget(e);
var index = n.getAttribute("index");
var col = n.getAttribute("col");
while(!index || !col) {
n = n.parentNode;
index = n.getAttribute("index");
col = n.getAttribute("col");
}
cmd.revision = n.getAttribute("revision");
var table = n.parentNode.parentNode.parentNode;
var rows = table.childNodes;
for(var i = 0; i < rows.length; i++) {
var c = rows[i].childNodes[col].firstChild;
if(i == index) {
if(c.textContent) {
c.textContent = cmd.selectedLabel;
} else {
c.text = cmd.selectedLabel;
}
} else {
if(c.textContent) {
c.textContent = cmd.compareLabel;
} else {
c.text = cmd.compareLabel;
}
c.onclick = cmd.compareSelected;
}
}
},
compareSelected: function(ev) {
var e = ev || window.event;
var n = resolveTarget(e);
var context = cmd.context;
context.rev1 = n.getAttribute("revision");
context.rev2 = cmd.revision;
context.tiddler = context.revisions[n.getAttribute("index")];
context.format = "unified";
context.adaptor.getTiddlerDiff(context.tiddler.title, context,
context.userParams, cmd.displayTiddlerDiffs);
},
displayTiddlerDiffs: function(context, userParams) {
var tiddler = context.tiddler;
tiddler.title += cmd.diffSuffix.format([context.rev1, context.rev2]);
tiddler.text = "{{diff{\n" + context.diff + "\n}}}";
tiddler.tags = ["diff"];
tiddler.fields.doNotSave = "true"; // XXX: correct?
if(!store.getTiddler(tiddler.title)) {
store.addTiddler(tiddler);
}
var src = story.getTiddler(userParams.origin);
var tiddlerEl = story.displayTiddler(src, tiddler);
var uri = context.uri.replace("format=unified", "format=horizontal");
var link = $('<a target="_blank" />').attr("href", uri).text(cmd.linkLabel);
$(".viewer", tiddlerEl).prepend(link);
},
displayTiddlerRevision: function(context, userParams) {
var tiddler = context.tiddler;
tiddler.title += cmd.revSuffix.format([tiddler.fields["server.page.revision"]]);
tiddler.fields.doNotSave = "true"; // XXX: correct?
if(!store.getTiddler(tiddler.title)) {
store.addTiddler(tiddler);
}
var src = story.getTiddler(userParams.origin);
story.displayTiddler(src, tiddler);
},
_getField: function(name, tiddler) {
return tiddler.fields[name] || config.defaultCustomFields[name];
}
};
})(jQuery);
//}}}
This tiddler has been deleted.
<html><a class="button" href="javascript:;" onclick="window.scroll(0,0);">โฒ up โฒ</a></html><<saveChanges "save changes">><<toolbar jump>>
<<closeAll>><<permaview>><<newTiddler>>
{{tabSet tabContents sideBarControls{<<tiddler SideBarControls>>}}}
{{sideBarTabsets{<<tabs txtMainTab "TSpot" "TiddlySpot sidebar" [[SideBarTabs##Tspot]] "Recent" "Recently edited tiddlers" SideBarTabs##TabTimeline "All" "All tiddlers" SideBarTabs##TabAll "Tags" "All tags" SideBarTabs##TabTags "Missing" "Missing tiddlers" SideBarTabs##TabMoreMissing "More" "Orphaned tiddlers" SideBarTabs##TabMoreOrphans "Shadow" "Shadowed tiddlers" SideBarTabs##TabMoreShadowed >>}}}/%
!TabTimeline
<<timeline "modified" "15" "DDD d. 0DD MMM-YYYY">>
[[see all|TabTimeLine]]
!Tspot
<<tiddler [[SideBarTabs##scroll]] with: SideBarTabs##Tspot2>>
!Tspot2
{{hideBtn{<<search>>}}}
<<closeAll>>
<<permaview>>
<<newTiddler>>
<<newJournal "DD MMM YYYY" "journal">>
<<saveChanges>>
<<tiddler TspotSidebar>><<option pasUploadPassword>>
<<slider chkSliderOptionsPanel OptionsPanel "options ยป" "Change TiddlyWiki advanced options">>
!TabTags
<<tiddler SideBarTabs##scroll with: TabTags>>
!TabMoreMissing
<<tiddler SideBarTabs##scroll with: TabMoreMissing>>
!TabMoreOrphans
<<tiddler SideBarTabs##scroll with: TabMoreOrphans>>
!TabMoreShadowed
<<tiddler SideBarTabs##scroll with: TabMoreShadowed >>
!Publisher
<<tiddler SideBarTabs##scroll with: SideBarTabs##publish>>
!publish
<<TiddlySpacePublisher>>
!TabAll
<<tiddler SideBarTabs##scroll with: TabAll>>
!scroll
{{scroll{<<tiddler $1>>}}}[[see all|$1]]
!end %/
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
a ~TiddlyWiki out of space
[[StyleSheetTiddlySpace]]
/*{{{*/
.hideBtn .button{display:none !important;}
#tiddlerDisplay{margin:2em 26em 0 2em;}
#sidebarTabs{position:absolute;top:210px;margin:0 0 0 -1em;height:450px;overflow:hidden;}
#sidebarTabs .tabsetWrapper .tabContents {height:350px;min-height:0;}
.sideBarTabsets{margin-top:10px;display:block;}
.sideBarControls{float:right;margin-right:7px;}
#sidebarTabs .sideBarControls .button, #sidebarTabs .sideBarControls .tiddlyLink {display:block;font-weight:bold;padding:0 10px;color:[[ColorPalette::PrimaryMid]];}
.scroll{display:block;height:320px;overflow:auto;margin-bottom:5px;}
/*}}}*/
/*{{{*/
.publicLightText {
color: #C0E5FC;
}
.privateLightText {
color: #E2C1D6;
}
#backstageLogo {
margin: 1px auto auto -200px;
font-weight: bold;
width: 200px;
line-height:24px;
font-size: 1.2em;
padding: 0;
text-align: center;
top: 0;
position: absolute;
left: 50%;
}
#backstageLogo .svgIcon {
margin-top:-2px;
}
#backstageLogo .svgIconText {
display: none;
}
#backstageLogo .logoText {
position: absolute;
top: 0px;
margin-left: 5px;
}
#backstageArea {
z-index: 49;
color: white;
background-color: black;
background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #222),color-stop(0.5, #333),color-stop(1, #555));
background: -moz-linear-gradient(center bottom,#222 0%, #333 50%, #555 100%);
/* For Internet Explorer 5.5 - 7 */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222);
/* For Internet Explorer 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222)";
height: 24px;
padding: 0;
border-bottom: solid 1px black;
}
.backstageBackground {
fill: black;
}
#backstageButton {
overflow: hidden;
}
#backstageButton #backstageShow,
#backstageButton #backstageHide {
margin: 0px;
padding: 0px;
}
#backstageButton #backstageShow:hover,
#backstageButton #backstageHide:hover {
background: none;
color: none;
}
#backstageShow {
margin-right: -3px;
margin-top: -3px;
}
#backstageShow .svgIcon {
left: 8px;
position: relative;
top: -5px;
}
#messageArea {
top: 50px;
}
#backstageToolbar {
position: relative;
}
#backstageArea a {
padding: 0px;
margin-left: 0px;
color: white;
background: none;
}
#backstageArea a:hover {
background-color: white;
}
#backstage .tabContents ol,
#backstage .tabContents ul {
padding: auto;
}
#backstageButton a {
margin: 0;
}
.backstagePanelBody,
.backstagePanelBody .tabContents ul {
padding: 5px;
margin: 5px;
}
#backstage #backstagePanel {
margin-left: 5%;
padding: 0em;
margin-right: 5%;
}
#backstageToolbar a {
position: relative;
}
#backstageArea a.backstageSelTab,
#backstageToolbar .backstageTask {
line-height: 24px;
color: #767676;
}
.backstageTask .externalImage,
.backstageTask .image {
display: inline;
}
.backstageTask .txtUserName,
.backstageTask .spaceName {
color: #fff;
}
.backstageSelTab .txtUserName,
.backstageSelTab .spaceName,
a:hover .txtUserName,
a:hover .spaceName {
color: #000;
}
.spaceSiteIcon {
margin-right: 10px;
}
.userSiteIcon {
margin-left: 10px;
}
#backstageToolbar .task_space {
position: absolute;
top: 0px;
left: 0%;
}
#backstageToolbar .task_user span,
#backstageToolbar .task_login span {
display: block;
float: left;
}
#backstageToolbar .task_user,
#backstageToolbar .task_login {
display: block;
position: absolute;
top: 0px;
right: 5%;
}
#backstageToolbar .task_login img {
position: relative;
display: inline;
}
#backstageToolbar .task_space .svgIcon {
float: left;
position: relative;
z-index: 2;
}
#backstageToolbar a span {
z-index: 2;
}
#backstageToolbar .spaceSiteIcon {
float: left;
}
a.backstageTask {
display: block;
height: 53px;
}
#backstageToolbar a span.txtUserName,
#backstageToolbar a .txtUserName span {
display: inline;
float: none;
}
#backstage .deleteButton {
margin-left: 0.3em;
font-weight: bold;
color: red;
font-size: 1.6em;
}
#backstage .deleteButton:hover {
background: none;
}
#backstagePanel .TiddlySpaceLogin {
display: inline;
}
.backstagePanelBody .tabContents .button {
display: block;
}
.backstagePanelBody .tab {
margin: 0 0 0 0.6em;
padding: 0.4em 0.5em 1px 0.5em;
}
#backstage .tabContents{
padding: 1.5em;
}
#backstage .wizard {
border: 0px;
}
#backstage .txtSpaceTab li {
border: 1px solid #ddd;
background: #eee;
list-style: none;
margin: 0.5em;
padding: 0.5em;
width: 80%;
}
#backstage .txtSpaceTab li.annotation {
border: 2px solid [[ColorPalette::SecondaryMid]];
}
#backstage div li.listLink {
border: 0px;
width: 78%;
font-size: 0.7em;
}
#backstage div li.listTitle {
font-weight: bold;
text-decoration: underline;
font-size: 1em;
background: #ccc;
width: 100%;
}
#backstage div.txtSpaceTab li .deleteButton {
float: right;
}
#backstage fieldset {
border: solid 1px [[ColorPalette::Background]];
}
#backstage .viewer table,#backstage table.twtable {
border: 0px;
}
#backstageToolbar img {
padding: 0;
}
#backstage .wizard,
#backstage .wizardFooter {
background: none;
}
.viewer td, .viewer tr, .twtable td, .twtable tr {
border: 1px solid #eee;
}
#backstage .inlineList ul li {
background-color: [[ColorPalette::Background]];
border: solid 1px [[ColorPalette::TertiaryMid]];
display: block;
float: left;
list-style: none;
margin-right: 1em;
padding: 0.5em;
}
.backstageClear, .inlineList form {
clear: both;
display: block;
margin-top: 3em;
}
/*}}}*/
/*{{{*/
.headerForeground {
position: relative;
padding: 2em 0em 1em 0em;
float: right;
top: 0;
margin-right: 5.3em;
background-color: [[ColorPalette::PrimaryMid]];
text-align: right;
}
.header {
width: 100%; /* for ie */
}
.clearFloat {
clear: both;
}
#contentWrapper {
position: relative;
padding-top: 1px;
top: -1px;
}
.header {
position: relative;
background-color: [[ColorPalette::PrimaryMid]];
}
.siteTitle {
clear: both;
display: block;
}
#sidebarSearch {
padding: 0.8em 1em 1em;
width: 10.5em;
margin: 0.6em 0.6em;
float: right;
position: relative;
}
#sidebarSearch .txtOptionInput {
width: 100%;
margin-top: 5px;
}
#sidebarSearch .searchButton {
padding: 0.2em;
color: [[ColorPalette::Background]];
}
/*}}}*/
/*{{{*/
#menuBar {
left: 0;
right: 0;
position: relative;
background-color: [[ColorPalette::PrimaryLight]];
margin: 0;
padding: 0.5em 0 0.5em 0;
min-height: 1em;
overflow: hidden;
border-top: 1px solid [[ColorPalette::PrimaryDark]];
border-bottom: 1px solid [[ColorPalette::PrimaryDark]];
width: 100%; /* for ie 6 */
}
#mainMenu {
position: static;
text-align: left;
min-height: 1em;
margin-left: 1em;
float: left;
width: auto;
padding: 0;
}
#sidebarOptions {
float: right;
font-size: 1.1em;
line-height: 1.6em;
min-height: 1em;
padding-top: 0;
}
#mainMenu a {
padding: 0.6em 0.25em;
}
#mainMenu a:hover {
background-color: [[ColorPalette::PrimaryMid]];
color: [[ColorPalette::Background]]
}
#sidebarOptions a {
border: 0 none;
margin: 0 0.2em;
padding: 0.6em 0.25em;
display: inline;
}
/*}}}*/
/*{{{*/
#sidebar .wizard table {
margin: 0px;
}
#menuBar #sidebarOptions {
margin-right: 0.6em;
}
#sidebarTabs {
position: absolute;
right: 0;
top: 0;
width: 22.2em;
}
.tabset {
padding: 1em 6px 1px 0;
position: relative;
top: 2px;
}
#sidebarTabs .tabsetWrapper .tabset {
float: left;
height: auto;
display: inline;
width: 5.5em;
word-wrap: break-word;
top: 0;
padding: 0 0 1px;
}
#sidebarTabs .tabsetWrapper .tabsetWrapper .tabset {
float: none;
height: auto;
top: 1px;
padding: 0 0 1px;
}
.tab {
margin: 0.1em 0.25em 0 0;
padding: 6px 6px 0;
display: inline-block;
}
#sidebarTabs .tabsetWrapper .tabset .tab {
display: block;
margin: 0 0 1px 0.25em;
padding: 1em 6px 0.5em;
position: relative;
left: 3px;
border-right: 0;
border-bottom: 1px solid [[ColorPalette::TertiaryMid]];
border-color: [[ColorPalette::TertiaryMid]];
}
dd {
margin-left: 0px;
}
#sidebarTabs .tabsetWrapper .tabContents {
display: inline;
border-width: 1px 1px 1px 3px;
float: left;
border-color: [[ColorPalette::TertiaryMid]];
*height: expression(this.scrollHeight < 301? "300px" : "auto");
min-height: 25em;
background-color: [[ColorPalette::TertiaryPale]];
}
/*}}}*/
/*{{{*/
.concertina {
overflow: hidden;
display: none;
padding: 0.7em;
background-color: white;
}
.concertinaOn .concertina {
display: auto;
padding: 10px;
height: auto;
border-bottom: 1px solid [[ColorPalette: :PrimaryDark]];
overflow: auto;
}
.privateNotPublic .concertina,
.private .concertina {
background: -webkit-gradient(linear, left bottom, left top, color-stop(0.29, rgb(222,133,179)), color-stop(1, rgb(245,208,229)), color-stop(0.71, rgb(255,224,241)));
background: -moz-linear-gradient(center bottom, rgb(222,133,179) 29%, rgb(245,208,229) 100%, rgb(255,224,241) 71%);
/* For Internet Explorer 5.5 - 7 */
filter: "progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ffDE85B3)";
/* For Internet Explorer 8 */
-ms-filter: "progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ffDE85B3)";
}
.public .concertina,
.privateAndPublic .concertina {
background: -webkit-gradient(linear, left bottom, left top, color-stop(0.55, rgb(187,231,253)), color-stop(1, rgb(197,233,252)), color-stop(0.74, rgb(220,238,250)));
background: -moz-linear-gradient(center bottom, rgb(187,231,253) 55%, rgb(197,233,252) 100%, rgb(220,238,250) 74%);
/* For Internet Explorer 5.5 - 7 */
filter: "progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ffBBE7FD)";
/* For Internet Explorer 8 */
-ms-filter: "progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ffBBE7FD)";
}
.external .concertina {
background-color: white;
background: -webkit-gradient(linear, left bottom, left top, color-stop(0.25, rgb(139,214,158)), color-stop(1, rgb(175,230,187)), color-stop(0.74, rgb(204,240,213)));
background: -moz-linear-gradient(center bottom, rgb(139,214,158) 25%, rgb(175,230,187) 100%, rgb(204,240,213) 74%);
/* For Internet Explorer 5.5 - 7 */
filter: "progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ff8BD69E)";
/* For Internet Explorer 8 */
-ms-filter: "progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffffff, endColorstr=#ff8BD69E)";
}
.concertina .publishButton {
border-radius: 1em;
-webkit-border-radius: 1em;
-moz-border-radius: 1em;
background-color: white;
border: 1px solid black;
display: block;
padding: 0.7em;
text-align: center;
width: 12em;
}
.content .calendar {
margin-left: 2em;
position: relative;
width: 46px;
float: right;
margin-top: 2em;
cursor: pointer;
}
.content .calendar:hover {
opacity: 0.2;
}
.selected .tagging,
.selected .tagged,
.selected .tagging:hover,
.selected .tagged:hover {
background: none;
border: none;
}
.tagged {
float: right;
position: relative;
right: -2.4em;
}
.tagging, .tagged {
background: none;
border: none;
}
.tagging {
float: none;
}
.tagging li {
display: inline;
float: left;
}
.tagging .tiddlyLink {
-webkit-border-radius: 5px 5px 5px 5px;
-moz-border-radius: 5px 5px 5px 5px;
background-color: white;
margin: 0 0.2em 0.2em;
display: block;
padding: 0.8em;
}
.tagged .button {
-webkit-border-radius: 15px 0px 0px 15px;
-moz-border-radius: 15px 0px 0px 15px;
background-color: white;
border-bottom: 2px solid #ccc;
border-left: 2px solid #ccc;
border-top: 2px solid #ccc;
display: block;
margin: 0 0 0.3em -1.1em;
padding: 0.4em;
font-size: 0.9em;
width: 8em;
word-wrap: break-word;
color: [[ColorPalette: :Background]];
background: [[ColorPalette: :TertiaryMid]];
}
/* for following */
#popup .siteIcon {
float: left;
height: 25px;
}
.content {
position: relative;
top: 0;
left: 0;
width: 100%; /* IE */
}
.content .info {
float: right;
position: relative;
right: 1em;
top: 0;
width: 9em;
z-index: 2;
}
.heading {
left: 0;
margin-bottom: 3em;
position: relative;
top: 3em;
position: relative;
}
.followButton a:hover {
background: none;
color: black;
}
.followPlaceHolder {
position: absolute;
left: 5.8em;
top: 0.5em;
}
.followButton {
cursor: pointer;
-webkit-border-radius: 0.3em;
-moz-border-radius: 0.3em;
background: none repeat scroll 0 0 #CCCCCC;
color: red;
min-width: 2em;
height: 1em;
padding: 0.4em;
text-align: center;
}
.followButton:before {
content: "\00a0";
display: block; /* reduce the damage in FF3.0 */
position: absolute;
bottom: -0.2em;
left: 0.1em;
width: 0;
height: 0;
border-width: 0.5em 0.2em 0 0.6em;
border-style: solid;
border-color: #ccc transparent;
}
.calendar .month {
padding: 2px;
color: white;
text-align: center;
border-left: solid 1px black;
border-right: solid 1px black;
border-top: solid 1px black;
background-color: #F09CA7;
}
.toolbar svg {
height: 20px;
width: 20px;
}
.toolbar svg .glyph{
fill: #ccc;
}
.toolbar a:hover .glyph{
fill: #111;
}
.calendar .date {
background-color: white;
color: #515151;
font-weight: bold;
text-align: center;
font-size: 1.8em;
border: solid 1px black;
}
.calendar .time {
font-size: 0.7em;
background-color: white;
border-left: solid 1px black;
border-right: solid 1px black;
border-bottom: solid 1px black;
text-align: center;
}
.originButton,
.modifierIcon .label {
color: [[ColorPalette: :TertiaryDark]];
font-size: 0.8em;
text-align: center;
display: block;
}
.modifierIcon {
margin-right: 2em;
position: relative;
float: right;
}
.tiddler .viewer {
margin: 0 12em 0 2em;
padding-bottom: 4em;
line-height: normal;
}
.viewer pre {
margin-left: 0;
}
.tiddler .title {
font-size: 1.7em;
display: block;
padding-bottom: 0.5em;
margin-bottom: 0.4em;
border-bottom: 0.05em solid [[ColorPalette: :PrimaryDark]];
word-wrap: break-word;
}
.spaceIcon img {
height: 40px;
}
.siteIcon .label {
color: [[ColorPalette: :TertiaryDark]];
}
.siteIcon {
text-align: center;
}
.tiddler .spaceSiteIcon {
width: 7em;
margin-top: -15px;
position: relative;
float: left;
margin-top: 0em;
}
.followButton a {
color: red;
}
.tiddler {
position: relative;
-moz-box-shadow: 2px 2px 8px black;
-webkit-box-shadow: 2px 2px 8px black;
filter: progid: DXImageTransform.Microsoft.Shadow(color='#000000', Direction=135, Strength=3);
box-shadow: 2px 2px 8px black;
background-color: white;
margin-bottom: 2em;
padding: 0;
}
.tiddler .editor {
padding-left: 1em;
padding-right: 1em;
}
.tiddler .heading .title {
margin-left: 5em;
margin-right: 7em;
position: relative;
}
.tiddler .headingClear {
clear: both;
}
.tiddler .subtitle {
font-size: 0.8em;
margin-top: 0.2em;
}
.external .spaceSiteIcon a:hover {
background-color: #8BD69E;
}
.privateNotPublic .spaceSiteIcon a:hover,
.private .spaceSiteIcon a:hover {
background-color: #DE85B3;
}
.privateAndPublic .spaceSiteIcon a:hover,
.public .spaceSiteIcon a:hover {
background-color: #BBE7FD;
}
.toolbar {
position: absolute;
padding: 1em 1em 0 0;
top: 0px;
right: 0px;
}
.tiddler .toolbar .button {
float: left;
border: none;
display: block;
}
.tiddler .toolbar a:hover {
background-color: #ccc;
border: solid 1px #000;
}
.tiddler .button.command_closeTiddler {
float: right;
}
.tiddler .tagged .listTitle {
display: none;
}
.revButton {
float: right;
}
/*! EditTemplate specific*/
.tiddler .privacySettings {
text-align: center;
}
.tiddler .privacySettings .originButton{
display: inline;
}
.annotationsBox {
margin-top: 4em;
}
.editorFooter {
padding: 0.3em 1em;
}
.heading .editor input {
width: 90%;
font-size: 1.5em;
}
/*}}}*/
/*{{{*/
body {
font-size: 1.0em;
font-family: helvetica, arial, sans-serif;
background-color: [[ColorPalette::Background]];
}
#displayArea {
margin: 0;
position: relative;
}
#tiddlerDisplay {
margin: 2em 23em 0 2em;
}
.public {
border-color: #C7EAFF;
}
.private {
border-color: #FFCAE9;
}
.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: black;
}
[[StyleSheetHeader]]
[[StyleSheetMenuBar]]
[[StyleSheetSideBar]]
[[StyleSheetTiddler]]
/*}}}*/
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
/***
|''Name''|TiddlySpaceToolbar|
|''Description''|augments tiddler toolbar commands with SVG icons|
|''Author''|Osmosoft|
|''Version''|0.6.2|
|''Status''|@@beta@@|
|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceToolbar.js|
|''CodeRepository''|http://github.com/TiddlySpace/tiddlyspace|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''CoreVersion''|2.5.0|
|''Requires''|ImageMacroPlugin|
|''Keywords''|toolbar icons SVG|
!Description
replaces tiddler toolbar commands with SVG icons if available
!Notes
requires [[ImageMacroPlugin|http://svn.tiddlywiki.org/Trunk/contributors/JonRobson/plugins/ImageMacroPlugin/plugins/ImageMacroPlugin.tid]]
SVG icons are drawn from tiddlers titled {{{<command>.svg}}}
!TODO
* rename (IconToolbarPlugin?)
!Code
***/
//{{{
(function($) {
if(!config.macros.image) {
throw "Missing dependency: ImageMacroPlugin";
}
var macro = config.macros.toolbar;
macro.icons = {
cloneTiddler: "editTiddler"
};
var _handler = macro.handler;
macro.handler = function(place, macroName, params, wikifier,
paramString, tiddler) {
var toolbar = $(place);
toolbar.attr({
refresh: "macro",
macroName: macroName
}).data("args", arguments);
var status = _handler.apply(this, arguments);
if(tiddler.isReadOnly()) {
toolbar.addClass("toolbarReadOnly");
} else {
toolbar.removeClass("toolbarReadOnly");
}
var parsedParams = paramString.parseParams("name")[0];
if(parsedParams.icons && parsedParams.icons == "yes") {
this.augmentCommandButtons(place);
}
if(parsedParams.more && parsedParams.more == "popup") {
// note we must override the onclick event like in createTiddlyButton
// otherwise the click event is the popup AND the slider
$(".moreCommand", place)[0].onclick = macro.onClickMorePopUp;
}
return status;
};
macro.refresh = function(place, params) {
var args = $(place).empty().data("args");
this.handler.apply(this, args);
};
var imageMacro = config.macros.image;
macro.augmentCommandButtons = function(toolbar) {
$(".button", toolbar).each(function(i, el) {
var cmd = $(el).attr("commandname");
cmd = cmd ? cmd : "moreCommand"; // XXX: special-casing of moreCommand due to ticket #1234
var icon = store.tiddlerExists(cmd) ? cmd : macro.icons[cmd];
var text = $(el).text();
if(store.tiddlerExists(icon)) {
$(el).empty();
imageMacro.renderImage(el, icon, { alt: text });
}
});
};
// provide onClickMore to provide extra commands in a popup
macro.onClickMorePopUp = function(ev) {
ev = ev || window.event;
var sibling = this.nextSibling;
var commands = sibling.childNodes;
var popup = Popup.create(this);
addClass(popup ,"taggedTiddlerList");
for(var i = 0; i < commands.length; i++) {
var li = createTiddlyElement(popup, "li", null);
var oldCommand = commands[i];
var command = oldCommand.cloneNode(true);
command.onclick = oldCommand.onclick;
li.appendChild(command);
}
Popup.show();
ev.cancelBubble = true;
if(ev.stopPropagation) {
ev.stopPropagation();
}
return false;
};
})(jQuery);
//}}}
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
/%
!info
|Name|ToggleFullScreen|
|Original Source|http://www.TiddlyTools.com/#ToggleFullScreen|
|Version|2.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|Create a link that shows/hides sidebars and page headers|
|Moderation|added tiddlersBar, sidebarOptions, sidebarTabs and (Spacebackstage - pending) to be hidden as well|
|Moderator|Mรฅns Mรฅrtensson|
|Source|http://sandboxmm.tiddlyspot.com/#ToggleFullScreen|
Usage
<<<
{{{
<<tiddler ToggleFullScreen>>
<<tiddler ToggleFullScreen with: label altlabel>>
}}}
<<<
Example
<<<
{{{<<tiddler ToggleFullScreen with: fullscreen restore>>}}}
<<tiddler ToggleFullScreen##show with: fullscreen restore>>
<<<
!end
!show
<html><nowiki><a href='javascript:;' title="FULDSKรRM: slรฅ alle elementer bortset fra tiddleren fra"
onmouseover="
this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
+encodeURIComponent(encodeURIComponent(this.onclick))
+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
var co=config.options;
co.chkFullScreen=!co.chkFullScreen;
var showmm=!co.chkFullScreen && co.chkShowSidebarOptions!==false;
var showsb=!co.chkFullScreen && co.chkShowSidebarTabs!==false;
var showtb=!co.chkFullScreen && co.chkDisableTabsBar!==true;
var showsn=!co.chkFullScreen && co.chkShowSiteNav!==false;
var showtr=!co.chkFullScreen && co.chkShowMenuBar!==false;
var showtl=!co.chkFullScreen && co.chkShowTopMenuL!==false;
var showla=!co.chkFullScreen && co.chkShowLysAvis!==false;
var showcrumbs=!co.chkFullScreen && co.chkShowBreadcrumbs!==false
&& config.macros.breadcrumbs && config.macros.breadcrumbs.crumbs.length;
var cw=document.getElementById('contentWrapper');
var da=document.getElementById('displayArea');
var mm=document.getElementById('mainMenu');
var sb=document.getElementById('menuBar');
var sm=document.getElementById('storyMenu');
var bc=document.getElementById('breadCrumbs');
var tb=document.getElementById('tiddlersBar');
var sn=document.getElementById('sidebarTabs');
var tr=document.getElementById('topMenuR');
var tl=document.getElementById('topMenuL');
var la=document.getElementById('lysAvis');
var ti=document.getElementById('tiddlerDisplay');
if (cw){
var elems=cw.getElementsByTagName('*');
for (var i=0; i<elems.length; i++) if (hasClass(elems[i],'header'))
{ elems[i].style.display=co.chkFullScreen?'none':'block'; break; }
}
if (mm) {
mm.style.display=showmm?'block':'none';
da.style.marginLeft=showmm?(co.txtDisplayAreaLeftMargin||''):'1em';
}
if (sb) {
sb.style.display=showsb?'block':'none';
da.style.marginRight=showsb?(co.txtDisplayAreaRightMargin||''):'1em';
}/*
if (la) {
la.style.display=showla?'block':'none';
ti.style.marginBottom=showla?(co.txtTiddlerHeight||''):'160em';}*/
if (la){
var elems=la.getElementsByTagName('*');
for (var i=0; i<elems.length; i++) if (hasClass(elems[i],'height'))
{ elems[i].style.display=co.chkFullScreen?'none':'block'; break; }
}
if (sm) sm.style.display=!co.chkFullScreen ?'block':'none';
if (bc) bc.style.display=showcrumbs?'block':'none';
if (tb) tb.style.display=!co.chkFullScreen ?'block':'none';
if (sn) sn.style.display=!co.chkFullScreen ?'block':'none';
if (tr) tr.style.display=!co.chkFullScreen ?'block':'none';
if (tl) tl.style.display=!co.chkFullScreen ?'block':'none';
if (la) la.style.display=!co.chkFullScreen ?'block':'none';
this.innerHTML=!co.chkFullScreen?'$1':'$2';
var b=document.getElementById('restoreFromFullscreenButton');
if (b) removeNode(b);
else {
setStylesheet(store.getTiddlerText('ToggleFullScreen##styles'),'fullScreenStyles');
var b=createTiddlyElement(null,'span','restoreFromFullscreenButton','selected');
b.innerHTML='◊';
b.title='RESTORE: redisplay page header, menu and sidebar';
b.onclick=this.onclick;
document.body.insertBefore(b,null);
}
return false;
">$1</a></html>
!styles
#restoreFromFullscreenButton {
position:fixed; top:.3em; right:.3em; z-index:10001;
cursor:pointer; font-size:8pt; color:ButtonText !important;
border:2px outset ButtonFace; padding:0px 3px;
background-color:ButtonFace; -moz-appearance:button;
}
!end
%/<<tiddler {{var src='ToggleFullScreen'; src+(tiddler&&tiddler.title==src?'##info':'##show');}}
with: {{'$'+'1'!='$1'?'$1':'full screen'}}
{{'$'+'2'!='$2'?'$2':'restore'}}>>
This tiddler has been deleted.
|~ViewToolbar|closeTiddler +editTiddler +cloneTiddler > fields publishTiddler pubRev revisions syncing permalink references jump closeOthers|
|~EditToolbar|+saveTiddler saveDraft -cancelTiddler deleteTiddler|
|~RevisionToolbar|> fields revert|
/***
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 = 'sandboxmm';
// 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 |
| 07/09/2010 11:01:41 | YourName | [[/|http://sandboxmm.tiddlyspot.com/]] | [[store.cgi|http://sandboxmm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sandboxmm.tiddlyspot.com/index.html]] | . |
| 07/09/2010 11:03:07 | YourName | [[/|http://sandboxmm.tiddlyspot.com/]] | [[store.cgi|http://sandboxmm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sandboxmm.tiddlyspot.com/index.html]] | . |
| 07/09/2010 16:13:45 | YourName | [[/|http://sandboxmm.tiddlyspot.com/]] | [[store.cgi|http://sandboxmm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sandboxmm.tiddlyspot.com/index.html]] | . |
| 07/09/2010 16:19:17 | YourName | [[/|http://sandboxmm.tiddlyspot.com/]] | [[store.cgi|http://sandboxmm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sandboxmm.tiddlyspot.com/index.html]] | . |
| 07/09/2010 16:19:39 | YourName | [[/|http://sandboxmm.tiddlyspot.com/]] | [[store.cgi|http://sandboxmm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sandboxmm.tiddlyspot.com/index.html]] | . | ok |
| 07/09/2010 16:23:06 | YourName | [[/|http://sandboxmm.tiddlyspot.com/]] | [[store.cgi|http://sandboxmm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sandboxmm.tiddlyspot.com/index.html]] | . |
| 07/09/2010 16:26:51 | YourName | [[/|http://sandboxmm.tiddlyspot.com/]] | [[store.cgi|http://sandboxmm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sandboxmm.tiddlyspot.com/index.html]] | . |
| 07/09/2010 16:27:41 | YourName | [[/|http://sandboxmm.tiddlyspot.com/]] | [[store.cgi|http://sandboxmm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sandboxmm.tiddlyspot.com/index.html]] | . |
| 10/09/2010 09:49:57 | YourName | [[/|http://sandboxmm.tiddlyspot.com/#ToggleFullScreen]] | [[store.cgi|http://sandboxmm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sandboxmm.tiddlyspot.com/index.html]] | . | ok |
| 10/09/2010 09:51:27 | YourName | [[/|http://sandboxmm.tiddlyspot.com/#ToggleFullScreen]] | [[store.cgi|http://sandboxmm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sandboxmm.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");
//}}}
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes more:popup'></div>
<div class='heading'>
<div class='title' macro='view title'></div>
<div class='tagClear'></div>
</div>
<div class='tagClear'></div>
<div class='concertina' ></div>
<div class='content'>
<div class='info'>
<div class='calendar'>
<div class='month' macro='view modified date mmm'></div>
<div class='date' macro='view modified date 0DD'></div>
<div class='time' macro='view modified date 0hh:0mm'></div>
</div>
<div class='tagClear'></div>
<div class='tagged' macro='tags'></div>
</div>
<div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagClear'></div>
<div class='tagging' macro='tagging'></div>
<div class='tagClear'></div>
<!--}}}-->
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://sandboxmm.tiddlyspot.com/controlpanel]] (your control panel username is //sandboxmm//).
<<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.
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="1081 357 41 41"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2010-06-05 15:00Z</dc:date><!-- Produced by OmniGraffle Professional 5.2.2 --></metadata><defs><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#b8b8b8"/><stop offset=".5" stop-color="black"/><stop offset="1" stop-color="black"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(1101.07983 359.21158) rotate(90) scale(27)"/><linearGradient x1="0" x2="1" id="Gradient_2" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="#280000"/></linearGradient><linearGradient id="Obj_Gradient_2" xl:href="#Gradient_2" gradientTransform="translate(1122.6825 365.0514) rotate(149.999995) scale(48.74121)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><g><path d="M 1083.50964 359.21158 C 1083.6959 359.26721 1083.7958 359.29745 1083.7958 359.29745 C 1083.7958 359.29745 1099.2529 358.84064 1109.0364 367.7494 C 1114.3331 372.57196 1116.91943 380.21628 1118.17786 386.21158 L 1118.65015 386.21158 L 1118.65015 359.21158 Z" fill="url(#Obj_Gradient)"/><path d="M 1113.9187 376.45688 C 1115.64136 375.06143 1116.8745 373.04938 1117.24854 370.68896 C 1118.0514 365.61874 1114.5885 360.85217 1109.5182 360.04938 C 1106.0405 359.49866 1102.7052 360.95535 1100.69434 363.56107" fill="#c1e6fd"/><path d="M 1113.9187 376.45688 C 1115.64136 375.06143 1116.8745 373.04938 1117.24854 370.68896 C 1118.0514 365.61874 1114.5885 360.85217 1109.5182 360.04938 C 1106.0405 359.49866 1102.7052 360.95535 1100.69434 363.56107" stroke="#7aa3be" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="1.5"/><path d="M 1111.5276 370.43875 C 1111.71826 369.98734 1111.8236 369.49133 1111.8236 368.97086 C 1111.8236 366.88382 1110.1299 365.19073 1108.04346 365.19073 C 1107.4209 365.19073 1106.8334 365.34143 1106.3154 365.60834" fill="#f4c4e2"/><path d="M 1111.5276 370.43875 C 1111.71826 369.98734 1111.8236 369.49133 1111.8236 368.97086 C 1111.8236 366.88382 1110.1299 365.19073 1108.04346 365.19073 C 1107.4209 365.19073 1106.8334 365.34143 1106.3154 365.60834" stroke="#ce81b0" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="1.5"/><path d="M 1083.79565 359.29755 C 1083.79565 359.29755 1099.2533 358.84064 1109.036 367.74924 C 1118.817 376.6543 1119.3557 395.18008 1119.35815 395.1798 C 1119.3573 395.18008 1118.0963 378.3106 1111.4159 374.57047 C 1104.73865 370.83041 1102.46655 373.58853 1102.46655 373.58853 C 1102.46655 373.58853 1105.8236 370.51877 1102.7499 365.99915 C 1099.68506 361.479 1083.79565 359.29755 1083.79565 359.29755 Z" fill="url(#Obj_Gradient_2)"/><path d="M 1083.79565 359.29755 C 1083.79565 359.29755 1099.2533 358.84064 1109.036 367.74924 C 1118.817 376.6543 1119.3557 395.18008 1119.35815 395.1798 C 1119.3573 395.18008 1118.0963 378.3106 1111.4159 374.57047 C 1104.73865 370.83041 1102.46655 373.58853 1102.46655 373.58853 C 1102.46655 373.58853 1105.8236 370.51877 1102.7499 365.99915 C 1099.68506 361.479 1083.79565 359.29755 1083.79565 359.29755 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".5"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="72 648 70 70"
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<g>
<path d="M 77.59005 669.34003 C 71.532745 681.90424 73.714462 697.4441 84.135193 707.86475
C 97.315445 721.0451 118.684715 721.0451 131.8649 707.86475
C 145.04515 694.68457 145.04515 673.31537 131.8649 660.13513
C 121.4441 649.7141 105.90419 647.53253 93.339905 653.5899 L 102.047455 662.2976
C 109.58637 660.2373 117.987976 662.16803 123.90997 668.08997
C 132.69673 676.8767 132.69673 691.12317 123.90997 699.90985
C 115.12313 708.6966 100.87699 708.6966 92.09012 699.90985
C 86.168266 693.98804 84.23744 685.58643 86.297653 678.04755 Z M 72 648 L 72 668.25 L 78.75 661.49957
L 99.00019 681.7502 L 105.750175 675.00006 L 85.50013 654.75012 L 92.249985 648 Z" fill="black"
class="glyph"/>
</g>
</g>
</svg>
This tiddler has been deleted.
This tiddler has been deleted.
This tiddler has been deleted.
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="918 510 14 14" width="14pt" height="14pt">
<defs>
<radialGradient cx="0" cy="0" r="1" id="Gradient" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="white"/>
<stop offset="1" stop-color="#2b2b2b"/>
</radialGradient>
<radialGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(922.3752 513.7837) scale(11.4739436)"/>
</defs>
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<g>
<path d="M 929.6952 512.9018 C 927.1568 510.36337 923.0412 510.36337 920.5028 512.9018 C 917.9644 515.4402 917.9644 519.5558 920.5028 522.09418 C 923.0412 524.63257 927.1568 524.63257 929.6952 522.09418 C 932.2336 519.5558 932.2336 515.4402 929.6952 512.9018 M 925.099 515.7425 L 927.17633 513.66516 L 928.9318 515.42065 L 926.8545 517.498 L 928.9318 519.57532 L 927.17633 521.3308 L 925.099 519.25348 L 923.02167 521.3308 L 921.2662 519.57532 L 923.3435 517.498 L 921.2662 515.42065 L 923.02167 513.66516 Z" fill="url(#Obj_Gradient)"/>
<path
d="M 927.61447,515.38354 A 4.5120482,4.2590361 0 1 1 918.59037,515.38354 A 4.5120482,4.2590361 0 1 1 927.61447,515.38354 z"
transform="matrix(1.0218069,0,0,1.0462046,-18.063694,-21.648443)"
id="path2394"
style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
</g>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="78 222 60 60"
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<g>
<path d="M 107.92718 244.14815 L 86.651474 222.89253 L 78.85206 230.69925 L 100.120415 251.9476 L 78.774 273.27396
L 86.57342 281.08075 L 107.927216 259.74707 L 129.39981 281.19946 L 137.19922 273.39267 L 115.73397 251.94763
L 137.121155 230.58054 L 129.32175 222.77374 Z" fill="black" class="glyph"/>
</g>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="450 366 38 57"
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<g>
<path d="M 452.1094 421.2422 L 450 421.2422 L 450 423 L 487.9688 423 L 487.9688 421.2422 L 485.8595 421.2422
L 485.8595 377.29688 L 487.9688 377.29688 L 487.9688 375.53906 L 485.8595 375.53906
C 485.8595 375.53906 481.12463 371.59341 473.02023 370.52802 C 472.6824 368.9689 471.72098 366.75 468.9844 366.75
C 466.24783 366.75 465.28638 368.9689 464.94864 370.52802
C 456.84418 371.59341 452.1094 375.53906 452.1094 375.53906 L 450 375.53906 L 450 377.29688 L 452.1094 377.29688
Z M 467.12247 370.32086 L 467.12247 370.32086 C 467.3805 369.42395 467.90762 368.50781 468.9844 368.50781
C 470.0612 368.50781 470.5883 369.42395 470.84634 370.32086
C 470.24136 370.2848 469.62054 370.26562 468.9844 370.26562
C 468.34827 370.26562 467.72748 370.2848 467.12247 370.32086 Z M 454.21875 420.92804 L 454.21875 420.92804
C 455.46762 420.42087 456.32816 419.35281 456.32816 418.11716 L 456.32816 377.29688 L 458.4375 377.29688
L 458.4375 421.2422 L 454.21875 421.2422 Z M 460.5469 420.92804 L 460.5469 420.92804
C 461.79578 420.42087 462.65625 419.35281 462.65625 418.11716 L 462.65625 377.29688 L 464.76566 377.29688
L 464.76566 421.2422 L 460.5469 421.2422 Z M 466.87503 420.92804 L 466.87503 420.92804
C 468.1239 420.42087 468.9844 419.35281 468.9844 418.11716 L 468.9844 377.29688 L 471.09378 377.29688
L 471.09378 421.2422 L 466.87503 421.2422 Z M 473.2032 420.92804 L 473.2032 420.92804
C 474.45203 420.42087 475.31256 419.35281 475.31256 418.11716 L 475.31256 377.29688 L 477.4219 377.29688
L 477.4219 421.2422 L 473.2032 421.2422 Z M 479.5313 420.92804 L 479.5313 420.92804
C 480.78018 420.42087 481.64066 419.35281 481.64066 418.11716 L 481.64066 377.29688 L 483.75006 377.29688
L 483.75006 421.2422 L 479.5313 421.2422 Z" fill="black" class="glyph"/>
</g>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="301 225 48 52"
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<g>
<path d="M 333.00003 234 L 306 258.75003 L 301.5 270 L 312.75 265.50003 L 339.75 240.74998 Z M 337.5 229.50002
L 335.24988 231.75008 L 341.99997 238.50003 L 344.24997 236.24995 Z M 342 225.00003 L 339.74988 227.25009
L 346.5 234.00005 L 348.75 231.75003 Z M 301.5 273.9719 C 301.5 273.9719 309.59888 277.99927 317.70013 273.97183
C 325.80066 269.94437 341.99997 276.65686 341.99997 276.65686 L 341.99997 273.97195
C 341.99997 273.97195 325.80014 267.2594 317.70013 271.28687 C 309.6 275.31451 301.5 271.28683 301.5 271.28683 Z"
fill="#101010" class="glyph"/>
</g>
</g>
</svg>
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AP8zZgAAAGYA//8zAADMMwD/mTMAAGYzAP8zMwAAADMAzP8AAADMAADMmQAAAGYAAMwzAAAAAADuzAAA3QAAALvMAACqAAAAiMwAAHcAAABVmQAARAAAACKZAAARAADuAJkA3QAAALsAmQCqAAAAiACZAHcAAABVAJkARAAAACIAZgARAADuAABm3QAAALsAAGaqAAAAiAAAZncAAABVAABmRAAAACIAAGYRAAAA7u7uM93d3QC7u7szqqqqAIiIiDN3d3cAVVVVM0RERAAiIiIzERERAAAAADMBAQEBAQEBAQEBpXl5eXl5eXl5eXmlAQEBAQEBAQEBAQEBAQEBAQEBgHl5eXl5eXl5eXl5eXl5gAEBAQEBAQEBAQEBAQEB/Xp5eXlVT04qKioqTk9VeXl5ev0BAQEBAQEBAQEBAaV5eXlPKioqKioqKioqKioqT3l5eaUBAQEBAQEBAQGAeXlVTioqKioqKioqKioqKioqTlV5eYABAQEBAQEBgHl5VSoqKioqKioqKioqKioqKioqKlV5eYABAQEBAaV5eVUqKioqKioqKioqKioqKioqKioqKlV5eaUBAQEBeXlVKioqKioqKioqKioqKioqKioqKioqKlV5eQEBAXl5eU4qKioqKioqKjExMTExMSoqKioqKioqTnl5eQEBeXlPKioqKioqKjEyMjIyMjIyMjEqKioqKioqT3l5AXp5eSoqKioqKioxMjIxBwcHBzEyMjEqKioqKioqeXl6eXlVKioqKioqMTIxBwcHBwcHBwcxMjEqKioqKipVeXl5eU8qKioqKioyMgcHBwcHBwcHBwcyMioqKioqKk95eXl5TioqKioqMTIxBwcHBwcHBwcHBzEyMSoqKioqTnl5eXkqKioqKioxMgcHBwcHBwcHBwcHBzIxKioqKioqeXl5eSoqKioqKjEyBwcHBwcHBwcHBwcHMjEqKioqKip5eXl5KioqKioqMTIHBwcHBwcHBwcHBwcyMSoqKioqKnl5eXkqKioqKioxMgcHBwcHBwcHBwcHBzIxKioqKioqeXl5eU4qKioqKjEyMQcHBwcHBwcHBwcxMjEqKioqKk55eXl5TyoqKioqKjIyBwcHBwcHBwcHBzIyKioqKioqT3l5eXlVKioqKioqMTIxBwcHBwcHBwcxMjEqKioqKipVeXl6eXkqKioqKioqMTIyMQcHBwcxMjIxKioqKioqKnl5egF5eU8qKioqKioqMTIyMjIyMjIyMSoqKioqKipPeXkBAXl5eU4qKioqKioqKjExMTExMSoqKioqKioqTnl5eQEBAXl5VSoqKioqKioqKioqKioqKioqKioqKipVeXkBAQEB+nl5VSoqKioqKioqKioqKioqKioqKioqVXl5+gEBAQEBenl5VSoqKioqKioqKioqKioqKioqKlV5eXoBAQEBAQEBeXl5VU4qKioqKioqKioqKioqKk5VeXl5AQEBAQEBAQEBenl5eU8qKioqKioqKioqKipPeXl5egEBAQEBAQEBAQEB+nl5eXlVT04qKioqTk9VeXl5efoBAQEBAQEBAQEBAQEBAXl5eXl5eXl5eXl5eXl5eXkBAQEBAQEBAQEBAQEBAQEBAQF6eXl5eXl5eXl5eXoBAQEBAQEBAQEB/+AH//+AAf/+AAB//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADgAAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAHAAAADwAAAA+AAAAfwAAAP+AAAH/wAAD/+AAB//4AB///gB/8oAAAAIAAAAEAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAwAAAAMAAAADAAAABG1bSA61m3JXuqB4mbuhd8m9o3jqvaF4+b2hePm9o3jqu6F3ybqgeJm1m3JXbVtIDgAAAAQAAAADAAAAAwAAAAMAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAUAAAAGAAAACI98Wye0nXWavKF4876kev++pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vqR6/76kev+8oXjztJ11mo98WycAAAAIAAAABgAAAAUAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAQAAAAHAAAAChwcHBKulnGJvaN5+L6kev++pHr/y7GJ/9/Fnv/s1K7/9t25//rivv/64r7/9t25/+zUrv/fxZ7/y7GJ/76kev++pHr/vaN5+K6WcYkcHBwSAAAACgAAAAcAAAAEAAAAAgAAAAEAAAAAAAAAAAAAAAEAAAADAAAABwAAAAtuYkUst552z76kev++pHr+1LuS//Latf/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD/8tq1/9S7kv++pHr+vqR6/7eeds9uYkUsAAAACwAAAAcAAAADAAAAAQAAAAAAAAABAAAAAgAAAAQAAAAIi3hbNbqgd+a+pHr/xayD/+3Vr//85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr//FrIP/vqR6/7qgd+aJdVg0AAAACAAAAAQAAAACAAAAAQAAAAEAAAACAAAABIl8WSW8oXjlvqR6/8yyiv/54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//ngvP/Msor/vqR6/7yheOWJfFklAAAABAAAAAIAAAABAAAAAAAAAAFfXz8Iu6F4zL6kev/Msor/+uK+//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//rivv/Msor/vqR6/7uheMxfXz8IAAAAAQAAAAAAAAAAAAAAAbqid4K+pHr/xayD//ngvP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//fgvP/FrIP/vqR6/7qid4IAAAABAAAAAAAAAAC3l28gvaN5+L6kev7t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+/Twv/Qq8f/u5HK/7OGzP+zhsz/u5HK/9Crx//v08L//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr/++pHr+vaN5+LeXbyAAAAAAAAAAALuheJa+pHr/1LuS//zlwP/85cD//OXA//zlwP/85cD//OXA//riwP/Pq8f/r4HM/6+Bzf+vgc3/r4HN/6+Bzf+vgc3/r4HN/6+BzP/Pq8f/+uLA//zlwP/85cD//OXA//zlwP/85cD//OXA/9S5kv++pHr/u6F4lgAAAACii3MLvKF4876kev/y2rX//OXA//zlwP/85cD//OXA//zlwP/64sD/w5vJ/6+Bzf+vg83/w5vc/9W06v/dwPD/3cDw/9W06v/Dm9z/r4PN/6+Bzf/Dm8n/+uLA//zlwP/85cD//OXA//zlwP/85cD/8tq1/76kev+8oXjzootzC72feFW+pHr/y7GJ//zlwP/85cD//OXA//zlwP/85cD//OXA/8+rx/+vgc3/tIfQ/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/tIfQ/6+Bzf/Pq8f//OXA//zlwP/85cD//OXA//zlwP/85cD/y7GJ/76kev+9n3hVvaF4mL6kev/fxZ7//OXA//zlwP/85cD//OXA//zlwP/v08L/r4HM/6+Dzf/Wtev/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/r4PN/6+BzP/v08L//OXA//zlwP/85cD//OXA//zlwP/fxZ7/vqR6/72heJi8oXfIvqR6/+zUrv/85cD//OXA//zlwP/85cD//OXA/9Crx/+vgc3/w5vc/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Dm9z/r4HN/9Crx//85cD//OXA//zlwP/85cD//OXA/+zUrv++pHr/vKF3yL2jeOq+pHr/9t25//zlwP/85cD//OXA//zlwP/85cD/u5HK/6+Bzf/VtOr/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9W06v+vgc3/u5HK//zlwP/85cD//OXA//zlwP/85cD/9t25/76kev+9o3jqvaF4+b6kev/64r7//OXA//zlwP/85cD//OXA//zlwP+zhsz/r4HN/93A8P/hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/3cDw/6+Bzf+zhsz//OXA//zlwP/85cD//OXA//zlwP/64r7/vqR6/72hePm9oXj5vqR6//rivv/85cD//OXA//zlwP/85cD//OXA/7OGzP+vgc3/3cDw/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//dwPD/r4HN/7OGzP/85cD//OXA//zlwP/85cD//OXA//rivv++pHr/vaF4+b2jeOq+pHr/9t25//zlwP/85cD//OXA//zlwP/85cD/u5HK/6+Bzf/VtOr/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9W06v+vgc3/u5HK//zlwP/85cD//OXA//zlwP/85cD/9t25/76kev+9o3jqvKF3yL6kev/s1K7//OXA//zlwP/85cD//OXA//zlwP/Qq8f/r4HN/8Ob3P/hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/w5vc/6+Bzf/Qq8f//OXA//zlwP/85cD//OXA//zlwP/s1K7/vqR6/7yhd8i9oXiYvqR6/9/Fnv/85cD//OXA//zlwP/85cD//OXA/+/Twv+vgcz/r4PN/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//hw/P/4cPz/9a16/+vg83/r4HM/+/Twv/85cD//OXA//zlwP/85cD//OXA/9/Fnv++pHr/vaF4mL2feFW+pHr/y7GJ//zlwP/85cD//OXA//zlwP/85cD//OXA/8+rx/+vgc3/tIfQ/9a16//hw/P/4cPz/+HD8//hw/P/4cPz/+HD8//Wtev/tIfQ/6+Bzf/Pq8f//OXA//zlwP/85cD//OXA//zlwP/85cD/y7GJ/76kev+9n3hVootzC7yhePO+pHr/8tq1//zlwP/85cD//OXA//zlwP/85cD/+uLA/8Obyf+vgc3/r4PN/8Ob3P/VtOr/3cDw/93A8P/VtOr/w5vc/6+Dzf+vgc3/w5vJ//riwP/85cD//OXA//zlwP/85cD//OXA//Latf++pHr/vKF486KLcwsAAAAAu6N3l76kev/Uu5L//OXA//zlwP/85cD//OXA//zlwP/85cD/+uLA/8+rx/+vgcz/r4HN/6+Bzf+vgc3/r4HN/6+Bzf+vgc3/r4HM/8+rx//64sD//OXA//zlwP/85cD//OXA//zlwP/85cD/1LmS/76kev+7oXiWAAAAAAAAAAC3l28gvaN5+L6kev7t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+/Twv/Qq8f/u5HK/7OGzP+zhsz/u5HK/9Crx//v08L//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA/+3Vr/++pHr+vaN5+LeXbyAAAAAAAAAAAAAAAAC6oneCvqR6/8Wsg//54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/34Lz/xayD/76kev+6oneCAAAAAAAAAAAAAAAAAAAAAH9/VQa8oHjLvqR6/8yyiv/64r7//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD/+uK+/8yyiv++pHr/vKB4y39/VQYAAAAAAAAAAAAAAAAAAAAAAAAAALKhbh67o3nkvqR6/8yyiv/54Lz//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//ngvP/Msor/vqR6/7ujeeSyoW4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALqbdim7o3nkvqR6/8Wsg//t1a///OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/t1a//xayD/76kev+7o3nkupt2KQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKhbh68oHjLvqR6/76kev7Uu5L/8tq1//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/85cD//OXA//zlwP/y2rX/1LmS/76kev6+pHr/vKB4y7Khbh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9/VQa6oneCvaN5+L6kev++pHr/y7GJ/9/Fnv/s1K7/9t25//rivv/64r7/9t25/+zUrv/fxZ7/y7GJ/76kev++pHr/vaN5+Lqid4J/f1UGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3l28gu6F4lryhePO+pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vqR6/76kev++pHr/vKF487uheJa3l28gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAootzC72feFW9oXiYvKF3yL2jeOq9oXj5vaF4+b2jeOq8oXfIvaF4mL2feFWii3MLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gB///gAH//gAAf/wAAD/4AAAf8AAAD+AAAAfAAAADwAAAA4AAAAGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/gAAB/8AAA//gAAf/+AAf//4Af/
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="434 218 68 68"
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<g>
<path d="M 478.39694 232.53705 L 478.39694 232.53705
C 477.1145 231.85132 475.77875 231.30147 474.41058 230.88734 L 474.41058 218.24994 L 461.58942 218.24994
L 461.58942 230.88734 C 460.22125 231.30147 458.8855 231.85132 457.60306 232.53705 L 448.66824 223.60214
L 439.6022 232.66814 L 448.53717 241.60304 C 447.8515 242.8854 447.30157 244.22116 446.88745 245.58936
L 434.25 245.58936 L 434.25 258.41052 L 446.88745 258.41052
C 447.30157 259.77869 447.8515 261.11447 448.53717 262.39688 L 439.6022 271.33173 L 448.66824 280.3978
L 457.60306 271.46283 C 458.8855 272.14862 460.22125 272.69846 461.58942 273.11252 L 461.58942 285.74988
L 474.41058 285.74988 L 474.41058 273.11252 C 475.77875 272.69846 477.1145 272.14862 478.39694 271.46283
L 487.33176 280.3978 L 496.39767 271.33173 L 487.46286 262.39688
C 488.14853 261.11447 488.69836 259.77869 489.11255 258.41052 L 501.74988 258.41052 L 501.74988 245.58936
L 489.11255 245.58936 C 488.69836 244.22116 488.14853 242.8854 487.46286 241.60304 L 496.39767 232.66814
L 487.33176 223.60214 Z M 475.3328 244.66714 C 479.3825 248.71698 479.3825 255.2829 475.3328 259.33273
C 471.28296 263.3826 464.71704 263.3826 460.66724 259.33273
C 456.61737 255.2829 456.61737 248.71698 460.66724 244.66714
C 464.71704 240.61734 471.28296 240.61734 475.3328 244.66714" fill="#111"
class="glyph"/>
</g>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1"
viewBox="416 13 34 34" width="34pt" height="34pt">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<g>
<path d="M 418.78613 28.08259 C 420.0481 20.113405 427.54074 14.6697865 435.51 15.931775
C 443.4801 17.193707 448.9237 24.686371 447.6617 32.656437 C 446.3989 40.62574 438.90625
46.069302 430.93698 44.807312 C 422.96774 43.545353 417.52328 36.0519 418.78613 28.08259 Z"
fill="#c1e6fd"/><path d="M 418.78613 28.08259 C 420.0481 20.113405 427.54074 14.6697865 435.51 15.931775 C
443.4801 17.193707 448.9237 24.686371 447.6617 32.656437 C
446.3989 40.62574 438.90625 46.069302 430.93698 44.807312 C 422.96774 43.545353 417.52328 36.0519 418.78613
28.08259 Z" stroke="#7aa3be" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="2"/>
<path d="M 433.17715 35.897835 C 429.89737 35.897835 427.23505 33.2355 427.23505 29.955704
C 427.23505 26.675049 429.89737 24.013567 433.17715 24.013567 C 436.45694 24.013567 439.11926 26.675049 439.11926
29.955704 C 439.11926 33.2355 436.45694 35.897835 433.17715 35.897835 Z" fill="#f4c4e2"/>
<path d="M 433.17715 35.897835 C 429.89737 35.897835 427.23505 33.2355 427.23505 29.955704
C 427.23505 26.675049 429.89737 24.013567 433.17715 24.013567 C 436.45694 24.013567 439.11926 26.675049 439.11926
29.955704 C 439.11926 33.2355 436.45694 35.897835 433.17715 35.897835 Z" stroke="#ce81b0"
stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="2"/>
</g>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="491 13 34 35" width="34pt" height="35pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2010-06-05 14:34Z</dc:date><!-- Produced by OmniGraffle Professional 5.2.2 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><g><title>Layer 1</title><path d="M 493.45312 28.112467 C 494.7151 20.143282 502.20773 14.699663 510.177 15.961652 C 518.1471 17.223583 523.5907 24.716248 522.32867 32.686314 C 521.06586 40.655617 513.57324 46.099178 505.60397 44.83719 C 497.63474 43.57523 492.19028 36.081776 493.45312 28.112467 Z" fill="white"/><path d="M 493.45312 28.112467 C 494.7151 20.143282 502.20773 14.699663 510.177 15.961652 C 518.1471 17.223583 523.5907 24.716248 522.32867 32.686314 C 521.06586 40.655617 513.57324 46.099178 505.60397 44.83719 C 497.63474 43.57523 492.19028 36.081776 493.45312 28.112467 Z" stroke="#bebebe" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="2"/><path d="M 507.84293 35.927711 C 504.56314 35.927711 501.90082 33.265377 501.90082 29.98558 C 501.90082 26.704926 504.56314 24.043444 507.84293 24.043444 C 511.1227 24.043444 513.78503 26.704926 513.78503 29.98558 C 513.78503 33.265377 511.1227 35.927711 507.84293 35.927711 Z" fill="#f4c4e2"/><path d="M 507.84293 35.927711 C 504.56314 35.927711 501.90082 33.265377 501.90082 29.98558 C 501.90082 26.704926 504.56314 24.043444 507.84293 24.043444 C 511.1227 24.043444 513.78503 26.704926 513.78503 29.98558 C 513.78503 33.265377 511.1227 35.927711 507.84293 35.927711 Z" stroke="#ce81b0" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="2"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="301 592 37 36" width="37pt" height="3pc"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2010-07-21 12:53Z</dc:date><!-- Produced by OmniGraffle Professional 5.2.3 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><g><title>Layer 1</title><path d="M 303.9367 606.33264 C 305.2315 598.36346 312.91907 592.91986 321.09567 594.18182 C 329.2731 595.4438 334.8583 602.9364 333.56348 610.9065 C 332.26782 618.8758 324.58026 624.31934 316.40369 623.05737 C 308.22711 621.7954 302.64102 614.30194 303.9367 606.33264 Z" fill="#c1e6fd"/><path d="M 303.9367 606.33264 C 305.2315 598.36346 312.91907 592.91986 321.09567 594.18182 C 329.2731 595.4438 334.8583 602.9364 333.56348 610.9065 C 332.26782 618.8758 324.58026 624.31934 316.40369 623.05737 C 308.22711 621.7954 302.64102 614.30194 303.9367 606.33264 Z" stroke="#7aa3be" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="2"/><path d="M 318.70273 614.1482 C 315.33759 614.1482 312.60602 611.4859 312.60602 608.20605 C 312.60602 604.9254 315.33759 602.2639 318.70273 602.2639 C 322.06784 602.2639 324.79944 604.9254 324.79944 608.20605 C 324.79944 611.4859 322.06784 614.1482 318.70273 614.1482 Z" fill="white"/><path d="M 318.70273 614.1482 C 315.33759 614.1482 312.60602 611.4859 312.60602 608.20605 C 312.60602 604.9254 315.33759 602.2639 318.70273 602.2639 C 322.06784 602.2639 324.79944 604.9254 324.79944 608.20605 C 324.79944 611.4859 322.06784 614.1482 318.70273 614.1482 Z" stroke="#6a96bd" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="2"/><path d="M 315.1293 613.7912 C 316.02603 608.27203 321.35019 604.50195 327.01303 605.37598 C 332.67642 606.24994 336.54456 611.4391 335.64783 616.95892 C 334.75049 622.47815 329.42633 626.24823 323.76352 625.3742 C 318.10068 624.5002 314.23193 619.3105 315.1293 613.7912 Z" fill="white"/><path d="M 315.1293 613.7912 C 316.02603 608.27203 321.35019 604.50195 327.01303 605.37598 C 332.67642 606.24994 336.54456 611.4391 335.64783 616.95892 C 334.75049 622.47815 329.42633 626.24823 323.76352 625.3742 C 318.10068 624.5002 314.23193 619.3105 315.1293 613.7912 Z" stroke="#bebebe" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="2"/><path d="M 325.3543 619.20392 C 323.02374 619.20392 321.13193 617.36005 321.13193 615.08856 C 321.13193 612.81653 323.02374 610.97327 325.3543 610.97327 C 327.68488 610.97327 329.5767 612.81653 329.5767 615.08856 C 329.5767 617.36005 327.68488 619.20392 325.3543 619.20392 Z" fill="#f4c4e2"/><path d="M 325.3543 619.20392 C 323.02374 619.20392 321.13193 617.36005 321.13193 615.08856 C 321.13193 612.81653 323.02374 610.97327 325.3543 610.97327 C 327.68488 610.97327 329.5767 612.81653 329.5767 615.08856 C 329.5767 617.36005 327.68488 619.20392 325.3543 619.20392 Z" stroke="#ce81b0" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="2"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="416 13 34 34" width="34pt" height="34pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2010-06-05 14:34Z</dc:date><!-- Produced by OmniGraffle Professional 5.2.2 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><g><title>Layer 1</title><path d="M 418.78613 28.08259 C 420.0481 20.113405 427.54074 14.6697865 435.51 15.931775 C 443.4801 17.193707 448.9237 24.686371 447.6617 32.656437 C 446.3989 40.62574 438.90625 46.069302 430.93698 44.807312 C 422.96774 43.545353 417.52328 36.0519 418.78613 28.08259 Z" fill="#c1e6fd"/><path d="M 418.78613 28.08259 C 420.0481 20.113405 427.54074 14.6697865 435.51 15.931775 C 443.4801 17.193707 448.9237 24.686371 447.6617 32.656437 C 446.3989 40.62574 438.90625 46.069302 430.93698 44.807312 C 422.96774 43.545353 417.52328 36.0519 418.78613 28.08259 Z" stroke="#7aa3be" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="2"/><path d="M 433.17715 35.897835 C 429.89737 35.897835 427.23505 33.2355 427.23505 29.955704 C 427.23505 26.675049 429.89737 24.013567 433.17715 24.013567 C 436.45694 24.013567 439.11926 26.675049 439.11926 29.955704 C 439.11926 33.2355 436.45694 35.897835 433.17715 35.897835 Z" fill="white"/><path d="M 433.17715 35.897835 C 429.89737 35.897835 427.23505 33.2355 427.23505 29.955704 C 427.23505 26.675049 429.89737 24.013567 433.17715 24.013567 C 436.45694 24.013567 439.11926 26.675049 439.11926 29.955704 C 439.11926 33.2355 436.45694 35.897835 433.17715 35.897835 Z" stroke="#6a96bd" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width="2"/></g></g></svg>
@@Please do not modify this tiddler; it was created automatically upon space creation.@@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="364 157 64 51" width="64pt" height="51pt"><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><g><title>Layer 1</title><path d="M 364.50006 184.50061 L 386.99985 207.00037 L 396 198.00002 L 373.50003 175.50066 Z M 403.02295 181.97704 C 400.38693 179.34099 396.11307 179.34099 393.47702 181.97704 C 390.841 184.61307 390.841 188.88695 393.47702 191.52298 C 396.11307 194.15903 400.38693 194.15903 403.02295 191.52298 C 405.65906 188.88695 405.65906 184.61307 403.02295 181.97704 M 414.27298 170.72704 C 411.63693 168.091 407.36307 168.091 404.72702 170.72704 C 402.091 173.36308 402.091 177.63693 404.72702 180.27296 C 407.36307 182.90901 411.63693 182.90901 414.27298 180.27296 C 416.90903 177.63693 416.90903 173.36308 414.27298 170.72704 M 425.523 159.47705 C 422.88696 156.841 418.6131 156.841 415.97705 159.47705 C 413.341 162.11308 413.341 166.38695 415.97705 169.02295 C 418.6131 171.65903 422.88696 171.65903 425.523 169.02295 C 428.15906 166.38695 428.15906 162.11308 425.523 159.47705" fill="#020202"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="2 724 68 55"
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<g>
<path d="M 2.25 756 L 11.25 747 L 24.75 760.4994 L 60.750004 724.4994 L 69.75 733.49902
L 24.749977 778.49976 Z" fill="#101010" class="glyph"/>
</g>
</g>
</svg>
/***
!
Name: YourSearchBookmarklet
Version: 2.1.4
Source: http://tiddlywiki.abego-software.de/#YourSearchPlugin
Author: UdoBorkowski, XavierVergรฉs
Licence: BSD open source license (abego Software)
Copyright: © 2005-2008 http://www.abego-software.de
Community: http://xdexavier.googlepages.com/yoursearch.html
***/
//{{{
(function(){var a=document.createElement("script");a.src="http://tiddlywiki.abego-software.de/archive/YourSearchPlugin/YourSearchPlugin.js";a.onload=function(){refreshPageTemplate();displayMessage("YourSearch er blevet hentet")};document.getElementsByTagName("head")[0].appendChild(a)})();
//}}}