Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
Die als nächstes anstehenden Aufgaben...
Aufgaben in der Warteschlange...
Aufgaben die auf ein Ereignis warten, bevor sie angegangen werden können...
Projekte die __vielleicht__ in Zukunft anstehen...
Auf später verschobene Projekte...
Familienangelegenheiten...
Wissenschaft und Forschung...
Alles, was die Arbeit angeht...
Die Arbeit betreffende Kontakte...
Soziale Kontakte und Organisationen...
Firmenkontakte und Unternehmen...
Kontakte, die mir helfen können...
Zu finden oder zu forschen...
Orte an die ich gehen muss oder will...
Dinge die ich lesen werde...
Zu schreibendes, bspw. Mails...
/***
|''Name:''|AccordionMenuPlugin|
|''Description:''|Turn an unordered list into an accordion style menu|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#AccordionMenuPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.0|
|''Date:''|03/11/2007|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.5|
((_@@color:red;modified version for tbGTD@@(''Note'': This version has been modified for tbGTD, i.e. doubleclick opening all categories.)))
!!Usage:
* put {{{<<accordion>>}}} on the line after your unordered list
!!Customizing:
* customize the css via the shadow tiddler [[StyleSheetAccordionMenu]]
* or give the list a custom class by passing the classes as parameters to the macro.
** Eg: {{{<<accordion ClassName1 ClassName2>>}}}
***/
//{{{
config.macros.accordion={
dblClick:true, //allows doubleclick to open all
dropchar:"", //" \u00BB",
handler:function(place,macroName,params,wikifier,paramString,tiddler){
list=findRelated(place.lastChild,"UL","tagName","previousSibling");
if(!list)return;
addClass(list,"accordion");
if(params.length)addClass(list,paramString);
this.fixLinks(list.childNodes);
},
fixLinks:function(els){
for(var i=0;i<els.length;i++){
if(els[i].tagName.toLowerCase()=="li"){
var link=findRelated(els[i].firstChild,"A","tagName","nextSibling");
if(!link){
var ih=els[i].firstChild.data;
els[i].removeChild(els[i].firstChild);
link=createTiddlyElement(null,"a",null,null,ih+this.dropchar,{href:"javascript:;"});
els[i].insertBefore(link,els[i].firstChild);
}
else{
link.firstChild.data=link.firstChild.data + this.dropchar;
removeClass(link,"tiddlyLinkNonExisting");
}
link.onclick=this.show;
addClass(link,'main');
if(this.dblClick)link.ondblclick=this.showall;
}
}
},
showall:function(e){
var i,u=this.parentNode.parentNode;
for(i=0;i<u.childNodes.length;i++)u.childNodes[i].setAttribute('class','accordion-active')
},
show:function(e){
var list=this.parentNode.parentNode;
var els=list.childNodes;
for(var i=0;i<els.length;i++){removeClass(els[i],"accordion-active");}
addClass(this.parentNode,"accordion-active");
}
}
config.shadowTiddlers["StyleSheetAccordionMenu"] =
"ul.accordion li ul {display:none;}\n"+
"ul.accordion li.accordion-active ul {display:block;}\n"+
store.addNotification("StyleSheetAccordionMenu",refreshStyles);
//}}}
<<tiddler {{t='Aktualisierungen';t+'##'+(tiddler.title==t?'list':'show');}} with: {{var t;try{t=story.findContainingTiddler(place).getAttribute('tiddler');}catch(e){t='';}t;}}>>/%
!show
((@@color:#39C;font-weight:bold;Brauchst du auch?(!Brauchst du diesen Tiddler noch?
Wenn du diesen Tiddler noch nicht in deinem tbGTD hast oder vielleicht eine ältere Version, importiere ihn einfach aus diesem Dokument. <<tiddler 'Aktualisierungen##check' with: '$1'>>
[[Mehr Tiddler die du noch nicht hast...|Aktualisierungen]])))
!list
<script>
var out='',t,ti,tids=store.getTiddlers('title');
for(t=0;t<tids.length;t++){ti=tids[t].title;
if(store.getValue(ti,'need'))out+='\n*[['+ti+']]';}
return out==''?'':'!Tiddler die du seit Version 1.2 aktualisieren solltest...'+out;
</script>
!check
<script>var ti,f;ti='$1';if(ti!='$'+'1'){f=store.getValue(ti,'dependson');return f?'Damit dieser Tiddler richtig funktioniert solltest u.U. du auch folgende aktualisieren: @@display:block;margin-bottom:5px;'+f+'@@':'';}</script>
!end%/
Benutze das [[Archiv]], um Informationen zu speichern, die nicht länger für die tägliche Arbeit benötigt werden, indem Du ihnen ein ~Archiv-Tag zuordnest. Um um Ablenkung und zuviel Informationen zu vermeiden, importiere archivierte Tiddler regelmäßig in ein extra Archiv tbGTD. Danach lösche die mit ~Archiv-Tags gekennzeichneten Tiddler [[hiermit...|Archiv löschen...]]
<script label="Klicke hier" title="Klicke hier um archivierte tiddler zu löschen.">
var t,tgt,ca,ar,clean=[];
ar=store.getTaggedTiddlers('Archiv');
for(ca=0;ca<ar.length;ca++){
tgt=store.getTaggedTiddlers(ar[ca].title);
for(t=0;t<tgt.length;t++)clean.pushUnique(tgt[t].title);
}
if(clean.length>0){
if(!confirm('Willst du wirklich alle '+clean.length+' archivierten Tiddler löschen?\n'+clean))return;
for(t=0;t<clean.length;t++){
store.removeTiddler(clean[t]);
story.closeTiddler(clean[t],true);
}
}else alert('Nichts zu löschen da.');
</script> um archivierte Tiddler zu löschen ...Du wirst vor dem Löschen nach einer Bestätigung gefragt.
Aufgaben beinhalten, was Du tun willst. Weise ihnen einen Status zu.
''Neu:'' <<newTiddler label:"#nächste" title:"neue nächste Aufgabe" prompt:"eine neue nächste Aufgabe anlegen" focus:title tag:#nächste>><<newTiddler label:"#später" title:"Aufgabe für später" prompt:"eine neue Aufgabe für später anlegen" focus:title tag:#später>><<newTiddler label:"#wartend" title:"neue wartende Aufgabe" prompt:"eine neue wartende Aufgabe anlegen" focus:title tag:#wartend>><<newTiddler label:"#zukünftig" title:"zukünftige Aufgabe" prompt:"eine neue zukünftige Aufgabe anlegen" focus:title tag:#zukünftig>>
Bereiche sind die am weitesten gefassten Kategorie für Deine Tätigkeiten; ordne sie vor allem Projekten zu...
[[Måns|http://groups.google.com/groups/profile?enc_user=TL3rmxIAAACOXD17GHw82HnRt3bG-LGz8rhlH0Pnl47z4AZhN98BFg]] war so freundlich, [[mich auf einen Fehler hinzuweisen|http://groups.google.com/group/tiddlywiki/browse_frm/thread/6fd7285a50c6d14d]] der auftrat, wenn man versucht hat, beim Starten von tbGTD entweder das linke @@#mainMenu@@ oder die rechte @@#sidebar@@ auszublenden. Dies sollte funktionieren, in dem man beim Aufruf von @@toggleSideBarTB@@ in [[topMenuL]] oder [[topMenuR]] den zweiten Parameter auf @@hide@@ (versteckt) setzt.
Jetzt funktioniert alles erwartungsgemäß. Um das Update zu bekommen, importiere einfach ToggleSideBarTB erneut in dein tbGTD aus diesem Dokument.
/***
|Name|CalendarPlugin|
|Source|http://www.TiddlyTools.com/#CalendarPlugin|
|Version|1.5.0|
|Author|Eric Shulman|
|Original Author|SteveRumsby|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Description|display monthly and yearly calendars|
NOTE: For //enhanced// date popup display, optionally install [[DatePlugin]] and [[ReminderMacros]]
!!!Usage:
<<<
|{{{<<calendar>>}}}|full-year calendar for the current year|
|{{{<<calendar year>>}}}|full-year calendar for the specified year|
|{{{<<calendar year month>>}}}|one month calendar for the specified month and year|
|{{{<<calendar thismonth>>}}}|one month calendar for the current month|
|{{{<<calendar lastmonth>>}}}|one month calendar for last month|
|{{{<<calendar nextmonth>>}}}|one month calendar for next month|
|{{{<<calendar +n>>}}}<br>{{{<<calendar -n>>}}}|one month calendar for a month +/- 'n' months from now|
<<<
!!!Configuration:
<<<
|''First day of week:''<br>{{{config.options.txtCalFirstDay}}}|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|
|''First day of weekend:''<br>{{{config.options.txtCalStartOfWeekend}}}|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|
<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//
|''Week number display format:''<br>{{{config.options.txtWeekNumberDisplayFormat }}}|<<option txtWeekNumberDisplayFormat >>|
|''Week number link format:''<br>{{{config.options.txtWeekNumberLinkFormat }}}|<<option txtWeekNumberLinkFormat >>|
<<<
!!!Code
***/
//{{{
version.extensions.CalendarPlugin= { major: 1, minor: 5, revision: 0, date: new Date(2009,5,31)};
//}}}
//{{{
if(config.options.txtCalFirstDay == undefined)
config.options.txtCalFirstDay = 0;
if(config.options.txtCalStartOfWeekend == undefined)
config.options.txtCalStartOfWeekend = 5;
if(config.options.chkDisplayWeekNumbers == undefined)
config.options.chkDisplayWeekNumbers = false;
if(config.options.chkDisplayWeekNumbers)
config.options.txtCalFirstDay = 0;
if(config.options.txtWeekNumberDisplayFormat == undefined)
config.options.txtWeekNumberDisplayFormat = 'w0WW';
if(config.options.txtWeekNumberLinkFormat == undefined)
config.options.txtWeekNumberLinkFormat = 'YYYY - Woche 0WW';
if(config.options.txtCalendarReminderTags == undefined)
config.options.txtCalendarReminderTags = 'reminder';
config.macros.calendar = {
monthnames:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
daynames:['M','T','W','T','F','S','S'],
todaybg:'#070',
weekendbg:'#333',
monthbg:'#111',
holidaybg:'#093',
journalDateFmt:'0DD. MMM YYYY',
monthdays:[31,28,31,30,31,30,31,31,30,31,30,31],
holidays:[ ] // for customization see [[CalendarPluginConfig]]
};
//}}}
//{{{
function calendarIsHoliday(date)
{
var longHoliday = date.formatString('0DD/0MM/YYYY');
var shortHoliday = date.formatString('0DD/0MM');
for(var i = 0; i < config.macros.calendar.holidays.length; i++) {
if( config.macros.calendar.holidays[i]==longHoliday
|| config.macros.calendar.holidays[i]==shortHoliday)
return true;
}
return false;
}
//}}}
//{{{
config.macros.calendar.handler = function(place,macroName,params) {
var calendar = createTiddlyElement(place, 'table', null, 'calendar', null);
calendar.cellPadding="0";calendar.cellSpacing="0";
var tbody = createTiddlyElement(calendar, 'tbody');
var today = new Date();
var year = today.getYear();
if (year<1900) year+=1900;
// get journal format from SideBarOptions (ELS 5/29/06 - suggested by MartinBudden)
var text = store.getTiddlerText('SideBarOptions');
var re = new RegExp('<<(?:newJournal)([^>]*)>>','mg'); var fm = re.exec(text);
if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }
var month=-1;
if (params[0] == 'thismonth') {
var month=today.getMonth();
} else if (params[0] == 'lastmonth') {
var month = today.getMonth()-1; if (month==-1) { month=11; year--; }
} else if (params[0] == 'nextmonth') {
var month = today.getMonth()+1; if (month>11) { month=0; year++; }
} else if (params[0]&&'+-'.indexOf(params[0].substr(0,1))!=-1) {
var month = today.getMonth()+parseInt(params[0]);
if (month>11) { year+=Math.floor(month/12); month%=12; };
if (month<0) { year+=Math.floor(month/12); month=12+month%12; }
} else if (params[0]) {
year = params[0];
if(params[1]) month=parseInt(params[1])-1;
if (month>11) month=11; if (month<0) month=0;
}
if (month!=-1) {
cacheReminders(new Date(year, month, 1, 0, 0), 31);
createCalendarOneMonth(tbody, year, month);
} else {
cacheReminders(new Date(year, 0, 1, 0, 0), 366);
createCalendarYear(tbody, year);
}
window.reminderCacheForCalendar = null;
}
//}}}
//{{{
// cache used to store reminders while the calendar is being rendered
// it will be renulled after the calendar is fully rendered.
window.reminderCacheForCalendar = null;
//}}}
//{{{
function cacheReminders(date, leadtime)
{
if (window.findTiddlersWithReminders == null) return;
window.reminderCacheForCalendar = {};
var leadtimeHash = [];
leadtimeHash [0] = 0;
leadtimeHash [1] = leadtime;
var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);
for(var i = 0; i < t.length; i++) {
//just tag it in the cache, so that when we're drawing days, we can bold this one.
window.reminderCacheForCalendar[t[i]['matchedDate']] = 'reminder:' + t[i]['params']['title'];
}
}
//}}}
//{{{
function createCalendarOneMonth(calendar, year, mon)
{
var row = createTiddlyElement(calendar, 'tr');
createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon]+' '+year, true, year, mon);
row = createTiddlyElement(calendar, 'tr');
createCalendarDayHeader(row, 1);
createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}
//{{{
function createCalendarMonth(calendar, year, mon)
{
var row = createTiddlyElement(calendar, 'tr');
createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon]+' '+ year, false, year, mon);
row = createTiddlyElement(calendar, 'tr');
createCalendarDayHeader(row, 1);
createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}
//{{{
function createCalendarYear(calendar, year)
{
var row;
row = createTiddlyElement(calendar, 'tr');
var back = createTiddlyElement(row, 'td');
var backHandler = function() {
removeChildren(calendar);
createCalendarYear(calendar, parseInt(year)-1);
return false; // consume click
};
createTiddlyButton(back, '<', 'Previous year', backHandler);
back.align = 'center';
var yearHeader = createTiddlyElement(row, 'td', null, 'calendarYear', year);
yearHeader.align = 'center';
yearHeader.setAttribute('colSpan',config.options.chkDisplayWeekNumbers?22:19);//wn**
var fwd = createTiddlyElement(row, 'td');
var fwdHandler = function() {
removeChildren(calendar);
createCalendarYear(calendar, parseInt(year)+1);
return false; // consume click
};
createTiddlyButton(fwd, '>', 'Next year', fwdHandler);
fwd.align = 'center';
createCalendarMonthRow(calendar, year, 0);
createCalendarMonthRow(calendar, year, 3);
createCalendarMonthRow(calendar, year, 6);
createCalendarMonthRow(calendar, year, 9);
}
//}}}
//{{{
function createCalendarMonthRow(cal, year, mon)
{
var row = createTiddlyElement(cal, 'tr');
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);
row = createTiddlyElement(cal, 'tr');
createCalendarDayHeader(row, 3);
createCalendarDayRows(cal, year, mon);
}
//}}}
//{{{
function createCalendarMonthHeader(cal, row, name, nav, year, mon)
{
var month;
if (nav) {
var back = createTiddlyElement(row, 'td');
back.align = 'center';
back.style.background = config.macros.calendar.monthbg;
var backMonHandler = function() {
var newyear = year;
var newmon = mon-1;
if(newmon == -1) { newmon = 11; newyear = newyear-1;}
removeChildren(cal);
cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
createCalendarOneMonth(cal, newyear, newmon);
return false; // consume click
};
createTiddlyButton(back, '<', 'Previous month', backMonHandler);
month = createTiddlyElement(row, 'td', null, 'calendarMonthname')
createTiddlyLink(month,name,true);
month.setAttribute('colSpan', config.options.chkDisplayWeekNumbers?6:5);//wn**
var fwd = createTiddlyElement(row, 'td');
fwd.align = 'center';
fwd.style.background = config.macros.calendar.monthbg;
var fwdMonHandler = function() {
var newyear = year;
var newmon = mon+1;
if(newmon == 12) { newmon = 0; newyear = newyear+1;}
removeChildren(cal);
cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
createCalendarOneMonth(cal, newyear, newmon);
return false; // consume click
};
createTiddlyButton(fwd, '>', 'Next month', fwdMonHandler);
} else {
month = createTiddlyElement(row, 'td', null, 'calendarMonthname', name)
month.setAttribute('colSpan',config.options.chkDisplayWeekNumbers?8:7);//wn**
}
month.align = 'center';
month.style.background = config.macros.calendar.monthbg;
}
//}}}
//{{{
function createCalendarDayHeader(row, num)
{
var cell;
for(var i = 0; i < num; i++) {
if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, 'td');//wn**
for(var j = 0; j < 7; j++) {
var d = j + (config.options.txtCalFirstDay - 0);
if(d > 6) d = d - 7;
cell = createTiddlyElement(row, 'td', null, null);
createTiddlyElement(cell,'span',null,'button',config.macros.calendar.daynames[d]);
if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))
cell.style.background = config.macros.calendar.weekendbg;
}
}
}
//}}}
//{{{
function createCalendarDays(row, col, first, max, year, mon) {
var i;
if (config.options.chkDisplayWeekNumbers){
if (first<=max) {
var ww = new Date(year,mon,first);
var td=createTiddlyElement(row, 'td');//wn**
var link=createTiddlyLink(td,ww.formatString(config.options.txtWeekNumberLinkFormat),false,"weekNo");
link.appendChild(document.createTextNode(
ww.formatString(config.options.txtWeekNumberDisplayFormat)));
}
else createTiddlyElement(row, 'td');//wn**
}
for(i = 0; i < col; i++)
createTiddlyElement(row, 'td');
var day = first;
for(i = col; i < 7; i++) {
var d = i + (config.options.txtCalFirstDay - 0);
if(d > 6) d = d - 7;
var daycell = createTiddlyElement(row, 'td');
var isaWeekend=((d==(config.options.txtCalStartOfWeekend-0)
|| d==(config.options.txtCalStartOfWeekend-0+1))?true:false);
if(day > 0 && day <= max) {
var celldate = new Date(year, mon, day);
// ELS 10/30/05 - use <<date>> macro's showDate() function to create popup
// ELS 05/29/06 - use journalDateFmt
if (window.showDate) showDate(daycell,celldate,'popup','DD',
config.macros.calendar.journalDateFmt,true, isaWeekend);
else {
if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;
var title = celldate.formatString(config.macros.calendar.journalDateFmt);
if(calendarIsHoliday(celldate))
daycell.style.background = config.macros.calendar.holidaybg;
var now=new Date();
if ((now-celldate>=0) && (now-celldate<86400000)) // is today?
daycell.style.background = config.macros.calendar.todaybg;
if(window.findTiddlersWithReminders == null) {
var link = createTiddlyLink(daycell, title, false);
link.appendChild(document.createTextNode(day));
} else
var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);
}
}
day++;
}
}
//}}}
//{{{
// Create a pop-up containing:
// * a link to a tiddler for this date
// * a 'new tiddler' link to add a reminder for this date
// * links to current reminders for this date
// NOTE: this code is only used if [[ReminderMacros]] is installed AND [[DatePlugin]] is //not// installed.
function onClickCalendarDate(ev) { ev=ev||window.event;
var d=new Date(this.getAttribute('title')); var date=d.formatString(config.macros.calendar.journalDateFmt);
var p=Popup.create(this); if (!p) return;
createTiddlyLink(createTiddlyElement(p,'li'),date,true);
var rem='\\n\\<\\<reminder day:%0 month:%1 year:%2 title: \\>\\>';
rem=rem.format([d.getDate(),d.getMonth()+1,d.getYear()+1900]);
var cmd="<<newTiddler label:[[new reminder...]] prompt:[[add a new reminder to '%0']]"
+" title:[[%0]] text:{{store.getTiddlerText('%0','')+'%1'}} tag:%2>>";
wikify(cmd.format([date,rem,config.options.txtCalendarReminderTags]),p);
createTiddlyElement(p,'hr');
var t=findTiddlersWithReminders(d,[0,31],null,1);
for(var i=0; i<t.length; i++) {
var link=createTiddlyLink(createTiddlyElement(p,'li'), t[i].tiddler, false);
link.appendChild(document.createTextNode(t[i]['params']['title']));
}
Popup.show(); ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return false;
}
//}}}
//{{{
function calendarMaxDays(year, mon)
{
var max = config.macros.calendar.monthdays[mon];
if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) max++;
return max;
}
//}}}
//{{{
function createCalendarDayRows(cal, year, mon)
{
var row = createTiddlyElement(cal, 'tr');
var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first1 < 0) first1 = first1 + 7;
var day1 = -first1 + 1;
var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first2 < 0) first2 = first2 + 7;
var day2 = -first2 + 1;
var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first3 < 0) first3 = first3 + 7;
var day3 = -first3 + 1;
var max1 = calendarMaxDays(year, mon);
var max2 = calendarMaxDays(year, mon+1);
var max3 = calendarMaxDays(year, mon+2);
while(day1 <= max1 || day2 <= max2 || day3 <= max3) {
row = createTiddlyElement(cal, 'tr');
createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;
createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;
}
}
//}}}
//{{{
function createCalendarDayRowsSingle(cal, year, mon)
{
var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first1 < 0) first1 = first1+ 7;
var day1 = -first1 + 1;
var max1 = calendarMaxDays(year, mon);
while(day1 <= max1) {
row = createTiddlyElement(cal, 'tr');
createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
}
}
//}}}
//{{{
setStylesheet('.calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }', 'calendarStyles');
//}}}
Background: #fff
Foreground: #000
PrimaryPale: #EEE
PrimaryLight: #777
PrimaryMid: #111
PrimaryDark: #000
SecondaryPale: #EEF
SecondaryLight: #CCF
SecondaryMid: #69C
SecondaryDark: #36C
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #333
Error: #f88
/***
|Name|[[DatePlugin]]|
|Source|http://www.TiddlyTools.com/#DatePlugin|
|Documentation|http://www.TiddlyTools.com/#DatePluginInfo|
|Version|2.7.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|formatted dates plus popup menu with 'journal' link, changes and (optional) reminders|
This plugin provides a general approach to displaying formatted dates and/or links and popups that permit easy navigation and management of tiddlers based on their creation/modification dates.
!!!!!Documentation
>see [[DatePluginInfo]]
!!!!!Configuration
<<<
<<option chkDatePopupHideCreated>> omit 'created' section from date popups
<<option chkDatePopupHideChanged>> omit 'changed' section from date popups
<<option chkDatePopupHideTagged>> omit 'tagged' section from date popups
<<option chkDatePopupHideReminders>> omit 'reminders' section from date popups
<<option chkShowJulianDate>> display Julian day number (1-365) below current date
see [[DatePluginConfig]] for additional configuration settings, for use in calendar displays, including:
*date formats
*color-coded backgrounds
*annual fixed-date holidays
*weekends
<<<
!!!!!Code
***/
//{{{
version.extensions.DatePlugin= {major: 2, minor: 7, revision: 1, date: new Date(2009,5,31)};
config.macros.date = {
format: 'YYYY-0MM-0DD', // default date display format
linkformat: 'YYYY-0MM-0DD', // 'dated tiddler' link format
linkedbg: '#033',
todaybg: '#070',
weekendbg: '#333',
holidaybg: '#662',
createdbg: '#026',
modifiedsbg: '#406',
remindersbg: '#800',
weekend: [ 1,0,0,0,0,0,1 ], // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ],
holidays: [ '01/01', '10/03', '12/24'],
txtRemind:'reminders ',
txtNewRemind:'new reminder...',
txtAddRemind:'add a reminder to',
txtAddReminderTitle:'Enter a reminder title here',
txtChanged:'changed',
txtCreated:'created',
txtNone:'none'
};
config.macros.date.handler = function(place,macroName,params)
{
// default: display current date
var now =new Date();
var date=now;
var mode='display';
if (params[0]&&['display','popup','link'].contains(params[0].toLowerCase()))
{ mode=params[0]; params.shift(); }
if (!params[0] || params[0]=='today')
{ params.shift(); }
else if (params[0]=='filedate')
{ date=new Date(document.lastModified); params.shift(); }
else if (params[0]=='tiddler')
{ date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }
else if (params[0].substr(0,8)=='tiddler:')
{ var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }
else {
var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));
var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));
var d = eval(params.shift().replace(/D/ig,now.getDate()+0));
date = new Date(y,m-1,d);
}
// date format with optional custom override
var format=this.format; if (params[0]) format=params.shift();
var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();
showDate(place,date,mode,format,linkformat);
}
window.showDate=showDate;
function showDate(place,date,mode,format,linkformat,autostyle,weekend)
{
mode =mode||'display';
format =format||config.macros.date.format;
linkformat=linkformat||config.macros.date.linkformat;
// format the date output
var title=date.formatString(format);
var linkto=date.formatString(linkformat);
// just show the formatted output
if (mode=='display') { place.appendChild(document.createTextNode(title)); return; }
// link to a 'dated tiddler'
var link = createTiddlyLink(place, linkto, false);
link.appendChild(document.createTextNode(title));
link.title = linkto;
link.date = date;
link.format = format;
link.linkformat = linkformat;
// if using a popup menu, replace click handler for dated tiddler link
// with handler for popup and make link text non-italic (i.e., an 'existing link' look)
if (mode=='popup') {
link.onclick = onClickDatePopup;
link.style.fontStyle='normal';
}
// format the popup link to show what kind of info it contains (for use with calendar generators)
if (autostyle) setDateStyle(place,link,weekend);
}
//}}}
//{{{
// NOTE: This function provides default logic for setting the date style when displayed in a calendar
// To customize the date style logic, please see[[DatePluginConfig]]
function setDateStyle(place,link,weekend) {
// alias variable names for code readability
var date=link.date;
var fmt=link.linkformat;
var linkto=date.formatString(fmt);
var cmd=config.macros.date;
if ((weekend!==undefined?weekend:isWeekend(date))&&(cmd.weekendbg!=''))
{ place.style.background = cmd.weekendbg; }
if (hasModifieds(date)||hasCreateds(date)||hasTagged(date,fmt))
{ link.style.fontStyle='normal'; link.style.fontWeight='bold'; }
if (hasReminders(date))
{ link.style.textDecoration='underline'; }
if (isToday(date))
{ link.style.textDecoration = 'underline';}
if (isHoliday(date)&&(cmd.holidaybg!=''))
{ place.style.background = cmd.holidaybg; }
if (hasCreateds(date)&&(cmd.createdbg!=''))
{ place.style.background = cmd.createdbg; }
if (hasModifieds(date)&&(cmd.modifiedsbg!=''))
{ place.style.background = cmd.modifiedsbg; }
if ((hasTagged(date,fmt)||store.tiddlerExists(linkto))&&(cmd.linkedbg!=''))
{ place.style.background = cmd.linkedbg; }
if (hasReminders(date)&&(cmd.remindersbg!=''))
{ place.style.background = cmd.remindersbg; }
if (isToday(date)&&(cmd.todaybg!=''))
{ place.style.background = cmd.todaybg; }
if (config.options.chkShowJulianDate) { // optional display of Julian date numbers
var m=[0,31,59,90,120,151,181,212,243,273,304,334];
var d=date.getDate()+m[date.getMonth()];
var y=date.getFullYear();
if (date.getMonth()>1 && (y%4==0 && y%100!=0) || y%400==0)
d++; // after February in a leap year
wikify('@@font-size:80%;<br>'+d+'@@',place);
}
}
//}}}
//{{{
function isToday(date) // returns true if date is today
{ var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }
function isWeekend(date) // returns true if date is a weekend
{ return (config.macros.date.weekend[date.getDay()]); }
function isHoliday(date) // returns true if date is a holiday
{
var longHoliday = date.formatString('0MM/0DD/YYYY');
var shortHoliday = date.formatString('0MM/0DD');
for(var i = 0; i < config.macros.date.holidays.length; i++) {
var holiday=config.macros.date.holidays[i];
if (holiday==longHoliday||holiday==shortHoliday) return true;
}
return false;
}
//}}}
//{{{
// Event handler for clicking on a day popup
function onClickDatePopup(e) { e=e||window.event;
var p=Popup.create(this); if (!p) return false;
// always show dated tiddler link (or just date, if readOnly) at the top...
if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))
createTiddlyLink(createTiddlyElement(p,'li'),this.date.formatString(this.linkformat),true);
else
createTiddlyText(createTiddlyElement(p,'li'),this.date.formatString(this.linkformat));
if (!config.options.chkDatePopupHideCreated)
addCreatedsToPopup(p,this.date,this.format);
if (!config.options.chkDatePopupHideChanged)
addModifiedsToPopup(p,this.date,this.format);
if (!config.options.chkDatePopupHideTagged)
addTaggedToPopup(p,this.date,this.linkformat);
if (!config.options.chkDatePopupHideReminders)
addRemindersToPopup(p,this.date,this.linkformat);
Popup.show(); e.cancelBubble=true; if(e.stopPropagation)e.stopPropagation(); return false;
}
//}}}
//{{{
function indexCreateds() // build list of tiddlers, hash indexed by creation date
{
var createds= { };
var tiddlers = store.getTiddlers('title','excludeLists');
for (var t = 0; t < tiddlers.length; t++) {
var date = tiddlers[t].created.formatString('YYYY0MM0DD')
if (!createds[date])
createds[date]=new Array();
createds[date].push(tiddlers[t].title);
}
return createds;
}
function hasCreateds(date) // returns true if date has created tiddlers
{
if (!config.macros.date.createds) config.macros.date.createds=indexCreateds();
return (config.macros.date.createds[date.formatString('YYYY0MM0DD')]!=undefined);
}
function addCreatedsToPopup(p,when,format)
{
var force=(store.isDirty() && when.formatString('YYYY0MM0DD')==new Date().formatString('YYYY0MM0DD'));
if (force || !config.macros.date.createds) config.macros.date.createds=indexCreateds();
var indent=String.fromCharCode(160)+String.fromCharCode(160);
var createds = config.macros.date.createds[when.formatString('YYYY0MM0DD')];
if (createds) {
createds.sort();
var e=createTiddlyElement(p,'div',null,null,config.macros.date.txtCreated+' ('+createds.length+')');
for(var t=0; t<createds.length; t++) {
var link=createTiddlyLink(createTiddlyElement(p,'li'),createds[t],false);
link.appendChild(document.createTextNode(indent+createds[t]));
}
}
}
//}}}
//{{{
function indexModifieds() // build list of tiddlers, hash indexed by modification date
{
var modifieds= { };
var tiddlers = store.getTiddlers('title','excludeLists');
for (var t = 0; t < tiddlers.length; t++) {
var date = tiddlers[t].modified.formatString('YYYY0MM0DD')
if (!modifieds[date])
modifieds[date]=new Array();
modifieds[date].push(tiddlers[t].title);
}
return modifieds;
}
function hasModifieds(date) // returns true if date has modified tiddlers
{
if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();
return (config.macros.date.modifieds[date.formatString('YYYY0MM0DD')]!=undefined);
}
function addModifiedsToPopup(p,when,format)
{
var date=when.formatString('YYYY0MM0DD');
var force=(store.isDirty() && date==new Date().formatString('YYYY0MM0DD'));
if (force || !config.macros.date.modifieds) config.macros.date.modifieds=indexModifieds();
var indent=String.fromCharCode(160)+String.fromCharCode(160);
var mods = config.macros.date.modifieds[date];
if (mods) {
// if a tiddler was created on this date, don't list it in the 'changed' section
if (config.macros.date.createds && config.macros.date.createds[date]) {
var temp=[];
for(var t=0; t<mods.length; t++)
if (!config.macros.date.createds[date].contains(mods[t]))
temp.push(mods[t]);
mods=temp;
}
mods.sort();
var e=createTiddlyElement(p,'div',null,null,config.macros.date.txtChanged+' ('+mods.length+')');
for(var t=0; t<mods.length; t++) {
var link=createTiddlyLink(createTiddlyElement(p,'li'),mods[t],false);
link.appendChild(document.createTextNode(indent+mods[t]));
}
}
}
//}}}
//{{{
function hasTagged(date,format) // returns true if date is tagging other tiddlers
{
return store.getTaggedTiddlers(date.formatString(format)).length>0;
}
function addTaggedToPopup(p,when,format)
{
var indent=String.fromCharCode(160)+String.fromCharCode(160);
var tagged=store.getTaggedTiddlers(when.formatString(format));
if (tagged.length) var e=createTiddlyElement(p,'div',null,null,'tagged ('+tagged.length+')');
for(var t=0; t<tagged.length; t++) {
var link=createTiddlyLink(createTiddlyElement(p,'li'),tagged[t].title,false);
link.appendChild(document.createTextNode(indent+tagged[t].title));
}
}
//}}}
//{{{
function indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date
{
var reminders = { };
if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed
var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);
for(var i=0; i<t.length; i++) reminders[t[i].matchedDate]=true;
}
return reminders;
}
function hasReminders(date) // returns true if date has reminders
{
if (window.reminderCacheForCalendar)
return window.reminderCacheForCalendar[date]; // use calendar cache
if (!config.macros.date.reminders)
config.macros.date.reminders = indexReminders(date,90); // create a 90-day leadtime reminder cache
return (config.macros.date.reminders[date]);
}
function addRemindersToPopup(p,when,format)
{
if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed
var set=config.macros.date;
var indent = String.fromCharCode(160)+String.fromCharCode(160);
var reminders=findTiddlersWithReminders(when, [0,31],null,null,1);
createTiddlyElement(p,'div',null,null,set.txtRemind+' ('+(reminders.length||set.txtNone)+')');
for(var t=0; t<reminders.length; t++) {
link = createTiddlyLink(createTiddlyElement(p,'li'),reminders[t].tiddler,false);
var diff=reminders[t].diff;
diff=(diff<1)?'Today':((diff==1)?'Tomorrow':diff+' days');
var txt=(reminders[t].params['title'])?reminders[t].params['title']:reminders[t].tiddler;
link.appendChild(document.createTextNode(indent+diff+' - '+txt));
}
if (readOnly) return; // readonly... omit 'new reminder...' command
var rem='\\<\\<reminder day:%0 month:%1 year:%2 title:'+set.txtAddReminderTitle+'\\>\\>';
rem=rem.format([when.getDate(),when.getMonth()+1,when.getYear()+1900]);
var cmd="<<newTiddler label:[["+indent+set.txtNewRemind+"]] prompt:[["+set.txtAddRemind+" '%0']]"
+" title:[[%0]] text:{{var t=store.getTiddlerText('%0','');t+(t.length?'\\n':'')+'%1'}} tag:%2>>";
wikify(cmd.format([when.formatString(format),rem,config.options.txtCalendarReminderTags||'']),
createTiddlyElement(p,'li'));
}
//}}}
/***
|''Name:''|DeliciousTaggingPlugin|
|''Version:''|0.5|
|''Source''|http://tbGTD.tiddlyspot.com|
|''Author:''|[[TobiasBeer]]|
!Description
@@color:red;Mod of Jack's [[DeliciousTaggingPlugin|http://jackparke.googlepages.com/jtw.html]] to allow...
*custom tag-chosers
*tag-exclusion
@@
Allows easy tagging in the EditTemplate by showing all tags as a list of link-buttons.
Replace your the editorFooter div in your [[EditTemplate]] with the following:
{{{<div class='editorFooter' macro='deliciousTagging'></div>}}}
!Code
***/
//{{{
version.extensions.deliciousTagging={major: 0, minor: 1, revision: 0, date: new Date("June 11, 2007")};
config.macros.deliciousTagging={
catChose:"Gib diesem Tiddler das Tag '%0', Unterkategorien davon oder Tiddler, die auf sie verweisen.",
catList:'x-tagger Konfiguration##Tags',
catsMore:['Archiv','Referenz'],
exclude:['noCloud','excludeLists'],
arrow:document.all?"▼":"▾",
handler:function(place,macroName,params,wikifier,paramString,tiddler){
if(tiddler instanceof Tiddler){
var b,c,g,t,tx,tg,tn,tgs,ex=[],x,xx=this.exclude,lng=config.views.editor.tagChooser;
for(tx=0;tx<xx.length;tx++){
x=store.getTaggedTiddlers(xx[tx]);
for(t=0;t<x.length;t++)ex.pushUnique(x[t].title);
}
g=store.getTiddlerText(this.catList);g=g?g.readBracketedList():[];
for(c=0;c<this.catsMore.length;c++)g.pushUnique(this.catsMore[c]);
for(c=0;c<g.length;c++){
if(!store.getTiddler(g[c]))continue;
b=createTiddlyButton(place,g[c]+this.arrow,this.catChose.format([g[c]]),this.clickCat);
b.setAttribute("tiddler",tiddler.title);b.setAttribute("tags",g[c]);
}
tgs=store.getTags();
for(t=0;t<tgs.length;t++){
tn=tgs[t][0];if(ex.contains(tn))continue;
tg=createTiddlyButton(place,tn,lng.tagTooltip.format([tn]),config.macros.tagChooser.onTagClick);
tg.setAttribute("tag",tn);tg.setAttribute("tiddler",tiddler.title);
place.appendChild(document.createTextNode(" "));
}
}
},
clickCat:function(e){
var b,pop,t,tg,ti,tgs=[],tgt,c,cx,lng=config.views.editor.tagChooser;
e=e||window.event;
pop=Popup.create(this);
t=this.getAttribute('tags');tgs.pushUnique('MAIN:'+t);
cx=store.getTaggedTiddlers(t);
for(c=0;c<cx.length;c++){
ti=cx[c].title;
tgs.pushUnique('GROUP:'+ti);
tgt=store.getTaggedTiddlers(ti);
for(t=0;t<tgt.length;t++)tgs.pushUnique(tgt[t].title);
}
for(t=0;t<tgs.length;t++){
tg=tgs[t];
if(tg.indexOf('MAIN:')==0)tg=ti=tg.substr(5);
else if(tg.indexOf('GROUP:')==0){tg=tg.substr(6);ti='\u00A0\u00A0'+tg;}
else ti='\u00A0\u00A0\u00A0\u00A0'+tg;
b=createTiddlyButton(createTiddlyElement(pop,"li"),ti,lng.tagTooltip.format([tg]),config.macros.tagChooser.onTagClick);
b.setAttribute("tiddler",this.getAttribute("tiddler"));b.setAttribute("tag",tg);
}
Popup.show();
e.cancelBubble = true;
if(e.stopPropagation) e.stopPropagation();
return false;
}
}
//}}}
|noborder|k
|width:50%;padding:30px 40px 30px 10px;line-height:1em;font-size:2em;text-align:justify;font-family:'Verdana,sans-serif';<<tiddler Download##info>>|<html><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" WIDTH="460" HEIGHT="345" id="tbGtdDownload"><PARAM NAME=movie VALUE="http://www.box.net//static/flash/box_explorer.swf?widget_hash=3l212wso4g&v=0&cl=0"><PARAM NAME=quality VALUE=high><PARAM NAME=bgcolor VALUE=#FFFFFF><embed src="http://www.box.net//static/flash/box_explorer.swf?widget_hash=3l212wso4g&v=0&cl=0" width="460" height="345" wmode="transparent" type="application/x-shockwave-flash"></embed></OBJECT></html>|
/%
!info
Du kannst tbGTD von [[box.net herunter- laden|http://www.box.net/shared/3l212wso4g]]. Falls du das Gefühl hast, dir fehlen ein paar wichtige Informationen, schau in die [[Hilfe]] oder [[schreib mir|Kontakt]]...
@@color:#F99;display:block;padding-top:20px;font-size:14px; Benutze bitte die bereinigte, leere Version im zur Verfügung gestellten Download rechts... auch wenn du dieses ~TiddlWiki -- wie jedes andere auch -- direkt im Browser herunterladen kannst ...sofern du weißt wie das ''richtig'' geht.@@
!%/
!Alle Erinnerungen...
{{block{<<showReminders leadtime:-356...356>>}}}
@@color:#999;(zeigt nur Erinnerungen +/- 1 Jahr)@@/%
!Info
Mehr Informationen zu Kalender und Erinnerungen findest Du im [[Kalender]]-Link im oberen Menü oder rechts in der [[Seitenleiste |SideBarOptions]] oder indem du auf die Links nebem diesem Tip klickst.
!end%/
/***
|''Name:''|FE2|
|''Description:''|create, edit, view and delete commands in toolbar <<toolbar fields>>|
|''Version:''|1.0.2|
|''Date:''|Oct. 21,2009|
|''Source:''|http://tbGTD.tiddlyspot.com|
|''Author:''|Tobias Beer|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.5|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
!Note
This is a refactored version of [[FieldsEditorPlugin|http://visualtw.ouvaton.org/VisualTW.html#FieldsEditorPlugin]] by Pascal Collin
!Installation:
*import this tiddler, keep tagged as systemConfig, save and reload
!Code
***/
//{{{
//language settings for header, also see language options for macro.FE2 below!
config.commands.fields.lang={field:"field",actions:"actions",value:"value"};
config.commands.fields.handlePopup=function(popup,title){
addClass(popup,'FE2');
var tid=store.fetchTiddler(title);
if(!tid)return;
var t='[['+title+']]';
var fields={};
store.forEachField(tid,function(tid,field,v){fields[field]=v;},true);
var list=[];
for(var f in fields){
var e='[['+f+']]';
list.push({
field:f,
value:fields[f],
actions:"<<FE2 "+t+" rename "+e+">> <<FE2 "+t+" delete "+e+">> <<FE2 "+t+" edit "+e+">>"
});
}
list.sort(function(a,b){return a.field<b.field?-1:(a.field==b.field?0:+1);});
list.push({field:'',value:"",actions:"<<FE2 "+t+" create>>"});
var table=ListView.create(popup,list,{
columns:[
{name:'Field',field:'field',title:this.lang.field,type:'String'},
{name: 'Actions',field:'actions',title:this.lang.actions,type: 'WikiText'},
{name:'Value',field:'value',title:this.lang.value,type:'WikiText'}
],
rowClasses:[
{field:'actions'}
],
buttons:[ //can't use button for selected then delete, because click on checkbox will hide the popup
]
});
}
config.macros.FE2={
//language options
lang:{
'delete':'delete', //string since keyword!
rename:'<rename',
create:'Create a new field...',
edit:'edit>',
lineBreaks:"The field value contains linebreaks.\nEditing here will convert it to a single line!\nProceed?",
enterName:"Enter new field name...",
enterNewName:"Enter new name for '%1'...",
enterVal:"Enter field value for '%1'...",
enterNewVal:"Enter new value for '%1'..",
doDelete:"Delete field '%1' from tiddler '%2' ?",
existing:"This field already exists! "
},
handler:function(place,macroName,params,wikifier,paramString,tiddler){
if(!readOnly){
var tid=params[0];
var mode=params[1];
var field=params[2];
var btn=createTiddlyButton(place,this.lang[mode],this.lang[mode]+" "+field,this.clicked);
btn.setAttribute("tiddler",tid);
btn.setAttribute("field",field);
btn.setAttribute("mode",mode);
}
},
clicked:function(){
var lng=config.macros.FE2.lang;
var title=this.getAttribute("tiddler");
var field=this.getAttribute("field");
var mode=this.getAttribute("mode");
var tid=store.getTiddler(title);
if(!tid)return;
switch(mode){
case'create':
var first="";
do{
field=prompt(first+ lng.enterName,"");
first=lng.existing;
}while(store.getValue(tid,field));
if(field){
var v=prompt(lng.enterVal.replace(/%1/,field),"");
if(v)tid.fields[field]=v;else return;
}else return;
break;
case'delete':
if(confirm(lng.doDelete.replace(/%1/,field).replace(/%2/,title))){
delete tid.fields[field];
}else return;
break;
case'edit':
var v=tid.fields[field]||'';
if(!v.match(/\n/mg)||confirm(lng.lineBreaks)){
var v=prompt(lng.enterNewVal.replace(/%1/,field),v);
if(v)tid.fields[field]=v;else return;
}else return;
break;
case'rename':
var name=prompt(lng.enterNewName.replace(/%1/,field),field);
if(name){
tid.fields[name]=tid.fields[field];
delete tid.fields[field];
}else return;
break;
default:return;
}
store.saveTiddler(tid.title,tid.title,tid.text,tid.modifier,tid.modified,tid.tags,tid.fields);
story.refreshTiddler(title,null,true);
return false;
}
}
config.shadowTiddlers.StyleSheetFE2=
".FE2 td br{display:block;}\n"+
".FE2 td {font-size:12px;padding:1px 3px}\n"+
".FE2 .button {border:0;padding:0 0.2em;}\n"+
".FE2 .twtable,.FE2 .twtable thead, .FE2 .twtable tr{border:0}\n"+
".FE2 .twtable tr:hover{background:"+store.getTiddlerSlice('ColorPalette','TertiaryDark')+"}\n"+
".FE2 .twtable thead{font-size:13px;}";
store.addNotification("StyleSheetFE2",refreshStyles);
//}}}
!!Links
{{{
WikiWort
~WikiWortAlsText
[[WikiWort mit Leerziechen]]
[[angezeigter Text|WikiWord]]
http://www.externenrLink.de
[[Titel|URL]]
[img[Bild.jpg][Link]]
[>img[Bildtitel|Pfad/Bild.jpg][Link]]
Dateisystem...
[[Ordner/Pfad]] — relativer Pfad
file://///server/freigabe — Win Freigabe
file:///c:/ordner/datei.xyz — Win Lokal
file://ordner/datei — Unix Lokal
}}}
!!Grundlagen
{{{
''fett''
//kursiv//
__unterstrichen__
--durchgestrichen--
~~hochgestellt~~
^^niedrig gestellt^^
@@hervorgehoben@@
{{{nichtproportional}}}
{{{
mehrzeiliger Quelltext
}}}
}}}
!!Überschriften & Listen
{{{
!Ü1
!!Ü2
!!!Ü3 ...
#ol1 geordnet
##ol2
###ol3 ...
*ul1 ungeordnet
**ul2
***ul3 ...
;Titel der Definition
:Definition
verschachteltes Beispiel...
*ungeordnet
*#geordnet
*#;Titel
*#:Definition
mehrzeilig mit Style-Klasse...
#{{block{
!Überschirft
immernoch Punkt 1
}}}
#Punkt2
}}}
!!Blockzitate
{{{
>eingerückt1
>>eingerückt2
>>>eingerückt3 ...
<<<
Blockzitat
<<<
}}}
!!Striche
{{{
-- breiter Strich
---- horizontale Linie
}}}
!!Tabellen
{{{
|cssKlasse|k
|Tabellen Überschrift|c
|Kopf|Kopf|h
|Fuß|Fuß|f
|!Titel|!Titel|
|links | rechts|
| mittig |background:blue;farbig|
|>|colspan|
|rowspan|mit <br />Zeilenumbruch|
|~|xyz|
|NoB|k -> ohne Rahmen
.NoB,.NoB th,.NoB thead,.NoB tbody,.NoB tr,.NoB td
{border:0 !important;} /*in StyleSheet*/
}}}
!!Aufhebung
{{{
"""kein Wiki-Format"""
/%versteckt%/
/%
!Abschnitt
verstecker AbschnittsInhalt
!Ende%/
}}}
!!Stile
{{{
@@cssEigenschaft:cssWert; text@@
{{{Klasse{Stil des Inhalts per StyleSheet definiert}}}
<html>gültiges xHTML</html>
Zeilenumbruch: <br /> <br>
Entities: & «
}}}
!!Macros
{{{
tid = [[TiddlerName]] oder TiddlerName oder 'Tiddler Name'
<<tiddler tid>>
<<tiddler 'tid##Abschnitt'>>
<<tiddler 'tid::slice'>>
<<tabs id label tooltip tid ...>>
<<slider id tid label tooltip>>
<<today [format]>>
<<version>>
<<timeline [date][len][format]>>
<<list [all|missing|default|
orphans|shadowed|touched|
filter>>
<<allTags>>
<<tag name [label] [tip]>>
<<tags [tid]>>
<<tagging [tag]>>
<<newJournal [format]>>
<<newTiddler label:tidName
text:"text" tag:tag tag:tag
accessKey:key focus:field>>
<<saveChanges [label] [tip]>>
<<search [term]>>
<<closeAll>>
<<permaview>>
}}}
!!Startup Parameter
{{{
#[open:]WikiWord
#[open:]WikiWord%20WikiWord…
#start:safe
#search:text
#tag:text
#newTiddler:WikiWord
#newJournal:format
}}}
!!Datumsformate
{{{
YYYY MMM DDD — Jahr Monat Tag voll
YY MM DD — zweistellige Zahlen
0MM 0DD — mit Null voran
mmm ddd — Kurznamen
DDth — mit Suffix
WW — Wochennummer
wYY mit Wochennummer
hh mm ss — Stunden Minuten Sekunden
0hh 0mm 0ss — mit Null voran
am AM or pm PM — Indikator
hh12 — Stunden im 12er Takt
}}}
Alle Hauptkategorien in diesem GTD System...
/***
|Name|GotoPlugin|
|Source|http://www.TiddlyTools.com/#GotoPlugin|
|Documentation|http://www.TiddlyTools.com/#GotoPluginInfo|
|Version|1.9.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|view any tiddler by entering it's title - displays list of possible matches|
''View a tiddler by typing its title and pressing //enter//.'' As you type, a list of possible matches is displayed. You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press escape to close the listbox to resume typing. When the listbox is not displayed, pressing //escape// clears the current input.
!!!Configuration
<<<
*Match titles only after {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters are entered.<br>Use down-arrow to start matching with shorter input. //Note: This option value is also set/used by [[SearchOptionsPlugin]]//.
*To set the maximum height of the listbox, you can create a tiddler tagged with <<tag systemConfig>>, containing:
//{{{
config.macros.gotoTiddler.listMaxSize=10; // change this number
//}}}
!!!Code
***/
//{{{
version.extensions.GotoPlugin= {major: 1, minor: 9, revision: 2, date: new Date(2009,5,22)};
// automatically tweak shadow SideBarOptions to add <<gotoTiddler>> macro above <<search>>
config.shadowTiddlers.SideBarOptions=config.shadowTiddlers.SideBarOptions.replace(/<<search>>/,"{{button{goto}}}\n<<gotoTiddler>><<search>>");
if (config.options.txtIncrementalSearchMin===undefined) config.options.txtIncrementalSearchMin=2;
config.macros.gotoTiddler= {
listMaxSize: 10,
listHeading: 'Found %0 matching title%1...',
searchItem: "Search for '%0'...",
handler:
function(place,macroName,params,wikifier,paramString,tiddler) {
var quiet =params.contains("quiet");
var showlist =params.contains("showlist");
var search =params.contains("search");
params = paramString.parseParams("anon",null,true,false,false);
var instyle =getParam(params,"inputstyle","");
var liststyle =getParam(params,"liststyle","");
var filter =getParam(params,"filter","");
var html=this.html;
var keyevent=window.event?"onkeydown":"onkeypress"; // IE event fixup for ESC handling
html=html.replace(/%keyevent%/g,keyevent);
html=html.replace(/%search%/g,search);
html=html.replace(/%quiet%/g,quiet);
html=html.replace(/%showlist%/g,showlist);
html=html.replace(/%display%/g,showlist?'block':'none');
html=html.replace(/%position%/g,showlist?'static':'absolute');
html=html.replace(/%instyle%/g,instyle);
html=html.replace(/%liststyle%/g,liststyle);
html=html.replace(/%filter%/g,filter);
//if (config.browser.isIE) html=this.IEtableFixup.format([html]);
var span=createTiddlyElement(place,'span');
span.innerHTML=html; var form=span.getElementsByTagName("form")[0];
if (showlist) this.fillList(form.list,'',filter,search,0);
},
html:
'<form onsubmit="return false" style="display:inline;margin:0;padding:0">\
<input name=gotoTiddler type=text value="Suche..." autocomplete="off" accesskey="G" style="%instyle%"\
title="EINGABE=Suchen | SHIFT+EINGABE=Öffnen | PFEIL NACH UNTEN=Liste"\
onfocus="this.select(); this.setAttribute(\'accesskey\',\'G\');"\
%keyevent%="return config.macros.gotoTiddler.inputEscKeyHandler(event,this,this.form.list,%search%,%showlist%);"\
onkeyup="return config.macros.gotoTiddler.inputKeyHandler(event,this,%quiet%,%search%,%showlist%);">\
<select name=list style="display:%display%;position:%position%;%liststyle%"\
onchange="if (!this.selectedIndex) this.selectedIndex=1;"\
onblur="this.style.display=%showlist%?\'block\':\'none\';"\
%keyevent%="return config.macros.gotoTiddler.selectKeyHandler(event,this,this.form.gotoTiddler,%showlist%);"\
onclick="return config.macros.gotoTiddler.processItem(this.value,this.form.gotoTiddler,this,%showlist%);">\
</select><input name="filter" type="hidden" value="%filter%">\
</form>',
IEtableFixup:
"<table style='width:100%;display:inline;padding:0;margin:0;border:0;'>\
<tr style='padding:0;margin:0;border:0;'><td style='padding:0;margin:0;border:0;'>\
%0</td></tr></table>",
getItems:
function(list,val,filter) {
if (!list.cache || !list.cache.length || val.length<=config.options.txtIncrementalSearchMin) {
// starting new search, fetch and cache list of tiddlers/shadows/tags
list.cache=new Array();
if (filter.length) {
var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
var tiddlers=store.sortTiddlers(fn.apply(store,[filter]),'title');
} else
var tiddlers=store.reverseLookup('tags','');
for(var t=0; t<tiddlers.length; t++) list.cache.push(tiddlers[t].title);
if (!filter.length) {
for (var t in config.shadowTiddlers) list.cache.pushUnique(t);
var tags=store.getTags();
for(var t=0; t<tags.length; t++) list.cache.pushUnique(tags[t][0]);
}
}
var found = [];
var match=val.toLowerCase();
for(var i=0; i<list.cache.length; i++)
if (list.cache[i].toLowerCase().indexOf(match)!=-1) found.push(list.cache[i]);
return found;
},
getItemSuffix:
function(t) {
if (store.tiddlerExists(t)) return ""; // tiddler
if (store.isShadowTiddler(t)) return " (shadow)"; // shadow
return " (tag)"; // tag
},
fillList:
function(list,val,filter,search,key) {
if (list.style.display=="none") return; // not visible... do nothing!
var indent='\xa0\xa0\xa0';
var found = this.getItems(list,val,filter); // find matching items...
found.sort(); // alpha by title
while (list.length > 0) list.options[0]=null; // clear list
var hdr=this.listHeading.format([found.length,found.length==1?"":"s"]);
list.options[0]=new Option(hdr,"",false,false);
for (var t=0; t<found.length; t++) list.options[list.length]=
new Option(indent+found[t]+this.getItemSuffix(found[t]),found[t],false,false);
if (search)
list.options[list.length]=new Option(this.searchItem.format([val]),"*",false,false);
list.size=(list.length<this.listMaxSize?list.length:this.listMaxSize); // resize list...
list.selectedIndex=key==38?list.length-1:key==40?1:0;
},
keyProcessed:
function(ev) { // utility function
ev.cancelBubble=true; // IE4+
try{event.keyCode=0;}catch(e){}; // IE5
if (window.event) ev.returnValue=false; // IE6
if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
if (ev.stopPropagation) ev.stopPropagation(); // all
return false;
},
inputEscKeyHandler:
function(event,here,list,search,showlist) {
if (event.keyCode==27) {
if (showlist) { // clear input, reset list
here.value=here.defaultValue;
this.fillList(list,'',here.form.filter.value,search,0);
}
else if (list.style.display=="none") // clear input
here.value=here.defaultValue;
else list.style.display="none"; // hide list
return this.keyProcessed(event);
}
return true; // key bubbles up
},
inputKeyHandler:
function(event,here,quiet,search,showlist) {
var key=event.keyCode;
var list=here.form.list;
var filter=here.form.filter;
// non-printing chars bubble up, except for a few:
if (key<48) switch(key) {
// backspace=8, enter=13, space=32, up=38, down=40, delete=46
case 8: case 13: case 32: case 38: case 40: case 46: break; default: return true;
}
// blank input... if down/enter... fall through (list all)... else, and hide or reset list
if (!here.value.length && !(key==40 || key==13)) {
if (showlist) this.fillList(here.form.list,'',here.form.filter.value,search,0);
else list.style.display="none";
return this.keyProcessed(event);
}
// hide list if quiet, or below input minimum (and not showlist)
list.style.display=(!showlist&&(quiet||here.value.length<config.options.txtIncrementalSearchMin))?'none':'block';
// non-blank input... enter=show/create tiddler, SHIFT-enter=search for text
if (key==13 && here.value.length) return this.processItem(event.shiftKey?here.value:'*',here,list,showlist);
// up or down key, or enter with blank input... shows and moves to list...
if (key==38 || key==40 || key==13) { list.style.display="block"; list.focus(); }
this.fillList(list,here.value,filter.value,search,key);
return true; // key bubbles up
},
selectKeyHandler:
function(event,list,editfield,showlist) {
if (event.keyCode==27) // escape... hide list, move to edit field
{ editfield.focus(); list.style.display=showlist?'block':'none'; return this.keyProcessed(event); }
if (event.keyCode==13 && list.value.length) // enter... view selected item
{ this.processItem(list.value,editfield,list,showlist); return this.keyProcessed(event); }
return true; // key bubbles up
},
processItem:
function(title,here,list,showlist) {
if (!title.length) return;
list.style.display=showlist?'block':'none';
if (title=="*") { story.search(here.value); return false; } // do full-text search
if (!showlist) here.value=title;
story.displayTiddler(null,title); // show selected tiddler
return false;
}
}
//}}}
Gruppen sind Kategorien für [[Aufgaben|Aufgabe]] und andere Sachen...
<script>
var c='$1',fl,gt,h,o='',t,ti,toc='\n!Inhaltsverzeichnis',hx,x=place;
hx=[
['Einführung','intro'],
['TiddlyWiki','tw0',[
['Allgemein','tw'],
['Tiddler','tid'],
['Tags','tag'],
['Formatierung','fmt']]],
['GTD','gtd0',[
['Methode','gtd'],
['Workflow','flow']]],
['tbGTD','tb0',[
['Allgemein','tbGTD'],
['Kategorien','cats'],
['Hinzufügen','add'],
['Phasen','stages']]],
['Know-How','how',[
['Lesezeichen','bmk'],
['Erinnerungen','remind'],
['QuickNotes','qn'],
['Hauptmenü','menu'],
['x-tab','xtab'],
['x-plore','xplore'],
['x-tag','xtag'],
['TagCloud','cloud'],
['Tagauswahl','deli'],
['Sidebars','side']]],
['Geht nicht?','brk'],
['Kontakt','mail']
];
gt=function(c){
var i,s,sc,sx,tx,tab=isNaN(c);//as tabs?
for(i=0;i<hx.length;i++){
sc=hx[i][1];
if(tab&&c==sc||!tab&&c==i){
sx=hx[i][2];if(tab&&!sx)break;
ti=hx[i][0];
o+=tab?'@@display:block;min-height:300px;<<tabs tabHelp'+sc:'\n!'+(i+1)+'. '+ti;
toc+="\n#''"+ti+"''";
if(sx){
for(s=0;s<sx.length;s++){
ti=sx[s][0];sc=sx[s][1];
o+=tab?" '"+ti+"' '' 'Hilfe##"+sc+"'":"\n!!"+(i+1)+'.'+String.fromCharCode(97+s)+' '+ti+"\n"+"<<tiddler Hilfe##"+sc+">>";
toc+="\n##"+ti;
}
if(tab)o+='>>@@';
}else o+="\n<<tiddler Hilfe##"+sc+">>";
}
}
}
switch(c){
case '$'+'1':o="{{vTabs help{<<tabs tabHelp";for(t=0;t<hx.length;t++){ti=hx[t][0];o+=" '"+ti+"' '' 'Hilfe##"+hx[t][1]+"'";}o+='>>}}}';break;
case 'all':o="{{tbHelp{TOCHELP";for(t=0;t<hx.length;t++)gt(t);o+="}}}";break;
default:gt(c);
}
if(c=='$'+'1'){
h=createTiddlyElement(x,'div',null,'tbHelp');
wikify(o,h);
o="<<slider chkLayout SiteLayout SeitenLayout 'Klicke auf einen der Links und du gelangst zu dem Tiddler, der den entsprechenden Inhalt bereitstellt.'>> "+
"[[Hilfe zum Ausdrucken|tbGTD Hilfe]]";
}
wikify((c=='all'?o.replace('TOCHELP',toc):o),x);
setStylesheet(
'.tbHelp{margin:10px 0;}'+
'.tbHelp table{border-width:1px;}'+
'.tbHelp .marked{background:#E6E6FF;}'+
'.tbHelp .tabContents{min-height:180px;}'+
'.helpInner{border:2px solid #CCC;background:#F6F6F6;display:block;padding:5px;}'+
'.vTabs .helpInner{border:0;overflow-y:scroll;}'+
'.vTabs .helpSM {height:200px;}'+
'.vTabs .helpBG {height:350px;}','GtdHelpStyles');
</script>@@display:block;height:1px;clear:both; @@/%
!tw0
<<tiddler Hilfe with: tw0>>
!gtd0
<<tiddler Hilfe with: gtd0>>
!tb0
<<tiddler Hilfe with: tb0>>
!how
<<tiddler Hilfe with: how>>
!intro
In den folgenden Abschnitten bekommst Du einen Überblick...
*wie dieses Dokument funktioniert
*was seine Bestandteile sind
*wie du all das nutzbringend verwenden kannst
Ein __unterstrichener__ Begriff -- sofern kein externer Link -- verweist auf einen weiteren Abschnitt in diesem Dokument.
Dies ist ein Wiki auf Basis von __~TiddlyWiki__...
*mit Fokus auf __GTD__
*entworfen, um Dir zu helfen Deine Ideen und Aufgaben zu verwalten
*um Dein Gehirn von (möglicherweise stressbringender) Vergesslichkeit zu befreien
*Dich bei Dokumentation und Wissensmanagement zu unterstützen
@@color:#C33;''Hinweis:'' Benutze dieses großartige Dokument ...jedoch auf Deine alleinige Verantwortung.@@
!tw
tbGTD basiert auf [[TiddlyWiki]]...
*einer großartigen @@Opensource@@ [[Wiki-Plattform|http://en.wikipedia.org/wiki/Wiki]], die...
**@@Inhalte@@, @@Struktur@@, @@Design@@ und @@Javascript@@ in einer @@einzelnen HTML Datei@@ vereint
**aktiv entwickelt und von einer lebhaften Community unterstützt wird
Lerne mehr darüber...
*auf der Webseite http://www.tiddlywiki.com
*im Community Wiki http://www.tiddlywiki.org
*in der Google Gruppe http://groups.google.com/group/TiddlyWiki
!tid
Ein @@Tiddler@@ ist das Grundelement in __TiddlyWiki__ mit folgenden Eigenschaften...
*einem @@eindeutigen Namen@@
*@@~Text-Inhalt@@, der ihm gegeben wurde
*von einem @@Autor@@
*@@erzeugt@@ an einem bestimmten Datum, @@geändert@@ an einem anderen
*@@__Tags__@@, welche mit dem Tiddler verknüpfte Stichworte sind
*@@Felder@@, die Informationen bereitstellen und Erweiterungen ermöglichen
Ein Tiddler kennt zwei grundlegende Darstellungsweisen...
*den @@~Anzeige-Modus@@, der den Inhalt des Tiddlers als HTML ausgibt
*den @@~Editier-Modus@@ mit Feldern zum Ändern der Eigenschaften
**per Doppelklick auf einen Tiddler kommst Du direkt in den ~Editier-Modus
**benutze Tastenkürzel im ~Editier-Modus
***{{{Strg-Enter}}} speichert den Tiddler
***{{{Escape}}} verlässt den ~Editier-Modus ohne zu speichern
Ein Tiddler kann folgendes sein oder enthalten...
*Textinhalt bestehend aus
**__Formatierung__ mglw. mit eingebetteten Inhalten, wie...
***Bildern
***Tabellen
***anderen Tiddlern ...was man @@Transclusion@@ nennt
*HTML Markup in einem {{{<html></html>}}}Block, wie z.B.:
**i-Frame ...eine eingebettete ~HTML-Datei oder entfernte Webseite
**ein {{{embed object}}} (eingebettetes Objekt)
***auch @@Widget@@ oder @@Gadget@@ genannt
*ein Plugin, Macro, Script oder eine Transclusion
**welche die Grundfunktionen von __TiddlyWiki__ um neue erweitern
*[[CSS|http://en.wikipedia.org/wiki/Cascading_Style_Sheets]] Regeln
**ein StyleSheet zur Definition, wie __TiddlyWiki__ dargestellt wird
*eine Vorlage ...oder ein Vorlagendokument (@@Theme@@)
**die @@Layout@@ und @@Struktur@@ Deines TiddlyWiki oder seiner Elemente definiert
*ein Schatten- oder ~System-Tiddler
**mit vordefiniertem Inhalt, der überschrieben werden kann, jedoch beim Löschen wieder auf den Standard gesetzt wird
!tag
Tags sind ein sehr mächtiges Konzept, um Tiddler miteinander in Beziehung zu setzen. Zusätzlich zu ~WikiLinks -- Links innerhalb des TiddlyWiki -- erlauben sie es Dir, Tiddler zu kategorisieren, jedoch mit dem Vorteil der automatischen Aktualisierung bei Namensänderungen. Vor allem ist ein Tag aber auch ein Tiddler!
Benutze Tags zur Abbildung von...
*Kategorien
*Stich- oder Schlüsselwörtern
*Beziehungen
**z.B. zwischen Über- und Unterelementen
*Schaltern oder Zeigern
**um bspw. Darstellung oder Verhalten bei einem Tiddler mit bestimmten Tags umzustellen
Im allgemeinen, weise als Tags zu, was von diesem Tiddler abhängt, also ...
*dem Unterelement das Element der höheren Ebene
*einer Aufgabe das zugehörigen Projekt oder die Kontaktperson
In der Toolbar bieten {{button{x-tab}}}{{button{x-plore}}}&{{button{x-tag}}} Tag-bezogene Funktionen
*siehe __~Know-How__
Ein wichtiges Plugin -- und Teil dieses Wikis -- heißt [[TagglyTagging|TagglyTaggingPlugin]] und wird am Ende eines Tiddlers dargestellt...
*es zeigt eine anpassbare Ansicht der Tiddler, die den aktuellen als Tag haben (sofern es welche gibt)
*spiele mit den Optionen (!)
*[[hier|http://mptw.tiddlyspot.com]] kannst du mehr erfahren
!fmt
Der Tiddler [[Formatierung]] bietet eine Referenz des @@~Wiki-Markups@@.
{{helpInner helpBG{<<tiddler Formatierung>>}}}
!gtd
''GTD'' steht für @@Getting Things Done@@ ...@@Dinge erledigt bekommen@@.
[[David Allen|http://en.wikipedia.org/wiki/David_Allen_%28author%29]] hat den Begrif mit seinem gleichnamigen [[Buch|http://de.wikipedia.org/wiki/Getting_Things_Done]] als @@Methodik@@ geprägt.
Der Kern von GTD dreht sich darum...
*zu sammeln
*zu bearbeiten
*zu organisieren
*durchzugehen
*zu tun
...und zwar Aufgaben, Aktionen oder Ideen, die Deine Gehirnkapazitäten belegen...
*gewollt oder ungewollt
*denen du nachgehen willst oder eben musst
!flow
|font-size:90%;neue Dinge...@@font-size:120%;margin-left:30%; ''Eingang''@@ {{floatright{...Was ist zu tun?}}}|>|>|>|h
| !Kannst Du's anpacken? |>|>|>|
|>|>| ''ja'' |vertical-align:middle; ''nein'' |
|>|>| mehr als 1 Tätigkeit?<br />neues [[$aktuelles|$aktuell]] Projekt (definiere Erfolgskriterien) |~|
|>|>|font-size:150%; !Was ist die nächste Aktion? |<<tiddler Hilfe##noact>>|
| !tun | !delegieren | !vertagen |~|
|wenn <2 Minuten|<<tiddler Hilfe##wait>>|<<tiddler Hilfe##defer>>|~|
|>|>| Aktionen und Projekte durchsehen, planen, erledigen |~|
!noact
#beseitigen
**@@Papierkorb@@
#reifen lassen
**Aufgabe:@@[[#später]], [[#zukünftig]]@@
**Projekt:@@[[$zukünftig]], [[$vielleicht]]@@
#[[Referenz]]
**setze als Tag
**ordne Aufgabe, Projekt oder Kontakt zu...
!defer
#[[#nächste]]
**für Dich
#[[Kalender]]
**@@spezifiziere
@@ Zeit & Datum
#setze eine [[Erinnerung]]
!wait
*benutze [[#wartend]]
*gib das zugehörige Element als Tag (wenn vorhanden)
!tbGTD
Warum ''tbGTD''? Kurz und bündig... meine Initialen gefolgt von GTD.
Das Original findest du unter http://tbGTD-deutsch.tiddlyspot.com...
*das Tag <<tag site>> verweist auf Tiddler, die das Desigg dieses ~TiddlyWikis bestimmen
*am Ende dieses Tiddlers findest du ein illustriertes Layout von tbGTD
!cats
Manche Tags (Stichworte) beginnen zur leichteren Erkennung mit einem speziellen Präfix:
<script>var c,f,i,l,n,o,t,x;
c=['!Aufgabe','Kontext','Priorität','!Projekt','Phase','Kontakte','Gruppe','Bereich','!Archiv'];
o='| Präfix | Kategorie | Unterkategorie |h\n';f='@@background:#fcc; %0@@';
for(x=0;x<c.length;x++){
i=c[x].substr(0,1)=='!'; n=i?c[x].substr(1):c[x];
t=store.getTaggedTiddlers(n);l=t.map(function(t){return"[["+t.title+"]] "});
o+='| '+t[1].title.substr(0,1)+' |'+f.format(['((_*(<<tiddler "'+n+'">>)))[['+n+']]'])+' |'+(i?f.format([l]):l)+'|\n';
}return o;</script>
Gib einem Tiddler die entspreche Kategorie als Tag zu geben, um ihn zuzuordnen.
@@background:#fcc;padding:0 3px; Diese Tiddler@@ sind essentiell. Modifiziere sie nur, wenn du weißt, was du tust:
*@@background:#fcc;[[Schreibtisch]], [[Journal]], [[Kalender]], [[Erinnerung]], [[Referenz]] und alle mit diesem Tag <<tag site>> @@
''Hinweis:''
*schreib eines Präfix in die Suchbox, drücke Pfeil nach unten und beobachte
*Du kannst im Prinzip alle Kategorien löschen oder umbenennen
**das würde jedoch bedeuten, dass Du ggf. den [[Schreibtisch]], [[x-tagger]] oder das [[Hauptmenü|MainMenu]] anpassen musst
!add
Lerne zuerst die Grundlagen von [[TiddlyWiki|http://tiddlywiki.com]].
Du kannst Elemente hinzufügen mit...
*den {{button{+}}}Schaltflächen auf dem [[Schreibtisch]]
*dem {{Neu{}}}Popup im [[Menü links oben|topMenuL]]
*dem [[Hauptmenü|MainMenu]] links
*der {{button{neu}}}Schaltfläche in der Toolbar eines Tiddlers
Wenn du einen Tiddler hinzugefügt hast, gib ihm sinnvolle Tags...
*benutze die vordefinierten __Kategorien__
Um eine neue [[nächste|#nächste]] Aufgabe hinzuzufügen, musst du einfach nur einem Tiddler das Tag [[#nächste]] geben.
!stages
[[Phasen|Phase]] sind ein leistungsstarkes Konzept für Dein Projektmanagement und erlauben Dir...
*einen Überblick zu bekommen, wieviel Arbeit und Aufmerksamkeit in welche Projektphase geht
*den Projektfortschritt zu verfolgen
''Tipps'':
*passe die vordefinierten Phasen an deinen Projektablauf an
**editiere einfach die entsprechenden <<tag Phase>><<rB Phasen-Kategorien>> oder nenne sie um
*erwäge verschiedene tbGTD Vorlagen für verschiedene Projektarten
*probiere Phasen direkt als Tags in ~QuickAdd für __[[QuickNotes]]__ zu verwenden!
Hier ein Überblick der <<tag Phase>><<rB 'vordefinierten Phasen...'>>
{{helpInner helpSM{<<tiddler Phase>>}}}
!bmk
Klicke auf den ''URL Link'' in der Toolbar eines Tiddlers
*ggf. musst du noch die {{button{+}}}Schaltfläche klicken
*die Addresszeile im Browser zeigt nun auf den aktuellen Tiddler
Du kannst ein Lesezeichen für ''alle angezeigten Tiddler'' anlegen indem du auf den ''URL'' Link unter <<popup Optionen [[<<tiddler topMenuR##Optionen$))]]>> geklickt hast.
!remind
Füge eine Erinnerung hinzu...
*indem du auf ein Datum im Kalender klickst
*mit der Schaltfläche {{button{erinnern}}} in der Toolbar
*mit [[QuickNotes]]
Um eine Erinnerung zu editieren oder löschen, editiere den Tiddler.
!qn
Benutze [[QuickNotes]] um schnell Notizen und Tiddler einzugeben.
Es bietet eine leistungstarke [[QuickAdd|QuickAdd Hilfe]] Funktion
*mit der du eine komplette Projektstruktur in einem Rutsch anlegen kannst
{{helpInner helpBG{<<tiddler 'QuickAdd Hilfe'>>}}}
!menu
Das [[Hauptmenü|MainMenu]] auf der linken Seite
*gibt dir schnellen Zugriff auf alle GTD __Kategorien__
*erlaubt es neue (GTD bezogene) Tiddler hinzuzufügen
*zeigt an, welche Kategorien Unterlemente haben, die Du direkt öffnen kannst
Der Abschnitt @@Tags@@ in [[x-tagger Konfiguration]] beinhaltet Links zu den Tiddlern, welche als Kategorien im [[Hauptmenü|MainMenu]] sowie von [[x-tagger]] verwendet werden...dem Popup{{button{x-tag}}} in der Toolbar. Jeder Tiddler, der ein Tag auf diese __Kategorien__ hat, wird in beiden angezeigt.
''Hinweise'':
*konfiguriere [[x-tagger]] mit [[x-tagger Konfiguration]]
**auch erreichbar über {{button{Kategorien editieren...}}} im{{button{x-tag}}}Popup.
**entferne alles was du nicht brauchst oder magst
*ein Doppelklick auf eine ~Tag-Kategorie im [[Hauptmenü|MainMenu]] zeigt alle Kategorien
!cloud
Um ein __Tag__ nicht in der [[TagCloud]] anzuzeigen...
*gib ihm das Tag <<tag noCloud>>
*oder benutze <<tag excludeLists>>, um es auch in anderen Listen zu verbergen
Editiere den Makroaufruf in [[TagCloud]], um weitere Tags auszuschließen, ohne ''noCloud'' zu benutzen.
!deli
Um ein Tag einem Tiddler im ~Editier-Modus hinzuzufügen oder zu löschen benutze...
*die Standard @@Tagauswahl@@ für ein beliebiges existierendes Tag
*eine GTD @@Tagauswahl@@ um schnell
**eine der GTD __Kategorien__
**Unterelemente davon
**oder Tiddler die auf diese verweisen
...als Tag zuzuweisen
Die Tagauswahl im ~Editier-Modus -- genannt [[DeliciousTagging]] -- ignoriert standardmäßg die selben Tags wie __~TagCloud__ ...siehe Parameter @@exclude@@ im Quellcode.
!side
Es gibt zwei Sidebars (Seitenleisten)...
*@@links@@: [[Hauptmenü|MainMenu]]
*@@rechts@@: [[Kalender|SideBarOptions]] und [[Listen|SideBarTabs]]
Um Seitenleisten beim Start auszublenden...
*ändere den zweiten Parameter in {{{<<toggleSideBarTB left show>>}}} von {{{show}}} nach {{{hide}}}...
**in [[topMenuL]] (@@linke@@ Seitenleiste)
**in [[topMenuR]] (@@rechte@@ Seitenleiste)
!xtab
Ein Klick auf [[x-tab]] in der Toolbar öffnet...
*eine Oberfläche zur Anzeige einer Kreuztabelle für Tags...
**mit @@Vorlagen@@, die Du erweitern oder editieren kannst
**die alle GTD __Kategorien__ @@automatisch erkennt@@
**und so einstellbar ist, wie Du sie brauchst
Editiere [[x-tab]]'s Vorlagen, Tags oder ~Auto-Erkennung in [[x-tab Konfiguration]].
!xplore
Ein Klick auf [[x-plore]] in der Toolbar des aktuellen Tiddler öffnet ein Popup
*welches die vier wesentlichen Beziehungen zwischen Tiddlern darstellt
*als Baumstrukturen
Definiere Elemente, die ausgeschlossen oder abgeschnitten werden sollen im entsprechenden Abschnitt in [[x-plore]].
!xtag
Das {{button{x-tag}}}Popup erlaubt es, auf einfache Weise Tags am aktuellen Tiddler zu setzen oder zurückzusetzen. Konfiguriere [[x-tagger]] wie in __Hauptmenü__ beschrieben mit [[x-tagger Konfiguration]].
!brk
Da tbGTD auf __~TiddlyWiki__ basiert, erliegt es denselben Einschränkungen.
Es ist empfohlen Firefox als Browser zu verwenden!
Etwas sieht komisch aus im Internet Explorer, Safari, Opera oder Chrome?
*ich versuche mein bestes, dass tbGTD auch in anderen Browsern funktioniert
*wenn dir CSS Fehler über den Weg laufen... Lösungen liefern hilft mehr als Leid-klagen
!mail
Du brauchst weitere Hilfe? Dann schreib hier etwas...
*[[TiddlyWiki Diskussionsgruppe auf Google Groups|http://groups.google.com/group/tiddlywiki/browse_frm/thread/bd6a9784706784f6]]
*[[Kontakt gibts hier|Kontakt]] oder unter [[tbGTD-deutsch.tiddlyspot.com|tbGTD-deutsch.tiddlyspot.com/#Kontakt]]
!end%/
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2009.04.11 [1.9.5] pass current tiddler object into wrapper code so it can be referenced from within 'onclick' scripts
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 5, date: new Date(2009,4,11)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var src=lookaheadMatch[1];
var label=lookaheadMatch[2];
var tip=lookaheadMatch[3];
var key=lookaheadMatch[4];
var show=lookaheadMatch[5];
var code=lookaheadMatch[6];
if (src) { // external script library
var script = document.createElement("script"); script.src = src;
document.body.appendChild(script); document.body.removeChild(script);
}
if (code) { // inline code
if (show) // display source in tiddler
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (label) { // create 'onclick' command link
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
link.tiddler=w.tiddler;
link.onclick=function(){
this.bufferedHTML="";
try{ var r=eval(this.code);
if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
if(this.bufferedHTML.length)
s.innerHTML=this.bufferedHTML;
if((typeof(r)==="string")&&r.length) {
wikify(r,s,null,this.tiddler);
return false;
} else return r!==undefined?r:false;
} catch(e){alert(e.description||e.toString());return false;}
};
link.setAttribute("title",tip||"");
var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
link.setAttribute("href",URIcode);
link.style.cursor="pointer";
if (key) link.accessKey=key.substr(0,1); // single character only
}
else { // run script immediately
var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
try { var out=eval(c); }
catch(e) { out=e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
if(limit > 0) text = text.substr(0,limit);
var wikifier = new Wikifier(text,formatter,null,tiddler);
return wikifier.wikifyPlain();
}
//}}}
// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
{{black{<<calendar>>}}}{{tagClear{}}}
{{{-> }}}[[zeige Monatskalender|Kalender]]
<<newJournal "YYYY-0MM-0DD " label:"Einen neuen Eintrag schreiben..." focus:title prompt:"Hier klicken, um einen neuen Journaleintrag anzulegen!" tag:Journal>>
<<tiddlerList tags:"Journal" dateFormat:"mmm. 0DD" itemTemplate:"*%created - %0 \n" group:"tiddler.created.formatString('YYYY, MMM')" groupTemplate:"!!!%group \n" order:"-created">>
|widetable noborder|k
|padding:10px;<<tiddler SideBarOptions>>|vertical-align:top;padding:10px;<<showReminders leadtime:-14...7>> |
{{{-> }}}[[zeige Jahreskalender|Jahreskalender]]
!befehlen, anordnen, auffordern
*Sie müssen das tun!
*Sie können das nicht tun!
*Ich erwarte von Ihnen, dass Sie dies tun!
*Hören Sie auf damit!
*Gehen Sie sich bei ihr entschuldigen!
!warnen, mahnen, drohen
*Sie hätten besser dies oder das gesagt...!
*Wenn Sie das nicht getan hätten, wäre...!
*Das hätten Sie besser unterlassen!
*Ich warne Sie, wenn Sie dies tun...!
!moralisieren, predigen, beschwören
*Sie sollten das tun!
*Das sollten Sie versuchen!
*Sie sind verpflichtet, es zu tun!
*Sie sind gezwungen, es zu tun!
*Ich wünsche, dass Sie es tun!
*Ich bitte Sie, es zu tun!
!beraten, Vorschläge machen, Lösungen liefern
*Nach meiner Auffassung sollten Sie dies oder das tun...!
*Wenn Sie mich fragen ... es wäre am besten für Sie, wenn Sie...!
*Warum versuchen Sie es nicht mal auf andere Art?
*Die beste Lösung ist...!
!durch Logik überzeugen, Vorträge halten, Gründe anführen
*Sind Sie sich darüber im Klaren, dass...?
*Die Tatsachen sprechen dafür, dass...!
*Lassen Sie mich die Fakten darlegen!
*So wäre es richtig!
*Die Erfahrung sagt uns, dass...!
!urteilen, kritisieren, widersprechen, Vorwürfe machen
*Sie handeln töricht!
*Sie sind auf dem falschen Weg!
*Sie haben es falsch gemacht!
*Sie haben Unrecht!
*Wie dumm von Ihnen, so etwas zu sagen!
!loben, zustimmen, schmeicheln
*In der Regel haben Sie ein sicheres Urteil!
*Sie sind ein intelligenter Mensch!
*Sie haben grosse Fähigkeiten!
*Sie haben enorme Fortschritte gemacht!
*Bisher haben Sie es immer geschafft!
!beschimpfen, lächerlich machen, beschämen
*Sie arbeiten nachlässig!
*Sie können keinen klaren Gedanken fassen!
*Sie reden, als hörten Sie das erste Mal von der Sache!
*Sie stellen sich wirklich töricht an!
!interpretieren, analysieren, diagnostizieren
*Das sagen Sie, weil Sie ärgerlich sind!
*Sie sind eifersüchtig!
*Was Sie wirklich brauchen, ist...!
*Sie haben Autoritätsprobleme!
*Sie wollen Eindruck schinden!
*Sie sind ein bisschen paranoid!
!beruhigen, Sympathie äussern, trösten, aufrichten
*Morgen werden Sie anders darüber denken!
*Es wird schon besser werden!
*Die Dinge sehen immer schlimmer aus, als sie sind!
*Auf Regen folgt Sonnenschein!
*Nehmen Sie sich das doch nicht so zu Herzen!
*So schlimm ist es doch gar nicht!
!forschen, fragen, verhören
*Warum haben Sie das getan?
*Wie lange sind Sie schon dieser Auffassung?
*Was haben Sie getan, um eine Lösung zu finden?
*Haben Sie es mit irgendjemandem besprochen?
*Wann sind Sie sich dieser Einstellung bewusst geworden?
*Wer hat Sie beeinflusst?
!ablenken, ausweichen, aufziehen
*Das hat doch auch sein Gutes!
*Kommen Sie erst mal wieder zu sich, bevor Sie sich darüber Gedanken machen!
*Lassen Sie uns zum Essen gehen und es vergessen!
*Das erinnert mich an die Zeit, als...!
<html><iframe src="http://goto.bplaced.net/x/tiddlyspot/tbgtd/index.php?lang=de" style="border:0"></iframe></html>
Weise Deinen Kontakten Kategorien zu...
| Kontakt |>|h
|''Name''|NameHier|
|''Email''|EmailHier|
|''Adresse''||
|''Telefon''||
!Projektrollen
|Project |Rolle |h
|||
!Notizen
Ein Kontext beschreibt die Art der Tätigkeit, um Aufgaben zu erledigen...
/***
|Name:|LessBackupsPlugin|
|Description:|Intelligently limit the number of backup files you create|
|Version:|3.0.1 ($Rev: 2320 $)|
|Date:|$Date: 2007-06-18 22:37:46 +1000 (Mon, 18 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
|Author:|Simon Baird|
|Email:|simon.baird@gmail.com|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Description
You end up with just backup one per year, per month, per weekday, per hour, minute, and second. So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array
!!Notes
Works in IE and Firefox only. Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.
***/
//{{{
var MINS = 60 * 1000;
var HOURS = 60 * MINS;
var DAYS = 24 * HOURS;
if (!config.lessBackups) {
config.lessBackups = {
// comment out the ones you don't want or set config.lessBackups.modes in your 'tweaks' plugin
modes: [
["YYYY", 365*DAYS], // one per year for ever
["MMM", 31*DAYS], // one per month
["ddd", 7*DAYS], // one per weekday
//["d0DD", 1*DAYS], // one per day of month
["h0hh", 24*HOURS], // one per hour
//["m0mm", 1*HOURS], // one per minute
//["s0ss", 1*MINS], // one per second
["latest",0] // always keep last version. (leave this).
]
};
}
window.getSpecialBackupPath = function(backupPath) {
var now = new Date();
var modes = config.lessBackups.modes;
for (var i=0;i<modes.length;i++) {
// the filename we will try
var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
'$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')
// open the file
try {
if (config.browser.isIE) {
var fsobject = new ActiveXObject("Scripting.FileSystemObject")
var fileExists = fsobject.FileExists(specialBackupPath);
if (fileExists) {
var fileObject = fsobject.GetFile(specialBackupPath);
var modDate = new Date(fileObject.DateLastModified).valueOf();
}
}
else {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(specialBackupPath);
var fileExists = file.exists();
if (fileExists) {
var modDate = file.lastModifiedTime;
}
}
}
catch(e) {
// give up
return backupPath;
}
// expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
// June file on disk that's more than an month old then it must be stale so overwrite
// note that "latest" should be always written because the expiration period is zero (see above)
var expiry = new Date(modDate + modes[i][1]);
if (!fileExists || now > expiry)
return specialBackupPath;
}
}
// hijack the core function
window.getBackupPath_mptw_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));
}
//}}}
/***
|''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);
}
//}}}
<script>
var out='',s,t,tags=[],tids=[],ti,tgt,tpl;
var templates={
Kontakte:'Kontakte Vorlage'
}
tags=store.getTiddlerText('x-tagger Konfiguration##Tags').readBracketedList();
for(t=0;t<tags.length;t++){
ti=tags[t];tgt=tids.contains(ti)?[]:store.getTaggedTiddlers(ti);
if(tgt.length==0)tags.splice(t,1);//ohne Unterelemente von Hauptelementen ($aktuell)
else for(var s=0;s<tgt.length;s++)tids.pushUnique(tgt[s].title);
}
for(t=0;t<tags.length;t++){
ti=tags[t];tids=store.getTaggedTiddlers(ti);
out+="*"+(tids[0]?' '+tids[0].title.substr(0,1)+' ':'')+ti+"\n";
tpl=templates[ti]?store.getTiddlerText(templates[ti]):'';
for(s=0;s<tids.length;s++){
ti=tids[s].title;
out+="**"+tbGTD.nu(ti,tpl)+"<<tag "+ti+">>\n";
}
}
return out;
</script><<accordion>>/%bitte sei so nett und lasse diesen Link nach http://tbGTD-Deutsch.tiddlyspot.com hier%/
<html>
<a class="noCopy" href="javascript:story.displayTiddler(null,'twitter');" title="etwas auf twitter schreiben" style="text-align:center;display:block;float:left;width:42%;padding:0 4%;">twitter</a>
<a class="noCopy" href="http://tbgtd-deutsch.tiddlyspot.com" title="hier gehts zum Original von tbGTD" style="text-align:center;display:block;float:left;width:46%;padding:0 2%;" target="_blank">tbGTD</a>
<div id="atBUTTON" style="clear:both;text-align:center;margin:0;padding:0;"><a href="http://www.addthis.com/bookmark.php?v=250&url=http://tbgtd.tiddlyspot.com&pub=tbGTD&title=tbGTD&desc=Aufgabenmanagementf%fcr%20TiddlyWiki%20%28GTD%29" class="addthis_button noCopy" target="_blank">weitersagen</a></div>
<a href="http://tbGTD.tiddlyspot.com" title="English version / zur englischen Version" class="noCopy lang" target="_parent">English</a></html><<tiddler {{
if (!story.findContainingTiddler(place)){
addthis_localize={share_caption:"Lesezeichen & weitersagen"};
if(!window.atREFRESH)window.atREFRESH=function(){
var b=document.getElementById('atBUTTON');if(!b)return;
removeChildren(b);
b=createTiddlyElement(b,'a',null,'addthis_button noCopy','weitersagen');
b.title='share tbGTD';
b.setAttribute('target','_blank');
b.setAttribute('href','http://www.addthis.com/bookmark.php?v=250&url=http://tbgtd.tiddlyspot.com&pub=tbGTD&title=tbGTD');
b.setAttribute('addthis:url',window.location);
b.setAttribute('addthis:title',document.title);
b.setAttribute('addthis:description','A TiddlyWiki based system to Get Things Done');
if(window.addthis)addthis.button('#atBUTTON',{
ui_offset_top: 3,
ui_offset_left: 3,
ui_delay:400,
ui_language:'en',
ui_cobrand:'<a href="http://www.addthis.com" target="_blank" title="Social Bookmarking von AddThis.com">?</a>'},{});
}
window.atREFRESH();
var tmp=document.getElementById('atff');//fix container bug at top
if(tmp&&tmp.parentNode.childNodes[0]==tmp)tmp.parentNode.style.display='none';
}'';}}>>
<!--{{{-->
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pub=beertobias"></script>
<!--}}}-->
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<link rel="shortcut icon" href="http://sites.google.com/site/beertobias/img/favicon.ico"><style type="text/css">body {background:black;}#contentWrapper {display:none;}</style><div id="SplashScreen" style="display: block; text-align: center; width: 500px; margin: 100px auto; padding: 20px 30px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#333;color:#FFF;border: 2px solid #ddd;-moz-border-radius:5px; -webkit-border-radius:5px;"><img src="http://sites.google.com/site/beertobias/tbgtd.png" style="vertical-align:middle;margin:20px;" alt="Bitte warten." title="Bitte warten."><b>tbGTD</b> lädt<span style="text-decoration: blink;">...</span><br/><span style="font-size: 14px; color:#FDD;">benötigt Javascript</span></div>
<!--}}}-->
//{{{
config.options.txtFadeTimer = 5000; // 5 seconds
window.displayMessage=function(text,linkText,fadeTimer) {
var e = getMessageDiv();
if(!e) {
alert(text);
return;
}
if(linkText) {
var link = createTiddlyElement(e,"a",null,null,text);
link.href = linkText;
link.target = "_blank";
} else {
e.appendChild(document.createTextNode(text));
}
if(config.options.txtFadeTimer > 0) {
setTimeout(clearMessage, config.options.txtFadeTimer);
}
}
//}}}
/***
|Name:|NewHerePluginDEUTSCH|
|Description:|Erzeugt Macros für 'Neu' und 'Journaleintrag'|
|Version:|3.0 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|
|Author:|Simon Baird <simon.baird@gmail.com> mod Tobias Beer|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.macros, {
newHere: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]] prompt:'Einen neuen Tiddler anlegen, der auf diesen verweist'>>",place,null,tiddler);
}
},
newJournalHere: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
wikify("<<newJournal "+paramString+" label:'Journal' tag:Journal tag:[["+tiddler.title+"]] prompt:'Erzeuge einen neuen Journaleintrag, der auf diesen Tiddler verweist'>>",place,null,tiddler);
}
}
});
//}}}
/***
|Name:|NewMeansNewPlugin|
|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Version:|1.1 ($Rev: 2263 $)|
|Date:|$Date: 2007-06-13 04:22:32 +1000 (Wed, 13 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/empty.html#NewMeansNewPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Note: I think this should be in the core
***/
//{{{
String.prototype.getNextFreeName = function() {
var numberRegExp = / \(([0-9]+)\)$/;
var match = numberRegExp.exec(this);
if (match) {
var num = parseInt(match[1]) + 1;
return this.replace(numberRegExp," ("+num+")");
}
else {
return this + " (1)";
}
}
config.macros.newTiddler.checkForUnsaved = function(newName) {
var r = false;
story.forEachTiddler(function(title,element) {
if (title == newName)
r = true;
});
return r;
}
config.macros.newTiddler.getName = function(newName) {
while (store.getTiddler(newName) || config.macros.newTiddler.checkForUnsaved(newName))
newName = newName.getNextFreeName();
return newName;
}
config.macros.newTiddler.onClickNewTiddler = function()
{
var title = this.getAttribute("newTitle");
if(this.getAttribute("isJournal") == "true") {
var now = new Date();
title = now.formatString(title.trim());
}
title = config.macros.newTiddler.getName(title); // <--- only changed bit
var params = this.getAttribute("params");
var tags = params ? params.split("|") : [];
var focus = this.getAttribute("newFocus");
var template = this.getAttribute("newTemplate");
var customFields = this.getAttribute("customFields");
story.displayTiddler(null,title,template,false,null,null);
var tiddlerElem = document.getElementById(story.idPrefix + title);
if(customFields)
story.addCustomFields(tiddlerElem,customFields);
var text = this.getAttribute("newText");
if(typeof text == "string")
story.getTiddlerField(title,"text").value = text.format([title]);
for(var t=0;t<tags.length;t++)
story.setTiddlerTag(title,tags[t],+1);
story.focusTiddler(title,focus);
return false;
};
//}}}
Alle [[Notizen|QuickNotes]] verweisen hierher...
@@display:block;margin:1em 1em 0 1em; [[SiteLayout]] <<saveChanges 'speichern'>><<tiddler TspotSidebar>><<slider chkTspotControls TspotControls "mehr TiddlySpot Optionen »" "Zeige mehr TiddlySpot Optionen">><<slider chkAdvOptionsPanel AdvancedOptions "erweiterte Optionen »" "Zeige erweiterte Optionen">>@@
|widetable|k
| option | description |h
| <<tiddler TspotOptions>>|Optionen werden als Cookies im Browser gespeichert|
| <<option txtUserName>>|Benutzername für Einträge|
| <<option chkAnimate>>|Animationen aktivieren|
| <<option chkAutoSave>>|automatisch speichern|
| <<option chkSaveBackups>>|Backups speichern|
| <<option chkRegExpSearch>>|Suche mit regulären Ausdrücken|
| <<option chkCaseSensitiveSearch>>|Groß-/Kleinschreibung bei Suche beachten|
/***
|''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"
});
*/
//}}}
<<tiddlerList tags:"Phase" order:"title" header:'| Phase | Beschreibung |h' itemTemplate:"|text-align:left;!%link|<<tiddler '%title'$))|\n">>/%
!Info
Benutze [[Phasen|Phase]] um eine Sache, z.B. eine Aufgabe einem bestimmten Abschnitt eines Projektablaufs zuzuordnen. [[Hier|Phase]] findest du einen Überblick der vordefinierten Phasen und ihre Bedeutung. In Phasen zu denken ist vor allem wichtig, wenn sich bestimmte Arten von Projekten regelmäßig wiederholen. Es ist wichtig, dass Phasen den eigenen Projektablauf widerspiegeln. Passe sie also deinen Bedürfnissen an oder lege tbGTD-Vorlagen für verschiedene Projektarten an.
!end%/
Von nun an gibt es in tbGTD ein Phasenmodell bei dem Aufgaben Projektphasen zugeordnet werden können, indem sie diese als Tag bekommen. Dies ist ein leistungsfähiger Ansatz für Projektdokumentationen, um einen Überblick über den Projektforschritt zu bekommen und eine Übericht der Aktivitäten in den einzelnen Projektphasen. Hier eine Übersicht der eingeführten [[Phasen...|Phase]]
<<tiddlerList tags:"Phase" order:"title" header:'| Phase | Beschreibung |h' itemTemplate:"|text-align:left;!%link|<<tiddler '%title'$))|\n">>
!Tips
*Du kannst selbstverständlich die Projektphasen nach eigenen Vorstellungen anpassen. Editiere dazu einfach die entsprechenden Phasen-Tiddler.
*Probiere doch mal die neue ~Quick-Add Funktion in QuickNotes diesmal mal Phasen!
/***
|''Name:''|~PopupMacro|
|''Author:''|Saq Imtiaz (mod Tobias Beer)|
|''Version:''|1.1 (2009-11-08)|
|''Description:''|Create popups with custom content|
|''Source:''|http://tbGTD.tiddlyspor.com/#PopupMacro|
|''Documentation:''|http://tw.lewcid.org/#PopupMacroDocs|
|''Requires:''|TW Version 2.0.8 or better|
@@((mod for tbGTD(^removed styles and code cleanup)))@@
!Code
***/
//{{{
config.macros.popup={
err1:'missing macro parameters',
err2:'missing label or content parameter',
arrow:document.all?"▼":"▾",
handler:function(place,macroName,params,wikifier,paramString,theTiddler){
var cls,id,lbl,src,click;
if(!params[0]||!params[1]){createTiddlyError(place,this.err1,this.err2);return false;}
lbl=params[0];
src=(params[1]).replace(/\$\)\)/g,">>");
id=params[2]?params[2]:'nestedpopup';
cls='popup'+(params[3]?' ' +params[3]:'');
click=function(e){
var btn,nest,p,tgt;
e=e||window.event;
tgt=resolveTarget(e);
nest=!isNested(tgt);
id=nest?id:'popup';
if(nest&&Popup.stack.length>1)Popup.removeFrom(1);
else if(!nest&&Popup.stack.length>0)Popup.removeFrom(0);
p=createTiddlyElement(document.body,"ol",id,cls,null);
Popup.stack.push({root:this,popup:p});
wikify(src,p);
Popup.show(p,true);e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();return false;
}
btn=createTiddlyButton(place,lbl+this.arrow,lbl,click,null);
}
}
window.isNested=function(el){
var c=document.getElementById("contentWrapper");
while(el!=null){if(el==c)return true;el=el.parentNode;}return false;
}
setStylesheet('#nestedpopup {margin-left:1em;}','PopupMacroStyles');
//}}}
/***
|Name:|PrettyDatesPlugin|
|Description:|Provides a new date format ('pppp') that displays times such as '2 days ago'|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#PrettyDatesPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Notes
* If you want to you can rename this plugin. :) Some suggestions: LastUpdatedPlugin, RelativeDatesPlugin, SmartDatesPlugin, SexyDatesPlugin.
* Inspired by http://ejohn.org/files/pretty.js
***/
//{{{
Date.prototype.prettyDate = function() {
var diff = (((new Date()).getTime() - this.getTime()) / 1000);
var day_diff = Math.floor(diff / 86400);
if (isNaN(day_diff)) return "";
else if (diff < 0) return "in der Zukunft";
else if (diff < 60) return "gerade eben";
else if (diff < 120) return "vor 1 Minute";
else if (diff < 3600) return "vor "+Math.floor(diff/60) + " Minuten";
else if (diff < 7200) return "vor 1 Stunde";
else if (diff < 86400) return "vor "+Math.floor(diff/3600) + " Stunden";
else if (day_diff == 1) return "Gestern";
else if (day_diff < 7) return "vor "+day_diff + " Tagen";
else if (day_diff < 14) return "vor einer Woche";
else if (day_diff < 31) return "vor "+Math.ceil(day_diff/7) + " Wochen";
else if (day_diff < 62) return "vor einem Monat";
else if (day_diff < 365) return "vor ungefähr " + Math.ceil(day_diff/31) + " Monaten";
else if (day_diff < 730) return "vor einem Jahr";
else return "vor "+Math.ceil(day_diff/365) + " Jahren";
}
Date.prototype.formatString_orig_mptw = Date.prototype.formatString;
Date.prototype.formatString = function(template) {
return this.formatString_orig_mptw(template).replace(/pppp/,this.prettyDate());
}
// for MPTW. otherwise edit your ViewTemplate as required.
// config.mptwDateFormat = 'pppp (DD/MM/YY)';
config.mptwDateFormat = 'pppp';
//}}}
Weise Prioritäten zu, um nach Wichtigkeit zu differenzieren...
Strukturiere komplexe Aufgaben in Projekten, indem Du ihnen Projektnamen als Tag zuweist. Gruppiere Projekte nach ihrem Status.
''Neu'': <<newTiddler label:"$aktuell" title:"neues aktuelles Projekt" prompt:"ein neues aktuelles Projekt anlegen" focus:title tag:$aktuell>><<newTiddler label:"$zukünftig" title:"neues zukünftiges Projekt" prompt:"ein neues zukünftiges Projekt anlegen" focus:title tag:$vielleicht>><<newTiddler label:"$vielleicht" title:"neues mögliches Projekt" prompt:"ein neues mögliches Projekt anlegen" focus:title tag:$vielleicht>>
!~Quick-Add, neu in QuickNotes
Ich hab' mir mal die Zeit genommen eine ~Quick-Add ('schnell-hinzufügen') Funktion in QuickNotes einzubauen. Vielleicht kennst du ja schon soetwas ähnliches von [[MonkeyGTD|monkeygtd.tiddlyspot.com]]. Dieses funktioniert jedoch etwas anders. Ich habe ein paar wirklich leistungsfähige Funktionen eingebaut und hoffe sie werden Dir sehr dienlich sein!
!Die Neuerungen
*Konzept und Details der Implementierung findest Du in der [[QuickAdd Hilfe]]
*jetzt gibt es eine nützliche {{button{+}}}Schaltfläche im [[linken oberen Menü|topMenuL]] um QuickNotes zu öffnen
*Benutze {{button{Erinnerung inzufügen}}}, um eine solche deiner Notiz oder ~Quick-Add-Liste hinzuzufügen
*nun kannst du auch das {{button{Textfeld größer}}} machen
*klickst du {{button{Notizliste öffnen}}} werden dir alle Notizen angezeigt
!Aktualisierungshinweis
Um dein QuickNotes auf die neue Version zu aktualisieren brauchst du es nur aus diesem Dokument zu importieren
!Weitere Neuerungen
*Kategorien im [[Hauptmenü|MainMenu]] werden nun zu Referenzzwecken mit ihrem entsprechenden Präfix angezeigt
*von nun an bewirkt ein Doppelklick auf eine Kategorie im [[Hauptmenü|MainMenu]] dass alle Kategorien aufgeklappt werden
**Einfachklick öffnet wie bisher eine einzelne Kategorie und schließt alle anderen
!Die neue QuickNotes Oberfläche
So sieht das heutige Design aus, in der Tat kannst du es gleich hier benutzen...
<<tiddler QuickNotes>>
[[QuickAdd|QuickNotes]] Zusammenfassungen...
!QuickNotes kann auf zwei Weisen verwendet werden
#''einfache Notiz'' -- speichert eine neue [[Notiz]] mit folgenden Eigenschaften:
**einem ''Titel'' (optional) {{{...ist keiner angegeben wird ein Zeitstempel verwendet}}}
**ein paar ''Tags'' (optional) {{{...alle Notizen bekommen das Tag 'Notiz'}}}
**dem ''Notiztext'' natürlich
#[[Quick-Add|QuickNotes]] -- erlaubt es mehrere GTD Elemente gleichzeitig anzulegen:
**wird durch ''~Strg-Klick'' auf den ''Notiz speichern''-Knopf ausgelöst
**definiere hinzuzufügende Elemente mit einer einfachen aber leistungsstarken Syntax {{{...wie im folgenden beschrieben}}}
!Funktionsweise von [[Quick-Add|QuickNotes]]
In den Standardeinstellungen können [[Projekte|Projekt]] und [[Aufgaben|Aufgabe]] per ~Quick-Add hinzugefügt werden. Hier ein Beispiel der Syntax zum Hinzufügen von Aufgaben:
>#s Maria anrufen|@a &Fa {{{...erzeugt die Aufgabe 'Maria anrufen' für '#später' mit den Tags '@anrufen' und '&Familie'}}}
>!Notizen {{{...dies ist eine Überschrift im Inhaltsteil der Aufgabe 'Maria anrufen'}}}
>!!Zu besprechende Dinge: {{{...eine Ebene darunter}}}
>*Wochenende {{{...du kannst sogar Listen verwenden}}}
>*http://maria.de {{{...könnte auch ein WikiLink sein, wie: [[Johann]]}}}
>.#s erinnere sie an Johanns Geburtstag {{{...erzeugt eine Unteraufgabe von 'Maria anrufen' für '#später'}}}
''Hinweis'': Jede Benutzung von ~Quick-Add erzeugt eine Zusammenfassung mit Zeitstempel für den schnellen Zugriff auf die eben erzeugten Tiddler.
!Die Syntax im Detail
!!Grundlagen
Um eine Standard-[[Aufgabe]] ([[#nächste]]) oder ein Standard-[[Projekt]] ([[$aktuell]]) anzulegen reicht es, dass die Zeile mit dem Präfix ''#'' oder ''$'' beginnt, gefolgt von einem Leerzeichen:
>''$'' mein neues aktuelles Projekt
>''#'' meine neue nächste Aufgabe
Folgen auf das Präfix eindeutige Buchstaben eines Tags dieser Kategorie, können auch andere als die Standards eingefügt werden:
>''#s'' eine Aufgabe für später
>''$z'' ein zukünftiges Projekt
Durch Leerzeichen getrennt folgt der Titel:
>''# der Titel meiner neuen nächste Aufgabe''
Um weitere GTD Tags hinzuzufügen benutze das Trennzeichen ' ''|'' ' gefolgt von den GTD Tags auf der Grundlage der selben Regeln wie bereits beschrieben, jeweils getrennt durch Leerzeichen:
># Lies Popper''|@l &W'' {{{...erzeugt die Aufgabe 'Lies Popper' mit den Tags @lesen und &Wissenschaft}}}
''Hinweis'': Nach dem Trennzeichen ' ''|'' ' kannst du neben GTD Tags auch die Anfangsbuchstaben eines zuvor deklarierten Elements verwenden oder sogar die eindeutigen Anfangsbuchstaben eines beliebigen existierenden Tiddlers. Enthalten diese Leerzeichen, dann schließe sie in doppelten, eckigen Klammern ein, z.B. {{{[[tu e]]}}} um auf ein Element names {{{'tu etwas'}}} zu verweisen oder alternativ einen existierenden Tiddler, dessen Name mit {{{'tu e'}}} beginnt. Gerade definierte Elemente werden gegenüber existierenden Tiddlern bevorzugt, also:
># ''T''u dies...
># Dann das...|''T'' {{{...verweist auf Aufgabe 'Tu dies' und bekommt diese somit als Tag}}}
!!Abhängigkeiten
Benutze Einrückungen oder Tags um Aufgabenabhängigkeiten zu definieren, wobei...
*Elemente, die als Tag verwendet werden, von denen Abhängen, die sie als Tag besitzen
*Elemente einer höheren Ebene von denen der Unterebenen abhängen, bspw. wie Projekte von Einzelaufgaben
!!Unterelemente (Einrückung)
Durch Voranstellen von Punkten ( ''.'' ) werden Elemente zu Unterlementen und bekommen damit das Element der nächst höheren Ebene als Tag zugewiesen:
>$z ein zukünftiges Projekt
>''.''#z eine zukünftige Unteraufgabe {{{...bekommt 'ein zukünftiges Projekt' als Tag}}}
>''.''#z zweite zukünftige Unteraufgabe|§6 {{{...im Bezug Experimente}}}
>''..''#z die Zukunft auf Unterebene zwei {{{...wird Unterelement von 'zweite zukünftige Unteraufgabe'}}}
>''.''#e bereits erledigte Unteraufgabe {{{von 'ein zukünftiges Projekt'}}}
>$ noch ein nächstes Projekt
>''.''#Aufgabe 0815 {{{...genau, eine Unteraufgabe davon}}}
Welche Elemente Unterelemente von welchen sein dürfen ist am Anfang des Quellcodes von QuickNotes definiert. Hier die Voreinstellungen:
>''$''Projekte können folgende Unterelemente haben
>>''.$''Unterprojekt
>>''.§''Phase
>>''.#''Aufgabe
>>''.?''Kontakt
>''§''Phasen folgende... {{{...nicht empfohlen, Phasen sollten eher Tags von Aufgaben sein}}}
>>''.#''Aufgabe
>>''.?''Kontakt
>''#''Aufgaben folgende...
>>''.#''Aufgabe
>>''.?''Kontakt
!!Noch mehr Tags
Wenn du weitere Tags in das Eingabefeld für Tags von QuickNotes eingibst werden diese Tags __allen__ Elementen hinzugefügt, die per ~Quick-Add erzeugt werden! Zum Beispiel, wenn du folgendes eingibst...
>{{{[[Projektname in eckigen Klammern]]}}}
...wird dies als Tag an alle Elemente und deren Unterlemente angefügt, zusätzlich zu den durch Punkte erzeugten Hierarchien.
''Hinweis'': Wenn du die eckigen Klammern im oberen Beispiel vergisst, bekommen alle Elemente __vier__ weitere Tags anstatt dem einen, den du wolltest! Du kannst Tags mit Leerzeichen aber auch in 'einfache' oder "doppelte" Hochkommas einschließen und durch Leerzeichen trennen.
!!Neues Element mit Inhalt
Alle Zeilen, die nicht mit einem entsprechenden Präfix ''#'' oder ''$'' beginnen, werden als Inhalt des darüber definierten Elements interpretiert:
>$v mein privates vielleicht Projekt|-p {{{...ist die Definitionszeile des Projekts}}}
>!Projektübersicht {{{...hier beginnt der Inhalt des Projekt-Tiddlers}}}
>*eine Liste
>*im Inhaltsteil {{{...und hier endet er}}}
>.#n meine nächste Sportaufgabe|&S {{{...die Definition einer weiteren Unteraufgabe}}}
>Schau hier ...http://sport.de {{{...und ihr Inhalt}}}
>*#mit einer pseudo-nummerierten Liste {{{...du kannst das # nicht direkt benutzen, da es das Aufgabenpräfix ist!}}}
>*#Listenelement Nummer zwei {{{...endet hier}}}
!Tips
Versuche folgende zwei nicht zu verwechseln... ''§''Paragraph (Projekt) und ''$''Dollar (Phase)
<script>if(!window.tbQA)window.tbQA={
bigSize:'300px',//Höhe der großen Textbox
searchAll:true,//bestimmt, ob alle Tiddler für unbekannte Tags durchsucht werden oder nur hinzugefügte
lingo:{//translation
none:"Nichts zu speichern! Soll die Quick-Add Hilfe angezeigt werden?",
empty:"Da ist keine Notiz, oder?",
noMatch:"Für '%0' weder ein hinzugefügter noch ein bestehender Tiddler gefunden!%1Nochmal versuchen...",
justAdded:"Du hast bereits folgende hinzugefügt:%0. ",
notFound:"Kein %0Tag gefunden für '%1' und '%2'! ",
noDefault:"Kein Standard-Tag definiert für %0. ",
useShort:"Benutze eine Kurzform von '%0'. ",
usePrefix:"Oder benutze einfach nur das Prefix '%0' für '%1'. ",
enterNew:"Gib ein anderes %0Tag ein für '%1'...",
listPrefix:"|linkTable|k\n| Typ | Tiddler | Tags | Aktion |h\n"
},
cfg:{
//---tbGTD QuickAdd Konfiguration (gespeichert als globales Objekt)---
//nach bedarf ändern ...zum übernehmen neu laden!
//alle geprüften Präfixe (nicht erlaubt sind: 'fst','all'!)
p:['#','^','$','§','@','?','&','-'],
//Definitions-Arrays für diese Präfixe -> Komma (!) getrennte Werte
//'Präfix':[0='Kategorie-Tag', 1='Standard-Eintrag, [2='Array erlaubter Unterelemente {...für genestete Einträge}']],
'$':['Projekt','$aktuell',['$','§','#','?']], //nur die mit Unterelementen sind als Zeilenanfang erlaubt!
'#':['Aufgabe','#nächste',['#','?']],
'^':['Priorität','^1.high'],
'§':['Phase',,['#','?']],
'@':['Kontext'],
'?':['Kontakte'],
'&':['Gruppe'],
'-':['Bereich','-Privat-'] //-> beachte das letze Komma in jeder Zeile nur hier nicht!
//---Ende der Quick-Add Konfiguration---
//ab hier besser nicht editieren!!!
},
init:function(){
var c,cat,def,pr,t,tag,tgt,tit;
c=this.cfg;c.fst=[];c.all=[];
for(pr=0;pr<c.p.length;pr++){
cat=c.p[pr];def=c[cat];
if(def){
tag=def[0];
if(tag){
if(def[2])c.fst.pushUnique(cat);
c[cat]['tags']=[];
tgt=store.getTaggedTiddlers(tag);
for(t=0;t<tgt.length;t++){
tit=tgt[t].title;
c[cat]['tags'].pushUnique(tit);
c.all.pushUnique(tit);
}
}
}
}
},
find:function(dt,pr,ti){
var c=tbQA.cfg,ct,fo='',l=tbQA.lingo,t,nd;
while(fo==''&&dt){
nd=false;
if(dt.length==1){
if(c[pr][1])fo=c[pr][1];
else nd=true;
}else{
for(t=0;t<c[pr]['tags'].length;t++){
ct=c[pr]['tags'][t];
if(ct.indexOf(dt)==0){fo=ct;break;}
}
}
if(!fo)dt=prompt((nd?l.noDefault.format([c[pr][0]]):l.notFound.format([c[pr][0]+'-',dt,ti]))+
(c[pr][0]?l.useShort.format([c[pr]['tags']]):'')+
(c[pr][1]?l.usePrefix.format([pr,c[pr][1]]):'')+
l.enterNew.format([c[pr][0]+'-',ti]),pr).trim();
}
return fo;
}
};
tbQA.init();
config.shadowTiddlers['Letzte Notizen']='<<tiddlerList filter:"tiddler.tags.containsAny([\'QuickAdd\',\'Notiz\'])" top:"5" order:"-created" dateFormat:"pppp" itemTemplate:"!@@background:#DDD;display:block;width:98%;padding:5px 1%;%link@@\\n<<tiddler scripts##deleteTiddler with: \'%title\' \'Letzte Notizen\' norefresh$)) (%created) @@padding-left:2em;tags: %tags@@\\n\\n%text\\n">>';
</script><html><nowiki><form id="qNotes" style="width:100%;">
<table class='borderless' cellpadding='0' cellspacing='0' style='width:100%;'>
<tr><td style='width:75%;margin-left:-5px;'>
<input name='tags' type='text' title="füge Tags zu dieser Notiz hinzu (zusätzlich bekommen alle das Tag 'Notiz')" cols='60' style='width:29.5%;float:right;border:1px solid #CCC;'>
<input name='title' type='text' title='Titel der Notiz ...wenn leer, wird dieser Datumsstempel eingefügt: YYYY-0MM-0DD 0hh:0mm:0ss' cols='60' style='width:69.25%;float:right;border:1px solid #CCC;'>
</td><td rowspan='2' style='width:25%'>
<input type='button' class='button btn' value='Notizliste öffnen' id='toggleNotesArchive' title="klicke, um die lite aller Notizen anzuzeigen" onclick="
var show=value=='Notizliste öffnen';
var el=document.getElementById('showNoteList');
show?wikify(store.getTiddlerText('QuickNotes##archive'),el):el.innerHTML='';
el.style.display=show?'block':'none';
this.value=show?'Notizliste schließen':'Notizliste öffnen';
return false;">
<input type='button' class='button btn' value='Textfeld größer' id='toggleInputSize' title='Klicke, um die Größe des Textfeldes größer oder kleiner zu machen' onclick="
var big=this.value=='Textfeld größer';
this.value=(big?'Textfeld normal':'Textfeld größer');
this.form.note.style.height=(big?tbQA.bigSize:'120px');
return false;">
<input type='button' class='button btn' value='Erinnerung einfügen' title='füge eine Erinnerung in diese Notiz ein' onClick='
var d=new Date();
this.form.note.value=this.form.note.value+"\n"+"<<reminder year:%0 month:%1 day:%2 title:\"Titel der Erinnerung\">>".format(
[d.getFullYear(),
String.zeroPad(d.getMonth()+1,2),
String.zeroPad(d.getDate(),2)]);
this.form.note.focus();
return false;'>
<input type='button' class='button btn' value='Quick-Add Hilfe' title='zeige die Quick-Add Hilfe' onclick="story.displayTiddler(null,'QuickAdd Hilfe');">
<input type='button' name='save' class='button btn' value='Notiz speichern (Klick)
Quick-Add (Strg+Klick)' style='height:55px;' title='Klick zum Speichern der Notiz | Strg-Klick zum schnellen Hinzufügen von Projekten, Aufgaben, etc...' onclick="
var arr,c,cs=0,cul,def,dt,ev,fi,fo,hr,ind,la=[],key,lash,l,len,lev,li,ll;
var nu,ok,out,note,ntgs,pos,pr,sh,subs,t,tag,tgs=[],tid,tids=[],ti='',txt='',who,when,x;
c=tbQA.cfg,l=tbQA.lingo;
ev=event||window.event;
ok=function(ti){return !store.tiddlerExists(ti)||confirm(config.messages.overwriteWarning.format([ti]))};
who=config.options.txtUserName;
when=new Date();
tgs=this.form.tags.value.readBracketedList();
note=this.form.note.value;
if(note==''){alert(l.empty);return;}
if(ev.ctrlKey){
tids['add']=[];
tids['all']=store.getTiddlers('title');
li=note.split('\n');
while(true){
ll=li.length==0;
cul=li.shift();
if(!ll){
sh=cul.match(/^(\.*)/)[0].length;
cs=Math.min(cs+1,sh);
subs=cs>0&&la[cs-1]?c[la[cs-1][1]][2]:[];
fi=cul.substr(sh,1);
}
if(ll||cs==0&&c.fst.contains(fi)||(subs&&subs.contains(fi))){
if(ti&&ok(ti)){
tids['add'].pushUnique(ti);
tids.push([ti,lash,ntgs,pr]);
store.saveTiddler(ti,ti,txt,who,when,ntgs,{});
}if(ll)break;
cul=cul.substr(sh,cul.length);
pr=fi;
ti=txt='';
ntgs=tgs.slice();
pos=cul.indexOf(' ');
if(pos<0)continue;
dt=cul.substr(0,pos);
cul=cul.substr(pos+1,cul.length);
arr=cul.split('|');
ti=arr[0].trim();
fo=tbQA.find(dt,pr,ti);
if(fo)ntgs.push(fo);
def=arr[1]?arr[1].readBracketedList():[];
while(def[0]){
dt=def.shift().trim();
fi=dt.substr(0,1);
fi=c.p.contains(fi)?fi:'';
if(fi){
fo=tbQA.find(dt,fi,ti);
if(fo)ntgs.push(fo);
}else{
fo='';
while(!fo&&dt){
for(t=0;t<tids['add'].length;t++){
tid=tids['add'][t];
if(tid.indexOf(dt)==0){fo=tid;break;}
}
if(!fo&&tbQA.searchAll){
for(t=0;t<tids['all'].length;t++){
tid=tids['all'][t].title;
if(tid.indexOf(dt)==0){fo=tid;break;}
}
}
if(!fo)dt=prompt(l.noMatch.format([dt],(tids['add'].length==0?'':l.justAdded.format([tids['add']]))),dt);
else ntgs.push(fo);
}
}
}
if(cs>0&&store.getTiddler(la[cs-1][0]))ntgs.pushUnique(la[cs-1][0]);
la[cs]=[ti,pr];
lash=cs;
}else txt+=cul+'\n';
}
if(tids.length==0){
if(confirm(l.none))story.displayTiddler(null,'QuickAdd Hilfe');
}else{
txt=l.listPrefix;
for(t=0;t<tids.length;t++){
nu=tids[t];
tgs=nu[2].map(function(t){return '<<tag [['+t+']]>>'}).join(',');
txt+='|<<tag [['+c[nu[3]][0]+']]>>|padding-right:5px;padding-left:'+(nu[1]*20+5)+'px;<<tag [['+nu[0]+']]>>|'+tgs+
'|<<tiddler scripts##deleteTiddler with: [['+nu[0]+']] [[Letzte Notizen]] norefresh >>|\n';
}
tit='Quick-Add '+when.formatString('YYYY-0MM-0DD 0hh:0mm');
store.saveTiddler(tit,tit,txt,who,when,'QuickAdd',{});
}
}else{
tit=this.form.title.value||when.formatString('YYYY-0MM-0DD 0hh:0mm:0ss');
tgs.push('Notiz');
if(ok(tit))store.saveTiddler(tit,tit,note,who,when,tgs,{});
}
this.form.note.focus();
story.refreshTiddler('Letzte Notizen',null,true);
refreshDisplay();">
</td></tr><tr><td><textarea name='note' title='Der Inhalt Deiner Notiz' rows='5' cols='60' style='height:120px;width:99%;float:right;border:1px solid #CCC;'></textarea></td><td>
</td></tr></table>
</form><div id="showNoteList" style="clear:both;width:98%;margin:2px 0 5px 0;padding:2px 1%;display:none;"></div><h1 style="padding-top:0;">Letzte Notizen</h1></html><<tiddler 'Letzte Notizen'>>/%
!archive
<<tiddlerList tags:"Notiz" order:"-modified" dateFormat:"pppp" itemTemplate:"<<tiddler scripts##deleteTiddler with:'%title' 'Letzte Notizen' norefresh $)): %link (%created) @@padding-left:2em;tags: %tags@@\n">>
!end%/<<tiddler {{
jQuery("#qNotes .button").css({'margin':'0','padding':'0','display':'block'});
jQuery("#qNotes .btn").css({'margin':'0 0 2px 0','clear':'both','z-index':'1','width':'98%','display':'block','float':'right'});
"";}}>>
/***
|Name:|QuickOpenTagPlugin|
|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
@@color:red; ((modified for tbGTD(^mod by Tobias Beer ...optionally does not show ~QuickOpenTag-button if there are no tagging tiddlers)))@@
***/
//{{{
config.quickOpenTag = {
hideIfNoneTagging:true,
dropdownChar: "\u25be", //(document.all ? "\u25bc" : "\u25be"), // the little one doesn't work in IE?
createTagButton: function(place,tag,excludeTiddler) {
// little hack so we can do this: <<tag PrettyTagName|RealTagName>>
var splitTag = tag.split("|");
var pretty = tag;
if (splitTag.length == 2) {
tag = splitTag[1];
pretty = splitTag[0];
}
var sp = createTiddlyElement(place,"span",null,"quickopentag");
createTiddlyText(createTiddlyLink(sp,tag,false),pretty);
if(config.quickOpenTag.hideIfNoneTagging&&store.getTaggedTiddlers(tag).length==0)return; //tbGTD
var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
config.views.wikified.tag.tooltip.format([tag]),onClickTag);
theTag.setAttribute("tag",tag);
if (excludeTiddler)
theTag.setAttribute("tiddler",excludeTiddler);
return(theTag);
},
miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
var tid=params[0]?params[0]:tiddler;
if (!store.getValue(tid,'nominitag')&&store.getTaggedTiddlers(tid.title).length>0) {
var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
config.views.wikified.tag.tooltip.format([tid.title]),onClickTag);
theTag.setAttribute("tag",tid.title);
theTag.className = "miniTag";
}
},
allTagsHandler: function(place,macroName,params) {
var tags = store.getTags(params[0]);
var filter = params[1]; // new feature
var ul = createTiddlyElement(place,"ul");
if(tags.length == 0)
createTiddlyElement(ul,"li",null,"listTitle",this.noTags);
for(var t=0; t<tags.length; t++) {
var title = tags[t][0];
if (!filter || (title.match(new RegExp('^'+filter)))) {
var info = getTiddlyLinkInfo(title);
var theListItem =createTiddlyElement(ul,"li");
var theLink = createTiddlyLink(theListItem,tags[t][0],true);
var theCount = " (" + tags[t][1] + ")";
theLink.appendChild(document.createTextNode(theCount));
var theDropDownBtn = createTiddlyButton(theListItem," " +
config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
theDropDownBtn.setAttribute("tag",tags[t][0]);
}
}
},
// todo fix these up a bit
styles: [
"/*{{{*/",
"/* created by QuickOpenTagPlugin */",
".tagglyTagged .quickopentag, .tagged .quickopentag {margin-right:1.2em; border:1px solid [[ColorPalette::TertiaryPale]]; padding:2px 0 2px 1px;}",
".quickopentag .tiddlyLink, .quickopentag a.button {padding:1px;margin:0;}",
".miniTag:hover {background:[[ColorPalette::SecondaryLight]]}",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink {border:0px solid [[ColorPalette::Foreground]];}",
"/*}}}*/",
""].join("\n"),
init: function() {
// we fully replace these builtins. can't hijack them easily
window.createTagButton = this.createTagButton;
config.macros.allTags.handler = this.allTagsHandler;
config.macros.miniTag = { handler: this.miniTagHandler };
config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;
store.addNotification("QuickOpenTagStyles",refreshStyles);
}
}
config.quickOpenTag.init();
//}}}
Benutze dieses Tag für Informationen zu Aufgaben, Projekten und Kontakten, etc...
/***
|''Name:''|ReminderPlugin|
|''Version:''|2.3.11 (Oct 17, 2009)|
|''Source:''|http://remindermacros.tiddlyspot.com|
|''Author:''|Jeremy Sheeley(pop1280 [at] excite [dot] com) / Modded: Tobias Beer|
|''Licence:''|[[BSD open source license]]|
|''Macros:''|reminder, showreminders, displayTiddlersWithReminders, newReminder|
|''TiddlyWiki:''|2.0+|
|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
@@color:red;massively modded for tbGTD! ...shrinked code| dateformat | list format + prefix@@
!Description
This plugin provides macros for tagging a date with a reminder. Use the {{{reminder}}} macro to do this.
The macros {{{showReminders}}} and {{{displayTiddlersWithReminder}}} search through all available tiddlers looking for upcoming reminders.
!Code
***/
//{{{
version.extensions.ReminderPlugin={major:2,minor:3,revision:11,date:new Date(209,10,17),source:"http://remindermacros.tiddlyspot.com/"};
//========== Configuration... modify this section to change the defaults for leadtime and display strings
config.macros["reminder"]={};
config.macros["newReminder"]={};
config.macros["showReminders"]={};
config.macros["displayTiddlersWithReminders"]={};
config.macros.reminders={
defaultLeadTime:[-365,6000],
defaultReminderMessagePrefix:"@@padding-right:5px;color:"+store.getTiddlerSlice('ColorPalette','SecondaryMid')+";''Erinnerung:''@@",
defaultReminderMessage:"DATE ANNIVERSARY @@color:"+store.getTiddlerSlice('ColorPalette','TertiaryMid')+";(DIFF)@@@@padding:0 3px;TITLE@@",
defaultShowReminderMessagePrefix:"|noborder|k\n", //|__''Wann''__|__''Was''__|__''Tiddler''__|\n",
defaultShowReminderMessage:"|DATE ANNIVERSARY @@color:"+store.getTiddlerSlice('ColorPalette','TertiaryMid')+";(DIFF)@@|TITLE|TIDDLER|",
defaultAnniversaryMessage:"(DIFF)",
untitledReminder:"Untitled Reminder",
noReminderFound:"Couldn't find a match for TITLE in the next LEADTIMEUPPER days.",
todayString:"Today",
tomorrowString:"Tomorrow",
ndaysString:"DIFF days",
dateFormat:"MMM. DD",
emtpyShowRemindersString:"no upcoming events",
txtRemindTip:"open a form to add a new reminder to this tiddler",
txtRemind:"remind",
txtTitle:"Please enter a title",
txtEachYear:"Every year",
txtEachMonth:"Every month",
txtEachDay:"Every day"
}
//========== Code... no need to edit below!
//holds the cache of reminders, so that we don't recompute the same reminder over again
var reminderCache={};
config.macros.showReminders.handler=function showReminders(place,macroName,params){
var lead=[0,14];
var now=new Date().getMidnight();
var r=getParamsForReminder(params);
var hasDate=r["year"]!=null||r["month"]!=null||r["day"]!=null||r["dayofweek"]!=null;
if(r["leadtime"]!=null){
lead=r["leadtime"];
//If they've entered a day, we need to make sure to find it
if(hasDate)r["leadtime"]=[-10000,10000];
}
var match=now;
if(hasDate){
var LBound=new Date().getMidnight().addDays(r["leadtime"][0]);
var UBound=new Date().getMidnight().addDays(r["leadtime"][1]);
match=findDateForReminder(r,new Date().getMidnight(),LBound,UBound);
}
var arr=findTiddlersWithReminders(match,lead,r["tag"],r["limit"]);
var el=createTiddlyElement(place,"span",null,null,null);
var msg="";
c=config.macros.reminders;
if(arr.length==0)msg+=c.emtpyShowRemindersString;
else if(r["format"]==null)msg+=c.defaultShowReminderMessagePrefix; //tbGTD
for(var x=0;x<arr.length;x++){
var t=arr[x];
if(r["format"]!=null)t["params"]["format"]=r["format"];
else arr[x]["params"]["format"]=c.defaultShowReminderMessage;
msg+=getReminderMessageForDisplay(t["diff"],t["params"],t["matchedDate"],t["tiddler"]);
msg+="\n";
}
wikify(msg,el,null,null);
};
config.macros.displayTiddlersWithReminders.handler=function displayTiddlersWithReminders(place,macroName,params){
var now=new Date().getMidnight();
var lead=[0,14];
var r=getParamsForReminder(params);
var hasDate=r["year"]!=null||r["month"]!=null||r["day"]!=null||r["dayofweek"]!=null;
if(r["leadtime"]!=null){
lead=r["leadtime"];
//If they've entered a day, make sure to find it
if(hasDate)r["leadtime"]=[-10000,10000];
}
var match=now;
if(hasDate){
var LBound=new Date().getMidnight().addDays(r["leadtime"][0]);
var UBound=new Date().getMidnight().addDays(r["leadtime"][1]);
match=findDateForReminder(r,new Date().getMidnight(),LBound,UBound);
}
var arr=findTiddlersWithReminders(match,lead,r["tag"],r["limit"]);
for(var x=0;x<arr.length;x++)displayTiddler(null,arr[x]["tiddler"],0,null,false,false,false);
};
config.macros.reminder.handler=function reminder(place,macroName,params){
var set=config.macros.reminders;
var r=getParamsForReminder(params);
if(r["hidden"]!=null)return;
var lead=r["leadtime"];
var c=config.macros.reminders;
if(lead==null)lead=c.defaultLeadTime;
var LBound=new Date().getMidnight().addDays(lead[0]);
var UBound=new Date().getMidnight().addDays(lead[1]);
var match=findDateForReminder(r,new Date().getMidnight(),LBound,UBound);
var title=story.findContainingTiddler(place).getAttribute('tiddler');
if(match!=null){
var diff=match.getDifferenceInDays(new Date().getMidnight());
var el=createTiddlyElement(place,"span",null,set.txtRemind,null);
var msg=c.defaultReminderMessagePrefix+getReminderMessageForDisplay(diff,r,match,title);
wikify(msg,el,null,null);
}else createTiddlyElement(place,"span",null,"remind",c.noReminderFound.replace("TITLE",r["title"]).replace("LEADTIMEUPPER",lead[1]).replace("LEADTIMELOWER",lead[0]).replace("TIDDLERNAME",title).replace("TIDDLER","[["+title+"]]"));
}
config.macros.newReminder.handler=function newReminder(place,macroName,params){
var set=config.macros.reminders;
var today=new Date().getMidnight();
var out='<html><form id="addReminderForm"><select name="year"><option value="">'+set.txtEachYear+'</option>';
for(var i=0;i<5;i++)
out+='<option'+(i==0?' selected':'')+' value="'+(today.getFullYear()+i)+'">'+(today.getFullYear()+i)+'</option>';
out+='</select><select name="month"><option value="">'+set.txtEachMonth+'</option>';
for(i=0;i<12;i++)
out+='<option'+(i==today.getMonth()?' selected':'')+' value="'+(i+1)+'">'+config.messages.dates.months[i]+'</option>';
out+='</select><select name="day"><option value="">'+set.txtEachDay+'</option>';
for(i=1;i<32;i++)
out+='<option'+(i==today.getDate()?' selected':'')+' value="'+i+'">'+i+'</option>';
out+='</select><input type="text" size="25" name="title" value="'+set.txtTitle+'" onfocus="this.select();"><input type="button" value="ok" onclick="addReminderToTiddler(this.form)"></form></html>';
var panel=config.macros.slider.createSlider(place,null,set.txtRemind,set.txtRemindTip);
wikify(out,panel,null,store.getTiddler(params[1]));
}
// onclick: process input and insert reminder at 'marker'
window.addReminderToTiddler=function(form){
if(!store.getTiddler)store.getTiddler=function(title){return this.tiddlers[title];};
var title=story.findContainingTiddler(form).getAttribute('tiddler');
var tiddler=store.getTiddler(title);
var add='\n<<reminder ';
if(form.year.value!="")add+='year:'+form.year.value+' ';
if(form.month.value!="")add+='month:'+form.month.value+' ';
if(form.day.value!="")add+='day:'+form.day.value+' ';
add+='title:"'+form.title.value+'" ';
add+='>>';
tiddler.set(null,tiddler.text+add);
form.parentNode.parentNode.previousSibling.onclick(); //tbGTD: close form when done processing
story.refreshTiddler(title,1,true);
store.setDirty(true);
};
function hasTag(tags,filters){
//Make sure we respond well to empty tiddlerTaglists or tagFilterlists
if(filters.length==0||tags.length==0)return true;
var bHasTag=false;
var bNoPos=true;
for(var t3=0;t3<filters.length;t3++){
for(var t2=0;t2<tags.length;t2++){
if(filters[t3].length>1&&filters[t3].charAt(0)=='!'){
//If at any time a negative filter is matched, we return false
if(tags[t2]==filters[t3].substring(1))return false;
}else{
//We encountered the first positive filter
if(bNoPos)bNoPos=false;
//A positive filter is matched. As long as no negative filter is matched, hasTag will return true
if(tags[t2]==filters[t3])bHasTag=true;
}
}
}
return (bNoPos||bHasTag);
};
window.findTiddlersWithReminders=function findTiddlersWithReminders(base,lead,tags,limit){
var expr=new RegExp("<<(reminder)(.*)>>","mg");
var matches=store.search(expr,"title","");
var arr=[];
var arrTags=null;
//allows tags with spaces. thanks Robin Summerhill, 4-Oct-06.
if(tags!=null)arrTags=tags.readBracketedList();
for(var t=matches.length-1;t>=0;t--){
if(arrTags!=null&&!hasTag(matches[t].tags,arrTags))continue;
var targetText=matches[t].text;
do{
// Get the next formatting match
var match=expr.exec(targetText);
if(match&&match[1]!=null&&match[1].toLowerCase()=="reminder"){
//Find the matching date.
var params=match[2]!=null ? match[2].readMacroParams():{};
var r=getParamsForReminder(params);
if(limit!=null||r["leadtime"]==null){
if(lead==null)r["leadtime"]=lead;
else{
r["leadtime"]=[];
r["leadtime"][0]=lead[0];
r["leadtime"][1]=lead[1];
}
}
if(r["leadtime"]==null)r["leadtime"]=config.macros.reminders.defaultLeadTime;
var LBound=base.addDays(r["leadtime"][0]);
var UBound=base.addDays(r["leadtime"][1]);
var found=findDateForReminder(r,base,LBound,UBound);
while(found!=null){
var tmp={};
tmp["diff"]=found.getDifferenceInDays(base);
tmp["matchedDate"]=new Date(found.getFullYear(),found.getMonth(),found.getDate(),0,0);
tmp["params"]=cloneParams(r);
tmp["tiddler"]=matches[t].title;
tmp["tags"]=matches[t].tags;
arr.pushUnique(tmp);
if(r["recurdays"]!=null||(r["year"]==null)){
LBound=LBound.addDays(found.getDifferenceInDays(LBound)+ 1);
found=findDateForReminder(r,base,LBound,UBound);
}
else found=null;
}
}
}while(match);
}
//Sort the array by number of days remaining
if(arr.length>1)arr.sort(function(a,b){if(a["diff"]==b["diff"])return(0);else return a["diff"]<b["diff"]?-1:+1;});
return arr;
};
//Takes the reminder macro parameters and generates the string that is used for display ...not intended to be called by other plugins.
window.getReminderMessageForDisplay= function getReminderMessageForDisplay(diff,params,match,tid){
var c=config.macros.reminders;
var anniv="";
var reminderTitle=params["title"];
if(reminderTitle==null)reminderTitle=c.untitledReminder;
if(params["firstyear"]!=null)anniv=c.defaultAnniversaryMessage.replace("DIFF",(match.getFullYear()-params["firstyear"]));
var sDiff="";
if(diff==0)sDiff=c.todayString;
else if(diff==1)sDiff=c.tomorrowString;
else sDiff=c.ndaysString.replace("DIFF",diff);
var msg=params["format"]!=null?params["format"]:c.defaultReminderMessage;
msg=msg.replace(/TIDDLER/g,"TIDELER"); //Avoid replacing DD in TIDDLER with the date
msg=match.formatStringDateOnly(msg);
msg=msg.replace(/TIDELER/g,"TIDDLER");
if(tid!=null){
msg=msg.replace(/TIDDLERNAME/g,tid);
msg=msg.replace(/TIDDLER/g,"[["+tid+"]]");
}
msg=msg.replace("DIFF",sDiff).replace("TITLE",reminderTitle).replace("DATE",match.formatString("mmm. 0DD")).replace("ANNIVERSARY",anniv);
return msg;
};
// Parse macro params into a hashtable. This handles the arguments for reminder, showReminders and displayTiddlersWithReminders
window.getParamsForReminder=function getParamsForReminder(params){
var r={};
var type="";
var num=0;
var title="";
for(var p=0;p<params.length;p++){
var split=params[p].split(":");
type=split[0].toLowerCase();
var value=split[1];
for(var i=2;i<split.length;i++)value+=":"+split[i];
if(type=="nolinks"||type=="limit"||type=="hidden")num=1;
else if(type=="leadtime"){
var leads=value.split("...");
if(leads.length==1){leads[1]=leads[0];leads[0]=0;}
leads[0]=parseInt(leads[0],10);
leads[1]=parseInt(leads[1],10);
num=leads;
}
else if(type=="offsetdayofweek"){
if(value.substr(0,1)=="-"){r["negativeOffsetDayOfWeek"]=1;value=value.substr(1);}
num=parseInt(value,10);
}
else if(type!="title"&&type!="tag"&&type!="format")num=parseInt(value,10);
else{
p++;
title=value;
while(title.substr(0,1)=='"'&&title.substr(title.length-1,1)!='"'&¶ms[p]!=undefined)title+= " "+params[p++];
//Trim off the leading and trailing quotes
if(title.substr(0,1)=="\""&&title.substr(title.length-1,1)== "\""){
title=title.substr(1,title.length-2);
p--;
}
num=title;
}
r[type]=num;
}
//date is synonymous with day
if(r["day"]==null)r["day"]=r["date"];
return r;
};
//Finds the date specified in the reminder params; returns null if no match found; not intended for use by other plugins
window.findDateForReminder= function findDateForReminder(r,base,LBound,UBound){
if(base==null)base=new Date().getMidnight();
var key=base.convertToYYYYMMDDHHMM();
for(var k in r)key+=","+k+"|"+r[k];
key+=","+LBound.convertToYYYYMMDDHHMM();
key+=","+UBound.convertToYYYYMMDDHHMM();
//If we don't find a match in this run, then cache that the reminder can't be matched
if(reminderCache[key]==null)reminderCache[key]=false;
//We've already tried this date and failed
else if(reminderCache[key]==false)return null;
else return reminderCache[key];
var bOffsetSpecified=
r["offsetyear"]!=null||
r["offsetmonth"]!=null||
r["offsetday"]!=null||
r["offsetdayofweek"]!=null||
r["recurdays"]!=null;
// If matching the base date for a dayofweek offset, look for the base date a little further back.
var tmp1LBound=LBound;
if(r["offsetdayofweek"]!=null)tmp1LBound=LBound.addDays(-6);
var match=base.findMatch(r,tmp1LBound,UBound);
if(match!=null){
var newMatch=match;
if(r["recurdays"]!=null)
while(newMatch.getTime()<LBound.getTime())newMatch=newMatch.addDays(r["recurdays"]);
else if(
r["offsetyear"]!=null||
r["offsetmonth"]!=null||
r["offsetday"]!=null||
r["offsetdayofweek"]!=null){
var tmp=cloneParams(r);
tmp["year"]=r["offsetyear"];
tmp["month"]=r["offsetmonth"];
tmp["day"]=r["offsetday"];
tmp["dayofweek"]=r["offsetdayofweek"];
var tmpL=LBound;
var tmpU=UBound;
if(tmp["offsetdayofweek"]!=null){
if(tmp["negativeOffsetDayOfWeek"]==1){
tmpL=match.addDays(-6);
tmpU=match;
}else{
tmpL=match;
tmpU=match.addDays(6);
}
}
newMatch=match.findMatch(tmp,tmpL,tmpU);
//The offset couldn't be matched. return null.
if(newMatch==null)return null;
}
if(newMatch.isBetween(LBound,UBound)){
reminderCache[key]=newMatch;
return newMatch;
}
}
return null;
};
//Does the same job as findDateForReminder, but doesn't deal with offsets or recurring reminders.
Date.prototype.findMatch=function findMatch(r,LBound,UBound){
var Y=(r["year"]!=null);
var M=(r["month"]!=null);
var D=(r["day"]!=null);
var W=(r["dayofweek"]!=null);
if(D&&M&&Y)return new Date(r["year"],r["month"]-1,r["day"],0,0);
if(D&&M&&!Y&&!W){
//Shortcut: first try this year... if too small, try next year
var tmp=new Date(this.getFullYear(),r["month"]-1,r["day"],0,0);
if(tmp.getTime()<LBound.getTime())tmp=new Date((this.getFullYear()+1),r["month"]-1,r["day"],0,0);
if(tmp.isBetween(LBound,UBound))return tmp;
else return null;
}
var newDate=LBound;
while(newDate.isBetween(LBound,UBound)){
var test=testDate(newDate,r,Y,M,D,W);
if(test!=null)return test;
newDate=newDate.addDays(1);
}
}
function cloneParams(p){var tmp={};for(var i in p)tmp[i]=p[i];return tmp;}
function testDate(str,d,Y,M,D,W){if((!Y&&d["year"]==str.getFullYear())&&(!M&&(d["month"]-1)==str.getMonth())&&(!D&&d["day"]==str.getDate())&&(!W&&d["dayofweek"]==str.getDay())) return str;}
//Returns true if the date is in between two given dates
Date.prototype.isBetween=function isBetween(lowerBound,upperBound){return(this.getTime()>=lowerBound.getTime()&&this.getTime()<=upperBound.getTime());}
//Return a new date, with the time set to midnight (0000)
Date.prototype.getMidnight=function getMidnight(){return new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0);}
//Add the specified number of days to a date
Date.prototype.addDays=function addDays(numberOfDays){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+numberOfDays,0,0);}
//Return the number of days between two dates
Date.prototype.getDifferenceInDays=function getDifferenceInDays(d){
//ignores daylight savings
var tmp=this.addDays(0);
if(this.getTime()>d.getTime()){for(var i=0;tmp.getTime()>d.getTime();i++)tmp=tmp.addDays(-1);return i;}
else{for(var i=0;tmp.getTime()<d.getTime();i++)tmp=tmp.addDays(1);return i*-1;}
return 0;
}
//Substitute date components into a string
Date.prototype.formatStringDateOnly=function formatStringDateOnly(d){
d=d.replace("YYYY",this.getFullYear());
d=d.replace("YY",String.zeroPad(this.getFullYear()-2000,2));
d=d.replace("MMM",config.messages.dates.months[this.getMonth()]);
d=d.replace("0MM",String.zeroPad(this.getMonth()+1,2));
d=d.replace("MM",this.getMonth()+1);
d=d.replace("DDD",config.messages.dates.days[this.getDay()]);
d=d.replace("0DD",String.zeroPad(this.getDate(),2));
d=d.replace("DD",this.getDate());
return d;
};
//}}}
/***
|Name:|RenameTagsPlugin|
|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Version:|3.0 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
***/
//{{{
config.renameTags = {
prompts: {
rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
remove: "Remove the tag '%0' from %1 tidder%2?"
},
removeTag: function(tag,tiddlers) {
store.suspendNotifications();
for (var i=0;i<tiddlers.length;i++) {
store.setTiddlerTag(tiddlers[i].title,false,tag);
}
store.resumeNotifications();
store.notifyAll();
},
renameTag: function(oldTag,newTag,tiddlers) {
store.suspendNotifications();
for (var i=0;i<tiddlers.length;i++) {
store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old
store.setTiddlerTag(tiddlers[i].title,true,newTag); // add new
}
store.resumeNotifications();
store.notifyAll();
},
storeMethods: {
saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,
saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields) {
if (title != newTitle) {
var tagged = this.getTaggedTiddlers(title);
if (tagged.length > 0) {
// then we are renaming a tag
if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))
config.renameTags.renameTag(title,newTitle,tagged);
if (!this.tiddlerExists(title) && newBody == "")
// dont create unwanted tiddler
return null;
}
}
return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields);
},
removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,
removeTiddler: function(title) {
var tagged = this.getTaggedTiddlers(title);
if (tagged.length > 0)
if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
config.renameTags.removeTag(title,tagged);
return this.removeTiddler_orig_renameTags(title);
}
},
init: function() {
merge(TiddlyWiki.prototype,this.storeMethods);
}
}
config.renameTags.init();
//}}}
{{desk{
|widetable|k
|width:50%;font-size:16px; <<newTiddler label:"+" title:"neue nächste Aufgabe" prompt:"eine neue nächste Aufgabe anlegen" focus:title tag:#nächste>>[[nächste|#nächste]] [[Aufgaben|Aufgabe]]((*({{popBtn{<<tiddler Aufgabe>>}}}))) |font-size:16px; <<newTiddler label:"+" title:"neue Erinnerung" prompt:"eine neue Erinnerung anlegen" focus:title tag:Erinnerung text:{{var d=new Date();'<<reminder year:%0 month:%1 day:%2 title:"Titel der Erinnerung">\>'.format([d.getFullYear(),String.zeroPad(d.getMonth()+1,2),String.zeroPad(d.getMonth(),2)]);}}>>[[Erinnerungen|Erinnerung]] [[dieser Woche|Kalender]]((*(<<tiddler Erinnerung##Info>>))) |h
|height:20px;background-color:#eee;{{deskNew{<<newTiddler label:"+" title:"neue Aufgabe für später" prompt:"eine neue Aufgabe für später anlegen" focus:title tag:#später>><<tag #später>><<rB später>><<newTiddler label:"+" title:"neue wartende Aufgabe" prompt:"eine neue wartende Aufgabe anlegen" focus:title tag:#wartend>><<tag #wartend>><<rB wartend>><<newTiddler label:"+" title:"neue zukünftige Aufgabe" prompt:"eine neue zukünftige Aufgabe anlegen" focus:title tag:#zukünftig>><<tag #zukünftig>><<rB zukünftig>><<tag #erledigt>><<rB erledigt>>}}}|padding-left:0.7em;{{block{<<showReminders leadtime:-3...7>>}}} |
|padding:1px;{{block{<<tiddlerList tags:"#nächste" order:"-modified" itemTemplate:"|<<tag [[%title]]$))|width:20px;<<tiddler scripts##miniTag with: %link '' '#next'$))|\n" header:"|noborder|k">>}}} |~|
|font-size:16px; <<newTiddler label:"+" title:"neues aktuelles Projekt" prompt:"ein neues aktuelles Projekt anlegen" focus:title tag:$aktuell>>[[aktuelle|$aktuell]] [[Projekte|Projekt]]((*({{popBtn{<<tiddler Projekt>>}}}))) |font-size:16px; <<newTiddler label:"+" title:"neuer wichtiger Tiddler" prompt:"einen neuen wichtigen Tiddler anlegen" focus:title tag:Stern>>[[wichtige Tiddler|Stern]]((*(<<tiddler Stern>>))) |h
|height:20px;background-color:#eee;{{deskNew{<<newTiddler label:"+" title:"neues zukünftiges Projekt" prompt:"ein neues zukünftiges Projekt anlegen" focus:title tag:$zukünftig>><<tag $zukünftig>><<rB zukünftig>><<newTiddler label:"+" title:"neues vielleicht Projekt" prompt:"ein neues vielleicht Projekt anlegen" focus:title tag:$vielleicht>><<tag $vielleicht>><<rB vielleicht>><<tag $beendet>><<rB beendet>>}}}|padding:1px;{{block{<<tiddlerList tags:"Stern" order:"-modified" itemTemplate:"|<<tag [[%title]]$))|width:20px;<<tiddler scripts##miniTag with: %link '' 'Stern'$))|\n" header:"|noborder|k">>}}} |
|padding:1px;{{block{<<tiddlerList tags:"$aktuell" order:"-modified" itemTemplate:"|<<tag [[%title]]$))|width:20px;<<tiddler scripts##miniTag with: %link '' '$aktuell'$))|\n" header:"|noborder|k">>}}}|~|
<html><div style="width:100px;float:left;text-align:right;margin:0px 10px;">weitere Ansichten: </div></html>{{view{((_*(<<tiddler Kontext>>)))<<tag Kontext>>}}}{{view{((_*(<<tiddler Kontakte>>)))<<tag Kontakte>>}}}{{view{((_*(<<tiddler Gruppe>>)))<<tag Gruppe>><<rB Gruppen>>}}}{{view{((_*(<<tiddler Bereich>>)))<<tag Bereich>><<rB Bereiche>>}}}{{view{((_*(<<tiddler Phase##Info>>)))<<tag Phase>><<rB Phasen>>}}}{{view{((_*(<<tiddler Priorität>>)))<<tag Priorität>><<rB Prioritäten>>}}}{{view{<<popup 'weitere Tools...' [[<<tiddler topMenuR##Optionen$))]]>>}}}
![[Neueste Artikel|Journal]]
<<tiddlerList tags:"Journal" top:"5" dateFormat:"mmm. 0DD" itemTemplate:"*[[%created - %title|%title]] \n" order:"-created">>
{{black{
<<calendar thismonth>>
}}}
<<tabs txtMainTab Tags "TagCloud" TagCloud Neues "neuste Tiddler nach Datum" SideBarTabs##recent Inhalt "Tiddlerverzeicnis" SideBarTabs##all Mehr "Standardlisten und mehr" TabMore>>/%
!recent
{{recent{<<timeline "modified" "17" "YYYY-0MM-0DD">>
----
{{recent{@@padding-left:10px;[[::gesamte Zeitleiste::|Zeitleiste]]@@}}}
!all
<<tableOfContents "label:Tiddler anzeigen..." sort:title width:100% size:20 date:YYYY-0MM-0DD>>
----
@@padding-left:10px;[[::alphabetische Liste::|TabAll]]@@
!end%/
/***
|''Name''|SimpleSearchPlugin|
|''Description''|displays search results as a simple list of matching tiddlers|
|''Authors''|FND|
|''Version''|0.4.1|
|''Status''|stable|
|''Source''|http://devpad.tiddlyspot.com/#SimpleSearchPlugin|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/plugins/SimpleSearchPlugin.js|
|''License''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''Keywords''|search|
!Code
***/
//{{{
if(!version.extensions.SimpleSearchPlugin) { //# ensure that the plugin is only installed once
version.extensions.SimpleSearchPlugin = { installed: true };
if(!config.extensions) { config.extensions = {}; }
config.extensions.SimpleSearchPlugin = {
heading: "Search Results",
containerId: "searchResults",
btnCloseLabel: "close",
btnCloseTooltip: "dismiss search results",
btnCloseId: "search_close",
btnOpenLabel: "open all",
btnOpenTooltip: "open all search results",
btnOpenId: "search_open",
displayResults: function(matches, query) {
story.refreshAllTiddlers(true); // update highlighting within story tiddlers
var el = document.getElementById(this.containerId);
query = '"""' + query + '"""'; // prevent WikiLinks
if(el) {
removeChildren(el);
} else { //# fallback: use displayArea as parent
var container = document.getElementById("displayArea");
el = document.createElement("div");
el.id = this.containerId;
el = container.insertBefore(el, container.firstChild);
}
var msg = "!" + this.heading + "\n";
if(matches.length > 0) {
msg += "''" + config.macros.search.successMsg.format([matches.length.toString(), query]) + ":''\n";
this.results = [];
for(var i = 0 ; i < matches.length; i++) {
this.results.push(matches[i].title);
msg += "* [[" + matches[i].title + "]]\n";
}
} else {
msg += "''" + config.macros.search.failureMsg.format([query]) + "''"; // XXX: do not use bold here!?
}
createTiddlyButton(el, this.btnCloseLabel, this.btnCloseTooltip, config.extensions.SimpleSearchPlugin.closeResults, "button", this.btnCloseId);
if(matches.length > 0) { // XXX: redundant!?
createTiddlyButton(el, this.btnOpenLabel, this.btnOpenTooltip, config.extensions.SimpleSearchPlugin.openAll, "button", this.btnOpenId);
}
wikify(msg, el);
},
closeResults: function() {
var el = document.getElementById(config.extensions.SimpleSearchPlugin.containerId);
removeNode(el);
config.extensions.SimpleSearchPlugin.results = null;
highlightHack = null;
},
openAll: function(ev) {
story.displayTiddlers(null, config.extensions.SimpleSearchPlugin.results);
return false;
}
};
// override Story.search()
Story.prototype.search = function(text, useCaseSensitive, useRegExp) {
highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(), useCaseSensitive ? "mg" : "img");
var matches = store.search(highlightHack, null, "excludeSearch");
var q = useRegExp ? "/" : "'";
config.extensions.SimpleSearchPlugin.displayResults(matches, q + text + q);
};
// override TiddlyWiki.search() to sort by relevance
TiddlyWiki.prototype.search = function(searchRegExp, sortField, excludeTag, match) {
var candidates = this.reverseLookup("tags", excludeTag, !!match);
var primary = [];
var secondary = [];
var tertiary = [];
for(var t = 0; t < candidates.length; t++) {
if(candidates[t].title.search(searchRegExp) != -1) {
primary.push(candidates[t]);
} else if(candidates[t].tags.join(" ").search(searchRegExp) != -1) {
secondary.push(candidates[t]);
} else if(candidates[t].text.search(searchRegExp) != -1) {
tertiary.push(candidates[t]);
}
}
var results = primary.concat(secondary).concat(tertiary);
if(sortField) {
results.sort(function(a, b) {
return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);
});
}
return results;
};
} //# end of "install only once"
//}}}
|tblSITE|k
|width:200px;padding:0.5em;font-size:2em;SiteTitle|>|>|>|font-size:1.1em;padding-top:1em;SiteSubtitle @@padding-left:7%;[[topMenuL]]@@@@padding-left:15%;[[topMenuR]]@@|
|{{floatleft{@@padding-left:10px;font-size:0.9em;font-weight:bold;display:inline;<<tiddler topMenuL>>@@}}}{{floatright{@@text-align:right;font-size:0.9em;font-weight:bold;display:inline;<<tiddler topMenuR>>@@}}}|>|>|>|>|
|width:10%;padding:0;text-align:left; @@font-weight:bold;font-size:1.2em;padding-left:15px;[[MainMenu]]@@<br/>@@display:block;margin-top:10px;padding:0;<<tiddler MainMenu>>@@|>|>|border-bottom:1px solid #333;background:#444;color:#111;width:60%;height:15px;padding:2px 2px 0 2px;{{tblLAYOUTMID{@@background:#eee;[[TiddlersBar|TiddlersBarPlugin]]@@}}} |width:20%; <<tiddler SiteLayout##Sidebar>> |
|~|~|background:#EEE;color:#111;height:150px;text-align:center;padding-top:10px; {{tblLAYOUTMID{<<tiddler SiteLayout##Tiddlers>>}}}|>|~|
|>|>|>|>| |
/%
!Tiddlers
@@display:block;position:relative;left:-40%;top:0px;Tiddler viewer@@@@display:block;position:relative;right:-22%;top:-15px; [[x-tab]] / [[x-plore]] / [[x-tag|x-tagger]] / [[ToolbarCommands]]@@
@@font-size:1.5em;color:#999;displayArea / tiddlerDisplay@@
@@display:block;margin-top:15px;font-size:2em;[[tbGtdTheme]] / <<tag site>>@@
@@display:block;margin-top:5px;font-size:1em;[[StyleSheet]] / [[StyleSheetShortcuts]]@@
!Sidebar
@@display:block;width:100%;height:50px;padding-right:0%;padding-top:10px;[[SideBarOptions]]<br/>[[calendar]]@@@@display:block;margin-top:5px;width:100%;height:150px;SideBarTabs<br /><<tiddler SiteLayout##Tabs>>@@
!Tabs
@@display:block;text-align:left;font-size:0.9em;padding:5px;background:#555;height:100px;[[tags|TagCloud]]|[[recent|TabTimeline]]|[[toc|SideBarTabs]]|[[more|TabMore]]<br>[[tags|TabTags]]|[[plug|systemConfig]]|[[miss|TabMoreMissing]]|[[orph|TabMoreOrphans]]|[[shad|TabMoreShadowed]]|[[ex|excludeLists]]<br /><br />{{medium{[[TagCloud]]}}}@@
!End%/
<<tiddler {{
var s='.tblSITE, .tblSITE thead, .tblSITE tr, .tblSITE td{border:0;color:white;background:#333;}'+
'.tblSITE a,.tblSITE a.tiddlyLink, .tblSITE a.button{color:#EEE;border-color:transparent;font-weight:bold;padding:0 3px;font-style:normal;}'+
'.tblSITE a:hover,.tblSITE a.tiddlyLink:hover, .tblSITE a.button:hover{color:#39F;border-color:transparent;background:transparent;}'+
'.tblSITE{-moz-border-radius:5px; -webkit-border-radius:5px;}'+
'.tblSITE ul, .tblSITE li{list-style-type:none;}'+
'.tblLAYOUTMID a.tiddlyLink{color:#111;}';
setStylesheet(s,'StyleSheetSiteLayout');
'';}}>>
Aufgabenmanagement mit TiddlyWiki
[[tb|Journal]][[GTD|Schreibtisch]]
Benutze den Stern ([[★|Stern]]) um Tiddler zu markieren, die für Dich von großem Interesse sind, damit Du sie schnell wiederfindest. Benutze dafür den ([[★|Stern]]) in der Toolbar...
[[StyleSheetShortcuts]]
/*{{{*/
#at16sas,#at-logo,.at-whatsthis{visibility:hidden;display:none;}
#at16pt span,#at15s_head{text-align:center;font-weight:normal;display:block;}
#at15s_brand a{z-index:99;color:#E93;font-size:12px;padding:0 10px 0 30px;background:transparent;}
#at15s_brand a:hover{color:#39E;background-position:0 0;}
#at16pib #at16_brand a{display:none;}
#mainMenu .addthis_button{text-align:right;padding:0 5% 0 0;display:block;background: transparent url(http://sites.google.com/site/beertobias/share.png) no-repeat 7px -15px;}
#mainMenu .addthis_button:hover{background: #333 url(http://sites.google.com/site/beertobias/share.png) no-repeat 7px 4px;}
#mainMenu .lang{float:left;display:block;clear:both;text-align:center;background: transparent url(http://sites.google.com/site/beertobias/flag_en.gif) no-repeat 7px -14px;}
#mainMenu .lang:hover {background: transparent url(http://sites.google.com/site/beertobias/flag_en.gif) no-repeat 7px 5px;}
/*}}}*/
/***
|Name|StyleSheetShortcuts|
|Source|http://www.TiddlyTools.com/#StyleSheetShortcuts|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|CSS|
|Description|'convenience' classes for common formatting, alignment, boxes, tables, etc.|
These 'style tweaks' can be easily included in other stylesheet tiddler so they can share a baseline look-and-feel that can then be customized to create a wide variety of 'flavors'.
***/
/*{{{*/
/* text alignments */
.left
{ display:block;text-align:left; }
.center
{ display:block;text-align:center; }
.center table
{ margin:auto !important; }
.right
{ display:block;text-align:right; }
.justify
{ display:block;text-align:justify; }
.indent
{ display:block;margin:0;padding:0;border:0;margin-left:2em; }
.floatleft
{ float:left; }
.floatright
{ float:right; }
.valignTop, .valignTop table, .valignTop tbody, .valignTop th, .valignTop tr, .valignTop td
{ vertical-align:top; }
.valignBottom, .valignBottom table, .valignBottom tbody, .valignBottom th, .valignBottom tr, .valignBottom td
{ vertical-align:bottom; }
.clear
{ clear:both; }
.wrap
{ white-space:normal; }
.nowrap
{ white-space:nowrap; }
.hidden
{ display:none; }
.show
{ display:inline !important; }
.span
{ display:span; }
.block
{ display:block; }
.relative
{ position:relative; }
.absolute
{ position:absolute; }
/* font sizes */
.big
{ font-size:14pt;line-height:120% }
.medium
{ font-size:12pt;line-height:120% }
.normal
{ font-size:9pt;line-height:120% }
.small
{ font-size:8pt;line-height:120% }
.fine
{ font-size:7pt;line-height:120% }
.tiny
{ font-size:6pt;line-height:120% }
.larger
{ font-size:120%; }
.smaller
{ font-size:80%; }
/* font styles */
.bold
{ font-weight:bold; }
.italic
{ font-style:italic; }
.underline
{ text-decoration:underline; }
/* plain list items (no bullets or indent) */
.nobullets li { list-style-type: none; margin-left:-2em; }
/* multi-column tiddler content (not supported in Internet Explorer) */
.twocolumns { display:block;
-moz-column-count:2; -moz-column-gap:1em; -moz-column-width:50%; /* FireFox */
-webkit-column-count:2; -webkit-column-gap:1em; -webkit-column-width:50%; /* Safari */
column-count:2; column-gap:1em; column-width:50%; /* Opera */
}
.threecolumns { display:block;
-moz-column-count:3; -moz-column-gap:1em; -moz-column-width:33%; /* FireFox */
-webkit-column-count:3; -webkit-column-gap:1em; -webkit-column-width:33%; /* Safari */
column-count:3; column-gap:1em; column-width:33%; /* Opera */
}
.fourcolumns { display:block;
-moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%; /* FireFox */
-webkit-column-count:4; -webkit-column-gap:1em; -webkit-column-width:25%; /* Safari */
column-count:4; column-gap:1em; column-width:25%; /* Opera */
}
/* page breaks */
.breakbefore { page-break-before:always; }
.breakafter { page-break-before:always; }
/* show/hide browser-specific content for InternetExplorer vs. non-IE ("moz") browsers */
*[class="ieOnly"]
{ display:none; } /* hide in moz (uses CSS selector) */
* html .mozOnly, *:first-child+html .mozOnly
{ display: none; } /* hide in IE (uses IE6/IE7 CSS hacks) */
/* borderless tables */
.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody
{ border:0 !important; margin:0 !important; padding:0 !important; }
.widetable, .widetable table
{ width:100%; }
/* thumbnail images (fixed-sized scaled images) */
.thumbnail img { height:5em !important; }
/* stretchable images (auto-size to fit tiddler) */
.stretch img { width:95%; }
/* grouped content */
.outline
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; }
.menubox
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#fff; color:#000; }
.menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
{ color:#009 !important; }
.groupbox
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#ffe; color:#000; }
.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting
{ color:#009 !important; }
.groupbox code
{ color:#333 !important; }
.borderleft
{ margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }
.borderright
{ margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }
.borderbottom
{ margin:0;padding:1px 0;border:0;border-bottom:1px dotted; margin-bottom:1px; padding-bottom:1px; }
.bordertop
{ margin:0;padding:0;border:0;border-top:1px dotted; margin-top:1px; padding-top:1px; }
/* scrolled content */
.scrollbars { overflow:auto; }
.height10em { height:10em; }
.height15em { height:15em; }
.height20em { height:20em; }
.height25em { height:25em; }
.height30em { height:30em; }
.height35em { height:35em; }
.height40em { height:40em; }
/* compact form */
.smallform
{ white-space:nowrap; }
.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select
{ font-size:8pt; }
/* stretchable edit fields and textareas (auto-size to fit tiddler) */
.stretch input { width:99%; }
.stretch textarea { width:99%; }
/* compact input fields (limited to a few characters for entering percentages and other small values) */
.onechar input { width:1em; }
.twochar input { width:2em; }
.threechar input { width:3em; }
.fourchar input { width:4em; }
.fivechar input { width:5em; }
/* text colors */
.white { color:#fff !important }
.gray { color:#999 !important }
.black { color:#000 !important }
.red { color:#f66 !important }
.green { color:#0c0 !important }
.blue { color:#99f !important }
/* rollover highlighting */
.mouseover
{color:[[ColorPalette::TertiaryLight]] !important;}
.mouseover a
{color:[[ColorPalette::TertiaryLight]] !important;}
.selected .mouseover
{color:[[ColorPalette::Foreground]] !important;}
.selected .mouseover .button, .selected .mouseover a
{color:[[ColorPalette::PrimaryDark]] !important;}
/* rollover zoom text */
.zoomover
{ font-size:80% !important; }
.selected .zoomover
{ font-size:100% !important; }
.BG{color:[[ColorPalette::Background]];}
.FG{color:[[ColorPalette::Foreground]];}
.PP{color:[[ColorPalette::PrimaryPale]];}
.PL{color:[[ColorPalette::PrimaryLight]];}
.PM{color:[[ColorPalette::PrimaryMid]];}
.PD{color:[[ColorPalette::PrimaryDark]];}
.SP{color:[[ColorPalette::SecondaryPale]];}
.SL{color:[[ColorPalette::SecondaryLight]];}
.SM{color:[[ColorPalette::SecondaryMid]];}
.SD{color:[[ColorPalette::SecondaryDark]];}
.TP{color:[[ColorPalette::TertiaryPale]];}
.TL{color:[[ColorPalette::TertiaryLight]];}
.TM{color:[[ColorPalette::TertiaryMid]];}
.TD{color:[[ColorPalette::TertiaryDark]];}
.Err{color:[[ColorPalette::Error]];}
.bgBG{background-color:[[ColorPalette::Background]];}
.bgFG{background-color:[[ColorPalette::Foreground]];}
.bgPP{background-color:[[ColorPalette::PrimaryPale]];}
.bgPL{background-color:[[ColorPalette::PrimaryLight]];}
.bgPM{background-color:[[ColorPalette::PrimaryMid]];}
.bgPD{background-color:[[ColorPalette::PrimaryDark]];}
.bgSP{background-color:[[ColorPalette::SecondaryPale]];}
.bgSL{background-color:[[ColorPalette::SecondaryLight]];}
.bgSM{background-color:[[ColorPalette::SecondaryMid]];}
.bgSD{background-color:[[ColorPalette::SecondaryDark]];}
.bgTP{background-color:[[ColorPalette::TertiaryPale]];}
.bgTL{background-color:[[ColorPalette::TertiaryLight]];}
.bgTM{background-color:[[ColorPalette::TertiaryMid]];}
.bgTD{background-color:[[ColorPalette::TertiaryDark]];}
.bgErr{background-color:[[ColorPalette::Error]];}
/*}}}*/
<<tabs txtMoreTab Tags "all tags" TabTags Plug "Installiert Plugins" systemConfig Wo? "Tiddler die nicht existieren, auf die jedoch verwiesen wird" TabMoreMissing Wer? "Tiddler, auf die kein anderer verweist" TabMoreOrphans Sys "voreingestellte System-Tiddler" TabMoreShadowed Ex "Tiddler mit dem Tag excludeLists" excludeLists>>
<<list missing>>
----
[[::excludeMissing::|excludeMissing]]
{{sidebarTitle{alle benutzten Tags:}}}
{{sideBarTags{<<allTags>>}}}
/***
|Name|TableOfContentsPlugin|
|Source|http://www.TiddlyTools.com/#TableOfContentsPlugin|
|Documentation|http://www.TiddlyTools.com/#TableOfContentsPluginInfo|
|Version|2.4.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|replace the standard tabbed contents list with a scrolling listbox|
When there are many tiddlers in a document, the standard 'tabbed list of tiddlers' in the right-hand sidebar can become very long, occupying a lot of page space and requiring a lot scrolling in order to locate and select a tiddler. The TableOfContentsPlugin addresses this problem by replacing the standard tabbed list display with a single listbox/droplist control that uses a very small amount of page space, regardless of the number of tiddlers in the document.
!!!!!Documentation
>see [[TableOfContentsPluginInfo]]
!!!!!Configuration
<<option chkTOCShow>> display table of contents listbox
<<option chkTOCIncludeHidden>> include tiddlers tagged with <<tag excludeLists>> in listbox
listbox shows <<option txtTOCListSize>> lines, sorted by <<option txtTOCSortBy>>
<<<
!!!!!Code
***/
//{{{
version.extensions.TableOfContentsPlugin= {major: 2, minor: 4, revision: 3, date: new Date(2008,4,9)};
//}}}
// // 1.2.x compatibility
//{{{
if (!window.story) window.story=window;
if (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}
if (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}
if (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}
//}}}
//{{{
// define defaults for cookie-based option values
if (config.options.txtTOCSortBy==undefined) config.options.txtTOCSortBy="modified";
if (config.options.txtTOCListSize==undefined) config.options.txtTOCListSize=19;
if (config.options.chkTOCShow==undefined) config.options.chkTOCShow=true;
if (config.options.chkTOCIncludeHidden==undefined) config.options.chkTOCIncludeHidden=false;
// define macro "tableOfContents" to render controls
config.macros.tableOfContents = { label: "contents" };
config.macros.tableOfContents.cmdMax=8; // index of maximum command item
config.macros.tableOfContents.css = '\
.TOC { padding:0.5em 1em 0.5em 1em; }\
.TOC a { padding:0em 0.25em 0em 0.25em; color:inherit; }\
.TOCList { width: 100%; font-size:8pt; margin:0em; }\
';
config.macros.tableOfContents.html = '\
<div style="text-align:right">\
<span style="float:left">\
<a href="JavaScript:;" id="TOCMenu" style="padding: 0em;"\
onclick="onClickTOCMenu(this)" title="show/hide table of contents">%label%</a>\
</span>\
<a href="JavaScript:;" id="TOCSmaller" style="display:inline"\
onclick="resizeTOC(this)" title="reduce list size">–</a>\
<a href="JavaScript:;" id="TOCLarger"style="display:inline"\
onclick="resizeTOC(this)" title="increase list size">+</a>\
<a href="JavaScript:;" id="TOCMaximize"style="display:inline"\
onclick="resizeTOC(this)" title="maximize/restore list size">=</a>\
</div>\
';
config.macros.tableOfContents.handler = function(place,macroName,params) {
var parsedParams = new Array();
parsedParams['label']=this.label;
parsedParams['inline']=false;
while (params.length>0) {
if (params[0]=="label:none") parsedParams['label']="";
else if (params[0].substr(0,6)=="label:") parsedParams['label']=params[0].substr(6);
if (params[0].substr(0,7)=="prompt:") parsedParams['prompt']=params[0].substr(7);
if (params[0].substr(0,8)=="padding:")parsedParams['padding']=params[0].substr(8);
if (params[0].substr(0,7)=="margin:") parsedParams['margin']=params[0].substr(7);
if (params[0].substr(0,5)=="sort:") parsedParams['sortby']=params[0].substr(5);
if (params[0].substr(0,5)=="date:") parsedParams['date']=params[0].substr(5);
if ((params[0]=="size:auto")||(params[0]=="size:0")) parsedParams['autosize']=true;
else if (params[0] && (params[0].substr(0,5)=="size:")) parsedParams['requestedSize']=params[0].substr(5);
if (params[0].substr(0,6)=="width:") parsedParams['width']=params[0].substr(6);
if (params[0]=="hidelist") parsedParams['hidelist']=true;
if (params[0]=="inline") parsedParams['inline']=true;
if (params[0]=="-title") parsedParams['hide_title']=true;
if (params[0]=="-date") parsedParams['hide_date']=true;
if (params[0]=="-author") parsedParams['hide_author']=true;
if (params[0]=="-creator") parsedParams['hide_creator']=true;
if (params[0]=="-tags") parsedParams['hide_tags']=true;
if (params[0]=="-missing") parsedParams['hide_missing']=true;
if (params[0]=="-orphans") parsedParams['hide_orphans']=true;
if (params[0]=="-shadows") parsedParams['hide_shadows']=true;
params.shift();
}
setStylesheet(config.macros.tableOfContents.css,"tableOfContents");
var newTOC=createTiddlyElement(place,parsedParams['inline']?"span":"div",null,"TOC",null)
if (parsedParams['margin']) { newTOC.style.margin=parsedParams['margin']; }
if (parsedParams['padding']) { newTOC.style.padding=parsedParams['padding']; }
if (parsedParams['label']!="") newTOC.innerHTML=config.macros.tableOfContents.html.replace(/%label%/,parsedParams['label']);
var newTOCList=createTOCList(newTOC,parsedParams)
refreshTOCList(newTOCList);
store.addNotification(null,reloadTOCLists); // reload listbox after every tiddler change
}
// IE needs explicit global scoping for functions/vars called from browser events
window.onChangeTOCList=onChangeTOCList;
window.onClickTOCList=onClickTOCList;
window.onDblClickTOCList=onDblClickTOCList;
window.reloadTOCLists=reloadTOCLists;
window.refreshTOCList=refreshTOCList;
window.onClickTOCMenu=onClickTOCMenu;
window.resizeTOC=resizeTOC;
function createTOCList(place,params) {
var list = createTiddlyElement(place,"select",null,"TOCList",params['prompt'])
list.params=params;
list.onchange=onChangeTOCList;
list.onclick=onClickTOCList;
list.ondblclick=onDblClickTOCList;
list.onkeyup=onKeyUpTOCList;
list.style.display=config.options.chkTOCShow ? "block" : "none" ;
list.sortBy=config.options.txtTOCSortBy;
list.dateFormat="DD MMM YYYY";
list.requestedSize=config.options.txtTOCListSize;
list.expandall=false;
list.cmdMax=config.macros.tableOfContents.cmdMax;
if (params['hide_title']) list.cmdMax--;
if (params['hide_date']) list.cmdMax--;
if (params['hide_author']) list.cmdMax--;
if (params['hide_creator']) list.cmdMax--;
if (params['hide_tags']) list.cmdMax--;
if (params['hide_missing']) list.cmdMax--;
if (params['hide_orphans']) list.cmdMax--;
if (params['hide_shadows']) list.cmdMax--;
if (params['sortby']) { list.sortBy=params['sortby']; list.noSortCookie=true; }
if (params['date']) { list.dateFormat=params['date']; }
if (params['autosize']) { list.autosize=true; list.noSizeCookie=true; }
if (params['requestedSize']){ list.requestedSize=params['requestedSize']; list.noSizeCookie=true; }
if (params['width']) { list.style.width=params['width']; }
if (params['hidelist']) { list.style.display ="none" ; list.noShowCookie=true; }
if (params['expandall']) { list.expandall=true; }
return list;
}
function onChangeTOCList() {
var thisTiddler=this.options[this.selectedIndex].value;
if ((this.size==1)&&(thisTiddler!='')&&(this.selectedIndex>this.cmdMax))
story.displayTiddler(null,thisTiddler,1);
refreshTOCList(this);
return false;
}
function onClickTOCList(e) {
if (!e) var e = window.event;
if (this.size==1) return; // don't toggle display for droplist
if (e.shiftKey) { this.expandall=!this.expandall; refreshTOCList(this);}
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();
return true;
}
function onDblClickTOCList(e) {
if (!e) var e = window.event;
var thisTiddler=this.options[this.selectedIndex].value;
if ((thisTiddler!='')&&(this.selectedIndex>this.cmdMax))
story.displayTiddler(null,thisTiddler,1);
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();
return false;
}
function onKeyUpTOCList(e) {
if (!e) var e = window.event;
if (e.keyCode!=13) return true;
var thisTiddler=this.options[this.selectedIndex].value;
if ((thisTiddler!='')&&(this.selectedIndex>this.cmdMax))
story.displayTiddler(null,thisTiddler,1);
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();
return false;
}
function reloadTOCLists() {
var all=document.all? document.all.tags("select") : document.getElementsByTagName("select");
for (var i=0; i<all.length; i++)
if (all[i].className=="TOCList")
{ all[i].selectedIndex=-1; refreshTOCList(all[i]); }
}
function refreshTOCList(list) {
var selectedIndex = list.selectedIndex;
if (selectedIndex==-1) selectedIndex=0;
var sortBy = list.sortBy;
var showHidden = config.options.chkTOCIncludeHidden && !(config.options.chkHttpReadOnly && readOnly);
if (selectedIndex==0) sortBy=list.sortBy; // "nnn tiddlers" heading - use previous sort order
else if (selectedIndex<=list.cmdMax)sortBy=list.value;
else { if (list.options[list.selectedIndex].value=='') expandTOC(list); return; }
list.sortBy = sortBy; // save current sort order
if (!list.noSortCookie) { config.options.txtTOCSortBy=sortBy; saveOptionCookie("txtTOCSortBy"); }
// get the list of tiddlers
var tiddlers = [];
switch (sortBy) {
case "missing": tiddlers=store.getMissingLinks(); break;
case "tags": tiddlers=store.getTags(); break;
case "orphans": tiddlers=store.getOrphans(); break;
case "shadows": for (var t in config.shadowTiddlers) tiddlers.push(t); tiddlers.sort(); break;
default: tiddlers=store.getTiddlers(sortBy=='creator'?'modifier':sortBy,showHidden?'':'excludeLists'); break;
}
// clear current listbox contents
while (list.length > 0) { list.options[0] = null; }
list.saved=null;
// add heading and control items to list
var i=0;
var theHeading=tiddlers.length+' tiddlers:';
if (sortBy=='missing') theHeading=tiddlers.length+' missing tiddlers:';
if (sortBy=='orphans') theHeading=tiddlers.length+' orphaned tiddlers:';
if (sortBy=='tags') theHeading=tiddlers.length+' tags:';
if (sortBy=='shadows') theHeading=tiddlers.length+' shadow tiddlers:';
var indent=String.fromCharCode(160)+String.fromCharCode(160);
var sel=">";
list.options[i++]=new Option(theHeading,'');
function headerOpt(txt,val) { return new Option(((sortBy==val)?sel:indent)+' ['+txt+']',val); }
if (!list.params['hide_title']) list.options[i++]=headerOpt('nach Titel','title');
if (!list.params['hide_date']) list.options[i++]=headerOpt('nach Datum','modified');
if (!list.params['hide_author']) list.options[i++]=headerOpt('Modifiziert von','modifier');
if (!list.params['hide_creator']) list.options[i++]=headerOpt('Erzeugt von','creator');
if (!list.params['hide_tags']) list.options[i++]=headerOpt('nach Tags','tags');
if (!list.params['hide_missing']) list.options[i++]=headerOpt('Fehlend','missing');
if (!list.params['hide_orphans']) list.options[i++]=headerOpt('Waisen','orphans');
if (!list.params['hide_shadows']) list.options[i++]=headerOpt('System','shadows');
// output the tiddler list
switch(sortBy) {
case "title":
for (var t = 0; t < tiddlers.length; t++)
list.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title);
break;
case "modified":
case "modifier":
case "creator":
if (sortBy=="modified") tiddlers.reverse(); // show newest first
if (sortBy=="creator") { // sort by custom field with fallback value
tiddlers.sort(function (a,b) {
var v1=a.fields.creator||a.modifier;
var v2=b.fields.creator||b.modifier;
return (v1==v2)?0:(v1>v2?1:-1);
});
}
var lastSection = "";
for (var t = 0; t < tiddlers.length; t++){
var tiddler = tiddlers[t];
var theSection = "";
var m=tiddler.modified;
if (sortBy=="modified") theSection=m.getFullYear()+'.'+(m.getMonth()+1)+'.'+m.getDate();
if (sortBy=="modifier") theSection = tiddler.modifier;
if (sortBy=="creator") theSection=tiddler.fields['creator']||tiddler.modifier;
if (theSection != lastSection) {
lastSection = theSection;
if (sortBy=="modified") theSection = m.formatString(list.dateFormat);
list.options[i++] = new Option('+ '+theSection,"");
}
list.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title);
}
expandTOC(list);
break;
case "tags":
// tagged tiddlers, by tag
var tagcount=0;
var lastTag = null;
for (var t = 0; t < tiddlers.length; t++) { // actually a list of tags, not tiddlers...
var theTag = tiddlers[t][0]; var tid=store.getTiddler(theTag);
if (tid && tid.isTagged('excludeLists')) continue; // skip excluded tags
var temp = store.getTaggedTiddlers(theTag);
var tagged=[]; for (var q=0; q<temp.length; q++) // hide excluded tiddlers
if (!temp[q].isTagged('excludeLists')) tagged.push(temp[q]);
if (tagged.length) { tagcount++;
list.options[i++]=new Option('+ '+theTag+" ("+tagged.length+")","");
for(var r=0; r<tagged.length; r++)
list.options[i++]=
new Option(indent+indent+tagged[r].title,tagged[r].title);
}
}
// count untagged tiddlers
var temp = store.getTiddlers("title");
var c=0; for (var r=0; r<temp.length;r++) if (!temp[r].tags.length) c++;
// create 'pseudo-tag' listing untagged tiddlers (if any)
if (c>0) {
list.options[i++] = new Option("+ untagged ("+c+")","");
for (var r=0; r<temp.length;r++) if (!temp[r].tags.length)
list.options[i++] = new
Option(indent+indent+temp[r].title,temp[r].title);
}
list.options[0].text=tagcount+' tags:';
expandTOC(list);
break;
case "missing": case "orphans": case "shadows":
for (var t = 0; t < tiddlers.length; t++)
list.options[i++] = new Option(tiddlers[t],tiddlers[t]);
break;
}
list.selectedIndex=selectedIndex; // select current control item
list.size = (list.autosize)?list.options.length:list.requestedSize;
}
// show/hide branch of TOCList based on current selection
function expandTOC(list) {
var selectedIndex = list.selectedIndex;
if (selectedIndex==-1) selectedIndex=0;
var sortBy = list.sortBy;
// don't collapse/expand list for alpha-sorted "flatlist" TOC contents
// or list control items
if ((sortBy=="title")||(sortBy=="missing")||(sortBy=="orphans")||(sortBy=="shadows")) return;
if ((selectedIndex>0)&&(selectedIndex<=list.cmdMax)) return;
// get current selected text/value and cache the
// complete list. Then clear the current list contents
var theText = list.options[selectedIndex].text;
var theValue = list.options[selectedIndex].value;
if (!list.saved) {
list.saved=new Array();
for (var i=0;i<list.length;i++) list.saved[i]=list.options[i];
}
while (list.length > 0) { list.options[0] = null; }
// put back heading items until item text matches current selected heading
var i=0;
for (var t=0; t<list.saved.length; t++) {
var opt=list.saved[t];
if (list.expandall||(opt.value=='')||(i<=list.cmdMax)) list.options[i++] = opt;
if (opt.text==theText) break;
}
selectedIndex=i-1; // this is the NEW index of the current selected heading
// put back items with value!='' until value==''
for ( t++; t<list.saved.length; t++) {
var opt=list.saved[t];
if (list.expandall||opt.value!='') list.options[i++] = opt;
if (opt.value=='') break;
}
// put back remaining items with value==''
for ( ; t<list.saved.length; t++) {
var opt=list.saved[t];
if (list.expandall||opt.value=='') list.options[i++] = opt;
}
list.selectedIndex = selectedIndex;
list.size = (list.autosize)?list.options.length:list.requestedSize;
}
// these functions process clicks on the 'control links' that are displayed above the listbox
function getTOCListFromButton(which) {
var list = null;
switch (which.id) {
case 'TOCMenu':
var theSiblings = which.parentNode.parentNode.parentNode.childNodes;
var thePlace=which.parentNode.parentNode.parentNode.parentNode.parentNode.id;
break;
case 'TOCSmaller': case 'TOCLarger': case 'TOCMaximize':
var theSiblings = which.parentNode.parentNode.childNodes;
var thePlace=which.parentNode.parentNode.parentNode.parentNode.id;
break;
}
for (var k=0; k<theSiblings.length; k++)
if (theSiblings[k].className=="TOCList") { list=theSiblings[k]; break; }
return list;
}
function onClickTOCMenu(which) {
var list=getTOCListFromButton(which); if (!list) return;
var opening = list.style.display=="none";
if(config.options.chkAnimate) anim.startAnimating(new Slider(list,opening,false,"none"));
else list.style.display = opening ? "block" : "none" ;
if (!list.noShowCookie) { config.options.chkTOCShow = opening; saveOptionCookie("chkTOCShow"); }
return(false);
}
function resizeTOC(which) {
var list=getTOCListFromButton(which); if (!list) return;
var size = list.size;
if (list.style.display=="none") // make sure list is visible
if(config.options.chkAnimate) anim.startAnimating(new Slider(list,true,false,"none"));
else list.style.display = "block" ;
switch (which.id) {
case 'TOCSmaller': // decrease current listbox size
if (list.autosize) { list.autosize=false; size=config.options.txtTOCListSize; }
if (size==1) break;
size -= 1; // shrink by one line
list.requestedSize = list.size = size;
break;
case 'TOCLarger': // increase current listbox size
if (list.autosize) { list.autosize=false; size=config.options.txtTOCListSize; }
if (size>=list.options.length) break;
size += 1; // grow by one line
list.requestedSize = list.size = size;
break;
case 'TOCMaximize': // toggle autosize
list.autosize = (list.size!=list.options.length);
list.size = (list.autosize)?list.options.length:list.requestedSize;
break;
}
if (!list.noSizeCookie && !list.autosize)
{ config.options.txtTOCListSize=size; saveOptionCookie("txtTOCListSize"); }
}
//}}}
<<tagCloud excludeLists noCloud>>
----
@@padding-left:10px;[[::Tiddler nach Tags::|TiddlersByTags]]@@
/***
|''Plugin'' |TagCloudMacro |
|''Author'' |Clint Checketts |
|''Source URL'' |http://tiddlystyles.com |
!Usage
{{{<<tagCloud>>}}}
<<tagCloud>>
!Code
***/
//{{{
setStylesheet(".tagCloud span{height: 1.8em;margin: 3px;}.tagCloud1{font-size: 10px;}.tagCloud2{font-size:12px;}.tagCloud3{font-size: 14px;}.tagCloud4{font-size: 16px;font-weight: bold;}.tagCloud5{font-size: 20px;font-weight: bold;}","tagCloudsStyles");
version.extensions.tagCloud={major: 1, minor: 0 , revision: 0, date: new Date(2006,2,04)};
//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman
config.macros.tagCloud={
noTags:"There are no tags.",
tooltip:"%1 tiddlers tagged with '%0'",
exclude:['excludeLists','noCloud'],
handler:function(place,macroName,params){
var el,max,p,segm,t,tg,tags,wrap;
wrap=createTiddlyElement(place,"div",null,"tagCloud",null);
tags=store.getTags();
for(t=0;t<tags.length;t++){
tiddler=store.fetchTiddler(tags[t][0]);
if(tiddler&&tiddler.tags.containsAny(this.exclude))tags[t][0]="";
for(p=0;p<params.length;p++)if(tags[t][0]==params[p])tags[t][0]="";
}
if(tags.length==0)createTiddlyElement(wrap,"span",null,null,this.noTags);
max=0;//Find max num of tags
for(var t=0;t<tags.length;t++)if(tags[t][0].length>0){if(tags[t][1]>max)max=tags[t][1];}
segm=max/4;//divide max into 4 tagCloud sizes
for(t=0;t<tags.length;t++)if(tags[t][0].length>0){
el=createTiddlyElement(wrap,"span",null,null,null);
wrap.appendChild(document.createTextNode(" "));
tg=createTiddlyButton(el,tags[t][0],this.tooltip.format(tags[t]),onClickTag,"tagCloudtag tagCloud"+(Math.round(tags[t][1]/segm)+1));
tg.setAttribute("tag",tags[t][0]);
tg.setAttribute("showOpenTag",true);
}
}
}
//}}}
/***
|Name:|TagglyTaggingPlugin|
|Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ~ViewTemplate|
|Version:|3.1 ($Rev: 4092 $)|
|Date:|$Date: 2008-03-24 12:32:33 +1000 (Mon, 24 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{
config.taggly = {
// for translations
lingo: {
labels: {
asc: "\u2191", // down arrow
desc: "\u2193", // up arrow
title: "title",
modified: "modified",
created: "created",
show: "+",
hide: "-",
normal: "normal",
group: "group",
commas: "commas",
sitemap: "sitemap",
numCols: "cols\u00b1", // plus minus sign
label: "Tagged as '%0':",
excerpts: "excerpts",
descr: "descr",
slices: "slices",
contents: "contents",
sliders: "sliders",
noexcerpts: "title only"
},
tooltips: {
title: "Click to sort by title",
modified: "Click to sort by modified date",
created: "Click to sort by created date",
show: "Click to show tagging list",
hide: "Click to hide tagging list",
normal: "Click to show a normal ungrouped list",
group: "Click to show list grouped by tag",
sitemap: "Click to show a sitemap style list",
commas: "Click to show a comma separated list",
numCols: "Click to change number of columns",
excerpts: "Click to show excerpts",
descr: "Click to show the description slice",
slices: "Click to show all slices",
contents: "Click to show entire tiddler contents",
sliders: "Click to show tiddler contents in sliders",
noexcerpts: "Click to show entire title only"
}
},
config: {
showTaggingCounts: true,
listOpts: {
// the first one will be the default
sortBy: ["title","modified","created"],
sortOrder: ["asc","desc"],
hideState: ["show","hide"],
listMode: ["normal","group","sitemap","commas"],
numCols: ["1","2","3","4","5","6"],
excerpts: ["noexcerpts","excerpts","descr","slices","contents","sliders"]
},
valuePrefix: "taggly.",
excludeTags: ['excludeTagging'],
excerptSize: 50,
excerptMarker: "/%"+"%/"
},
getTagglyOpt: function(title,opt) {
var val = store.getValue(title,this.config.valuePrefix+opt);
return val ? val : this.config.listOpts[opt][0];
},
setTagglyOpt: function(title,opt,value) {
if (!store.tiddlerExists(title))
// create it silently
store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),"");
// if value is default then remove it to save space
return store.setValue(title,
this.config.valuePrefix+opt,
value == this.config.listOpts[opt][0] ? null : value);
},
getNextValue: function(title,opt) {
var current = this.getTagglyOpt(title,opt);
var pos = this.config.listOpts[opt].indexOf(current);
// a little usability enhancement. actually it doesn't work right for grouped or sitemap
var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);
var newPos = (pos + 1) % limit;
return this.config.listOpts[opt][newPos];
},
toggleTagglyOpt: function(title,opt) {
var newVal = this.getNextValue(title,opt);
this.setTagglyOpt(title,opt,newVal);
},
createListControl: function(place,title,type) {
var lingo = config.taggly.lingo;
var label;
var tooltip;
var onclick;
if ((type == "title" || type == "modified" || type == "created")) {
// "special" controls. a little tricky. derived from sortOrder and sortBy
label = lingo.labels[type];
tooltip = lingo.tooltips[type];
if (this.getTagglyOpt(title,"sortBy") == type) {
label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
onclick = function() {
config.taggly.toggleTagglyOpt(title,"sortOrder");
return false;
}
}
else {
onclick = function() {
config.taggly.setTagglyOpt(title,"sortBy",type);
config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
return false;
}
}
}
else {
// "regular" controls, nice and simple
label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
onclick = function() {
config.taggly.toggleTagglyOpt(title,type);
return false;
}
}
// hide button because commas don't have columns
if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
},
makeColumns: function(orig,numCols) {
var listSize = orig.length;
var colSize = listSize/numCols;
var remainder = listSize % numCols;
var upperColsize = colSize;
var lowerColsize = colSize;
if (colSize != Math.floor(colSize)) {
// it's not an exact fit so..
upperColsize = Math.floor(colSize) + 1;
lowerColsize = Math.floor(colSize);
}
var output = [];
var c = 0;
for (var j=0;j<numCols;j++) {
var singleCol = [];
var thisSize = j < remainder ? upperColsize : lowerColsize;
for (var i=0;i<thisSize;i++)
singleCol.push(orig[c++]);
output.push(singleCol);
}
return output;
},
drawTable: function(place,columns,theClass) {
var newTable = createTiddlyElement(place,"table",null,theClass);
var newTbody = createTiddlyElement(newTable,"tbody");
var newTr = createTiddlyElement(newTbody,"tr");
for (var j=0;j<columns.length;j++) {
var colOutput = "";
for (var i=0;i<columns[j].length;i++)
colOutput += columns[j][i];
var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
wikify(colOutput,newTd);
}
return newTable;
},
createTagglyList: function(place,title) {
switch(this.getTagglyOpt(title,"listMode")) {
case "group": return this.createTagglyListGrouped(place,title); break;
case "normal": return this.createTagglyListNormal(place,title,false); break;
case "commas": return this.createTagglyListNormal(place,title,true); break;
case "sitemap":return this.createTagglyListSiteMap(place,title); break;
}
},
getTaggingCount: function(title) {
// thanks to Doug Edmunds
if (this.config.showTaggingCounts) {
var tagCount = store.getTaggedTiddlers(title).length;
if (tagCount > 0)
return " ("+tagCount+")";
}
return "";
},
getExcerpt: function(inTiddlerTitle,title,indent) {
if (!indent)
indent = 1;
var displayMode = this.getTagglyOpt(inTiddlerTitle,"excerpts");
var t = store.getTiddler(title);
if (t && displayMode == "excerpts") {
var text = t.text.replace(/\n/," ");
var marker = text.indexOf(this.config.excerptMarker);
if (marker != -1) {
return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
}
else if (text.length < this.config.excerptSize) {
return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
}
else {
return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
}
}
else if (t && displayMode == "contents") {
return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
}
else if (t && displayMode == "sliders") {
return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
}
else if (t && displayMode == "descr") {
var descr = store.getTiddlerSlice(title,'Description');
return descr ? " {{excerpt{" + descr + "}}}" : "";
}
else if (t && displayMode == "slices") {
var result = "";
var slices = store.calcAllSlices(title);
for (var s in slices)
result += "|%0|<nowiki>%1</nowiki>|\n".format([s,slices[s]]);
return result ? "\n{{excerpt excerptIndent{\n" + result + "}}}" : "";
}
return "";
},
notHidden: function(t,inTiddler) {
if (typeof t == "string")
t = store.getTiddler(t);
return (!t || !t.tags.containsAny(this.config.excludeTags) ||
(inTiddler && this.config.excludeTags.contains(inTiddler)));
},
// this is for normal and commas mode
createTagglyListNormal: function(place,title,useCommas) {
var list = store.getTaggedTiddlers(title,this.getTagglyOpt(title,"sortBy"));
if (this.getTagglyOpt(title,"sortOrder") == "desc")
list = list.reverse();
var output = [];
var first = true;
for (var i=0;i<list.length;i++) {
if (this.notHidden(list[i],title)) {
var countString = this.getTaggingCount(list[i].title);
var excerpt = this.getExcerpt(title,list[i].title);
if (useCommas)
output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
else
output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");
first = false;
}
}
return this.drawTable(place,
this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
useCommas ? "commas" : "normal");
},
// this is for the "grouped" mode
createTagglyListGrouped: function(place,title) {
var sortBy = this.getTagglyOpt(title,"sortBy");
var sortOrder = this.getTagglyOpt(title,"sortOrder");
var list = store.getTaggedTiddlers(title,sortBy);
if (sortOrder == "desc")
list = list.reverse();
var leftOvers = []
for (var i=0;i<list.length;i++)
leftOvers.push(list[i].title);
var allTagsHolder = {};
for (var i=0;i<list.length;i++) {
for (var j=0;j<list[i].tags.length;j++) {
if (list[i].tags[j] != title) { // not this tiddler
if (this.notHidden(list[i].tags[j],title)) {
if (!allTagsHolder[list[i].tags[j]])
allTagsHolder[list[i].tags[j]] = "";
if (this.notHidden(list[i],title)) {
allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
+ this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";
leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers
}
}
}
}
}
var allTags = [];
for (var t in allTagsHolder)
allTags.push(t);
var sortHelper = function(a,b) {
if (a == b) return 0;
if (a < b) return -1;
return 1;
};
allTags.sort(function(a,b) {
var tidA = store.getTiddler(a);
var tidB = store.getTiddler(b);
if (sortBy == "title") return sortHelper(a,b);
else if (!tidA && !tidB) return 0;
else if (!tidA) return -1;
else if (!tidB) return +1;
else return sortHelper(tidA[sortBy],tidB[sortBy]);
});
var leftOverOutput = "";
for (var i=0;i<leftOvers.length;i++)
if (this.notHidden(leftOvers[i],title))
leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";
var output = [];
if (sortOrder == "desc")
allTags.reverse();
else if (leftOverOutput != "")
// leftovers first...
output.push(leftOverOutput);
for (var i=0;i<allTags.length;i++)
if (allTagsHolder[allTags[i]] != "")
output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);
if (sortOrder == "desc" && leftOverOutput != "")
// leftovers last...
output.push(leftOverOutput);
return this.drawTable(place,
this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
"grouped");
},
// used to build site map
treeTraverse: function(title,depth,sortBy,sortOrder) {
var list = store.getTaggedTiddlers(title,sortBy);
if (sortOrder == "desc")
list.reverse();
var indent = "";
for (var j=0;j<depth;j++)
indent += "*"
var childOutput = "";
for (var i=0;i<list.length;i++)
if (list[i].title != title)
if (this.notHidden(list[i].title,this.config.inTiddler))
childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder);
if (depth == 0)
return childOutput;
else
return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;
},
// this if for the site map mode
createTagglyListSiteMap: function(place,title) {
this.config.inTiddler = title; // nasty. should pass it in to traverse probably
var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"));
return this.drawTable(place,
this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
"sitemap"
);
},
macros: {
tagglyTagging: {
handler: function (place,macroName,params,wikifier,paramString,tiddler) {
var refreshContainer = createTiddlyElement(place,"div");
// do some refresh magic to make it keep the list fresh - thanks Saq
refreshContainer.setAttribute("refresh","macro");
refreshContainer.setAttribute("macroName",macroName);
if (params[0])
refreshContainer.setAttribute("title",params[0]);
else {
refreshContainer.setAttribute("title",tiddler.title);
}
this.refresh(refreshContainer);
},
refresh: function(place) {
var title = place.getAttribute("title");
removeChildren(place);
addClass(place,"tagglyTagging");
if (store.getTaggedTiddlers(title).length > 0) {
var lingo = config.taggly.lingo;
config.taggly.createListControl(place,title,"hideState");
if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
createTiddlyElement(place,"span",null,"tagglyLabel",lingo.labels.label.format([title]));
config.taggly.createListControl(place,title,"title");
config.taggly.createListControl(place,title,"modified");
config.taggly.createListControl(place,title,"created");
config.taggly.createListControl(place,title,"listMode");
config.taggly.createListControl(place,title,"excerpts");
config.taggly.createListControl(place,title,"numCols");
config.taggly.createTagglyList(place,title);
}
}
}
}
},
// todo fix these up a bit
styles: [
"/*{{{*/",
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
" margin-top:0px; padding-top:0.5em; padding-left:2em;",
" margin-bottom:0px; padding-bottom:0px;",
"}",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
" color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
" border:0px; padding-left:0.3em;padding-right:0.3em;",
"}",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active {",
" border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
"}",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
".excerptIndent { margin-left:4em; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
"td.tagglyTagging",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
" margin-bottom:0.5em; }",
".tagglyTagging .indent1 { margin-left:3em; }",
".tagglyTagging .indent2 { margin-left:4em; }",
".tagglyTagging .indent3 { margin-left:5em; }",
".tagglyTagging .indent4 { margin-left:6em; }",
".tagglyTagging .indent5 { margin-left:7em; }",
".tagglyTagging .indent6 { margin-left:8em; }",
".tagglyTagging .indent7 { margin-left:9em; }",
".tagglyTagging .indent8 { margin-left:10em; }",
".tagglyTagging .indent9 { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
"/*}}}*/",
""].join("\n"),
init: function() {
merge(config.macros,this.macros);
config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
store.addNotification("TagglyTaggingStyles",refreshStyles);
}
};
config.taggly.init();
//}}}
/***
InlineSlidersPlugin
By Saq Imtiaz
http://tw.lewcid.org/sandbox/#InlineSlidersPlugin
// syntax adjusted to not clash with NestedSlidersPlugin
// added + syntax to start open instead of closed
***/
//{{{
config.formatters.unshift( {
name: "inlinesliders",
// match: "\\+\\+\\+\\+|\\<slider",
match: "\\<slider",
// lookaheadRegExp: /(?:\+\+\+\+|<slider) (.*?)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
lookaheadRegExp: /(?:<slider)(\+?) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
handler: function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
var btn = createTiddlyButton(w.output,lookaheadMatch[2] + " "+"\u00BB",lookaheadMatch[2],this.onClickSlider,"button sliderButton");
var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
panel.style.display = (lookaheadMatch[1] == '+' ? "block" : "none");
wikify(lookaheadMatch[3],panel);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
},
onClickSlider : function(e) {
if(!e) var e = window.event;
var n = this.nextSibling;
n.style.display = (n.style.display=="none") ? "block" : "none";
return false;
}
});
//}}}
/***
|''Name:''|TiddlerListMacro|
|''Version:''|2.3 (8-Jan-2008)|
|''Source''|http://jackparke.googlepages.com/jtw.html#TiddlerListMacro ([[del.icio.us|http://del.icio.us/post?url=http://jackparke.googlepages.com/jtw.html%23TiddlerListMacro]])|
|''Author:''|[[Jack]]|
|''Type:''|Macro|
|''Documentation:''|http://jackparke.googlepages.com/jtw.html#TiddlerListMacroDoc|
!Usage
{{{<<tiddlerList parameter1:"value1" parameter2:"value2" ...>>}}}
See TiddlerListMacroDocumentation and TiddlerListMacroExamples
!Code
***/
//{{{
version.extensions.tiddlerList = {major: 2, minor: 3, revision: 0, date: new Date("Jan 08, 2008")};
// template = [header, item, separator, group, footer]
config.macros.tiddlerList={
formats : {list:true, nlist:true, span:true, stack:true, csv:true, table:true},
templates : {
list : [ "%0\n", "* %0\n", "", "%group\n", "%0\n"],
nlist : [ "%0", "# %0\n", "", "%group\n", "%0\n"],
span : [ "%0", "%0", " ", "%group", "%0"],
stack : [ "%0", "%0", "\n", "%group", "%0"],
csv : [ "%0", "%0", ", ", "%0", "%0\n"],
table : ["|!%0|\n", "|%0|\n", "", "|%group|\n", "|%0|\n"]
},
dateFormat : "DD MMM YYYY"
}
if (typeof gCurrentTiddler == 'undefined')
var gCurrentTiddler;
config.macros.tiddlerList.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
// Some globals
var count=0, groupCount=0, theGroup="", lastGroup="", firstInGroup = false;
var currentTiddler = tiddler;
gCurrentTiddler = tiddler;
var listWikiText="";
var formats = this.formats;
// SQL-Like parameters
var parameters = paramString.parseParams("name",null,true);
var pTags = parameters[0]["tags"]?parameters[0]["tags"][0].split(','):[];
var pOrder = parameters[0]["order"]?parameters[0]["order"][0]:"title";
var pTop = parameters[0]["top"]?parameters[0]["top"][0]:-1;
var pText = parameters[0]["text"]?parameters[0]["text"][0]:"";
var pTitle = parameters[0]["title"]?parameters[0]["title"][0]:"";
var pSearch = parameters[0]["search"]?parameters[0]["search"][0]:"";
var pFilter = parameters[0]["filter"]?parameters[0]["filter"][0]:"";
var pHeader = parameters[0]["header"]?paramFormat(parameters[0]["header"][0]):"";
var pFooter = parameters[0]["footer"]?paramFormat(parameters[0]["footer"][0]):"";
var pGroup = parameters[0]["group"]?parameters[0]["group"][0]:"";
var pDateFormat = parameters[0]["dateFormat"]?parameters[0]["dateFormat"][0]:this.dateFormat;
var pCustomParameter = parameters[0]["customParameter"]?parameters[0]["customParameter"][0]:"";
var pFormat = parameters[0]["format"]?parameters[0]["format"][0]:"list";
pFormat = formats[pFormat]?pFormat:"list"
// Separator
var pSeparator = parameters[0]["separator"]?paramFormat(parameters[0]["separator"][0]):(parameters[0]["seperator"]?paramFormat(parameters[0]["seperator"][0]):this.templates[pFormat][2])
// Template for group
var pGroupTemplate = this.templates[pFormat][3];
if (parameters[0]["groupTemplate"])
pGroupTemplate = paramFormat(parameters[0]["groupTemplate"][0])
pGroupTemplate = pGroupTemplate.replace(/\$\)\)/g, ">>")
// Template for group footer
var pGroupFooterTemplate = "";
if (parameters[0]["groupFooterTemplate"])
pGroupFooterTemplate = paramFormat(parameters[0]["groupFooterTemplate"][0]);
pGroupFooterTemplate = pGroupFooterTemplate.replace(/\$\)\)/g, ">>");
// Template for item
var pItemTemplate = this.templates[pFormat][1];
if (parameters[0]["itemTemplate"])
pItemTemplate = paramFormat(parameters[0]["itemTemplate"][0])
pItemTemplate = pItemTemplate.replace(/\$\)\)/g, ">>").replace(/%link/g, "%0").replace(/%item/g, "%1").replace(/%abstract/g, "%2").replace(/%text/g, "%3").replace(/%created/g, "%4").replace(/%modified/g, "%5").replace(/%modifier/g, "%6").replace(/%group/g, "%7").replace(/%title/g, "%8").replace(/%tags/g, "%9").replace(/%nolink/g, "%10").replace(/%custom/g, "%11")
// Template for footer
var pFooterTemplate = this.templates[pFormat][4].replace(/%count/g, "%1")
// Get all tiddlers
var tiddlers = store.reverseLookup("tags","",false);
// Sorting
if(!pOrder)
pOrder = "title";
if (pOrder.match(/^\-/i)) {
pOrder = pOrder.substr(1)
var sortDesc = true;
}
// Sorting on a standard field
if (pOrder.match(/(title)|(text)|(modifier)|(modified)|(created)|(tags)/))
if (sortDesc)
tiddlers.sort(function (a,b) {if(a[pOrder] == b[pOrder]) return(0); else return (a[pOrder] > b[pOrder]) ? -1 : +1; });
else
tiddlers.sort(function (a,b) {if(a[pOrder] == b[pOrder]) return(0); else return (a[pOrder] < b[pOrder]) ? -1 : +1; });
else
if (sortDesc)
tiddlers.sort(function (a,b) {if(a.fields[pOrder] == b.fields[pOrder]) return(0); else return (a.fields[pOrder] > b.fields[pOrder]) ? -1 : +1; });
else
tiddlers.sort(function (a,b) {if(a.fields[pOrder] == b.fields[pOrder]) return(0); else return (a.fields[pOrder] < b.fields[pOrder]) ? -1 : +1; });
// Header
if (pHeader)
listWikiText += formatItem(this.templates[pFormat][0], [pHeader], pFormat)
for(var t=0; t<tiddlers.length; t++) {
tiddler = tiddlers[t];
if (pText!="" && tiddler.text=="") tiddler.text=store.getValue(tiddler, 'text')
if (pTop==-1 || count<pTop) {
if (pText=="" || tiddler.text.match(pText)) {
if (pTitle=="" || tiddler.title.match(pTitle)) {
if (pSearch=="" || (tiddler.title.match(pSearch) || tiddler.text.match(pSearch))) {
if (pFilter=="" || eval(pFilter)) {
if (pTags.length==0 || compareArrays(tiddler.tags, pTags, "all")) {
count++;
if (tiddler.text=="") tiddler.text=store.getValue(tiddler, 'text')
// Grouping
if (pGroup) {
theGroup = eval(pGroup);
if(theGroup != lastGroup) {
groupCount++;firstInGroup = true;
if (pGroupFooterTemplate && groupCount>1)
listWikiText += pGroupFooterTemplate.replace("%group", theGroup)
listWikiText += pGroupTemplate.replace("%group", theGroup)
lastGroup = theGroup;
} else
firstInGroup = false;
}
// Separators
if (count>1 && !firstInGroup) listWikiText += pSeparator;
//Plaintext title
var noLink = tiddler.title.match(config.textPrimitives.wikiLink)?"~" + tiddler.title:tiddler.title;
// Custom parameter
if (pCustomParameter)
var custom="";
try {
custom = eval(pCustomParameter)
} catch (e) {}
// List individual tiddler
var strItem = formatItem(pItemTemplate,["[[" + tiddler.title + "]]",count,tiddler.text.substr(0,300),tiddler.text,tiddler.created.formatString(pDateFormat),tiddler.modified.formatString(pDateFormat),tiddler.modifier,theGroup,tiddler.title,(tiddler.tags.length>0?"[["+tiddler.tags.join("]], [[")+"]]":""),noLink,custom], pFormat)
for (var fld in tiddler.fields) strItem = strItem.replace('%field.' + fld, tiddler.fields[fld]);
listWikiText += strItem
}
}
}
}
}
}
}
// Last group footer
if (pGroup && pGroupFooterTemplate && count>0)
listWikiText += pGroupFooterTemplate.replace("%group", theGroup)
// Footer
if (pFooter) {
pFooter = pFooter.replace("%count", count)
listWikiText += formatItem(pFooterTemplate, [pFooter], pFormat)
}
// Render result
if (!parameters[0]["debug"])
wikify(listWikiText,place, null, currentTiddler)
else
place.innerHTML = "<textarea style=\"width:100%;\" rows=30>" + listWikiText + "</textarea>"
// Local functions
function paramFormat(param) {
// Allow "\n" in non evalled parameters
return param.replace(/\\n/g, "\n");
}
function formatItem(template, values, format) {
// Fill template with values (depending on list format)
if (format.match(/table/) && values[0].match(/\|/))
return ("%0\n").format(values)
else
return template.format(values)
}
function compareArrays(array, values, logic) {
// Compare items in array with AND("all") or OR("any") logic
var matches=0;
for(var v=0; v<values.length; v++)
if(values[v].replace(/^\s+|\s+$/g,"").match(/^\-/) && !array.contains(values[v].replace(/^\s+|\s+$/g,"").substr(1)))
matches++;
else if (array.contains(values[v]))
matches++;
return ((logic=="all" && matches==values.length) || (logic!="all" && matches>0))
}
}
String.prototype.prettyTrim = function(len,prefix,postfix) {
var result = this.trim().replace(/\r\n/g,' ').replace(/\n/g,' ');
if (!prefix) prefix = '';
if (!postfix) postfix = '';
if (result.length > len - 3)
return prefix + result.substr(0,len) + '...' + postfix;
else if (result.length > 0)
return prefix + result + postfix;
else
return result;
}
//}}}
/***
|''Name:''|TiddlersBarPlugin|
|''Description:''|A bar to switch between tiddlers through tabs (like browser tabs bar).|
|''Version:''|1.2.5|
|''Date:''|Jan 18,2008|
|''Source:''|http://visualtw.ouvaton.org/VisualTW.html|
|''Author:''|Pascal Collin|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
!Demos
On [[homepage|http://visualtw.ouvaton.org/VisualTW.html]], open several tiddlers to use the tabs bar.
!Installation
#import this tiddler from [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] (tagged as systemConfig)
#save and reload
#''if you're using a custom [[PageTemplate]]'', add {{{<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>}}} before {{{<div id='tiddlerDisplay'></div>}}}
#optionally, adjust StyleSheetTiddlersBar
!Tips
*Doubleclick on the tiddlers bar (where there is no tab) create a new tiddler.
*Tabs include a button to close {{{x}}} or save {{{!}}} their tiddler.
*By default, click on the current tab close all others tiddlers.
!Configuration options
<<option chkDisableTabsBar>> Disable the tabs bar (to print, by example).
<<option chkHideTabsBarWhenSingleTab >> Automatically hide the tabs bar when only one tiddler is displayed.
<<option txtSelectedTiddlerTabButton>> ''selected'' tab command button.
<<option txtPreviousTabKey>> previous tab access key.
<<option txtNextTabKey>> next tab access key.
!Code
***/
//{{{
config.options.chkDisableTabsBar = config.options.chkDisableTabsBar ? config.options.chkDisableTabsBar : false;
config.options.chkHideTabsBarWhenSingleTab = config.options.chkHideTabsBarWhenSingleTab ? config.options.chkHideTabsBarWhenSingleTab : false;
config.options.txtSelectedTiddlerTabButton = config.options.txtSelectedTiddlerTabButton ? config.options.txtSelectedTiddlerTabButton : "closeOthers";
config.options.txtPreviousTabKey = config.options.txtPreviousTabKey ? config.options.txtPreviousTabKey : "";
config.options.txtNextTabKey = config.options.txtNextTabKey ? config.options.txtNextTabKey : "";
config.macros.tiddlersBar = {
tooltip : "see ",
tooltipClose : "click here to close this tab",
tooltipSave : "click here to save this tab",
promptRename : "Enter tiddler new name",
currentTiddler : "",
previousState : false,
previousKey : config.options.txtPreviousTabKey,
nextKey : config.options.txtNextTabKey,
tabsAnimationSource : null, //use document.getElementById("tiddlerDisplay") if you need animation on tab switching.
handler: function(place,macroName,params) {
var previous = null;
if (config.macros.tiddlersBar.isShown())
story.forEachTiddler(function(title,e){
if (title==config.macros.tiddlersBar.currentTiddler){
var d = createTiddlyElement(null,"span",null,"tab tabSelected");
config.macros.tiddlersBar.createActiveTabButton(d,title);
if (previous && config.macros.tiddlersBar.previousKey) previous.setAttribute("accessKey",config.macros.tiddlersBar.nextKey);
previous = "active";
}
else {
var d = createTiddlyElement(place,"span",null,"tab tabUnselected");
var btn = createTiddlyButton(d,title,config.macros.tiddlersBar.tooltip + title,config.macros.tiddlersBar.onSelectTab);
btn.setAttribute("tiddler", title);
if (previous=="active" && config.macros.tiddlersBar.nextKey) btn.setAttribute("accessKey",config.macros.tiddlersBar.previousKey);
previous=btn;
}
var isDirty =story.isDirty(title);
var c = createTiddlyButton(d,isDirty ?"!":"x",isDirty?config.macros.tiddlersBar.tooltipSave:config.macros.tiddlersBar.tooltipClose, isDirty ? config.macros.tiddlersBar.onTabSave : config.macros.tiddlersBar.onTabClose,"tabButton");
c.setAttribute("tiddler", title);
if (place.childNodes) {
place.insertBefore(document.createTextNode(" "),place.firstChild); // to allow break line here when many tiddlers are open
place.insertBefore(d,place.firstChild);
}
else place.appendChild(d);
})
},
refresh: function(place,params){
removeChildren(place);
config.macros.tiddlersBar.handler(place,"tiddlersBar",params);
if (config.macros.tiddlersBar.previousState!=config.macros.tiddlersBar.isShown()) {
story.refreshAllTiddlers();
if (config.macros.tiddlersBar.previousState) story.forEachTiddler(function(t,e){e.style.display="";});
config.macros.tiddlersBar.previousState = !config.macros.tiddlersBar.previousState;
}
},
isShown : function(){
if (config.options.chkDisableTabsBar) return false;
if (!config.options.chkHideTabsBarWhenSingleTab) return true;
var cpt=0;
story.forEachTiddler(function(){cpt++});
return (cpt>1);
},
selectNextTab : function(){ //used when the current tab is closed (to select another tab)
var previous="";
story.forEachTiddler(function(title){
if (!config.macros.tiddlersBar.currentTiddler) {
story.displayTiddler(null,title);
return;
}
if (title==config.macros.tiddlersBar.currentTiddler) {
if (previous) {
story.displayTiddler(null,previous);
return;
}
else config.macros.tiddlersBar.currentTiddler=""; // so next tab will be selected
}
else previous=title;
});
},
onSelectTab : function(e){
var t = this.getAttribute("tiddler");
if (t) story.displayTiddler(null,t);
return false;
},
onTabClose : function(e){
var t = this.getAttribute("tiddler");
if (t) {
//tbGTD Why? if(story.hasChanges(t) && !readOnly) if(!confirm(config.commands.cancelTiddler.warning.format([t]))) return false;
story.closeTiddler(t);
}
return false;
},
onTabSave : function(e) {
var t = this.getAttribute("tiddler");
if (!e) e=window.event;
if (t) config.commands.saveTiddler.handler(e,null,t);
return false;
},
onSelectedTabButtonClick : function(event,src,title) {
var t = this.getAttribute("tiddler");
if (!event) event=window.event;
if (t && config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton])
config.commands[config.options.txtSelectedTiddlerTabButton].handler(event, src, t);
return false;
},
onTiddlersBarAction: function(event) {
var source = event.target ? event.target.id : event.srcElement.id; // FF uses target and IE uses srcElement;
if (source=="tiddlersBar") story.displayTiddler(null,'New Tiddler',DEFAULT_EDIT_TEMPLATE,false,null,null);
},
createActiveTabButton : function(place,title) {
if (config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton]) {
var btn = createTiddlyButton(place, title, config.commands[config.options.txtSelectedTiddlerTabButton].tooltip ,config.macros.tiddlersBar.onSelectedTabButtonClick);
btn.setAttribute("tiddler", title);
}
else
createTiddlyText(place,title);
}
}
story.coreCloseTiddler = story.coreCloseTiddler? story.coreCloseTiddler : story.closeTiddler;
story.coreDisplayTiddler = story.coreDisplayTiddler ? story.coreDisplayTiddler : story.displayTiddler;
story.closeTiddler = function(title,animate,unused) {
if (title==config.macros.tiddlersBar.currentTiddler)
config.macros.tiddlersBar.selectNextTab();
story.coreCloseTiddler(title,false,unused); //disable animation to get it closed before calling tiddlersBar.refresh
var e=document.getElementById("tiddlersBar");
if (e) config.macros.tiddlersBar.refresh(e,null);
}
story.displayTiddler = function(srcElement,tiddler,template,animate,unused,customFields,toggle){
story.coreDisplayTiddler(config.macros.tiddlersBar.tabsAnimationSource,tiddler,template,animate,unused,customFields,toggle);
var title = (tiddler instanceof Tiddler)? tiddler.title : tiddler;
if (config.macros.tiddlersBar.isShown()) {
story.forEachTiddler(function(t,e){
if (t!=title) e.style.display="none";
else e.style.display="";
})
config.macros.tiddlersBar.currentTiddler=title;
}
var e=document.getElementById("tiddlersBar");
if (e){config.macros.tiddlersBar.refresh(e,null);}
if(config.options.chkSinglePagePermalink){
var sUrl=encodeURIComponent(String.encodeTiddlyLink(title));
window.location.hash = sUrl;
config.lastURL = window.location.hash;
document.title = wikifyPlain("SiteTitle") + " - " + title;
if(window.atREFRESH)window.atREFRESH();
}
}
var coreRefreshPageTemplate = coreRefreshPageTemplate ? coreRefreshPageTemplate : refreshPageTemplate;
refreshPageTemplate = function(title) {
coreRefreshPageTemplate(title);
if (config.macros.tiddlersBar) config.macros.tiddlersBar.refresh(document.getElementById("tiddlersBar"));
}
// tb: code cleanup and different highlight for selected tab
var barStyle
barStyle = "/*{{{*/\n"
+ ".tiddler {border: 3px solid [[ColorPalette::TertiaryPale]];border-left-width:2px;border-top-width:2px;clear:both;z-index:10;}\n"
+ "#tiddlersBar {z-index:0;}\n"
+ "#tiddlersBar .tab:hover {border-color:[[ColorPalette::SecondaryMid]];}\n"
+ "#tiddlersBar .tab {display:block;float:left;margin:3px 3px 0 0;padding: 2px 4px;}\n"
+ "#tiddlersBar .tabUnselected .tabButton, #tiddlersBar .tabSelected .tabButton {padding : 0 2px; margin: 0 0 0 2px;}\n"
+ "#tiddlersBar .tab {white-space:nowrap;border:0;border-top:2px solid [[ColorPalette::TertiaryMid]];border-bottom:2px solid [[ColorPalette::TertiaryPale]];margin-bottom:-2px;background:[[ColorPalette::TertiaryMid]];}\n"
+ "#tiddlersBar .button {border:0;color:[[ColorPalette::Foreground]];}\n"
+ "#tiddlersBar {padding:0 0 0 1%;marign:0;max-width:84%;}\n"
+ "#tiddlersBar .tabButton:hover, #tiddlersBar .button:hover, #tiddlersBar .tab:hover {color:[[ColorPalette::Background]];background:[[ColorPalette::SecondaryMid]]}\n"
+ "#tiddlersBar .tabSelected {background:[[ColorPalette::Background]];border:2px solid [[ColorPalette::TertiaryPale]];border-bottom:2px solid [[ColorPalette::Background]];margin-bottom:-2px;}\n"
+ "#tiddlersBar .tabSelected .button:hover{background:transparent;color:[[ColorPalette::Background]];}\n"
+ "#tiddlersBar .tabContents {border:1px [[ColorPalette::TertiaryMid]] solid;}\n"
+ "/*}}}*/";
config.shadowTiddlers.StyleSheetTiddlersBar = barStyle;
store.addNotification("StyleSheetTiddlersBar", refreshStyles);
config.refreshers.none = function(){return true;}
config.shadowTiddlers.PageTemplate=config.shadowTiddlers.PageTemplate.replace(/<div id='tiddlerDisplay'><\/div>/m,"<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>\n<div id='tiddlerDisplay'></div>");
//}}}
/%alle Tiddler die als Tag einen der Paramter nach 'with:' haben werden ausgeschlossen%/<<tiddler scripts##tidsByTags with: tbGTD>>
[[TagCloud verwalten...|TagCloud]]
Das [[Wiki|http://www.tiddlywiki.com]] Das all dies hier möglich macht.
/***
!!usage
In edit-mode, the following will be replaced when you save the tiddler
* {ts} or {t} -> timestamp
* {ds} or {d} -> datestamp
Configure ''timeFormat'' and ''dateFormat'' to your needs.
!all praises go to
[[InstantTimestampPlugin@MPTW|http://mptw.tiddlyspot.com/#InstantTimestampPlugin]]
!source
***/
//{{{
config.timeStampGTD={
timeFormat:'YYYY-0MM-0DD 0hh:0mm',
dateFormat:'YYYY-0MM-0DD',
excludeTags:['systemConfig'],
excludeTiddlers:[],
formats:[
[/\{ts?\}(?!\}\})/ig,"'{{ts{'+t.formatString(config.timeStampGTD.timeFormat)+'}}}'"],
[/\{ds?\}(?!\}\})/ig,"'{{ds{'+t.formatString(config.timeStampGTD.dateFormat)+'}}}'"]
]
}
TiddlyWiki.prototype.saveTiddler_tbGTD=TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler=function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created){
var t,f,i,c=config.timeStampGTD;
tags=tags?tags:[];tags=(typeof(tags)=="string")?tags.readBracketedList():tags;
if(!tags.containsAny(c.excludeTags)&&!c.excludeTiddlers.contains(newTitle)){
t=new Date();f=c.formats;
for(var i=0;i<f.length;i++)newBody=newBody.replace(f[i][0],eval(f[i][1]));
}
return this.saveTiddler_tbGTD.apply(this, arguments);
}
setStylesheet(".ts,.ds {font-weight:bold;color:#666;}","TimeStampStyles");
//}}}
...ist der, der sich die Zeit enommen hat, diese GTD Variante für TiddlyWiki zu entwerfen...
Ist derselbe wie ...[[Tobias]]
/***
|''Name:''|ToggleSideBarTB|
|''Description''|allows to toggle left and right sidebar|
|''Version:''|1.1|
|''Type''|macro|
|''Author:''|[[TobiasBeer]]|
|''Info:''|http://tbgtd.tiddlyspot.com/#ToggleSideBarTB|
|''Source:''|http://tbgtd.tiddlyspot.com/#ToggleSideBarTB|
|''License''|[[Creative Commons Attribution-Share Alike 3.0|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion''|2.xx|
!Code
***/
//{{{
config.macros.toggleSideBarTB={
settings:{
arr1:"►",arr2:"◄",
lblToggle:"toggle %0",
leftBarID:"mainMenu",leftBarLbl:"main menu",
leftBarHide:"margin-left:1em;",leftBarShow:"margin-left:10.1em;",
rightBarID:"sidebar",rightBarLbl:"sidebar",
rightBarHide:"margin-right:1em;",rightBarShow:"margin-right:17.1em;"
},
handler:function(place,macroName,params,wikifier,paramString,tiddler){
var l=params[0]&¶ms[0]=="left";
var h=params[1]&¶ms[1]=="hide";
var no=params[2]&¶ms[2]=="notip";
var s=this.settings;
var el=l?s.leftBarID:s.rightBarID;
var btnId="ToggleSideBar"+(l?"Left":"Right");
var arr=l?(h?s.arr1:s.arr2):(h?s.arr2:s.arr1);
var lbl=(no?'':s.lblToggle.format([(l?s.leftBarLbl:s.rightBarLbl)]));
var fct=function(){config.macros.toggleSideBarTB.toggle(btnId)};
document.getElementById(el).setAttribute("toggle","hide");
createTiddlyButton(place,arr,lbl,fct,"button HideSideBarButton",btnId);
if(h)config.macros.toggleSideBarTB.toggle(btnId);
},
toggle:function(btnId){
var btn=document.getElementById(btnId);
var l=btn.id=="ToggleSideBarLeft";
var s=config.macros.toggleSideBarTB.settings;
var bl=document.getElementById(s.leftBarID);
var br=document.getElementById(s.rightBarID);
var bar=(l?bl:br);
var hl=bl.getAttribute("toggle")=='show';if(l)hl=!hl;
var hr=br.getAttribute("toggle")=='show';if(!l)hr=!hr;
var h=(l?hl:hr);
setStylesheet("#contentWrapper #displayArea {"+
(hl?s.leftBarHide:s.leftBarShow)+
(hr?s.rightBarHide:s.rightBarShow)+
"}","ToggleSideBarStyles");
bar.style.display=h?"none":"block";
bar.setAttribute("toggle",(h?"show":"hide"));
arr1=l?s.arr2:s.arr1;arr2=l?s.arr1:s.arr2;
btn.innerHTML=h?arr2:arr1;
}
}
//}}}
/***
<<tTag mode:text text:N tag:#next>><<tTag mode:text text:F tag:#future>><<tTag mode:text text:W tag:#waiting title:desk>><<tTag mode:text text:D tag:#done>><<tTag mode:text text:★ tag:star>>
!Code
***/
//{{{
config.macros.tTag={
createIfRequired:true,
lblShort:'[[%0]]',
lblLong:'[[%0]] [[%1]]',
lblBtn:"Setze '%0' für '%1'",
handler:function(place,macroName,params,wikifier,paramString,tiddler){
var b,btn,cl,la,mode,p,ra,t,tt=this,ti,tx,tag;
p=paramString.parseParams("tags",null,true);
t=tiddler?tiddler:story.findContainingTiddler(place).getAttribute('tiddler');
ti=getParam(p,"title",t.title);
t=store.getTiddler(ti);
tag=getParam(p,"tag","checked");
ra=getParam(p,"refreshAll",false);
la=getParam(p,"label",(t&&ti==t.title?this.lblShort:this.lblLong));
mode=getParam(p,"mode","checkbox");
cl=getParam(p,"class",tag+"Button");
b=t&&t.isTagged(tag);
switch(mode){
case "checkbox":
createTiddlyCheckbox(place,la.format([tag,ti]),b,function(e){
tt.create(ti);
store.setTiddlerTag(ti,this.checked,tag);
if(ra)tt.refresh(ti);
return true;
});
break;
case "text":
tx=getParam(p,"text","X");
btn=createTiddlyButton(place,tx,this.lblBtn.format([tag,ti]),function(e){
var b,cnt;
if(!e)e=window.event;
tt.create(ti);
b=!(this.getAttribute("state")=="true");
store.setTiddlerTag(ti,b,tag);
tt.toggle(b,this);
if(ra)tt.refresh(ti);
e.cancelBubble=true;
if(e.stopPropagation)e.stopPropagation();
return false;
});
addClass(btn,cl.replace(/ /g,''));
tt.toggle(b,btn);
break;
}
},
create:function(ti){
if(!store.tiddlerExists(ti)){
if(this.createIfRequired){
var cnt=store.getTiddlerText(ti);//shadow
store.saveTiddler(ti,ti,cnt?cnt:"",config.options.txtUserName,new Date(),null);
}
else return false;
}
},
toggle:function(b,btn){
btn.setAttribute("state",b?"true":"false");
removeClass(btn,b?"off":"on");
addClass(btn,b?"on":"off");
},
refresh:function(ti){
story.forEachTiddler(function(ti,el){
if(el.getAttribute("dirty")!="true")story.refreshTiddler(ti,false,true);
});
}
};
setStylesheet(["",
".button.off {border-style:none;background:#fff;color:#ccc;}",
".button.on {border-style:none;background:#ddd;color:#000;}",
""].join("\n"),"tTag");
//}}}
|~ViewToolbar|refreshTiddler -closeTiddler +editTiddler deleteTiddler newHere > syncing permalink fields <|
|~EditToolbar|-cancelTiddler +saveTiddler deleteTiddler|
/***
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 = 'tbgtd-deutsch';
// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too
// disable autosave in d3
if (window.location.protocol != "file:")
config.options.chkGTDLazyAutoSave = false;
// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}
// create some shadow tiddler content
merge(config.shadowTiddlers,{
'WelcomeToTiddlyspot':[
"This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
"<<tiddler TspotControls>>",
"See also GettingStarted.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// @@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Help!// @@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),
'TspotControls':[
"| tiddlyspot password:|<<option pasUploadPassword>>|",
"| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
"| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),
'TspotSidebar':[
"<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),
'TspotOptions':[
"tiddlyspot password:",
"<<option pasUploadPassword>>",
""
].join("\n")
});
//}}}
Nachfolgend eine List all dessen, was du vielleicht seit Release 1.2x aktualisieren möchtest.
Importiere einfach __alle Tiddler__ mit dem Tag <<tag Update>> vom [[Server|tbGTDDeutschServer]] mit [[ImportTiddlersPlugin|http://tiddlytools.com/#ImportTiddlersPlugin]]...
@@''Hinweis'': Alles bis einschließlich {{ds{2009-11-17}}} wurde postscriptum noch in Version 1.2x reingeschmuggelt, die aktuell auf box.net zum [[Download]] steht. Soetwas werde ich in Zukunft lassen.@@
!{{ds{2009-11-17}}}
*[[x-tab]]
**Korrektur von ~IE6 Fehlern .. ie stinkt!
**betrifft auch [[baseGTD]]
!{{ds{2009-11-13}}}
*[[x-tagger]]
**Korrektur von Anzeigefehlern insb. in ~IE6 (und nun auch ~FF3.5.5)
**betrifft auch [[tbGtdTheme]]
!{{ds{2009-11-10}}}
*[[tbGTD Hilfe]] & [[Hilfe]]
**für die unter euch, die das Ausdrucken nicht lassen können
!{{ds{2009-11-09}}}
*[[Hilfe]]
**komplett überarbeitet
**''Hilfe zu Formatierungen'' in Toolbar im ~Editier-Modus
**erfordert auch ein Update von [[tbGtdTheme]] und [[StyleSheetShortcuts]]
*[[x-plore]]
**Fehler im Internet Explorer korrigiert & kleinere CSS Anpassungen
*[[TagCloud]]
**Tag <<tag noCloud>> ermöglicht, um Tiddler auszuschließen
**imortiere TagCloud und TagCloudMacro
*[[DeliciousTagging]]
**Oberfläche verbessert
**ignoriert standardmäßig auch Tiddler mit dem Tag [[noCloud]]
*[[TiddlersBarPlugin]]
**Korrektur des Verhaltens, wodurch beim Öffnen von Popups die Seite nach oben gesprungen ist
| 29/10/2009 03:13:04 | Tobias | [[tbGTD-deutsch.html|file:///C:/xTiddle/tiddlyspot/tbGTD/tbGTD-deutsch.html#Optionen]] | [[store.cgi|http://tbgtd-deutsch.tiddlyspot.com/store.cgi]] | . | [[index.html | http://tbgtd-deutsch.tiddlyspot.com/index.html]] | . | ok |
| 13/11/2009 19:17:35 | Tobias | [[tbGTD-deutsch.html|file:///C:/xTiddle/tiddlyspot/tbGTD/tbGTD-deutsch.html#Update]] | [[store.cgi|http://tbgtd-deutsch.tiddlyspot.com/store.cgi]] | . | [[index.html | http://tbgtd-deutsch.tiddlyspot.com/index.html]] | . | ok |
| 15/11/2009 21:47:01 | Tobias | [[tbGTD-deutsch.html|file:///C:/xTiddle/tiddlyspot/tbGTD/tbGTD-deutsch.html#Schreibtisch]] | [[store.cgi|http://tbgtd-deutsch.tiddlyspot.com/store.cgi]] | . | [[index.html | http://tbgtd-deutsch.tiddlyspot.com/index.html]] | . | ok |
| 15/11/2009 21:51:41 | Tobias | [[tbGTD-deutsch.html|file:///C:/xTiddle/tiddlyspot/tbGTD/tbGTD-deutsch.html#Schreibtisch]] | [[store.cgi|http://tbgtd-deutsch.tiddlyspot.com/store.cgi]] | . | [[index.html | http://tbgtd-deutsch.tiddlyspot.com/index.html]] | . | ok |
| 17/11/2009 16:49:12 | Tobias | [[tbGTD-deutsch.html|file:///C:/xTiddle/tiddlyspot/tbGTD/tbGTD-deutsch.html#Schreibtisch]] | [[store.cgi|http://tbgtd-deutsch.tiddlyspot.com/store.cgi]] | . | [[index.html | http://tbgtd-deutsch.tiddlyspot.com/index.html]] | . | ok |
| 17/11/2009 17:26:21 | Tobias | [[tbGTD-deutsch.html|file:///C:/xTiddle/tiddlyspot/tbGTD/tbGTD-deutsch.html#Schreibtisch]] | [[store.cgi|http://tbgtd-deutsch.tiddlyspot.com/store.cgi]] | . | [[index.html | http://tbgtd-deutsch.tiddlyspot.com/index.html]] | . | ok |
| 17/11/2009 18:06:35 | Tobias | [[tbGTD-deutsch.html|file:///C:/xTiddle/tiddlyspot/tbGTD/tbGTD-deutsch.html#Schreibtisch]] | [[store.cgi|http://tbgtd-deutsch.tiddlyspot.com/store.cgi]] | . | [[index.html | http://tbgtd-deutsch.tiddlyspot.com/index.html]] | . | ok |
| 27/05/2010 14:32:02 | Tobias | [[tbgtd-deutsch.html|file:///C:/xTiddle/tiddlyspot/tbGTD/tbgtd-deutsch.html#ToggleTagTB]] | [[store.cgi|http://tbgtd-deutsch.tiddlyspot.com/store.cgi]] | . | [[index.html | http://tbgtd-deutsch.tiddlyspot.com/index.html]] | . | ok |
| 20/08/2013 12:25:28 | Tobias | [[tbGTD-deutsch.html|file:///D:/tiddle/tiddlyspot/tbGTD/tbGTD-deutsch.html#test]] | [[store.cgi|http://tbgtd-deutsch.tiddlyspot.com/store.cgi]] | . | [[index.html | http://tbgtd-deutsch.tiddlyspot.com/index.html]] | . |
| 20/08/2013 12:28:23 | Tobias | [[tbGTD-deutsch.html|file:///D:/tiddle/tiddlyspot/tbGTD/tbGTD-deutsch.html#Optionen]] | [[store.cgi|http://tbgtd-deutsch.tiddlyspot.com/store.cgi]] | . | [[index.html | http://tbgtd-deutsch.tiddlyspot.com/index.html]] | . | ok |
| 20/08/2013 12:29:09 | Tobias | [[tbGTD-deutsch.html|file:///D:/tiddle/tiddlyspot/tbGTD/tbGTD-deutsch.html#Optionen]] | [[store.cgi|http://tbgtd-deutsch.tiddlyspot.com/store.cgi]] | . | [[index.html | http://tbgtd-deutsch.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: "Hochladen"
};
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");
//}}}
|linkTable|k
|width:400px; !nach Änderungsdatum |width:400px; !Nach Erstellungsdatum |
|vertical-align:top;padding-left:20px;<<timeline "modified">>|vertical-align:top;padding-left:20px;<<timeline "created">>|
Archivierte Referenzen...
//{{{
//utility functions for tbGTD
window.tbGTD={
//get type of GTD element 1=toplevel, 2=subcategory, 3=tagged, noGTD=null
type:function(title,list){
if(!title)return;
var l,s,t,cats,sub=[],ti,tgt;
if(!list)list='x-tagger';
l=store.getTiddlerText(list);if(!l)return;
cats=l.readBracketedList();
for(t=0;t<cats.length;t++){
ti=cats[t];if(title==ti)return 1;
tgt=store.getTaggedTiddlers(ti);
for(var s=0;s<tgt.length;s++){
ti=tgt[s].title;
if(title==ti)return 2;
sub.pushUnique(ti);}
}
for(t=0;t<sub.length;t++){
ti=sub[t];
tgt=store.getTaggedTiddlers(ti);
for(s=0;s<tgt.length;s++)if(title==tgt[s].title)return 3;
}
return null;
},
nu:function(tg,txt){
return '<<newTiddler label:"+" title:"neu vom Typ '+tg+'" prompt:"erzeuge einen neuen Tiddler mit \''+tg+'\' als Tag" focus:title '+(txt?'text:[['+txt+']]':'')+' tag:[['+tg+']]>>';
}
}
//}}}
/%
!these
script
UploadLog
!tagged
Journal
Referenz
tbGTD Deutsch
systemServer
!keep
Formatierung
Referenz
tbGtdTheme
tbGTDDeutschServer
!show
<<tiddler {{var btn=document.getElementById('cleanBtnGTD');if(!btn)btn=createTiddlyButton(place,'clean','clean tbGTD for release',function(e){
var c,t,tid,clean=[],tids,txs,tgs,keep;
tgs=store.getTiddlerText('clean##these').split('\n');
for(t=0;t<tgs.length;t++){if(store.getTiddler(tgs[t]))clean.pushUnique(tgs[t]);}
tgs=store.getTaggedTiddlers('clean');
for(t=0;t<tgs.length;t++){clean.pushUnique(tgs[t].title);}
tgs=store.getTiddlerText('clean##tagged').split('\n');
for(t=0;t<tgs.length;t++){
tids=store.getTaggedTiddlers(tgs[t]);
for (c=0;c<tids.length;c++){clean.pushUnique(tids[c].title);}
}
keep=store.getTiddlerText('clean##keep').split('\n');
for(t=0;t<keep.length;t++){clean.remove(keep[t]);}
if(clean.length==0)alert('Nothing to be deleted.');
else if (!confirm('Sure you want to delete all if these?\n'+clean.join('\n')))return;
for(c=0;c<clean.length;c++)store.removeTiddler(clean[c]);
},null,null);btn.setAttribute('id','cleanBtnGTD');
'';}}>> ...anpassen: [[MainMenu]], [[topMenuL]], [[topMenuR]], [[MarkupPreHead]], [[MarkupPostBody]], [[StyleSheet]] ...sicherstellen: alle haben.[[tbGTD]] als Tag
!end%/<<tiddler clean##show>>
{{sidebarTitle{Tiddler mit Tag excludeList:}}}
<<list filter [tag[excludeLists]]>>
<<list filter [tag[excludeSearch]]>>
/***
|''Name:''|jQueryPopup|
|''Description:''|Inline annotations for tiddler text with a 'jQueryfied' popup|
|''Author:''|Tobias Beer (original AnnotationsPlugin by Saq Imtiaz)|
|''Source:''|http://tbGTD.tiddlyspot.com/#jQueryPopup|
|''Version:''|0.1|
|''Date:''|2009.10.19|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
|''incompatible with!!!''|AnnotationsPlugin|
((@@color:red;background:transparent;mod of ~AnnotationsPlugin@@(^strongly modded for tbGTD<br />*added delay<br />*wikified annotated & annotation<br />*used general tw Popup<br />*jQuery magic)))
!!Usage:
*{{{((text to annotate(annotation goes here)))}}}
* To include the text being annotated, in the popup as a title, put {{{^}}} as the first letter of the annotation text.
** {{{((text to annotate(^annotation goes here)))}}}
!!Examples:
Mouse over, the text below:
* ((_banana(the best fruit in the world)))
* ((_banana(^the best fruit in the world)))
***/
//{{{
config.extensions.anno={
show:function(id){
var el=document.getElementById(id);
el.timerA=false;
var wrap=document.getElementById('annowrap');
if (wrap==undefined)wrap=createTiddlyElement(document.body,"div","annowrap",null);
else wrap.innerHTML='';
wrap.style.display='none';
var stackPosition = Popup.find(el,"popup");
Popup.remove(stackPosition+1);
var popup = createTiddlyElement(wrap,"ol","popup","popup");
popup.stackPosition = stackPosition;
Popup.stack.push({root: el, popup: popup});
if(el.subject)wikify("!"+el.subject+"\n",popup);
wikify(el.anno,popup);
Popup.show();
popup.annoId=id;
popup.onmouseover=this.mouseover;
popup.onmouseout=this.mouseout;
jQuery(wrap).fadeIn('slow');
addClass(el,"annosubover");
el.wrap=wrap;
},
hide:function(id){var el=document.getElementById(id);if(el.keepAnno)return;else this.remove(id);
},
mouseover:function(e){
var el=document.getElementById(this.annoId);el.keepAnno=true;if(annoHideTimer)clearTimeout(annoHideTimer);
},
mouseout:function(e){
annoHideTimer=setTimeout("config.extensions.anno.remove("+this.annoId+")",200);
},
remove:function(id){
var el=document.getElementById(id);
Popup.remove();
removeNode(el.wrap);
el.wrap=null;
el.keepAnno=false;
removeClass(el,"annosubover");
}
}
config.formatters.unshift({
name:"annotations",
match:"\\(\\(",
lookaheadRegExp:/\(\((\_{0,2})(.*?)\((\^?)((?:.|\n)*?)\)\)\)/g,
handler:function(w){
this.lookaheadRegExp.lastIndex=w.matchStart;
var an=this.lookaheadRegExp.exec(w.source);
if(an&&an.index==w.matchStart){
var el=createTiddlyElement(w.output,"span",null,"annosub");
if (an[1]) el=createTiddlyElement(el,"span",null,null);
wikify('xxx'+an[2],el);
el.innerHTML=el.innerHTML.replace(/xxx/,'',1);
el.anno=an[4];
if(an[3])el.subject=an[2];
el.onmouseover=this.onmouseover;
el.onmouseout=this.onmouseout;
el.ondblclick=this.onmouseout;
w.nextMatch=an.index+an[0].length;
}
},
onmouseover:function(e){
if (!this.id) this.id=new Date().getTime()+Math.random();
if(this.timerA)return;
this.timerA=true;
annoTimer=setTimeout("config.extensions.anno.show("+this.id+")",300);
},
onmouseout:function(e){
this.timerA=false;
if(!this.wrap||this.keep)clearTimeout(annoTimer);
var id=this.id;
annoHideTimer=setTimeout("config.extensions.anno.hide("+this.id+")",200);
}
});
setStylesheet(".anno{position:absolute;padding:0.5em;max-width:15em;z-index:101;width:expression(document.body.clientWidth > (255/12) *parseInt(document.body.currentStyle.fontSize)?'15em':'auto' );}.anno h1, .anno h2{margin-top:0;}.annosubover{cursor:text;}","AnnotationStyles");
//}}}
Von der [[TagCloud]] ausgeschlossene Tiddler...
/%
!refreshBtn
<html><a class='refresh' title="Inhalt von $1 aktualisieren" href="javascript:story.refreshTiddler('$1',null,true);return false;">aktualisieren</a></html>
!refresh
<<tiddler scriptCollection##refreshBtn with: {{('$1'=='$'+'1')?tid=story.findContainingTiddler(place).getAttribute("tiddler"):'$1';}}>>
!tidsByTags
<script>
/***
|''Name:''|TiddlersByTags|
|''Description:''|Displays a table listing tiddlers by tags, excluding certain ones|
|''Author:''|Tobias Beer|
|''Source:''|http://tbGTD.tiddlyspot.com|
|''Version:''|1.1|
|''Date:''|2009.11.07|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''Requires:''|InlineJavascriptPlugin|
***/
var ex=[],i,t,tx,xt='$1'.readBracketedList();
for(t=0;t<xt.length;t++){
tx=store.getTaggedTiddlers(xt[t]);
for(var i=0;i<tx.length;i++)ex.pushUnique(tx[i].title);
}
var out="|linkTable|k\n| Tag | Tiddler |h\n";
var tags=store.getTags();
for (var tag=0;tag<tags.length;tag++) {
if (ex.contains(tags[tag][0])) continue;
var tids=store.getTaggedTiddlers(tags[tag][0]);
out+="| [["+tags[tag][0]+"]]|";
for (var t=0;t<tids.length;t++) out+="[["+tids[t].title+"]]";
out+="|\n";
}
return out;
</script>
!deleteTiddler
<script label="löschen" title="klicke, um $1 zu löschen">
var sTid='$1';
var update='$2';
var refresh='$3'!='norefresh';
if(sTid=="$"+"1"){
sTid=story.findContainingTiddler(place).getAttribute('tiddler');
if (sTid=="DeleteTiddler") return;
if (!confirm("Möchtest du wirklich '"+sTid+"' löschen?")) return;
else refresh=false;
}
var oTid=store.getTiddler(sTid);
if (oTid==undefined){
alert("Kann '$1' nicht löschen. Tiddler existiert nicht.");
return;
}
store.removeTiddler(sTid);
story.closeTiddler(sTid,true);
if (refresh) story.refreshTiddler(story.findContainingTiddler(place).getAttribute('tiddler'),null,true);
if (update!="$"+"2")story.refreshTiddler("$2",null,true);
refreshDisplay();
</script>
!miniTag
<script>
var click=function(e){
if(!e)var e=window.event;
var popup=Popup.create(this);
var tags=this.getAttribute('tags').readBracketedList();
for(var t=0; t<tags.length; t++) createTiddlyLink(createTiddlyElement(popup,"li"),tags[t],true);
Popup.show(popup,false);
e.cancelBubble=true;
if(e.stopPropagation)e.stopPropagation();
return false;
}
var title="$1"!='$'+'1'?'$1':story.findContainingTiddler(place).getAttribute('tiddler');
var tid=store.getTiddler(title);
if(tid){
var title=('$2'!='$'+'2'?'$2':'')+'\u25b6';
var exclude=('$3'!='$'+'3'?'$3':'').readBracketedList();
var tags=tid.tags;
out=[];
for(var t=0; t<tags.length; t++)if(!exclude.contains(tags[t])) out.push(tags[t]);
if (out.length>0){
addClass(place,'miniTags');
var btn=createTiddlyButton(place,title,'Zeige Tags für \''+tid.title+'\'',click);
btn.setAttribute('tags',(out.length>1?"[["+out.join(']][[')+']]':'[['+out+']]'));
}
}
</script>
!end%/
Tiddlers that relate to the design of this site...
{{sidebarTitle{[[installierte Plugins:|PluginManager]]}}}
<<list filter [tag[systemConfig]]>>
disabled plugins:
<<list filter [tag[systemConfigDisable]]>>
Alle Tiddler, die zu diesem GTD TiddlyWiki gehören, verweisen hierher...
Übersetze alles nötige vom Englishen ins Deutsche...
<<tiddler Hilfe with: all>>
Gibt's nun auf [[box.net|http://box.net]] zum [[herunterladen...|Download]]
[[Hier geht's zum Download...|Download]]
!Version 1.2x: ...hier geht's um's x
*[[x-tab]] bietet eine Kreuztabelle für Tags
**[[x-tab]] ist kontextsensitiv für alle vordefinierten GTD Kategorien... ausprobieren!
**benutze [[x-tab Konfiguration]] um die Einstellungen zu ändern (siehe [[x-tab Info]] auf tbGTD-Deutsch@tiddlyspot)
*[[x-plore]] zeigt die 4 wesentlichen ~Tiddler-Beziehungen des aktuellen Tiddlers als Bäume
*[[x-tagger]] (vormals ~TaggerPluginGTD) ...Tagger² erlaubt das effizient(er)e zuweisen von (GTD)-Tags
**benutze [[x-tagger Konfiguration]], um Einstellungen vorzunehmen
*Modifikation von [[TagCloud]]: füge das Tag <<tag noCloud>> zu einem Tag, um es aus der [[TagCloud]] auszublenden
*Modifikation von [[DeliciousTagging]]
**erlaubt nun die Tagauswahl für benutzerdefinierte Kategorien
**schließt standardmäßig dieselben Tags aus wie [[TagCloud]] (die mit dem Tag <<tag noCloud>>)
*[[ReminderMacros]] angepasst, um negative Datumsabstände darzustellen (bis zu einem Jahr zurück)
*die am meisten benutzten [[Optionen]] sind nun direkt in einem <<popup Popup [[<<tiddler topMenuR##Optionen$))]]>> im oberen rechten Menü
*<<tag Priorität>><<rB Prioritäten>> und Status [[#wartend]] für Aufgaben hinzugefügt
*((@@Pronto!@@(...das war's nun für eine Weile... Zeit sich einen Job zu suchen ;-) )))
!Wichtiger Hinweis
Ich habe die Präfixe der Kategorien $[[Projekt]] und §[[Phase]] umgetauscht. Sie machen so herum einfach viel mehr Sinn! Aktualisierungshinweise im Download.
|''URL:''|http://tbGTD-Deutsch.tiddlyspot.com|
|''Author:''|Tobias Beer|
|''Description:''|Aufgabenmanagement mit TiddlyWiki|
|Name|tbGtdTheme|
|Description|A theme based on ~MptwTheme ($Rev: 1829 $) with innumerable customizations |
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|
!PageTemplate
<!--{{{-->
<div class="topMenu" id="topMenuR" refresh='content' tiddler='topMenuR'></div>
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<!-- horizontal MainMenu -->
<div class='topMenu' id="topMenu" macro='gradient vert [[ColorPalette::PrimaryMid]] [[ColorPalette::PrimaryMid]] [[ColorPalette::PrimaryMid]] [[ColorPalette::PrimaryMid]] [[ColorPalette::TertiaryDark]]'>
<span id="topMenuL" refresh='content' tiddler='topMenuL'></span>
</div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='mainMenu' refresh='content' force='true' tiddler='MainMenu'></div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
[[tbGtdTheme##Viewtemplatetoolbar]]
<div class="tagglyTagged" macro="tags"></div>
<div class='titleContainer'>
<span class='title' macro='view title'></span>
<span macro="miniTag"></span>
</div>
<div class='subtitle'>
(aktualisiert <span macro='view modified date {{config.options.txtPrettyDates?config.options.txtPrettyDates:"YYYY-0MM-0DD"}}'></span> von <span macro='view modifier link'></span>)
<!--
(<span macro='message views.wikified.createdPrompt'></span>
<span macro='view created date {{config.options.txtPrettyDates?config.options.txtPrettyDates:"YYYY-0MM-0DD"}}'></span>)
-->
</div>
<div class='viewer' macro='view text wikified'></div>
<div class="tagglyTagging" macro="tagglyTagging"></div>
<div class='toolbar toTop' style='line-height:100%;margin-top:.5em;'><a href="javascript:;"
onclick="window.scrollTo(0,ensureVisible(story.findContainingTiddler(this)));return false;"
onmouseover="this.title='scroll to top of '+story.findContainingTiddler(this).getAttribute('tiddler')">▲</a>
</div>
<!--}}}-->
!Viewtemplatetoolbar
<!--{{{-->
<div class='toolbar'>
<span macro="tiddler {{v=store.getValue(tiddler,'need');v?v:'';}}"></span>
<span style="padding:1em;"></span>
<span macro="tTag tag:Stern mode:text text:★" style="padding-top:0.2em;"></span>
<span macro="xtab button defaults:true position:first" style="margin:0 0 0 10px;"></span>
<span macro="xplore button:true toolbar:true exclude:GET==x-plore##exclude truncate:GET==x-plore##truncate class:'borderless'"></span>
<span macro="xtagger source:'x-tagger Konfiguration##Tags' label:'x-tag' tooltip:'GTD-Tags hinzufügen' more:'x-tagger Konfiguration##More'" style="margin-right:20px;"></span>
<span macro='newHere label:"neu"'></span>
<span macro='toolbar [[ToolbarCommands::ViewToolbar]]'></span>
<span macro='newReminder' class='reminder'></span>
</div>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class="toolbar" macro="toolbar [[ToolbarCommands::EditToolbar]]"><span macro='popup [[Hilfe zu Formatierungen]] [[<<tiddler Formatierung$))]] "" helpPopup' style='margin-right:30px;'></span></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Titel</div><div class="editor" macro="edit title"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class='editorFooter' macro='deliciousTagging'><span class='tagChooser' title='set tiddler tags' macro='tagChooser'></span></div>
<div macro='annotations'></div>
<div class="editLabel">Inhalt</div><div class="editor" macro="edit text"></div>
<!--}}}-->
!StyleSheet
/*{{{*/
body{background: [[ColorPalette::TertiaryDark]];}
#backstageButton a{color:[[ColorPalette::TertiaryLight]];padding-left:10em;}
#backstageButton a:hover{color:[[ColorPalette::Background]];background:transparent;}
#backstageToolbar{text-align:center;}
#messageArea{position:absolute;top:0.3em;left:38%;padding:0.7em 1%;width:25%;border:2px solid [[ColorPalette::TertiaryLight]];-moz-border-radius:3px; -webkit-border-radius:3px;background:[[ColorPalette::TertiaryDark]];color:[[ColorPalette::TertiaryMid]];}
#messageArea .messageToolbar{display:block;float:right;padding:0.1em;text-align:right;width:50px;}
#messageArea a, #messageArea .button{background:transparent;text-decoration:none;color:[[ColorPalette::Background]];}
#messageArea a:hover{color:[[ColorPalette::Foreground]];}
.headerShadow{padding: 1em 1em 0;font-family: 'Baskerville, Verdana, Trebuchet MS' sans-serif;font-weight:bold;}
.headerShadow, .headerShadow .siteSubtitle, .headerShadow .tiddlyLink{color: [[ColorPalette::TertiaryPale]];}
.headerShadow .tiddlyLink:hover{color:[[ColorPalette::SecondaryMid]];}
.siteSubtitle .tiddlyLink{font-weight:bold;}
.subtitle{padding:0px;margin:0px;padding-left:1em;font-size: 90%;color: [[ColorPalette::TertiaryMid]];}
.subtitle .tiddlyLink{color: [[ColorPalette::TertiaryMid]];}
.topMenu{background-color:transparent;color:[[ColorPalette::PrimaryPale]];}
.popup .popBtn .button, .topMenu .button, .topMenu .tiddlyLink{font-weight:bold;margin:0 0.5em;padding:3px 1px;color:[[ColorPalette::PrimaryPale]];background:transparent;font-size:115%;border:0 !important;}
.popup .popBtn .button{font-size:100%;margin:0 3px;}
.popup .popBtn .button:hover, .topMenu .button:hover, .topMenu .tiddlyLink:hover{color: [[ColorPalette::SecondaryMid]];background:transparent;}
.topMenu .button:hover, .topMenu .tiddlyLink:hover{color: [[ColorPalette::SecondaryMid]];background:transparent;}
#topMenu{width:100%;padding:0.3em 0;}
#topMenuL br, #topMenuR br{display:none;}
#topMenuL{float:left;margin-left:0.5em;height:25px;}
#topMenuR{display:block;position:absolute;right:0em;z-index:11;height:25px;color:[[ColorPalette::TertiaryMid]];min-width:10%;float:right;top:4.9em;}
#topMenuClear{clear:both;width:100%;height:1px;border:0px;margin:0px;padding:0px;}
#toggleLeftSideBar{position:absolute;top:5px;left:5px;z-index:999;left:40;color:[[ColorPalette::Background]];}
#toggleLeftSideBar a{color:[[ColorPalette::Background]];background:none;border:0;}
#toggleLeftSideBar a:hover{background:none;border:0;}
#mainMenu{padding:10px 0 0 0;margin-top:-10px; width:8.1em; background:[[ColorPalette::PrimaryMid]]; -moz-border-radius:5px; -webkit-border-radius:5px;border:0; border-right: 5px solid [[ColorPalette::PrimaryMid]]; border-bottom: 5px solid [[ColorPalette::PrimaryMid]];text-align:left;z-index:0;}
#mainMenu ul{list-style:none;padding:0;margin:0px;}
#mainMenu li{clear:both;}
#mainMenu a{padding-left:5%;width:95%;margin-top:-1px;border-bottom:1px solid [[ColorPalette::Foreground]];border-top:1px solid [[ColorPalette::Foreground]];color:[[ColorPalette::PrimaryPale]];display:block;}
#mainMenu a:hover{color:[[ColorPalette::SecondaryMid]];background:[[ColorPalette::TertiaryDark]];}
#mainMenu ul ul{margin-bottom:30px;}
#mainMenu .accordion ul li .button, #mainMenu .accordion ul li .button:hover,
#mainMenu .accordion ul li .quickopentag .button,
#mainMenu .accordion ul li .quickopentag .button:hover {border:0 none;float:left;padding:0 3%;text-align:center;width:10%;font-size:11px;}
.popup .quickopentag .button {border-color:transparent;}
#mainMenu .accordion ul li .quickopentag .tiddlyLink{border:0;float:left;padding:0 0 0 1%;width:67%;color:[[ColorPalette::SecondaryLight]];}
#mainMenu .accordion ul li .quickopentag .tiddlyLink:hover {text-decoration:underline;color:[[ColorPalette::SecondaryMid]];background:[[ColorPalette::Foreground]];}
#mainMenu .noCopy{color:[[ColorPalette::TertiaryDark]];border-top:none;}
#mainMenu .main{padding:1px 0 1px 5px;}
.xtagger .quickopentag .tiddlyLink:hover {text-decoration:underline;color:[[ColorPalette::SecondaryMid]];background:[[ColorPalette::Foreground]];}
.xtagger .quickopentag .tiddlyLink{font-size:110%;border:0;padding:0 0 0 1%;display:inline;color:[[ColorPalette::SecondaryLight]];}
#sidebar{margin:-10px 0 0 0;padding:14px 0 5px 0; background:[[ColorPalette::PrimaryMid]]; -moz-border-radius:5px; -webkit-border-radius:5px;border:0; border-left: 5px solid [[ColorPalette::PrimaryMid]]; border-bottom: 5px solid [[ColorPalette::PrimaryMid]];width:17.6em;right:0;}
#sidebarTabs{margin:1em 0 0 0.5em;}
#sidebar .button{border-style:none;padding:2px 8px 2px 2px;}
#sidebar .button:hover{color:[[ColorPalette::SecondaryMid]];}
#sidebar br{display:none;}
#sidebar hr{height:0;border:0;border-bottom:1px solid [[ColorPalette::Foreground]];}
#sidebar li a{display:block;}
#sidebar a{color:[[ColorPalette::TertiaryPale]];}
#sidebar .tiddlyLinkNonExisting{color:[[ColorPalette::TertiaryLight]];}
#sidebar .highlight, #sidebar .marked, #sidebar a:hover{color:[[ColorPalette::SecondaryMid]];background:[[ColorPalette::Foreground]];}
#sidebar .tabset{margin-bottom:2px;padding:0.5em 0 0 0 !important}
#sidebar .tabset .tab {padding:3px;font-size:9px;font-weight:bold;height:16px;background-color:[[ColorPalette::Foreground]];color:[[ColorPalette::TertiaryLight]];display:inline;border:0;border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
#sidebar .tabset .tab:hover{background-color:[[ColorPalette::TertiaryDark]];color:[[ColorPalette::Background]];}
#sidebar .tabset .tabSelected{color:[[ColorPalette::SecondaryMid]];background:[[ColorPalette::TertiaryDark]];}
#sidebar .tabContents{background-color:[[ColorPalette::PrimaryMid]];border:0;border-top:1px solid [[ColorPalette::TertiaryDark]];color:[[ColorPalette::Background]];}
#sidebar .tagCloudtag, #sidebar #TOCMenu{display:inline;}
#sidebar .tabContents .tabset, #sidebar .tabContents .tabContents{padding:0;margin-left:-0.5em;}
#sidebar .tabContents .tabContents {padding-top:5px;margin-left:0.2em;}
#sidebar .tabContents .sideBarTags ul .tiddlyLink{padding:1px 0;width:88%;float:right;}
#sidebar .tabContents .sideBarTags .button{width:8%;padding:1px 1%;text-align:center;float:left;}
#sidebar .sidebarTitle a{display:block;font-size:110%;border-bottom:1px solid [[ColorPalette::Foreground]];font-weight:normal;}
#sidebar .TOC{padding:0;}
#sidebar .TOCList{padding:0;margin-top:3px;display:block;}
#sidebar .TOCList, #sidebar .TOCList option{border:[[ColorPalette::PrimaryMid]];background:[[ColorPalette::PrimaryMid]];color:[[ColorPalette::Background]];}
#sidebar .TOCList option:hover{background:[[ColorPalette::Foreground]];color:[[ColorPalette::SecondaryMid]];}
#searchResults{padding:1em;border: 1px solid [[ColorPalette::TertiaryLight]];margin:0;right:0.5em;position:absolute;background:[[ColorPalette::Background]];min-width:30%;max-width:40%;z-index:1000;}
#searchResults ul{max-height:150px;overflow:auto;}
#searchResults h1{clear:both;}
#searchResults ul{margin: 0.5em;padding-left:1.5em;}
#searchResults li{list-style-type:circle;}
#search_open,
#search_close{display:block;float:right;padding:5px 10px;width:70px;margin:5px 10px 10px 0px;text-align:center;border: 1px solid [[ColorPalette::TertiaryLight]];}
#tiddlersBar{margin-top:0px;padding-top:0px;}
.toolbar{float:right;}^
.toolbar .tiddlyLinkExisting{font-weight:normal;}
.toolbar{visibility:hidden;}
.selected .toolbar{visibility:visible;}
#displayArea{margin: 0.5em 17.1em 0em 10.1em;}
.tiddler{background:[[ColorPalette::Background]];border:3px solid [[ColorPalette::Background]];-moz-border-radius:3px; -webkit-border-radius:3px;border-right: 2px [[ColorPalette::TertiaryMid]] solid;border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;margin-bottom: 1em;padding:1em 2em 2em 1.5em;}
.viewer{clear:both; POSITION: relative;color:[[ColorPalette::TertiaryDark]];padding-bottom:3px;}
.title, .titleContainer .miniTag{font-size: 250%;color: [[ColorPalette::PrimaryLight]];font-family: 'Baskerville, Verdana,Trebuchet MS' sans-serif;}
.editor textarea, .editor input{font-family: 'Consolas' monospace;background-color:[[ColorPalette::TertiaryPale]];}
.tagChooser{font-weight:bold;font-size:120%;}
.editorFooter{line-height:1.6em;}
h1,h2,h3,h4,h5,h6{background-color: transparent;color: [[ColorPalette::Foreground]];}
.toTop a:hover{background:transparent;}
#addReminderForm{clear:both;}
.clearDiv{clear:both; margin:0px; padding:0px; width:100%; height:1px;}
.toolbar a.on{color:orange;background-color:[[ColorPalette::Background]];}
#popup {padding:3px;}
.popup li,.popup ul,.popup ol,.popup span li,.popup span ul,.popup span ol {list-style:none !important;margin:0px !important;padding:0px !important;}
#popup tr.fieldTableRow td{padding:1px 3px 1px 3px;}
#popup div{color:[[ColorPalette::SecondaryMid]];text-decoration:underline;}
ol.popup{border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryMid]] [[ColorPalette::PrimaryMid]] [[ColorPalette::PrimaryDark]]; -moz-border-radius:3px; -webkit-border-radius:3px;}
.popup{background:[[ColorPalette::PrimaryMid]];}
.popup br{display:none;}
.popup ul li .button{padding:0.4em;display:block;}
.popup hr{padding:0;margin:0;border:0;}
.popup a, ol.popup li a, .popup ul li .button, .popup .menuH .button, .popup li a:visited{background:transparent;color:[[ColorPalette::TertiaryPale]];}
.popup a:hover, ol.popup li a:hover{background:[[ColorPalette::TertiaryDark]];color:[[ColorPalette::SecondaryMid]];}
.popup h1, .popup h2, .popup h3, .popup hr{border-bottom:1px solid [[ColorPalette::TertiaryDark]];}
.popup h1, .popup h2, .popup h3, .popup h4, .popup h5, .popup{background:[[ColorPalette::Foreground]];color:[[ColorPalette::Background]];}
.popup .menuH{display:block;margin:0.5em 0 0 3px;padding:0;font-size:1.4em;font-weight:bold;border-bottom:1px solid [[ColorPalette::TertiaryDark]];min-width:250px;}
.helpPopup{font-size:120%;font-family:overflow:none;overflow-y:scroll;height:400px;font-family:'Verdana,sans-serif';}
td, tr{vertical-align:top;}
.viewer table,table.twtable{margin:0;border-collapse:collapse;border:1px solid [[ColorPalette:TertiaryMid]];}
.viewer table, table.twtable, .viewer td, .viewer tr, .twtable td, .twtable tr,
.viewer th, .viewer thead td, .twtable th, .twtable thead td{border:1px solid [[ColorPalette:TertiaryMid]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td{font-weight:bold;}
.viewer th .tiddlyLink, .viewer th .tiddlyLinkExisting, .viewer th .externalLink,
.viewer thead .tiddlyLink, .viewer thead .tiddlyLinkExisting, .viewer thead .externalLink{color:[[ColorPalette::Foreground]];}
.viewer th .tiddlyLink:hover, .viewer th .tiddlyLinkExisting:hover, .viewer th .externalLink:hover,
.viewer thead .tiddlyLink:hover, .viewer thead .tiddlyLinkExisting:hover, .viewer thead .externalLink:hover{color:[[ColorPalette::Background]];}
.linkTable .quickopentag .tiddlyLinkExisting,.linkTable .quickopentag .externalLink{display:inline;}
.noborder, .noborder table, .noborder td, .noborder tr, .noborder th, .noborder tbody { border:0 !important;margin:0 !important;}
.noborder tbody td{padding:1px 4px 1px 2px;}
#sidebarOptions .black .calendar{text-align:center;margin:0 auto;}
.black{display:inline-block;color:[[ColorPalette::TertiaryMid]];}
.black table{border:0 !important;}
.viewer .black{border:10px solid [[ColorPalette::PrimaryMid]];-moz-border-radius:10px; -webkit-border-radius:10px;}
.black, .black table, .black th, .black tr, .black td{background:[[ColorPalette::PrimaryMid]];padding:0 !important;border:0;}
.black .calendar td{border:1px solid [[ColorPalette::PrimaryMid]] !important;border-collapse:collapse;}
.black .calendar .weekNo{font-style:normal;color:[[ColorPalette::TertiaryMid]];border-left:5px solid [[ColorPalette::PrimaryMid]];border-collapse:collapse;}
.black .calendar a,.black .calendar td .button{padding:2px 3px !important;margin:0;color:[[ColorPalette::TertiaryPale]];display:block;}
.black .calendar td .button{color:[[ColorPalette::TertiaryMid]];}
.black .tiddlyLinkNonExisting, .black .tiddlyLink, .black .button{background:transparent;border:transparent;fonts-style:normal;}
.black .calendarMonthname,
.black .calendarMonthname .tiddlyLink{color:[[ColorPalette::TertiaryMid]];font-style:normal;}
.black .calendarMonthname .tiddlyLink:hover, .black .tiddlyLink:hover, .black .button:hover{color:[[ColorPalette::SecondaryMid]];}
.black br{display:none;}
.viewer iframe{width:100%;height:450px;border:1px solid [[ColorPalette::TertiaryMid]];-moz-border-radius:3px; -webkit-border-radius:3px;}
.viewer .tiddlyLink, .viewer .tiddlyLinkExisting, .viewer .externalLink{border-bottom:1px solid transparent;border-top:1px solid transparent;color:[[ColorPalette::TertiaryDark]];}
.tiddlyLink:hover, .tiddlyLinkExisting:hover, .externalLink:hover{color:[[ColorPalette::SecondaryMid]];background:transparent;border-bottom-color:[[ColorPalette::SecondaryPale]];border-top-color:[[ColorPalette::SecondaryPale]];}
.block .tiddlyLink, .remind .tiddlyLink{padding: 0 3px;}
.block .tiddlyLink,
table.linkTable .tiddlyLinkExisting, table.linkTable .externalLink{display:block;padding-left:0.7em;}
table.linkTable .tiddlyLinkExisting{text-decoration:none;}
.block .tiddlyLink:hover,.remind .tiddlyLink:hover,
table.linkTable .tiddlyLinkExisting:hover, table.linkTable .externalLink:hover{}
.remind{padding:2px 5px;border:3px solid transparent;-moz-border-radius:3px; -webkit-border-radius:3px;}
.remind:hover{background:#f6f6f6;border-color:#f6f6f6;}
.vTabs .tabset {float:left;display:block;padding:0px;margin-top:5px;min-width:15%;}
.vTabs .tabset .tabset {margin-top:0px;}
.vTabs .tabset .tabSelected {color:[[ColorPalette::SecondaryDark]];background:[[ColorPalette::TertiatyMid]];font-weight:bold;text-decoration:underline;}
.vTabs .tabset .tab {display:block;text-align:right;padding:2px 5px; margin:0 1px 1px 0;background:transparent;border:0;color:[[ColorPalette::SecondaryMid]];}
.vTabs .tabset .tab:hover {background:[[ColorPalette::SecondaryMid]];color:[[ColorPalette::Background]];}
.vTabs .tabContents {margin-left:15%;max-width:85%;padding:0 10px 5px 10px;background:transparent;border:none;border-left:1px solid [[ColorPalette::TertiaryLight]];}
#annowrap {padding:0;margin:0;border:0;}
#annowrap .popup{display:block;min-width:100px;max-width:300px;font-size:100%;}
#annowrap .popup br {display:block !important;}
#annowrap .popup h1, .anno .popup h2{color:[[ColorPalette::TertiaryLight]];}
.annosub{cursor:pointer;padding:0px 1px 0px 3px;}
.annosub span{padding:0px 1px 0px 3px;}
.annosubover{color:[[ColorPalette::SecondaryDark]];cursor:pointer;}
.annosubover span{background-color:[[ColorPalette::SecondaryPale]];padding:0px 1px 0px 3px;}
.desk .annosub {color:[[ColorPalette::TertiaryDark]];}
.desk .view {display:block;float:left;padding:0 5px;}
.desk table .button{padding:1px 3px;border-color:transparent;font-weight:bold;}
.desk .block .noborder td{padding:0 1px 0 0;}
.desk .block .quickopentag .tiddlyLink{padding:1px 1%;width:92%;float:left;}
.desk .block .miniTags .button, .desk .block .quickopentag .button{width:4%;padding:1px 1%;text-align:center;float:left;font-size:14px;}
.desk .block .miniTags .button{width:96%;float:left;font-size:10px;}
.deskNew span{display:inline-block;width:75px;}
.miniTags .button{margin:0 2px;border:0;}
.topMenu .pL .button{padding-left:25px;}
.topMenu .pR .tiddlyLink{padding-right:25px;}
.viewer .marked {padding:0 2px;}
@media print{
#topMenu, #topMenuR, #tiddlersBar{display: none ! important;}
.headerShadow{visibility: hidden ! important;}
.tiddler{border-style: none ! important;margin:0px ! important;padding:0px ! important;padding-bottom:2em ! important;}
.tagglyTagging .button, .tagglyTagging .hidebutton{display: none ! important;}
.tagglyTagged .quickopentag, .tagged .quickopentag{border-style: none ! important;}
.quickopentag a.button, .miniTag{display: none ! important;}
}
/* get user styles specified in StyleSheet */
[[StyleSheet]]
/*}}}*/
<<toggleSideBarTB left show>>|<<popup ★ [[<<tiddler topMenuL##STERN$))]]>>|[[Schreibtisch]]|<<popup Journal [[<<tiddler topMenuL##JOURNAL$))]]>>|<<popup Neu [[<<tiddler topMenuL##NEU$))]]>>|<<popup Nächste [[<<tiddler topMenuL##NAECHSTE$))]]>>|<<popup Kalender [[<<tiddler topMenuL##KALENDER$))]]>>|{{pR{[[+|QuickNotes]]}}}/%
!STERN
{{menuH{markierte Tiddler}}}
<<tiddlerList tags:"Stern" itemTemplate:"*%0 \n" -modified">>
!NAECHSTE
{{menuH{Liste der nächsten Aufgaben}}}
<<tiddlerList tags:"#nächste" itemTemplate:"*%0 \n" -modified">>
!KALENDER
{{menuH{[[Monatskalender|Kalender]] & die Liste der [[Erinnerungen|Erinnerung]]}}}
<<tiddler Kalender>>
!JOURNAL
<<tiddlerList tags:"Journal" top:"10" dateFormat:"ddd. 0DD" itemTemplate:"*[[%created - %title|%title]] \n" group:"tiddler.created.formatString('YYYY, MMM')" groupTemplate:"!!!%group \n" order:"-created">>
{{menuH{[[Journal]] Optionen}}}
*[[Alle Journaleinträge|Journal]]
*<<newJournal "YYYY-0MM-0DD" label:"Neuen Eintrag schreiben..." focus:title prompt:"Schreibe einen neuen Journaleintrag für heute" tag:Journal>>
!NEU
{{menuH{Füge neue Inhalte hinzu...}}}
*[[neue Notiz|QuickNotes]]
*<<newTiddler label:"neuer Tiddler">>
*<<newTiddler label:"neue Aufgabe" title:"neue Aufgabe" prompt:"lege eine neue #nächste Aufgabe an" focus:title tag:#nächste>>
*<<newTiddler label:"neues aktuelles Projekt" title:"neues Projekt" prompt:"lege ein neues $aktuelles Projekt an" focus:title tag:$aktuell>>
*<<newJournal "YYYY-0MM-0DD" label:"neuer Journaleintrag" focus:title prompt:"Einen neuen Journaleintrag für heute anlegen" tag:Journal>>
*<<newTiddler label:"neue Erinnerung" title:"neue Erinnerung" prompt:"eine neue Erinnerung anlegen" focus:title tag:Erinnerung text:{{store.getTiddlerText("templateNewReminder")}}>>
----
*<<newTiddler label:"neue Referenz" title:"neue Referenz" prompt:"eine neue Referenz anlegen" focus:title tag:Referenz>>
*<<newTiddler label:"neuer Aufgabenstatus" title:"#neuer Aufgabenstatus" prompt:"einen neuen Aufgabenstatus anlegen" focus:title tag:Aufgabe>>
*<<newTiddler label:"neuer Aufgabenkontext" title:"@neuer Aufgabenkontext" prompt:"einen neuen Aufgabenkontext anlegen" focus:title tag:Kontext>>
*<<newTiddler label:"neue Projektart" title:"$neue Projektart" prompt:"eine neue Projektart anlegen" focus:title tag:Projekt>>
*<<newTiddler label:"neue Projektphase" title:"§neue Projektphase" prompt:"eine neue Projektphase anlegen" focus:title tag:Phase>>
*<<newTiddler label:"neue Kontaktgruppe" title:"?neue Kontaktgruppe" prompt:"eine neue Kontaktgruppe anlegen" focus:title tag:Kontakte>>
*<<newTiddler label:"neue Aufgabengruppe" title:"&neue Aufgabengruppe" prompt:"eine neue Aufgabengruppe anlegen" focus:title tag:Gruppe>>
!end%/
{{pL{<<closeAll>><<rB x>>}}}|[[Download]]|[[Kontakt]]|[[Hilfe]]|<<popup Optionen [[<<tiddler topMenuR##Optionen$))]]>> <<gotoTiddler inputstyle:"display:inline;border:1px solid #ccc;padding:0px;width:150px;z-index:0;margin-left:5px;" liststyle:"display:block;position:absolute;right:2.5em;top:1.7em;z-index:10;border:1px solid #ccc;padding:0;width:auto;display:none;">><<toggleSideBarTB right show>>/%
!Optionen
*<<permaview>>
*<<saveChanges Speichern>>
*<<upload http://tbgtd-deutsch.tiddlyspot.com/store.cgi index.html . . tbgtd-deutsch>><<rB Hochladen 'tbGTD speichern und auf TiddlySpot hochladen'>>
----
*[[Archiv]]
*[[Referenz]]
*[[QuickNotes]]
*[[x-tab Konfiguration]]
*[[x-tagger Konfiguration]]
----
*[[Mehr Optionen...|Optionen]]
!end%/
<html><iframe src="http://www.twittergadget.com/gadget.asp"></iframe></html>
@@color:#A00; Dieser Tiddler befindet sich in Entwicklung. Auch wenn er jetzt schon nützlich sein mag... es ist möglich, dass er sogar __grundlegend__ geändert wird.
/***
|''Name:''|x-plore|
|''Description''|Explore tiddler relations|
|''Version:''|0.1|
|''Type''|macro|
|''Author:''|[[TobiasBeer]]|
|''Source:''|http://tbGTD.tiddlyspot.com/#x-plore|
|''License''|[[Creative Commons Attribution-Share Alike 3.0|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''Note''|idea and parts of the code have their roots in [[RelatedTiddlersPlugin|http://tiddlytools.com/#RelatedTiddlersPlugin]]|
!Wichtig
<<tiddler 'under development'>>
!Konfiguration
Benutze die folgende Abschnitte in [[x-plore]] um Tiddler zu definieren...
*die via ''exclude'' ignoriert werden
*die abgeschnitten werden (nicht weiter verfolgt) wenn in ''truncate'' declariert
!exclude
Stern
!truncate
excludeLists
systemConfig
TAG==site
!Hilfe
<<tiddler {{t='x-plore info';store.getTiddler(t)?t:'x-plore::helplink'}}>>/%
helplink:Für mehr Informationen zu x-plore importiere [[x-tab info]] von [[tbGTDServerDeutsch]]...
%/
!source code
***/
//{{{
config.macros.xplore={
skipped:' ...',
lblBtn:'x-plore'+(document.all?"▼":"▾"),
topBtn:'Explore tiddler relations',
lblTagging:'!!tagged by',
lblTags:'!!tagging to',
lblRefs:'!!referenced by',
lblLinks:'!!linking to',
styles:
'#popup #xplore div {text-decoration:none;padding:7px;min-width:136px;_width:180px;}'+
'#popup #xplore div a {padding:2px;white-space:nowrap;font-weight:normal;display:block;}'+
'#popup #xplore blockquote {padding-left:3px;margin:0;}'+
'#popup #xplore blockquote blockquote {border-left:1px solid #333;margin:0 0 0 10px;}'+
'#popup #xplore blockquote a {_width:90%;}'+
'#popup #xplore h2 {border:0;margin-top:0.5em;}'+
'#popup #xplore td {border:1px solid transparent !important;padding: 0 5px 5px 5px !important;}'+
'#popup #xplore td:hover{border:1px solid #333 !important;}'+
'#popup #xplore div br {display:none;}',
handler:function(place,macroName,params,wikifier,paramString,tiddler){
var p,btn,cls,ex,fst,min,mode,tb,tid,tit,tree,trunc,r;
tid=story.findContainingTiddler(place);
tit=tid?tid.getAttribute('tiddler'):'';
p=paramString.parseParams(null,null,true);
btn=getParam(p,'button','')=='true';
tb=getParam(p,'toolbar','')=='true';
if(btn&&tit){
btn=createTiddlyButton(place,this.lblBtn,this.tipBtn,this.click,"button","xploreBtn");
btn.setAttribute('tiddler',tit);
btn.setAttribute('params',paramString);
if(tb)btn.setAttribute('toolbar',true);
return;
}
fst=getParam(p,'first',tit);
cls=getParam(p,'class','');
tree=getParam(p,'tree','true')=='true';
var getArr=function(prm){//retrieve array from tiddler text
var a=getParam(p,prm,'').readBracketedList(),f=a[0],i,i1,t,x,s=[];
if(f&&f.substr(0,5).toUpperCase()=='GET=='){
t=store.getTiddlerText(f.substr(5));
if(s){
a=t.readBracketedList();
for(i=0;i<a.length;i++){
f=a[i];
if(f&&f.substr(0,5).toUpperCase()=='TAG=='){
a.splice(i,1);
x=store.getTaggedTiddlers(f.substr(5));
for(i1=0;i1<x.length;i1++)s.pushUnique(x[i1].title);
}
}
for(i=0;i<s.length;i++)a.pushUnique(s[i]);
a.sort();
}
}return a;
}
ex=getArr('exclude');
trunc=getArr('truncate');
r=getParam(p,'root','')=='true';
min=getParam(p,'minimal','')=='true';
mode=getParam(p,'mode','');
if(mode!=''){
if(this['get'+mode]==undefined)mode='Tagging';
wikify(this['lbl'+mode]+'\n'+this.list(fst,tree,trunc,ex,this['get'+mode],r,min),place);
}else{
wikify('|'+cls+'|k\n|||||',place);
var tds=place.lastChild.getElementsByTagName('td');
wikify(this.lblTagging+'\n'+this.list(fst,tree,trunc,ex,this.getTagging,r,min),tds[0]);
wikify(this.lblTags+'\n'+this.list(fst,tree,trunc,ex,this.getTags,r,min),tds[1]);
wikify(this.lblRefs+'\n'+this.list(fst,tree,trunc,ex,this.getRefs,r,min),tds[2]);
wikify(this.lblLinks+'\n'+this.list(fst,tree,trunc,ex,this.getLinks,r,min),tds[3]);
}
},
list:function(first,asTree,trunc,ex,get,r,min){
//first: tree root tid, asTree: tree <> list, trunc: [[tids]] [[limiting]] the tree
//ex: exclude tagged tids, r: display root, min: true=min spanning tree <> false=multiple pathes for 'nodes'
//get: fct getXYZ(tiddlerObj){return arrayOfTiddlerTitles;}
// ...possibly one of getLinks, getRefs, getTags, getTagging (see below)
var out,tids=[],tree={text:''},indent='',paths=min?undefined:[];//init sublists []
tids=this.search(first,tids,tree,indent,trunc,ex,get,r,paths);//start recursion
setStylesheet(this.styles,'xploreStyles');
out= '{{xploreList{\n';
if(asTree)out+=tree.text;//when tree return tree
else if(tids.length>0)out+='[[' + tids.join(']][[')+']]';//when list, join as links
return out+'}}}';
},
search: function(tid,tids,tree,indent,trunc,ex,get,r,paths,p,fst){
//trunc, ex, get, r, paths: dito
//tid: start tid, tids: searched tids[], tree: output tree
//indent: curr indent lvl, paths: all found paths[],p: current path in paths
var t=store.getTiddler(tid);//root tid of branch
var ini=false;
var b=(paths!=undefined); //multiple paths
if(b&&p==undefined){//if so and sublist not paths
p=0;paths[p]=[];ini=true; //init pointer, sublist and store init
}
if(fst==undefined)fst=tid;//check & store fst
//return curr list, if missing, excluded via tag or already in (sub-)list
if(!t||tid==fst&&tids.length>0||t.tags.containsAny(ex)||b&&paths[p].contains(t)||!b&&tids.contains(tid))return tids;
//if not init of multiple paths or rootnode to be displayed... add to sublist
if(!ini||r){
if(b)paths[p].push(t);
tids.push(t.title); //add tiddler to results
var skip=trunc&&trunc.contains(tid); //skip when in truncated
tree.text+=indent+"[["+tid+(skip?this.skipped.format([tid]):"")+"|"+tid+"]]"+"\n";
if(skip)return tids; // branch is pruned... don't follow links
}
var links=get?get(t):this.getTagging(t);//get next level via get fct or links
//init subpaths by copying the current one
if(b)for(var i=1;i<links.length;i++)paths[p+i]=paths[p].slice(0);
for(var i=0; i<links.length; i++)//search subnodes
tids=this.search(links[i],tids,tree,indent+">",trunc,ex,get,r,paths,(p?p+i:p),fst);
return tids;//return list
},
getLinks:function(t){if(!t.linksUpdated)t.changed(); return t.links;},
getRefs:function(t){
var i,o=[],r=store.getReferringTiddlers(t.title);
for(i=0;i<r.length;i++)if(r[i].title!=t.title)o.push(r[i].title);
return o;
},
getTags:function(t){return t.tags;},
getTagging:function(t){
var o=[],l=store.getTaggedTiddlers(t.title);
for(var i=0;i<l.length;i++)if(l[i].title != t)o.push(l[i].title);
return o;
},
click:function(e){
e=e||window.event;
var p=Popup.create(this);
wikify('<<xplore first:\''+this.getAttribute('tiddler')+'\''+this.getAttribute("params")+' >>',createTiddlyElement(p,'span','xplore','xplore'));
Popup.show(p,false);
s=document.getElementById('sidebar');
if(this.getAttribute('toolbar')){p.style.left='';p.style.right=(20+(s?s.offsetWidth:0))+'px';}
e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();
return false;
}
}
//}}}
Dieses Beispiel <<xplore button:true>> wird durch folgenden Macroaufruf eingebettet...
*{{{<<xplore button:true>>}}}
Du könntest aber auch einfach einen Baum ausgeben mit...
*{{{<<xplore first:Stern mode:tree class:'noBorder wideTable'>>}}}
<<xplore first:Stern mode:tree class:'noBorder wideTable'>>
/***
<<xtab defaults:true>>
|''Name:''|x-tab|
|''Description''|a crosstable for tags|
|''Version:''|1.0|
|''Type''|macro|
|''Author:''|[[TobiasBeer]]|
|''Source:''|http://tbGTD-deutsch.tiddlyspot.com/#x-tab|
|''Documentation''|http://tbGTD-deutsch.tiddlyspot.com/#%5B%5Bx-tab%20info%5D%5D|
|''License''|[[Creative Commons Attribution-Share Alike 3.0|http://creativecommons.org/licenses/by-sa/3.0/]]|
!Code
***/
//{{{
setStylesheet('.xtabBtn{cursor:pointer}'+
'.xtab{margin:5px 0 20px 0;background:#F6F6F6;padding:10px;border:5px solid #EEE;-moz-border-radius:5px;-webkit-border-radius:5px;}'+
'.xtabFrm td{vertical-align:bottom;height:30px;margin-right:10px !important;}'+
'.xtabFrm em{margin-left:10px;font-style:normal;color:#39C;font-weight:bold;font-size:90%;}'+
'.xtabFrm input{margin-left:10px;}.xtabFrm input,.xtabFrm span{cursor:pointer;}.xtabFrm .externalLink{margin-left:10px;}'+
'.xtabFrm select{padding-right:0 !important;width:210px;cursor:pointer;float:right;}'+
'.xtabFrm xtabToggle{display:inline-block;width:65px;text-align:center;cursor:pointer;margin-right:10px;}'+
'.xtabPrv{color:#888;margin:5px 0 10px 50px;display:block;}.xtabPrv span{color:#39C;}'+
'.xtabOut {max-width:100%;overflow-y:hidden;}'+
'.viewer .xtabOut .button{margin:0;}','StyleSheetGTDxLookup');
//}}}
//{{{
config.macros.xtab={
cfg:{
//defaults: 0=taglist, 1=presetlist, 2=autodetect-config, 3=preset
defaults:['x-tab Konfiguration##Tags','x-tab Konfiguration##Vorlagen','x-tab Konfiguration##Erkennen','xtab'],
dropClass:'button',
resultTabClass:'',
miniTag:'<<tiddler scripts##miniTag with: [[%0]]>>',
addNew:true,
headRightFrom:10,
//preset identifiers
pRows:'Zeilen',
pCols:'Spalten',
pSec:'Sub',
pOps:'Optionen',
pOpAL:'ALLTAGS!',
pOpSR:'1Zeile',
pOpSC:'1Spalte',
pOpTR:'Spiegeln',
//language
info:'info',
btnShow:"x-tab",
btnHide:"schließe x-tab",
btnTip:"x-tab an / aus",
template:"Mustervorlage... ",
noTags:"Keine gültiges Tags für x-tab. ",
nOkTags:"Ungültige Tag-Liste für x-tab! '%0' konnte nicht gefunden werden.",
nOkPresets:"Ugültige Vorlagen für x-tab! '%0' konnte nicht gefunden werden.",
nOkPreset:"Ungültige x-tab Vorlage! Keine Option '%0' in der Liste '%1'. Prüfe das Tiddlerfeld oder deine Parameter.",
nOkRender:"Konnte x-tab nicht in %0 darstellen. Dom-Element existiert nicht!",
nOkDetect:"Ungültiger x-tab Parameter '%0' für 'Erkennen'!",
nOkField:"x-tab kann Feld '%0' nicht für Tiddler '%1' finden.",
nDef:"undefiniert",
P:["Vorlage:","wähle eine Vorlage","wähle Vorlage..."],
R:["Zeilen:","Wähle eine Tag-Kategorie für Zeilen","wähle Zeilen-Kategorie..."],
C:["Spalten:","Wähle eine Tag-Kategorie für Spalten","wähle Spalten-Kategorie..."],
S:["Sub:","Wähle Subkategorie für Zeilen (wähle zuerst eine Zeilen-Kategorie)","wähle Subkategorie..."],
TR:["Spiegeln","Klicke um Zeilen und Spalten zu tauschen"],
SR:["1Zeile","Benutze das Tag in 'Zeilen' oder 'Sub' direkt anstatt dessen Unterelement"],
SC:["1Spalte","Benutze das Tag in 'Spalten' direkt anstatt anstatt dessen Unterelement"],
AL:["Alle","benutze alle verfügbaren Tags für Auswahllisten"],
PT:["Muster","Blendet eine Mustervorlage ein, die du deiner Vorlagenliste hinzufügen kannst"]
},
handler:function(place,macroName,params,wikifier,paramString,tiddler){
this.cfg.drop=document.all?"▼":"▾";
var el,id,ps=paramString,b=params[0];
id=new Date().getTime()+(''+Math.random()).substr(5);
if(b&&b.toUpperCase().indexOf('BUTTON')==0){//button must be first!
el=createTiddlyButton(place,this.cfg.btnShow+this.cfg.drop,this.cfg.btnTip,this.toggle,'button xtabBtn');
jQuery(el).attr({'tiddler':b.substr(7),'params':ps,'xtabid':id});//set tiddler for button@tiddler
}else this.create(id,ps,place);
},
toggle:function(e){
var c,f,h=false; //h=hide, f=form, x=macro
x=config.macros.xtab,c=x.cfg;
f=document.getElementById('xtab'+this.getAttribute('xtabid')||'');
if(f){//form exists -> toggle
h=f.style.display!='none';
f.style.display=h?'none':'block';
}else x.create(this);
this.innerHTML=(h?c.btnShow:c.btnHide)+c.drop;
return false;
},
update:function(id){
var a1,a2,al,by,c,chk,cols,d1,d2,el,f,hc,hd,hd2='',hr,nu,o,out='',pr,rows,sc,sr,snd,t,ti,t1,t2,tr,v,v1,v2,x=config.macros.xtab,c=x.cfg;
by=function(i){return document.getElementById(i);}
f=by('xtabFrm'+id);el=by('xtabOut'+id);pr=by('xtabPrv'+id);
removeChildren(el);removeChildren(pr);
sr=by('SR'+id).checked;
sc=by('SC'+id).checked;
tr=by('TR'+id).checked;
al=by('AL'+id).checked;
snd=by('snd'+id);
cols=by('cols'+id);
rows=by('rows'+id);
d1=snd.selectedIndex>0?snd:by('rows'+id);
d2=by('cols'+id);
if(tr){v=d1;d1=d2;d2=v;}
v1=d1.selectedIndex==0?null:d1.value;
v2=d2.selectedIndex==0?null:d2.value;
if(v1&&v2){
a1=sc&&tr?[store.getTiddler(v1)]:(sr&&!tr?[store.getTiddler(v1)]:store.getTaggedTiddlers(v1));
a2=sc&&!tr?[store.getTiddler(v2)]:(sr&&tr?[store.getTiddler(v2)]:store.getTaggedTiddlers(v2));
hc='\u25bc'+v1;if(sc&&tr||sr&&!tr)hc='';
hr=v2+'\u25b6';if(sr&&tr||sc&&!tr)hr='';
hd='"""'+(hc&&hr?hc+'/ '+hr:(hc?hc:hr))+'"""';
if(a2.length>=c.headerRightFrom){hr=hr?'\u25C0'+v2:'';hd2='"""'+(hc&&hr?hr+'/ '+hc:(hc?hc:hr))+'"""';}
out='|'+c.resultTabClass+'|k\n| '+hd;
for(t2=0;t2<a2.length;t2++){
ti=a2[t2].title;
nu=c.addNew?tbGTD.nu(ti):'';
out+=' | '+nu+'<<tag [['+ti+']]>>';
}out+=(hd2!=''?'|'+hd2:'')+' |h\n';
for(t1=0;t1<a1.length;t1++){
ti=a1[t1].title;
nu=c.addNew?tbGTD.nu(ti):'';
hd='<<tag [['+ti+']]>>';
out+='| !'+nu+hd;
for(t2=0;t2<a2.length;t2++){
out+='|'
tgt=store.getTaggedTiddlers(a1[t1].title);
for(t=0;t<tgt.length;t++){
if(tgt[t].tags.contains(a2[t2].title)){
ti=tgt[t].title;out+='@@margin:0;<<tag [['+ti+']]>>'+c.miniTag.format([ti])+'@@<br />';
}
}
}
out+=(hd2!=''?'|'+hd+' ':'')+'|\n';
}
//preset template
if(by('PT'+id).checked){
chk=function(s){return s.indexOf(' ')>=0?"'"+s+"'":s;};
o=sr||sc||tr;
o=o?c.pOps+':'+
(sr?c.pOpSR:'')+
(sc?(sr?'&':'')+c.pOpSC:'')+
(tr?(sr||sc?'&':'')+c.pOpTR:''):'';
v=snd.value;v=snd.selectedIndex==0?'':v;v1=rows.value;v2=cols.value;
wikify(c.template+'@@font-weight:bold;'+(al?c.pOpAL:'')+chk(v)+' '+chk(v1)+' by '+chk(v2)+'=='+
c.pRows+':'+chk(v1)+' ' + (v?c.pSec+':'+chk(v)+' ':'') + c.pCols+':'+chk(v2)+' '+chk(o)+'@@',pr);
}
}
//create output
wikify(out,el);
},
create:function(id,ps,el,setAll){
var a,all,at,c=this.cfg,cr,cs,d,dc,dt,f,fs,gd,i,p,pls,pos,pr,prs,rt,sp,src,t,ti,tid,tids=[],td,tds,tgs=[],tmp,tls,xel=false;
if(typeof(id)=='object'){
rt=id;
tmp=id.getAttribute('tiddler');
if(tmp=='')el=story.findContainingTiddler(id);//into this tid
else{
xel=tmp.toUpperCase().indexOf('ID==')==0;
el=xel?document.getElementById(tmp.substr(4)):story.getTiddler(el);//into id or named tiddler
}
if(!el)alert(c.nOkRender.format([tmp]));
else{
tid=el.getAttribute('tiddler');
if(!xel)el=jQuery('.viewer',el)[0];//if tid, render in viewer
//get attribs
ps=id.getAttribute('params');
id=id.getAttribute('xtabid');
}
}
if(!tid){tid=story.findContainingTiddler(el);if(tid)tid=tid.getAttribute('tiddler');}
p=ps.parseParams(null,null,true);//get params
def=getParam(p,'defaults','').toUpperCase()=='TRUE';
tls=getParam(p,'taglist');if(!tls&&def&&c.defaults[0])tls=c.defaults[0];
pls=getParam(p,'presets');if(!pls&&def&&c.defaults[1])pls=c.defaults[1];
dt=getParam(p,'detect','');if(!dt&&def&&c.defaults[2])dt=c.defaults[2];
pr=getParam(p,'preset','');if(!pr&&def&&c.defaults[3])pr=c.defaults[3];
pos=getParam(p,'position','').toUpperCase();
all=pr.toUpperCase().indexOf(c.pOpAL)==0;
if(all)pr=pr.substr(c.pOpAL.length);
a=setAll||!tls||all&&setAll==undefined;
if(a){//get tags
tgs=store.getTags();
}else{
//init taglist
if(tls){
tgs=store.getTiddlerText(tls);
if(!tgs)alert(c.nOkTags.format([tls]));
else tgs=tgs.readBracketedList();
}
if(tgs.length==0&&!a)alert(c.noTags);
}
//init presets
if(pls){
prs=store.getTiddlerText(pls);
if(!prs)alert(c.nOkTags.format([pls]));
else prs=prs.split('\n');
}
dc=c.dropClass;
cr=createTiddlyElement;
if(setAll==undefined){
sp=document.createElement('span');//render container
if(pos=='FIRST')el.insertBefore(sp,el.firstChild);
else if(!xel&&rt&&pos!='LAST')el.insertBefore(sp,rt.nextSibling);
else el.appendChild(sp);
}else sp=el;
el=cr(sp,'div','xtab'+id,'xtab');//div
f=cr(el,'form','xtabFrm'+id,'xtabFrm');//form
f.setAttribute('params',ps);
wikify('|borderless|k\n|||>|\n||||\n',f);
tds=f.lastChild.getElementsByTagName('td');
td=tds[1];this.nuSel(tds[0],'presets',prs,c.P,'P',dc);
cs=[['PT','tmpl'],['TR','trans'],['SR','oner'],['SC','onec'],['AL','allt',a]];
for(i=0;i<cs.length;i++)this.nuChk(td,cs[i][0]+id,cs[i][1],c[cs[i][0]],dc,cs[i][2]);
createExternalLink(td,store.getTiddlerSlice("x-tab","Documentation"),c.info);
this.nuSel(tds[2],'rows',tgs,c.R,a?'A':'R',dc,id);
this.nuSel(tds[3],'snd',[],c.S,'S',dc,id);
this.nuSel(tds[4],'cols',tgs,c.C,a?'A':'C',dc,id);
cr(el,'div','xtabPrv'+id,'xtabPrv');
cr(el,'div','xtabOut'+id,'xtabOut');
if(pr.indexOf(':')<=0){//preset from field(@tid)
at=pr.indexOf('@');
if(at>0){
ti=pr.substr(at+1);
tid=store.getTiddler(ti);
pr=pr.substr(0,at);
if(!tid)alert(c.nOkField.format([pr,ti]));
else tid=tid.title;
}
pr=store.getValue(tid,pr);
}
if(tid&&dt&&!pr)pr=this.detect(dt,tid);//Autodetect
this.setPreset(id,pr,setAll);
return id;
},
nuChk:function(el,cid,n,t,cl,c){
var bt,cb;
cb=createTiddlyElement(el,'input',cid,null,null,{'type':'checkbox','name':n,'value':t[0]});
cb.checked=c?c:false;
cb.onclick=this.check;
bt=createTiddlyElement(el,'span',null,cl+' xtabToggle',t[0],{'title':t[1],'toggle':cid});
bt.onclick=this.check;
return(cb);
},
check:function(e){
var c,el,f,id,ns,p,x=config.macros.xtab,ps;
c=document.getElementById(this.getAttribute('toggle'));
if(c)c.checked=!c.checked;
el=c?c:this;
id=el.getAttribute('id').substr(2);
if(el.name=='allt'){
c=el.checked;f=el.form;
el=f.parentNode;p=el.parentNode;
ps=f.getAttribute('params');
removeChildren(el);p.removeChild(el);
x.create(id,ps,p,c);
}else x.update(id);
},
nuSel:function(el,n,o,t,typ,c,id){
createTiddlyElement(el,'em',null,null,t[0]);
var s=createTiddlyElement(el,'select',n+id,c,null,{'name':n,'title':t[1]});
s.onchange=this.chgSel;
this.setOpt(s,o,null,typ,t[2]);
},
setOpt:function(el,o,val,typ,title){
if(val&&el.getAttribute('cat')==val)return;
var i,l,os;
l=o?o.length:0;
os=el.options;
el.disabled=l==0;
while(os.length>1)os[os.length-1]=null;
os[0]=new Option(title,null,false,false);
if(l){
for(i=0;i<l;i++){
var t=o[i];
switch(typ){
case 'P':t=t.split('==');n=t[0];v=t[1];break;
case 'A':n=v=t[0];break;
case 'S':t=t.title;
default:n=t;v=t;
}
os[os.length]=new Option(n,v,false,false);
}
}
},
chgSel:function(e){
var x=config.macros.xtab,id=this.form.getAttribute('id').substr(7);
switch(this.name){
case 'presets':if(this.selectedIndex>0)x.setPreset(id,this.value);break;
case 'rows':x.initSecondary(id);
default:x.update(id);
}
},
initSecondary:function(id){
var s,r,tgt,v;
r=document.getElementById('rows'+id);
v=r.value;
s=document.getElementById('snd'+id);
tgt=r.selectedIndex>0?store.getTaggedTiddlers(v):[];
this.setOpt(s,tgt,v,'S',this.cfg.S[2]);
s.setAttribute('cat',v?v:'');
},
setPreset:function(id,pr,setAll){
var chk,f,l,ls,o,p,x,c=this.cfg,u=c.nDef;
if(pr){
f=document.getElementById('xtabFrm'+id);
p=pr.parseParams(null,null,false);
ls=[
['rows',getParam(p,c.pRows,u),c.pRows],
['cols',getParam(p,c.pCols,u),c.pCols],
['snd',getParam(p,c.pSec),c.pSec]
];
document.getElementById('snd'+id).selectedIndex=0;
for(l=0;l<ls.length;l++){if(ls[l][1]&&!this.chkSel(id,ls[l],f))return false;}
o=getParam(p,c.pOps,'');
x=function(n,s){document.getElementById(n+id).checked=o.indexOf(s)>=0};
x('TR',c.pOpTR);x('SR',c.pOpSR);x('SC',c.pOpSC);if(setAll==undefined)x('AL',c.pOpAT);
}
this.update(id);
},
detect:function(t,tid){
var a,d,l,n,ot,tgs,c=this.cfg;
d=store.getTiddlerText(t);
f=[c.pRows+':[[%0]] '+c.pCols+':[[%1]]',
c.pRows+':[[%0]] '+c.pCols+':[[%1]] '+c.pSec+':[[%2]] '+c.pOps+':'+c.pOpTR+'&'+c.pOpSR,
c.pRows+':[[%0]] '+c.pCols+':[[%1]] '+c.pSec+':[[%2]] '+c.pOps+':'+c.pOpTR];
if(!d)alert(c.nOkDetect.format([t]));
else{
a=d.split('\n');
while(a.length>0){
l=a.shift().readBracketedList();n=l.length;
if(tid==l[0]){
switch(n){
case 3:return f[2].format([l[0],l[1],l[2]]);
case 2:
case 4:return f[0].format([l[0],l[1]]);
}
}else{
ot=store.getTiddler(tid);
if(ot.tags.contains(l[0])){
switch(n){
case 3:return f[2].format([l[0],l[1],tid]);
case 2:
case 4:return f[1].format([l[0],l[1],tid]);
}
}
}
}
}
},
chkSel:function(id,a,f){
var c='',o,s,t,v;
s=document.getElementById(a[0]+id);v=a[1];
if(s){
o=s.options;
for(t=1;t<o.length;t++){c=o[t].value;if(v==c){s.selectedIndex=t;break;}}
}
if(v!=c){alert(this.cfg.nOkPreset.format([v,a[2]]));return false;}
if(a[0]=='rows')this.initSecondary(id);//reset secondary
return true;
}
}
//}}}
!Benutzung
Wähle am besten zunächst in [[x-tab]] eine Vorlage, beobachte was passiert und teste die Einstellungen.
!Benutzeroberfläche
| Option | Effekt |h
|''Vorlage''|Biete eine Liste vorkonfigurierter Vorlagen für x-tab.|
|''Zeilen'', ''Spalten''|Du brauchst beides für eine Kreuztabelle.|
|''Sub''|Erlaubt es, eine Ebene tiefer zu gehen, ausgehend von dem in ''Zeilen'' ausgewählten Tag.|
|''Spiegeln''|vertauscht Zeilen und Spalten|
|''1Zeile'', ''1Spalte''|Erzeugt die Tabelle direkt auf Grundlage der Tags in ''Zeilen'' oder ''Spalten'' (anstatt deren Unterelementen).|
|''Muster''|Erzeugt ein Muster einer Vorlagendefinition die in die Vorlagenliste übernommen werden kann.|
|''Alle''|Startet ''x-tab'' neu, jedoch mit allen verfügbaren Tags für die Auswahllisten ''Zeilen'' und ''Spalten''|
!!Hinweis
In [[tbGTD|http://tbGTD-deutsch.tiddlyspot.com]] erkennt [[x-tab]] automatisch die Haupt- und Unterkategorien des ~GTD-Systems und leitet davon die anzuwendende Vorlage ab. Probier's einfach aus! Gehe z.B. zum Aufgabenstatus [[#nächste]] und klicke dann in der Toolbar auf {{button{x-tab}}}.
!Macro Parameter
Du kannst [[x-tab]] in deinem TiddlyWiki einbetten mit dem Macro {{{<<xtab>>}}}.<<xtab>>Du kannst aber auch eine Schaltfläche benutzen... {{{<<xtab button preset:xtab@doesntexist>>}}} <<xtab button preset:xtab@existiert nicht>>
| Parameter | Effekt |h
|''button''|Muss der erste (!) Parameter sein und erzeugt eine Schaltfläche, z.B. in der Toolbar (siehe [[tbGtdTheme]]). Weiterhin gilt...<<tiddler [[x-tab Info##button]]>>|
|''taglist''|Eine Tagliste, um die Auswahllisten ''Zeilen'' und ''Spalten'' mit __gültigen Tags__ zu füllen. tbGTD benutzt dafür den Abschnitt ''Tags'' in [[x-tab Konfiguration]]...<<tiddler [[x-tab Info##taglist]]>>|
|''presets''|Benutze Vorlagenlisten (presets) um deine Vorlagen zu verwalten. [[tbGTD|http://tbGTD.tiddlyspot.com]] benutzt dafür den Abschnitt ''Vorlagen'' in [[x-tab Konfiguration]]...<<tiddler [[x-tab Info##presets]]>>|
|''preset''|Die ''Vorlage'', die beim Öffnen von ''xtab'' voreingestellt sein soll. Du kannst eine Vorlage in einem benutzerdefinierten Feld definieren... <<tiddler [[x-tab Info##preset]]>>|
|''detect''|Ein Tiddler oder Abschnitt mit durch Zeilenumbrüche getrennten Definitionen ausgehend von denen xtab erkennt, welche ''Vorlage'' quasi-automatisch geladen werden soll...(für fortgeschrittene Nutzer?!?)|
|''defaults''|Mit {{{defauls:true}}} werden die Werte für {{{taglist, presets, preset und detect}}} aus dem array {{{defaults}}} aus dem Deklarationsteil des Macros [[x-tab]] genommen, sofern sie dort __tatsächlich deklartiert__ sind und der Parameter nicht explizit beim Macroaufruf deklariert wurde|
|''position''|Erlaubt es zu definieren, wo ''xtab'' dargestellt werden soll... <<tiddler [[x-tab Info##position]]>>|
/%
!button
*{{{button:tiddlerName}}} erzeugt ''xtab'' in diesem Tiddler
*{{{button:ID==domElement}}} erzeugt xtab in diesem DOM Element
!position
*{{{position:first}}} am Anfang des Tiddlers oder DOM Elements
*{{{position:last}}} am Ende des Tiddlers oder DOM Elements
*''nicht definiert'': wo das Macro eingebettet ist...
!preset
*{{{preset:VorlagenDefinition}}}: eine gültige {{{VorlagenDefinition}}} für die aktuelle Konfiguration, jedoch ohne {{{Vorlagenname==}}} (!)
*{{{preset:Feld}}} benutzt den Wert von {{{Feld}}} des Tiddlers mit einer gültigen {{{Vorlagendefinition}}} {{xyzz{
Öffne dafür den ~Feld-Editor, den du findest, wenn du auf die {{button{+}}}Schaltfläche im ~Betrachten-Modus klickst. Editiere das ''Feld'' mit dem Namen {{{xtab}}} (oder welchen du definiert hast) und gib diesem Feld als Wert eine __gültige__ Vorlagendefinition ...xtab startet dann für diesem Tiddler mit der definierten Vorlage.
}}}
*{{{preset:Feld@Tiddler}}} benutze den Wert von {{{Feld}}} definiert an {{{Tiddler}}}
!presets
*{{{presets}}} ist ein Tiddler oder Abschnitt mit __gültigen__ {{{Vorlagendefinitionen}}} für die aktuelle Konfiguration getrennt durch ''Zeilenumbruch''
*__Beispieldefinition:__
**''aktuelle Projekte nach Aufgabenstatus==Zeilen:Projekt Spalten:Aufgabe Sub:$aktuell Optionen:1Spalte'' ...und im Allgemeinen:
**{{{<Alle!><Vorlagenname>==Zeilen:<Zeilen-Tag> Sub:<gültiges Unterelement von Zeilen> Spalten:<Spalten-Tag> Optionen:<Spiegeln&1Zeile&1Spalte>}}}
***''Hinweis'': Du kannst die Namen der Schlagwörter...
****{{{Zeilen, Spalten, Sub, Optionen, Spiegeln, 1Spalte, 1Zeile, Alle}}}
***...im Quellcode auf die Zielsprache anpassen
**''wichtig'': benutze die ''Muster'' Schaltfläche in [[x-tab]] um ein Beispiel einer Mustervorlage für die aktuellen Einstellungen zu sehen!
!taglist
*{{{taglist}}} ist ein Tiddler oder Abschnitt der ~Tag-Namen entweder als Werte in {{{[[eckigen]] [[Klammern]]}}} oder getrennt durch Zeilenumbruch enthält
!end%/
!Tags
[[Aufgabe]]
[[Priorität]]
[[Kontext]]
[[Projekt]]
[[Phase]]
[[$aktuell]]
[[Gruppe]]
[[Bereich]]
[[Kontakte]]
[[Journal]]
[[Stern]]
!Vorlagen
wichtige Aufgabe==Zeilen:Aufgabe Spalten:Stern Optionen:1Spalte
wichtige Projekts==Zeilen:Projekt Spalten:Stern Optionen:1Spalte
wichtige Kontakte==Zeilen:Kontakte Spalten:Stern Optionen:1Spalte
Aufgabe nach Priorität==Zeilen:Aufgabe Spalten:Priorität
Aufgabe nach Gruppe==Zeilen:Aufgabe Spalten:Gruppe
Kontext nach Aufgabe==Zeilen:Kontext Spalten:Aufgabe
Kontext nach Priorität==Zeilen:Kontext Spalten:Priorität
Kontext nach Gruppe==Zeilen:Kontext Spalten:Gruppe
Phasen nach Aufgabe==Zeilen:Phase Spalten:Aufgabe
Phasen nach Priorität==Zeilen:Phase Spalten:Priorität
Phasen nach Kontext==Zeilen:Phase Spalten:Kontext
aktuelle Projekte nach Aufgabe==Zeilen:Projekt Sub:$aktuell Spalten:Aufgabe Optionen:Spiegeln
aktuelle Projekte nach Phase==Zeilen:Projekt Sub:$aktuell Spalten:Phase Optionen:Spiegeln
aktuelle Projekte nach Kontext==Zeilen:Projekt Sub:$aktuell Spalten:Kontext Optionen:Spiegeln
aktuelle Projekte nach Priorität==Zeilen:Projekt Sub:$aktuell Spalten:Priorität Optionen:Spiegeln
zukünftige Projekte nach Kontext==Zeilen:Projekt Sub:$zukünftig Spalten:Kontext Optionen:Spiegeln
zukünftige Projekte nach Priorität==Zeilen:Projekt Sub:$zukünftig Spalten:Priorität Optionen:Spiegeln
Projekte nach Bereich==Zeilen:Projekt Spalten:Bereich
Kontakte nach Priorität==Zeilen:Kontakte Spalten:Priorität
Kontakte nach Aufgabe==Zeilen:Kontakte Spalten:Aufgabe
Kontakte nach Priorität==Zeilen:Kontakte Spalten:Priorität
Kontakte nach Kontext==Zeilen:Kontakte Spalten:Kontext
Kontakte nach Gruppe==Zeilen:Kontakte Spalten:Gruppe
!Erkennen
Aufgabe Kontext
Kontext Aufgabe
Priorität Aufgabe
Projekt Aufgabe $aktuell
Phase Aufgabe §0.kickoff Spiegeln
Gruppe Aufgabe
Bereich Projekt
Kontakte Aufgabe
/***
|''Name:''|x-tagger|
|''Version:''|1.0 (2009-11-02)|
|''Source:''|http://tbGTD.tiddlyspot.com/#x-tagger|
|''Author:''|[[TobiasBeer]]|
|''Description:''|Provides a drop down listing current tags and others to be set.|
|''~TiddlyWiki:''|Version 2.5 or better|
***/
//{{{
setStylesheet(
".xtagger li{display:block;float:left;padding-bottom:10px !important;}"+
".xtagger li ol li{padding:0 5px 5px 5px !important;clear:both;min-width:120px;display:inline;border:1px solid transparent;}"+
".xtagger li ol li:hover{border:1px solid #333;}"+
".xtagger li ol li ol li{padding:1px 0 !important;}"+
".xtagger li ol li ol li:hover{border:1px solid transparent;}"+
".xtagger li a{display:inline;font-weight:bold;}.xtagger .tiddlyLink:hover{background:transparent;}"+
".xtagger .quickopentag {width:82%;display:inline-block;}"+
".xtagger .quickopentag .tiddlyLink {display:inline;}"+
".xtagger .quickopentag .button {display:inline;border:0;padding:0 3%;text-align:center;width:10%;font-size:11px;}"+
".xtagger a.button{padding:0;}"+
".xtagger a.toggleButton {display:inline;padding:0 2px;margin-right:1px; font-size:110%;}"+
".xtagger .title {font-weight:bold;font-size:150%;color:#CCC;}","StyleSheetxTagger");
//}}}
//{{{
config.macros.xtagger={
cfg:{
mode:1,// 0 -> ask for substitution, 1 -> substitute (silent), >1 -> always add (silent)
horizontal:false,//all in one row
sidebarOffset:20,//dist from sidebar
sideWidth:'180px',//width of sides
topMarginSides:'10px',
newAt:16,//new block each
archive:'Archiv',//archive tag
excludeTags:'',
list:'true',
arrow:document.all?"▼":"▾", //only the fat works in IE
label:'Tags: ', //language settings
options:'options',
more:'more...',
tooltip:'Manage tiddler tags',
notags:'no tags set...',
aretags:'current tags',
txtRemove: 'remove tag',
txtEdit:"edit categories...",
txtEditTip:"edit tiddler with GTD tag categories used by x-tagger",
txtNew:"add another tag",
txtAdd:"add tag ",
promptNew:"Enter new tag:",
modeAsk:"Do also you want to remove tag '%1' and other tags from category '%2'?\nCancel simply adds tag '%3'."
},
handler:function(place,macroName,params,wikifier,paramString,tiddler){
var c,click,ex,lbl,list,more,p,src,tip,x;
x=config.macros.xtagger;c=x.cfg;
p=paramString.parseParams('tagman',null,true);
lbl=getParam(p,"label",c.label)+c.arrow;
tip=getParam(p,"tooltip",c.tooltip);
list=getParam(p,"taglist",c.list);
ex=getParam(p,"exclude",c.excludeTags).readBracketedList();
src=getParam(p,"source");if(src&&!store.getTiddlerText(src))return false;
more=getParam(p,"more",'');
click=function(e){
e=e||window.event;
var ar,d1,d2,i,curr,nuBtns,nuLi,m,max=nu=c.newAt,pop,s,t,tags=[],tids,tgt;
pop=Popup.create(this);
addClass(pop,'xtagger');
if(src){//mod tb:different method for source tiddler
tids=store.getTiddlerText(src).readBracketedList();
for(t=0;t<tids.length;t++){
tgt=store.getTaggedTiddlers(tids[t]);
tags.push('TAG:'+tids[t]);
for(s=0;s<tgt.length;s++)tags.push(tgt[s].title);
}
}else tags=store.getTags();
curr=tiddler.tags.sort();
nuLi=function(p){return createTiddlyElement(createTiddlyElement(p,"li",null,null),"ol",null,null);}
nuBtns=function(where,text,tag,pref){
var s,t;
s=createTiddlyElement(createTiddlyElement(where,"li"),"span",null,null);
t=createTiddlyButton(s,text,pref+" '"+tag+"'",x.setTag,"button toggleButton", null);
t.setAttribute("tiddler",tiddler.title);
t.setAttribute("tag",tag);
t.setAttribute("source",src);
insertSpacer(s);
if(window.createTagButton_orig_mptw)createTagButton_orig_mptw(s,tag);
else createTagButton(s,tag);
}
d1=nuLi(pop);d2=nuLi(d1);if(c.topMarginSides)d1.style.marginTop=c.topMarginSides;
createTiddlyElement(d2,"li",null,"title",(tiddler.tags.length==0?c.notags:c.aretags));
for(t=0;t<curr.length;t++)nuBtns(d2,"[x]",curr[t],c.txtRemove);
if(c.sideWidth)jQuery('li',d1).css('min-width',c.sideWidth);
if(list!='false'){
for(i=0;i<tags.length;i++){
var ti=tags[i];nu++;
if(ti.indexOf('TAG:')==0){ti=ti.substr(4);
if(nu>max||c.horizontal){nu=0;d1=nuLi(pop);}d2=nuLi(d1);
createTiddlyLink(createTiddlyElement(d2,"li",null,null),ti,ti,'title');
}
else if(!tiddler.tags.contains(ti)&&!ex.contains(ti))nuBtns(d2,"["+String.fromCharCode(160,160)+"]",ti,c.txtAdd);
}
}
//options
d1=nuLi(pop);d2=nuLi(d1);createTiddlyElement(d2,'li',null,'title',c.options);
if(c.topMarginSides)d1.style.marginTop=c.topMarginSides;
var newBtn=createTiddlyButton(createTiddlyElement(d2,"li"),(c.txtNew),null,x.setTag);
newBtn.setAttribute("tiddler",tiddler.title);
var edit=createTiddlyButton(createTiddlyElement(d2,"li"),c.txtEdit,c.txtEditTip,onClickTiddlerLink);
edit.setAttribute("tiddlyLink",src.split('##')[0]);
//archive
ti=c.archive;
if(ti){
d2=nuLi(d1);createTiddlyLink(createTiddlyElement(d2,"li",null,null),ti,ti,'title');
ar=store.getTaggedTiddlers(ti);
for(i=0;i<ar.length;i++){var ti=ar[i].title;
if(!tiddler.tags.contains(ti)&&!ex.contains(ti))nuBtns(d2,"["+String.fromCharCode(160,160)+"]",ti,c.txtAdd);
}
}
//more
m=store.getTiddlerText(more).readBracketedList();
if(m.length>0){
d2=nuLi(d1);createTiddlyElement(d2,'li',null,'title',c.more);
for(i=0;i<m.length;i++){var ti=m[i];
if(!tiddler.tags.contains(ti)&&!ex.contains(ti))nuBtns(d2,"["+String.fromCharCode(160,160)+"]",ti,c.txtAdd);
}
}
if(c.sideWidth)jQuery('li',d1).css('min-width',c.sideWidth);
Popup.show(pop,false);
s=document.getElementById('sidebar');
pop.style.left='';pop.style.right=(c.sidebarOffset+(s?s.offsetWidth:0))+'px';
e.cancelBubble=true;
if(e.stopPropagation)e.stopPropagation();
return false;
}
createTiddlyButton(place,lbl,tip,click,"button","xtaggerDrop");
},
setTag:function(e){
var nu,r,s,src,t,tag,ti,tid,title,c=config.macros.xtagger.cfg;
title=this.getAttribute("tiddler");
src=this.getAttribute("source");
tag=this.getAttribute("tag");
tid=store.getTiddler(title);
if(!tag){nu=prompt(c.promptNew,"");if(!nu)return false;else tag=nu;}
if(!tid||!tid.tags)store.saveTiddler(title,title,'',config.options.txtUserName,new Date(),tag);
else{
if(!tid.tags.contains(tag)){
if(store.getTiddlerText(src)){
if(c.mode<2){
var cats=store.getTiddlerText(src).readBracketedList();
findTagged: for(t=0;t<cats.length;t++){
ti=cats[t];
var tgt=store.getTaggedTiddlers(ti);
for(s=0;s<tgt.length;s++){
if(tgt[s].title==tag){
for(r=0;r<tgt.length;r++){
if(tid.tags.contains(tgt[r].title)){
var ok;
if(c.mode==0&&!ok){
if(!confirm(c.modeAsk.replace(/%1/,tgt[r].title).replace(/%2/,ti).replace(/%3/,tag)))break findTagged;
ok=true;
}
store.setTiddlerTag(title,false,tgt[r].title);
}
}
break findTagged;
}
}
}
}
}
tid.tags.push(tag);
}
else if(!nu){store.setTiddlerTag(title,false,tag);}
story.saveTiddler(title);
}
story.refreshTiddler(title,null,true);
return false;
}
}
window.onClickTag=function(e){
if(!e)var e=window.event;
var nested=true;
var tgt=resolveTarget(e);
var cw=document.getElementById("contentWrapper");
while(tgt!= null){if(cw==tgt)nested=false;tgt=tgt.parentNode;}
if((Popup.stack.length>1)&&nested)Popup.removeFrom(1);
else if(Popup.stack.length>0 && nested==false)Popup.removeFrom(0);
var theId=(nested==false)?"popup":"nestedtagger";
var pop=createTiddlyElement(document.body,"ol",theId,"popup",null);
Popup.stack.push({root:this,popup:pop});
var tag=this.getAttribute("tag");
var title=this.getAttribute("tiddler");
if(pop&&tag){
var tgt=store.getTaggedTiddlers(tag);
var titles=[];
for(var r=0;r<tgt.length;r++)if(tgt[r].title!=title)titles.push(tgt[r].title);
var lingo=config.views.wikified.tag;
if(titles.length>0){
var openAll=createTiddlyButton(createTiddlyElement(pop,"li"),lingo.openAllText.format([tag]),lingo.openAllTooltip,onClickTagOpenAll);
openAll.setAttribute("tag",tag);
createTiddlyElement(createTiddlyElement(pop,"li"),"hr");
for(r=0; r<titles.length; r++)createTiddlyLink(createTiddlyElement(pop,"li"),titles[r],true);
}else{createTiddlyText(createTiddlyElement(pop,"li",null,"disabled"),lingo.popupNone.format([tag]));}
if(this.getAttribute('showOpenTag')){
createTiddlyElement(createTiddlyElement(pop,"li"),"hr");
var h=createTiddlyLink(createTiddlyElement(pop,"li"),tag,false);
createTiddlyText(h,lingo.openTag.format([tag]));
}
}
Popup.show(pop,false);
e.cancelBubble=true;
if(e.stopPropagation)e.stopPropagation();
return(false);
}
//}}}
!Hinweise
Die Abschnitte hierüber definieren die Kategorien die von x-tagger verwendet werden. Diese Tags werden auch vom [[Hauptmenü|MainMenu]] verwendet. Wenn ein Element weiter unten eins weiter oben als Tag hat wird es vom [[Hauptmenü|MainMenu]] ignoriert, z.B. §aktuell. Tags im Abschnitt ''More'' erscheinen im Abschnitt 'Mehr...' in [[x-tagger]]. Weitere Einstellungen können am Anfang des nun folgenden Quellcodes vorgenommen werden.
!Tags
[[Aufgabe]]
[[Priorität]]
[[Kontext]]
[[Projekt]]
[[Phase]]
[[$aktuell]]
[[Gruppe]]
[[Bereich]]
[[Kontakte]]
!More
[[Hilfe]]
[[Journal]]
[[Referenz]]
[[systemConfig]]
[[systemConfigDisable]]
[[excludeLists]]
[[excludeMissing]]
[[excludeSearch]]
[[noCloud]]
/***
!Anpassungen für deutsche Übersetzung:
*Alle Basis-Tiddler für tbGTD
!Weiter unten in diesem Script, Anpassungen für
*[[TiddlersBarPlugin]]
*[[TagglyTaggingPlugin]]
*[[TagCloudMacro]]
*[[ToggleSideBarTB]]
*[[SimpleSearch]]
*[[ReminderMacros]] mod
*[[CalendarPlugin]] mod
*[[DatePlugin]] mod
*[[PrettyDatesPlugin]] im Quelltext
*[[NewHerePlugin]] im Quelltext
*[[TableOfContentsPlugin]] im Quelltext
*[[GotoPlugin]] im Quelltext
*[[QuickNotes]]
*[[x-tagger]]
*[[x-plore]]
*[[x-tab]]
***/
//{{{
//Grundlage: GermanTranslation2.5a für TiddlyWiki von www.karadeniz.de/tiddlywiki
var c=config,cc=c.commands,cm=c.macros,cmg=c.messages,cv=c.views,cl=c.macros.list,cve=cv.editor;
if(c.options.txtUserName == "YourName")c.options.txtUserName="DeinName";
merge(c.tasks,{
save:{text:"speichern", tooltip:"Änderungen speichern", action: saveChanges},
sync:{text:"synchronisieren", tooltip:"Änderungen synchronisieren", content:'<<sync>>'},
importTask:{text:"importieren", tooltip:"Import von anderen Servern", content:'<<importTiddlers>>'},
tweak:{text:"optimieren", tooltip:"Einstellungen und Erscheinungsbild", content:'<<options>>'},
upgrade:{text:"upgraden", tooltip:"TiddlyWiki aktualisieren", content:'<<upgrade>>'},
plugins:{text:"Plugins", tooltip:"Installierte Plugins", content:'<<plugins>>'}});
//Options-Panel & Cookies
merge(c.optionsDesc,{
txtUserName:"Dein Benutzername zum Unterzeichnen Deiner Einträge",
chkRegExpSearch:"Suche mit regulären Ausdrücken",
chkCaseSensitiveSearch:"Groß-/Kleinschreibung bei Suche beachten",
chkIncrementalSearch:"Inkrementelle Suche",
chkAnimate:"Animationen aktivieren",
chkSaveBackups:"Beim Speichern ein Backup erstellen",
chkAutoSave:"Automatisch speichern",
chkGenerateAnRssFeed:"RSS-Feed beim Speichern erzeugen",
chkSaveEmptyTemplate:"Leere Vorlage beim Speichern erzeugen",
chkOpenInNewWindow:"Externe Links in einem neuen Fenster öffnen",
chkToggleLinks:"Klick auf geöffnete Tiddler lässt diese schließen",
chkHttpReadOnly:"Bearbeitungsfunktionen ausblenden, wenn Zugriff via HTTP",
chkForceMinorUpdate:"Bearbeitungen als kleine Änderungen mit Beibehaltung von Datum und Zeit behandeln",
chkConfirmDelete:"Löschen von Tiddlern vorher bestätigen",
chkInsertTabs:"Tabulatortaste für Tabulatorzeichen verwenden, anstatt zum nächsten Feld zu springen",
txtBackupFolder:"Backupverzeichnis:",
txtMaxEditRows:"Maximale Anzahl Zeilen für Bearbeitungstextfeld:",
txtFileSystemCharSet:"Standard-Zeichensatz beim Speichern von Änderungen (nur Firefox/Mozilla)"});
merge(cmg,{
customConfigError:"Fehler beim Laden von Plugins. Siehe PluginManager für Details",
pluginError:"Fehler: %0",
pluginDisabled:"Nicht ausgeführt, da durch 'systemConfigDisable'-Tag deaktiviert",
pluginForced:"Ausgeführt, da durch 'systemConfigForce'-Tag erzwungen",
pluginVersionError:"Nicht ausgeführt. Plugin erfordert eine neuere Version von TiddlyWiki.",
nothingSelected:"Nichts ausgewählt. Du musst zuerst ein oder mehrere Elemente auswählen",
savedSnapshotError:"Es scheint, dass dieses TiddlyWiki inkorrekt gespeichert wurde. Besuche bitte http://www.tiddlywiki.com/#Download für Details",
subtitleUnknown:"(unbekannt)",
undefinedTiddlerToolTip:"Der Tiddler '%0' existiert noch nicht",
shadowedTiddlerToolTip:"Der Tiddler '%0' existiert noch nicht, hat aber einen vordefinierten Standardeintrag",
tiddlerLinkTooltip:"%0 - %1, %2",
externalLinkTooltip:"Externer Link zu %0",
noTags:"Es gibt keine Tiddler mit diesem Tag",
notFileUrlError:"Zum speichern der Änderungen musst du zunächst dieses TiddlyWiki in eine Datei speichern.",
cantSaveError:"Änderungen können nicht gespeichert werden. Mögliche Gründe:\n- Dein Browser unterstützt das Abspeichern nicht (Firefox, Internet Explorer, Safari und Opera können dies mit richtiger Konfiguration)\n- Der Pfadname zu Deinem TiddlyWiki enthält ungültige Zeichen\n- Die TiddlyWiki-HTML-Datei wurde verschoben oder umbenannt",
invalidFileError:"Die originale Datei '%0' scheint kein gültiges TiddlyWiki zu sein",
backupSaved:"Backup gespeichert",
backupFailed:"Fehler beim Speichern des Backup",
rssSaved:"RSS-Feed gespeichert",
rssFailed:"Fehler beim Speichern des RSS-Feed",
emptySaved:"Leere Vorlage gespeichert",
emptyFailed:"Fehler beim Speichern der leeren Vorlage",
mainSaved:"TiddlyWiki-Datei gespeichert",
mainFailed:"Fehler beim Speichern der TiddlyWiki-Datei. Deine Änderungen wurden nicht gespeichert",
macroError:"Fehler im Makro <<\%0>>",
macroErrorDetails:"Fehler beim Ausführen von Makro <<\%0>>:\n%1",
missingMacro:"Kein entsprechendes Makro vorhanden",
overwriteWarning:"Ein Tiddler namens '%0' existiert bereits. Wähle OK zum Überschreiben",
unsavedChangesWarning:"WARNUNG! Ungespeicherte Änderungen im TiddlyWiki vorhanden\n\nWählen OK zum Speichern\nWähle ABBRECHEN/CANCEL zum Verwerfen",
confirmExit:"--------------------------------\n\nUngespeicherte Änderungen im TiddlyWiki vorhanden. Wenn du fortfährst, wirst du diese Änderungen\n\n--------------------------------",
saveInstructions:"SaveChanges",
unsupportedTWFormat:"Nicht unterstütztes TiddlyWiki-Format '%0'",
tiddlerSaveError:"Fehler beim Speichern von Tiddler '%0'",
tiddlerLoadError:"Fehler beim Laden von Tiddler '%0'",
wrongSaveFormat:"Speichern im Speicherformat '%0' nicht möglich. Standardformat zum Speichern wird verwendet.",
invalidFieldName:"Ungültiger Dateiname %0",
fieldCannotBeChanged:"Feld '%0' kann nicht geändert werden",
loadingMissingTiddler:"Es wird versucht, den Tiddler '%0' vom Server '%1' bei\n\n'%2' in '%3' abzurufen",
upgradeDone:"Das Upgrade auf Version %0 ist fertig.\n\nKlicke auf 'OK' zum Neuladen des aktualisierten TiddlyWiki"
});
merge(cmg.messageClose,{
text:"schließen",
tooltip:"diesen Textbereich schließen"});
merge(cmg.backstage,{
open:{text:"Backstage", tooltip:"Backstage-Bereich für Administrationsaufgaben anzeigen"},
close:{text:"schließen", tooltip:"Backstage-Bereich schließen"},
prompt:"Backstage:",
decal:{edit:{text:"bearbeiten", tooltip:"Den Tiddler '%0' bearbeiten"}}});
merge(cmg.listView,{
tiddlerTooltip:"Klick für den vollen Text dieses Tiddlers",
previewUnavailable:"(Vorschau nicht vorhanden)"});
merge(cmg.sizeTemplates,[
{unit: 1024*1024*1024, template:"%0\u00a0GB"},
{unit: 1024*1024, template:"%0\u00a0MB"},
{unit: 1024, template:"%0\u00a0KB"},
{unit: 1, template:"%0\u00a0B"}]);
merge(cmg.dates,{
months:["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November","Dezember"],
days:["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
shortMonths:["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
shortDays:["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
daySuffixes:[".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".","."],
am:"am",
pm:"pm"});
merge(cv.wikified,{
defaultText:"Der Tiddler '%0' existiert noch nicht. Doppelklicken zum Erstellen",
defaultModifier:"(fehlt)",
shadowModifier:"(vordefinierter System-Tiddler)",
dateFormat:"DD. MMM YYYY",
createdPrompt:"erstellt"});
merge(cv.wikified.tag,{
labelNoTags:"keine Tags",
labelTags:"Tags:",
openTag:"Öffne Tag '%0'",
tooltip:"Zeige Tiddler mit Tags '%0'",
openAllText:"Öffne alle",
openAllTooltip:"Alle diese Tiddler öffnen",
popupNone:"Keine anderen Tiddler mit '%0' getaggt"});
merge(cve,{
tagPrompt:"Gib die Tags durch Leerzeichen getrennt ein und [[benutze doppelte eckige Klammern]] wenn nötig, oder wähle vorhandene aus",
defaultText:"Gib den Text für '%0' ein"});
merge(cve.tagChooser,{
text:"Tags",
tooltip:"Wähle vorhandene Tags zum Hinzufügen zu diesem Tiddler aus",
popupNone:"Es sind keine Tags definiert",
tagTooltip:"Tag '%0' hinzufügen"});
merge(cm.search,{
label:"suchen",
prompt:"Dieses TiddlyWiki durchsuchen",
successMsg:"%0 Tiddler gefunden, die %1 enthalten",
failureMsg:"Keine Tiddler gefunden, die %0 enthalten"});
merge(cm.tagging,{
label:"Tagging:",
labelNotTag:"kein Tagging",
tooltip:"Liste der Tiddler, die Tag '%0' haben"});
merge(cm.timeline,{
dateFormat:"DD. MMM YYYY"});
merge(cm.allTags,{
tooltip:"Tiddler anzeigen, die '%0' als Tag haben",
noTags:"Keine Tiddler mit Tag vorhanden"});
merge(cm.closeAll,{
label:"alle schließen",
prompt:"Alle angezeigten Tiddler schließen (außer denen in Bearbeitung)"});
merge(cm.permaview,{
label:"Permalink",
prompt:"Erzeugt eine URL, die auf alle offenen Tiddler verweist"});
merge(cm.saveChanges,{
label:"Änderungen speichern",
prompt:"Alle Änderungen speichern",
accessKey:"S"});
merge(cm.newTiddler,{
label:"Neuer Tiddler",
prompt:"Neuen Tiddler erstellen",
title:"Neuer Tiddler",
accessKey:"N"});
merge(cm.newJournal,{
label:"Neuer Journaleintrag",
prompt:"Neuen Tiddler mit aktuellem Datum und aktueller Zeit erstellen",
accessKey:"J"});
merge(cm.options,{
wizardTitle:"Erweiterte Optionen verändern",
step1Title:"Diese Optionen werden mit Cookies in Deinem Browser gespeichert",
step1Html:"<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Unbekannte Optionen anzeigen</input>",
unknownDescription:"//(unbekannt)//",
listViewTemplate:{
columns: [
{name:'Option', field:'option', title:"Option", type:'String'},
{name:'Description', field:'description', title:"Beschreibung", type:'WikiText'},
{name:'Name', field:'name', title:"Name", type:'String'}],
rowClasses: [{className:'lowlight', field:'lowlight'}]}});
merge(cm.plugins,{
wizardTitle:"Plugins verwalten",
step1Title:"Aktuell geladene Plugins",
step1Html:"<input type='hidden' name='markList'></input>",
skippedText:"(Dieses Plugin wurde nicht ausgeführt, da es nach dem Start hinzugefügt wurde)",
noPluginText:"Es sind keine Plugins installiert",
confirmDeleteText:"Willst du wirklich folgende Plugins löschen:\n\n%0",
removeLabel:"systemConfig-Tag entfernen",
removePrompt:"systemConfig-Tag entfernen",
deleteLabel:"löschen",
deletePrompt:"Diese Tiddler endgültig löschen",
listViewTemplate:{
columns: [
{name:'Selected', field:'Selected', rowName:'title', type:'Selector'},
{name:'Tiddler', field:'tiddler', title:"Tiddler", type:'Tiddler'},
{name:'Description', field:'desc', title:"Beschreibung", type:'String'},
{name:'Size', field:'size', tiddlerLink:'size', title:"Grösse", type:'Size'},
{name:'Forced', field:'forced', title:"Erzwungen", tag:'systemConfigForce', type:'TagCheckbox'},
{name:'Disabled', field:'disabled', title:"Deaktiviert", tag:'systemConfigDisable', type:'TagCheckbox'},
{name:'Executed', field:'executed', title:"Geladen", type:'Boolean', trueText:"Ja", falseText:"Nein"},
{name:'Startup Time', field:'startupTime', title:"Startzeit", type:'String'},
{name:'Error', field:'error', title:"Status", type:'Boolean', trueText:"Fehler", falseText:"OK"},
{name:'Log', field:'log', title:"Log", type:'StringList'}],
rowClasses: [
{className:'error', field:'error'},
{className:'warning', field:'warning'}]}});
merge(cm.toolbar,{
moreLabel:"mehr",
morePrompt:"Weitere Funktionen anzeigen"});
merge(cm.refreshDisplay,{
label:"aktualisieren",
prompt:"Gesamte Ansicht aktualisieren"});
merge(cm.importTiddlers,{
readOnlyWarning:"Kann nicht in schreibgeschützte Datei importieren. Du musst die Datei lokal öffnen.",
wizardTitle:"Tiddler aus anderer Datei oder anderem Server importieren",
step1Title:"Schritt 1: Server oder Datei suchen",
step1Html:"Typ des Servers auswählen: <select name='selTypes'><option value=''>Wählen...</option></select><br>URL oder Pfadnamen eingeben: <input type='text' size=50 name='txtPath'><br>...oder nach einer Datei browsen: <input type='file' size=50 name='txtBrowse'><br><hr>...oder einen vordefinierten Feed auswählen: <select name='selFeeds'><option value=''>Wählen...</option></select>",
openLabel:"öffnen",
openPrompt:"Verbindung zu diesem TiddlyWiki starten",
openError:"Beim Versuch, die TiddlyWiki-Datei zu öffnen, gab es Probleme",
statusOpenHost:"Verbindung zum Host starten",
statusGetWorkspaceList:"Liste wird abgerufen",
step2Title:"Schritt 2: Auswahl",
step2Html:"Namen eingeben: <input type='text' size=50 name='txtWorkspace'><br>...oder auswählen: <select name='selWorkspace'><option value=''>Wählen...</option></select>",
cancelLabel:"abbrechen",
cancelPrompt:"Diesen Import abbrechen",
statusOpenWorkspace:"Wird geöffnet",
statusGetTiddlerList:"Abrufen der Liste",
errorGettingTiddlerList:"Fehler beim Abrufen der Tiddler-Liste, klicke auf ABBRECHEN/CANCEL, um es nochmal zu probieren",
step3Title:"Schritt 3: Zu importierende Tiddler auswählen",
step3Html:"<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Links dieser Tiddler zum Server erhalten, um nachfolgende Änderungen synchronisieren zu können</input><br><input type='checkbox' checked='false' name='chkSave'>Speichern der Details dieses Servers in einem 'systemServer'Tiddler namens:</input> <input type='text' size=25 name='txtSaveTiddler'>",
importLabel:"importieren",
importPrompt:"Diese Tiddler importieren",
confirmOverwriteText:"Willst du wirklich folgende Tiddler überschreiben:\n\n%0",
step4Title:"Schritt 4: Importieren von %0 Tiddler",
step4Html:"<input type='hidden' name='markReport'></input>",
doneLabel:"Erledigt",
donePrompt:"Diesen Assistenten schliessen",
statusDoingImport:"Tiddler werden importiert",
statusDoneImport:"Alle Tiddler importiert",
systemServerNamePattern:"%2 auf %1",
systemServerNamePatternNoWorkspace:"%1",
confirmOverwriteSaveTiddler:"Tiddler '%0' existiert bereits. Klicke 'OK' um ihn zu überschreiben, oder 'Abbrechen', um ihn unverändert zu lassen",
serverSaveTemplate:"|''Eingabe:''|%0|\n|''URL:''|%1|\n|''Workspace:''|%2|\n\nDieser Tiddler wurde automatisch erstellt, um Details dieses Servers aufzuzeichnen",
serverSaveModifier:"(System)",
listViewTemplate:{
columns:[
{name:'Selected', field:'Selected', rowName:'title', type:'Selector'},
{name:'Tiddler', field:'tiddler', title:"Tiddler", type:'Tiddler'},
{name:'Size', field:'size', tiddlerLink:'size', title:"Grösse", type:'Size'},
{name:'Tags', field:'tags', title:"Tags", type:'Tags'}],
rowClasses: []}});
merge(cm.upgrade,{
wizardTitle:"TiddlyWiki aktualisieren",
step1Title:"Update oder Reparatur dieses TiddlyWiki auf die aktuelle Version",
step1Html:"Du bist dabei, auf die aktuelle TiddlyWiki-Version zu aktualisieren (von <a href='%0' class='externalLink' target='_blank'>%1</a>). Deine Inhalte werden während dem Upgrade erhalten bleiben.<br><br>Bitte beachte dabei, dass Updates mit älteren Plugins kollidieren können. Wenn Du Probleme mit der aktualisierten Datei beobachtest, besuche bitte <a href='http://www.tiddlywiki.org/wiki/CoreUpgrades' class='externalLink' target='_blank'>http://www.tiddlywiki.org/wiki/CoreUpgrades</a>",
errorCantUpgrade:"Aktualisieren dieses TiddlyWiki nicht möglich. Du kannst nur lokal abgespeicherte TiddlyWiki-Dateien aktualisieren",
errorNotSaved:"Du musst vor der Aktualisierung zunächst Deine Änderungen speichern",
step2Title:"Details der Aktualisierung bestätigen",
step2Html_downgrade:"Du bist dabei, Dein TiddlyWiki von Version %1 auf Version %0 abzustufen.<br><br>Dies wird nicht empfohlen.",
step2Html_restore:"Dieses TiddlyWiki scheint bereits die aktuelle Version (%0) einzusetzen.<br><br>Setze die Aktualisierung nur fort, um sicherzustellen, dass Dein TiddlyWiki nicht beschädigt ist.",
step2Html_upgrade:"Du bist dabei, von Version %1 auf die Version %0 zu aktualisieren",
upgradeLabel:"aktualisieren",
upgradePrompt:"Vorbereiten der Aktualisierung",
statusPreparingBackup:"Backup vorbereiten",
statusSavingBackup:"Backup-Datei wird gespeichert",
errorSavingBackup:"Ein Problem mit dem Speichern der Backup-Datei ist aufgetreten",
statusLoadingCore:"Basiscode laden",
errorLoadingCore:"Fehler beim Laden des Basiscodes",
errorCoreFormat:"Fehler im neuen Basiscode",
statusSavingCore:"Neuen Basiscode speichern",
statusReloadingCore:"Basiscode neu laden",
startLabel:"starten",
startPrompt:"Aktualisierung starten",
cancelLabel:"abbrechen",
cancelPrompt:"Aktualisierung abbrechen",
step3Title:"Aktualisierung abgebrochen",
step3Html:"Du hast die Aktualisierung abgebrochen"});
merge(cm.sync,{
listViewTemplate:{
columns: [
{name:'Selected', field:'selected', rowName:'title', type:'Selector'},
{name:'Tiddler', field:'tiddler', title:"Tiddler", type:'Tiddler'},
{name:'Server Type', field:'serverType', title:"Server-Typ", type:'String'},
{name:'Server Host', field:'serverHost', title:"Server-Host", type:'String'},
{name:'Server Workspace', field:'serverWorkspace', title:"Server-Arbeit-space", type:'String'},
{name:'Status', field:'status', title:"Status der Synchronisation", type:'String'},
{name:'Server URL', field:'serverUrl', title:"Server-URL", text:"View", type:'Link'}],
rowClasses: [],
buttons: [{caption:"Diese Tiddler synchronisieren", name:'sync'}]},
wizardTitle:"Mit externen Servern oder Dateien synchronisieren",
step1Title:"Wähle die Tiddler aus, die Du synchronisieren möchtest",
step1Html:'<input type="hidden" name="markList"></input>',
syncLabel:"synchronisieren",
syncPrompt:"Diese Tiddler synchronisieren",
hasChanged:"Veränderte Version auf Server",
hasNotChanged:"Unveränderte Version auf Server",
syncStatusList:{
none:{text:"...", display:null, className:'notChanged'},
changedServer:{text:"Auf dem Server geändert", display:null, className:'changedServer'},
changedLocally:{text:"Verändert während offline", display:null, className:'changedLocally'},
changedBoth:{text:"Verändert auf dem Server während offline", display:null, className:'changedBoth'},
notFound:{text:"Auf dem Server nicht gefunden", display:null, className:'notFound'},
putToServer:{text:"Aktualisierung auf dem Server gespeichert", display:null, className:'putToServer'},
gotFromServer:{text:"Aktualisierung vom Server abgerufen", display:null, className:'gotFromServer'}
}});
merge(cm.annotations,{});
cl.all.prompt="Alle Tiddler in alphabetischer Reihenfolge";
cl.missing.prompt="Tiddler, die nicht existieren, auf die aber verwiesen wird";
cl.orphans.prompt="Tiddler, auf die nicht verwiesen wird";
cl.shadowed.prompt="Tiddler, für die Standardeinträge existieren";
cl.touched.prompt="Tiddler, die lokal verändert wurden";
merge(cc.closeTiddler,{
text:"schließen",
tooltip:"Diesen Tiddler schließen"});
merge(cc.closeOthers,{
text:"andere schließen",
tooltip:"Alle anderen Tiddler schließen"});
merge(cc.editTiddler,{
text:"bearbeiten",
tooltip:"Diesen Tiddler bearbeiten",
readOnlyText:"betrachten",
readOnlyTooltip:"Quellcode dieses Tiddlers betrachten"});
merge(cc.saveTiddler,{
text:"fertig",
tooltip:"Änderungen an diesem Tiddler speichern"});
merge(cc.cancelTiddler,{
text:"abbrechen",
tooltip:"Änderungen an diesem Tiddler verwerfen",
warning:"Willst du wirklich Änderungen in '%0' verwerfen?",
readOnlyText:"fertig",
readOnlyTooltip:"Diesen Tiddler normal anzeigen"});
merge(cc.deleteTiddler,{
text:"löschen",
tooltip:"Diesen Tiddler löschen",
warning:"Willst du '%0' wirklich löschen?"});
merge(cc.permalink,{
text:"Link",
tooltip:"permanenten link für diesen Tiddler"});
merge(cc.references,{
text:"Referenzen",
tooltip:"Alle Tiddler zeigen, die auf diesen verweisen",
popupNone:"Keine Referenzen"});
merge(cc.jump,{
text:"springen",
tooltip:"Zu anderem, geöffneten Tiddler springen"});
merge(cc.syncing,{
text:"sync",
tooltip:"Diesen Tiddler mit einem Server oder einer externen Datei synchronisieren",
currentlySyncing:"<div>Synchronisieren läuft mit <span class='popupHighlight'>'%0'</span> zu:</"+"div><div>Host: <span class='popupHighlight'>%1</span></"+"div><div>Workspace: <span class='popupHighlight'>%2</span></"+"div>",
notCurrentlySyncing:"Derzeit keine Synchronisierung",
captionUnSync:"Synchronisierung dieses Tiddlers stoppen",
chooseServer:"Diesen Tiddler mit anderem Server synchronisieren:",
currServerMarker:"\u25cf ",
notCurrServerMarker:" "});
merge(cc.fields,{
text:"Felder",
tooltip:"Erweiterte Felder dieses Tiddlers anzeigen",
emptyText:"Keine erweiterten Felder für diesen Tiddler vorhanden",
listViewTemplate:{
columns:[
{name:'Field', field:'field', title:"Feld", type:'String'},
{name:'Value', field:'value', title:"Wert", type:'String'}],
rowClasses:[],
buttons:[]}});
merge(c.shadowTiddlers,{
DefaultTiddlers:"[[GettingStarted]]",
MainMenu:"[[GettingStarted]]",
SiteTitle:"TiddlyWiki",
SiteSubtitle:"ein wiederverwendbares und vielseitiges Notizbuch",
SiteUrl:"http://www.tiddlywiki.com/",
SideBarOptions:'<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "0DD. MMM YYYY" "Journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "Optionen \u00bb" "TiddlyWiki Optionen ändern">>',
SideBarTabs:'<<tabs txtMainTab "Zeitachse" "Zeitachse" TabTimeline "Alles" "Alle Tiddler" TabAll "Tags" "Tags" TabTags "Mehr" "Weitere Listen" TabMore>>',
TabMore:'<<tabs txtMoreTab "Fehlend" "Fehlende Tiddler" TabMoreMissing "Waisen" "Verwaiste Tiddler" TabMoreOrphans "Standard" "vordefinierte System-Tiddler" TabMoreShadowed>>'
});
merge(c.annotations,{
AdvancedOptions:"Dieser System-Tiddler zeigt erweiterte Optionen",
ColorPalette:"Diese Werte in diesem System-Tiddler legen das Farbschema von TiddlyWiki fest",
DefaultTiddlers:"Die in diesem System-Tiddler aufgelisteten Tiddler werden automatisch beim Start angezeigt",
EditTemplate:"Die HTML-Vorlage in diesem System-Tiddler legt das Aussehen von Tiddler während Deiner Bearbeitung fest",
GettingStarted:"Dieser System-Tiddler bietet eine einfache Bedienungsanleitung",
ImportTiddlers:"Dieser System-Tiddler ermöglicht das Importieren neuer Tiddler",
MainMenu:"Dieser System-Tiddler ist das Hauptmenü auf der Seite",
MarkupPreHead:"Dieser Tiddler wird am Anfang des Kopfes der HTML-Datei eingefügt (<head>)",
MarkupPostHead:"Dieser Tiddler wird am Ende des Kopfes der HTML-Datei eingefügt (<head>)",
MarkupPreBody:"Dieser Tiddler wird am Anfang des Rumpfes (<body>) der HTML-Datei eingefügt",
MarkupPostBody:"Dieser Tiddler wird am Ende des Rumpfes (<body>) der HTML-Datei unmittelbar nach dem Scriptblock eingefügt",
OptionsPanel:"Dieser System-Tiddler enthält das einblendbare Optionsfeld der rechten Seitenleiste",
PageTemplate:"Die HTML-Vorlage in diesem System-Tiddler legt das allgemeine Aussehen des TiddlyWiki fest",
PluginManager:"Dieser System-Tiddler bietet Zugang zum Plugin-Manager",
SideBarOptions:"Dieser System-Tiddler enthält das Optionsfeld der rechten Seitenleiste",
SideBarTabs:"Dieser System-Tiddler enthält das Tab-Panel der rechten Seitenleiste",
SiteSubtitle:"Dieser System-Tiddler enthält den Untertitel Deines TiddlyWiki",
SiteTitle:"Dieser System-Tiddler enthält den Title Deines TiddlyWiki",
SiteUrl:"Dieser System-Tiddler sollte die vollständige URL der Veröffentlichung enthalten",
StyleSheetColors:"Dieser System-Tiddler enthält CSS-Definitionen für die Farbe von Seitenelementen. ''DIESEN TIDDLER NICHT BEARBEITEN'', füge Deine Änderungen stattdessen in den StyleSheet-System-Tiddler ein",
StyleSheet:"Dieser Tiddler ist für benutzerspezifische CSS-Definitionen vorgesehen",
StyleSheetLayout:"Dieser System-Tiddler enthält CSS-Definitionen für das Aussehen von Seitenelementen. ''DIESEN TIDDLER NICHT BEARBEITEN'', füge Deine Änderungen stattdessen in den StyleSheet-System-Tiddler ein",
StyleSheetLocale:"Dieser System-Tiddler enthält CSS-Definitionen für Übersetzungen",
StyleSheetPrint:"Dieser System-Tiddler enthält CSS-Definitionen zum Drucken",
TabAll:"Dieser System-Tiddler enthält den Inhalt des 'Alles'-Tab in der rechten Seitenleiste",
TabMore:"Dieser System-Tiddler enthält den Inhalt des 'Mehr'-Tab in der rechten Seitenleiste",
TabMoreMissing:"Dieser System-Tiddler enthält den Inhalt des 'Fehlend'-Tab in der rechten Seitenleiste",
TabMoreOrphans:"Dieser System-Tiddler enthält den Inhalt des 'Waisen'-Tab in der rechten Seitenleiste",
TabMoreShadowed:"Dieser System-Tiddler enthält den Inhalt des 'Schatten'-Tab in der rechten Seitenleiste",
TabTags:"Dieser System-Tiddler enthält den Inhalt des 'Tags'-Tab in der rechten Seitenleiste",
TabTimeline:"Dieser System-Tiddler enthält den Inhalt des 'Zeitachse'-Tab in der rechten Seitenleiste",
ToolbarCommands:"Dieser System-Tiddler legt fest, welche Befehle in der Tiddler-Toolbar angezeigt werden",
ViewTemplate:"Die HTML-Vorlage in diesem System-Tiddler legt das Aussehen eines Tiddlers fest"
});
// Uebersetzungen von System-Tiddlern ausserhalb der offiziellen lingo.js
merge(c.shadowTiddlers,{
OptionsPanel:"Diese [[Interface-Einstellungen|InterfaceOptions]] zur Anpassung von TiddlyWiki werden in Deinem Browser gespeichert\n\nDein Benutzername zum Unterzeichnen Deiner Einträge, am besten als WikiWord (z.B. KlausBrandmüller)\n\n<<option txtUserName>>\n<<option chkSaveBackups>> [[Backups speichern|SaveBackups]]\n<<option chkAutoSave>> [[Automatisch speichern|AutoSave]]\n<<option chkRegExpSearch>> [[RegExp Suche|RegExpSearch]]\n<<option chkCaseSensitiveSearch>> [[Groß-/Kleinschreibung in Suche|CaseSensitiveSearch]]\n<<option chkAnimate>> [[Animationen aktivieren|EnableAnimations]]\n\n----\[[Erweiterte Optionen|AdvancedOptions]]\nPluginManager\nImportTiddlers",
GettingStarted:"Um mit diesem TiddlyWiki zu starten, solltest Du folgende Tiddler modifizieren:\n* [[Titel|SiteTitle]] und [[Untertitel|SiteSubtitle]]: Werden oben auf der Seite angezeigt und nach dem Speichern auch in der Titelzeile des Browsers\n* MainMenu: Das Inhaltsverzeichnis (bspw. Links)\n* DefaultTiddlers: Beinhaltet die Namen der Tiddler, die geöffnet werden sollen, wenn TiddlyWiki gestartet wird.\nDu solltest zudem einen Benutzernamen zum Unterzeichnen Deiner Bearbeitungen eingeben: <<option txtUserName>>",
ViewTemplate:"<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (erstellt am <span macro='view created date'></span>)</div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>",
InterfaceOptions:"Die [[Interface-Einstellungen|InterfaceOptions]] werden angezeigt, wenn Du rechts auf 'Optionen' klickst. Sie werden als Cookies in Deinem Browser gespeichert. Nähere Informationen zu den einzelnen Funktionen findest du, wenn Du die Funktion selbst anklickst.",
WikiWord:"Ein WikiWord ist ein Wort, das aus mehreren einzelnen Wörtern zusammengesetzt ist, in dem jedes Wort mit einem Großbuchstaben beginnt und somit automatisch eine individuelle Seite bezeichnet.",
SaveBackups:"[[Backups speichern|SaveBackups]] erstellt bei jedem Abspeichern automatisch ein Backup.",
AutoSave:"[[Automatisches Speichern|AutoSave]] speichert automatisch Änderungen, wenn du einen Tiddler bearbeitest. Damit sinken die Chancen, dass Du Daten verlierst. Beachte jedoch, dass bei aktivierter [[Backup-Funktion|SaveBackups]] natürlich auch eine Menge Backup-Dateien erstellt werden, die Du regelmäßig löschen solltest.",
RegExpSearch:"Benutze die Suche mit regulären Ausdrücken für komplexe Suchanfragen.",
CaseSensitiveSearch:"Die Unterscheidung der [[Groß-/Kleinschreibung in Suche|CaseSensitiveSearch]] tut genau dies.",
EnableAnimations:"Diese Funktion animiert das Öffnen oder Schließen eines Tiddlers.",
GenerateAnRssFeed:"Wenn Du [[RSS-Feed erzeugen|GenerateAnRssFeed]] aktivierst, speichert TiddlyWiki automatisch einen RSS-2.0 Feed, so bald Dein TiddlyWiki gespeichert wird. Der Feed hat den gleichen Dateinamen wie das TiddlyWiki, lediglich jedoch mit der Endung '.xml'.",
OpenLinksInNewWindow:"Diese Funktion öffnet externe Links in einem neuen ~Browser-Fenster.",
SaveEmptyTemplate:"Diese Funktion erwirkt, dass beim Abspeichern von Änderungen eine leere Vorlage von TiddlyWiki erzeugt wird. Dies ist als Hilfe gedacht für Entwickler, die Adaptionen von TiddlyWiki bereitstellen. Die Funktion ist nicht erforderlich, wenn Du ein normaler Benutzer bist.",
HideEditingFeatures:"Ist diese Funktion aktiviert, werden die Bearbeitungsfunktionen ausgeblendet, wenn das TiddlyWiki über HTTP aufgerufen wird. Der Benutzer hat dann die Möglichkeit, den Tiddler zwar betrachten zu können, aber nicht zu bearbeiten.",
MinorChanged:"Manchmal ist es sinnvoll, dass bei kleinen Änderungen der Tiddler in der Zeitachse nicht automatisch an den Anfang gesetzt wird. Mit Aktivierung dieser Funktion werden alle Bearbeitungen von Tiddlern als kleine Änderungen betrachtet und das Änderungsdatum nicht geändert.",
ConfirmBeforeDeleting:"Bei Aktivierung dieser Funktion fordert TiddlyWiki eine Bestätigung des Benutzers an, wenn ein Tiddler gelöscht werden soll."});
//}}}
//{{{
//tbGTD
//x-tagger
merge(config.macros.xtagger.cfg,{
mode:1,
modeAsk:"Möchtest du ebenfalls Tag '%1' und andere Tags der Kategorie '%2' löschen?\'Abbrechen' fügt einfach das neue Tag '%3' hinzu.",
label:'Tags: ',
tooltip:'Tags',
more:'Mehr...',
options:'Optionen',
notags:'Tiddler hat keine Tags',
aretags:'Aktuelle Tags:',
toggletext:'Tags hinzufügen:',
txtRemove: 'Tag löschen',
txtEdit:"Kategorien editieren...",
txtEditTip:"Den Tiddler für die Aufgabenkategorien editieren, die Tagger benutzt",
txtNew:"Neuer Tag",
txtAdd:"setze Tag ",
promptNew:"Name des Tags:"});
//ReminderMacros
merge(cm.reminders,{
untitledReminder:"Erinnerung ohne Namen",
noReminderFound:"Überfällige Erinnerung? Kann kein Ereignis für 'TITLE' in den nächsten LEADTIMEUPPER Tagen finden.",
todayString:"heute",
tomorrowString:"morgen",
ndaysString:"DIFF Tage",
dateFormat:"MMM. DD",
emtpyShowRemindersString:"keine anstehenden Ereignisse",
txtRemindTip:"Füge diesem Tiddler eine neue Erinnerung hinzu",
txtRemind:"erinnern",
txtTitle:"Bitte einen Titel eingeben",
txtEachYear:"Jedes Jahr",
txtEachMonth:"Jeden Monat",
txtEachDay:"Jeden Tag"});
//CalendarPlugin
merge(cm.calendar,{
monthnames:['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],
daynames:['M','D','M','D','F','S','S']});
//DatePlugin
merge(cm.date,{
txtRemind:'Erinnerungen ',
txtNewRemind:'neue Erinnerung...',
txtAddRemind:'neue Erinnerung hinzufügen zu',
txtAddReminderTitle:'"Titel der Erinnerung"',
txtChanged:'geändert',
txtCreated:'neu',
txtNone:'keine'});
config.options.txtCalendarReminderTags='Erinnerung';
//FE2 (FieldsEditor2)
merge(cm.FE2.lang,{
'delete':'löschen',
rename:'<umbenennen',
create:'Ein neues Feld anlegen...',
edit:'editieren>',
lineBreaks:"Der Wert enthält Zeilenumbrüche.\nDiese gehen verloren, wenn Du sie hier editierst!\nWeiter machen?",
enterName:"Feldname...",
enterNewName:"Gib einen neuen Namen ein für '%1'...",
enterVal:"Wert für '%1'...",
enterNewVal:"Gib einen neuen Wert ein für '%1'..",
doDelete:"Lösche Feld '%1' von Tiddler '%2' ?",
existing:"Dieses Feld existiert bereits! "});
cc.fields.lang={field:"Feld",actions:"Aktion",value:"Wert"};
merge(config.renameTags.prompts,{
rename: "Tag '%0' für %2 Tiddler umbennenen in '%1' ?",
remove: "Tag '%0' von %1 Tiddler entfernen?"});
//TagglyTagging
merge(config.taggly.lingo,{
labels:{
asc: "\u2191",
desc: "\u2193",
hide: "-",
title: "Titel",
modified: "geändert",
created: "erstellt",
normal: "normal",
group: "gruppiert",
commas: "Kommas",
sitemap: "Sitemap",
numCols: "Spalten\u00b1",
label: "mit Tag '%0':",
excerpts: "Auszüge",
descr: "Beschreibung",
slices: "Slices",
contents: "Inhalte",
sliders: "Sliders",
noexcerpts: "nur Titel"
},
tooltips: {
title: "nach Titel sortieren",
modified: "nach Änderungsdatum sortieren",
created: "nach Erstellungsdatum sortieren",
show: "Tagging Liste anzuzeigen",
hide: "Taggung Liste verbergen",
normal: "zeige normale, ungruppierte Liste anzuzeigen",
group: "zeige Liste gruppiert nach Tags",
sitemap: "zeige eine Art Sitemap",
commas: "zeige eine Komma-getrennte Liste",
numCols: "Anzahl der Spalten ändern",
excerpts: "Auszüge anzeigen",
descr: "Beschreibung anzeigen",
slices: "Alle Slices anzeigen",
contents: "ganzen Inhalt anzeigen",
sliders: "Inhalt als Slider zum aufklicken",
noexcerpts: "nur den Titel anzeigen"}});
//TiddlersBar
merge(config.macros.tiddlersBar,{
tooltip : "öffne ",
tooltipClose : "Hier klicken, um diesen Tiddler zu schließen",
tooltipSave : "Hier klicken, um diesen Tidder zu speichern",
promptRename : "Neuer Tiddlername..."});
//ToggleSideBarTB
merge(config.macros.toggleSideBarTB.settings,{
lblToggle:"%0 Seitenleiste ein-/ausblenden",
leftBarLbl:"linke",
rightBarLbl:"rechte"});
//SimpleSearch
merge(config.extensions.SimpleSearchPlugin,{
heading:"Suchergebnisse",
btnCloseLabel: "Schließen",
btnCloseTooltip: "Suchergebnisse schließen",
btnOpenLabel: "Elle öffnen",
btnOpenTooltip: "Öffne alle Suchergebnisse"});
merge(config.macros.gotoTiddler,{
listMaxSize: 20,
listHeading: 'Fand %0 für Titel %1...',
searchItem: "Suche nach '%0'..."});
merge(config.macros.xplore,{
topBtn:'Zeige Beziehungen zu anderen Tiddlern',
lblTagging:'!!ist Tag von',
lblTags:'!!hat Tag',
lblRefs:'!!ist referenziert von',
lblLinks:'!!hat Verweis auf'
});
merge(config.macros.tagCloud,{
noTags:"Keine Tags.",
tooltip:"%1 Tiddler mit Tag '%0'"
});
//}}}
//{{{
//shortcuts
var c=config;
var co=c.options;
var cc=c.commands;
var cm=c.macros;
var cv=c.views;
//adopted from mptwConfig
readOnly=false;
showBackstage=true;
cv.editor.tagChooser.text='Tags...';
co.txtTheme='tbGtdTheme';
//no msg when no tiddler
cv.wikified.defaultText="";
//no text for a new tiddler
cv.editor.defaultText="";
//tab as tab when editing
co.chkInsertTabs=true;
//visitors can edit
co.chkHttpReadOnly=false;
co.chkSaveBackups=true;
//backups in this folder
co.txtBackupFolder='twbackup';
//autosave when local
co.chkAutoSave=(window.location.protocol=="file:");
co.chkHideTabsBarWhenSingleTab =true;
co.chkTOCIncludeHidden=true;
co.chkDisplayWeekNumbers=true;
co.txtPrettyDates='pppp';
co.chkAnimate=false;
co.chkSinglePagePermalink=true;
co.txtLastShared='tbGTD:::http://tbGTD.tiddlyspot.com';
merge(cm.toolbar,{moreLabel:'+',lessLabel:'-'});
merge(c.messages.backstage,{open:{text:''},close:{text:''}});
//see ViewTemplate
c.mptwDateFormat='YYYY-0MM-0DD';c.mptwJournalFormat='YYYY-0MM-0DD';
//language settings
c.glyphs.codes.star=["\u22C6","\u22C6"];
cc.references.text="ref";
cc.permalink.text="url";
var show="Zeige eine URL in der Addressleite des Browser, die auf ";
cc.permalink.tooltip=show+"den aktuell angezeigten Tiddler verweist";
cm.permaview.prompt=show+"alle aktuell angezeigten Tiddler verweist";
cm.list.missing.prompt="Verwiesen ohne Tiddler:\n";
cm.list.orphans.prompt="Tiddler ohne Verweise:\n";
cm.list.shadowed.prompt="voreingstellte System-Tiddler:\n";
cm.option.passwordCheckboxLabel="Lokal speichern";
//refresh command -> for toolbar (force=true)
cc.refreshTiddler={
text:'aktualisieren',tooltip:'Die Ansicht dieses Tiddlers aktualisieren',
handler:function(e,src,title){clearMessage();story.refreshTiddler(title,false,true);return false;}
}
//rename buttons
cm.rB={handler:function(place,macroName,params,wikifier,paramString,tiddler){
if(place.lastChild.tagName!="BR"){
var p1=params.shift().split("#");
var name=p1[0];
var id=p1[1];
var title=params[0];
el=place.lastChild;
if(el.tagName.toUpperCase()!="A")el=el.firstChild;
el.firstChild.data=name;
if(id)el.setAttribute('id',id);
if(title)el.title=title;
}
}}
//shortened splashscreen code
var tbRestart=window.restart;
window.restart = function(){
var splash=document.getElementById('SplashScreen');
if (splash) splash.style.display = "none";
document.getElementById('contentWrapper').style.display = "block";
tbRestart();
}
//fix ie styles
if(jQuery.browser.msie){setStylesheet('#topMenuR{top:4.55em !important;}','ieStyles');}
//}}}
Inhalte zum Projektstart oder Kick-off...
Definition zu...
* Zielen und (messbaren !) Erfolgskriterien
* dem System, seinen Grenzen und Schnittstellen zur Umwelt
Abschätzung von Voraussetzungen und Bedarf an...
*Menschen
*Zeit
*Ressourcen
*Finanzen
*Chancen, Risiken, Stärken und Schwächen (SWOT)
Vorbereitung des Projekts, zum Beispiel Erfassung von Daten und Informationen, um loslegen zu können...
Die Sammlung aller Entwürfe, Ideen und Ansätze für die erfolgreiche Entwicklung oder Verbesserung des Systems...
|borderless widetable|k
|width:75%;''Validiere'' ob Entwurf, Daten, Prozesse, Komponenten und Eigenschaften die Anforderungen erfüllen.| @@color:#39C;margin-left:10px;text-align:center;display:block;background:#eee;border-bottom:1px solid #39C;padding:3px;''Mach' die __richtigen__ Dinge!''@@|
|''Verifiziere'' Modelle zahlenmäßig und logisch, ob sie tatsächlich leisten, wofür sie gedacht sind.| @@color:#39C;margin-left:10px;text-align:center;display:block;background:#eee;padding:3px;''Mach' die Dinge __richtig__!''@@|
Also alle Bemühungen, um zu prüfen, ob Ideen zu Verbesserungen oder Neuerungen zum gewünschten Erfolg führen (können)...
Experimentiere, berechne oder simuliere verschiedene Alternative und mögliche Szenarien...
*Ergebnisse und Statistiken
*#erfassen
*#auswerten
*#vergleichen
Werte die Alternativen aus und __entscheide__, welche die Projektziele bestmöglich erfüllen...
Projekt Roll-out und Implementierung abhängig von den Entscheidungen, zu denen du nach sorgfältiger Überlegung gelangt bist...
Prüfe nach der Umsetzung, inwiefern die validierten und verifizierten Modellvorstellungen und insbesondere die Projektziele erfüllt wurden...