Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
I'm convinced that there must be another term for this. I don't give myself so much credit that I believe I'm the first to muse on this subject. But because I have never been exposed to anyone else's explanation of this phenomenon, I'll claim it as my own for now.
I've found that many things in life are the result of timing. Being in the right place at the right time, so to speak. I first noticed this as I tried to find the correct time to leave my apartment for work each morning. I always thought I had more time to lounge than I really did. Or I might forget my umbrella and have to turn back. And so many times, I'd reach the T station just as the train was pulling out. And I'd say to myself, "If only I hadn't taken so long to put on my shoes, I would have made it." Or, "Waffles instead of cereal was the difference between leaving at 7:01 and 7:06." Really, it comes down to seconds. Arriving 10 seconds too late results in waiting 10 more minutes for the train means arriving 10 minutes later at work, and during earnings season for me, that results in being 20 minutes behind all morning.
It's kind of like the [[butterfly effect|http://en.wikipedia.org/wiki/Butterfly_effect]]. Kind of. But in this case, it's solely about timing. In some ways, this is very obvious. But still, it's not something many people lend much thought to. So back to the morning train example. If I simply quicken my step for 100 feet, that could be the difference between making the train and waiting 10 minutes. However, it could also shift the timing such that my quickness makes me arrive as the train leaves. Is that worse? The choice between walking quickly and seeing the train leave or walking regularly and having to wait 5 minutes? I feel better when I've missed a train I wouldn't have caught anyway as opposed to missing one due to a variable I could easily have tweaked.
Another example, I was in New York two weeks ago and I sat by a nice couple from Canada while waiting for [[tkts|http://en.wikipedia.org/wiki/TKTS]] to open up. We talked, bought, and parted ways. And yet somehow I ran into them again walking past the Empire State Building. 10 seconds difference, I could have crossed the street and never even noticed them.
Of course these things happen all the time. They're not always as obvious but everything in life could be different due to 10 seconds. I realize that to a certain extent, it's not interesting even considering this because it's all just coincidence. But as irrational as it might be, I'd like to think that coincidence can carry as much weight as determined actions. The difference between passing or failing a test could lie in the last 10 seconds of cramming you do. Winning the lottery could depend on where in line you stood as the winning ticket was sold, 10 seconds later and you'd have missed the opportunity. It's chance, but who says you can't leverage that to your advantage? Part of the reason I went to Harvard was because of a 10-second effect delivered on a truck. But you'll have to ask me about that yourself.
I hate going to the gym. In general, I actually hate exercise for its own sake. I could run forever if I was trying to train for a sport. I'll stomach the gym if I know I'm strengthening up for a snowboarding trip. But independent of some goal, I really don't like to expend the effort. It's not that I'm lazy. . .well it is a bit. But mostly I don't care about "getting huge." I walk and bike a lot of places so incidentally, I stay in shape.
But in an effort not to feel totally useless, I'm going to set a goal for myself. There's this website that offers a plan to get you to do 100 consecutive push-ups in six weeks. That's an impressive goal. When I was younger, I could get to 50. But definitely not anymore. So I'll start today and see how I do.
[[one hundred push ups|http://hundredpushups.com/index.html]]
Happy New Year! I'm excited to see what the new year brings. As arbitrary a starting point as January 1st can be, I do like the symbolism.
One of the projects I'm setting for myself is a 365 photography set. I got the idea from the hundreds of people I've seen try it in Flickr. The idea is to take one picture every day for an entire year. Some people do self-portraits. Others do Photoshop projects. I'm not going to restrict myself to a subject or style. I just look at it as an opportunity to more consistently practice a hobby that I've been working on. I'll put relevant pictures up here from time to time. Otherwise, do see how it's going you can click below.
<html><center><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fedmund.rogers%2Falbumid%2F5286520585985671729%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></center></html>
Here's a stupid revelation I just had. 50 Cent's song 21 Questions actually asks 21 questions. 50 asks 17 of them and Nate Dogg asks 4 more. Deep.
Tomorrow, I'm headed to New York to help run a benefit event for a community service organization I was part of during college. ~CityStep is an urban program that reaches out to Cambridge and Philadelphia 5th, 6th, and 7th graders, promoting self-esteem, self-confidence, and creativity through the medium of dance and theater. During the school year, student teachers from Harvard and UPenn either travel to the schools or host the children after school and hold classes that give them exposure to the arts when school curriculums are increasingly taking a step back. The ~CityStep program culminates in a performance where the students can showcase their work for their community.
~CityStep is celebrating its 25th anniversary. To learn more, visit [[citystep.org|http://www.citystep.org]].
My little brother graduated from 8th grade this week. I'm proud of him.
<html><center><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fedmund.rogers%2Falbumid%2F5210034730683454209%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></center></html>
[[My song and artist rankings|The Best Music Around]] are generated by a script I wrote for iTunes.
I always thought the iTunes rating system was a bit silly. Sure you love that new song by Nickelback //now//. In 2004, you might give it a 5-star rating. But what happens 3 years later? Is it still just as good, or has it lost its luster? And what happens if you're like me and have thousands of songs? Are you really going to rate all of them? And what do you do as your preferences change? Either you become OCD about keeping all your rankings meaningful, or you give up completely.
//Or//, you do what I do (because I'm apparently a huge dork), and create a program that will rate your songs for you based on what you actually listen to. This is more than just looking at the number of times you've played each song. It also looks at the frequency of the plays and the time since you last played a song.
So when you play that new Linkin Park song 15 times in a week, it'll jump in the ratings. But if you then get sick of it, it'll drop down over time, even if the song that replaces it was only played 3 times total.
So in more detail, say there are three songs in your library: A, B, and C. They each are added on the same day, so each has had an equal amount of time to rack up play counts. You play song A once a day for a week. You play song B 7 times on day 1, and then stop listening. And you play song C 7 times on day 7. Which deserves to have the highest rating?
I would say that if they were ranked on day 7, song C should come out on top, followed by song A, then song B. Song C clearly is hot //right now//. Song A has been a solid option, but you've gotten burned out on song B. So while song B was big on day 1, it's rating dropped, the longer it went without being played. Song A's rating dropped each day, but went up with each play, so it stayed about the same. And song C jumped on the last day.
Without getting into the math, I can optimize how quickly a song's rating deteriorates over time. I can also set how much of a boost a song gets when it's played subsequent times. But overall, by using this script, I can rank all 7000+ songs in my library in under 5 minutes.
If you're more curious about this, [[drop me a line|Contact]]
Common sense is the collection of prejudices acquired by age eighteen.
/***
|Name|AutoOpenTiddlersPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#AutoOpenTiddlersPlugin|
|Version|0.21|
|Requires|~TW2.x|
!!!Description:
Open a user defined number of recent tiddlers automatically when the TW loads.
You can also specify a tag and only load tiddlers that have that tag.
To change the number of tiddlers automatically opened, or define a tag to use, ed the config.autoOpenTiddlers part of the code below.
!!!To Do
*add an option to exclude tiddlers with a particular tag
!!!Code
***/
//{{{
//edit this section to change the default settings
config.autoOpenTiddlers =
{
count: 5, //number of tiddlers opened.
tag: 'blog' //change if you want to open tiddlers with a specific tag, eg: 'DefaultTiddlers'
}
config.autoOpenTiddlers.handler = function()
{
if (this.tag == undefined)
var newTiddlers = store.getTiddlers("created");
else
var newTiddlers = store.getTaggedTiddlers(this.tag,"created");
var newTiddlers = newTiddlers.reverse();
var max = Math.min(this.count,newTiddlers.length-1);
for (var i=max; i>=0; i--)
{ story.displayTiddler(null,newTiddlers[i].title);}
}
window.old_lewcid_autoOpenTiddlers_restart = restart;
restart = function ()
{
window.old_lewcid_autoOpenTiddlers_restart();
config.autoOpenTiddlers.handler();
}
//}}}
Sweet! I'm in the Top 50 for the Boston.com Amateur Photography contest again. This time, I think the picture is way more decent. So I'm proud of that.
But it begs the question, what is the purpose of my photography? Who is my audience? I don't take pictures with the intention of entering them in the contest. The theme is announced, and I look back over my pictures to see if I have one that fits the theme. So an entrant is never the target of the art. But why then would I be excited or disappointed if I do or do not get recognized in some fashion?
I suppose everyone wants to share their expression with others. What is the purpose of self-expression if not to convey an idea? And there's only so much a form of self-expression can be appreciated solely by the individual who created it. It's heartening to get recognized by another; it affirms your work and gives it at least some air of validity.
Having said that, some of my best pictures have never really seen any recognition on Flickr or otherwise. It doesn't make them any less special to me.
In any case, here's the picture I submitted:
<html><center><table style="width:auto;"><tr><td><a href="http://picasaweb.google.com/lh/photo/6xejIHHQI_-nlcCjpPh3DQ?feat=embedwebsite"><img src="http://lh4.ggpht.com/_WYmcn3agL7k/Sc-JqHWknYI/AAAAAAAAJIQ/aJK40KEi-Yo/s400/78.jpg" /></a></td></tr><tr><td style="font-family:arial,sans-serif; font-size:11px; text-align:right">From <a href="http://picasaweb.google.com/edmund.rogers/365?feat=embedwebsite">365</a></td></tr></table>
<a href="http://www.flickriver.com/photos/mwanz/popular-interesting/"><img src="http://www.flickriver.com/badge/user/all/interesting/noshuffle/medium-horiz/ffffff/333333/22322673@N05.jpg" border="0" alt="Edmund Mwanzan Felipe Rogers - View my most interesting photos on Flickriver" title="Edmund Mwanzan Felipe Rogers - View my most interesting photos on Flickriver"/></a>
<a href="http://www.flickriver.com/photos/mwanz/"><img src="http://www.flickriver.com/badge/user/all/recent/shuffle/medium-horiz/ffffff/333333/22322673@N05.jpg" border="0" alt="Edmund Mwanzan Felipe Rogers - View my recent photos on Flickriver" title="Edmund Mwanzan Felipe Rogers - View my recent photos on Flickriver"/></a>
</center></html>
I really wanted to like this movie. Sometimes, that's a recipe for failure. You get your expectations impossibly high and the movie proves to be only average. But this one was still much more than I expected. Not only was it highly entertaining, but the character exploration was deep and gave new insight into the rivalry between two iconic characters. I thoroughly enjoyed it. Now I just need to see it again on IMAX.
[img[Black and White picture|http://thefamilynet.googlepages.com/batman002.jpg]]
This has a good discussion about the ambition of the movie. Do not listen to this if you haven't already seen the movie.
[[IGN Podcast about The Dark Knight|http://comicsmovies.ign.com/comics/audio/article/892/892526/comics_SMASH_072108.mp3]]
/***
|Name|BetterTimelineMacro|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#BetterTimelineMacro|
|Version|0.5 beta|
|Requires|~TW2.x|
!!!Description:
A replacement for the core timeline macro that offers more features:
*list tiddlers with only specfic tag
*exclude tiddlers with a particular tag
*limit entries to any number of days, for example one week
*specify a start date for the timeline, only tiddlers after that date will be listed.
!!!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Edit the ViewTemplate to add the fullscreen command to the toolbar.
!!!Syntax:
{{{<<timeline better:true>>}}}
''the param better:true enables the advanced features, without it you will get the old timeline behaviour.''
additonal params:
(use only the ones you want)
{{{<<timeline better:true onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30>>}}}
''explanation of syntax:''
onlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.
excludeTag: tiddlers with this tag will not be listed.
sortBy: sort tiddlers by date modified or date created. Possible values are modified or created.
firstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006
maxDays: limits timeline to include only tiddlers from the specified number of days. If you use a value of 7 for example, only tiddlers from the last 7 days will be listed.
maxEntries: limit the total number of entries in the timeline.
!!!History:
*28-07-06: ver 0.5 beta, first release
!!!Code
***/
//{{{
// Return the tiddlers as a sorted array
TiddlyWiki.prototype.getTiddlers = function(field,excludeTag,includeTag)
{
var results = [];
this.forEachTiddler(function(title,tiddler)
{
if(excludeTag == undefined || tiddler.tags.find(excludeTag) == null)
if(includeTag == undefined || tiddler.tags.find(includeTag)!=null)
results.push(tiddler);
});
if(field)
results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
return results;
}
//this function by Udo
function getParam(params, name, defaultValue)
{
if (!params)
return defaultValue;
var p = params[0][name];
return p ? p[0] : defaultValue;
}
window.old_timeline_handler= config.macros.timeline.handler;
config.macros.timeline.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
var args = paramString.parseParams("list",null,true);
var betterMode = getParam(args, "better", "false");
if (betterMode == 'true')
{
var sortBy = getParam(args,"sortBy","modified");
var excludeTag = getParam(args,"excludeTag",undefined);
var includeTag = getParam(args,"onlyTag",undefined);
var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);
var firstDayParam = getParam(args,"firstDay",undefined);
var firstDay = (firstDayParam!=undefined)? firstDayParam: "00010101";
var lastDay = "";
var field= sortBy;
var maxDaysParam = getParam(args,"maxDays",undefined);
var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;
var maxEntries = getParam(args,"maxEntries",undefined);
var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;
for(var t=tiddlers.length-1; t>=last; t--)
{
var tiddler = tiddlers[t];
var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
if ((theDay>=firstDay)&& (tiddler[field].getTime()> (new Date()).getTime() - maxDays))
{
if(theDay != lastDay)
{
var theDateList = document.createElement("ul");
place.appendChild(theDateList);
createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));
lastDay = theDay;
}
var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);
theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));
}
}
}
else
{
window.old_timeline_handler.apply(this,arguments);
}
}
//}}}
/***
|Name|BigThemePack|
|Created by|SimonBaird & SaqImtiaz|
|Location|http://simonbaird.com/mptw/#BigThemePack|
|Version|0.1.1|
|Requires|SelectThemePlugin|
!Uninstallation Notes:
*Make sure that you set your theme as default or none, before deleting the theme pack.
!Usage:
<<themeSelect style 'Select Theme'>>
***/
//{{{
if (!config.themes) config.themes = [];
//}}}
/***
!!Clint's Themes
The themes were created by Clint Checketts from http://www.checkettsweb.com/
The original GTD theme was created by Nathan Bowers from http://snapgrid.com/
***/
//{{{
config.shadowTiddlers.GTDStyleSheet = "/***\n!Calendar CSS\n***/\n/*{{{*/\n.calendar{\n border-bottom: 1px solid #550000;\n}\n\n.viewer .calendar{\n width: 220px;\n}\n\n#mainMenu .calendar{\n font-size: 8px;\n cursor: pointer;\n width: 100%;\n border: 0;\n border-collapse: collapse;\n}\n\n#mainMenu .calendar .button{\n border: 0;\n}\n\n#mainMenu .calendar td{\n font-size: 8pt;\n padding: 0;\n background: #fff;\n border: 0;\n}\n\n#mainMenu .calendar a{\n margin: 0;\n color: #000;\n background: transparent;\n}\n\n#mainMenu .calendar a:hover{\n color: #000;\n background: transparent;\n}\n\n#mainMenu .calendarMonthname,\n#mainMenu .calendar .calendarMonthTitle td a{\n color: #fff;\n}\n\n#mainMenu .calendarDaysOfWeek td{\n background: #500;\n color: #fff;\n}\n\n/*}}}*/\n\n/***\n!GTD Style\n\n!Generic rules /%==================================================================== %/\n***/\n/*{{{*/\nbody {\n background: #464646 url('http://shared.snapgrid.com/images/tiddlywiki/bodygradient.png') repeat-x top fixed;\n color: #000;\n font: .82em/1.25em 'Bitstream Vera Sans', Verdana, Helvetica, Arial, sans-serif;\n/*'Lucida Sans Unicode', 'Lucida Grande','Trebuchet MS', */\n}\n/*}}}*/\n/***\n!Header rules /%====================================================================== %/\n***/\n/*{{{*/\n#contentWrapper\n{\n margin: 0 auto;\nwidth: 59em;\nposition: relative;\n}\n\n#header\n{\n color: #fff;\n padding: 1.5em 1em .6em 0;\n}\n\n#siteTitle {\n\n font-size: 2.3em;\n margin: 0;\n}\n\n#siteSubtitle {\n font-size: 1em;\n padding-left: .8em;;\n}\n\n#titleLine{\n background: transparent;\n padding: 0;\n}\n\n#titleLine a {\n color: #cf6;\n background: transparent;\n}\n/*}}}*/\n\n\n\n\n\n\n\n\n\n/***\n!Sidebar rules /%====================================================================== %/\n***/\n/*{{{*/\n#sidebar{\n left: 0;\nwidth: 18em;\n margin: .9em .9em 0 0;\n color: #000;\n background: transparent;\n}\n/*}}}*/\n/***\n!Main menu rules /%=================================================================== %/\n***/\n/*{{{*/\n#mainMenu{\n position: static;\n width: auto;\n\n background: #600;\n border-right: 3px solid #500;\npadding: 0;\n text-align: left;\n font-size: 1em;\n}\n\n#mainMenu h1{\n padding: 0;\n margin: 0;\n font-size: 1em;\n font-weight: normal;\n}\n\n#mainMenu ul{\n padding: 0;\n margin: 0;\n list-style: none;\n}\n\n#mainMenu h1 a,\n#mainMenu li a,\n#mainMenu li a.button{\n display: block;\n padding: 0 5px 0 10px;\nborder: 0;\n border-bottom: 1px solid #500;\n border-top: 1px solid #900;\nmargin: 0;\n}\n\n#mainMenu a,\n#mainMenu a.button{\n height: 22px;\nheight: 1.83em;\n line-height: 22px;\n color: #fff;\n background: #700;\nmargin-left: 1em;\n}\n\n#mainMenu a:hover,\n#mainMenu a.button:hover {\n background: #b00;\n color: #fff;\n}\n/*}}}*/\n/***\n!Sidebar options rules /%============================================================ %/\n***/\n/*{{{*/\n#sidebarOptions {\n background: #eeb;\n border-right: 3px solid #bb8;\n color: #B4C675;\n padding: .5em 0;\n}\n\n#sidebarOptions a {\n color: #700;\n margin: .2em .8em;\n padding: 0;\n border: 0;\n}\n\n#sidebarOptions a:hover, #sidebarOptions a:active {\n color: #fff;\n background: #700;\n border: 0;\n}\n\n#sidebarOptions input{\n margin: 2px 10px;\n border: 1px inset #333;\npadding: 0;\n}\n\n#sidebarOptions .sliderPanel {\n background: #fff;\n color: #000;\n padding: 5px 10px;\n font-size: .9em;\n}\n\n#sidebarOptions .sliderPanel a{\n font-weight: normal;\n margin: 0;\n}\n\n#sidebarOptions .sliderPanel a:link,#sidebarOptions .sliderPanel a:visited {\n color: #700;\n}\n\n#sidebarOptions .sliderPanel a:hover,#sidebarOptions .sliderPanel a:active {\n color: #fff;\n background: #700;\n}\n/*}}}*/\n/***\n!Sidebar tabs rules /%===================================================================== %/\n***/\n/*{{{*/\n#sidebarTabs {\n background: transparent;\n border-right: 3px solid #740;\n border-bottom: 3px solid #520;\n border: 0;\n padding: 0;\n}\n\n#contentWrapper #sidebarTabs a,\n#contentWrapper #displayArea .tabContents a{\n color: #fff;\n}\n\n#contentWrapper #sidebarTabs a:hover,\n#contentWrapper #displayArea .tabContents a:hover {\n background: #000;\n color: #fff;\n}\n\n#contentWrapper #sidebarTabs a:active,\n#contentWrapper #displayArea .tabContents a:active{\n color: #000;\n}\n\n\n\n#contentWrapper .tabSelected {\n background: #960;\n}\n\n#contentWrapper .tabUnselected{\n background: #660;\n}\n\n#contentWrapper #sidebar .tabset{\n background: #eeb;\n border-right: 3px solid #bb8;\n padding: 0 0 0 .75em;\n}\n\n#contentWrapper .tabContents{\nfont-size: .95em;\nbackground: #960;\nborder:0;\n border-right: 3px solid #740;\n border-bottom: 3px solid #520;\n padding: .75em;\n}\n\n#contentWrapper .tabContents{\n width: auto;\n}\n\n#contentWrapper #sidebarTabs .tabContents .tabset,\n#contentWrapper .tabContents .tabset{\n border: 0;\n padding: 0;\n background: transparent;\n}\n\n#contentWrapper .tabContents .tabSelected,\n#contentWrapper .tabContents .tabContents {\n background: #700;\n border: 0;\n}\n\n#contentWrapper .tabContents .tabUnselected {\n background: #440;\n}\n\n#contentWrapper .tabset a {\n color: #fff;\n padding: .2em .7em;\n margin: 0 .17em 0 0;\n height: 2em;\nposition: static;\n}\n\n#contentWrapper .tabset a:hover {\n background: #000;\n color: #fff;\n}\n\n#contentWrapper .tabset a:active {\n color: #000;\n}\n\n#contentWrapper .tabContents ul{\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n#contentWrapper .tabContents .tabContents ul{\n color: #eeb;\n}\n\n.tabContents ul a,\n.tabContents ul .button{\n color: #fff;\n display: block;\n padding: .1em 0 .1em .7em;\n background: transparent;\n border: 0;\n}\n\n.tabContents ul a:hover {\n color: #fff;\n background: #000;\n}\n/*}}}*/\n/***\n!License panel rules /%==================================================================== %/\n***/\n/*{{{*/\n#licensePanel {\n padding: 0px 1em;\n font-size: .9em;\n}\n\n#licensePanel a {\n color: #960;\n display: block;\n margin-top: .9em;\n}\n\n#licensePanel a:hover {\n color: #fff;\n background: transparent;\n}\n/*}}}*/\n/***\n!Popup rules /%================================================================= %/\n***/\n/*{{{*/\n.popup {\n font-size: .8em;\n padding: 0em;\n background: #333;\n border: 1px solid #000;\n}\n\n.popup hr {\n margin: 1px 0 0 0;\n visibility: hidden;\n}\n\n.popup li.disabled {\n color: #666;\n}\n\n.popup li a,\n.popup li a:visited{\n color: #000;\n border: .1em outset #cf6;\n background: #cf6;\n}\n\n.popup li a:hover {\nborder: .1em outset #cf6;\n background: #ef9;\n color: #000;\n}\n/*}}}*/\n/***\n!Message area rules /%================================================================= %/\n***/\n/*{{{*/\n#messageArea{\n font-size: .9em;\n padding: .4em;\n background: #FFE72F;\n border-right: .25em solid #da1;\n border-bottom: .25em solid #a80;\n\nposition: fixed;\n top: 10px;\n right: 10px;\n color: #000;\n}\n\n#contentWrapper #messageArea a{\n color: #00e;\n text-decoration: none;\n}\n\n#contentWrapper #messageArea a:hover{\n color: #00e;\n text-decoration: underline;\n background: transparent;\n}\n\n#contentWrapper #messageArea .messageToolbar a.button{\n border: 1px solid #da1;\n}\n\n#contentWrapper #messageArea .messageToolbar a.button:hover{\n color: #00e;\n text-decoration: none;\n border: 1px solid #000;\n background: #fff;\n}\n\n\n\n/*}}}*/\n/***\n!Tiddler display rules /%================================================================== %/\n***/\n/*{{{*/\n#displayArea {\n width: 39.75em;\n margin: 0 0 0 17em;\n}\n\n.tiddler {\n margin: 0 0 .9em 0;\n padding: 0 1em;\n border-right: .25em solid #aaa;\n border-bottom: .25em solid #555;\n background: #fff;\n}\n\n.title {\n font-size: 1.5em;\n font-weight: bold;\n color: #900;\n}\n\n.toolbar {\n font-size: .8em;\n padding: .5em 0;\n}\n\n.toolbar .button{\n padding: .1em .3em;\n color: #000;\n\n border: .1em outset #cf6;\n background: #cf6;\nmargin: .1em;\n}\n\n.toolbar .button:hover {\n background: #ef9;\n color: #000;\n}\n\n.toolbar .button:active {\n background: #ff0;\n}\n\n/*}}}*/\n/***\n!Viewer rules /% ------------------------------------------------------------------------------------------ %/\n***/\n/*{{{*/\n.viewer {\n line-height: 1.4em;\n font-size: 1em;\n}\n\n.viewer a:link, .viewer a:visited {\n color: #15b;\n}\n\n.viewer a:hover {\n color: #fff;\n background: #000;\n}\n\n.viewer .button{\n background: transparent;\n border-top: 1px solid #eee;\n border-left: 1px solid #eee;\n border-bottom: 1px solid #000;\n border-right: 1px solid #000;\n}\n\n.viewer .button:hover{\n background: #eee;\n color: #000;\n}\n\n.viewer .button:active{\n background: #ccc;\n border-bottom: 1px solid #eee;\n border-right: 1px solid #eee;\n border-top: 1px solid #111;\n border-left: 1px solid #111;\n}\n\n\n.viewer blockquote {\n border-left: 3px solid #777;\n margin: .3em;\n padding: .3em;\n}\n\n.viewer pre{\n background: #fefefe;\n border: 1px solid #f1f1f1;\n}\n\n.viewer pre, .viewer code{\n color: #000;\n}\n\n.viewer ul {\n padding-left: 30px;\n}\n\n.viewer ol {\n padding-left: 30px;\n}\nul{\nlist-style-type: asquare;\n}\nol{ \n list-style-type: decimal;\n}\n\nol ol{ \n list-style-type: lower-alpha;\n}\n\nol ol ol{ \n list-style-type: lower-roman;\n}\n\n.viewer ul, .viewer ol, .viewer p {\n margin: .0;\n}\n\n.viewer li {\n margin: .2em 0;\n}\n\nh1,h2,h3,h4,h5,h6 {\n color: #000;\n font-weight: bold;\n background: #eee;\n padding: 2px 10px;\n margin: 5px 0;\n}\n\n.viewer h1 {font-size: 1.3em;}\n.viewer h2 {font-size: 1.2em;}\n.viewer h3 {font-size: 1.1em;}\n.viewer h4 {font-size: 1em;}\n.viewer h5 { font-size: .9em;}\n.viewer h6 { font-size: .8em;}\n\n.viewer table {\n border: 2px solid #303030;\n font-size: 11px;\n margin: 10px 0;\n}\n\n.viewer th, .viewer thead td{\n color: #000;\n background: #eee;\n border: 1px solid #aaa;\n padding: 0 3px;\n}\n\n.viewer td {\n border: 1px solid #aaa;\n padding: 0 3px;\n}\n\n.viewer caption {\n padding: 3px;\n}\n\n.viewer hr {\n border: none;\n border-top: dotted 1px #777;\n height: 1px;\n color: #777;\n margin: 7px 0;\n}\n\n.viewer\n{\n margin: .5em 0 0 0;\n padding: .5em 0;\n border-top: 1px solid #ccc;\n}\n\n.highlight {\n color: #000;\n background: #ffe72f;\n}\n/*}}}*/\n/***\n!Editor rules /% ----------------------------------------------------------------------------------------- %/\n***/\n/*{{{*/\n.editor {\n font-size: .8em;\n color: #402C74;\n padding: .3em 0;\n}\n\n.editor input, .editor textarea {\n font: 1.1em/130% 'Andale Mono', 'Monaco', 'Lucida Console', 'Courier New', monospace;\n margin: 0;\n border: 1px inset #333;\n padding: 2px 0;\n}\n\n.editor textarea {\n height: 42em;\n width: 100%;\n}\n\ninput:focus, textarea:focus\n{\n background: #ffe;\n border: 1px solid #000;\n}\n.footer\n{\n padding: .5em 0;\n margin: .5em 0;\n border-top: 1px solid #ddd;\n color: #555;\n text-align: center; \n}\n/*}}}*/\n/***\n!IE Display hacks /% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%/\n***/\n/*{{{*/\nbody{\n _text-align: center;\n}\n\n#contentWrapper\n{\n/* _width: 770px; CSS UNDERSCORE HACK FOR PROPER WIN/IE DISPLAY */\n _text-align: left; /* CSS UNDERSCORE HACK FOR PROPER WIN/IE DISPLAY */ \n}\n\n#messageArea{\n _position: absolute;\n}\n/*}}}*/";
config.shadowTiddlers.GTDPageTemplate = "<!---\n| Name:|GTDTWPlusPageTemplate|\n| Source:|http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm#StyleSheet|\n| Author:|ClintChecketts|\n--->\n<!--{{{-->\n<div id='header'>\n<div id='titleLine'>\n<span id='siteTitle' refresh='content' tiddler='SiteTitle'></span>\n<span id='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='sidebar'>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div><div id=\"licensePanel\">\n<a rel=\"license\" href=\"http://shared.snapgrid.com/gtd_tiddlywiki.html#RevisionHistory\" target=\"_new\">GTDTW Version <span macro=\"version\"></span></a>\n<a rel=\"license\" href=\"http://www.tiddlywiki.com\" target=\"_new\">\nTiddlyWiki is published by Jeremy Ruston at Osmosoft under a BSD open source license</a>\n<a rel=\"license\" href=\"http://snapgrid.com\" target=\"_new\">GTD TiddlyWiki is a modification by Nathan Bowers at Snapgrid under the same license terms.</a>\n<a rel=\"license\" href=\"http://davidco.com\" target=\"_new\">\"Getting Things Done\" is © David Allen at Davidco. Davidco has no affiliation with TiddlyWiki or GTD TiddlyWiki.</a></div></div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n<!--}}}-->";
config.themes.push("GTD");
config.shadowTiddlers.DevFireStyleSheet = "/***\n!Devfire\nStyle by Clint Checketts (http://www.checkettsweb.com) for TiddlyWiki 2.0\nInspired by the GLP'd Darkfire Wordpress skin.\n\n!Sections in this Tiddler:\n*Generic rules\n*Links styles\n*Header\n*Main menu\n*Sidebar\n**Sidebar options\n**Sidebar tabs\n*Message area\n*Popup\n*Tabs\n*Tiddler display\n**Viewer\n**Editor\n*Misc. rules\n!Generic rules /% ============================================================= %/\n***/\n/*{{{*/\nbody {\nbackground-color: #000;\n}\n/*}}}*/\n/***\n!Link styles /% ============================================================= %/\n***/\n/*{{{*/\na,\na.button,\n#mainMenu a.button,\n#sidebarOptions .sliderPanel a{\n color: #ffbf00;\n border: 0;\n}\n\na:hover,\na.button:hover,\n#mainMenu a.button:hover,\n#sidebarOptions .sliderPanel a:hover\n#sidebarOptions .sliderPanel a:active{\n color: #ff7f00;\n border: 0;\n border-bottom: #ff7f00 1px dashed;\n background: transparent;\n text-decoration: none;\n}\n\n#displayArea .button.highlight{\n color: #ffbf00;\n background: #4c4c4c;\n}\n/*}}}*/\n/***\n!Header styles /% ============================================================= %/\n***/\n/*{{{*/\n.header{\n border-bottom: 2px solid #ffbf00;\n color: #fff;\n}\n\n.headerForeground a {\n color: #fff;\n}\n\n.header a:hover {\n border-bottom: 1px dashed #fff;\n}\n/*}}}*/\n/***\n!Main menu styles /% ============================================================= %/\n***/\n/*{{{*/\n#mainMenu {color: #fff;}\n#mainMenu h1{\n font-size: 1.1em;\n}\n#mainMenu li,#mainMenu ul{\n list-style: none;\n margin: 0;\n padding: 0;\n}\n/*}}}*/\n/***\n!Sidebar styles /% ============================================================= %/\n***/\n/*{{{*/\n#sidebar {\n right: 0;\n color: #fff;\n border: 2px solid #ffbf00;\n border-width: 0 0 2px 2px;\n}\n#sidebarOptions {\n background-color: #4c4c4c;\n padding: 0;\n}\n\n#sidebarOptions a{\n margin: 0;\n color: #ffbf00;\n border: 0;\n}\n#sidebarOptions a:hover {\n color: #4c4c4c;\n background-color: #ffbf00;\n\n}\n\n#sidebarOptions a:active {\n color: #ffbf00;\n background-color: transparent;\n}\n\n#sidebarOptions .sliderPanel {\n background-color: #333;\n margin: 0;\n}\n\n#sidebarTabs {background-color: #4c4c4c;}\n#sidebarTabs .tabSelected {\n padding: 3px 3px;\n cursor: default;\n color: #ffbf00;\n background-color: #666;\n}\n#sidebarTabs .tabUnselected {\n color: #ffbf00;\n background-color: #5f5f5f;\n padding: 0 4px;\n}\n\n#sidebarTabs .tabUnselected:hover,\n#sidebarTabs .tabContents {\n background-color: #666;\n}\n\n.listTitle{color: #FFF;}\n#sidebarTabs .tabContents a{\n color: #ffbf00;\n}\n\n#sidebarTabs .tabContents a:hover{\n color: #ff7f00;\n background: transparent;\n}\n\n#sidebarTabs .txtMoreTab .tabSelected,\n#sidebarTabs .txtMoreTab .tab:hover,\n#sidebarTabs .txtMoreTab .tabContents{\n color: #ffbf00;\n background: #4c4c4c;\n}\n\n#sidebarTabs .txtMoreTab .tabUnselected {\n color: #ffbf00;\n background: #5f5f5f;\n}\n\n.tab.tabSelected, .tab.tabSelected:hover{color: #ffbf00; border: 0; background-color: #4c4c4c;cursor:default;}\n.tab.tabUnselected {background-color: #666;}\n.tab.tabUnselected:hover{color:#ffbf00; border: 0;background-color: #4c4c4c;}\n.tabContents {\n background-color: #4c4c4c;\n border: 0;\n}\n.tabContents .tabContents{background: #666;}\n.tabContents .tabSelected{background: #666;}\n.tabContents .tabUnselected{background: #5f5f5f;}\n.tabContents .tab:hover{background: #666;}\n/*}}}*/\n/***\n!Message area styles /% ============================================================= %/\n***/\n/*{{{*/\n#messageArea {background-color: #666; color: #fff; border: 2px solid #ffbf00;}\n#messageArea a:link, #messageArea a:visited {color: #ffbf00; text-decoration:none;}\n#messageArea a:hover {color: #ff7f00;}\n#messageArea a:active {color: #ff7f00;}\n#messageArea .messageToolbar a{\n border: 1px solid #ffbf00;\n background: #4c4c4c;\n}\n/*}}}*/\n/***\n!Popup styles /% ============================================================= %/\n***/\n/*{{{*/\n#popup {color: #fff; background-color: #4c4c4c; border: 1px solid #ffbf00;}\n#popup a {color: #ffbf00; }\n#popup a:hover { background: transparent; color: #ff7f00; border: 0;}\n#popup hr {color: #ffbf00; background: #ffbf00;}\n/*}}}*/\n/***\n!Tiddler Display styles /% ============================================================= %/\n***/\n/*{{{*/\n.title{color: #fff;}\nh1, h2, h3, h4, h5 {\n color: #fff;\n background-color: transparent;\n border-bottom: 1px solid #333;\n}\n\n.subtitle{\n color: #666;\n}\n\n.viewer {color: #fff; }\n\n.viewer table{background: #666; color: #fff;}\n\n.viewer th {background-color: #996; color: #fff;}\n\n.viewer pre, .viewer code {color: #ddd; background-color: #4c4c4c; border: 1px solid #ffbf00;}\n\n.viewer hr {color: #666;}\n\n.tiddler .button {color: #4c4c4c;}\n.tiddler .button:hover { color: #ffbf00; background-color: #4c4c4c;}\n.tiddler .button:active {color: #ffbf00; background-color: #4c4c4c;}\n\n.toolbar {\n color: #4c4c4c;\n}\n\n.toolbar a.button,\n.editorFooter a{\n border: 0;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selectedTiddler .footer {\n color: #888;\n}\n\n.highlight, .marked {\n color: #000;\n background-color: #ffe72f;\n}\n.editorFooter {\n color: #aaa;\n}\n\n.tab{\n-moz-border-radius-topleft: 3px;\n-moz-border-radius-topright: 3px;\n}\n\n.tagging,\n.tagged{\n background: #4c4c4c;\n border: 1px solid #4c4c4c; \n}\n\n.selected .tagging,\n.selected .tagged{\n background: #000;\n border: 1px solid #ffbf00;\n}\n\n.tagging .listTitle,\n.tagged .listTitle{\n color: #fff;\n}\n\n.tagging .button,\n.tagged .button{\n color: #ffbf00;\n border: 0;\n padding: 0;\n}\n\n.tagging .button:hover,\n.tagged .button:hover{\nbackground: transparent;\n}\n/*}}}*//***\n!Devfire\nStyle by Clint Checketts (http://www.checkettsweb.com) for TiddlyWiki 2.0\nInspired by the GLP'd Darkfire Wordpress skin.\n\n!Sections in this Tiddler:\n*Generic rules\n*Links styles\n*Header\n*Main menu\n*Sidebar\n**Sidebar options\n**Sidebar tabs\n*Message area\n*Popup\n*Tabs\n*Tiddler display\n**Viewer\n**Editor\n*Misc. rules\n!Generic rules /% ============================================================= %/\n***/\n/*{{{*/\nbody {\nbackground-color: #000;\n}\n/*}}}*/\n/***\n!Link styles /% ============================================================= %/\n***/\n/*{{{*/\na,\na.button,\n#mainMenu a.button,\n#sidebarOptions .sliderPanel a{\n color: #ffbf00;\n border: 0;\n}\n\na:hover,\na.button:hover,\n#mainMenu a.button:hover,\n#sidebarOptions .sliderPanel a:hover\n#sidebarOptions .sliderPanel a:active{\n color: #ff7f00;\n border: 0;\n border-bottom: #ff7f00 1px dashed;\n background: transparent;\n text-decoration: none;\n}\n\n#displayArea .button.highlight{\n color: #ffbf00;\n background: #4c4c4c;\n}\n/*}}}*/\n/***\n!Header styles /% ============================================================= %/\n***/\n/*{{{*/\n.header{\n border-bottom: 2px solid #ffbf00;\n color: #fff;\n}\n\n.headerForeground a {\n color: #fff;\n}\n\n.header a:hover {\n border-bottom: 1px dashed #fff;\n}\n/*}}}*/\n/***\n!Main menu styles /% ============================================================= %/\n***/\n/*{{{*/\n#mainMenu {color: #fff;}\n#mainMenu h1{\n font-size: 1.1em;\n}\n#mainMenu li,#mainMenu ul{\n list-style: none;\n margin: 0;\n padding: 0;\n}\n/*}}}*/\n/***\n!Sidebar styles /% ============================================================= %/\n***/\n/*{{{*/\n#sidebar {\n right: 0;\n color: #fff;\n border: 2px solid #ffbf00;\n border-width: 0 0 2px 2px;\n}\n#sidebarOptions {\n background-color: #4c4c4c;\n padding: 0;\n}\n\n#sidebarOptions a{\n margin: 0;\n color: #ffbf00;\n border: 0;\n}\n#sidebarOptions a:hover {\n color: #4c4c4c;\n background-color: #ffbf00;\n\n}\n\n#sidebarOptions a:active {\n color: #ffbf00;\n background-color: transparent;\n}\n\n#sidebarOptions .sliderPanel {\n background-color: #333;\n margin: 0;\n}\n\n#sidebarTabs {background-color: #4c4c4c;}\n#sidebarTabs .tabSelected {\n padding: 3px 3px;\n cursor: default;\n color: #ffbf00;\n background-color: #666;\n}\n#sidebarTabs .tabUnselected {\n color: #ffbf00;\n background-color: #5f5f5f;\n padding: 0 4px;\n}\n\n#sidebarTabs .tabUnselected:hover,\n#sidebarTabs .tabContents {\n background-color: #666;\n}\n\n.listTitle{color: #FFF;}\n#sidebarTabs .tabContents a{\n color: #ffbf00;\n}\n\n#sidebarTabs .tabContents a:hover{\n color: #ff7f00;\n background: transparent;\n}\n\n#sidebarTabs .txtMoreTab .tabSelected,\n#sidebarTabs .txtMoreTab .tab:hover,\n#sidebarTabs .txtMoreTab .tabContents{\n color: #ffbf00;\n background: #4c4c4c;\n}\n\n#sidebarTabs .txtMoreTab .tabUnselected {\n color: #ffbf00;\n background: #5f5f5f;\n}\n\n.tab.tabSelected, .tab.tabSelected:hover{color: #ffbf00; border: 0; background-color: #4c4c4c;cursor:default;}\n.tab.tabUnselected {background-color: #666;}\n.tab.tabUnselected:hover{color:#ffbf00; border: 0;background-color: #4c4c4c;}\n.tabContents {\n background-color: #4c4c4c;\n border: 0;\n}\n.tabContents .tabContents{background: #666;}\n.tabContents .tabSelected{background: #666;}\n.tabContents .tabUnselected{background: #5f5f5f;}\n.tabContents .tab:hover{background: #666;}\n/*}}}*/\n/***\n!Message area styles /% ============================================================= %/\n***/\n/*{{{*/\n#messageArea {background-color: #666; color: #fff; border: 2px solid #ffbf00;}\n#messageArea a:link, #messageArea a:visited {color: #ffbf00; text-decoration:none;}\n#messageArea a:hover {color: #ff7f00;}\n#messageArea a:active {color: #ff7f00;}\n#messageArea .messageToolbar a{\n border: 1px solid #ffbf00;\n background: #4c4c4c;\n}\n/*}}}*/\n/***\n!Popup styles /% ============================================================= %/\n***/\n/*{{{*/\n#popup {color: #fff; background-color: #4c4c4c; border: 1px solid #ffbf00;}\n#popup li.disabled{color: #ffbf00;}\n\n#popup a {color: #ffbf00; }\n#popup a:hover { background: transparent; color: #ff7f00; border: 0;}\n#popup hr {color: #ffbf00; background: #ffbf00;}\n/*}}}*/\n/***\n!Tiddler Display styles /% ============================================================= %/\n***/\n/*{{{*/\n.title{color: #fff;}\nh1, h2, h3, h4, h5 {\n color: #fff;\n background-color: transparent;\n border-bottom: 1px solid #333;\n}\n\n.subtitle{\n color: #666;\n}\n\n.viewer {color: #fff; }\n\n.viewer table{background: #666; color: #fff;}\n\n.viewer th {background-color: #996; color: #fff;}\n\n.viewer pre, .viewer code {color: #ddd; background-color: #4c4c4c; border: 1px solid #ffbf00}\n\n.viewer hr {color: #666;}\n\n.tiddler .button {color: #4c4c4c;}\n.tiddler .button:hover { color: #ffbf00; background-color: #4c4c4c;}\n.tiddler .button:active {color: #ffbf00; background-color: #4c4c4c;}\n\n.toolbar {\n color: #4c4c4c;\n}\n\n.toolbar a.button,\n.editorFooter a{\n border: 0;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selectedTiddler .footer {\n color: #888;\n}\n\n.highlight, .marked {\n color: #000;\n background-color: #ffe72f;\n}\n.editorFooter {\n color: #aaa;\n}\n\n.tab{\n-moz-border-radius-topleft: 3px;\n-moz-border-radius-topright: 3px;\n}\n\n.tagging,\n.tagged{\n background: #4c4c4c;\n border: 1px solid #4c4c4c; \n}\n\n.selected .tagging,\n.selected .tagged{\n background: #000;\n border: 1px solid #ffbf00;\n}\n\n.tagging .listTitle,\n.tagged .listTitle{\n color: #fff;\n}\n\n.tagging .button,\n.tagged .button{\n color: #ffbf00;\n border: 0;\n padding: 0;\n}\n\n.tagging .button:hover,\n.tagged .button:hover{\nbackground: transparent;\n}\n\n.cascade {\n background: #4c4c4c;\n color: #ddd;\n border: 1px solid #ffbf00;\n}\n/*}}}*/";
config.shadowTiddlers.DevFirePageTemplate = "<div class='header' macro='gradient vert #390108 #900'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>";
config.themes.push("DevFire");
//}}}
/***
!~MonkeyPirateTiddlyWiki Themes
Created by Simon Baird from http://simonbaird.com/mptw/
***/
//{{{
// couple of extra bits
config.shadowTiddlers.HorizontalMainMenuStyles = "/***\nTo use, add {{{[[HorizontalMainMenuStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also HorizontalMainMenu and PageTemplate.\n***/\n/*{{{*/\n\n#topMenu br {display:none; }\n#topMenu { background: #39a; }\n#topMenu { padding:2px; }\n#topMenu .button, #topMenu .tiddlyLink {\n margin-left:0.5em; margin-right:0.5em;\n padding-left:3px; padding-right:3px;\n color:white; font-size:115%;\n}\n#topMenu .button:hover, #topMenu .tiddlyLink:hover { background:#178;}\n\n#displayArea { margin: 1em 15.7em 0em 1em; } /* so we use the freed up space */\n\n/* just in case want some QuickOpenTags in your topMenu */\n#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }\n#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }\n#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }\n\n\n/*}}}*/";
config.shadowTiddlers.SideBarWhiteAndGrey = "/***\nThis CSS by DaveBirss.\n***/\n/*{{{*/\n\n.tabSelected {\n background: #fff;\n}\n\n.tabUnselected {\n background: #eee;\n}\n\n#sidebar {\n color: #000;\n background: transparent; \n}\n\n#sidebarOptions {\n background: #fff;\n}\n\n#sidebarOptions .button {\n color: #999;\n}\n\n#sidebarOptions .button:hover {\n color: #000;\n background: #fff;\n border-color:white;\n}\n\n#sidebarOptions .button:active {\n color: #000;\n background: #fff;\n}\n\n#sidebarOptions .sliderPanel {\n background: transparent;\n}\n\n#sidebarOptions .sliderPanel A {\n color: #999;\n}\n\n#sidebarOptions .sliderPanel A:hover {\n color: #000;\n background: #fff;\n}\n\n#sidebarOptions .sliderPanel A:active {\n color: #000;\n background: #fff;\n}\n\n.sidebarSubHeading {\n color: #000;\n}\n\n#sidebarTabs {`\n background: #fff\n}\n\n#sidebarTabs .tabSelected {\n color: #000;\n background: #fff;\n border-top: solid 1px #ccc;\n border-left: solid 1px #ccc;\n border-right: solid 1px #ccc;\n border-bottom: none;\n}\n\n#sidebarTabs .tabUnselected {\n color: #999;\n background: #eee;\n border-top: solid 1px #ccc;\n border-left: solid 1px #ccc;\n border-right: solid 1px #ccc;\n border-bottom: none;\n}\n\n#sidebarTabs .tabContents {\n background: #fff;\n}\n\n\n#sidebarTabs .txtMoreTab .tabSelected {\n background: #fff;\n}\n\n#sidebarTabs .txtMoreTab .tabUnselected {\n background: #eee;\n}\n\n#sidebarTabs .txtMoreTab .tabContents {\n background: #fff;\n}\n\n#sidebarTabs .tabContents .tiddlyLink {\n color: #999;\n}\n\n#sidebarTabs .tabContents .tiddlyLink:hover {\n background: #fff;\n color: #000;\n}\n\n#sidebarTabs .tabContents {\n color: #000;\n}\n\n#sidebarTabs .button {\n color: #666;\n}\n\n#sidebarTabs .tabContents .button:hover {\n color: #000;\n background: #fff;\n}\n\n\n/*}}}*/";
config.shadowTiddlers.MPTWStyleSheet = "/***\nCosmetic fixes that probably should be included in a future TW...\n***/\n/*{{{*/\n.viewer .listTitle { list-style-type:none; margin-left:-2em; }\n.editorFooter .button { padding-top: 0px; padding-bottom:0px; }\n/*}}}*/\n/***\nImportant stuff. See TagglyTaggingStyles and HorizontalMainMenuStyles\n***/\n/*{{{*/\n[[TagglyTaggingStyles]]\n[[HorizontalMainMenuStyles]]\n/*}}}*/\n/***\nClint's fix for weird IE behaviours\n***/\n/*{{{*/\nbody {position:static;}\n.tagClear{margin-top:1em;clear:both;}\n/*}}}*/\n/***\nJust colours, fonts, tweaks etc. See SideBarWhiteAndGrey\n***/\n/*{{{*/\nbody {background:#eee; /* font-size:103%; */}\na{ color: #069; }\na:hover{ background: #069; color: #fff; }\n.popup { background: #178; border: 1px solid #069; }\n.headerForeground a { color: #6fc;}\n.headerShadow { left: 2px; top: 2px; }\n.title { padding:0px; margin:0px; }\n.siteSubtitle { padding:0px; margin:0px; padding-left:1.5em; }\n.subtitle { font-size:90%; color:#ccc; padding-left:0.25em; }\nh1,h2,h3,h4,h5 { color: #000; background: transparent; }\n.title {color:black; font-size:2em;}\n.shadow .title {color:#999; }\n.viewer pre { background-color:#f8f8ff; border-color:#ddf; }\n.viewer { padding-top:0px; }\n.editor textarea { font-family:monospace; }\n#sidebarOptions { border:1px #ccc solid; }\n.tiddler {\n border-bottom:1px solid #ccc; border-right:1px solid #ccc; padding-bottom:1em; margin-bottom:1em; \n background:#fff; padding-right:1.5em; }\n#messageArea { background-color:#bde; border-color:#8ab; border-width:4px; border-style:dotted; font-size:90%; }\n#messageArea .button { text-decoration:none; font-weight:bold; background:transparent; border:0px; }\n#messageArea .button:hover {background: #acd; }\n[[SideBarWhiteAndGrey]]\n\n.viewer td {vertical-align:top;}\n\n.viewer table.noBorder {border-style:none;}\n.viewer table.noBorder td {border-style:none;}\n.viewer table.threeCol td {width:33%;}\n\n#adsense {\n margin: 1em 15.7em 0em 1em; border:1px solid #ddd;\n background:#f8f8f8; text-align:center;margin-bottom:1em;overflow:hidden;padding:0.5em;} \n\n.sliderPanel { margin-left: 2em; }\n\n.viewer th { background:#ddd; color:black; }\n/*}}}*/\n/*{{{*/\n/* for testing clint's new formatter. eg {{red{asdfaf}}} */\n.red { color:white; background:red; display:block; padding:1em; } \n\n/* FF doesn't need this. but IE seems to want to make first one white */\n.txtMainTab .tabset { background:#eee; }\n.txtMoreTab .tabset { background:transparent; }\n\n.faq ol li { padding-top:1em; font-size:120%; }\n.faq ol ul li { padding-top:0px; font-size:100%; }\n\n/*}}}*/\n";
config.shadowTiddlers.MPTWPageTemplate = "<!---\nI've just tweaked my gradient colours and the topMenu bit. See HorizontalMainMenu.\n--->\n<!--{{{-->\n<div class='header' macro='gradient vert #000 #069'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div id='topMenu' refresh='content' tiddler='MainMenu'></div>\n</div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>\n<!--}}}-->\n";
config.themes.push("MPTW");
config.shadowTiddlers.MPTWCurvesStyleSheet = "/*{{{*/\n[[MPTWStyleSheet]]\n.tiddler { -moz-border-radius: 2em;}\n.button { -moz-border-radius: 1em;}\n#sidebarOptions { -moz-border-radius: 0 0 1em 1em;}\n.tab { -moz-border-radius: 1em 1em 0 0;}\n.tabContents { -moz-border-radius: 1em 1em 0 0;}\n/*}}}*/";
config.shadowTiddlers.MPTWCurvesPageTemplate = config.shadowTiddlers.MPTWPageTemplate;
config.themes.push("MPTWCurves");
//}}}
/***
!~GTDd3
Created by Tomo (Tom Otvos) from http://www.dcubed.ca
(Based on the original GTD theme by Nathan Bowers at http://snapgrid.com)
***/
//{{{
config.shadowTiddlers.GTDd3PageTemplate = "<div class='header'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu' force='true'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>";
config.shadowTiddlers.GTDd3StyleSheet = "/***\n!GTD specific styles\n***/\n\n/*{{{*/\n\n/* the tagging popup really gets in the way so push it off to the side */\n.tagging { float: right; }\n\n/* this unbullets actions in the actionList macro */\nul.gtdActionList { list-style-type: none; }\nli.gtdActionListProject, li.gtdActionListContext { margin-top: 1.0em; }\n\n.gtdCompletedActionItem { text-decoration: line-through; }\n.gtdNextActionItem { border-bottom: 1px solid red; }\n\n/*}}}*/\n\n/***\n!Imported 3x5 printing styles\n//adapted from the work of Clint Checketts, http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm //\n***/\n\n/*{{{*/\n\n@media print {\n#mainMenu, #sidebar, #messageArea {display: none !important;}\n#displayArea {margin: 1em 1em 0em 1em;}\n\n\n/* LAYOUT ELEMENTS ========================================================== */\n*\n{\n margin: 0;\n padding: 0;\n}\n\n#contentWrapper\n{\n margin: 0;\n width: 100%;\n position: static;\n}\n\nbody {\n background: #fff;\n color: #000;\n font-size: 6.2pt;\n font-family: \"Lucida Grande\", \"Bitstream Vera Sans\", Helvetica, Verdana, Arial, sans-serif;\n}\n\nimg {\n max-width: 2.2in;\n max-height: 4.3in;\n}\n\n#header, #side_container, #storeArea, #copyright, #floater, #messageArea, .save_accesskey, .site_description, #saveTest, .toolbar, .header, .footer, .tagging, .tagged\n{\n display: none;\n}\n\n#tiddlerDisplay, #displayArea\n{\n display: inline;\n}\n\n.tiddler {\n margin: 0 0 2em 0;\n border-top: 1px solid #000;\n page-break-before: always;\n}\n\n.tiddler:first-child {\n page-break-before: ;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n margin-bottom: .3em;\n padding: .2em 0;\n border-bottom: 1px dotted #000;\n}\n\np, blockquote, ul, li, ol, dt, dd, dl, table\n{\n margin: 0 0 .3em 0;\n}\n\nh1, h2, h3, h4, h5, h6\n{\n margin: .2em 0;\n} \n\nh1\n{\n font-size: 1.5em;\n}\n\nh2\n{\n font-size: 1.3em;\n}\n\nh3\n{\n font-size: 1.25em;\n}\n\nh4\n{\n font-size: 1.15em;\n}\n\nh5\n{\n font-size: 1.1em;\n}\n\nblockquote\n{\n margin: .6em;\n padding-left: .6em;\n border-left: 1px solid #ccc;\n}\n\nul\n{\n list-style-type: circle;\n}\n\nli\n{\n margin: .1em 0 .1em 2em;\n line-height: 1.4em; \n}\n\ntable\n{\n border-collapse: collapse;\n font-size: 1em;\n}\n\ntd, th\n{\n border: 1px solid #999;\n padding: .2em;\n}\n\nhr {\n border: none;\n border-top: dotted 1px #777;\n height: 1px;\n color: #777;\n margin: .6em 0;\n}\n}\n/*}}}*/\n\n/***\n!Imported styles for calendar plugin\n***/\n\n/*{{{*/\n.calendar{\n border-bottom: 1px solid #550000;\n}\n\n.viewer .calendar{\n width: 220px;\n}\n\n#mainMenu .calendar{\n font-size: 8px;\n cursor: pointer;\n width: 100%;\n border: 0;\n border-collapse: collapse;\n}\n\n#mainMenu .calendar .button{\n border: 0;\n}\n\n#mainMenu .calendar td{\n font-size: 8pt;\n padding: 0;\n background: #fff;\n border: 0;\n}\n\n#mainMenu .calendar a{\n margin: 0;\n color: #000;\n background: transparent;\n}\n\n#mainMenu .calendar a:hover{\n color: #000;\n background: transparent;\n}\n\n#mainMenu .calendarMonthname,\n#mainMenu .calendar .calendarMonthTitle td a{\n color: #fff;\n}\n\n#mainMenu .calendarDaysOfWeek td{\n background: #500;\n color: #fff;\n}\n/*}}}*/\n\n\n/***\n!Layout Rules /%==============================================%/\n***/\n/*{{{*/\n\nbody { position: static; }\n\n.headerForeground, .headerShadow {\n padding-top: 1em;\n}\n\n.tiddler {\n margin: 0 0 0.9em 0;\n padding-bottom: 1em;\n}\n\n#mainMenu {\n width: 16em;\n font-size: 1em;\n text-align: left;\n}\n\n#mainMenu * {\n font-size: 1em;\n font-weight: normal;\n padding: 0; margin: 0; border: 0;\n}\n\n#mainMenu ul {\n list-style: none;\n margin-bottom: 10px;\n}\n\n#mainMenu li {\n text-indent: 1em;\n}\n\n#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\n display: block; margin: 0;\n}\n\n#displayArea {\n margin-left: 19em;\n}\n\n/*}}}*/\n\n/***\n!Colors Used\n*@@bgcolor(#8cf): #8cf - Background blue@@\n*@@bgcolor(#18f): #18f - Top blue@@\n*@@bgcolor(#04b): #04b - Mid blue@@\n*@@bgcolor(#014):color(#fff): #014 - Bottom blue@@\n*@@bgcolor(#ffc): #ffc - Bright yellow@@\n*@@bgcolor(#fe8): #fe8 - Highlight yellow@@\n*@@bgcolor(#db4): #db4 - Background yellow@@\n*@@bgcolor(#841): #841 - Border yellow@@\n*@@bgcolor(#703):color(#fff): #703 - Title red@@\n*@@bgcolor(#866): #866 - Subtitle grey@@\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #464646;\n color: #000;\n}\n\na{\n color: #04b;\n}\n\na:hover{\n background: #04b;\n color: #fff;\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: #000;\n background: #eee;\n}\n\n.button {\n color: #014;\n border: 1px solid #fff;\n}\n\n.button:hover {\n color: #014;\n background: #fe8;\n border-color: #db4;\n}\n\n.button:active {\n color: #fff;\n background: #db4;\n border: 1px solid #841;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #000;\n}\n\n.headerShadow {\n color: #000;\n}\n\n.headerShadow a {\n font-weight: normal;\n color: #000;\n}\n\n.headerForeground {\n color: #cf6;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #cf6;\n}\n\n/* ??? what is up when you specify a site title colour in IE ??? */\n/* .siteTitle { color: red; } */\n\n/*}}}*/\n/***\n!General tabs /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected {\n color: #fff;\n background: #960;\n border: none;\n}\n\n.tabUnselected {\n color: #fff;\n background: #660;\n}\n\n.tabContents {\n color: #004;\n background: #960;\n border: none;\n}\n\n.tabContents .button, .tabContents a {\n border: none;\n color: #fff;\n}\n\n.tabContents a:hover, .tabset a:hover {\n background: #000;\n}\n\n/* make nested tab areas look different */\n.tabContents .tabSelected, .tabContents .tabContents {\n background: #700;\n color: #fff;\n}\n\n.tabContents .tabContents {\n color: #eeb;\n}\n\n/*}}}*/\n/***\n!Main Menu /%=================================================%/\n***/\n/*{{{*/\n#mainMenu {\n background: #700;\n color: #fff;\n border-right: 3px solid #500;\n}\n\n#mainMenu * {\n color: #fff;\n}\n\n#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\n border: none;\n border-bottom: 1px solid #500;\n border-top: 1px solid #900;\n}\n\n#mainMenu a:hover,\n#mainMenu a.button:hover {\n background-color: #b00;\n color: #fff;\n}\n\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n color: #000;\n background: #eeb;\n border-right: 3px solid #bb8;\n border-bottom: 3px solid #520;\n}\n\n#sidebarOptions input {\n border: 1px solid #04b;\n}\n\n#sidebarOptions .sliderPanel {\n background: #fff;\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: #700;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #fff;\n background: #700;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #700;\n background: #fff;\n}\n\n#sidebarOptions a {\n color: #700;\n border: none;\n}\n\n#sidebarOptions a:hover, #sidebarOptions a:active {\n color: #fff;\n background: #700;\n}\n\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n border-right: 3px solid #da1;\n border-bottom: 3px solid #a80;\n background: #ffe72f;\n color: #014;\n}\n\n#messageArea .button {\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: #014;\n background: #fff;\n}\n\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #333;\n border: none;\n}\n\n.popup hr {\n color: #000;\n}\n\n.popup li.disabled {\n color: #666;\n background: #cf6;\n}\n\n.popup li a, .popup li a:visited {\n color: #000;\n border: 1px outset #cf6;\n background: #cf6;\n}\n\n.popup li a:hover {\n color: #000;\n border: 1px outset #cf6;\n background: #ef9;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler {\n background: #fff;\n border-right: 3px solid #aaa;\n border-bottom: 3px solid #555;\n}\n\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n color: #866;\n}\n\n.title {\n color: #900;\n}\n\n.subtitle {\n color: #866;\n}\n\n.toolbar {\n color: #000;\n}\n\n.toolbar .button {\n background: #cf6;\n border: 1px outset #cf6;\n}\n\n.toolbar .button:hover {\n background: #ef9;\n}\n\n.tagging, .tagged {\n border: 1px solid #eee;\n background-color: #eee;\n}\n\n.selected .tagging, .selected .tagged {\n background-color: #ddd;\n border: 1px solid #bbb;\n}\n\n.tagging .listTitle, .tagged .listTitle {\n color: #014;\n}\n\n.tagging .button, .tagged .button {\n border: none;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.sparkline {\n background: #8cf;\n border: 0;\n}\n\n.sparktick {\n background: #014;\n}\n\n.errorButton {\n color: #ff0;\n background: #f00;\n}\n\n.cascade {\n background: #eef;\n color: #aac;\n border: 1px solid #aac;\n}\n\n.imageLink, #displayArea .imageLink {\n background: transparent;\n}\n\n/*}}}*/\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n border: 1px solid #db4;\n}\n\n.viewer blockquote {\n border-left: 3px solid #666;\n}\n\n.viewer table {\n border: 2px solid #333;\n}\n\n.viewer th, thead td {\n background: #db4;\n border: 1px solid #666;\n color: #fff;\n}\n\n.viewer td, .viewer tr {\n border: 1px solid #666;\n}\n\n.viewer pre {\n border: 1px solid #fe8;\n background: #ffc;\n}\n\n.viewer code {\n color: #703;\n}\n\n.viewer hr {\n border: 0;\n border-top: dashed 1px #666;\n color: #666;\n}\n\n.highlight, .marked {\n background: #fe8;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor input {\n border: 1px solid #04b;\n}\n\n.editor textarea {\n border: 1px solid #04b;\n width: 100%;\n}\n\n.editorFooter {\n color: #aaa;\n}\n\n/*}}}*/\n/***\n!Personal preferences\n***/\n\n/*{{{*/\n/* not required, but the menu looks a whole lot nicer flushed left */\n#mainMenu { text-align: left; }\n/* make input fields in viewer (options) show up in correct size */\n.viewer input { font-size: 0.9em; }\n/*}}}*/\n";
config.themes.push("GTDd3");
//}}}
I don't read nearly as much as I want to
I went to Philly this past weekend to spend some time with some of my college roommates, a sort of birthday-celebration. In addition, we had a screening of the new Cheetah Girls: One World movie. No, I am not a 13-year-old girl. we were watching because it was the Disney Channel debut of Rupak Ginn, another of our college roommates. Congratulations, Rupak!
<Html><center>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Ed6fcp_nHoE&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/Ed6fcp_nHoE&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center></html>
Growing old is mandatory; growing up is optional.
This week I'm all over the place helping prepare Scott, my Little Brother, for his trip to China. He and 8 of his classmates are traveling to Hangzhou for a week. He earned it by passing an oral exam, keeping his grades up, and demonstrating good behavior.
This, obviously, is a huge opportunity for him. The furthest I ever went for a school event was France, and that wasn't until junior year in high school. To travel across the world at 14 is pretty exciting. I'm really proud of him.
But I'm stressed out! So much stuff to make sure is taken care of.
//{{{
config.formatters.push( {
name: "customClasses",
match: "{{",
lookahead: "{{[\\s]*([\\w]+[\\s\\w]*)[\\s]*{((?:[^}]|(?:}(?!}))|(?:}}(?!})))*)}}}",
handler: function(w){
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source);
var p = createTiddlyElement(w.output,"span",null,lookaheadMatch[1]);
wikify( lookaheadMatch[2], p, null, w.tiddler);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
});
config.formatters.push( {
name: "customClasses2",
match: "{div{",
lookahead: "{div{[\\s]*([\\w]+[\\s\\w]*)[\\s]*{((?:[^}]|(?:}(?!}))|(?:}}(?!})))*)}}}",
handler: function(w){
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source);
var p = createTiddlyElement(w.output,"div",null,lookaheadMatch[1]);
wikify( lookaheadMatch[2], p, null, w.tiddler);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
});
//}}}
Last night, on April 5th, 2008, Brian Conroy proposed to Kristi Jobson in front of dozens of our closest friends. I'd like to give a huge congratulations to both of them. They are two of my good friends who have one of the most beautiful relationships I've seen. I can't wait to see where life takes them next, and I'm glad that wherever they may go, they'll go together.
<html><center>
<embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-3179694456557591713&hl=en" flashvars=""> </embed>
</center></html>
__[[The Perry Bible Fellowship: The Trial of Colonel Sweeto and Other Stories|http://www.amazon.com/Perry-Bible-Fellowship-Colonel-Stories/dp/1593078447/ref=sr_1_1?ie=UTF8&s=books&qid=1242687235&sr=1-1]]__ by
Nicholas Gurewitch
When I picked it up at the library, I thought I must have requested the wrong book. It looked like I got an novelization of the board game Candy Land. But inside the cover is something much much different. It's a collection of three-frame comic strips. If you appreciate outlandish humor and aren't easily offended, you need to see this book.
*@@bgcolor(#eaf): #eaf- Test@@
Name: Spring
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/springheader.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#fff): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
/***
|Name|CommentPlugin|
|Source|http://www.TiddlyTools.com/#CommentPlugin|
|Documentation|http://www.TiddlyTools.com/#CommentPluginInfo|
|Version|2.8.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|automatically insert formatted comments into tiddler content|
!!!!!Documentation
>see [[CommentPluginInfo]]
!!!!!Configuration
>see [[CommentPluginInfo]]
!!!!!Revisions
<<<
2008.04.21 [2.8.0] replaced use of %n markers with special 'named' markers: %tiddler%, %UTC%, %random%, %who%, %when%, %subject% and %message% to avoid conflict with TW core processing of tiddler content. Also, added support for optional 'reverse' macro param.
2008.04.17 [2.7.0] added support for constructing target by inserting UTC timestamp, random number, username and/or subject text into target tiddler title
2008.04.15 [2.6.0] added support for custom format and dateformat parameters to override global default formats
2008.04.15 [2.5.1] make sure tiddlers are displayed before attempting to refresh them
2008.04.15 [2.5.0] refresh tiddler containing comment macro after adding new comment to target tiddler (if different)
| please see [[CommentPluginInfo]] for previous revision details |
2006.04.20 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.CommentPlugin= {major: 2, minor: 8, revision: 0, date: new Date(2008,4,17)};
config.macros.comment= {
marker: "/%"+"comment"+"%/",
fmt: "__''%subject%''__\n^^posted by %who% on %when%^^\n<<<\n%message%\n<<<\n",
datefmt: "DDD, MMM DDth, YYYY at hh12:0mm:0ss am",
tags: "",
reverse: false,
handler: function(place,macroName,params,wikifier,paramstring,tiddler) {
var span=createTiddlyElement(place,"span");
var here=story.findContainingTiddler(place);
if (here) var tid=here.getAttribute("tiddler"); // containing tiddler title
span.setAttribute("here",tid);
var target=(params[0]&¶ms[0].length&¶ms[0]!="here")?params[0]:tid; // target title
span.setAttribute("target",target);
var reverse=(params[1]&¶ms[1].toLowerCase()=="reverse"); if (reverse) params.shift();
span.setAttribute("reverse",(reverse||this.reverse)?"true":"false");
var tags=(params[1]&¶ms[1].length)?params[1]:this.tags; // target tags
span.setAttribute("tags",tags);
var fmt=(params[2]&¶ms[2].length)?params[2]:this.fmt; // output format
span.setAttribute("fmt",fmt.unescapeLineBreaks());
var datefmt=(params[3]&¶ms[3].length)?params[3]:this.datefmt; // date format
span.setAttribute("datefmt",datefmt.unescapeLineBreaks());
var html=this.html;
html=html.replace(/%nosubject%/g,(this.fmt.indexOf("%subject%")==-1)?"none":"block");
html=html.replace(/%nomessage%/g,(this.fmt.indexOf("%message%")==-1)?"none":"block");
span.innerHTML=html; // append comment form to content
},
html: "<form style='display:inline;margin:0;padding:0;'>\
<div style='display:%nosubject%'>\
subject:<br>\
<input type='text' name='subject' title='enter subject text' style='width:100%' value=''>\
</div>\
<div style='display:%nomessage%'>\
message:<br>\
<textarea name='message' rows='7' title='enter message text' style='width:100%'></textarea>\
</div>\
<center>\
<i>Please enter your information and then press</i>\
<input type='button' value='post' onclick='\
var s=this.form.subject; var m=this.form.message;\
if (\"%nosubject%\"!=\"none\" && !s.value.length)\
{ alert(\"Please enter a subject\"); s.focus(); return false; }\
if (\"%nomessage%\"!=\"none\" && !m.value.length)\
{ alert(\"Please enter a message\"); m.focus(); return false; }\
var here=this.form.parentNode.getAttribute(\"here\");\
var reverse=this.form.parentNode.getAttribute(\"reverse\")==\"true\";\
var target=this.form.parentNode.getAttribute(\"target\");\
var tags=this.form.parentNode.getAttribute(\"tags\").readBracketedList();\
var fmt=this.form.parentNode.getAttribute(\"fmt\");\
var datefmt=this.form.parentNode.getAttribute(\"datefmt\");\
config.macros.comment.addComment(here,reverse,target,tags,fmt,datefmt,s.value,m.value);'>\
</center>\
</form>",
addComment: function(here,reverse,target,newtags,fmt,datefmt,subject,message) {
var UTC=new Date().convertToYYYYMMDDHHMMSSMMM();
var rand=Math.random().toString();
var who=config.options.txtUserName;
var when=new Date().formatString(datefmt);
target=target.replace(/%tiddler%/g,here);
target=target.replace(/%UTC%/g,UTC);
target=target.replace(/%random%/g,rand);
target=target.replace(/%who%/g,who);
target=target.replace(/%subject%/g,subject);
var t=store.getTiddler(target);
var text=t?t.text:"";
var modifier=t?t.modifier:config.options.txtUserName;
var modified=t?t.modified:new Date();
var tags=t?t.tags:[];
for(var i=0; i<newtags.length; i++) tags.pushUnique(newtags[i]);
var fields=t?t.fields:{};
var out=fmt;
out=out.replace(/%when%/g,when);
out=out.replace(/%who%/g,who);
out=out.replace(/%subject%/g,subject);
out=out.replace(/%message%/g,message);
var pos=text.indexOf(this.marker);
if (pos==-1) pos=text.length; // no marker - insert at end
else if (reverse) pos+=this.marker.length; // reverse order by inserting AFTER marker
var newtxt=text.substr(0,pos)+out+text.substr(pos);
store.saveTiddler(target,target,newtxt,modifier,modified,tags,fields);
if (document.getElementById(story.idPrefix+target))
story.refreshTiddler(target,DEFAULT_VIEW_TEMPLATE,true);
if (here!=target && document.getElementById(story.idPrefix+here))
story.refreshTiddler(here,DEFAULT_VIEW_TEMPLATE,true);
}
};
//}}}
/***
|Name|CommentPluginInfo|
|Source|http://www.TiddlyTools.com/#CommentPlugin|
|Documentation|http://www.TiddlyTools.com/#CommentPluginInfo|
|Version|2.8.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|Documentation|
|Requires||
|Overrides||
|Description|Documentation for CommentPlugin|
!!!!!Usage
<<<
syntax:
{{{
<<comment TiddlerName reverse tags format dateformat>>
}}}
where:
*''~TiddlerName'' //(optional)//<br>specifies the 'target' tiddler into which the comments should be written. If omitted, the tiddler in which the {{{<<comment>>}}} macro is contained is used by default. //Note: when specifying additional macro parameters, you can use a blank ~TiddlerName (e.g., {{{""}}}) or the keyword //{{{"here"}}}// as a 'placeholder' to allow the current 'containing tiddler' to be used by default.// The specified target can also include special //named substitution markers// to automatically generate a unique title for each target tiddler by dynamically inserting values to construct the target ~TiddlerName, where:
**%tiddler%=containing tiddler title,
**%UTC%=UTC timestamp (YYYYMMMDD.HHMMSSMMM),
**%random%=random decimal number (.123456789),
**%who%=current TiddlyWiki username,
**%subject%=comment subject text.
*''reverse'' //(optional)//<br>specifies the order in which new comments are added to the target tiddler. By default, new comments are added //following// existing comments (if any). When this parameter is present, new comment will be inserted //before// existing comments, resulting in a reverse-chronological display (i.e, newest comment shown first).
*''tags'' //(optional)//<br>specifies one or more space-separated tags to add to the target tiddler whenever a comment is written. Note that the list of tags should be enclosed in "..." so that it is processed as a single parameter. Also, to specify tags when writing comments to the current tiddler, use a blank placeholder for the TiddlerName (e.g., "")
*''format'' //(optional)//<br>specifies a custom output format that overrides the default output format defined via {{{config.macros.comment.fmt}}} and is used when inserting comments into the target tiddler. The format uses //named substitution markers//, where:
**%tiddler%=containing tiddler title,
**%UTC%=UTC timestamp (YYYYMMMDD.HHMMSSMMM),
**%random%=random decimal number (.123456789),
**%when%=formatted date/time,
**%who%=username,
**%subject%=subject,
**%message%=comment body text.
*''dateformat'' //(optional)//<br>specifies a custom date/timestamp output used within the comment format above. When present, this parameter overrides the default date/timestamp format defined via {{{config.macros.comment.datefmt}}}. See the ''Configuration'' section below for additional details.
To indicate the location within the target tiddler where new comments are to be saved, embed a marker: {{{/%comment%/}}}, in the tiddler source. Each new comment is inserted immediately preceding the marker, resulting in a time-ordered sequence of comments. If no comment marker is present in the target tiddler, new comments are automatically appended to the end of that tiddler's content.
<<<
!!!!!Configuration
<<<
To configure the behavior and formats used by [[CommentPlugin]], place one or more of the following javascript statements in a tiddler tagged with <<tag systemConfig>>: //(note: the default values for each setting are shown)//
{{{
config.macros.comment.reverse=false;
}}}
>when set to {{{true}}}, all new comments to be inserted //following// the comment marker instead of preceding it, resulting in a reverse chronological display order. If no comment marker is present in the target tiddler source, the 'reverse' option is ignored and new comments are always appended to the end of the target tiddler.
{{{
config.macros.comment.fmt="__''%subject%''__\n^^posted by %who% on %when%^^\n<<<\n%message%\n<<<\n";
}}}
>defines the comment output format to be inserted into the tiddler, where: %when%=date/time, %who%=username, %subject%=subject, and %message% is the body of the comment. //Note: if you omit %subject% from the output format, the subject input field on the comment form will be automatically suppressed. Similarly, omitting %message% from the output format suppresses the message input field. This can be useful when using the {{{<<comment>>}}} macro to create simple activity logs that only require a short, one-line subject rather than entering extended message content.//
{{{
config.macros.comment.datefmt="DDD, MMM DDth, YYYY at hh12:0mm:0ss am";
}}}
>defines the date/timestamp output used within the comment format above.
{{{
config.macros.comment.tags="";
}}}
>defines an optional space-separated, list of tags to be added to the target tiddler whenever a comment is written. This is most useful when the target tiddler is different from the tiddler containing the {{{<<comment>>}}} macro, to make it easy to locate that tiddler later on.
Note: as of revision 2.0.0, dependencies on [[NestedSlidersPlugin]], [[MoveablePanelPlugin]], [[InlineJavascriptPlugin]] and [[ExpandSlidersScript]] have been eliminated. As a result, the comment form and generated comment output are no longer automatically contained within sliders and the "view all/close all" command is not automatically included. To recreate the previous output format and comment interface, use the following syntax in the tiddler in which you want to place your comments:
{{{
+++^40em^[add a note]...
<<moveablePanel>>add a note
----
<<comment here "" "+++!!!!![%when% (%who%): %subject%]>...\n%message%\n===\n">>===
| <<tiddler ExpandSlidersScript with: here "view all" "close all">>
}}}
<<<
!!!!!Revisions
<<<
2008.04.21 [2.8.0] replaced use of %n markers with special 'named' markers: %tiddler%, %UTC%, %random%, %who%, %when%, %subject% and %message% to avoid conflict with TW core processing of tiddler content. Also, added support for 'reverse' macro param.
2008.04.17 [2.7.0] added support for constructing target by inserting UTC timestamp, random number, username and/or subject text into target tiddler title
2008.04.15 [2.6.0] added support for custom format and dateformat parameters to override global default formats
2008.04.15 [2.5.1] make sure tiddlers are displayed before attempting to refresh them
2008.04.15 [2.5.0] refresh tiddler containing comment macro after adding new comment to target tiddler (if different)
2008.04.14 [2.4.0] added optional tag list parameter for tagging the target tiddler when comments are written
2008.04.14 [2.3.0] if %2 (subject) or %3 (message) are omitted from format string, suppress display and validation of corresponding form elements.
2008.04.13 [2.2.0] added optional ~TiddlerName param to specify target tiddler for writing comments
2008.04.10 [2.1.0] converted from inline script to plugin
2008.04.05 [2.0.0] removed dependencies on NestedSlidersPlugin, MoveablePanelPlugin, ExpandSlidersScript
2007.10.24 [1.2.0] added config.options.txtCommentDateFormat
2007.07.05 [1.1.0] added 'view all/close all' toolbar item plus code cleanup
2007.06.28 [1.0.2] added tiddler.fields to saveTiddler() call (preserves custom fields)
2007.05.26 [1.0.1] added support for optional 'reverse' keyword.
2006.04.20 [1.0.0] initial release
<<<
[>img[tiddlywiki.org logo|http://trac.tiddlywiki.org/chrome/site/tworg_logo_med.jpg][http://www.tiddlywiki.org]]TiddlyWiki today is the result of the efforts of dozens of people around the world generously contributing their time and skill. The core of the TiddlyWiki development community is http://www.tiddlywiki.org. It hosts the master copy of the TiddlyWiki source code, and a system for tracking bugs and enhancement requests. The community welcomes [[contributions|Contribute]].
There are two GoogleGroups for discussions about TiddlyWiki. They are the best places to ask questions about TiddlyWIki, and to connect with other enthusiasts:
* A TiddlyWiki group for general discussion, bug reports and announcements at http://groups.google.com/group/TiddlyWiki
* A TiddlyWikiDev group for discussion about TiddlyWiki development at http://groups.google.com/group/TiddlyWikiDev
For non-English language speakers,
* TiddlyWikiFR, in French, at http://groups.google.com/group/TiddlyWikiFR
* TiddlyWiki 華語支援論壇, in Chinese, at http://groups.google.com/group/TiddlyWiki-zh
* TiddlyWikiPT, in Brazilian Portuguese, at http://groups.google.com.br/group/tiddlywikipt
<html>
<a href="http://www.frappr.com/tiddlywiki"><img src="http://www.frappr.com/i/frapper_sticker.gif" border="0" alt="Check out our Frappr!" title="Check out our Frappr!"></a>
</html>
TiddlyWiki is legally owned by [[The UnaMesa Foundation|http://www.unamesa.org/]].
| Artist | # of times seen live |
| [[New Found Glory]] | 6 |
| Story of the Year | 4 |
| Our Lady Peace | 3 |
| Blink-182 | 3 |
| Bowling for Soup | 3 |
| [[Linkin Park]] | 3 |
| Sum41 | 2 |
| Green Day | 2 |
| Billy Talent | 2 |
| Motion City Soundtrack| 2 |
| Family Force 5 | 2 |
| My Chemical Romance | 2 |
| Fall Out Boy | 2 |
| Flogging Molly | 2 |
| Joan Jett | 2 |
| Hanson | 2 |
| Yellowcard | 2 |
| Christina Aguilera | 1 |
| Lit | 1 |
| Offspring | 1 |
| Meg and Dia | 1 |
| No Doubt | 1 |
| Boxcar Racer | 1 |
| Something Corporate | 1 |
| Pink Spiders | 1 |
| Trapt | 1 |
| POD | 1 |
| Hoobastank | 1 |
| Foo Fighters | 1 |
| Weezer | 1 |
| Early November | 1 |
| Zebrahead | 1 |
| Simple Plan | 1 |
| Eve 6 | 1 |
| Wyclef Jean | 1 |
| Busta Rhymes | 1 |
| Bayside | 2 |
| Set Your Goals | 1 |
| Boys Like Girls | 1 |
| Coheed and Cambria | 1 |
| MC Chris | 1 |
| Cute is What we Aim For | 1 |
| P.O.S. | 1 |
| Pepper | 1 |
| Red Jumpsuit Apparatus | 1 |
| Rocket Summer | 1 |
| Underoath | 1 |
| Flo Rida | 1 |
So I guess I should probably mention that I finally ended up moving into the condo. There was some last minute wrangling. Even though they said the paperwork was in, it still wasn't in until late on the day of the second closing. But we got all the stuff signed, and I moved in. Things are getting put away slowly, but it's starting to feel like home. It is smaller than my apartment though, so it feels a little cramped now. The solution is to just get smaller furniture. So what's this I hear about IKEA?
I'm trying to buy a condo. And it's killing me.
Overstatement. It's not that bad, but it is stressful. I'm trying to juggle all these different priorities while also wondering whether it makes sense to buy at all. I keep on seeing places that are good except for one thing. But that one thing is major enough to make me think that I'll hate myself if I commit to it.
If it happens, I hope that it is done by November. The longer I wait, the less sense it makes.
/***
Just some bits and pieces
***/
//{{{
config.messages.messageClose.text = "X"; // default is "close"
config.views.wikified.defaultText = ""; // default is "The tiddler '%0' doesn't yet exist. Double-click to create it"
config.options.chkHttpReadOnly = false; // Enable editing so that visitors can experiment with it
//}}}
Congratulations, Brian and Kristi: July 11, 2009.
What a beautiful wedding!
If you have any questions, comments, or concerns about the site, please e-mail [[Edmund Rogers]] at [[edmund.rogers@gmail.com|mailto:edmund.rogers@gmail.com]]
Am I online? Drop me a message:
<html><iframe src="http://www.google.com/talk/service/badge/Show?tk=z01q6amlq8a0vdnfof04vuoujtcgm7us1jl5pcslkc0fcpdl0gp6c2i7o61gqbnq2l15hlid9plkmmn90qb6qm0ngg5ufd79fhi7tapblioumt5qk4bo21l84699jaaq7lb47rc3dofvs4v2vtqf4h33qt9nijaptjhbme8ao&w=200&h=60" frameborder="0" allowtransparency="true" width="200" height="60"></iframe></html>
[[Rome Flag 160|http://www.romesnowboards.com/product/boards/flag/]]
[[Rome Slash 158|http://www.romesnowboards.com/product/boards/slash/]]
[[Ride EX|http://www.ridesnowboards.com/bindings/binding.asp?ProductID=27]]
[[Flow NXT AT|http://usa.flow.com/bindings/men/nxt-at.html]]
[[DC Judge 11.5|http://www.dcshoes.com/snow/]]
/***
''Date Plugin for TiddlyWiki version 2.x''
^^author: Eric Shulman - ELS Design Studios
source: http://www.TiddlyTools.com/#DatePlugin
license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
^^last update: <<date tiddler "DDD, MMM DDth, YYYY hh:0mm:0ss">>^^
There are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW. While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier. This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.
You can ''specify a date using a combination of year, month, and day number values or mathematical expressions (such as "Y+1" or "D+30")'', and then just display it as formatted date text, or create a ''link to a 'dated tiddler''' for quick blogging, or create a ''popup menu'' containing the dated tiddler link plus links to ''tiddlers that were changed'' as well as any ''scheduled reminders'' for that date.
!!!!!Usage
<<<
When installed, this plugin defines a macro: {{{<<date [mode] [date] [format] [linkformat]>>}}}. All of the macro parameters are optional and, in it's simplest form, {{{<<date>>}}}, it is equivalent to the ~TiddlyWiki core macro, {{{<<today>>}}}.
However, where {{{<<today>>}}} simply inserts the current date/time in a predefined format (or custom format, using {{{<<today [format]>>}}}), the {{{<<date>>}}} macro's parameters take it much further than that:
* [mode] is either ''display'', ''link'' or ''popup''. If omitted, it defaults to ''display''. This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.
* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively. You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters. Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler. You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values.
* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax. The default is "YYYY.0MM.0DD"
>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^
>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^
>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^
>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^
* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format
In addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:
''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}''
Note that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:
* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status: 'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.
* [weekend] - true indicates a weekend, false indicates a weekday. When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.
<<<
!!!!!Examples
<<<
The current date: <<date>>
The current time: <<date today "0hh:0mm:0ss">>
Today's blog: <<date link today "DDD, MMM DDth, YYYY">>
Recent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>
The first day of next month will be a <<date Y M+1 1 "DDD">>
This tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>
The SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>
This document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>
<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''DatePlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2006.02.14 [2.0.5]''
when readOnly is set (by TW core), omit "new reminders..." popup menu item and, if a "dated tiddler" does not already exist, display the date as simple text instead of a link.
''2006.02.05 [2.0.4]''
added var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables
''2006.01.18 [2.0.3]''
In 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content. With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned. To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit") equals "text", and then append the new reminder to the contents of that control.
''2006.01.11 [2.0.2]''
correct 'weekend' override detection logic in showDate()
''2006.01.10 [2.0.1]''
allow custom-defined weekend days (default defined in config.macros.date.weekend[] array)
added flag param to showDate() API to override internal weekend[] array
''2005.12.27 [2.0.0]''
Update for TW2.0
Added parameter handling for 'linkformat'
''2005.12.21 [1.2.2]''
FF's date.getYear() function returns 105 (for the current year, 2005). When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number. But IE's date.getYear() already returns 2005. As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005). Adding +1900 is now conditional so the values will be correct on both browsers.
''2005.11.07 [1.2.1]''
added support for "tiddler" dynamic date parameter
''2005.11.06 [1.2.0]''
added support for "tiddler:title" dynamic date parameter
''2005.11.03 [1.1.2]''
when a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu. Based on a suggestion from BenjaminKudria.
''2005.11.03 [1.1.1]''
Temporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache. While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed. This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).
''2005.11.01 [1.1.0]''
corrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended. This should hopefully speed up calendar generators and other plugins that render multiple dates...
''2005.10.31 [1.0.1]''
documentation and code cleanup
''2005.10.31 [1.0.0]''
initial public release
''2005.10.30 [0.9.0]''
pre-release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].
<<<
!!!!!Code
***/
//{{{
version.extensions.date = {major: 2, minor: 0, revision: 5, date: new Date(2006,2,14)};
//}}}
//{{{
// 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]}
//}}}
//{{{
config.macros.date = {
format: "YYYY.0MM.0DD", // default date display format
linkformat: "YYYY.0MM.0DD", // 'dated tiddler' link format
weekendbg: "#c0c0c0", // "cocoa"
holidaybg: "#c0ffee", // "coffee"
modifiedsbg: "#bbeeff", // "beef"
remindersbg: "#ffaace", // "face"
holidays: [ "01/01", "07/04", "07/24", "11/24" ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)
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 ]
};
//}}}
//{{{
config.macros.date.handler = function(place,macroName,params)
{
// do we want to see a link, a popup, or just a formatted date?
var mode="display";
if (params[0]=="display") { mode=params[0]; params.shift(); }
if (params[0]=="popup") { mode=params[0]; params.shift(); }
if (params[0]=="link") { mode=params[0]; params.shift(); }
// get the date
var now = new Date();
var date = now;
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)
{
if (!mode) mode="display";
if (!format) format=config.macros.date.format;
if (!linkformat) linkformat=config.macros.date.linkformat;
if (!autostyle) autostyle=false;
// 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) return;
if (hasModifieds(date))
{ link.style.fontStyle="normal"; link.style.fontWeight="bold"; }
if (hasReminders(date))
{ link.style.textDecoration="underline"; }
if(isToday(date))
{ link.style.border="1px solid black"; }
if( (weekend!=undefined?weekend:isWeekend(date)) && (config.macros.date.weekendbg!="") )
{ place.style.background = config.macros.date.weekendbg; }
if(isHoliday(date)&&(config.macros.date.holidaybg!=""))
{ place.style.background = config.macros.date.holidaybg; }
if (hasModifieds(date)&&(config.macros.date.modifiedsbg!=""))
{ place.style.background = config.macros.date.modifiedsbg; }
if (hasReminders(date)&&(config.macros.date.remindersbg!=""))
{ place.style.background = config.macros.date.remindersbg; }
}
//}}}
//{{{
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)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var popup = createTiddlerPopup(this);
if(popup) {
// always show dated tiddler link (or just date, if readOnly) at the top...
if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))
createTiddlyLink(popup,this.date.formatString(this.linkformat),true);
else
createTiddlyText(popup,this.date.formatString(this.linkformat));
addModifiedsToPopup(popup,this.date,this.format);
addRemindersToPopup(popup,this.date,this.linkformat);
}
scrollToTiddlerPopup(popup,false);
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return(false);
}
//}}}
//{{{
function indexModifieds() // build list of tiddlers, hash indexed by modification date
{
var modifieds= { };
var tiddlers = store.getTiddlers("title");
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(popup,when,format)
{
if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();
var indent=String.fromCharCode(160)+String.fromCharCode(160);
var mods = config.macros.date.modifieds[when.formatString("YYYY0MM0DD")];
if (mods) {
mods.sort();
var e=createTiddlyElement(popup,"div",null,null,"changes:");
for(var t=0; t<mods.length; t++) {
var link=createTiddlyLink(popup,mods[t],false);
link.appendChild(document.createTextNode(indent+mods[t]));
createTiddlyElement(popup,"br",null,null,null);
}
}
}
//}}}
//{{{
function indexReminders() // build list of tiddlers with reminders, hash indexed by reminder date
{
var reminders = { };
if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed
var matches = store.search("reminder",false,false,"title","excludeSearch");
var macroPattern = "<<([^>\\s]+)(?:\\s*)([^>]*)>>";
var macroRegExp = new RegExp(macroPattern,"mg");
var arr = [];
for(var t=matches.length-1; t>=0; t--)
{
var targetText = matches[t].text;
do {
// Get the next formatting match
var formatMatch = macroRegExp.exec(targetText);
if(formatMatch)
{
if (formatMatch[1] != null && formatMatch[1].toLowerCase() == "reminder")
{
//Find the matching date.
var params = formatMatch[2].readMacroParams();
var dateHash = getParamsForReminder(params);
var date = findDateForReminder(dateHash);
if (date != null)
{
var dateindex = date.formatString("YYYY0MM0DD")
if (!reminders[dateindex])
reminders[dateindex]=new Array();
reminders[dateindex].pushUnique(t);
}
}
}
} while(formatMatch);
}
return reminders;
}
function hasReminders(date) // returns true if date has reminders
{
if (window.reminderCacheForCalendar != null)
return window.reminderCacheForCalendar[date] != null;
return false; // ELS 2005.11.03: BYPASS due to performance issues
if (!config.macros.date.reminders) config.macros.date.reminders = indexReminders();
return (config.macros.date.reminders[date.formatString("YYYY0MM0DD")]!=undefined);
}
function addRemindersToPopup(popup,when,format)
{
if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed
var indent = String.fromCharCode(160)+String.fromCharCode(160);
var reminders=findTiddlersWithReminders(when, [0,31],null,1);
var e=createTiddlyElement(popup,"div",null,null,"reminders:"+(!reminders.length?" none":""));
for(var t=0; t<reminders.length; t++) {
link = createTiddlyLink(popup,reminders[t].tiddler,false);
var diff=reminders[t].diff;
diff=(!diff)?"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));
createTiddlyElement(popup,"br",null,null,null);
}
if (readOnly) return; // omit "new reminder..." link
var link = createTiddlyLink(popup,indent+"new reminder...",true); createTiddlyElement(popup,"br");
var title = when.formatString(format);
link.title="add a reminder to '"+title+"'";
link.onclick = function() {
// show tiddler editor
story.displayTiddler(null, title, 2, null, null, false, false);
// find body 'textarea'
var c =document.getElementById("tiddler" + title).getElementsByTagName("*");
for (var i=0; i<c.length; i++) if ((c[i].tagName.toLowerCase()=="textarea") && (c[i].getAttribute("edit")=="text")) break;
// append reminder macro to tiddler content
if (i<c.length) {
if (store.tiddlerExists(title)) c[i].value+="\n"; else c[i].value="";
c[i].value += "<<reminder day:"+when.getDate()+" month:"+(when.getMonth()+1)+" year:"+(when.getFullYear())+' title:"Enter a title" >>';
}
};
}
//}}}
11
[[Sunday River|http://www.sundayriver.com/]] (Dec 8, 2007)
[[Nashoba|http://www.skinashoba.com/]] (Dec 16, 2007)
[[Stowe|http://www.stowe.com/]] (Jan 26, 2008)
[[Brighton|http://www.skibrighton.com/]] (Feb 6-10, 2008)
[[Wachusett|http://wawa.wachusett.com/]] (Feb 23, 2008)
[[Killington|http://www.killington.com/winter/index.html]] (March 24, 2008)
[[Sunday River|http://www.sundayriver.com/]] (Mar 29, 2008)
5
[[Wachusett|http://wawa.wachusett.com/]] (Dec 9, 2008)
[[Wachusett|http://wawa.wachusett.com/]] (Dec 20, 2008)
[[Wachusett|http://wawa.wachusett.com/]] (Jan 11, 2009)
[[Wachusett|http://wawa.wachusett.com/]] (Jan 21, 2009)
[[Sunapee|http://www.mtsunapee.com/]] (Feb 21, 2009)
__[[Death Note|http://www.amazon.com/Death-Note-1-Tsugumi-Ohba/dp/1421501686/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1199996288&sr=8-1]]__ by Tsugumi Ohba
Oh so good! I heard about it hear and there and finally decided to check it out. It's both a manga (Japanese comic), an anime (Japanese cartoon), and movie (Japanese movie). I recommend consuming the series in that order (books, cartoon, movie). There are 12 volumes in the series, 37 episodes of the cartoon, and 2 movies (so far).
Without revealing anything, the story is about a bright high school student, Light, who finds a notebook belonging to a reaper (or Death God). Whoever's name is written in the book dies. The story follows his attempts to change the world while evading the authorities who want to bring him to justice.
Reading it reminded me of playing [[Mafia|http://en.wikipedia.org/wiki/Mafia_%28game%29]]. As the police move in on him, he must think of ways to throw off suspicion while furthering his goals. It's a story that kept me guessing. The characters were interesting, and the complications were fun without being too over the top.
Highly recommended.
[[What's New]]
[[Welcome]]
[[Tag Cloud]]
/***
Example usage:
{{{<<deleteDone daysOld:1 title:'delete done'>>}}}
<<deleteDone daysOld:0 title:'delete done'>>
***/
//{{{
config.macros.deleteDone = {
handler: function (place,macroName,params,wikifier,paramString,tiddler) {
var namedParams = (paramString.parseParams(daysOld))[0];
var daysOld = namedParams['daysOld'] ? namedParams['daysOld'][0] : 30; // default
var buttonTitle = namedParams['title'] ? namedParams['title'][0] : "Delete Done Tasks";
createTiddlyButton(place,buttonTitle,"Delete done tasks older than "+daysOld+" days old",this.deleteDone(daysOld));
},
deleteDone: function(daysOld) {
return function() {
var collected = [];
var compareDate = new Date();
compareDate.setDate(compareDate.getDate() - daysOld);
store.forEachTiddler(function (title,tiddler) {
if (tiddler.tags.containsAll(["Next"])
&& tiddler.modified < compareDate) {
collected.push(title);
}
});
if (collected.length == 0) {
alert("No done tasks found older than "+daysOld+" days");
}
else {
if (confirm("Done tasks older than "+daysOld+" days:\n'"
+ collected.join("', '") + "'\n\n\n"
+ "Are you sure you want to delete these tasks?")) {
for (var i=0;i<collected.length;i++) {
store.removeTiddler(collected[i]);
displayMessage("Deleted '"+collected[i]+"'");
}
}
}
}
}
};
//}}}
/***
Example usage:
{{{<<deleteTag>>}}}
Deletes Todays
<<deleteTag>>
{{{<<deleteTag Dust 'Clear Dustbin'>>}}}
Clears Dustbin
<<deleteTag Dust 'Clear Dustbin'>>
***/
//{{{
config.macros.deleteTag = {
handler: function (place,macroName,params,wikifier,paramString,tiddler) {
var dtag = (params[0] && params[0] != '.') ? params[0] : "Today";
var buttonTitle = (params[1] && params[1] != '.') ? params[1] : "Delete Todays";
createTiddlyButton(place,buttonTitle,"Delete "+dtag+" tag",this.deleteTag(dtag));
},
deleteTag: function(dtag) {
return function() {
var tagged = store.getTaggedTiddlers(dtag);
for (var i=0;i<tagged.length;i++) {
store.removeTag(tagged[i].title,dtag);
// if tiddler is visible refresh it to show updated tag
story.refreshTiddler(tagged[i].title,false,true);
displayMessage("Cleared '"+tagged[i].title+"'");
}
}}
};
//}}}
/***
| Name:|DiscerningTagsPlugin|
| Description:|Make the tag chooser ignore tags that are themselves tagged with 'excludeLists'|
| Version:|1.0|
| Date:|02-Nov-2006|
| Source:|http://discerningtags.tiddlyspot.com/|
| Author:|Daniel Baird <danielbaird@gmail.com>|
| CoreVersion:|2.1.x|
For instructions on how to install plugins, see here:
http://twfaq.tiddlyspot.com/#%5B%5BHow%20do%20I%20install%20a%20plugin%3F%5D%5D
***/
//{{{
config.macros.tagChooser.onClick = function(e) {
if(!e) var e = window.event;
var lingo = config.views.editor.tagChooser;
var popup = Popup.create(this);
var tags = store.getTags();
if(tags.length == 0)
createTiddlyText(createTiddlyElement(popup,"li"),lingo.popupNone);
for(var t=0; t<tags.length; t++)
{
var tagTiddler = store.getTiddler(tags[t][0]);
if (!(tagTiddler && tagTiddler.isTagged('excludeLists')))
{
var theTag = createTiddlyButton(createTiddlyElement(popup,"li"),tags[t][0],lingo.tagTooltip.format([tags[t][0]]),config.macros.tagChooser.onTagClick);
theTag.setAttribute("tag",tags[t][0]);
theTag.setAttribute("tiddler", this.getAttribute("tiddler"));
}
}
Popup.show(popup,false);
e.cancelBubble = true;
if(e.stopPropagation) e.stopPropagation();
return(false);
}
//}}}
Right click ''[[here|./empty_monkeygtd.html]]'' and Save As...
<!---
| Name:|~TagglyTaggingEditTemplate |
| Version:|1.1 (12-Jan-2006)|
| Source:|http://simonbaird.com/mptw/#TagglyTaggingEditTemplate|
| Purpose:|See TagglyTagging for more info|
| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|
--->
<!--{{{-->
<div class="toolbar" macro="toolbar saveTiddler +saveCloseTiddler closeOthers cancelTiddler cancelCloseTiddler deleteTiddler"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>
<div class="editor" macro="edit text"></div>
<br/>
<!--}}}-->
Hey, my name is Edmund aka Ed aka Mwanz aka Mwanzanyte aka Mundus. I currently live in Cambridge, MA.
For fun, I enjoy going to [[concerts|Meeting the Band]] and shows. I snowboard in the winter and help coach youth soccer in the fall and the spring.
I'm currently studying toward a [[CFA|http://en.wikipedia.org/wiki/Chartered_Financial_Analyst]] certification, and I hope to continue in finance for the immediate future.
[img[Black and White picture|http://thefamilynet.googlepages.com/bw15.jpg]]
In trying to find books that I thought my little brother would enjoy, I reread Ender's game with the intention of reading along with him.
While the book isn't quite as good the third time through, it's still one of the better science-fiction stories I've read. It's a good starting point for the rest of the series, but I'm not sure the rest of the books come close to the original.
__Ender's Shadow__ by Orson Scott Card
Success. I found a book that my little brother was enthusiastic about reading. He has even requested that I find the rest of the books in the [[Ender's Game]] series for him to consume.
It's been a long time. I can barely remember the last time I saw a concert. It might have been Motion City Soundtrack which also was the last time I was on Lansdowne Street because they closed Axis and Avalon, my favorite concert spots. They were the only venues that were just the right size. Now mega arena size stages and pits, but not tiny floors that limited what the band (and the audience) could do. Worcester still has some good spots, but I have to really like a band to make the trip without a car. And recently the acts have been good, but not //that// good.
So when I saw Family Force 5 was putting on a show in Allston, I snatched up the $12 tickets. But Allston? At International Community Church? I'm I reading this right? Apparently this place has shows on occasion. It's not the best, but it could be far worse. The stage is a little tight, and capacity is limited, but the pluses of that are that it feels like a more personal performance. I think it'd be almost dangerous to get raucous in there, but it works.
In any case, the show was great. I'd seen them once before at the Warped Tour and they looked a like a lot of fun. They didn't disappoint. It's a great sub-genre of pop-punk but it makes you want to jump and dance, not shove and yell.
After the show, the band came outside for pictures and autographs. By that time, most people had left, so it was really just like 30 or so people hanging out. I was stupid and had left my phone otherwise I would have gotten a shot.
Zach Taylor found this event the other weekend. It was a midnight showing of Dawn of the Dead along with a costume contest and live performances. Sounded like fun, so I joined him. We hit the Garment District and assembled some costumes along with the essential makeup required for scars, sunken eyes, blood, and other miscellaneous gore.
Building the costumes was a lot of fun. We went for authenticity, so instead of simply tattering the clothes here and there, we actually staged zombie attacks and let the clothes rip during the assault. I think at one point Zach and Scott were trying to tear my arms off.
The actual event was fun (if not a bit bizarre at times). I'd had a long week though, so I was falling asleep by the time the movie actually started. So I apologized to Zach, and Scott and I headed outside to catch a taxi or bus.
As luck would have it, the last bus toward Harvard square was heading down the street. We started running ahead of it, trying to reach the nearest bus stop. The driver was nice enough to pull over next to us. I waved Scott aboard the bus, and as he jumped on, the driver closed the doors //on// him. He was litterally stuck in the doors, his legs on the street, his body in the bus. She then told him to get off the bus. "Why?" I asked through the crack in the door as she opened them slightly for Scott to step back. She replied, "Because you're covered in blood! I'm not letting you on my bus!" And she then drove away.
Perhaps it is a sort of complement. Our costumes were that good. But at the time, I wasn't amused. The driver of Bus #66, Harvard/Dudley via Allston is my nemesis. If you see bus 2144, #66, remember this tale and give her an disapproving glare as you board or depart.
[img[Zombies|http://thefamilynet.googlepages.com/2432314377_78ceb529c5.jpg]]
We had Brian's Bachelor Party last weekend. It was great! First, it was awesome to see everyone. Most all of the roommates were able to come along with Brian's older brother. I'm happy, but not surprised, that it felt like we were just picking up where we left off as if 4 years haven't passed since we all lived together. The more things change, the more they stay the same. Except for July 11th. Things will change for Brian and Kristi. For the better of course.
It's been a fine Christmas vacation. I haven't been back to Florida since Thanksgiving '06? Maybe even summer '06. It's ridiculous. At first, it felt incredibly weird to be back, but now I've fallen into the flow again. I think it'll be hard to leave. Now, more than ever I don't really think I'm a north eastern type of person. Florida just feels right. And no matter how much I tell myself that it's a lot different to visit here as opposed to living here, I can't help but feel that I might be happier here. It's the weather. It's the outdoors. It's the pace.
I think I could live in Massachusetts, but I wouldn't really be living until I came back.
I got to have lunch with Noel, Ashley, and the Hons, see all the neighborhood kids, drive around town, and skimboard on the beach. Everyone's older. Taller. Bigger. But still the same in many ways. But I feel different. Actually to be specific, I feel the same. I feel the way I think I should feel. I feel different from how I feel in Boston. And that's in a good way. So I think I need to find a way to keep this feeling once I go back. Because really, Cambridge isn't so bad. But it's not Florida. I just feel alive when I'm here. One day, I'll sort it out and it won't matter where I am. But until then, let's not make it another year and a half before I come back home.
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|© 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description
Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.
''Syntax:''
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]] is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].
!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features:
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen)
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features:
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs:
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features:
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version
!Code
***/
//{{{
//============================================================================
//============================================================================
// ForEachTiddlerPlugin
//============================================================================
//============================================================================
// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {
if (!window.abego) window.abego = {};
version.extensions.ForEachTiddlerPlugin = {
major: 1, minor: 0, revision: 8,
date: new Date(2007,3,12),
source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"
};
// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
TiddlyWiki.prototype.forEachTiddler = function(callback) {
for(var t in this.tiddlers) {
callback.call(this,t,this.tiddlers[t]);
}
};
}
//============================================================================
// forEachTiddler Macro
//============================================================================
version.extensions.forEachTiddler = {
major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};
// ---------------------------------------------------------------------------
// Configurations and constants
// ---------------------------------------------------------------------------
config.macros.forEachTiddler = {
// Standard Properties
label: "forEachTiddler",
prompt: "Perform actions on a (sorted) selection of tiddlers",
// actions
actions: {
addToList: {},
write: {}
}
};
// ---------------------------------------------------------------------------
// The forEachTiddler Macro Handler
// ---------------------------------------------------------------------------
config.macros.forEachTiddler.getContainingTiddler = function(e) {
while(e && !hasClass(e,"tiddler"))
e = e.parentNode;
var title = e ? e.getAttribute("tiddler") : null;
return title ? store.getTiddler(title) : null;
};
config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
// config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);
if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
// --- Parsing ------------------------------------------
var i = 0; // index running over the params
// Parse the "in" clause
var tiddlyWikiPath = undefined;
if ((i < params.length) && params[i] == "in") {
i++;
if (i >= params.length) {
this.handleError(place, "TiddlyWiki path expected behind 'in'.");
return;
}
tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the where clause
var whereClause ="true";
if ((i < params.length) && params[i] == "where") {
i++;
whereClause = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the sort stuff
var sortClause = null;
var sortAscending = true;
if ((i < params.length) && params[i] == "sortBy") {
i++;
if (i >= params.length) {
this.handleError(place, "sortClause missing behind 'sortBy'.");
return;
}
sortClause = this.paramEncode(params[i]);
i++;
if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
sortAscending = params[i] == "ascending";
i++;
}
}
// Parse the script
var scriptText = null;
if ((i < params.length) && params[i] == "script") {
i++;
scriptText = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the action.
// When we are already at the end use the default action
var actionName = "addToList";
if (i < params.length) {
if (!config.macros.forEachTiddler.actions[params[i]]) {
this.handleError(place, "Unknown action '"+params[i]+"'.");
return;
} else {
actionName = params[i];
i++;
}
}
// Get the action parameter
// (the parsing is done inside the individual action implementation.)
var actionParameter = params.slice(i);
// --- Processing ------------------------------------------
try {
this.performMacro({
place: place,
inTiddler: tiddler,
whereClause: whereClause,
sortClause: sortClause,
sortAscending: sortAscending,
actionName: actionName,
actionParameter: actionParameter,
scriptText: scriptText,
tiddlyWikiPath: tiddlyWikiPath});
} catch (e) {
this.handleError(place, e);
}
};
// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {
var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);
var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
context["tiddlyWiki"] = tiddlyWiki;
// Get the tiddlers, as defined by the whereClause
var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
context["tiddlers"] = tiddlers;
// Sort the tiddlers, when sorting is required.
if (parameter.sortClause) {
this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
}
return {tiddlers: tiddlers, context: context};
};
// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
return this.getTiddlersAndContext(parameter).tiddlers;
};
// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
// The following properties are supported:
//
// place
// whereClause
// sortClause
// sortAscending
// actionName
// actionParameter
// scriptText
// tiddlyWikiPath
//
// All properties are optional.
// For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
var tiddlersAndContext = this.getTiddlersAndContext(parameter);
// Perform the action
var actionName = parameter.actionName ? parameter.actionName : "addToList";
var action = config.macros.forEachTiddler.actions[actionName];
if (!action) {
this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
return;
}
var actionHandler = action.handler;
actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};
// ---------------------------------------------------------------------------
// The actions
// ---------------------------------------------------------------------------
// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
// Parse the parameter
var p = 0;
// Check for extra parameters
if (parameter.length > p) {
config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
return;
}
// Perform the action.
var list = document.createElement("ul");
place.appendChild(list);
for (var i = 0; i < tiddlers.length; i++) {
var tiddler = tiddlers[i];
var listItem = document.createElement("li");
list.appendChild(listItem);
createTiddlyLink(listItem, tiddler.title, true);
}
};
abego.parseNamedParameter = function(name, parameter, i) {
var beginExpression = null;
if ((i < parameter.length) && parameter[i] == name) {
i++;
if (i >= parameter.length) {
throw "Missing text behind '%0'".format([name]);
}
return config.macros.forEachTiddler.paramEncode(parameter[i]);
}
return null;
}
// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
// Parse the parameter
var p = 0;
if (p >= parameter.length) {
this.handleError(place, "Missing expression behind 'write'.");
return;
}
var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
p++;
// Parse the "begin" option
var beginExpression = abego.parseNamedParameter("begin", parameter, p);
if (beginExpression !== null)
p += 2;
var endExpression = abego.parseNamedParameter("end", parameter, p);
if (endExpression !== null)
p += 2;
var noneExpression = abego.parseNamedParameter("none", parameter, p);
if (noneExpression !== null)
p += 2;
// Parse the "toFile" option
var filename = null;
var lineSeparator = undefined;
if ((p < parameter.length) && parameter[p] == "toFile") {
p++;
if (p >= parameter.length) {
this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
return;
}
filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
p++;
if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
p++;
if (p >= parameter.length) {
this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
return;
}
lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
p++;
}
}
// Check for extra parameters
if (parameter.length > p) {
config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
return;
}
// Perform the action.
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
var count = tiddlers.length;
var text = "";
if (count > 0 && beginExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
for (var i = 0; i < count; i++) {
var tiddler = tiddlers[i];
text += func(tiddler, context, count, i);
}
if (count > 0 && endExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);
if (count == 0 && noneExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);
if (filename) {
if (lineSeparator !== undefined) {
lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
text = text.replace(/\n/mg,lineSeparator);
}
saveFile(filename, convertUnicodeToUTF8(text));
} else {
var wrapper = createTiddlyElement(place, "span");
wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);
}
};
// ---------------------------------------------------------------------------
// Helpers
// ---------------------------------------------------------------------------
// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
return {
place : placeParam,
whereClause : whereClauseParam,
sortClause : sortClauseParam,
sortAscending : sortAscendingParam,
script : scriptText,
actionName : actionNameParam,
actionParameter : actionParameterParam,
tiddlyWikiPath : tiddlyWikiPathParam,
inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result
};
};
// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
if (!idPrefix) {
idPrefix = "store";
}
var lenPrefix = idPrefix.length;
// Read the content of the given file
var content = loadFile(this.getLocalPath(path));
if(content === null) {
throw "TiddlyWiki '"+path+"' not found.";
}
var tiddlyWiki = new TiddlyWiki();
// Starting with TW 2.2 there is a helper function to import the tiddlers
if (tiddlyWiki.importTiddlyWiki) {
if (!tiddlyWiki.importTiddlyWiki(content))
throw "File '"+path+"' is not a TiddlyWiki.";
tiddlyWiki.dirty = false;
return tiddlyWiki;
}
// The legacy code, for TW < 2.2
// Locate the storeArea div's
var posOpeningDiv = content.indexOf(startSaveArea);
var posClosingDiv = content.lastIndexOf(endSaveArea);
if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
throw "File '"+path+"' is not a TiddlyWiki.";
}
var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
// Create a "div" element that contains the storage text
var myStorageDiv = document.createElement("div");
myStorageDiv.innerHTML = storageText;
myStorageDiv.normalize();
// Create all tiddlers in a new TiddlyWiki
// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
var store = myStorageDiv.childNodes;
for(var t = 0; t < store.length; t++) {
var e = store[t];
var title = null;
if(e.getAttribute)
title = e.getAttribute("tiddler");
if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
title = e.id.substr(lenPrefix);
if(title && title !== "") {
var tiddler = tiddlyWiki.createTiddler(title);
tiddler.loadFromDiv(e,title);
}
}
tiddlyWiki.dirty = false;
return tiddlyWiki;
};
// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
//
// (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
var script = context["script"];
var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
var fullText = (script ? script+";" : "")+functionText+";theFunction;";
return eval(fullText);
};
// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
var result = [];
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
tiddlyWiki.forEachTiddler(function(title,tiddler) {
if (func(tiddler, context, undefined, undefined)) {
result.push(tiddler);
}
});
return result;
};
// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
var message = "Extra parameter behind '"+actionName+"':";
for (var i = firstUnusedIndex; i < parameter.length; i++) {
message += " "+parameter[i];
}
this.handleError(place, message);
};
// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {
var result =
(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
? 0
: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
? -1
: +1;
return result;
};
// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {
var result =
(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
? 0
: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
? +1
: -1;
return result;
};
// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
// To avoid evaluating the sortClause whenever two items are compared
// we pre-calculate the sortValue for every item in the array and store it in a
// temporary property ("forEachTiddlerSortValue") of the tiddlers.
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
var count = tiddlers.length;
var i;
for (i = 0; i < count; i++) {
var tiddler = tiddlers[i];
tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
}
// Do the sorting
tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);
// Delete the temporary property that holds the sortValue.
for (i = 0; i < tiddlers.length; i++) {
delete tiddlers[i].forEachTiddlerSortValue;
}
};
// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
displayMessage(message);
};
// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
var message ="<<"+macroName;
for (var i = 0; i < params.length; i++) {
message += " "+params[i];
}
message += ">>";
displayMessage(message);
};
// Internal.
//
// Creates an element that holds an error message
//
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
var message = (exception.description) ? exception.description : exception.toString();
return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};
// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception) {
if (place) {
this.createErrorElement(place, exception);
} else {
throw exception;
}
};
// Internal.
//
// Encodes the given string.
//
// Replaces
// "$))" to ">>"
// "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
var reGTGT = new RegExp("\\$\\)\\)","mg");
var reGT = new RegExp("\\$\\)","mg");
return s.replace(reGTGT, ">>").replace(reGT, ">");
};
// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
//
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
// Remove any location part of the URL
var hashPos = originalPath.indexOf("#");
if(hashPos != -1)
originalPath = originalPath.substr(0,hashPos);
// Convert to a native file format assuming
// "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
// "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
// "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
// "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
var localPath;
if(originalPath.charAt(9) == ":") // pc local file
localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file
localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
else if(originalPath.indexOf("file:///") === 0) // mac/unix local file
localPath = unescape(originalPath.substr(7));
else if(originalPath.indexOf("file:/") === 0) // mac/unix local file
localPath = unescape(originalPath.substr(5));
else // pc network file
localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");
return localPath;
};
// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
"forEachTiddler");
//============================================================================
// End of forEachTiddler Macro
//============================================================================
//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
var n = prefix.length;
return (this.length >= n) && (this.slice(0, n) == prefix);
};
//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
var n = suffix.length;
return (this.length >= n) && (this.right(n) == suffix);
};
//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
return this.indexOf(substring) >= 0;
};
//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
for (var i = 0; i < this.length; i++) {
if (this[i] == item) {
return i;
}
}
return -1;
};
//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false.
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
return (this.indexOf(item) >= 0);
};
//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
for(var i = 0; i < items.length; i++) {
if (this.contains(items[i])) {
return true;
}
}
return false;
};
//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
//
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null]
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
for(var i = 0; i < items.length; i++) {
if (!this.contains(items[i])) {
return false;
}
}
return true;
};
} // of "install only once"
// Used Globals (for JSLint) ==============
// ... DOM
/*global document */
// ... TiddlyWiki Core
/*global convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink,
displayMessage, endSaveArea, hasClass, loadFile, saveFile,
startSaveArea, store, wikify */
//}}}
/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/
I'm done! No more CFA (until August). It's officially summer.
I felt confident giong into the test. Coming out, I felt good, not great. But that's really ally you can hope for on this type of exam. If I pass, I won't be surprised. If I fail, I also won't be surprised. Not that I expect to fail, but more that the test has a way of tripping you up on things you're 100% confident on. I'm pretty disastisfied with how they phrase their vignettes. Certain topics I know I'm bound to lose points on are also topics I know very well. I hesitate to call it chance, but the test is definitely frustrating. In any case, I am happy with the preparation I put in. Now I just wait.
__Freakonomcis__ by Stephen J. Dubner
I wasn't going to read this book. It's one of those that everyone reads and everyone talks about and you get sick of hearing about. I didn't want to be that guy. I didn't want to follow the pack. But I did. And I'm that guy who is going to say (as many before me have said) that it's a great read. Really interesting. I also found that it was really quick. I finished the whole thing on my trip to Florida. It was easy to read, enjoyable, and somewhat educational. I don't have any takeaways from it, but it was worthwhile all the same.
Recommended.
{{h1{
@@font-size:155%;''__[[Books I hope to read:|Future Books]]__''@@
}}}
[[Influence: The Psychology of Persuasion by Robert B. Cialdini|http://www.amazon.com/Influence-Psychology-Persuasion-Business-Essentials/dp/006124189X/ref=pd_bbs_sr_1/104-8747472-3895942?ie=UTF8&s=books&qid=1190911902&sr=8-1]]
[[Bargaining for Advantage: Negotiation Strategies for Reasonable People|http://www.amazon.com/Bargaining-Advantage-Negotiation-Strategies-Reasonable/dp/0143036971/ref=pd_bbs_sr_1/104-8747472-3895942?ie=UTF8&s=books&qid=1190911976&sr=1-1]]
[[The Game|http://www.amazon.com/Game-Penetrating-Secret-Society-Artists/dp/0060554738/ref=pd_bbs_sr_1/104-8747472-3895942?ie=UTF8&s=books&qid=1190912078&sr=1-1]]
[[Flatland: A Romance of Many Dimensions|http://www.amazon.com/Flatland-Romance-Dimensions-Thrift-Editions/dp/048627263X/ref=pd_bbs_sr_1/104-8747472-3895942?ie=UTF8&s=books&qid=1190912120&sr=1-1]]
[[The Stand|http://www.amazon.com/Stand-Expanded-First-Complete-Signet/dp/0451169530/ref=pd_bbs_2?ie=UTF8&s=books&qid=1221588539&sr=8-2]]
[[Hyperion|http://www.amazon.com/Hyperion-Dan-Simmons/dp/0575076372/ref=sr_1_2/104-8747472-3895942?ie=UTF8&s=books&qid=1190912364&sr=1-2]]
{{h1{
@@font-size:155%;''__Books I need to re-read:__''@@
}}}
[[The Hitchhiker's Guide to the Galaxy|http://www.amazon.com/Ultimate-Hitchhikers-Guide-Complete-Novels/dp/0517226952/ref=pd_bbs_sr_2/104-8747472-3895942?ie=UTF8&s=books&qid=1190912427&sr=1-2]]
[[The Crystal Cave|http://www.amazon.com/Crystal-Cave-Arthurian-Saga-Book/dp/0060548258/ref=pd_bbs_2/104-8747472-3895942?ie=UTF8&s=books&qid=1190912485&sr=1-2]]
[[The Once and Future King|http://www.amazon.com/Once-Future-Terence-Hanbury-White/dp/0441627404/ref=pd_bbs_2/104-8747472-3895942?ie=UTF8&s=books&qid=1190912501&sr=8-2]]
We're stuck in that middle period where it's a bit too cold to do things outside, but it hasn't yet snowed enough up north to make it a worthwhile trip. Hoping for an epic winter.
Though I'm specifically referencing snowboarding, I think in addition I have a different attitude toward personal development. I used to be almost afraid to make mistakes in life. I don't know what I thought would happen, but I would control for even the smallest risks. It felt a lot better to be on consistent, stable ground than to upset the balance by chasing something that wasn't already within reach. Recently, though, it been made painfully clear that even that stability that I valued wasn't as stable as I had thought. Maybe it never is.
But on that note, I am learning that for the most part, risks can be incredibly rewarding. Even when you fail, you can succeed. I am trying to get over my fear of failure, my fear of looking amateurish, or my fear of the relatively short discomfort that comes from uncharted territory. There are all these things I want to do, but I'll never achieve these goals if I only reach for what is already inches away from my hand.
Hoping for an epic winter.
The new job is going well. I'm very busy at work, but I'm enjoying it. It's all very interesting, and I really feel that the things I'm doing are actually making an impact. My work //matters//. That's refreshing.
I'm mourning the death of the snow season. I could go snowboarding again if I really wanted to, but it was so icy the last time I was out there that I think my weekends are better spend pursuing warm weather activities.
I'm second guessing this decision to join Brian in a [[10-mile road race|http://www.broadstreetrun.com/site3.aspx]]. It's hard to set aside the time to run a sufficient amount to train for this. But I also don't want to be lazy.
My [[photography project|http://picasaweb.google.com/edmund.rogers/365?feat=directlink]] is having ups and downs. I keep having good ideas that are ruined by poor execution. But I don't have the time to stop and figure out what I'm doing wrong. Why am I so busy?
I'm still on track in my studying for the CFA. Actually, I'm two days behind, but I'm //generally// on track. That's a welcome change.
Scott's doing well. He seems to be enjoying high school a bit more now.
And I think that's it.
Welcome to your brand new [[MonkeyPirateTiddlyWiki|http://simonbaird.com/mptw/]]. This is the standard empty [[TiddlyWiki|http://www.tiddlywiki.com/]] (version <<version>>) preconfigured with a few bits and pieces from MPTW, in particular the layout, the colours, and the popular [[TagglyTagging|http://simonbaird.com/mptw/#TagglyTagging]]. If you're new to ~TagglyTagging then try the (slightly out-of-date) [[FAQ|http://simonbaird.com/mptw1/#TagglyTaggingFAQ]] and [[Tutorial|http://simonbaird.com/mptw1/#TagglyTaggingTutorial]].
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
To create your own tiddlers, click 'new tiddler' in the right sidebar. To edit a tiddler click the 'edit' button in the tiddler's toolbar. To save all your tiddlers click 'save changes' in the right sidebar. If you're new to TiddlyWiki check out the formatting info [[here|http://www.tiddlywiki.com/#MainFeatures]].
Use this to import tiddlers from another TiddlyWiki. You can use a local file (click Browse...) or type the url of an online TiddlyWiki.
<<importTiddlers inline>>
To change your colour scheme you can edit the styles in StyleSheet. (Refer to StyleSheetColors and StyleSheetLayout for all styles used).
So through the magic of the Internets, I got in touch with an old friend of mine who I haven't seen in 3 or 4 years. We went to school together, but weren't able to stay in touch for some reason. But he saw me online the other day and we had a nice little chat and got up to speed. He sounds like he's doing really well, and I'm really happy to hear that. Maybe I'll have to go visit him in Germany.
And then also, I got visits from some high school friends this week and last. And on Saturday, I'm having dinner with an old college friend. //And// last weekend I was in NYC hanging out with old college roommates. This is too much nostalgia to handle.
My little brother scored his first goal this weekend. The game winner and the first win for the team this soccer season. Is my pride showing?
Everything was in line. I knew exactly how much I needed to close on the condo. I had all the money transferred in. I was well on my way with packing, and it was a convenient time of year. And then it all went to south. For some reason still unknown to me, some bit of paperwork is stuck in Greece, thus delaying the closing probably by 7 days. That skews EVERYTHING. My parents have to cancel their plane flight up. I have to cancel the UHaul. I may end up paying a month of interest at closing instead of 3 days worth. And will my landlord let me stay rent-free for a week? What if it's more than a week? All these questions and more to be answered in the next 10-15 days. Tune in
<<search>><<closeAll>><<newTiddler>><<saveChanges>><<themeSelect style 'select theme '>><<tiddler TspotSidebar>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
<!--{{{-->
<div id='header' class='header'>
<div class='headerShadow'>
<span class='searchBar' macro='search'></span>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
</div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='HaemoSideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<div id='contentFooter' refresh='content' tiddler='contentFooter'></div>
<!--}}}-->
/*{{{*/
/*Haemoglobin Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/
/*}}}*/
/*{{{*/
#sidebarTabs {font-family:arial,helvetica;}
body
{background:#fefefe;}
#contentWrapper {
font-family: Verdana, Arial, Tahoma, Sans-Serif;
color: #555555;
margin:1.9em auto 1em ; width:800px;}
#header {background:#fefefe;}
.headerShadow { padding: 1.4em 0em 0.5em 1em; }
.siteTitle {
font-family: 'Trebuchet MS' sans-serif;
font-weight: bold;
font-size: 36px;
color: #BF2323;
background-color: #FFF;
}
.siteSubtitle {
font-size: 1.0em;
display: block;
margin: .5em 3em; color: #999;
}
.clearAll {clear:both;}
.tagClear {clear:none;}
#sidebar {position:relative; float:right; display:inline; right:0;}
a{
color:#BF2323;
text-decoration: none; font-weight:normal;
}
a:hover{
color:#BF2323;
background-color: #fefefe;
border-bottom:1px solid #BF2323;
}
.viewer .button, .editorFooter .button{
color: #555;
border: 1px solid #BF2323;
}
.viewer .button:hover,
.editorFooter .button:hover{
color: #fff;
background: #BF2323;
border-color: #BF2323;
}
.viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{color:#fff; background:#9F1313;border-color:#9F1313;}
#topMenu br {display:none;}
#topMenu {padding:0.45em 1em; background:#BF2323;}
#topMenu a, #topMenu .tiddlyLink, #topMenu .button {color:#f1f1f1; padding:0.3em 0.45em; margin:0 4px;font-size:120%;font-weight:normal;font-variant: small-caps; border:none; background:#BF2323; text-decoration:none; }
#topMenu a:hover, #topMenu .tiddlyLink:hover, #topMenu .button:hover, #topMenu .button:active, #topMenu .highlight {color:#fff;text-decoration:none; background:#9F1313; }
#displayArea{margin:0 17em 2em 0.5em;}
.tiddler {padding-left:0;}
.title {color:#BF2323; border-bottom:1px solid#BF2323; }
.subtitle, .subtitle a { color: #999999; font-size: 1.0em;margin:0.2em;}
.shadow .title{color:#999;}
.toolbar {font-size:85%;}
.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#333; background:transparent;border:1px solid #fff;}
.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#333; background:transparent;border:1px solid #fff;}
* html .viewer pre {
margin-left: 0em;
}
* html .editor textarea, * html .editor input {
width: 98%;
}
/***
!Sidebar
***/
#sidebar {position:relative;float:right; line-height: 1.4em; border-left:0px solid#000; display:inline; background:#fefefe; right:0; margin-bottom:2em !important; margin-bottom:1em;
width: 16em;}
/***
!SidebarOptions
***/
#sidebarOptions {padding-left:0.5em; padding-top:2em;}
#sidebarOptions a {
color:#999;
text-decoration: none;}
#sidebarOptions a:hover, #sidebarOptions a:active {
color:#CC0000;
background-color:#f5f5f5;border:1px solid #f5f5f5;
}
#sidebarOptions input {border:1px solid #999; }
.listTitle {color:#888;}
#sidebarTabs .tabContents {background:#fefefe;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#999;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#CC0000;background:#fefefe; text-decoration:none;border:none;}
#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#CC0000;background:#fefefe}
.tabSelected{color:#fefefe; background:#999;}
.tabSelected, .tabSelected:hover {
color: #555;
background: #fefefe;
border: solid 1px #ccc;
}
#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#999;}
.tabUnselected {
color: #999;
background: #eee;
border: solid 1px #ccc;
}
.tabUnselected:hover {text-decoration:none; border:1px solid #ccc;}
#sidebarTabs .tabUnselected { border-bottom: none;padding-bottom:3px;}
#sidebarTabs .tabSelected{padding-bottom:3px;}
#sidebarOptions .sliderPanel {
background: #eee; border:1px solid#ccc;
font-size: .9em;
}
#sidebarOptions .sliderPanel input {border:1px solid #999;}
#sidebarOptions .sliderPanel .txtOptionInput {border:1px solid #999;width:9em;}
#sidebarOptions .sliderPanel a {font-weight:normal; color:#555;background-color: #eee; border-bottom:1px dotted #333;}
#sidebarOptions .sliderPanel a:hover {
color:#111;
background-color: #eee;
border:none;
border-bottom:1px dotted #111;
}
.tabContents {background:#fefefe;}
.tagging, .tagged {
border: 1px solid #eee;
background-color: #F7F7F7;
}
.selected .tagging, .selected .tagged {
background-color: #f7f7f7;
border: 1px solid #ccc;
}
.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}
.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #666;
}
.tagging .button, .tagged .button {
color:#ccc;
}
.selected .tagging .button, .selected .tagged .button {
color:#aaa;
}
.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}
.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {
border: none; background:transparent; text-decoration:underline; color:#333;
}
.popup {
background: #BF2323;
border: 1px solid #BF2323;
}
.popup li.disabled {
color: #000;
}
.popup li a, .popup li a:visited {
color: #eee;
border: none;
}
.popup li a:hover {
background: #bf1717;
color: #fff;
border: none;
}
#messageArea {
border: 4px solid #BF2323;
background: #fefefe;
color: #555;
font-size:90%;
}
#messageArea a:hover { background:#f5f5f5; border:none;}
#messageArea .button{
color: #666;
border: 1px solid #BF2323;
}
#messageArea .button:hover {
color: #fff;
background: #BF2323;
border-color: #BF2323;
}
#contentFooter {background:#BF2323; color:#DF7D7D; clear: both; padding: 0.5em 1em; }
#contentFooter a {
color: #DF7D7D;
border-bottom: 1px dotted #DF7D7D; font-weight:normal;text-decoration:none;
}
#contentFooter a:hover {
color: #FFFFFF;
background-color:transparent;
border-bottom: 1px dotted #fff; text-decoration:none;
}
.searchBar {float:right;font-size: 1.0em;position:relative; margin-top:1.3em;}
.searchBar .button {color:#999;display:block;}
.searchBar .button:hover {border:1px solid #fefefe;color:#4F4B45;}
.searchBar input {
background-color: #fefefe;
color: #999999;
border: 1px solid #CCC; margin-right:3px;
}
.tiddler {padding-bottom:10px;}
.viewer blockquote {
border-left: 5px solid #BF2323;
}
.viewer table, .viewer td {
border: 1px solid #BF2323;
}
.viewer th, thead td {
background: #BF2323;
border: 1px solid #BF2323;
color: #fff;
}
.viewer pre {
border: 1px solid #ccc;
background: #f5f5f5;
}
.viewer code {
color: #111; background:#f5f5f5;
}
.viewer hr {
border-top: dashed 1px #555;
}
.editor input {
border: 1px solid #888; margin-top:5px;
}
.editor textarea {
border: 1px solid #888;
}
h1,h2,h3,h4,h5 { color: #BF2323; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}
/*}}}*/
tiddlers:
*HaemoglobinStyleSheet
*HaemoglobinPageTemplate
<<applyTheme Haemoglobin Preview>>
What a great week. Busy, but always a lot of fun at the end of October. First, thanks for all the birthday wishes. There's nothing better than getting tons of e-mails, texts, and facebook messages throughout the day to make you feel special.
And of course, there is the second part of my annual two-day celebration: Halloween. I love this time of year. I usually round out the day by packing up a backpack full of candy, and getting myself lost in North Cambridge. I didn't get to do an adequate amount of trick-or-treating when I was a kid, so I make up for it by soaking in the atmosphere. Between kids in costume, New England weather, decorated houses, and a scary movie at the end of the night, it's always something remarkable.
This year, I think I'll end with [[The Orphanage|http://www.imdb.com/title/tt0464141/]]. It has been Saw the last two years, so I'm very happy to get something supernatural instead.
What a great way to end a tough year: back in Florida after a year's absence to visit with family and friends. I'm very thankful for the people I was able to reconnect with. It helped me recognize how much I value my friendships and relationships. It helped me remember what, ultimately, is the important focus in life.
So I'm thankful for my family. I'm thankful for my school friends. I'm thankful for those who I did not get to catch up with but thought about and communicated with all the same. I'm thankful for snow days that inspire snowboarding trips. I'm thankful for skim boarding days that immediately follow snowboarding trips. I'm thankful for 80 degree Christmas' and perfect beach sunsets. I'm thankful for new and rewarding friendships and relationships. I'm thankful for the health and happiness of those who are going through difficult situations in their own lives and those of their family. Lastly, I'm thankful that we're all still here to mark the new year with new intentions and higher hopes for tomorrow.
<html><center><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fedmund.rogers%2Falbumid%2F5285303160870833441%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></center></html>
That's it. The 7th and final book. I had a good time reading this one. I finished it in about a week. I could have read it faster, but I wanted to enjoy it. I could have read it more slowly, but I didn't want to inadvertently stumble upon a [[spoiler|http://en.wikipedia.org/wiki/Spoiler_%28media%29]].
I thoroughly enjoyed the final adventure. It's sad that there are no more new books in the series to look forward to, but there are always the movies. . .
Sports do not build character. They reveal it.
Sweet! I made it into the top 10! #6. Proud stuff.
[[Boston.com Top 10|http://www.boston.com/community/photos/raw/march_contest_top10/#/1]]
But on a disappointing note, my pictures have been 7 shades of sub-par lately. I've just been too busy between work and studying for the CFA. I'm looking for an early summer resurgence. Or perhaps a late-spring revival. It depends on how disciplined I am in studying in early May. We'll see.
/***
To use, add {{{HorizontalMainMenuStyles}}} with double square brackets around it to your StyleSheet tiddler, or you can just paste the CSS in directly. See also HorizontalMainMenu and PageTemplate.
***/
/*{{{*/
#topMenu br {display:none; }
/*
#topMenu { background: #a33; }
*/
#topMenu { padding:2px; }
#topMenu .button, #topMenu .tiddlyLink {
margin-left:0.5em; margin-right:0.5em;
padding-left:3px; padding-right:3px;
color:[[ColorPalette::TForeground]]; font-size:100%;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover { background:#178;}
#displayArea { margin: 1em 15.7em 0em 1em; } /* so we use the freed up space */
/* just in case want some QuickOpenTags in your topMenu */
#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }
#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }
#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }
/*}}}*/
<<top>>
<<toggleSideBar>><<renameButton '>' >>
<<jump j '' top>>
<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>
/% <<newTiddler>><<renameButton n>> %/
[[I Am Legend|http://www.amazon.com/I-Am-Legend-Richard-Matheson/dp/0765318741/ref=pd_bbs_sr_5?ie=UTF8&s=books&qid=1220466442&sr=8-5]] by Richard Matheson
I saw the movie with Meredith who commented that the book was better. So I took a read. It was a good story, though quite shorter than I expected. As it turns out, the copy that I read included a number of short stories written by the same author. I didn't realize this. When I reached the end of the primary story, I eagerly turned the page to see what happens next. I was first confused, then frustrated at the disjointed narratives that followed. I desperately tried to tie each story together and figure out how it was supposed to fit with all I had read earlier in the book. Each chapter was a good read in itself, but was a huge disappointment if it was supposed to be part of the main plot. I then did some digging and found out what had happened.
So viewed separately, the primary story __I Am Legend__ is worth reading. It is quick (I finished it in a day), and happens to be one of the primary sources of the modern vampire/zombie apocalypse stories that we have today.
The subsequent short stories are also good on their own. Each is a little shorter than the average chapter. Definitely worth checking out if you like supernatural horror.
Photography composition books
----
{{h1{
@@font-size:155%;''__[[Books I've recently read|Books]]:__''@@
}}}
<<forEachTiddler
where 'tiddler.tags.contains("Books") && !tiddler.tags.contains("current") && !tiddler.tags.contains("future") && !tiddler.tags.contains("past")'
sortBy tiddler.modified descending
write '(index < 10) ? "[["+tiddler.title+"]]\n" : ""'
>>
----
<<tiddler [[Future Books]]>>
----
<<tiddler [[Past Books]]>>
/***
|Name|ImportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Version|3.5.5|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|config.macros.importTiddlers.handler|
|Description|interactive controls for import/export with filtering.|
When many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. It can also be very extremely helpful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)
This plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. An interactive control panel lets you pick a document to import from, and then select which tiddlers to import, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles. Automatically add tags to imported tiddlers so they are easy to find later on. Generates a detailed report of import 'history' in ImportedTiddlers.
!!!!!Usage
<<<
{{{<<importTiddlers>>}}} or {{{<<importTiddlers core>>}}}
invokes the built-in importTiddlers macro (TW2.1.x+). If installed in documents using TW2.0.x or earlier, fallback is to use 'link' display (see below)
{{{<<importTiddlers link label tooltip>>}}}
The ''link'' keyword creates an "import tiddlers" link that when clicked to show/hide import control panel. ''label'' and ''tooltip'' are optional text parameters (enclosed in quotes or {{{[[...]]}}}, and allow you to override the default display text for the link and the mouseover help text, respectively.
{{{<<importTiddlers inline>>}}}
creates import control panel directly in tiddler content
<<importTiddlers inline>>
Press ''[browse]'' to select a TiddlyWiki document file to import, and then press ''[open]''. Alternatively, you can type in the path/filename or a remote document URL (starting with http://). When you have entered the desired source location, press ''[load]'' to retrieve the tiddlers from the remote source. //Note: There may be some delay to permit the browser time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//
Select one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.
''select: all, new, changes, or differences''
You can click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in:
>''"all"'' selects ALL tiddlers from the import source document, even if they have not been changed.
>''"new"'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document
>''"changes"'' selects only tiddlers that exist in both documents but that are newer in the source document
>''"differences"'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)
''Import Tagging:''
Tiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the "add tags" input field, and then //added// to the existing tags for each tiddler as it is imported.
''Skip, Rename, Merge, or Replace:''
When importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.
To bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.
//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//
''Import Report History''
When tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.
When the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.
If a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.
Note: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the "create a report" checkbox before beginning the import processing.
<<<
!!!!!Installation
<<<
copy/paste the following tiddlers into your document:
''ImportTiddlersPlugin''
''ImportTiddlersPluginPatch2.1.x'' (only for installation in TW2.1.x or earlier)
(both tagged with <<tag systemConfig>>)
>Important Notes:
>* As of 6/27/2007, "patch" functions that provide backward-compatibility with TW2.1.x and earlier have been split into a separate [[ImportTiddlersPluginPatch2.1.x]] tiddler to reduce installation overhead for //this// plugin. You only need to install this additional plugin tiddler when using ImportTiddlersPlugin in documents using TW2.1.x or earlier.
>* As of 3/21/2007, the interactive {{{<<importTiddlers>>}}} and non-interactive {{{<<loadTiddlers>>}}} macro definitions and related code have been split into separate [[ImportTiddlersPlugin]] and [[LoadTiddlersPlugin]] to permit selective installation of either the interactive and/or non-interactive macro functions
''Quick Installation Tip #1:''
If you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.
<<<
!!!!!Revision History
<<<
''2007.06.27 [3.5.5]'' added missing 'fields' params to saveTiddler() calls. Fixes problem where importing tiddlers would lose the custom fields. Also, moved functions for backward-compatibility with TW2.1.x to separate [[ImportTiddlersPluginPatch2.1.x]] tiddler, reducing the size of //this// plugin tiddler by a significant amount.
''2007.06.25 [3.5.4]'' added calls to store.suspendNotifications() and store.resumeNotifications(). Eliminates redisplay processing overhead DURING import activities
|please see [[ImportTiddlersPluginHistory]] for additional revision details|
''2005.07.20 [1.0.0]'' Initial Release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
// // ''MACRO DEFINITION''
//{{{
// Version
version.extensions.importTiddlers = {major: 3, minor: 5, revision: 5, date: new Date(2007,6,27)};
// IE needs explicit global scoping for functions/vars called from browser events
window.onClickImportButton=onClickImportButton;
window.refreshImportList=refreshImportList;
// default cookie/option values
if (!config.options.chkImportReport) config.options.chkImportReport=true;
merge(config.macros.importTiddlers,{
label: "import tiddlers",
prompt: "Copy tiddlers from another document",
openMsg: "Opening %0",
openErrMsg: "Could not open %0 - error=%1",
readMsg: "Read %0 bytes from %1",
foundMsg: "Found %0 tiddlers in %1",
countMsg: "%0 tiddlers selected for import",
importedMsg: "Imported %0 of %1 tiddlers from %2",
loadText: "please load a document...",
closeText: "close", // text for close button when remote file is loaded
doneText: "done", // text for close button when remote file is not loaded
src: "", // path/filename or URL of document to import (retrieved from SiteUrl tiddler)
proxy: "", // URL for remote proxy script (retrieved from SiteProxy tiddler)
useProxy: false, // use specific proxy script in front of remote URL
inbound: null, // hash-indexed array of tiddlers from other document
newTags: "", // text of tags added to imported tiddlers
addTags: true, // add new tags to imported tiddlers
listsize: 8, // # of lines to show in imported tiddler list
importTags: true, // include tags from remote source document when importing a tiddler
keepTags: true, // retain existing tags when replacing a tiddler
index: 0, // current processing index in import list
sort: "" // sort order for imported tiddler listbox
});
if (config.macros.importTiddlers.coreHandler==undefined)
config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.handler; // save built-in handler
config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
if (!params[0] || params[0].toLowerCase()=='core') { // default to built in
if (config.macros.importTiddlers.coreHandler)
config.macros.importTiddlers.coreHandler.apply(this,arguments);
else
createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);
}
else if (params[0]=='link') { // show link to floating panel
var label=params[1]?params[1]:this.label;
var prompt=params[2]?params[2]:this.prompt;
createTiddlyButton(place,label,prompt,onClickImportMenu);
}
else if (params[0]=='inline') {// show panel as INLINE tiddler content
createImportPanel(place);
document.getElementById("importPanel").style.position="static";
document.getElementById("importPanel").style.display="block";
}
else if (config.macros.loadTiddlers)
config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers
}
//}}}
// // ''INTERFACE DEFINITION''
// // Handle link click to create/show/hide control panel
//{{{
function onClickImportMenu(e)
{
if (!e) var e = window.event;
var parent=resolveTarget(e).parentNode;
var panel = document.getElementById("importPanel");
if (panel==undefined || panel.parentNode!=parent)
panel=createImportPanel(parent);
var isOpen = panel.style.display=="block";
if(config.options.chkAnimate)
anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));
else
panel.style.display = isOpen ? "none" : "block" ;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return(false);
}
//}}}
// // Create control panel: HTML, CSS
//{{{
function createImportPanel(place) {
var panel=document.getElementById("importPanel");
if (panel) { panel.parentNode.removeChild(panel); }
setStylesheet(config.macros.importTiddlers.css,"importTiddlers");
panel=createTiddlyElement(place,"span","importPanel",null,null)
panel.innerHTML=config.macros.importTiddlers.html;
refreshImportList();
var siteURL=store.getTiddlerText("SiteUrl"); if (!siteURL) siteURL="";
document.getElementById("importSourceURL").value=siteURL;
config.macros.importTiddlers.src=siteURL;
var siteProxy=store.getTiddlerText("SiteProxy"); if (!siteProxy) siteProxy="SiteProxy";
document.getElementById("importSiteProxy").value=siteProxy;
config.macros.importTiddlers.proxy=siteProxy;
return panel;
}
//}}}
// // CSS
//{{{
config.macros.importTiddlers.css = '\
#importPanel {\
display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\
background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
padding: 0.5em; margin:0em; -moz-border-radius:1em;\
}\
#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\
#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\
#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\
#importPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\
#importPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\
#importPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\
#importPanel .rad { width:auto; }\
#importPanel .chk { width:auto; margin:1px;border:0; }\
#importPanel .btn { width:auto; }\
#importPanel .btn1 { width:98%; }\
#importPanel .btn2 { width:48%; }\
#importPanel .btn3 { width:32%; }\
#importPanel .btn4 { width:24%; }\
#importPanel .btn5 { width:19%; }\
#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\
#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\
#importCollisionPanel { display:none; margin:0.5em 0em 0em 0em; }\
';
//}}}
// // HTML
//{{{
config.macros.importTiddlers.html = '\
<!-- source and report -->\
<table><tr><td align=left>\
import from\
<input type="radio" class="rad" name="importFrom" id="importFromFile" value="file" CHECKED\
onClick="document.getElementById(\'importLocalPanel\').style.display=this.checked?\'block\':\'none\';\
document.getElementById(\'importHTTPPanel\').style.display=!this.checked?\'block\':\'none\'"> local file\
<input type="radio" class="rad" name="importFrom" id="importFromWeb" value="http"\
onClick="document.getElementById(\'importLocalPanel\').style.display=!this.checked?\'block\':\'none\';\
document.getElementById(\'importHTTPPanel\').style.display=this.checked?\'block\':\'none\'"> web server\
</td><td align=right>\
<input type=checkbox class="chk" id="chkImportReport" checked\
onClick="config.options[\'chkImportReport\']=this.checked;"> create a report\
</td></tr></table>\
<!-- import from local file -->\
<div id="importLocalPanel" style="display:block;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\
local document path/filename:<br>\
<input type="file" id="fileImportSource" size=57 style="width:100%"\
onKeyUp="config.macros.importTiddlers.src=this.value"\
onChange="config.macros.importTiddlers.src=this.value;">\
</div><!--panel-->\
\
<!-- import from http server -->\
<div id="importHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\
<table><tr><td align=left>\
remote document URL:<br>\
</td><td align=right>\
<input type="checkbox" class="chk" id="importUseProxy"\
onClick="config.macros.importTiddlers.useProxy=this.checked;\
document.getElementById(\'importSiteProxy\').style.display=this.checked?\'block\':\'none\'"> use a proxy script\
</td></tr></table>\
<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\
onKeyUp="config.macros.importTiddlers.proxy=this.value"\
onChange="config.macros.importTiddlers.proxy=this.value;">\
<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\
onKeyUp="config.macros.importTiddlers.src=this.value"\
onChange="config.macros.importTiddlers.src=this.value;">\
</div><!--panel-->\
\
<table><tr><td align=left>\
select:\
<a href="JavaScript:;" id="importSelectAll"\
onclick="onClickImportButton(this)" title="select all tiddlers">\
all </a>\
<a href="JavaScript:;" id="importSelectNew"\
onclick="onClickImportButton(this)" title="select tiddlers not already in destination document">\
added </a> \
<a href="JavaScript:;" id="importSelectChanges"\
onclick="onClickImportButton(this)" title="select tiddlers that have been updated in source document">\
changes </a> \
<a href="JavaScript:;" id="importSelectDifferences"\
onclick="onClickImportButton(this)" title="select tiddlers that have been added or are different from existing tiddlers">\
differences </a> \
<a href="JavaScript:;" id="importToggleFilter"\
onclick="onClickImportButton(this)" title="show/hide selection filter">\
filter </a> \
</td><td align=right>\
<a href="JavaScript:;" id="importListSmaller"\
onclick="onClickImportButton(this)" title="reduce list size">\
– </a>\
<a href="JavaScript:;" id="importListLarger"\
onclick="onClickImportButton(this)" title="increase list size">\
+ </a>\
<a href="JavaScript:;" id="importListMaximize"\
onclick="onClickImportButton(this)" title="maximize/restore list size">\
= </a>\
</td></tr></table>\
<select id="importList" size=8 multiple\
onchange="setTimeout(\'refreshImportList(\'+this.selectedIndex+\')\',1)">\
<!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\
</select>\
<input type=checkbox class="chk" id="chkAddTags" checked\
onClick="config.macros.importTiddlers.addTags=this.checked;">add new tags \
<input type=checkbox class="chk" id="chkImportTags" checked\
onClick="config.macros.importTiddlers.importTags=this.checked;">import source tags \
<input type=checkbox class="chk" id="chkKeepTags" checked\
onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing tags<br>\
<input type=text id="txtNewTags" size=15 onKeyUp="config.macros.importTiddlers.newTags=this.value" autocomplete=off>\
<div align=center>\
<input type=button id="importLoad" class="importButton" style="width:32%" value="load"\
title="load listbox with tiddlers from source document"\
onclick="onClickImportButton(this)">\
<input type=button id="importStart" class="importButton" style="width:32%" value="import"\
title="add selected source tiddlers to the current document"\
onclick="onClickImportButton(this)">\
<input type=button id="importClose" class="importButton" style="width:32%" value="close"\
title="clear listbox or hide control panel"\
onclick="onClickImportButton(this)">\
</div>\
<div id="importCollisionPanel">\
tiddler already exists:\
<input type=text id="importNewTitle" size=15 autocomplete=off">\
<div align=center>\
<input type=button id="importSkip" class="importButton" style="width:23%" value="skip"\
title="do not import this tiddler"\
onclick="onClickImportButton(this)">\
<input type=button id="importRename" class="importButton" style="width:23%" value="rename"\
title="rename the incoming tiddler"\
onclick="onClickImportButton(this)">\
<input type=button id="importMerge" class="importButton" style="width:23%" value="merge"\
title="append the incoming tiddler to the existing tiddler"\
onclick="onClickImportButton(this)">\
<input type=button id="importReplace" class="importButton" style="width:23%" value="replace"\
title="discard the existing tiddler"\
onclick="onClickImportButton(this)">\
</div>\
</div>\
';
//}}}
// // Control interactions
//{{{
function onClickImportButton(which)
{
// DEBUG alert(which.id);
var theList = document.getElementById('importList');
if (!theList) return;
var thePanel = document.getElementById('importPanel');
var theCollisionPanel = document.getElementById('importCollisionPanel');
var theNewTitle = document.getElementById('importNewTitle');
var count=0;
switch (which.id)
{
case 'fileImportSource':
case 'importLoad': // load import source into hidden frame
importReport(); // if an import was in progress, generate a report
config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer
refreshImportList(); // reset/resize the listbox
if (config.macros.importTiddlers.src=="") break;
// Load document, read it's DOM and fill the list
config.macros.importTiddlers.loadRemoteFile(config.macros.importTiddlers.src,
function(success,params,txt,src,xhr) {
var src=src.replace(/%20/g," ");
if (!success) { displayMessage(config.macros.importTiddlers.openErrMsg.format([src,xhr.status])); return; }
var tiddlers = config.macros.importTiddlers.readTiddlersFromHTML(txt);
var count=tiddlers?tiddlers.length:0;
var querypos=src.lastIndexOf("?"); if (querypos!=-1) src=src.substr(0,querypos);
displayMessage(config.macros.importTiddlers.foundMsg.format([count,src]));
config.macros.importTiddlers.inbound=tiddlers;
window.refreshImportList(0);
});
break;
case 'importSelectAll': // select all tiddler list items (i.e., not headings)
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < theList.options.length; t++) {
if (theList.options[t].value=="") continue;
theList.options[t].selected=true;
count++;
}
clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));
break;
case 'importSelectNew': // select tiddlers not in current document
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < theList.options.length; t++) {
theList.options[t].selected=false;
if (theList.options[t].value=="") continue;
theList.options[t].selected=!store.tiddlerExists(theList.options[t].value);
count+=theList.options[t].selected?1:0;
}
clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));
break;
case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < theList.options.length; t++) {
theList.options[t].selected=false;
if (theList.options[t].value==""||!store.tiddlerExists(theList.options[t].value)) continue;
for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler
{ var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }
theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified>0); // updated tiddler
count+=theList.options[t].selected?1:0;
}
clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));
break;
case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < theList.options.length; t++) {
theList.options[t].selected=false;
if (theList.options[t].value=="") continue;
if (!store.tiddlerExists(theList.options[t].value)) { theList.options[t].selected=true; count++; continue; }
for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler
{ var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }
theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified!=0); // changed tiddler
count+=theList.options[t].selected?1:0;
}
clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));
break;
case 'importToggleFilter': // show/hide filter
case 'importFilter': // apply filter
alert("coming soon!");
break;
case 'importStart': // initiate the import processing
importReport(); // if an import was in progress, generate a report
config.macros.importTiddlers.index=0;
config.macros.importTiddlers.index=importTiddlers(0);
importStopped();
break;
case 'importClose': // unload imported tiddlers or hide the import control panel
// if imported tiddlers not loaded, close the import control panel
if (!config.macros.importTiddlers.inbound) { thePanel.style.display='none'; break; }
importReport(); // if an import was in progress, generate a report
config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer
refreshImportList(); // reset/resize the listbox
break;
case 'importSkip': // don't import the tiddler
var theItem = theList.options[config.macros.importTiddlers.index];
for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)
if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;
var theImported = config.macros.importTiddlers.inbound[j];
theImported.status='skipped after asking'; // mark item as skipped
theCollisionPanel.style.display='none';
config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index+1); // resume with NEXT item
importStopped();
break;
case 'importRename': // change name of imported tiddler
var theItem = theList.options[config.macros.importTiddlers.index];
for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)
if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;
var theImported = config.macros.importTiddlers.inbound[j];
theImported.status = 'renamed from '+theImported.title; // mark item as renamed
theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title
theItem.value = theNewTitle.value; // change the listbox item text
theItem.text = theNewTitle.value; // change the listbox item text
theCollisionPanel.style.display='none';
config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item
importStopped();
break;
case 'importMerge': // join existing and imported tiddler content
var theItem = theList.options[config.macros.importTiddlers.index];
for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)
if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;
var theImported = config.macros.importTiddlers.inbound[j];
var theExisting = store.getTiddler(theItem.value);
var theText = theExisting.text+'\n----\n^^merged from: ';
theText +='[['+config.macros.importTiddlers.src+'#'+theItem.value+'|'+config.macros.importTiddlers.src+'#'+theItem.value+']]^^\n';
theText +='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\n'+theImported.text;
var theDate = new Date();
var theTags = theExisting.getTags()+' '+theImported.getTags();
theImported.set(null,theText,null,theDate,theTags);
theImported.status = 'merged with '+theExisting.title; // mark item as merged
theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");
theImported.status += ' by '+theExisting.modifier;
theCollisionPanel.style.display='none';
config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with this item
importStopped();
break;
case 'importReplace': // substitute imported tiddler for existing tiddler
var theItem = theList.options[config.macros.importTiddlers.index];
for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)
if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;
var theImported = config.macros.importTiddlers.inbound[j];
var theExisting = store.getTiddler(theItem.value);
theImported.status = 'replaces '+theExisting.title; // mark item for replace
theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");
theImported.status += ' by '+theExisting.modifier;
theCollisionPanel.style.display='none';
config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item
importStopped();
break;
case 'importListSmaller': // decrease current listbox size, minimum=5
if (theList.options.length==1) break;
theList.size-=(theList.size>5)?1:0;
config.macros.importTiddlers.listsize=theList.size;
break;
case 'importListLarger': // increase current listbox size, maximum=number of items in list
if (theList.options.length==1) break;
theList.size+=(theList.size<theList.options.length)?1:0;
config.macros.importTiddlers.listsize=theList.size;
break;
case 'importListMaximize': // toggle listbox size between current and maximum
if (theList.options.length==1) break;
theList.size=(theList.size==theList.options.length)?config.macros.importTiddlers.listsize:theList.options.length;
break;
}
}
//}}}
// // refresh listbox
//{{{
function refreshImportList(selectedIndex)
{
var theList = document.getElementById("importList");
if (!theList) return;
// if nothing to show, reset list content and size
if (!config.macros.importTiddlers.inbound)
{
while (theList.length > 0) { theList.options[0] = null; }
theList.options[0]=new Option(config.macros.importTiddlers.loadText,"",false,false);
theList.size=config.macros.importTiddlers.listsize;
document.getElementById('importLoad').disabled=false;
document.getElementById('fileImportSource').disabled=false;
document.getElementById('importFromFile').disabled=false;
document.getElementById('importFromWeb').disabled=false;
document.getElementById('importClose').value=config.macros.importTiddlers.closeText;
return;
}
// get the sort order
if (!selectedIndex) selectedIndex=0;
if (selectedIndex==0) config.macros.importTiddlers.sort='title'; // heading
if (selectedIndex==1) config.macros.importTiddlers.sort='title';
if (selectedIndex==2) config.macros.importTiddlers.sort='modified';
if (selectedIndex==3) config.macros.importTiddlers.sort='tags';
if (selectedIndex>3) {
// display selected tiddler count
for (var t=0,count=0; t < theList.options.length; t++) {
if (!theList.options[t].selected) continue;
if (theList.options[t].value!="")
count+=1;
else { // if heading is selected, deselect it, and then select and count all in section
theList.options[t].selected=false;
for ( t++; t<theList.options.length && theList.options[t].value!=""; t++) {
theList.options[t].selected=true;
count++;
}
}
}
clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));
return; // no refresh needed
}
// there are inbound tiddlers loaded... disable inapplicable controls...
document.getElementById('importLoad').disabled=true;
document.getElementById('fileImportSource').disabled=true;
document.getElementById('importFromFile').disabled=true;
document.getElementById('importFromWeb').disabled=true;
document.getElementById('importClose').value=config.macros.importTiddlers.doneText;
// get the alphasorted list of tiddlers (optionally, filter out unchanged tiddlers)
var tiddlers=config.macros.importTiddlers.inbound;
tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });
// clear current list contents
while (theList.length > 0) { theList.options[0] = null; }
// add heading and control items to list
var i=0;
var indent=String.fromCharCode(160)+String.fromCharCode(160);
theList.options[i++]=new Option(tiddlers.length+' tiddler'+((tiddlers.length!=1)?'s are':' is')+' in the document',"",false,false);
theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="title" )?">":indent)+' [by title]',"",false,false);
theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="modified")?">":indent)+' [by date]',"",false,false);
theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="tags")?">":indent)+' [by tags]',"",false,false);
// output the tiddler list
switch(config.macros.importTiddlers.sort)
{
case "title":
for(var t = 0; t < tiddlers.length; t++)
theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
break;
case "modified":
// sort descending for newest date first
tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });
var lastSection = "";
for(var t = 0; t < tiddlers.length; t++) {
var tiddler = tiddlers[t];
var theSection = tiddler.modified.toLocaleDateString();
if (theSection != lastSection) {
theList.options[i++] = new Option(theSection,"",false,false);
lastSection = theSection;
}
theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
}
break;
case "tags":
var theTitles = {}; // all tiddler titles, hash indexed by tag value
var theTags = new Array();
for(var t=0; t<tiddlers.length; t++) {
var title=tiddlers[t].title;
var tags=tiddlers[t].tags;
if (!tags || !tags.length) {
if (theTitles["untagged"]==undefined) { theTags.push("untagged"); theTitles["untagged"]=new Array(); }
theTitles["untagged"].push(title);
}
else for(var s=0; s<tags.length; s++) {
if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
theTitles[tags[s]].push(title);
}
}
theTags.sort();
for(var tagindex=0; tagindex<theTags.length; tagindex++) {
var theTag=theTags[tagindex];
theList.options[i++]=new Option(theTag,"",false,false);
for(var t=0; t<theTitles[theTag].length; t++)
theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
}
break;
}
theList.selectedIndex=selectedIndex; // select current control item
if (theList.size<config.macros.importTiddlers.listsize) theList.size=config.macros.importTiddlers.listsize;
if (theList.size>theList.options.length) theList.size=theList.options.length;
}
//}}}
// // re-entrant processing for handling import with interactive collision prompting
//{{{
function importTiddlers(startIndex)
{
if (!config.macros.importTiddlers.inbound) return -1;
var theList = document.getElementById('importList');
if (!theList) return;
var t;
// if starting new import, reset import status flags
if (startIndex==0)
for (var t=0;t<config.macros.importTiddlers.inbound.length;t++)
config.macros.importTiddlers.inbound[t].status="";
for (var i=startIndex; i<theList.options.length; i++)
{
// if list item is not selected or is a heading (i.e., has no value), skip it
if ((!theList.options[i].selected) || ((t=theList.options[i].value)==""))
continue;
for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)
if (config.macros.importTiddlers.inbound[j].title==t) break;
var inbound = config.macros.importTiddlers.inbound[j];
var theExisting = store.getTiddler(inbound.title);
// avoid redundant import for tiddlers that are listed multiple times (when 'by tags')
if (inbound.status=="added")
continue;
// don't import the "ImportedTiddlers" history from the other document...
if (inbound.title=='ImportedTiddlers')
continue;
// if tiddler exists and import not marked for replace or merge, stop importing
if (theExisting && (inbound.status.substr(0,7)!="replace") && (inbound.status.substr(0,5)!="merge"))
return i;
// assemble tags (remote + existing + added)
var newTags = "";
if (config.macros.importTiddlers.importTags)
newTags+=inbound.getTags() // import remote tags
if (config.macros.importTiddlers.keepTags && theExisting)
newTags+=" "+theExisting.getTags(); // keep existing tags
if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)
newTags+=" "+config.macros.importTiddlers.newTags; // add new tags
inbound.set(null,null,null,null,newTags.trim());
// set the status to 'added' (if not already set by the 'ask the user' UI)
inbound.status=(inbound.status=="")?'added':inbound.status;
// do the import!
store.suspendNotifications();
store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags, inbound.fields, true, inbound.created);
store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value (needed for TW2.1.x and earlier)
store.resumeNotifications();
}
return(-1); // signals that we really finished the entire list
}
//}}}
//{{{
function importStopped()
{
var theList = document.getElementById('importList');
var theNewTitle = document.getElementById('importNewTitle');
if (!theList) return;
if (config.macros.importTiddlers.index==-1)
importReport(); // import finished... generate the report
else
{
// import collision... show the collision panel and set the title edit field
document.getElementById('importCollisionPanel').style.display='block';
theNewTitle.value=theList.options[config.macros.importTiddlers.index].value;
}
}
//}}}
// // ''REPORT GENERATOR''
//{{{
function importReport(quiet)
{
if (!config.macros.importTiddlers.inbound) return;
// DEBUG alert('importReport: start');
// if import was not completed, the collision panel will still be open... close it now.
var panel=document.getElementById('importCollisionPanel'); if (panel) panel.style.display='none';
// get the alphasorted list of tiddlers
var tiddlers = config.macros.importTiddlers.inbound;
// gather the statistics
var count=0;
for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].status && tiddlers[t].status.trim().length && tiddlers[t].status.substr(0,7)!="skipped") count++;
// generate a report
if (count && config.options.chkImportReport) {
// get/create the report tiddler
var theReport = store.getTiddler('ImportedTiddlers');
if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text = ""; }
// format the report content
var now = new Date();
var newText = "On "+now.toLocaleString()+", "+config.options.txtUserName
newText +=" imported "+count+" tiddler"+(count==1?"":"s")+" from\n[["+config.macros.importTiddlers.src+"|"+config.macros.importTiddlers.src+"]]:\n";
if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)
newText += "imported tiddlers were tagged with: \""+config.macros.importTiddlers.newTags+"\"\n";
newText += "<<<\n";
for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status) newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\n";
newText += "<<<\n";
// update the ImportedTiddlers content and show the tiddler
theReport.text = newText+((theReport.text!="")?'\n----\n':"")+theReport.text;
theReport.modifier = config.options.txtUserName;
theReport.modified = new Date();
store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags, theReport.fields);
if (!quiet) { story.displayTiddler(null,theReport.title,1,null,null,false); story.refreshTiddler(theReport.title,1,true); }
}
// reset status flags
for (var t=0; t<config.macros.importTiddlers.inbound.length; t++) config.macros.importTiddlers.inbound[t].status="";
// mark document as dirty and let display update as needed
if (count) { store.setDirty(true); store.notifyAll(); }
// always show final message when tiddlers were actually loaded
if (count) displayMessage(config.macros.importTiddlers.importedMsg.format([count,tiddlers.length,config.macros.importTiddlers.src.replace(/%20/g," ")]));
}
//}}}
// // File and XMLHttpRequest I/O
//{{{
config.macros.importTiddlers.fileExists=function(theFile) {
var found=false;
// DEBUG: alert('testing fileExists('+theFile+')...');
if(window.Components) {
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
catch(e) { return false; } // security access denied
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
try { file.initWithPath(theFile); }
catch(e) { return false; } // invalid directory
found = file.exists();
}
else { // use ActiveX FSO object for MSIE
var fso = new ActiveXObject("Scripting.FileSystemObject");
found = fso.FileExists(theFile)
}
// DEBUG: alert(theFile+" "+(found?"exists":"not found"));
return found;
}
config.macros.importTiddlers.loadRemoteFile = function(src,callback,quiet) {
if (src==undefined || !src.length) return null; // filename is required
if (!quiet) clearMessage();
if (!quiet) displayMessage(this.openMsg.format([src.replace(/%20/g," ")]));
if (src.substr(0,5)!="http:" && src.substr(0,5)!="file:") { // if src is relative (i.e., not a URL)
if (!this.fileExists(src)) { // if file cannot be found, might be relative path.. try fixup
var pathPrefix=document.location.href; // get current document path and trim off filename
var slashpos=pathPrefix.lastIndexOf("/"); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf("\\");
if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
src=pathPrefix+src;
if (pathPrefix.substr(0,5)!="http:") src=getLocalPath(src);
}
}
if (src.substr(0,5)!="http:" && src.substr(0,5)!="file:") { // if not a URL, read from local filesystem
var txt=loadFile(src);
if ((txt==null)||(txt==false)) // file didn't load
{ if (!quiet) displayMessage(config.macros.importTiddlers.openErrMsg.format([src.replace(/%20/g," "),"(filesystem error)"])); }
else {
if (!quiet) displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g," ")]));
if (callback) callback(true,quiet,convertUTF8ToUnicode(txt),src,null);
}
}
else {
var xhr=loadRemoteFile(src,callback,quiet);
if (!quiet && !xhr) displayMessage(config.macros.importTiddlers.openErrMsg.format([src,"(XMLHTTPRequest error)"]));
}
}
config.macros.importTiddlers.readTiddlersFromHTML=function(html)
{
var remoteStore=new TiddlyWiki();
remoteStore.importTiddlyWiki(html);
return remoteStore.getTiddlers("title");
}
//}}}
/***
|Name|ImportTiddlersPluginPatch|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPluginPatch|
|Version|3.5.5|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|ImportTiddlersPlugin|
|Overrides|config.macros.importTiddlers.handler|
|Description|backward-compatible function patches for use with ImportTiddlersPlugin and TW2.1.x or earlier|
!!!!!Usage
<<<
The current version ImportTiddlersPlugin is compatible with the TW2.2.x core functions. This "patch" plugin provides additional functions needed to enable the current version of ImportTiddlersPlugin to operate correctly under TW2.1.x or earlier.
{{medium{You do not need to install this plugin if you are using TW2.2.0 or above}}}
(though it won't hurt anything if you do... it will just take up more space).
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''ImportTiddlersPlugin'' //(main plugin body)//
''ImportTiddlersPluginPatch2.1.x'' //(patches for TW2.1.x or earlier)//
(both tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.06.27 [3.5.5]'' compatibility functions split from ImportTiddlersPlugin
|please see [[ImportTiddlersPlugin]] for additional revision details|
''2005.07.20 [1.0.0]'' Initial Release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
// these functions are only defined when installed in TW2.1.x and earlier...
if (version.major+version.minor/10 <= 2.1) {
// Version
version.extensions.importTiddlersPatch21x = {major: 3, minor: 5, revision: 5, date: new Date(2007,6,27)};
// fixups for TW2.0.x and earlier
if (window.merge==undefined) window.merge=function(dst,src,preserveExisting)
{ for (p in src) if (!preserveExisting||dst[p]===undefined) dst[p]=src[p]; return dst; }
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={ };
config.macros.importTiddlers.loadRemoteFile = function(src,callback,quiet) {
if (src==undefined || !src.length) return null; // filename is required
if (!quiet) clearMessage();
if (!quiet) displayMessage(this.openMsg.format([src]));
if (src.substr(0,5)!="http:" && src.substr(0,5)!="file:") { // if src is relative (i.e., not a URL)
if (!this.fileExists(src)) { // if file cannot be found, might be relative path.. try fixup
var pathPrefix=document.location.href; // get current document path and trim off filename
var slashpos=pathPrefix.lastIndexOf("/"); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf("\\");
if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
src=pathPrefix+src;
if (pathPrefix.substr(0,5)!="http:") src=getLocalPath(src);
}
}
if (src.substr(0,4)!="http" && src.substr(0,4)!="file") { // if not a URL, read from local filesystem
var txt=loadFile(src);
if ((txt==null)||(txt==false)) // file didn't load
{ if (!quiet) displayMessage(config.macros.importTiddlers.openErrMsg.format([src,"(unknown)"])); }
else {
if (!quiet) displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src]));
if (callback) callback(true,quiet,convertUTF8ToUnicode(txt),src,null);
}
}
else {
var x; // get an request object
try {x = new XMLHttpRequest()} // moz
catch(e) {
try {x = new ActiveXObject("Msxml2.XMLHTTP")} // IE 6
catch (e) {
try {x = new ActiveXObject("Microsoft.XMLHTTP")} // IE 5
catch (e) { return }
}
}
// setup callback function to handle server response(s)
x.onreadystatechange = function() {
if (x.readyState == 4) {
if (x.status==0 || x.status == 200) {
if (!quiet) displayMessage(config.macros.importTiddlers.readMsg.format([x.responseText.length,src]));
if (callback) callback(true,quiet,x.responseText,src,x);
}
else {
if (!quiet) displayMessage(config.macros.importTiddlers.openErrMsg.format([src,x.status]));
}
}
}
// get privileges to read another document's DOM via http:// or file:// (moz-only)
if (typeof(netscape)!="undefined") {
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); }
catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }
}
// send the HTTP request
try {
var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();
x.open("GET",src,true);
if (x.overrideMimeType) x.overrideMimeType('text/html');
x.send(null);
}
catch (e) {
if (!quiet) {
displayMessage(config.macros.importTiddlers.openErrMsg.format([src,"(unknown)"]));
displayMessage(e.description?e.description:e.toString());
}
}
}
}
config.macros.importTiddlers.readTiddlersFromHTML=function(html) {
// for TW2.1 and earlier
// extract store area from html
var start=html.indexOf('<div id="storeArea">');
var end=html.indexOf("<!--POST-BODY-START--"+">",start);
if (end==-1) var end=html.indexOf("</body"+">",start); // backward-compatibility for older documents
var sa="<html><body>"+html.substring(start,end)+"</body></html>";
// load html into iframe document
var f=document.getElementById("loaderFrame"); if (f) document.body.removeChild(f);
f=document.createElement("iframe"); f.id="loaderFrame";
f.style.width="0px"; f.style.height="0px"; f.style.border="0px";
document.body.appendChild(f);
var d=f.document;
if (f.contentDocument) d=f.contentDocument; // For NS6
else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6
d.open(); d.writeln(sa); d.close();
// read tiddler DIVs from storeArea DOM element
var sa = d.getElementById("storeArea");
if (!sa) return null;
sa.normalize();
var nodes = sa.childNodes;
if (!nodes || !nodes.length) return null;
var tiddlers = [];
for(var t = 0; t < nodes.length; t++) {
var title = null;
if(nodes[t].getAttribute)
title = nodes[t].getAttribute("title"); // TW 2.2+
if(!title && nodes[t].getAttribute)
title = nodes[t].getAttribute("tiddler"); // TW 2.1.x
if(!title && nodes[t].id && (nodes[t].id.substr(0,5) == "store"))
title = nodes[t].id.substr(5); // TW 1.2.x
if(title && title != "")
tiddlers.push((new Tiddler()).loadFromDiv(nodes[t],title));
}
return tiddlers;
}
// // COPIED FROM TW2.2beta5
// // enables reading tiddler definitions using TW2.2 storeArea format, even when plugin is running under TW2.1.x
// // storeArea format changes include:
// // <pre> nodes
// // attribute(tiddler) renamed to attribute(title)
// // attribute(modified) is omitted if created==modified
TW21Loader.prototype.internalizeTiddler = function(store,tiddler,title,node)
{
var e = node.firstChild;
var text = null;
if(node.getAttribute("tiddler")) {
text = getNodeText(e).unescapeLineBreaks();
} else {
while(e.nodeName!="PRE" && e.nodeName!="pre") {
e = e.nextSibling;
}
text = e.innerHTML.replace(/\r/mg,"").htmlDecode();
}
var modifier = node.getAttribute("modifier");
var c = node.getAttribute("created");
var m = node.getAttribute("modified");
var created = c ? Date.convertFromYYYYMMDDHHMM(c) : version.date;
var modified = m ? Date.convertFromYYYYMMDDHHMM(m) : created;
var tags = node.getAttribute("tags");
var fields = {};
var attrs = node.attributes;
for(var i = attrs.length-1; i >= 0; i--) {
var name = attrs[i].name;
if (attrs[i].specified && !TiddlyWiki.isStandardField(name)) {
fields[name] = attrs[i].value.unescapeLineBreaks();
}
}
tiddler.assign(title,text,modifier,modified,tags,created,fields);
return tiddler;
};
} // END OF TW2.1.x backward-compatibility functions
//}}}
On Wednesday, October 03, 2007 7:41:58 PM, YourName imported 4 tiddlers from
[[H:\chipt.html|H:\chipt.html]]:
<<<
#[[HaemoSideBarOptions]] - added
#[[HaemoglobinTheme]] - added
#[[HaemoglobinPageTemplate]] - added
#[[HaemoglobinStyleSheet]] - added
<<<
----
On Thursday, August 30, 2007 2:07:07 PM, therogerspost imported 14 tiddlers from
[[E:\chipt.html|E:\chipt.html]]:
<<<
#[[MGTDBlack&White]] - replaces MGTDBlack&White - 8/30/2007 10:17:00 by therogerspost
#[[MGTDBlueX]] - replaces MGTDBlueX - 8/30/2007 11:13:00 by therogerspost
#[[MGTDBlueY]] - replaces MGTDBlueY - 8/30/2007 11:20:00 by therogerspost
#[[MGTDForest]] - replaces MGTDForest - 8/29/2007 16:14:00 by therogerspost
#[[MGTDGreenX]] - replaces MGTDGreenX - 8/29/2007 16:49:00 by therogerspost
#[[MGTDGreenY]] - replaces MGTDGreenY - 8/30/2007 11:21:00 by therogerspost
#[[MGTDHalloween]] - replaces MGTDHalloween - 8/30/2007 08:15:00 by therogerspost
#[[MGTDMidnight]] - replaces MGTDMidnight - 8/29/2007 16:21:00 by therogerspost
#[[MGTDRedX]] - replaces MGTDRedX - 8/29/2007 16:32:00 by therogerspost
#[[MGTDRedY]] - replaces MGTDRedY - 8/30/2007 11:20:00 by therogerspost
#[[MGTDSimpleClean]] - replaces MGTDSimpleClean - 8/30/2007 10:20:00 by therogerspost
#[[MGTDStPatrick]] - replaces MGTDStPatrick - 8/30/2007 11:23:00 by therogerspost
#[[MGTDStarsandStripes]] - added
#[[MGTDSunshower]] - replaces MGTDSunshower - 8/30/2007 11:09:00 by therogerspost
<<<
----
On Thursday, August 30, 2007 2:05:51 PM, therogerspost imported 2 tiddlers from
[[E:\chipt.html|E:\chipt.html]]:
<<<
#[[HorizontalMainMenuStyles]] - replaces HorizontalMainMenuStyles - 8/22/2007 08:47:00 by Ed Rogers
#[[PageTemplate]] - replaces PageTemplate - 8/22/2007 08:44:00 by Ed Rogers
<<<
----
On Thursday, August 30, 2007 11:26:31 AM, therogerspost imported 14 tiddlers from
[[E:\chipt.html|E:\chipt.html]]:
<<<
#[[MGTDBlack&White]] - added
#[[MGTDBlueX]] - added
#[[MGTDBlueY]] - added
#[[MGTDForest]] - replaces MGTDForest - 8/29/2007 15:57:00 by therogerspost
#[[MGTDGreenX]] - added
#[[MGTDGreenY]] - added
#[[MGTDHalloween]] - added
#[[MGTDMidnight]] - replaces MGTDMidnight - 8/29/2007 15:57:00 by therogerspost
#[[MGTDRedX]] - replaces MGTDRedX - 8/29/2007 15:57:00 by therogerspost
#[[MGTDRedY]] - added
#[[MGTDSimpleClean]] - added
#[[MGTDStPatrick]] - added
#[[MGTDSunshower]] - added
#[[MarkupPreHead]] - replaces MarkupPreHead - 8/26/2007 11:06:00 by YourName
<<<
----
On Wednesday, August 29, 2007 4:02:28 PM, therogerspost imported 4 tiddlers from
[[E:\chipt.html|E:\chipt.html]]:
<<<
#[[MGTDForest]] - replaces MGTDForest - 8/29/2007 15:20:00 by therogerspost
#[[MGTDMidnight]] - replaces MGTDMidnight - 8/29/2007 15:19:00 by therogerspost
#[[MGTDRedX]] - replaces MGTDRedX - 8/29/2007 15:19:00 by therogerspost
#[[StyleSheet]] - replaces StyleSheet - 8/29/2007 15:47:00 by therogerspost
<<<
----
On Wednesday, August 22, 2007 3:05:29 PM, therogerspost imported 12 tiddlers from
[[E:\chipt.html|E:\chipt.html]]:
<<<
#[[ClustomFormatter]] - replaces ClustomFormatter - 3/7/2006 20:47:00 by SimonBaird
#[[ConfigTweaks]] - replaces ConfigTweaks - 2/9/2006 06:50:00 by SimonBaird
#[[MonkeyGTDPlugin]] - replaces MonkeyGTDPlugin - 7/6/2007 10:16:00 by ChipT
#[[QuickOpenTagPlugin]] - replaces QuickOpenTagPlugin - 2/9/2006 05:03:00 by SimonBaird
#[[SideBarOptions]] - replaces SideBarOptions - 8/22/2007 13:52:00 by Ed Rogers
#[[SideBarWhiteAndGrey]] - replaces SideBarWhiteAndGrey - 8/22/2007 08:48:00 by Ed Rogers
#[[TaggedTemplateTweak]] - added
#[[TagglyListPlugin]] - replaces TagglyListPlugin - 8/22/2007 09:37:00 by Ed Rogers
#[[TagglyTaggingStyles]] - replaces TagglyTaggingStyles - 8/22/2007 09:35:00 by Ed Rogers
#[[TspotSetupPlugin]] - replaces TspotSetupPlugin - 8/22/2007 13:49:00 by Ed Rogers
#[[UploadPlugin]] - replaces UploadPlugin - 8/22/2007 13:51:00 by Ed Rogers
#[[WikifyContentsMacro]] - replaces WikifyContentsMacro - 3/8/2006 02:54:00 by SimonBaird
<<<
----
On Wednesday, August 22, 2007 3:02:12 PM, therogerspost imported 1 tiddler from
[[E:\chipt.html|E:\chipt.html]]:
<<<
#[[MPTW Styles]] - replaces MPTW Styles - 8/22/2007 08:48:00 by Ed Rogers
<<<
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Version|1.6.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Usage
<<<
When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
''Deferred execution from an 'onClick' link''
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered. You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text
''External script source files:''
You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
''Display script source in tiddler output''
By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.
''Defining javascript functions and libraries:''
Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
''Creating dynamic tiddler content''
An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
''Accessing the ~TiddlyWiki DOM''
The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
Access to this DOM element allows you to create scripts that can:
* vary their actions based upon the specific location in which they are embedded
* access 'tiddler-relative' information (use findContainingTiddler(place))
* perform direct DOM manipulations (when returning wikified text is not enough)
<<<
!!!!!Examples
<<<
an "alert" message box:
><script show>
alert('InlineJavascriptPlugin: this is a demonstration message');
</script>
dynamic output:
><script show>
return (new Date()).toString();
</script>
wikified dynamic output:
><script show>
return "link to current user: [["+config.options.txtUserName+"]]";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
if (!window.story) window.story=window;
var title=story.findContainingTiddler(place).id.substr(7);
return title+" is using "+store.getTiddlerText(title).length+" bytes";
</script>
creating an 'onclick' button/link that runs a script:
><script label="click here" title="clicking this link will show an 'alert' box" show>
if (!window.story) window.story=window;
alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
</script>
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
><script src="demo.js" show>
return "loading demo.js..."
</script>
><script label="click to execute demo() function" show>
demo()
</script>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.02.19 [1.6.0]'' added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
''2006.10.16 [1.5.2]'' add newline before closing '}' in 'function out_' wrapper. Fixes error caused when last line of script is a comment.
''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
''2006.01.05 [1.4.0]'' added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck
''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access
''2005.11.08 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
version.extensions.inlineJavascript= {major: 1, minor: 6, revision: 0, date: new Date(2007,2,19)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
if (lookaheadMatch[1]) { // load a script library
// make script tag, set src, add to body to execute, then remove for cleanup
var script = document.createElement("script"); script.src = lookaheadMatch[1];
document.body.appendChild(script); document.body.removeChild(script);
}
if (lookaheadMatch[5]) { // there is script code
if (lookaheadMatch[4]) // show inline script code in tiddler output
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (lookaheadMatch[2]) { // create a link to an 'onclick' script
// add a link, define click handler, save code in link (pass 'place'), set link attributes
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
link.code="function _out(place){"+lookaheadMatch[5]+"\n};_out(this);"
link.setAttribute("title",lookaheadMatch[3]?lookaheadMatch[3]:"");
link.setAttribute("href","javascript:;");
link.style.cursor="pointer";
}
else { // run inline script code
var code="function _out(place){"+lookaheadMatch[5]+"\n};_out(w.output);"
code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
So I recently learned that I actually work for Gringotts:
<html><center>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/2aou6c2MOmg&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/2aou6c2MOmg&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></center></html>
First, the facts. . .
Welcome to my window. Take a look in, see what you can find. Hopefully there'll be quite a bit, but knowing me, this is just a distraction and I'll lose interest in a few weeks.
. . .then the theory. . .
Shared experiences tie you to the people around you. When you both learn and grow from each other, you become intertwined in each other's lives. You become a part of the other and can claim a part in the development of another life. You are part of who that person is today. And they are a part of you. That means that if you want to know who someone is, you should look at their friends. But still there are parts of ourselves that we keep from the world. Others only get brief glimpses of our hidden selves.
I've always felt like I have a hard time conveying to other people who I really am. Part of that is because I'm not even entirely sure who I am. The other reason is because I'm just misunderstood. Aren't we all, though? But seriously, what do you think your life would be like if everyone saw you the way you thought you ought to be seen? Just think about that for a second. . .
. . .this is my attempt at showing people who I am. It's partly for you but mostly for me. I'm trying to learn something from myself. If you learn something along the way, more the better.
For those who didn't know, this past November, my job was a victim of the economic crisis. It was really upsetting, but my employers were very considerate in telling us all that it had nothing to do with who we were or the quality of our work. It was simply about the numbers. So the last few months, I've felt a little bit lost. I was pretty lethargic for a month, even while I was buffing up my resume and checking on postings. After Christmas though, I felt like I had a handle on my own life again. Things weren't any more secure than they had been in December, but I felt better able to handle the situation and move forward.
I'm proud to announce though that I'll be starting a new job on Monday. I'll be working for [[Iron Mountain|http://www.ironmountain.com]] with the pricing team to optimize price setting and cost structure for their North American operations. It sounds really interesting and challenging. And everyone seems enthusiastic to work on that team, so I'm looking forward to it.
Looking back, I don't think my job loss could have been made any less painful, but I do think I learned a lot from the experience. While I won't go near as far as to say that I'm happy it happened, I am thankful for the chance to learn a little about myself.
[[Jumper|http://www.amazon.com/Jumper-Novel-Steven-Gould/dp/0812522370/ref=pd_bbs_2?ie=UTF8&s=books&qid=1204911508&sr=8-2]] by Steven Gould
I saw the movie and then heard it was based on a book, so I had to bite. First off, I enjoyed the movie. It got a lot of bad reviews and I don't see why. Ya, the acting wasn't spectacular, and the plot could have used some work, but did anyone expect this to be anything other than a fun sci-fi special effects movie? I guess I just had the right expectations. Plus, I'd just seen the overly preachy [[Diary of the Dead|http://www.imdb.com/title/tt0848557/]] the night before, so I was in the mood for something fun.
The book wasn't similar to the movie at all. I expected the plot to go that route, but instead, it was significantly different. This was good and bad. I thought the entire middle third of the book was too slow. But overall, the book was entertaining enough. I plan to check out the sequel and see if they can improve on some things.
<div class='header' macro='gradient vert #FFF #FFF '>
<div class='gradient'>
<div class='titleLine' >
<span class='searchBar' macro='search'></span>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
</div>
</div>
<div id='bodywrapper'>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<div id='displayFooter'></div>
</div>
/***
Inspired by k2
!General
***/
/*{{{*/
body {
background: #EDEDED;
}
#contentWrapper{
background: #fff;
border:1px solid #DDD;
margin: 0 auto;
width: 780px;
padding:0;
}
/*}}}*/
/***
!Links
***/
/*{{{*/
a,
a.tiddlyLink,
a.button,
a.externalLink,
#sidebarOptions .sliderPanel a{
color: #1D65BC;
text-decoration: none;
background: transparent;
border: 0;
}
a:hover,
a.tiddlyLink:hover,
a.button:hover,
a.externalLink:hover,
#sidebarOptions .sliderPanel a:hover
{
border: 0;
color: #1D65BC;
text-decoration: underline;
background:transparent;
}
.button:active {background:#1d65bc; border:0;}
.viewer .button:active, .viewer .marked, .viewer .highlight {
color: #fff !important;
background: #3371a3;
border: 0;
}
/*}}}*/
/***
!Header
***/
/*{{{*/
.gradient {margin-top:20px; background:#69ABE5;}
.titleLine{padding: 80px 40px 32px 40px;}
.titleLine a:hover{color:#fff; border-bottom:1px dotted #eee; text-decoration:none;}
.titleLine a{color:#fff; border-bottom:1px dotted #ccc;}
.siteTitle {
font-size: 2.2em;
font-weight: bold;
color:#fff;
}
.siteSubtitle {
font-size: 1.0em;
display: block;
margin: .3em auto 1em;
color:#fff;
}
/*}}}*/
/***
!TopMenu
***/
/*{{{*/
#topMenu br {display:none; }
#topMenu { background: #3371A3; font-size:1em; }
#topMenu { padding:5px 32px; }
#topMenu .button, #topMenu .tiddlyLink {
margin-left:0.1em; margin-right:0.1em;
padding:0.5em;
color:white; font-weight:normal;
}
#topMenu a.button:hover, #topMenu a.tiddlyLink:hover { background:#fff; color:#333; text-decoration:none;}
.searchBar {float:right; font-size:0.9em;}
.searchBar .button {display:block; border:none; color:#ccc;}
.searchBar .button:hover{border:none; color:#eee;}
.searchBar input{
border: 1px inset #1d65bc; background:#dbdee3;
}
.searchBar input:focus {
border: 1px inset #3371a3; background:#fff;
}
/*}}}*/
/***
!Display
***/
/***
!!!Display General
***/
/*{{{*/
#displayArea { margin: 0em 15.7em 0em 1em; }
#displayFooter {
clear: both;
}
#displayFooter {
clear: both;
}
#tiddlerDisplay{padding-top:1em;}
/*}}}*/
/***
!!!Tiddler
***/
/*{{{*/
.tiddler {margin-bottom:1em; padding-bottom:1em; -moz-border-radius: 2em;}
.tiddler {padding-left:2em;}
.title {color:#333; font-size:1.8em; border-bottom:1px solid #333; padding-bottom:0.3px;}
.subtitle { font-size:90%; color:#bbb; padding-left:0.25em; margin-top:0.1em; }
.shadow .title {
color: #aaa;
}
h1,h2,h3,h4,h5 { color: #333; background: transparent; padding-bottom:2px; border-bottom: 1px dotted #666; }
* html .viewer pre {
margin-left: 0em;
}
.viewer hr {
border: 0;
border-top: solid 1px #333;
margin: 0 8em;
color: #333;
}
.viewer a.button {color:#000; border:1px solid #1D65BC; font-weight:bold;}
.viewer a.button:hover{color:#fff; background:#3371a3; text-decoration:none;}
.tagClear {clear:none;}
.toolbar .button {color:#bbb; border:none;}
.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active {background:transparent; color:#111; border:none; text-decoration:underline;}
.tiddler {border-bottom:3px solid #dbdee3; border-right:3px solid #dbdee3; padding-bottom:2em; padding-top:0em;}
.title {border-bottom:none; margin-right:8em;}
h1,h2,h3,h4,h5 { color: #333; background: transparent; padding-bottom:2px; border-bottom: none; }
.viewer pre, .viewer code {
border: 1px solid #B2B6BE;
background: #EBEEF1;}
.tagging, .tagged {
border: 1px solid #dbdee3;
background-color: #ebeef1;
}
.selected .tagging, .selected .tagged {
background-color: #dbdee3;
border: 1px solid #B2B6BE;
}
.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}
.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #014;
}
.tagging .button:hover, .tagged .button:hover {
border: none; background:transparent; text-decoration:underline; color:#014;
}
.tagged .highlight, .tagged .marked, .tagged a.button:active {text-decoration:underline; background:transparent; color:#014;}
.tagging .button, .tagged .button {
color:#bbb;
}
.selected .tagging .button, .selected .tagged .button {
color:#014;
}
.viewer blockquote {
border-left:7px solid #ebeef1;
}
.viewer table {
border: 1px solid #3371a3;
}
.viewer th, thead td {
background: #3371a3;
border: 1px solid #3371a3;
color: #fff;
}
.viewer td, .viewer tr {
border: 1px solid #3371a3;
}
/*}}}*/
/***
!!!Editor
***/
/*{{{*/
* html .editor textarea, * html .editor input {
width: 98%;
}
.editor input, .editor textarea {
border: 1px solid #1d65bc; background:#ebeef1;
}
.editor {padding-top:0.3em;}
.editor textarea:focus, .editor input:focus {
border: 1px inset #3371a3; background:#fff;
}
/*}}}*/
/***
!Sidebar
***/
/*{{{*/
#sidebar{
position:relative;
float:right;
margin-bottom:1em;
display:inline;
width: 16em;
}
#sidebar .tabSelected, #sidebar .tabSected:hover {
color: #000;
background: #dbdee3;
border-top: solid 1px #B2B6BE;
border-left: solid 1px #B2B6BE;
border-right: solid 1px #B2B6BE;
border-bottom:solid 1px #dbdee3 !important;
padding-bottom:1px;
text-decoration:none;
}
#sidebarOptions, #sidebarTabs {border-left: 1px solid #B2B6BE;}
#sidebarTabs {border-bottom: 1px solid #B2B6BE;}
#sidebar .tabUnselected, #sidebar .tabUnselected:hover {
color: #F0F3F5;
background: #B2B6BE ;
border: solid 1px #B2B6BE ;
padding-bottom:1px;
}
#sidebarTabs .tabContents {border:none; background:#DBDEE3; }
#sidebarTabs .tabContents {border-top:1px solid #B2B6BE;}
#sidebarTabs .tabContents .tabContents {border-left:1px solid #b2b6be;}
#sidebarOptions .sliderPanel {
background: #EBEEF1; border:none;
}
#sidebarOptions input {
border: 1px solid #1d65bc;
}
#sidebarOptions input:hover, #sidebarOptions input:active, #sidebarOptions input:focus {
border: 1px inset #3371a3;
}
#sidebar {background: #EBEEF1 ; right:0;}
#sidebar .button:active, #sidebar .marked, #sidebar .highlight {color:#014; background:transparent;text-decoration:none}
/*}}}*/
/***
!!Popups
***/
/*{{{*/
.popup {
background: #3371a3;
border: 1px solid #333;
}
.popup hr {
color: #333;
background: #333;
border-bottom: 1px;
}
.popup li.disabled {
color: #333;
}
.popup li a, .popup li a:visited {
color: #eee;
border: none;
}
.popup li a:hover {
background: #3371a3;
color: #fff;
border: none;
text-decoration:underline;
}
/*}}}*/
/***
!!Message Area
***/
/*{{{*/
#messageArea {
border: 2px dashed #3371a3;
background: #dbdee3;
color: #fff;
font-size:90%;
}
#messageArea .button {
color: #1d65bc;
background: #ebeef1;
text-decoration:none;
font-weight:bold;
border:none;
}
#messageArea a.button {color:#1d65bc;}
#messageArea .button:hover {text-decoration:underline;}
/*}}}*/
/***
!!Tabs
***/
/*{{{*/
.viewer .tabSelected, .viewer .tabSelected:hover{
color: #014;
background: #eee;
border-left: 1px solid #B2B6BE;
border-top: 1px solid #B2B6BE;
border-right: 1px solid #B2B6BE;
}
.viewer .tabUnselected, .viewer .tabUnselected:hover {
color: #fff;
background: #B2B6BE;
}
. viewer .tabContents {
color: #014;
background: #ebeef1;
border: 1px solid #B2B6BE;
}
/*}}}*/
.blog h2, .blog h3, .blog h4{
margin:0;
padding:0;
border-bottom:none;
}
.blog {margin-left:1.5em;}
.blog .excerpt {
margin:0;
margin-top:0.3em;
padding: 0;
margin-left:1em;
padding-left:1em;
font-size:90%;
border-left:1px solid #ddd;
}
#tiddlerWhatsNew h1, #tiddlerWhatsNew h2 {border-bottom:none;}
div[tags~="RecentUpdates"], div[tags~="lewcidExtension"] {margin-bottom: 2em;}
#topMenu .fontResizer {float:right;}
#topMenu .fontResizer .button{border:1px solid #3371A3;}
#topMenu .fontResizer .button:hover {border:1px solid #fff; color:#3371A3;}
#sidebarTabs .txtMainTab .tiddlyLinkExisting {
font-weight: normal;
font-style: normal;
}
#sidebarTabs .txtMoreTab .tiddlyLinkExisting {
font-weight: bold;
font-style: normal;
}
tiddlers:
*K2BlogStyleSheet
*K2BlogPageTemplate
<<applyTheme K2Blog Preview>>
!Categories
------
*<<tag Thoughts>> <<forEachTiddler where 'tiddler.tags.contains("Thoughts")' script 'function writeTotalTasks(index, count) {if (index == 0) return "("+count+")"; else return "";}' write 'writeTotalTasks(index,count)'>>
*<<tag Quotes>> <<forEachTiddler where 'tiddler.tags.contains("Quotes")' script 'function writeTotalTasks(index, count) {if (index == 0) return "("+count+")"; else return "";}' write 'writeTotalTasks(index,count)'>>
*<<tag Music>> <<forEachTiddler where 'tiddler.tags.contains("Music")' script 'function writeTotalTasks(index, count) {if (index == 0) return "("+count+")"; else return "";}' write 'writeTotalTasks(index,count)'>>
*<<tag Wishlist>> <<forEachTiddler where 'tiddler.tags.contains("Wishlist")' script 'function writeTotalTasks(index, count) {if (index == 0) return "("+count+")"; else return "";}' write 'writeTotalTasks(index,count)'>>
!Links
------
!Meta
------
*<<closeAll>>
*<<permaview>>
------
<<slider adminOps adminOptions "admin »" "For me to know">>
You know it's interesting. Within the last 3 years, I feel like I've learned a lot about how to run my life. It's the kind of thing that never occurred to me that I would need to learn. You go to school, you hang out with friends, maybe you work a job or two. That's about it. What more can there be to running life? But I suppose that's why even people just out of college are sometimes still considered late adolescents. There is still so much to learn. I'm sure people younger than me have learned some of these things already. I sure wish I had known some of the things I knew now when I was 20. The lessons to be learned were all around me, but I had to be in the right place in my life to recognize their importance. They are things that your parents perhaps never thought to mention because they take it for granted. Things that I'm sure I now take for granted which is why I'm failing to enumerate the lessons here. Even though I recognize their value and can't imagine going day to day without them, trying to be specific yields answers that seem so obvious their silly. But I guess it's always the obvious that escapes us.
Since about 2001, [[Linkin Park|http://linkinpark.com/]] has been one of my favorite bands. In fact, I would say that it was around that time that I really started caring about music. More than just listening to whatever has on the radio, that's when I felt a personal connection with the music that I listened to. Linkin Park and [[New Found Glory]] were the two bands I heard for the first time then. And in particular, Linkin Park made music that I felt was actually relevant in my life. It's one thing to make generic music about love, sadness, anger, etc. It's another thing to make music that communicates in more than just empty words. I acknowledge the fact that Linkin Park does not make music in the genre that everyone can appreciate. But the important fact is that //I// can connect with it. That's why it's been personally relevant to me.
[[Meeting the Band]]
<<forEachTiddler
where 'tiddler.tags.contains("entry")'
sortBy tiddler.modified descending
write '(index < 10) ? "*[["+tiddler.title+"]]\n" : ""'
>>
*@@bgcolor(#eaf): #eaf- Test@@
Name: Skimboarding
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/skimheader.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#fff): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Skimboarding2
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/skimheader2.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#fff): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Black & White
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader3.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg3.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter3.jpg")
@@bgcolor(#fff): #fff - Text@@
Text
Foreground: #fff
@@bgcolor(#ccc): #ccc- Hover Menu Background@@
Hover Side Menu background
HoverMenBack: #ccc
@@bgcolor(#fff): #fff - Hover in pop-up menus@@
External Links
Sidebar tab text
popup menu text
Hover foreground in toolbar buttons (close, done, cancel, edit, etc)
PHover: #fff
@@bgcolor(#fff): #fff- Links Hover background@@
Hover over links
LinkHover: #fff
@@bgcolor(#fff): #fff- Sidebar menues@@
Border of sidebar tab menu and toolbar buttons (close, edit, done, etc.), and popup menues
SideMen: #fff
@@bgcolor(#fff): #fff - Sidebar Border@@
Text color of unselected toolbar buttons
SideBrd: #fff
@@bgcolor(#fff): #fff - Toolbar@@
Border of selected buttons in toolbar
Toolbar: #fff
@@bgcolor(#000):color(#fff): #000 - Background@@
Background
Background: #000
@@bgcolor(#000): #000- Sidebar FColor@@
Text color of selected tab in timeline
TabSelectedColor: #000
@@bgcolor(#000): #000 - Sidebar Background@@
Background color of unselected tabs in sidebar and toolbar
SideBkg: #000
@@bgcolor(#000): #000 - Sidebar menues@@
Background of toolbar when hovering (close, edit, done, etc.)
Buttonhover: #aaa
@@bgcolor(#000): #000 - Sidebar menu background@@
Background of sidebar tabs display
SideMenuBackground: #000
@@bgcolor(#000): #000 - Background of pop-up menus@@
Background of popup menu unselected items
PBackground: #000
@@bgcolor(#fff): #fff - Titles@@
Site Title
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
Hover Side Menu
Text of popup menu when hovering over selection
HoverMen: #fff
@@bgcolor(#aaa): #aaa- Sidebar Titles@@
Titles in sidebar (Meta, Links, etc.)
SideTit: #aaa
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
@@bgcolor(#aaa): #aaa- Sidebar FColor@@
Text color of dates in timeline and in unselected tabs in sidebar
SideColor: #aaa
@@bgcolor(#aaa): #aaa- Tiddler titles@@
Tiddler titles
TitTies: #aaa
@@bgcolor(#cccccc): #cccccc - Link Text@@
Color of links
Link: #cccccc
@@bgcolor(#777): #777 - Border of message area@@
Subtitle of tiddlers (created, updated, etc)
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#b85b5a): #b85b5a - DNE@@
Links that don't exist
DNE: #b85b5a
*@@bgcolor(#eaf): #eaf- Test@@
Name: BlueX
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader5.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg5.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter5.jpg")
@@bgcolor(#0000FF): #0000FF - Text@@
Text
Foreground: #0000FF
@@bgcolor(#0000FF): #0000FF- Hover Menu Background@@
Hover Side Menu background
HoverMenBack: #0000FF
@@bgcolor(#CCCCCC): #CCCCCC - Hover in pop-up menus@@
External Links
Sidebar tab text
popup menu text
Hover foreground in toolbar buttons (close, done, cancel, edit, etc)
PHover: #CCCCCC
@@bgcolor(#019): #019- Links Hover background@@
Hover over links
LinkHover: #019
@@bgcolor(#0000FF): #0000FF- Sidebar menues@@
Border of sidebar tab menu and toolbar buttons (close, edit, done, etc.), and popup menues
SideMen: #0000FF
@@bgcolor(#0000FF): #0000FF - Sidebar Border@@
Text color of unselected toolbar buttons
SideBrd: #0000FF
@@bgcolor(#019): #019 - Toolbar@@
Border of selected buttons in toolbar
Toolbar: #019
@@bgcolor(#000):color(#fff): #000 - Background@@
Background
Background: #000
@@bgcolor(#000): #000- Sidebar FColor@@
Text color of selected tab in timeline
TabSelectedColor: #000
@@bgcolor(#000): #000 - Sidebar Background@@
Background color of unselected tabs in sidebar and toolbar
SideBkg: #000
@@bgcolor(#aaa): #aaa - Sidebar menues@@
Background of toolbar when hovering (close, edit, done, etc.)
Buttonhover: #aaa
@@bgcolor(#000): #000 - Sidebar menu background@@
Background of sidebar tabs display
SideMenuBackground: #000
@@bgcolor(#000): #000 - Background of pop-up menus@@
Background of popup menu unselected items
PBackground: #000
@@bgcolor(#fff): #fff - Titles@@
Site Title
Titles: #fff
@@bgcolor(#0000FF): #0000FF- Hover Menu@@
Hover Side Menu
Text of popup menu when hovering over selection
HoverMen: #0000FF
@@bgcolor(#0000FF): #0000FF- Sidebar Titles@@
Titles in sidebar (Meta, Links, etc.)
SideTit: #0000FF
@@bgcolor(#0000FF): #0000FF- Sidebar FColor@@
Text color of dates in timeline and in unselected tabs in sidebar
SideColor: #0000FF
@@bgcolor(#0000FF): #0000FF- Tiddler titles@@
Tiddler titles
TitTies: #0000FF
@@bgcolor(#ccc): #ccc - Link Text@@
Color of links
Link: #ccc
@@bgcolor(#aaa): #aaa - Border of message area@@
Subtitle of tiddlers (created, updated, etc)
MBorder: #aaa
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#b85b5a): #b85b5a - DNE@@
Links that don't exist
DNE: #b85b5a
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
*@@bgcolor(#eaf): #eaf- Test@@
Name: BlueY
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader7.jpg")
@@bgcolor(#019): #019 - Toolbar@@
Border of selected buttons in toolbar
Toolbar: #019
@@bgcolor(#0000FF): #0000FF- Sidebar FColor@@
Text color of dates in timeline and in unselected tabs in sidebar
SideColor: #0000FF
@@bgcolor(#aaa): #aaa - Sidebar menues@@
Background of toolbar when hovering (close, edit, done, etc.)
Buttonhover: #aaa
@@bgcolor(#000): #000- Sidebar FColor@@
Text color of selected tab in timeline
TabSelectedColor: #000
@@bgcolor(#019): #019 - Hover in pop-up menus@@
External Links
Sidebar tab text
popup menu text
Hover foreground in toolbar buttons (close, done, cancel, edit, etc)
PHover: #019
@@bgcolor(#0000FF): #0000FF- Sidebar menues@@
Border of sidebar tab menu and toolbar buttons (close, edit, done, etc.), and popup menues
SideMen: #0000FF
@@bgcolor(#fff): #fff - Titles@@
Site Title
Titles: #fff
@@bgcolor(#fff): #fff - Background of pop-up menus@@
Background of popup menu unselected items
PBackground: #fff
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
@@bgcolor(#fff):color(#000): #fff - Background@@
Background: #fff
@@bgcolor(#0000FF): #0000FF- Hover Menu Background@@
Hover Side Menu background
HoverMenBack: #0000FF
@@bgcolor(#0000FF): #0000FF - Text@@
Foreground: #0000FF
@@bgcolor(#fff):color(#000): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#0000FF): #0000FF - Link Text@@
Link: #0000FF
@@bgcolor(#019): #019 - Links Hover background@@
LinkHover: #019
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#019): #019 - Hover in pop-up menus@@
PHover: #019
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#019):color(#fff): #019 - Gradient Top@@
GTop: #019
@@bgcolor(#fff): #fff - Gradient Bottom@@
GBot: #fff
@@bgcolor(#0000FF): #0000FF - Next Actions Border@@
NABorder: #0000FF
@@bgcolor(#C0C0C0): #C0C0C0 - Next Actions Background@@
NABckg: #C0C0C0
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#0000FF): #0000FF - Hover Menu@@
HoverMen: #0000FF
@@bgcolor(#fff): #fff - Input field@@
IField: #fff
@@bgcolor(#0000FF): #0000FF - Tiddler Shadow@@
TShadow: #0000FF
@@bgcolor(#0000FF): #0000FF - Tiddler Border@@
TBorder: #0000FF
@@bgcolor(#0000FF): #0000FF - Tiddler Button Border@@
BBorder2: #0000FF
@@bgcolor(#fff):color(#000): #fff - Tag Border@@
TagBorder: #fff
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#0000FF): #0000FF - Edit Text@@
EditForeground: #0000FF
@@bgcolor(#990000): #990000 - Error@@
Error: #990000
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Christmas
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader9.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
#e7e7e7 - Background
Background: #e7e7e7
#FF0000- Hover Menu Background
Hover Side Menu background
HoverMenBack: #FF0000
@@bgcolor(#006600): #006600 - Text@@
Foreground: #006600
@@bgcolor(#fff):color(#000): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#990000): #990000 - Link Text@@
Link: #990000
@@bgcolor(#00CC00): #00CC00- Links Hover background@@
LinkHover: #00CC00
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#CC0000): #CC0000 - Hover in pop-up menus@@
PHover: #CC0000
@@bgcolor(#006600): #006600 - Background of pop-up menus@@
PBackground: #006600
@@bgcolor(#00CC00): #00CC00 - Button border@@
BBorder: #00CC00
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#006600):color(#fff): #006600 - Gradient Top@@
GTop: #006600
@@bgcolor(#fff): #fff - Gradient Bottom@@
GBot: #fff
@@bgcolor(#00CC00): #00CC00 - Next Actions Border@@
NABorder: #00CC00
@@bgcolor(#333300): #333300 - Next Actions Background@@
NABckg: #333300
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#333300): #333300 - Waiting Background@@
WABckg: #333300
@@bgcolor(#00CC00): #00CC00 - Hover Menu@@
HoverMen: #00CC00
@@bgcolor(#fff): #fff - Input field@@
IField: #fff
@@bgcolor(#00CC00): #00CC00 - Tiddler Shadow@@
TShadow: #00CC00
@@bgcolor(#00CC00): #00CC00 - Tiddler Border@@
TBorder: #00CC00
@@bgcolor(#00CC00): #00CC00 - Tiddler Button Border@@
BBorder2: #00CC00
@@bgcolor(#006600):color(#000): #006600 - Tag Border@@
TagBorder: #006600
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#006600): #006600 - Edit Text@@
EditForeground: #006600
@@bgcolor(#0000FF): #0000FF - Error@@
Error: #0000FF
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Christmas2
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/christmas2.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
#e7e7e7 - Background
Background: #e7e7e7
#FF0000- Hover Menu Background
Hover Side Menu background
HoverMenBack: #FF0000
@@bgcolor(#fff): #fff - Titles@@
Site Title
Titles: #fff
@@bgcolor(#006600): #006600 - Text@@
Foreground: #006600
@@bgcolor(#fff):color(#000): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#990000): #990000 - Link Text@@
Link: #990000
@@bgcolor(#00CC00): #00CC00- Links Hover background@@
LinkHover: #00CC00
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#CC0000): #CC0000 - Hover in pop-up menus@@
PHover: #CC0000
@@bgcolor(#006600): #006600 - Background of pop-up menus@@
PBackground: #006600
@@bgcolor(#00CC00): #00CC00 - Button border@@
BBorder: #00CC00
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#006600):color(#fff): #006600 - Gradient Top@@
GTop: #006600
@@bgcolor(#fff): #fff - Gradient Bottom@@
GBot: #fff
@@bgcolor(#00CC00): #00CC00 - Next Actions Border@@
NABorder: #00CC00
@@bgcolor(#333300): #333300 - Next Actions Background@@
NABckg: #333300
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#333300): #333300 - Waiting Background@@
WABckg: #333300
@@bgcolor(#00CC00): #00CC00 - Hover Menu@@
HoverMen: #00CC00
@@bgcolor(#fff): #fff - Input field@@
IField: #fff
@@bgcolor(#00CC00): #00CC00 - Tiddler Shadow@@
TShadow: #00CC00
@@bgcolor(#00CC00): #00CC00 - Tiddler Border@@
TBorder: #00CC00
@@bgcolor(#00CC00): #00CC00 - Tiddler Button Border@@
BBorder2: #00CC00
@@bgcolor(#006600):color(#000): #006600 - Tag Border@@
TagBorder: #006600
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#006600): #006600 - Edit Text@@
EditForeground: #006600
@@bgcolor(#0000FF): #0000FF - Error@@
Error: #0000FF
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Ed 1
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/e1header.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#000): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Ed 3
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/e3header.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#000): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Fall
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/fallheader.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#fff): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: GreenX
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader10.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg10.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter10.jpg")
#00AA00- Hover Menu Background
Hover Side Menu background
HoverMenBack: #00AA00
@@bgcolor(#aaa): #aaa - Sidebar menues@@
Background of toolbar when hovering (close, edit, done, etc.)
Buttonhover: #aaa
@@bgcolor(#00CC00): #00CC00- Tiddler titles@@
Tiddler titles
TitTies: #00CC00
@@bgcolor(#000): #000 - Sidebar Border@@
Text color of unselected toolbar buttons
SideBrd: #000
@@bgcolor(#00CC00): #00CC00 - Sidebar Background@@
Background color of unselected tabs in sidebar and toolbar
SideBkg: #00CC00
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
@@bgcolor(#00CC00): #00CC00- Toolbar@@
Toolbar: #00CC00
@@bgcolor(#fff): #fff - Titles@@
Site Title
Titles: #fff
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
@@bgcolor(#000):color(#fff): #000 - Background@@
Background: #000
@@bgcolor(#006600): #006600 - Text@@
Foreground: #006600
@@bgcolor(#000):color(#fff): #000 - Tiddler Background@@
TBackground: #000
@@bgcolor(#00CC00): #00CC00 - Link Text@@
Link: #00CC00
@@bgcolor(#006600): #006600 - Links Hover background@@
LinkHover: #006600
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#00AA00): #00AA00 - Hover in pop-up menus@@
PHover: #00AA00
@@bgcolor(#006600): #006600 - Background of pop-up menus@@
PBackground: #006600
@@bgcolor(#00CC00): #00CC00 - Button border@@
BBorder: #00CC00
@@bgcolor(#00CC00): #00CC00 - Hover Menu@@
HoverMen: #00CC00
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#006600):color(#fff): #006600 - Gradient Top@@
GTop: #006600
@@bgcolor(#000): #000 - Gradient Bottom@@
GBot: #000000
@@bgcolor(#00CC00): #00CC00 - Next Actions Border@@
NABorder: #00CC00
@@bgcolor(#333300): #333300 - Next Actions Background@@
NABckg: #333300
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#333300): #333300 - Waiting Background@@
WABckg: #333300
@@bgcolor(#000): #000 - Input field@@
IField: #000
@@bgcolor(#00CC00): #00CC00 - Tiddler Shadow@@
TShadow: #00CC00
@@bgcolor(#00CC00): #00CC00 - Tiddler Border@@
TBorder: #00CC00
@@bgcolor(#00CC00): #00CC00 - Tiddler Button Border@@
BBorder2: #00CC00
@@bgcolor(#000):color(#fff): #000 - Tag Border@@
TagBorder: #000
@@bgcolor(#000): #000 - EditBackground@@
EditBackground: #000
@@bgcolor(#006600): #006600 - Edit Text@@
EditForeground: #006600
@@bgcolor(#0000FF): #0000FF - Error@@
Error: #0000FF
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: GreenY
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader11.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
#e7e7e7 - Background
Background: #e7e7e7
Hover Side Menu background
HoverMenBack: #006600
@@bgcolor(#006600): #006600 - Text@@
Foreground: #006600
@@bgcolor(#fff):color(#000): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#006600): #006600 - Link Text@@
Link: #006600
@@bgcolor(#00CC00): #00CC00- Links Hover background@@
LinkHover: #00CC00
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#00CC00): #00CC00 - Hover in pop-up menus@@
PHover: #00CC00
@@bgcolor(#006600): #006600 - Background of pop-up menus@@
PBackground: #006600
@@bgcolor(#00CC00): #00CC00 - Button border@@
BBorder: #00CC00
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#006600):color(#fff): #006600 - Gradient Top@@
GTop: #006600
@@bgcolor(#fff): #fff - Gradient Bottom@@
GBot: #fff
@@bgcolor(#00CC00): #00CC00 - Next Actions Border@@
NABorder: #00CC00
@@bgcolor(#333300): #333300 - Next Actions Background@@
NABckg: #333300
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#333300): #333300 - Waiting Background@@
WABckg: #333300
@@bgcolor(#00CC00): #00CC00 - Hover Menu@@
HoverMen: #00CC00
@@bgcolor(#fff): #fff - Input field@@
IField: #fff
@@bgcolor(#00CC00): #00CC00 - Tiddler Shadow@@
TShadow: #00CC00
@@bgcolor(#00CC00): #00CC00 - Tiddler Border@@
TBorder: #00CC00
@@bgcolor(#00CC00): #00CC00 - Tiddler Button Border@@
BBorder2: #00CC00
@@bgcolor(#006600):color(#000): #006600 - Tag Border@@
TagBorder: #006600
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#006600): #006600 - Edit Text@@
EditForeground: #006600
@@bgcolor(#0000FF): #0000FF - Error@@
Error: #0000FF
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Halloween
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader2.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg2.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter2.jpg")
@@bgcolor(#FF9900): #FF9900 - Hover in pop-up menus@@
External Links
Sidebar tab text
popup menu text
Hover foreground in toolbar buttons (close, done, cancel, edit, etc)
PHover: #FF9900
@@bgcolor(#FF9900): #FF9900 - Links Hover background@@
Hover over links
LinkHover: #FF9900
@@bgcolor(#FF6600): #FF6600 - Text@@
Text
Foreground: #FF6600
@@bgcolor(#000):color(#fff): #000 - Background@@
Background
Background: #000
@@bgcolor(#fff): #fff - Titles@@
Site Title
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
Hover Side Menu
Text of popup menu when hovering over selection
HoverMen: #fff
@@bgcolor(#FF6600): #FF6600 - Hover Menu Background@@
Hover Side Menu background
HoverMenBack: #FF6600
@@bgcolor(#aaa): #aaa- Sidebar Titles@@
Titles in sidebar (Meta, Links, etc.)
SideTit: #aaa
@@bgcolor(#000): #000 - button backgrounds@@
Background of toolbar when hovering (close, edit, done, etc.)
Buttonhover: #dddddd
@@bgcolor(#FF9900): #FF9900 - Sidebar menues@@
Border of sidebar tab menu and toolbar buttons (close, edit, done, etc.), and popup menues
SideMen: #FF9900
@@bgcolor(#000): #000 - Sidebar menu background@@
Background of sidebar tabs display
SideMenuBackground: #000
@@bgcolor(#aaa): #aaa- Sidebar FColor@@
Text color of dates in timeline and in unselected tabs in sidebar
SideColor: #aaa
@@bgcolor(#aaa): #aaa- Tiddler titles@@
Tiddler titles
TitTies: #aaa
@@bgcolor(#000): #000- Sidebar FColor@@
Text color of selected tab in timeline
TabSelectedColor: #000
@@bgcolor(#000): #000 - Sidebar Background@@
Background color of unselected tabs in sidebar and toolbar
SideBkg: #000
@@bgcolor(#FF9900): #FF9900- Sidebar Border@@
Text color of unselected toolbar buttons
SideBrd: #FF9900
@@bgcolor(#FF9900): #FF9900- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #FF9900
@@bgcolor(#FF9900): #FF9900 - Toolbar@@
Border of selected buttons in toolbar
Toolbar: #FF9900
@@bgcolor(#000): #000 - Background of pop-up menus@@
Background of popup menu unselected items
PBackground: #000
@@bgcolor(#777): #777 - Border of message area@@
Subtitle of tiddlers (created, updated, etc)
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#b85b5a): #b85b5a - DNE@@
Links that don't exist
DNE: #b85b5a
@@bgcolor(#cccccc): #cccccc - Link Text@@
Color of links
Link: #cccccc
*@@bgcolor(#eaf): #eaf- Test@@
Name: Halloween2
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader2a.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg2.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter2.jpg")
@@bgcolor(#FF9900): #FF9900 - Hover in pop-up menus@@
External Links
Sidebar tab text
popup menu text
Hover foreground in toolbar buttons (close, done, cancel, edit, etc)
PHover: #FF9900
@@bgcolor(#FF9900): #FF9900 - Links Hover background@@
Hover over links
LinkHover: #FF9900
@@bgcolor(#FF6600): #FF6600 - Text@@
Text
Foreground: #FF6600
@@bgcolor(#000):color(#fff): #000 - Background@@
Background
Background: #000
@@bgcolor(#fff): #fff - Titles@@
Site Title
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
Hover Side Menu
Text of popup menu when hovering over selection
HoverMen: #fff
@@bgcolor(#FF6600): #FF6600 - Hover Menu Background@@
Hover Side Menu background
HoverMenBack: #FF6600
@@bgcolor(#aaa): #aaa- Sidebar Titles@@
Titles in sidebar (Meta, Links, etc.)
SideTit: #aaa
@@bgcolor(#000): #000 - button backgrounds@@
Background of toolbar when hovering (close, edit, done, etc.)
Buttonhover: #dddddd
@@bgcolor(#FF9900): #FF9900 - Sidebar menues@@
Border of sidebar tab menu and toolbar buttons (close, edit, done, etc.), and popup menues
SideMen: #FF9900
@@bgcolor(#000): #000 - Sidebar menu background@@
Background of sidebar tabs display
SideMenuBackground: #000
@@bgcolor(#aaa): #aaa- Sidebar FColor@@
Text color of dates in timeline and in unselected tabs in sidebar
SideColor: #aaa
@@bgcolor(#aaa): #aaa- Tiddler titles@@
Tiddler titles
TitTies: #aaa
@@bgcolor(#000): #000- Sidebar FColor@@
Text color of selected tab in timeline
TabSelectedColor: #000
@@bgcolor(#000): #000 - Sidebar Background@@
Background color of unselected tabs in sidebar and toolbar
SideBkg: #000
@@bgcolor(#FF9900): #FF9900- Sidebar Border@@
Text color of unselected toolbar buttons
SideBrd: #FF9900
@@bgcolor(#FF9900): #FF9900- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #FF9900
@@bgcolor(#FF9900): #FF9900 - Toolbar@@
Border of selected buttons in toolbar
Toolbar: #FF9900
@@bgcolor(#000): #000 - Background of pop-up menus@@
Background of popup menu unselected items
PBackground: #000
@@bgcolor(#777): #777 - Border of message area@@
Subtitle of tiddlers (created, updated, etc)
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#b85b5a): #b85b5a - DNE@@
Links that don't exist
DNE: #b85b5a
@@bgcolor(#cccccc): #cccccc - Link Text@@
Color of links
Link: #cccccc
*@@bgcolor(#eaf): #eaf- Test@@
Name: Kubrick
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#fff): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Mountain
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/mountainheader.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#fff): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Obama
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/obamaheader.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#000): #000 - Titles@@
Titles: #000
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: RedX
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader8.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg8.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter8.jpg")
@@bgcolor(#CC0000): #CC0000 - Text@@
Text
Foreground: #CC0000
@@bgcolor(#CC0000): #CC0000- Hover Menu Background@@
Hover Side Menu background
HoverMenBack: #CC0000
@@bgcolor(#CCCCCC): #CCCCCC - Hover in pop-up menus@@
External Links
Sidebar tab text
popup menu text
Hover foreground in toolbar buttons (close, done, cancel, edit, etc)
PHover: #CCCCCC
@@bgcolor(#CC0000): #CC0000 - Links Hover background@@
Hover over links
LinkHover: #CC0000
@@bgcolor(#CC0000): #CC0000- Sidebar menues@@
Border of sidebar tab menu and toolbar buttons (close, edit, done, etc.), and popup menues
SideMen: #CC0000
@@bgcolor(#CC0000): #CC0000 - Sidebar Border@@
Text color of unselected toolbar buttons
SideBrd: #CC0000
@@bgcolor(#CC0000): #CC0000 - Toolbar@@
Border of selected buttons in toolbar
Toolbar: #CC0000
@@bgcolor(#000):color(#fff): #000 - Background@@
Background
Background: #000
@@bgcolor(#000): #000- Sidebar FColor@@
Text color of selected tab in timeline
TabSelectedColor: #000
@@bgcolor(#000): #000 - Sidebar Background@@
Background color of unselected tabs in sidebar and toolbar
SideBkg: #000
@@bgcolor(#aaa): #aaa - Sidebar menues@@
Background of toolbar when hovering (close, edit, done, etc.)
Buttonhover: #aaa
@@bgcolor(#000): #000 - Sidebar menu background@@
Background of sidebar tabs display
SideMenuBackground: #000
@@bgcolor(#000): #000 - Background of pop-up menus@@
Background of popup menu unselected items
PBackground: #000
@@bgcolor(#fff): #fff - Titles@@
Site Title
Titles: #fff
@@bgcolor(#990000): #990000- Hover Menu@@
Hover Side Menu
Text of popup menu when hovering over selection
HoverMen: #990000
@@bgcolor(#CC0000): #CC0000- Sidebar Titles@@
Titles in sidebar (Meta, Links, etc.)
SideTit: #CC0000
@@bgcolor(#990000): #990000- Sidebar FColor@@
Text color of dates in timeline and in unselected tabs in sidebar
SideColor: #990000
@@bgcolor(#CC0000): #CC0000- Tiddler titles@@
Tiddler titles
TitTies: #CC0000
@@bgcolor(#ccc): #ccc - Link Text@@
Color of links
Link: #ccc
@@bgcolor(#aaa): #aaa - Border of message area@@
Subtitle of tiddlers (created, updated, etc)
MBorder: #aaa
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#b85b5a): #b85b5a - DNE@@
Links that don't exist
DNE: #b85b5a
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
*@@bgcolor(#eaf): #eaf- Test@@
Name: RedY
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader9.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#CC0000): #CC0000 - Text@@
Foreground: #CC0000
@@bgcolor(#fff):color(#fff): #fff - Tiddler Background@@
TBackground: #fff
#FF0000- Hover Menu Background
Hover Side Menu background
HoverMenBack: #FF0000
@@bgcolor(#990000): #990000 - Link Text@@
Link: #990000
@@bgcolor(#CC0000): #CC0000 - Links Hover background@@
LinkHover: #CC0000
@@bgcolor(#FF0000): #FF0000- Sidebar FColor@@
Text color of dates in timeline and in unselected tabs in sidebar
SideColor: #FF0000
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#CC0000): #CC0000 - Hover in pop-up menus@@
PHover: #CC0000
@@bgcolor(#eee): #eee - Background of pop-up menus@@
Background of popup menu unselected items
PBackground: #eee
@@bgcolor(#990000): #990000 - Button border@@
BBorder: #990000
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#CC0000):color(#fff): #CC0000 - Gradient Top@@
GTop: #CC0000
@@bgcolor(#fff): #fff - Gradient Bottom@@
GBot: #fff
@@bgcolor(#990000): #990000 - Next Actions Border@@
NABorder: #990000
@@bgcolor(#C0C0C0): #C0C0C0 - Next Actions Background@@
NABckg: #C0C0C0
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#990000): #990000 - Hover Menu@@
HoverMen: #990000
@@bgcolor(#fff): #fff - Input field@@
IField: #fff
@@bgcolor(#990000): #990000 - Tiddler Shadow@@
TShadow: #990000
@@bgcolor(#990000): #990000 - Tiddler Border@@
TBorder: #990000
@@bgcolor(#990000): #990000 - Tiddler Button Border@@
BBorder2: #990000
@@bgcolor(#fff):color(#fff): #fff - Tag Border@@
TagBorder: #fff
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#CC0000): #CC0000 - Edit Text@@
EditForeground: #CC0000
@@bgcolor(#0000FF): #0000FF - Error@@
Error: #0000FF
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Simple & Clean
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/kubrickheader4.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg4.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter4.jpg")
@@bgcolor(#000): #000 - Text@@
Text
Foreground: #000
@@bgcolor(#000): #000- Hover Menu Background@@
Hover Side Menu background
HoverMenBack: #000
@@bgcolor(#000): #000 - Hover in pop-up menus@@
External Links
Sidebar tab text
popup menu text
Hover foreground in toolbar buttons (close, done, cancel, edit, etc)
PHover: #000
@@bgcolor(#000): #000- Links Hover background@@
Hover over links
LinkHover: #000
@@bgcolor(#000): #000- Sidebar menues@@
Border of sidebar tab menu and toolbar buttons (close, edit, done, etc.), and popup menues
SideMen: #000
@@bgcolor(#000): #000 - Sidebar Border@@
Text color of unselected toolbar buttons
SideBrd: #000
@@bgcolor(#000): #000 - Toolbar@@
Border of selected buttons in toolbar
Toolbar: #000
@@bgcolor(#fff):color(#000): #fff - Background@@
Background
Background: #fff
@@bgcolor(#fff): #fff- Sidebar FColor@@
Text color of selected tab in timeline
TabSelectedColor: #fff
@@bgcolor(#fff): #fff - Sidebar Background@@
Background color of unselected tabs in sidebar and toolbar
SideBkg: #fff
@@bgcolor(#aaa): #aaa - Sidebar menues@@
Background of toolbar when hovering (close, edit, done, etc.)
Buttonhover: #aaa
@@bgcolor(#fff): #fff - Sidebar menu background@@
Background of sidebar tabs display
SideMenuBackground: #fff
@@bgcolor(#fff): #fff - Background of pop-up menus@@
Background of popup menu unselected items
PBackground: #fff
@@bgcolor(#000): #000 - Titles@@
Site Title
Titles: #000
@@bgcolor(#000): #000- Hover Menu@@
Hover Side Menu
Text of popup menu when hovering over selection
HoverMen: #000
@@bgcolor(#000): #000- Sidebar Titles@@
Titles in sidebar (Meta, Links, etc.)
SideTit: #000
@@bgcolor(#000): #000- Sidebar FColor@@
Text color of dates in timeline and in unselected tabs in sidebar
SideColor: #000
@@bgcolor(#000): #000- Tiddler titles@@
Tiddler titles
TitTies: #000
@@bgcolor(#999999): #999999 - Link Text@@
Color of links
Link: #999999
@@bgcolor(#777): #777 - Border of message area@@
Subtitle of tiddlers (created, updated, etc)
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#b85b5a): #b85b5a - DNE@@
Links that don't exist
DNE: #b85b5a
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
*@@bgcolor(#eaf): #eaf- Test@@
Name: Snow
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/snowheader2.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#fff): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Snowboard
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/snowboardheader2.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#fff): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Soccer
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/soccerheader.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#fff): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Spring
Orient: vert
CHeader: url("http://thefamilynet.googlepages.com/springheader.jpg")
CBackground: url("http://thefamilynet.googlepages.com/kubrickbg.jpg")
CFooter: url("http://thefamilynet.googlepages.com/kubrickfooter.jpg")
@@bgcolor(#06c):color(#fff): #06c - Hover in pop-up menus@@
PHover: #06c
@@bgcolor(#147): #147 - Links Hover background@@
LinkHover: #147
@@bgcolor(#666):color(#fff): #666 - Text@@
Foreground: #666
@@bgcolor(#e7e7e7): #e7e7e7 - Background@@
Background: #e7e7e7
@@bgcolor(#fff): #fff - Titles@@
Titles: #fff
@@bgcolor(#fff): #fff - Hover Menu@@
HoverMen: #fff
@@bgcolor(#18f): #18f - Hover Menu Background@@
HoverMenBack: #18f
@@bgcolor(#000): #000- Sidebar Titles@@
SideTit: #000
@@bgcolor(#ccc): #ccc- Sidebar menues@@
Buttonhover: #ccc
@@bgcolor(#ccc): #ccc- Sidebar menues@@
SideMen: #ccc
@@bgcolor(#ccc): #ccc - Sidebar menu background@@
SideMenuBackground: #ccc
@@bgcolor(#333): #333- Sidebar FColor@@
SideColor: #333
@@bgcolor(#333): #333- Tiddler titles@@
Tiddler titles
TitTies: #333
@@bgcolor(#333): #333- Sidebar FColor@@
TabSelectedColor: #333
@@bgcolor(#e6e6e6): #e6e6e6- Sidebar Background@@
SideBkg: #e6e6e6
@@bgcolor(#aaa): #aaa- Sidebar Border@@
SideBrd: #aaa
@@bgcolor(#bbb): #bbb- Toolbar@@
Toolbar: #bbb
@@bgcolor(#eee): #eee - Background of pop-up menus@@
PBackground: #eee
@@bgcolor(#777): #777 - Border of message area@@
MBorder: #777
@@bgcolor(#402c74): #402c74 - Editor@@
Editor: #402c74
@@bgcolor(#d5d6d7): #d5d6d7 - Body Background Color@@
BBC: #d5d6d7
@@bgcolor(#b85b5a): #b85b5a - DNE@@
DNE: #b85b5a
@@bgcolor(#06c): #06c - Link Text@@
Link: #06c
@@bgcolor(#aaa): #aaa- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #aaa
------
@@bgcolor(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#0000FF): #0000FF - Button border@@
BBorder: #0000FF
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#000000):color(#fff): #000000 - Gradient Top@@
GTop: #000000
@@bgcolor(#0000FF): #0000FF - Gradient Bottom@@
GBot: #0000FF
@@bgcolor(#98AFC7): #98AFC7 - Next Actions Border@@
NABorder: #98AFC7
@@bgcolor(#EEEEEE): #EEEEEE - Next Actions Background@@
NABckg: #EEEEEE
@@bgcolor(#6D7B8D): #6D7B8D - Waiting Border@@
WABorder: #6D7B8D
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#cccccc): #cccccc - Input field@@
IField: #cccccc
@@bgcolor(#ccc): #ccc - Tiddler Shadow@@
TShadow: #ccc
@@bgcolor(#999999): #999999 - Tiddler Border@@
TBorder: #999999
@@bgcolor(#ccc): #ccc - Tiddler Button Border@@
BBorder2: #ccc
@@bgcolor(#fff): #fff - Tag Border@@
TagBorder: #ccc
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#000):color(#fff): #000 - Edit Text@@
EditForeground: #000
@@bgcolor(#f88): #f88 - Error@@
Error: #f88
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#fff): #fff - Top Menu Foreground@@
TForeground: #fff
*@@bgcolor(#eaf): #eaf- Test@@
Name: Stars and Stripes
Orient: horz
CHeader: url("http://thefamilynet.googlepages.com/kubrickheaderss.jpg")
@@bgcolor(#fff):color(#fff): #fff - Background@@
Background: #fff
#0000FF- Hover Menu Background
Hover Side Menu background
HoverMenBack: #0000FF
@@bgcolor(#fff): #fff - Titles@@
Site Title
Titles: #fff
@@bgcolor(#CC0000): #CC0000 - Text@@
Foreground: #CC0000
@@bgcolor(#CC0000): #CC0000- Sidebar Border@@
Background of selected items in popup menu
PopBkg: #CC0000
@@bgcolor(#fff):color(#fff): #fff - Tiddler Background@@
TBackground: #fff
@@bgcolor(#0000FF): #0000FF - Link Text@@
Link: #0000FF
@@bgcolor(#CC0000): #CC0000 - Links Hover background@@
LinkHover: #CC0000
@@bgcolor(#cccccc): #cccccc - Tiddler title background@@
TitleBkg: #cccccc
@@bgcolor(#CC0000): #CC0000 - Hover in pop-up menus@@
PHover: #CC0000
@@bgcolor(#aaa): #aaa - Background of pop-up menus@@
PBackground: #aaa
@@bgcolor(#990000): #990000 - Button border@@
BBorder: #990000
@@bgcolor(#cccccc): #cccccc - Button background@@
BBackground: #cccccc
@@bgcolor(#999999): #999999 - Subtitle@@
Subtitle: #999999
@@bgcolor(#CC0000):color(#fff): #CC0000 - Gradient Top@@
GTop: #CC0000
@@bgcolor(#fff): #fff #0000FF - Gradient Bottom@@
GBot: #fff #0000FF
@@bgcolor(#990000): #990000 - Next Actions Border@@
NABorder: #990000
@@bgcolor(#C0C0C0): #C0C0C0 - Next Actions Background@@
NABckg: #C0C0C0
@@bgcolor(#0000FF): #0000FF - Waiting Border@@
WABorder: #0000FF
@@bgcolor(#C0C0C0): #C0C0C0 - Waiting Background@@
WABckg: #C0C0C0
@@bgcolor(#0000FF): #0000FF - Hover Menu@@
HoverMen: #0000FF
@@bgcolor(#fff): #fff - Input field@@
IField: #fff
@@bgcolor(#990000): #990000 - Tiddler Shadow@@
TShadow: #990000
@@bgcolor(#0000FF): #0000FF - Tiddler Border@@
TBorder: #0000FF
@@bgcolor(#990000): #990000 - Tiddler Button Border@@
BBorder2: #990000
@@bgcolor(#fff):color(#fff): #fff - Tag Border@@
TagBorder: #fff
@@bgcolor(#fff): #fff - EditBackground@@
EditBackground: #fff
@@bgcolor(#CC0000): #CC0000 - Edit Text@@
EditForeground: #CC0000
@@bgcolor(#eaf): #eaf - Error@@
Error: #eaf
@@bgcolor(#fff): #fff - Hover Foreground@@
HForeground: #fff
@@bgcolor(#000): #000 - Top Menu Foreground@@
TForeground: #000
Nothing new to report. I have a 6-hour Level 2 [[CFA|http://en.wikipedia.org/wiki/Chartered_Financial_Analyst#The_CFA_exam]] exam to take on June 7th. I'll be taking a week off of work to lock myself in a room and study. [[Give me a call or send me an e-mail|Contact]] on June 8th. I'm sure I'll be more than happy for any sort of human interaction by then.
/***
Cosmetic fixes that probably should be included in a future TW...
***/
/*{{{*/
.viewer .listTitle { list-style-type:none; margin-left:-2em; }
.editorFooter .button { padding-top: 0px; padding-bottom:0px; }
/*}}}*/
/***
Important stuff. See TagglyTaggingStyles and HorizontalMainMenuStyles
***/
/*{{{*/
[[TagglyTaggingStyles]]
[[HorizontalMainMenuStyles]]
/*}}}*/
/***
Clint's fix for weird IE behaviours
***/
/*{{{*/
body {position:static;}
.tagClear{margin-top:1em;clear:both;}
/*}}}*/
/***
Just colours, fonts, tweaks etc. See SideBarWhiteAndGrey
***/
/*{{{*/
body {background:#eee; /* font-size:103%; */}
a{ color: #069; }
a:hover{ background: #069; color: #fff; }
.popup { background: #178; border: 1px solid #069; }
.headerForeground a { color: #6fc;}
.headerShadow { left: 2px; top: 2px; }
.title { padding:0px; margin:0px; }
.siteSubtitle { padding:0px; margin:0px; padding-left:1.5em; }
.subtitle { font-size:90%; color:#999; padding-left:0.25em; }
h1,h2,h3,h4,h5 { color: #000; background: transparent; }
.title {color:black; font-size:2em;}
.shadow .title {color:#999; }
.viewer pre { background-color:#f8f8ff; border-color:#ddf; }
.viewer { padding-top:0px; }
.editor textarea { font-family:monospace; }
#sidebarOptions { border:1px [[ColorPalette::BBorder2]] solid; }
.tiddler {
border-bottom:1px solid [[ColorPalette::TShadow]]; border-right:1px solid [[ColorPalette::TShadow]]; padding-bottom:1em; margin-bottom:1em; border-top:1px solid [[ColorPalette::TBorder]]; border-left:1px solid [[ColorPalette::TBorder]];
background:[[ColorPalette::TBackground]]; padding-right:1.5em; }
#messageArea { background-color:#bde; border-color:#8ab; border-width:4px; border-style:dotted; font-size:90%; }
#messageArea .button { text-decoration:none; font-weight:bold; background:transparent; border:0px; }
#messageArea .button:hover {background: #acd; }
[[SideBarWhiteAndGrey]]
#adsense {
margin: 1em 15.7em 0em 1em; border:1px solid #ddd;
background:#f8f8f8; text-align:center;margin-bottom:1em;overflow:hidden;padding:0.5em;}
/*}}}*/
/*{{{*/
/* for testing clint's new formatter. eg {{red{asdfaf}}} */
.red { color:white; background:red; display:block; padding:1em; }
/* FF doesn't need this. but IE seems to want to make first one white */
.txtMainTab .tabset { background:[[ColorPalette::TBackground]]; }
.txtMoreTab .tabset { background:transparent; }
/*}}}*/
A friend of mine clued me in to Boston.com's photography section. They hold monthly contests on different themes. On a whim, I submitted this image for the theme of "Cold."
<html><center><table style="width:auto;"><tr><td><a href="http://picasaweb.google.com/lh/photo/hoIFts-ImhDI4sGxr-ZmhA?feat=embedwebsite"><img src="http://lh5.ggpht.com/_WYmcn3agL7k/SXPT-dYsRdI/AAAAAAAAHsg/1_sGuVTj-yE/s400/18a.jpg" /></a></td></tr><tr><td style="font-family:arial,sans-serif; font-size:11px; text-align:right">From <a href="http://picasaweb.google.com/edmund.rogers/365?feat=embedwebsite">365</a></td></tr></table></center></html>
I'm proud to say that it was selected as one of the Top 50 Finalists!
Now of course, I saw a lot of the other entries that I thought were much better than my own. And of course I don't know how many entries were submitted in total. But even so, I'm pretty happy to receive some form of recognition. I'm not doing the [[365 Project|http://picasaweb.google.com/edmund.rogers/365?feat=directlink]] for money or status, but it's nice to be validated.
__[[What's New]]
[[Tag Cloud]]
[[Pictures|http://picasaweb.google.com/edmund.rogers]]
[[Contact]]__
Squashed between Superbowl Sunday and Super Tuesday is this manic Monday. Basically the last day I have to prepare for this trip to Utah. A little bit of craziness, but awesome, because I just got my new [[board|http://www.romesnowboards.com/product/boards/slash/]] in the mail, and I'm eagerly anticipating the results of the primaries tomorrow. Plus I'll soon be spending some quality time with my college buddies who I haven't seen in a while. That balances out the disappointing showing by the Patriots. Don't get me wrong. I'm not a huge Patriots fan. I'm not even a huge football fan. I just wanted to see if Boston really could have pulled of patenting [["19-0"|http://www.bostonherald.com/news/regional/general/view.bg?articleid=1070612&srvc=rss]].
Excuse me while I get political again.
Regardless of who you support in the upcoming election, this speech is powerful. However the primaries turn out, I hope that the message carried in this speech made some impact on the way people choose to view the world. For better or worse, I gained a lot of respect for Obama in this moment.
<html><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/pWe7wTVbLUU&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/pWe7wTVbLUU&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></html>
The following are excerpts from an article written by Margaret Carlson ([[Click here|http://www.bloomberg.com/apps/news?pid=newsarchive&sid=ajFAhD0JglNg]] for the full text)
-----
The storm over the inflammatory words of his pastor, Reverend Jeremiah Wright, lashing out against whites was threatening his historic candidacy. Obama did have a choice about whether to just deal with the controversy or to plunge into the tenderest -- and most combustible -- subject in America, race.
He chose the latter.
-----
To paraphrase Jack Nicholson, it may be that America can't handle the truth and that, for political expediency, Obama should have made like a Clinton: Deliver a clean, sound-bite- ready break from Wright that Reagan Democrats in Pennsylvania could have batted around at the Knights of Columbus hall.
Instead, he renounced the sin but not the sinner, recognizing that each race has grievances the other has trouble acknowledging. It was an almost hour-long speech that required voters to sit still, open their minds, and listen for nuance, a challenge during a bare-knuckles campaign. It's why nuance is so rarely attempted.
------
We'll see if Rush Limbaugh switches his fervid hope for a Clinton candidacy to Obama, as he pleads with dittoheads to cross over and vote for a Democrat in open primaries to ensure the weakest one gets the nomination.
------
There Obama stood in the City of Brotherly Love, an imperfect man giving a nearly perfect speech on the toughest of topics. What he hoped to transcend now, for the moment at least, defines him. If it ultimately doesn't help him become president, he should take consolation that it helped his country.
<script>
// tell InternetExplorer to use cached CSS background images (reduces server load)
// based on a suggestion by Bob Denny posted to the TiddlyWikiDev GoogleGroups discussion:
// http://groups.google.com/group/TiddlyWikiDev/msg/81797af532ed770f
try { document.execCommand("BackgroundImageCache", false, true); } catch(err) {;}
</script>
<style type="text/css">
#contentWrapper {display:none;}
body { background:#eee; }
</style>
<div id="SplashScreen" style="border: 1px solid #ccc; -moz-border-radius:1em; display:block; text-align:center; width:400px; margin:100px auto; padding:.5em; color:#fff; font-size:24pt; font-family:verdana,arial,helvetica,sans; background-color:[[ColorPalette::HoverMenBack]];"><b>ct</b> is loading<div style="font-size: 18px; color:#fff;">please wait<blink> ...</blink></div></div>
On August 24th, I went to the [[Linkin Park's|Linkin Park]] Projekt Revolution. They had it at the Tweeter Center in Mansfield. I'm not too big on that location (ever since I had to sit through No Doubt and Blink-182 because there was no pit), but I think they've redeemed themselves. I was there about 2 weeks before for the Warped Tour. By comparison, Projekt Revolution was really empty. I guess when you only have 7 or 8 performers as opposed to 100, it's hard to justify a million and one different tents everywhere.
Anyway though, the cool part came about an hour and a half after we'd been walking around trying to kill time. We were in the Verizon tent trying to get free backpacks when the girl helping us took us out of the tent and said "So do you guys like Linkin Park?" I was thinking, "Why else would we be here?" Then she said, "Do you //really// like Linkin Park?"
She gave us white wrist bands that let us go meet the band before their show. How awesome is that? And it was entirely random. Out of the thousands of people there, we were one of the 20 people that got to do this. It was pretty amazing in my opinion. I'm calling [[10-second effect]] on this one.
We got autographed posters, a picture, and a limited edition T-shirt. Not bad at all! And all we had to do was miss half of the My Chemical Romance set.
[img[Linkin Park|http://thefamilynet.googlepages.com/lp.jpg][link]]
This weekend, I visited [[Davis' Mega Maze|http://www.davisfarmland.com/megamaze/]] in Sterling, MA. It's apparently the biggest cornfield maze in Massachusetts. A bunch of us had gone 5 or 6 years ago. It's the kind of bizarre thing that is great to see. They change it up each year. I think the year I went, it had been knights of the ~Middle-Ages (I almost wrote "~Middle-Age Knights. Not the same). This time, the theme was the Olympics. It's great fun. Maybe I'll have to put it on my list of things to do once every 2-3 years.
<html><center><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="288" height="192" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fedmund.rogers%2Falbumid%2F5259777812763272033%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></center></html>
MicroContent being a fashionable word for self-contained fragments of content that are typically smaller than entire pages. Often MicroContent is presented via some kind of aggregation that reduces the perceptual shock and resource cost of context switching (eg Blogs aggregating several entries onto a page or Flickr presenting photos in an album). This TiddlyWiki aggregates MicroContent items that I call 'tiddlers' into pages that are loaded in one gulp and progressively displayed as the user clicks hypertext links to read them.
<!---
I've just tweaked my gradient colours and the topMenu bit. See HorizontalMainMenu.
Also I disabled the sidebartabs (Timeline, Tags, etc.) To reenable, just type type refresh='content' into the arguements in the sidebartabs div statement
--->
<!--{{{-->
<div macro='gradient [[ColorPalette::Orient]] [[ColorPalette::GTop]] [[ColorPalette::GBot]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
</div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' force='true' refresh='content' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/***
!Generic Rules /%==============================================%/
***/
/*{{{*/
[[MPTW Styles]]
body { font-size:90%; }
body {
background: [[ColorPalette::Background]];
color: [[ColorPalette::Foreground]];
}
a{
color: [[ColorPalette::Link]];
}
a:hover{
background: [[ColorPalette::LinkHover]];
color: #fff;
}
a img{
border: 0;
}
h1,h2,h3,h4,h5 {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::TitleBkg]];
}
.button {
color: [[ColorPalette::PHover]];
border: 1px solid [[ColorPalette::TBackground]];
}
.button:hover {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::BBackground]];
border-color: [[ColorPalette::BBorder]];
}
.button:active {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::BBackground]];
border: 1px solid #006699;
}
/*}}}*/
/***
!Header /%==================================================%/
***/
/*{{{*/
.header {
background: [[ColorPalette::GBot]];
}
.headerShadow {
color: #000;
}
.headerShadow a {
font-weight: normal;
color: #000;
}
.headerForeground {
color: #fff;
}
.headerForeground a {
font-weight: normal;
color: #cccccc;
}
.headerForeground, .headerShadow {
padding: 1em 1em 0;
}
/*}}}*/
/***
!General tabs /%=================================================%/
***/
/*{{{*/
.tabSelected{
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::Background]];
border-left: 1px solid #ccc;
border-top: 1px solid #ccc;
border-right: 1px solid #ccc;
}
.tabUnselected {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::Background]];
}
.tabContents {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::Background]];
border: 1px solid #ccc;
}
.tabContents .button {
border: 0;}
/*}}}*/
/***
!Sidebar options /%=================================================%/
~TiddlyLinks and buttons are treated identically in the sidebar and slider panel
***/
/*{{{*/
#sidebar {
}
#sidebarOptions input {
border: 1px solid [[ColorPalette::BBorder]];
background: [[ColorPalette::IField]];
color: [[ColorPalette::Foreground]];
}
#sidebarOptions .sliderPanel {
background: [[ColorPalette::TBackground]];
}
#sidebarOptions .sliderPanel a {
border: none;
color: [[ColorPalette::Link]];
background: [[ColorPalette::TBackground]];
}
#sidebarOptions .sliderPanel a:hover {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::GBot]];
}
#sidebarOptions .sliderPanel a:active {
color: [[ColorPalette::BBorder]];
background: [[ColorPalette::TBackground]];
}
/*}}}*/
/***
!Message Area/%=================================================%/
***/
/*{{{*/
#messageArea {
border: 1px solid #000;
background: [[ColorPalette::Background]];
color: [[ColorPalette::PHover]];
}
#messageArea .button {
padding: 0.2em 0.2em 0.2em 0.2em;
color: [[ColorPalette::PHover]];
background: #fff;
}
#messageArea .button:hover {background: [[ColorPalette::BBackground]]; }
/*}}}*/
/***
!Popup /%=================================================%/
***/
/*{{{*/
.popup {
background: [[ColorPalette::PBackground]];
border: 1px solid #000;
}
.popup hr {
color: [[ColorPalette::PHover]];
background: [[ColorPalette::PHover]];
border-bottom: 1px;
}
.popup li.disabled {
color: [[ColorPalette::Link]];
}
.popup li a, .popup li a:visited {
color: #eee;
border: none;
}
.popup li a:hover {
background: [[ColorPalette::PHover]];
color: #fff;
border: none;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover,
.popup .button:hover, .tiddlyLink:hover
{ background:#000; color: #fff;}
/*}}}*/
/***
!Tiddler Display /%=================================================%/
***/
/*{{{*/
.tiddler .defaultCommand {
font-weight: bold;
background: [[ColorPalette::TBackground]];
}
.shadow .title {
color: #999999;
}
.title {
color: [[ColorPalette::Foreground]];
font-weight: bold;
font-size:195%;
}
.subtitle {
color: [[ColorPalette::Subtitle]];
}
.toolbar {
color: [[ColorPalette::Link]];
visibility:hidden;
}
.selected .toolbar {
visibility:visible;
}
.tagging, .tagged {
border: 1px solid [[ColorPalette::BBorder2]];
background-color: #eee;
}
.selected .tagging, .selected .tagged {
background-color: #ddd;
border: 1px solid [[ColorPalette::BBorder]];
}
.tagging .listTitle, .tagged .listTitle {
color: [[ColorPalette::PHover]];
}
.tagging .button, .tagged .button {
border: none;
}
.footer {
color: #ddd;
}
.selected .footer {
color: #888;
}
.sparkline {
background: #cccccc;
border: 0;
}
.sparktick {
background: [[ColorPalette::PHover]];
}
.errorButton {
color: #ff0;
background: #f00;
}
.cascade {
background: #eef;
color: #aac;
border: 1px solid #aac;
}
.imageLink, #displayArea .imageLink {
background: transparent;
}
.nextAction {border:2px [[ColorPalette::NABorder]] solid; background:[[ColorPalette::NABckg]]; padding-left:0.5em;}
.waitAction {border:2px [[ColorPalette::WABorder]] solid; background:[[ColorPalette::WABckg]]; padding-left:0.5em;}
/*}}}*/
/***
''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/
***/
/*{{{*/
.viewer .listTitle {list-style-type: none; margin-left: -2em;}
.viewer .button {
border: 1px solid [[ColorPalette::BBorder2]];
font-size:70%;
padding:0px;
padding-left:2px;
padding-right:2px;
}
.viewer .tabContents {background-color:white;}
.viewer .tabUnselected {color:#666; border:1px #aaa solid;}
.viewer blockquote {
border-left: 3px solid #666;
}
.viewer table {
border: 2px solid #333;
}
.viewer th, thead td {
background: #cccccc;
border: 1px solid #666;
color: #fff;
}
.viewer td, .viewer tr {
border: 1px solid #666;
}
.viewer pre {
border: 1px solid #cccccc;
background: #ffc;
}
.viewer code {
color: #703;
}
.viewer hr {
border: 0;
border-top: dashed 1px #666;
color: #666;
}
.highlight, .marked {
background: #fff;
}
/*}}}*/
/***
''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/
***/
/*{{{*/
.editor input {
border: 1px solid [[ColorPalette::Link]];
background: [[ColorPalette::EditBackground]];
color: [[ColorPalette::EditForeground]];
}
.editor textarea {
border: 1px solid [[ColorPalette::Link]];
background: [[ColorPalette::EditBackground]];
color: [[ColorPalette::EditForeground]];
width: 100%;
}
.editorFooter {
color: #aaa;
}
/*}}}*/
/***
!Miscellaneous /%=================================================%/
***/
/*{{{*/
.scrolling { #ddd 1px; overflow:auto; padding:0em; font-size:90%; height:8em; text-decoration:line-through;}
.noscrolling { #ddd 1px; padding:0em; font-size:90%; height:8em; text-decoration:line-through;}
ul{ margin-top:0px; padding-top:0px;}
#hoverMenu .button, #hoverMenu .tiddlyLink {border:none; font-weight:bold; background:[[ColorPalette::HoverMen]]; color:#FFF; padding:0 5px; float:right; margin-bottom:4px;}
#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#fff; background:[[ColorPalette::GTop]]; padding:0 5px; float:right; margin-bottom:4px;}
#hoverMenu .button {width:100%; text-align:center}
#hoverMenu { position:absolute; width:7px;}
.quickopentag { margin-right:1.2em; border:1px solid [[ColorPalette::TagBorder]]; padding:2px; padding-right:0px; padding-left:1px; }
/*}}}*/
/***
***/
//{{{
config.mGTD = {
star: "\u2605",
// star: "*", // use in case the above doesn't work on your system
config: {}, // gets populated by populateLists
tiddlerViews: {
phoneList:
"'|[['+this.title+']]"+
"|'+config.mGTD.undefBlank(store.getTiddlerSlice(this.title,'phone'))+'"+
"|\\n'",
tickler:
"'|<<toggleTag Processed [['+this.title+']] ->>|[['+this.title+']]"+
"|'+"+
"((store.getValue('MonkeyGTDSettings','mgtd.usemdy')=='true')"+
"?(this.mGet('tmonth')+'/'+this.mGet('tday'))"+
":(this.mGet('tday')+'/'+this.mGet('tmonth')))"+
"+'/'+this.mGet('tyear')+'|\\n'",
// TODO ffs use classes for these
groupBy:
"'{{groupBy{[['+this.title+']] }}}\\n'",
showstar:
"'{{starthing{"+
"@@font-size:80%;"+
"<<tTag tag:[[Starred]] mode:text text:{{config.mGTD.star}} title:[['+this.title+']]>>"+
" @@"+
"[['+this.title+']] }}}\\n'",
showstar2:
"'{{starthing{"+
"@@font-size:80%;margin-left:2em;"+
"<<tTag tag:[[Starred]] mode:text text:{{config.mGTD.star}} title:[['+this.title+']]>>"+
" @@"+
"[['+this.title+']] }}}\\n'",
action:
"'{{action{"+
"@@font-size:80%;"+
"<<toggleTag Done [['+this.title+']] ->>"+
"<<tTag tag:Next mode:text text:N title:[['+this.title+']]>>"+
"<<tTag tag:[[Waiting For]] mode:text text:W title:[['+this.title+']]>>"+
"<<tTag tag:[[Starred]] mode:text text:{{config.mGTD.star}} title:[['+this.title+']]>>"+
" @@"+
"[['+this.title+']] "+
"}}}\\n'",
action2:
"'{{action2{"+
"@@font-size:80%;"+
"<<toggleTag Done [['+this.title+']] ->>"+
"<<tTag tag:Next mode:text text:N title:[['+this.title+']]>>"+
"<<tTag tag:[[Waiting For]] mode:text text:W title:[['+this.title+']]>>"+
"<<tTag tag:[[Starred]] mode:text text:{{config.mGTD.star}} title:[['+this.title+']]>>"+
" @@"+
"[['+this.title+']] "+
"}}}\\n'",
action_proj:
"'{{action{"+
"@@font-size:80%;"+
"<<toggleTag Done [['+this.title+']] ->>"+
"<<tTag tag:Next mode:text text:N title:[['+this.title+']]>>"+
"<<tTag tag:[[Waiting For]] mode:text text:W title:[['+this.title+']]>>"+
"<<tTag tag:[[Starred]] mode:text text:{{config.mGTD.star}} title:[['+this.title+']]>>"+
" @@"+
"[['+this.title+']] "+
"'+this.getProjectTextForList()+'"+
"}}}\\n'",
action_proj2:
"'{{action2{"+
"@@font-size:80%;"+
"<<toggleTag Done [['+this.title+']] ->>"+
"<<tTag tag:Next mode:text text:N title:[['+this.title+']]>>"+
"<<tTag tag:[[Waiting For]] mode:text text:W title:[['+this.title+']]>>"+
"<<tTag tag:[[Starred]] mode:text text:{{config.mGTD.star}} title:[['+this.title+']]>>"+
" @@"+
"[['+this.title+']] "+
"'+this.getProjectTextForList()+'"+
"}}}\\n'",
action_plain:
"'{{action{"+
"@@font-size:80%;"+
"<<toggleTag Done [['+this.title+']] ->>"+
" @@"+
"[['+this.title+']] "+
"}}}\\n'",
action_plain2:
"'{{action2{"+
"@@font-size:80%;"+
"<<toggleTag Done [['+this.title+']] ->>"+
" @@"+
"[['+this.title+']] "+
"}}}\\n'"
},
getListByTag: function(tag) {
return store.getTaggedTiddlers(tag).map( function(t) { return t.title; } );
},
populateLists: function() {
// the meta list
this.config.GTDComponent = this.getListByTag("GTDComponent");
for (var i=0;i<this.config.GTDComponent.length;i++) {
this.config[this.config.GTDComponent[i]] = this.getListByTag(this.config.GTDComponent[i]);
}
},
undefBlank: function(value) {
return value ? value.toString() : "";
},
commands: {
refresh: {
text: 'refresh',
tooltip: 'Refresh this tiddler',
handler: function(e,src,title) {
clearMessage();
if (config.mGTD.populateLists)
config.mGTD.populateLists();
story.refreshTiddler(title,null,true);
return false;
}
}
},
macros: {
realmSelector: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var markup = "Show realms: ";
for (var i=0;i<config.mGTD.config.Realm.length;i++) {
markup += '<<tField title:MonkeyGTDSettings tag:[[hide'+
config.mGTD.config.Realm[i] +
']] mode:text text:[['+
config.mGTD.config.Realm[i] +
']] refreshAll:yes>>';
}
wikify(markup,place,null,tiddler);
}
},
listByTag: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var parsedParams = paramString.parseParams("tags",null,true);
var tagExpr = getParam(parsedParams,"tags","true");
var whereExpr = getParam(parsedParams,"where","true");
var groupBy = getParam(parsedParams,"group");
var mode = getParam(parsedParams,"mode","local");
var title = getParam(parsedParams,"title","local");
var sortBy = getParam(parsedParams,"sort","title");
var limit = getParam(parsedParams,"limit");
var className = getParam(parsedParams,"class","");
var viewType = getParam(parsedParams,"view");
var ignoreRealm = getParam(parsedParams,"ignoreRealm","no");
var showEmpty = getParam(parsedParams,"showEmpty","no"); // only relevant when using group
var onlyShowEmpty = getParam(parsedParams,"onlyShowEmpty","no"); // only relevant using group
if (mode != "global")
tagExpr = '( '+tagExpr+' ) && ( [[' + tiddler.title + ']] )';
if (ignoreRealm != "yes") {
for (var i=0;i<config.mGTD.config.Realm.length;i++) {
if (mHideRealm(config.mGTD.config.Realm[i])) {
tagExpr = '( '+tagExpr+' ) && ( ![[' + config.mGTD.config.Realm[i] + ']] )';
}
}
}
var markup = "{{mList "+className+"{\n";
if (title)
markup += "{{mListTitle{"+title+"}}}\n";
if (groupBy) {
markup += store.getByTagExpr(groupBy,sortBy).asList(1,viewType,limit,tagExpr,showEmpty,onlyShowEmpty,sortBy);
var catchLeftoversExpr = "( "+tagExpr+" ) && !parent:" + groupBy;
var leftovers = store.getByTagExpr(catchLeftoversExpr,sortBy).asList(2,viewType,limit);
if (leftovers != "") {
markup += "{{groupBy{''(No "+groupBy+")''}}}\n";
markup += leftovers;
}
}
else
markup += store.getByTagExpr(tagExpr,sortBy,whereExpr).asList(1,viewType,limit);
markup += "}}}\n";
wikify(markup,place,null,tiddler);
}
},
checkboxList: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var itemType = params[0];
for (var i=0;i<config.mGTD.config[itemType].length;i++)
wikify("<<toggleTag [["+config.mGTD.config[itemType][i]+"]]>>",place,null,tiddler);
}
},
dropdownSelect: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var values = store.getByTagExpr(paramString);
var selectFrom = [];
var currentVal = "";
selectFrom.push({name:"", caption:"(none)"});
for (var i=0;i<values.length;i++) {
if (tiddler.tags.contains(values[i].title))
currentVal = values[i].title;
selectFrom.push({name:values[i].title, caption:values[i].title});
}
var onChangeHandler = function() {
// this will be better when we use fields:
store.setTiddlerTag(tiddler.title,false,currentVal);
tiddler.mSet("project",null);
if (this.value != "") {
tiddler.mSet("project",this.value);
store.setTiddlerTag(tiddler.title,true,this.value);
}
return true;
};
var selector = createTiddlyDropDown(place,onChangeHandler,selectFrom,currentVal);
if (currentVal != "")
wikify(" [[>>|"+currentVal+"]]",place);
}
},
newHere: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
}
},
newHereFields: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
// needs some work here to derive parent type
wikify("<<newTiddlerWithFields "+paramString+" tag:[["+tiddler.title+"]] mgtd.project:[["+tiddler.title+"]]>>",place,null,tiddler);
}
},
processInbox: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var shortHand = {
'W': 'Waiting For',
'N': 'Next',
'F': ''
};
// TODO move this help elsewhere...
wikify(
"Enter projects and actions here. Click 'create these items' to create them\n"+
"Example usage:\n{{{\nPaint House|Home Maintenance\n"+
".Buy ladder and brushes|Errands\n"+
".Choose colours|Home|W\n"+
"\n}}}\n"+
"By default actions are next actions. "+
"Specify W or F to make them future or Waiting For. You can create multiple projects.\nRealm:"
,place);
for (var i=0;i<config.mGTD.config.Realm.length;i++) {
var r = config.mGTD.config.Realm[i];
var foo = createTiddlyCheckbox(place,r,!mHideRealm(r),null);
foo.id = "piRealm"+r.replace(/ /,'');
}
var pi = createTiddlyElement(place,"textarea",null,"piBox");
wikify("\n",place);
var a1 = createTiddlyCheckbox(place,"Open created projects",true,null);
a1.id = 'piShowProjects';
var a2 = createTiddlyCheckbox(place,"Open created actions",false,null);
a2.id = 'piShowActions';
wikify("\n\n",place);
var btn = createTiddlyButton(place,"create these items","create these items",function(e) {
var lines = pi.value.split("\n");
var currentProject = "";
var displayThese = [];
for (var i=0;i<lines.length;i++) {
//alert(lines[i]);
var fields = lines[i].split(/[|;]/);
if (!fields[0] || fields[0].trim() == "") {
currentProject = "";
}
else {
var title = fields.shift();
//alert(title);
// add the realm
for (var j=0;j<config.mGTD.config.Realm.length;j++) {
var theId = "piRealm"+config.mGTD.config.Realm[j].replace(/ /,'');
if (document.getElementById(theId).checked)
fields.push(config.mGTD.config.Realm[j]);
}
if (title[0] != '.') {
//alert("project "+title);
currentProject = title;
if (document.getElementById('piShowProjects').checked)
displayThese.push(title);
fields.push("GTD"); // make it a GTD item
fields.push("Project"); // make it a project
if (store.tiddlerExists(title))
alert("Warning: '"+title+"' already exists, did not create");
else
store.saveTiddler(
title,title,
"", // content
config.options.txtUserName,
new Date(),
fields, // tags
null // extra fields
);
}
else {
// default to next actions
if (!fields.containsAny(['N','F','W']))
fields.push('N');
fields = fields.map(function(f) {
if (shortHand[f] && shortHand[f] != '')
return shortHand[f];
else
return f;
});
//alert("action "+title);
title = title.trim();
title = title.replace(/^\.+/,'');
if (document.getElementById('piShowActions').checked)
displayThese.push(title);
fields.push("GTD"); // make it a GTD item
fields.push("Action"); // make it an action
if (currentProject.trim() != "")
fields.push(currentProject); // make it in this project
if (store.tiddlerExists(title))
alert("Warning: '"+title+" already exists, did not create");
else
store.saveTiddler(
title,title,
"", // content
config.options.txtUserName,
new Date(),
fields, // tags
null // extra fields
);
}
}
}
for (var ii=0;ii<displayThese.length;ii++)
story.displayTiddler("bottom",displayThese[ii]);
alert("Done creating items");
return false;
}); // end of createTiddlyButton
}
},
collectThoughts: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
// TODO move this help elsewhere...
wikify("Enter thoughts one per line. They will be added to your [[Inbox]]",place);
wikify("\n",place);
for (var i=0;i<config.mGTD.config.Realm.length;i++) {
var r = config.mGTD.config.Realm[i];
var foo = createTiddlyCheckbox(place,r,!mHideRealm(r),null);
foo.id = "ctRealm"+r.replace(/ /,'');
}
wikify("\n",place);
var ct = createTiddlyElement(place,"textarea",null,"ctBox");
wikify("\n",place);
var btn = createTiddlyButton(place,"add to inbox","add to inbox",function(e) {
var lines = ct.value.split("\n");
var currentProject = "";
var displayThese = [];
for (var i=0;i<lines.length;i++) {
//alert(lines[i]);
var fields = [lines[i]]; //.split(/[|;]/);
var title = fields.shift();
//alert(title);
// add the realm
for (var j=0;j<config.mGTD.config.Realm.length;j++) {
var theId = "ctRealm"+config.mGTD.config.Realm[j].replace(/ /,'');
if (document.getElementById(theId).checked)
fields.push(config.mGTD.config.Realm[j]);
}
fields.push("GTD"); // make it a GTD item
fields.push("Inbox"); // make it a project
if (store.tiddlerExists(title))
alert("Warning: '"+title+"' already exists, did not create");
else
store.saveTiddler(
title,title,
"", // content
config.options.txtUserName,
new Date(),
fields, // tags
null // extra fields
);
}
alert("Done");
return false;
}); // end of createTiddlyButton
}
}
},
/*
// I think this is obsolete now. See also NewTiddlerWithFieldsMacro.js which also we don't need for now??
onClickNewTiddler: function() {
var title = this.getAttribute("newTitle");
var params = this.getAttribute("params").split("|");
var focus = this.getAttribute("newFocus");
var template = this.getAttribute("newTemplate");
story.displayTiddler(null,title,template);
var text = this.getAttribute("newText");
if(typeof text == "string")
story.getTiddlerField(title,"text").value = text.format([title]);
for(var t=0;t<params.length;t++) {
if (params[t].indexOf("=") != -1) {
// it's a field, name=value. this is hacky and not good
var nameValue = params[t].split("=");
// alert(nameValue[0]);
// alert(nameValue[1]);
// damn this doesn't work because tiddler doesn't exist yet
// store.setValue(title,nameValue[0],nameValue[1]);
}
else {
// it's a normal tag
story.setTiddlerTag(title,params[t],+1);
}
}
story.focusTiddler(title,focus);
return false;
},
*/
stringMethods: {
parseTagExpr: function() {
var spaced = this.
replace(/\[\(/g," [["). // because square brackets in templates no good
replace(/\)\]/g,"]] ").
replace(/(!|&&|\|\||\(|\))/g," $1 ");
var tokens = spaced.readBracketedList(false); // false means not unique. thanks Jeremy!
var expr = "";
var logicOps = ['(',')','||','&&','!','true','false'];
for (var i=0;i<tokens.length;i++) {
if (logicOps.contains(tokens[i])) {
expr += tokens[i];
}
else if (tokens[i].match(/^parent:/)) {
var lookForTagInParent = tokens[i].split(":")[1];
expr += "tiddler.parents().anyHasTag('"+lookForTagInParent+"')";
}
else {
expr += "tiddler.tags.contains('"+tokens[i].
replace(/'/,"\\'") // fix single quote bug. hurrah
// but how to fix round bracket bug?
+"')";
}
}
//alert(expr);
return '('+expr+')';
}
},
storeMethods: {
getByTagExpr: function(tagExpr,sortBy,whereExpr) {
var parsed = tagExpr.parseTagExpr();
sortBy = sortBy ? sortBy : 'title';
var desc = false;
if (sortBy.substr(0,1) == '-') {
desc = true;
sortBy.replace(/^-/,'');
}
if (whereExpr) {
parsed = "( "+parsed+" ) && ( "+whereExpr+" ) ";
}
var output = [];
var first = true;
this.forEachTiddler(function(title,tiddler) {
//alert(tiddler.getRealm());
try {
if (eval(parsed))
output.push(tiddler);
}
catch(e) {
if (first) {
alert("error parsing: "+parsed);
first = false;
}
}
});
if (sortBy == "tickleDate") {
output.sort(function(a,b) {
return a.tickleDate() < b.tickleDate() ? -1 :
(a.tickleDate() == b.tickleDate() ? 0 : +1);
});
}
else {
output.sort(function(a,b) {
return a[sortBy] < b[sortBy] ? -1 :
(a[sortBy] == b[sortBy] ? 0 : +1);
});
}
if (desc)
return output.reverse();
else
return output;
}
},
arrayMethods: {
map: function(func) {
var result = [];
for (var i=0;i<this.length;i++)
result.push(func(this[i]));
return result;
},
asList: function(level, viewType, limit, subExpr, showEmpty, onlyShowEmpty, sortBy, sortExpr) {
var output = "";
for (var i=0;(i<this.length && (!limit || i<limit));i++)
if (!subExpr)
output += this[i].mGTDrender(level,viewType);
else {
var newExpr = "( " + subExpr + " ) && ( [[" + this[i].title + "]] )";
var sublist = store.getByTagExpr(newExpr,sortBy).asList(level+1, viewType, limit);
if (((sublist == "" && (showEmpty == "yes" || onlyShowEmpty == "yes"))) || ((sublist != "" && onlyShowEmpty != "yes"))) {
output += this[i].mGTDrender(level,"groupBy");
output += sublist;
}
}
return output;
},
anyHasTag: function(tagName) {
for (var i=0;i<this.length;i++)
if (this[i].tags.contains(tagName))
return true;
return false;
}
},
tiddlerMethods: {
getProjectTextForList: function() {
var proj = this.getProject();
if (proj == '')
return '';
return "@@font-size:80%;"+
" [/%%/[[P|"+proj+"]]/%%/]"+
"@@";
},
getProject: function() {
//return this.getValueByTag('Project').join("/"); // maybe two projects??
return this.getValueByGTDComponent('Project').join("/"); // maybe two projects??
},
getRealm: function() {
// TODO why is different from getProject?
// do some sneaky backwards/compat stuff for tags/fields
// check for field
//var fieldBasedRealm = this.mGet('realm');
//if (fieldBasedRealm) {
// var realm = fieldBasedRealm.readBrackettedList(); // could be more than one
//}
//else {
//var realm = this.getValueByTag('Realm'); // returns array
// this.mSet("realm",String.encodeTiddlyLinkList(realm));
//}
if (this.tags.contains("Professional")) return "Professional";
if (this.tags.contains("Personal")) return "Personal";
//return "asdf";//realm[0];
},
getValueByTag: function(value) {
// this gets a lot better when we use fields also
var values = store.getByTagExpr(value); // probably just getTaggedTiddlers would do here..?
var result = [];
for (var i=0;i<values.length;i++) {
if (this.tags.contains(values[i].title)) {
result.push(values[i].title);
}
}
return result;
},
getValueByGTDComponent: function(itemType) {
// faster than getValueByTag since we don't need to
// do a "full table scan" of all tiddlers
var values = config.mGTD.config[itemType];
var result = [];
for (var i=0;i<values.length;i++) {
if (this.tags.contains(values[i])) {
result.push(values[i]);
}
}
return result;
},
hasValue: function(itemType,value) {
var foo = this.getValueByGTDComponent(itemType);
return foo.contains(value);
},
mGTDrender: function(level,viewType) {
var output = "";
if (viewType) {
if (config.mGTD.tiddlerViews[viewType+level])
return eval(config.mGTD.tiddlerViews[viewType+level]);
else
return eval(config.mGTD.tiddlerViews[viewType]);
}
else {
for (var i=0; i<level; i++)
output += "*";
output += "[[%0]]\n".format([this.title]);
}
return output;
},
parents: function() {
var output = [];
for (var i=0;i<this.tags.length;i++) {
var t = store.fetchTiddler(this.tags[i]);
if (t)
output.push(t);
}
return output;
},
mGet: function(field) {
return store.getValue(this,"mgtd."+field);
},
mSet: function(field,value) {
store.setValue(this,"mgtd."+field,value);
},
tickleDate: function() {
var d = this.mGet("tday");
var m = this.mGet("tmonth");
var y = this.mGet("tyear");
var result = "";
if (d && m && y)
result = y + String.zeroPad(parseInt(m,10),2) + String.zeroPad(parseInt(d,10),2) + '0000';
return result;
}
},
styles: [
// ".mListTitle { font-weight:bold; }",
// ".mList { border:solid 1px pink; }",
// ".mList ul { margin-top:0px; padding-top:0px; }",
""],
coreFunctions: {
// Extending this to put in a defaultValue
createTiddlyDropDown: function(place,onchange,options,defaultValue) {
var sel = createTiddlyElement(place,"select");
sel.onchange = onchange;
var foo = 0;
for(var t=0; t<options.length; t++)
{
var e = createTiddlyElement(sel,"option",null,null,options[t].caption);
if (options[t].name == defaultValue) foo = t;
e.value = options[t].name;
}
sel.selectedIndex = foo;
return sel;
},
// utility
mOpt: function(setting) {
return store.getValue("MonkeyGTDSettings","mgtd."+setting);
},
mHideRealm: function(realm) {
return store.getValue("MonkeyGTDSettings","hide"+realm);
},
mDefaultRealm: function() {
// for (var i=config.mGTD.config.Realm.length-1;i>=0;i--) {
for (var i=0;i<config.mGTD.config.Realm.length;i++) {
if (!mHideRealm(config.mGTD.config.Realm[i])) {
// if both are on it returns last one
// hack. because Work is after Personal??
return config.mGTD.config.Realm[i];
}
}
return config.mGTD.config.Realm[0]; // just in case
}
},
test: function() {
},
init: function() {
merge(config.macros,this.macros);
merge(config.commands,this.commands);
merge(TiddlyWiki.prototype,this.storeMethods);
merge(Tiddler.prototype,this.tiddlerMethods);
merge(String.prototype,this.stringMethods);
merge(Array.prototype,this.arrayMethods);
merge(Date.prototype,this.dateMethods);
merge(window,this.coreFunctions);
//merge(config.shadowTiddlers,{MonkeyGTDStyles:this.styles.join("\n")});
//store.addNotification("MonkeyGTDStyles",refreshStyles);
this.populateLists();
this.test();
}
};
config.mGTD.init();
//}}}
My mom's birthday is on April 25th. This makes Mother's Day difficult every year because I already used my good idea for her birthday. What do I do two and half weeks later when the big ~M-Day hits? Normally, I just get her flowers. I hear mothers love that sort of thing. I always feel that I've sort of copped out though. Don't get me wrong, flowers can be a great gift. The thing is, it's normally my last resort gift. And after a few years of that, it gets kinda old.
So this year, I was prepared. My friend Courtney is apparently a crazy confectionist. She has this business called Cakes By Design and was able to make me this BAD (bomb-ass-diggity) cake for "me dear ole mudda."
It turned out even better than I expected, which is saying something because for my family, it's only the best. ;)
If you're interested, check out Courtney's [[Cake Blog|http://courtneysconfections.blogspot.com/]], or drop her an e-mail at [[JncCakesByDesign@gmail.com|mailto:JncCakesByDesign@gmail.com]]
[img[Cake|http://thefamilynet.googlepages.com/CIMG6994.jpg][link]]
[img[Cake|http://thefamilynet.googlepages.com/CIMG6999.jpg][link]]
Type the text for 'Movies'
/***
|''Name:''|MultiTagEditorPlugin|
|''Version:''|0.2.0 (Dec 29, 2006)|
|''Source:''|http://ido-xp.tiddlyspot.com/#MultiTagEditorPlugin|
|''Author:''|Ido Magal (idoXatXidomagalXdotXcom)|
|''Licence:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
|''Browser:''|??|
!Description
This plugin enables the addition and deletion of tags from sets of tiddlers.
!Installation instructions
*Create a new tiddler in your wiki and copy the contents of this tiddler into it. Name it the same and tag it with "systemConfig".
*Save and reload your wiki.
*Use it here [[MultiTagEditor]].
!Revision history
* v0.2.0 (Dec 29, 2006)
** Added Selection column that allows excluding tiddlers.
* v0.1.0 (Dec 27, 2006)
** First draft.
!To Do
* Clean up text strings.
* Figure out how to store selection so it isn't reset after every action.
* Prettify layout.
!Code
***/
//{{{
merge(config.shadowTiddlers,
{
MultiTagEditor:[
"<<MTE>>",
""
].join("\n")
});
config.macros.MTE =
{
AddToListLabel : "Add to List",
AddToListPrompt : "Add Tiddlers to the List",
listViewTemplate :
{
columns: [
{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
{name: 'Title', field: 'title', tiddlerLink: 'title', title: "Title", type: 'TiddlerLink'},
{name: 'Snippet', field: 'text', title: "Snippet", type: 'String'},
{name: 'Tags', field: 'tags', title: "Tags", type: 'Tags'}
],
rowClasses: [
],
actions: [
//{caption: "More actions...", name: ''},
//{caption: "Remove selected tiddlers from list", name: 'delete'}
]
},
tiddlers : [],
HomeSection : [],
ListViewSection : [],
AddToListSection : [],
handler : function( place, macroName, params, wikifier, paramString, tiddler )
{
this.HomeSection = place;
var newsection = createTiddlyElement( null, "div", null, "MTE_AddTag" );
createTiddlyText(newsection, "Tiddler Tags to edit: ");
var input = createTiddlyElement( null, "input", null, "txtOptionInput" );
input.type = "text";
input.size = 50;
newsection.appendChild( input );
newsection.inputBox = input;
createTiddlyButton( newsection, this.AddToListLabel, this.AddToListPrompt, this.onAddToList, null, null, null );
createTiddlyButton( newsection, "Clear List", this.addtoListPrompt, this.onClear, null, null, null );
createTiddlyElement( newsection, "br" );
createTiddlyElement( newsection, "br" );
this.AddToListSection = newsection;
this.HomeSection.appendChild( newsection );
newsection = createTiddlyElement( null, "div", null, "MTE_addtag" );
createTiddlyButton( newsection, "Add Tag", "Add tag to all listed tiddlers", this.onAddTag, null, null, null );
var input = createTiddlyElement( null, "input", null, "txtOptionInput" );
input.type = "text";
input.size = 50;
newsection.appendChild( input );
newsection.inputBox = input;
createTiddlyElement( newsection, "br" );
this.AddTagSection = newsection;
this.HomeSection.appendChild( newsection );
newsection = createTiddlyElement( null, "div", null, "MTE_removetag" );
createTiddlyButton( newsection, "Remove Tag", "Remove tag from all listed tiddlers", this.onRemoveTag, null, null, null );
var input = createTiddlyElement( null, "input", null, "txtOptionInput" );
input.type = "text";
input.size = 50;
newsection.appendChild( input );
newsection.inputBox = input;
createTiddlyElement( newsection, "br" );
this.RemoveTagSection = newsection;
this.HomeSection.appendChild( newsection );
this.ListViewSection = createTiddlyElement( null, "div", null, "MTE_listview" );
this.HomeSection.appendChild( this.ListViewSection );
ListView.create( this.ListViewSection, this.tiddlers, this.listViewTemplate, null );
},
ResetListView : function()
{
ListView.forEachSelector( config.macros.MTE.ListViewSection, function( e, rowName )
{
if( e.checked )
{
var title = e.getAttribute( "rowName" );
var tiddler = config.macros.MTE.tiddlers.findByField( "title", title );
tiddler.Selected = 1;
}
});
config.macros.MTE.HomeSection.removeChild( config.macros.MTE.ListViewSection );
config.macros.MTE.ListViewSection = createTiddlyElement( null, "div", null, "MTE_listview" );
config.macros.MTE.HomeSection.appendChild( config.macros.MTE.ListViewSection );
ListView.create( config.macros.MTE.ListViewSection, config.macros.MTE.tiddlers, config.macros.MTE.listViewTemplate, config.macros.MTE.onSelectCommand);
},
onAddToList : function()
{
store.forEachTiddler( function ( title, tiddler )
{
var tags = config.macros.MTE.AddToListSection.inputBox.value.readBracketedList();
if (( tiddler.tags.containsAll( tags )) && ( config.macros.MTE.tiddlers.findByField( "title", title ) == null ))
{
var t = store.getTiddlerSlices( title, ["Name", "Description", "Version", "CoreVersion", "Date", "Source", "Author", "License", "Browsers"] );
t.title = title;
t.tiddler = tiddler;
t.text = tiddler.text.substr(0,50);
t.tags = tiddler.tags;
config.macros.MTE.tiddlers.push(t);
}
});
config.macros.MTE.ResetListView();
},
onClear : function()
{
config.macros.MTE.tiddlers = [];
config.macros.MTE.ResetListView();
},
onAddTag : function( e )
{
var selectedRows = [];
ListView.forEachSelector(config.macros.MTE.ListViewSection, function( e, rowName )
{
if( e.checked )
selectedRows.push( e.getAttribute( "rowName" ));
});
var tag = config.macros.MTE.AddTagSection.inputBox.value;
for(t=0; t < config.macros.MTE.tiddlers.length; t++)
{
if ( selectedRows.indexOf( config.macros.MTE.tiddlers[t].title ) != -1 )
store.setTiddlerTag( config.macros.MTE.tiddlers[t].title, true, tag);
}
config.macros.MTE.ResetListView();
},
onRemoveTag : function( e )
{
var selectedRows = [];
ListView.forEachSelector(config.macros.MTE.ListViewSection, function( e, rowName )
{
if( e.checked )
selectedRows.push( e.getAttribute( "rowName" ));
});
var tag = config.macros.MTE.RemoveTagSection.inputBox.value;
for(t=0; t < config.macros.MTE.tiddlers.length; t++)
{
if ( selectedRows.indexOf( config.macros.MTE.tiddlers[t].title ) != -1 )
store.setTiddlerTag( config.macros.MTE.tiddlers[t].title, false, tag);
}
config.macros.MTE.ResetListView();
}
};
//}}}
Type the text for 'Music'
/***
''NestedSlidersPlugin for TiddlyWiki version 1.2.x and 2.0''
^^author: Eric Shulman
source: http://www.TiddlyTools.com/#NestedSlidersPlugin
license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
Quickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''
You can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.
For more details, please click on a section headline below:
++++!!!!![Configuration]>
Debugging messages for 'lazy sliders' deferred rendering:
<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering
<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered
===
++++!!!!![Usage]>
When installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify
*default to open
*cookiename
*heading level
*floater
*rollover
*custom label/tooltip
*automatic blockquote
*deferred rendering
The complete syntax, using all options, is:
//{{{
++++(cookiename)!!!!!^*[label|tooltip]>...
content goes here
===
//}}}
where:
* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^
marks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^
* {{{(cookiename)}}}^^
saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.^^
* {{{!}}} through {{{!!!!!}}}^^
displays the slider label using a formatted headline (Hn) style instead of a button/link style^^
* {{{"^"}}} //(without the quotes)//^^
makes the slider 'float' on top of other content rather than shifting that content downward^^
* {{{"*"}}} //(without the quotes)//^^
automatically opens/closes slider on "rollover" as well as when clicked^^
* {{{[label]}}} or {{{[label|tooltip]}}}^^
uses custom label/tooltip. (defaults are: ">" (more) and "<" (less)^^
* {{{">"}}} //(without the quotes)//^^
automatically adds blockquote formatting to slider content^^
* {{{"..."}}} //(without the quotes)//^^
defers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^
//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//
===
++++!!!!![Examples]>
simple in-line slider:
{{{
+++
content
===
}}}
+++
content
===
----
use a custom label and tooltip:
{{{
+++[label|tooltip]
content
===
}}}
+++[label|tooltip]
content
===
----
content automatically blockquoted:
{{{
+++>
content
===
}}}
+++>
content
===
----
all options combined //(default open, cookie, heading, floater, rollover, label/tooltip, blockquoted, deferred)//
{{{
++++(testcookie)!!!^*[label|tooltip]>...
content
===
}}}
++++(testcookie)!!!^*[label|tooltip]>...
content
===
----
complex nesting example:
{{{
+++^[get info...|click for information]
put some general information here, plus a floating slider with more specific info:
+++^[view details...|click for details]
put some detail here, which could include a rollover with a +++^*[glossary definition]explaining technical terms===
===
===
}}}
+++^[get info...|click for information]
put some general information here, plus a floating slider with more specific info:
+++^[view details...|click for details]
put some detail here, which could include a rollover with a +++^*[glossary definition]explaining technical terms===
===
===
----
nested floaters
>menu: <<tiddler NestedSlidersExample>>
(see [[NestedSlidersExample]] for definition)
----
===
+++!!!!![Installation]>
import (or copy/paste) the following tiddlers into your document:
''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)
===
+++!!!!![Revision History]>
++++[2006.02.16 - 1.7.7]
corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie
===
++++[2006.02.15 - 1.7.6]
in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)
===
++++[2006.02.04 - 1.7.5]
add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals
===
++++[2006.01.18 - 1.7.4]
only define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.
===
++++[2006.01.16 - 1.7.3]
added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.
===
++++[2006.01.16 - 1.7.2]
added button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
===
++++[2006.01.14 - 1.7.1]
added optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.
===
++++[2006.01.14 - 1.7.0]
added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)
===
+++[2006.01.03 - 1.6.2]
When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)
===
+++[2005.12.15 - 1.6.1]
added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders
removed checkbox option for 'global' application of lazy sliders
===
+++[2005.11.25 - 1.6.0]
added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)
===
+++[2005.11.21 - 1.5.1]
revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.
===
+++[2005.11.20 - 1.5.0]
added (cookiename) syntax for optional tracking and restoring of slider open/close state
===
+++[2005.11.11 - 1.4.0]
added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style
===
+++[2005.11.07 - 1.3.0]
removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other
formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines
===
+++[2005.11.05 - 1.2.1]
changed name to NestedSlidersPlugin
more documentation
===
+++[2005.11.04 - 1.2.0]
added alternative character-mode syntax {{{(((}}} and {{{)))}}}
tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax
===
+++[2005.11.03 - 1.1.1]
fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used
code cleanup, added documentation
===
+++[2005.11.03 - 1.1.0]
changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}
changed name to EasySlidersPlugin
===
+++[2005.11.03 - 1.0.0]
initial public release
===
===
+++!!!!![Credits]>
This feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with research, programming and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson
===
***/
// //+++!!!!![Code]
//{{{
version.extensions.nestedSliders = {major: 1, minor: 7, revision: 7, date: new Date(2006,2,16)};
//}}}
//{{{
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;
if (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;
// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");
//}}}
//{{{
config.formatters.push( {
name: "nestedSliders",
match: "\\n?\\+{3}",
terminator: "\\s*\\={3}\\n?",
lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^)?(\\*)?(\\[[^\\]]*\\])?(\\>)?(\\.\\.\\.)?\\s*",
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)
{
// location for rendering button and panel
var place=w.output;
// default to closed, no cookie
var show="none"; var title=">"; var tooltip="show"; var cookie="";
// extra "+", default to open
if (lookaheadMatch[1])
{ show="block"; title="<"; tooltip="hide"; }
// cookie, use saved open/closed state
if (lookaheadMatch[2]) {
cookie=lookaheadMatch[2].trim().substr(1,lookaheadMatch[2].length-2);
cookie="chkSlider"+cookie;
if (config.options[cookie]==undefined)
{ config.options[cookie] = (show=="block") }
if (config.options[cookie])
{ show="block"; title="<"; tooltip="hide"; }
else
{ show="none"; title=">"; tooltip="show"; }
}
// custom label/tooltip
if (lookaheadMatch[6]) {
title = lookaheadMatch[6].trim().substr(1,lookaheadMatch[6].length-2);
var pos=title.indexOf("|");
if (pos!=-1)
{ tooltip = title.substr(pos+1,title.length); title = title.substr(0,pos); }
else
{ tooltip += " "+title; }
}
// create the button
if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link
var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;
var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,null,title);
btn.onclick=onClickNestedSlider;
btn.setAttribute("href","javascript:;");
btn.setAttribute("title",tooltip);
}
else
var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider);
btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
// "non-click" MouseOver open/close slider
if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;
// create slider panel
var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";
var panel=createTiddlyElement(place,"div",null,panelClass,null);
panel.style.display = show;
panel.button = btn; // so the slider panel know which button it belongs to
btn.sliderPanel=panel;
// render slider (or defer until shown)
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
if ((show=="block")||!lookaheadMatch[8]) {
// render now if panel is supposed to be shown or NOT deferred rendering
w.subWikify(lookaheadMatch[7]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
// align slider/floater position with button
adjustSliderPos(place,btn,panel,panelClass);
}
else {
var src = w.source.substr(w.nextMatch);
var endpos=findMatchingDelimiter(src,"+++","===");
panel.setAttribute("raw",src.substr(0,endpos));
panel.setAttribute("blockquote",lookaheadMatch[7]?"true":"false");
panel.setAttribute("rendered","false");
w.nextMatch += endpos+3;
if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\n\n"+panel.getAttribute("raw"));
}
}
}
}
)
// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)
function findMatchingDelimiter(src,starttext,endtext) {
var startpos = 0;
var endpos = src.indexOf(endtext);
// check for nested delimiters
while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
// count number of nested 'starts'
var startcount=0;
var temp = src.substring(startpos,endpos-1);
var pos=temp.indexOf(starttext);
while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
// set up to check for additional 'starts' after adjusting endpos
startpos=endpos+endtext.length;
// find endpos for corresponding number of matching 'ends'
while (startcount && endpos!=-1) {
endpos = src.indexOf(endtext,endpos+endtext.length);
startcount--;
}
}
return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
function onClickNestedSlider(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var theLabel = theTarget.firstChild.data;
var theSlider = theTarget.sliderPanel
var isOpen = theSlider.style.display!="none";
// if using default button labels, toggle labels
if (theLabel==">") theTarget.firstChild.data = "<";
else if (theLabel=="<") theTarget.firstChild.data = ">";
// if using default tooltips, toggle tooltips
if (theTarget.getAttribute("title")=="show")
theTarget.setAttribute("title","hide");
else if (theTarget.getAttribute("title")=="hide")
theTarget.setAttribute("title","show");
if (theTarget.getAttribute("title")=="show "+theLabel)
theTarget.setAttribute("title","hide "+theLabel);
else if (theTarget.getAttribute("title")=="hide "+theLabel)
theTarget.setAttribute("title","show "+theLabel);
// deferred rendering (if needed)
if (theSlider.getAttribute("rendered")=="false") {
if (config.options.chkDebugLazySliderRender)
alert("rendering '"+theLabel+"':\n\n"+theSlider.getAttribute("raw"));
var place=theSlider;
if (theSlider.getAttribute("blockquote")=="true")
place=createTiddlyElement(place,"blockquote");
wikify(theSlider.getAttribute("raw"),place);
theSlider.setAttribute("rendered","true");
}
// show/hide the slider
if(config.options.chkAnimate)
anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
else
theSlider.style.display = isOpen ? "none" : "block";
if (this.sliderCookie && this.sliderCookie.length)
{ config.options[this.sliderCookie]=!isOpen; saveOptionCookie(this.sliderCookie); }
// align slider/floater position with target button
adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);
return false;
}
// hijack animation handler 'stop' handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }
// adjust panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {
///////////////////////////////////////////////////////////////////////////////
/// EXPERIMENTAL HACK - WORKS IN SOME CASES, NOT IN OTHERS
///////////////////////////////////////////////////////////////////////////////
// "if this panel is floating and the parent is not also a floating panel"...
if (panelClass=="floatingPanel" && place.className!="floatingPanel") {
var left=0; var top=btn.offsetHeight;
if (place.style.position!="relative") { left+=findPosX(btn); top+=findPosY(btn); }
if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth-10;
panel.style.left=left+"px"; panel.style.top=top+"px";
}
}
function getWindowWidth() {
if(document.width!=undefined)
return document.width; // moz (FF)
if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
return document.documentElement.clientWidth; // IE6
if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )
return document.body.clientWidth; // IE4
if(window.innerWidth!=undefined)
return window.innerWidth; // IE - general
return 0; // unknown
}
//}}}
// //===
Punk rock, pop punk, it doesn't matter what you call them. [[New Found Glory|http://www.newfoundglory.com]] still makes fun music. I've seen them in concert more times than I've seen any other band. And every time is just as much fun as the last.
/***
|Name|NewHereCommand|
|Source|http://simonbaird.com/mptw/#NewHereCommand|
|Version|1.0|
Code originally by ArphenLin. Small tweak by SimonBaird
http://aiddlywiki.sourceforge.net/NewHere_demo.html#NewHereCommand
To use this you must edit your ViewTemplate and add newHere to the toolbar div, eg
{{{<div class='toolbar' macro='toolbar ... newHere'></div>}}}
***/
//{{{
config.commands.newHere = {
text: 'new here',
tooltip: 'Create a new tiddler tagged as this tiddler',
handler: function(e,src,title) {
if (!readOnly) {
clearMessage();
var t=document.getElementById('tiddler'+title);
story.displayTiddler(t,config.macros.newTiddler.title,DEFAULT_EDIT_TEMPLATE);
story.setTiddlerTag(config.macros.newTiddler.title, title, 0);
story.focusTiddler(config.macros.newTiddler.title,"title");
return false;
}
}
};
//}}}
/***
|''Name:''|NewerTiddlerPlugin|
|''Version:''|$Revision: 13 $ |
|''Source:''|http://thePettersons.org/tiddlywiki.html#NewerTiddlerPlugin |
|''Author:''|[[Paul Petterson]] |
|''Type:''|Macro Extension |
|''Requires:''|TiddlyWiki 1.2.33 or higher |
!Description
Create a 'new tiddler' button with lots more options! Specify the text to show on the button, the name of the new tiddler (with date macro expansion), one or more tags for the new tiddlers, and what text if any to include in the new tiddler body! Uses a named parameter format, simalar to the reminder plugin.
Also - if the tiddler already exists it won't replace any of it's existing data (like tags).
!Syntax
* {{{<<newerTiddler button:"Inbox" name:"Inbox YYYY/MM/DD" tags:"Journal, inbox" text:"New stuff for today:">>}}}
* {{{<<newerTiddler button:"@Action" name:"Action: what" tags:"@Action" text:"Add project and describe action">>}}}
* {{{<<newerTiddler button:"New Project" name:"Project Name?" tags:"My Projects, My Inbox, Journal" template:"MyTemplate">>}}}
!!Parameters
* name:"Name of Tiddler"
* tags:"Tag1, Tag2, Tag3" - tags for new tiddler, comma seperated //don't use square brackets //({{{[[}}})// for tags!//
* button:"name for button" - the name to display instead of "new tiddler"
* body:"what to put in the tiddler body"
* template:"Name of a tiddler containing the text to use as the body of the new tiddler"
''Note:'' if you sepecify both body and template parameters, then template parameter will be used and the body parameter overridden.
!Sample Output
* <<newerTiddler button:"Inbox" name:"Inbox YYYY/MM/DD" tags:"Journal inbox" text:"New stuff for today:">>
* <<newerTiddler button:"@Action" name:"Action: what" tags:"@Action" text:"Add project and describe action">>
* <<newerTiddler button:"New Project" name:"Project Name?" tags:"[[My Projects]] [[My Inbox]] Journal" template:"MyTemplate">>
!Todo
<<projectTemplate>>
!Known issues
* Must use double quotes (") around parameter values if they contain a space, can't use single quotes (').
* can't use standard bracketted style tags, ust type in the tags space and all and put a comma between them. For example tags:"one big tag, another big tag" uses 2 tags ''one big tag'' and ''another big tag''.
!Notes
* It works fine, and I use it daily, however I haven't really tested edge cases or multiple platforms. If you run into bugs or problems, let me know!
!Requests
* Have delta-date specifiers on the name: name:"Inbox YYY/MM/DD+1" ( ceruleat@gmail.com )
* Option to just open the tiddler instead of immediately edit it ( ceruleat@gmail.com )
* Have date formatters in tags as well as in name (me)
!Revision history
$History: PaulsNotepad.html $
*
* ***************** Version 2 *****************
* User: paulpet Date: 2/26/06 Time: 7:25p
* Updated in $/PaulsNotepad3.0.root/PaulsNotepad3.0/PaulsPlugins/systemConfig
* Port to tw2.0, bug fixes, and simplification!
v1.0.2 (not released) - fixed small documentation issues.
v1.0.1 October 13th - fixed a bug occurring only in FF
v1.0 October 11th - Initial public release
v0.8 October 10th - Feature complete...
v0.7 Initial public preview
!Code
***/
//{{{
config.macros.newerTiddler = {
name:"New(er) Tiddler",
tags:"",
text:"",
button:"new(er) tiddler",
reparse: function( params ) {
var re = /([^:\'\"\s]+)(?::([^\'\":\s]+)|:[\'\"]([^\'\"\\]*(?:\\.[^\'\"\\]*)*)[\'\"])?(?=\s|$)/g;
var ret = new Array() ;
var m ;
while( (m = re.exec( params )) != null )
ret[ m[1] ] = m[2]?m[2]:m[3]?m[3]:true ;
return ret ;
},
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
if ( readOnly ) return ;
var input = this.reparse( paramString ) ;
var tiddlerName = input["name"]?input["name"].trim():config.macros.newerTiddler.name ;
var tiddlerTags = input["tags"]?input["tags"]:config.macros.newerTiddler.tags ;
var tiddlerBody = input["text"]?input["text"]:config.macros.newerTiddler.text ;
var buttonText = input["button"]?input["button"]:config.macros.newerTiddler.button ;
var template = input["template"]?input["template"]:null;
// if there is a template, use it - otherwise use the tiddlerBody text
if ( template ) {
tiddlerBody = store.getTiddlerText( template );
}
if ( tiddlerBody == null || tiddlerBody.length == 0 )
tiddlerBody = config.macros.newerTiddler.text ;
// mptw hack
tiddlerBody = tiddlerBody.replace(/\$\)\)/g,">>");
tiddlerBody = tiddlerBody.replace(/\$\}\}/g,">>");
var now = new Date() ;
tiddlerName = now.formatString( tiddlerName ) ;
createTiddlyButton( place, buttonText, "", function() {
var exists = store.tiddlerExists( tiddlerName );
var t = store.createTiddler( tiddlerName );
if ( ! exists )
t.assign( tiddlerName, tiddlerBody, config.views.wikified.defaultModifier, now, tiddlerTags.readBracketedList() );
story.displayTiddler(null,tiddlerName,DEFAULT_EDIT_TEMPLATE);
story.focusTiddler(tiddlerName,"title");
return false;
});
}}
//}}}
/***
This plugin is released under the [[Creative Commons Attribution 2.5 License|http://creativecommons.org/licenses/by/2.5/]]
***/
Sweet, Obama won in Iowa. To be honest, I didn't expect it. It's one thing to see polls indicating one way, but it seemed too much to hope that things wouldn't proceed as expected: same old candidate, same old politics.
To be clear, I'm for Obama, but not because of his race. In terms of race and gender, I think it'd be awesome if either Obama or Clinton won. I like firsts. But I like Obama for his position on the issues, his youth, and his overall demeanor. He really does feel like a fresh face. I appreciate that. It's something I feel I can connect with.
I know I just finished saying his race has nothing to do with my opinion, but I have to say this. I've heard here and there that while it's all well and good that Obama's tied in some polls, the fact is that America isn't ready for a black president. I disagree. Florida and Boston may not be at all representative of the entire country; Maybe I don't understand the potential aversion to such a possibility. But I choose to believe that Obama has a definite shot at winning the election. And that if he loses, it will be for more reasons than just the color of his skin.
Oh, and does anyone else think that Huckabee looks like the inept president from 24 a few seasons back?
I spent my Saturday afternoon helping create organized chaos. And it was fun.
There's a group called [[The Boston Society of Spontaneity|http://www.bostonsos.org/]]. They organize random public displays that are clever, fun, and often bizarre similar to [[Improv Everywhere|http://improveverywhere.com/]]. Perhaps you heard about the [[Frozen Grand Central Station|http://www.youtube.com/watch?v=jwMj3PJDxuo]]? Or the [[Human Mirror|http://www.youtube.com/watch?v=9MBBr-a2KnM&feature=user]]
This one was part of the [[MP3 Experience|http://www.mp3exp.com/]]. Basically everyone who wishes to participate downloads the same ~MP3 file and meets at a pre-picked location. At exactly the same time, everyone begins playing the file on their ~MP3 player and the adventure begins. The remarkable thing about this was that it was fun for people on both the outside and the inside of the event. I imagine most people, as instructed, did not listen to the ~MP3 file before it was supposed to begin, therefore it was interesting and exciting to be a part of this unfolding event. And of course for people in the area, having no idea how or why people were doing what they were doing, it must have been an entertainingly bizarre experience. Imagine dozens of people around you suddenly breaking into applause and then running and hiding in random locations, all without any perceivable prompt. And for those of us on the inside, it wasn't simply silly instructions. There was a narrative that went along with it that made the entire thing feel fulfilling.
If you are at all adventurous, or are looking for something different to take part in, keep an eye out. The city can be a playground.
<html><center>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Q5QwLRA0_K4&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/Q5QwLRA0_K4&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>
</center>
</html>
I finally took the plunge and bought a PS3. I had set aside money since November 2006 for it. But I didn't pick one up then because it was sold out. When it was back in stock, I didn't buy one because I was hoping for a price drop. There weren't any games I wanted yet anyway.
But recently they dropped the price by $100. The catch was they were phasing out that particular model. Without it, there would no longer be hardware emulation (this means that they would not include the chip that allowed ~PS2 and ~PS1 games to work on the PS3). They have software that can allow older games to play, but it doesn't work as well as the hardware emulation.
I decided that the price would not fall by much any time soon, so I may as well get one now before they're all gone. So now I have a PS3, but no games. I refuse to buy games just because I have the system. I want to buy games that I would actually want if I had the choice of all the games on the market. On a positive note though, I get 5 free Blu-ray movies. They're not stellar (Underworld 2 was one of the better picks), but they'll do.
To be honest, when I look at games like [[Gears of War|http://en.wikipedia.org/wiki/Gears_of_war]] and [[Bioshock|pc.ign.com/articles/813/813641p1.html]], I wonder whether I should have gotten a 360. Even the Wii has [[NiGHTS|http://en.wikipedia.org/wiki/Nights:_Journey_of_Dreams]]. But actually, I don't mind that much. After all, I got the PS3 for free. You know those annoying pop-ups or websites that say "Get an iPod for free", "Get an HDTV for free", etc? Well they work. Yes. I've gotten a free iPod Shuffle, a free PS3, and most recently, a free Japan soccer jersey. Sweetness.
<!--{{{-->
<div class='header'>
<div class='titleLine'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='sidebar'>
<div id='sidebarSearch' macro='search'></div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='mainMenu' refresh='content' tiddler='KubrickSidebar'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<div id='contentFooter'><p>insert witty comment here</p></div>
<!--}}}-->
{{h1{
@@font-size:155%;''__[[Good books I've read a while past:|Past Books]]__''@@
}}}
[[About a Boy|http://www.amazon.com/About-Boy-Nick-Hornby/dp/0140285679/ref=pd_bbs_sr_5/104-8747472-3895942?ie=UTF8&s=books&qid=1190918970&sr=8-5]]
[[The Man Without A Face|http://www.amazon.com/Man-Without-Face-Isabelle-Holland/dp/0064470288/ref=sr_1_1/104-8747472-3895942?ie=UTF8&s=books&qid=1190919003&sr=1-1]]
[[If on a Winter's Night a Traveler|http://www.amazon.com/Winters-Night-Traveler-Everymans-Library/dp/0679420258/ref=sr_1_1/104-8747472-3895942?ie=UTF8&s=books&qid=1190919068&sr=1-1]]
[[The Westing Game|http://www.amazon.com/Westing-Game-Puffin-Modern-Classics/dp/014240120X/ref=pd_bbs_sr_1/104-8747472-3895942?ie=UTF8&s=books&qid=1190919118&sr=1-1]]
[[Anna Karenina|http://www.amazon.com/Anna-Karenina-Barnes-Noble-Classics/dp/1593080271/ref=pd_bbs_2/104-8747472-3895942?ie=UTF8&s=books&qid=1190919143&sr=1-2]]
[[The Catcher in the Rye|http://www.amazon.com/Anna-Karenina-Barnes-Noble-Classics/dp/1593080271/ref=pd_bbs_2/104-8747472-3895942?ie=UTF8&s=books&qid=1190919143&sr=1-2]]
[[Cujo|http://www.amazon.com/Cujo-Signet-Stephen-King/dp/0451161351/ref=pd_bbs_2/104-8747472-3895942?ie=UTF8&s=books&qid=1190919198&sr=1-2]]
[[Madame Bovary|http://www.amazon.com/Madame-Bovary-Oxford-Worlds-Classics/dp/0192840398/ref=pd_bbs_sr_1/104-8747472-3895942?ie=UTF8&s=books&qid=1190919219&sr=1-1]]
[[Memoirs of an Invisible Man|http://www.amazon.com/Memoirs-Invisible-Man-Harry-Saint/dp/0689117353/ref=pd_bbs_2/104-8747472-3895942?ie=UTF8&s=books&qid=1190919269&sr=1-2]]
[[Sphere|http://www.amazon.com/Sphere-Michael-Crichton/dp/0345353145/ref=pd_bbs_2/104-8747472-3895942?ie=UTF8&s=books&qid=1190919315&sr=1-2]]
[[Ender's Game]]
[[Speaker for the Dead|http://www.amazon.com/Speaker-Dead-Ender-Book-2/dp/0812550757/ref=pd_sim_b_1/104-8747472-3895942?ie=UTF8&qid=1190919338&sr=1-5]]
[[Xenocide|http://www.amazon.com/Xenocide-Ender-Book-Orson-Scott/dp/0812509250/ref=pd_sim_b_5/104-8747472-3895942?ie=UTF8&qid=1190919338&sr=1-5]]
[[Children of the Mind|http://www.amazon.com/Children-Mind-Ender-Book-4/dp/0812522397/ref=pd_sim_b_1/104-8747472-3895942?ie=UTF8&qid=1190919338&sr=1-5]]
[[First Meetings in Ender's Universe|http://www.amazon.com/First-Meetings-Enders-Universe-Orson/dp/0765347989/ref=pd_bbs_sr_1/104-8747472-3895942?ie=UTF8&s=books&qid=1190919695&sr=1-1]]
[[Ender's Shadow|http://www.amazon.com/Enders-Shadow-Saga-Orson-Scott/dp/1857239989/ref=sr_1_5/104-8747472-3895942?ie=UTF8&s=books&qid=1190919338&sr=1-5]]
[[Shadow of the Hegemon|http://www.amazon.com/Shadow-Hegemon-Ender-Book-6/dp/0812565959/ref=pd_sim_b_2/104-8747472-3895942?ie=UTF8&qid=1190919338&sr=1-5]]
[[Shadow Puppets|http://www.amazon.com/Shadow-Puppets-Orson-Scott-Card/dp/B000212BTA/ref=pd_sim_b_1/104-8747472-3895942?ie=UTF8&qid=1190919338&sr=1-5]]
[[Shadow of the Giant|http://www.amazon.com/Shadow-Giant-Ender-Book-Enders/dp/0812571398/ref=pd_bxgy_b_text_b/104-8747472-3895942?ie=UTF8&qid=1190919338&sr=1-5]]
[[Harry Potter|http://www.amazon.com/Harry-Potter-Boxset-Books-1-7/dp/0545044251/ref=sr_1_5/104-8747472-3895942?ie=UTF8&s=books&qid=1190919652&sr=1-5]]
I'm taking this hobby more seriously now. Not that I necessarily want to do anything with it at this point, but I feel really inspired to take some great photographs (and do some great edits in Photoshop). The thing is, I think I need some independent critics. Some critics and some mentors who know what they're doing. I see some great examples on Flickr ([[Example 1|http://www.flickr.com/photos/stephenpoff/page2/]], [[Example 2|http://www.flickr.com/photos/7470307@N06/]]) of things that I want to be able to do, but I don't know how to get from where I am now to where I want to go. I'm not sure what I'm missing. Suggestions?
|Mac|PC|
|PS3|xBox 360|
|Democrat|Republican|
|Marvel|DC|
|Black|White|
|Star Wars|Star Trek|
|[[Obama|March 18, 2008]]|Hillary|
|Red Sox|Yankees|
|Skiing|[[Snowboarding|Utah!]]|
|[[Rap|The Best Music Around]]|[[Rock|Concert Checklist]]|
|Urban|[[Suburban|Florida Christmas]]|
<html><div align="center"><iframe src="http://picasaweb.google.com/edmund.rogers" frameborder="0" width="100%" height="600"></iframe></div></html>
/***
|Name|HoverMenuPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#HoverMenuPlugin|
|Version|1.11|
|Requires|~TW2.x|
!Description:
Provides a hovering menu on the edge of the screen for commonly used commands, that scrolls with the page.
!Demo:
Observe the hovering menu on the right edge of the screen.
!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
To customize your HoverMenu, edit the HoverMenu shadow tiddler.
To customize whether the menu sticks to the right or left edge of the screen, and its start position, edit the HoverMenu configuration settings part of the code below. It's well documented, so don't be scared!
The menu has an id of hoverMenu, in case you want to style the buttons in it using css.
!Notes:
Since the default HoverMenu contains buttons for toggling the side bar and jumping to the top of the screen and to open tiddlers, the ToggleSideBarMacro, JumpMacro and the JumpToTopMacro are included in this tiddler, so you dont need to install them separately. Having them installed separately as well could lead to complications.
If you dont intend to use these three macros at all, feel free to remove those sections of code in this tiddler.
!To Do:
* rework code to allow multiple hovering menus in different positions, horizontal etc.
* incorporate code for keyboard shortcuts that correspond to the buttons in the hovermenu
!History:
*03-08-06, ver 1.1.2: compatibility fix with SelectThemePlugin
*03-08-06, ver 1.11: fixed error with button tooltips
*27-07-06, ver 1.1 : added JumpMacro to hoverMenu
*23-07-06
!Code
***/
/***
start HoverMenu plugin code
***/
//{{{
config.hoverMenu={};
//}}}
/***
HoverMenu configuration settings
***/
//{{{
config.hoverMenu.settings={
align: 'right', //align menu to right or left side of screen, possible values are 'right' and 'left'
x: 1, // horizontal distance of menu from side of screen, increase to your liking.
y: 158 //vertical distance of menu from top of screen at start, increase or decrease to your liking
};
//}}}
//{{{
//continue HoverMenu plugin code
config.hoverMenu.handler=function()
{
if (!document.getElementById("hoverMenu"))
{
var theMenu = createTiddlyElement(document.getElementById("contentWrapper"), "div","hoverMenu");
theMenu.setAttribute("refresh","content");
theMenu.setAttribute("tiddler","HoverMenu");
var menuContent = store.getTiddlerText("HoverMenu");
wikify(menuContent,theMenu);
}
var Xloc = this.settings.x;
Yloc =this.settings.y;
var ns = (navigator.appName.indexOf("Netscape") != -1);
function SetMenu(id)
{
var GetElements=document.getElementById?document.getElementById(id):document.all?document.all[id]:document.layers[id];
if(document.layers)GetElements.style=GetElements;
GetElements.sP=function(x,y){this.style[config.hoverMenu.settings.align]=x +"px";this.style.top=y +"px";};
GetElements.x = Xloc;
GetElements.y = findScrollY();
GetElements.y += Yloc;
return GetElements;
}
window.LoCate_XY=function()
{
var pY = findScrollY();
ftlObj.y += (pY + Yloc - ftlObj.y)/15;
ftlObj.sP(ftlObj.x, ftlObj.y);
setTimeout("LoCate_XY()", 10);
}
ftlObj = SetMenu("hoverMenu");
LoCate_XY();
};
window.old_lewcid_hovermenu_restart = restart;
restart = function()
{
window.old_lewcid_hovermenu_restart();
config.hoverMenu.handler();
};
setStylesheet(
"#hoverMenu .imgLink, #hoverMenu .imgLink:hover {border:none; padding:0px; float:right; margin-bottom:2px; margin-top:0px;}\n"+
"#hoverMenu .button, #hoverMenu .tiddlyLink {border:none; font-weight:bold; background:#18f; color:#FFF; padding:0 5px; float:right; margin-bottom:4px;}\n"+
"#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#fff; background:#000; padding:0 5px; float:right; margin-bottom:4px;}\n"+
"#hoverMenu .button {width:100%; text-align:center}"+
"#hoverMenu { position:absolute; width:7px;}\n"+
"\n","hoverMenuStyles");
config.macros.renameButton={};
config.macros.renameButton.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
if (place.lastChild.tagName!="BR")
{
place.lastChild.firstChild.data = params[0];
if (params[1]) {place.lastChild.title = params[1];}
}
};
config.shadowTiddlers["HoverMenu"]="<<top>>\n<<toggleSideBar>><<renameButton '>' >>\n<<jump j '' top>>\n<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>\n<<newTiddler>><<renameButton n>>\n";
//}}}
//end HoverMenu plugin code
//Start ToggleSideBarMacro code
//{{{
config.macros.toggleSideBar={};
config.macros.toggleSideBar.settings={
styleHide : "#sidebar { display: none;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
styleShow : " ",
arrow1: "«",
arrow2: "»"
};
config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
{
var tooltip= params[1]||'toggle sidebar';
var mode = (params[2] && params[2]=="hide")? "hide":"show";
var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
var label= (params[0]&¶ms[0]!='.')?params[0]+" "+arrow:arrow;
var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
if (mode == "hide")
{
(document.getElementById("sidebar")).setAttribute("toggle","hide");
setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");
}
};
config.macros.toggleSideBar.onToggleSideBar = function(){
var sidebar = document.getElementById("sidebar");
var settings = config.macros.toggleSideBar.settings;
if (sidebar.getAttribute("toggle")=='hide')
{
setStylesheet(settings.styleShow,"ToggleSideBarStyles");
sidebar.setAttribute("toggle","show");
this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
}
else
{
setStylesheet(settings.styleHide,"ToggleSideBarStyles");
sidebar.setAttribute("toggle","hide");
this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);
}
return false;
}
setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");
//}}}
//end ToggleSideBarMacro code
//start JumpToTopMacro code
//{{{
config.macros.top={};
config.macros.top.handler=function(place,macroName)
{
createTiddlyButton(place,"^","jump to top",this.onclick);
}
config.macros.top.onclick=function()
{
window.scrollTo(0,0);
};
config.commands.top =
{
text:" ^ ",
tooltip:"jump to top"
};
config.commands.top.handler = function(event,src,title)
{
window.scrollTo(0,0);
}
//}}}
//end JumpToStartMacro code
//start JumpMacro code
//{{{
config.macros.jump= {};
config.macros.jump.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
var label = (params[0] && params[0]!=".")? params[0]: 'jump';
var tooltip = (params[1] && params[1]!=".")? params[1]: 'jump to an open tiddler';
var top = (params[2] && params[2]=='top') ? true: false;
var btn =createTiddlyButton(place,label,tooltip,this.onclick);
if (top==true)
btn.setAttribute("top","true")
}
config.macros.jump.onclick = function(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var top = theTarget.getAttribute("top");
var popup = Popup.create(this);
if(popup)
{
if(top=="true")
{createTiddlyButton(createTiddlyElement(popup,"li"),'Top ↑','Top of TW',config.macros.jump.top);
createTiddlyElement(popup,"hr");}
story.forEachTiddler(function(title,element) {
createTiddlyLink(createTiddlyElement(popup,"li"),title,true);
});
}
Popup.show(popup,false);
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return false;
}
config.macros.jump.top = function()
{
window.scrollTo(0,0);
}
//}}}
//end JumpMacro code
//utility functions
//{{{
Popup.show = function(unused,slowly)
{
var curr = Popup.stack[Popup.stack.length-1];
var rootLeft = findPosX(curr.root);
var rootTop = findPosY(curr.root);
var rootHeight = curr.root.offsetHeight;
var popupLeft = rootLeft;
var popupTop = rootTop + rootHeight;
var popupWidth = curr.popup.offsetWidth;
var winWidth = findWindowWidth();
if (isChild(curr.root,'hoverMenu'))
var x = config.hoverMenu.settings.x;
else
var x = 0;
if(popupLeft + popupWidth+x > winWidth)
popupLeft = winWidth - popupWidth -x;
if (isChild(curr.root,'hoverMenu'))
{curr.popup.style.right = x + "px";}
else
curr.popup.style.left = popupLeft + "px";
curr.popup.style.top = popupTop + "px";
curr.popup.style.display = "block";
addClass(curr.root,"highlight");
if(config.options.chkAnimate)
anim.startAnimating(new Scroller(curr.popup,slowly));
else
window.scrollTo(0,ensureVisible(curr.popup));
}
window.isChild = function(e,parentId) {
while (e != null) {
var parent = document.getElementById(parentId);
if (parent == e) return true;
e = e.parentNode;
}
return false;
};
//}}}
/***
''SearchOptionsPlugin for TiddlyWiki version 2.0''
^^author: Eric Shulman - ELS Design Studios
source: http://www.TiddlyTools.com/#SearchOptionsPlugin
license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
The TiddlyWiki search function normally looks in both tiddler titles and tiddler body content ('text'). However, narrowing the search so that it examines only titles or only text, or expanding the search to include text contained in tiddler tags can be very helpful, especially when searching on common words or phrases. In addition, it is often useful for the search results to show tiddlers with matching titles before tiddlers that contain matching text or tags.
!!!!!Usage
<<<
This plugin adds checkboxes (see below and in AdvancedOptions) to let you selectively configure the TiddlyWiki search function to just examine any combination of tiddler titles, text, or tags. It also provides an option to switch the search results order between 'titles mixed in' (default) and 'titles shown first', as well as an option display the search results as a list of links (in an auto-generated "SearchResults" tiddler), rather than actually displaying all matching tiddlers. You can also enable/disable the "incremental search" (key-by-key searching), so that a search is only initiated when you press the ENTER key or click on the "search:" prompt text.
<<<
!!!!!Configuration
<<<
In additional to the checkboxes in AdvancedOptions, a self-contained control panel is included here for your convenience:
<<option chkSearchTitles>> Search tiddler titles
<<option chkSearchText>> Search tiddler text
<<option chkSearchTags>> Search in tiddler tags
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchList>> Show list of matching tiddlers
<<option chkSearchIncremental>> Incremental searching
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''SearchOptionsPlugin'' (tagged with <<tag systemConfig>>)
^^documentation and javascript for SearchOptionsPlugin handling^^
When installed, this plugin automatically adds checkboxes in the AdvancedOptions shadow tiddler so you can enable/disable the extended search behavior. However, if you have customized your AdvancedOptions, you will need to manually add {{{<<option chkSearchTitles>>}}}, {{{<<option chkSearchText>>}}} and {{{<<option chkSearchTitlesFirst>>}}} (with suitable prompt text) to your customized tiddler.
<<<
!!!!!Revision History
<<<
''2006.02.03 [2.2.1]''
rewrite timeout clearing code and blank search text handling to match 2.0.4 core release changes. note that core no longer permits "blank=all" searches, so neither does this plugin. To search for all, use "." with text patterns enabled.
''2006.02.02 [2.2.0]''
in search.handler(), KeyHandler() function clears 'left over' timeout when search input is < 3 chars. Prevents searching on shorter text when shortened by rapid backspaces (<500msec)
''2006.02.01 [2.1.9]''
in Story.prototype.search(), correct inverted logic for using/not using regular expressions when searching
also, blank search text now presents "No search text. Continue anyway?" confirm() message box, so search on blank can still be processed if desired by user.
''2006.02.01 [2.1.8]''
in doSearch(), added alert/return if search text is blank
''2006.01.20 [2.1.7]''
fixed setting of config.macros.search.reportTitle so that Tweaks can override it.
''2006.01.19 [2.1.6]''
improved SearchResults formatting, added a "search again" form to the report (based on a suggestion from MorrisGray)
define results report title using config.macros.search.reportTitle instead of hard-coding the tiddler title
''2006.01.18 [2.1.5]''
Created separate functions for reportSearchResults(text,matches) and discardSearchResults(), so that other developers can create alternative report generators.
''2006.01.17 [2.1.4]''
Use regExp.search() instead of regExp.test() to scan for matches. Correctd the problem where only half the matching tiddlers (the odd-numbered ones) were being reported.
''2006.01.15 [2.1.3]''
Added information (date/time, username, search options used) to SearchResults output
''2006.01.10 [2.1.2]''
use displayTiddlers() to render matched tiddlers. This lets you display multiple matching tiddlers, even if SinglePageModePlugin is enabled.
''2006.01.08 [2.1.1]''
corrected invalid variable reference, "txt.value" to "text" in story.search()
''2006.01.08 [2.1.0]''
re-write to match new store.search(), store.search.handler() and story.search() functions.
''2005.12.30 [2.0.0]''
Upgraded to TW2.0
when rendering SearchResults tiddler, closeTiddler() first to ensure display is refreshed.
''2005.12.26 [1.4.0]''
added option to search for matching text in tiddler tags
''2005.12.21 [1.3.7]''
use \\ to 'escape' single quotes in tiddler titles when generating "Open all matching tiddlers" link. Also, added access key: "O", to trigger "open all" link.
Based on a suggestion by UdoBorkowski.
''2005.12.18 [1.3.6]''
call displayMessage() AFTER showing matching tiddlers so message is not cleared too soon
''2005.12.17 [1.3.5]''
if no matches found, just display message and delete any existing SearchResults tiddler.
''2005.12.17 [1.3.4]''
use """{{{""" and """}}}""" to 'escape' display text in SearchResults tiddler to ensure that formatting contained in search string is not rendered
Based on a suggestion by UdoBorkowski.
''2005.12.14 [1.3.3]''
tag SearchResults tiddler with 'excludeSearch' so it won't list itself in subsequent searches
Based on a suggestion by UdoBorkowski.
''2005.12.14 [1.3.2]''
added "open all matching tiddlers..." link to search results output.
Based on a suggestion by UdoBorkowski.
''2005.12.10 [1.3.1]''
added "discard search results" link to end of search list tiddler output for quick self-removal of 'SearchResults' tiddler.
''2005.12.01 [1.3.0]''
added chkSearchIncremental to enable/disable 'incremental' searching (i.e., search after each keystroke) (default is ENABLED).
added handling for Enter key so it can be used to start a search.
Based on a suggestion by LyallPearce
''2005.11.25 [1.2.1]''
renamed from SearchTitleOrTextPlugin to SearchOptionsPlugin
''2005.11.25 [1.2.0]''
added chkSearchList option
Based on a suggestion by RodneyGomes
''2005.10.19 [1.1.0]''
added chkSearchTitlesFirst option.
Based on a suggestion by ChristianHauck
''2005.10.18 [1.0.0]''
Initial Release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].
Based on a suggestion by LyallPearce.
<<<
!!!!!Code
***/
//{{{
version.extensions.SearchTitleOrText = {major: 2, minor: 2, revision: 1, date: new Date(2006,2,3)};
//}}}
//{{{
if (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=true;
if (config.options.chkSearchText==undefined) config.options.chkSearchText=true;
if (config.options.chkSearchTags==undefined) config.options.chkSearchTags=true;
if (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=false;
if (config.options.chkSearchList==undefined) config.options.chkSearchList=false;
if (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=true;
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTitles>> Search in tiddler titles";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchText>> Search in tiddler text";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTags>> Search in tiddler tags";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTitlesFirst>> Search results show title matches first";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchList>> Search results show list of matching tiddlers";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchIncremental>> Incremental searching";
//}}}
//{{{
if (config.macros.search.reportTitle==undefined)
config.macros.search.reportTitle="SearchResults";
//}}}
//{{{
config.macros.search.handler = function(place,macroName,params)
{
var lastSearchText = "";
var searchTimeout = null;
var doSearch = function(txt)
{
if (txt.value.length>0)
{
story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);
lastSearchText = txt.value;
}
};
var clickHandler = function(e)
{
doSearch(this.nextSibling);
return false;
};
var keyHandler = function(e)
{
if (!e) var e = window.event;
switch(e.keyCode)
{
case 13: // ELS: handle enter key
doSearch(this);
break;
case 27:
this.value = "";
clearMessage();
break;
}
if (config.options.chkSearchIncremental)
{
if(this.value.length > 2)
{
if(this.value != lastSearchText)
{
if(searchTimeout) clearTimeout(searchTimeout);
var txt = this;
searchTimeout = setTimeout(function() {doSearch(txt);},500);
}
}
else
if(searchTimeout) clearTimeout(searchTimeout);
}
};
var focusHandler = function(e)
{
this.select();
};
var btn = createTiddlyButton(place,this.label,this.prompt,clickHandler);
var txt = createTiddlyElement(place,"input",null,null,null);
if(params[0])
txt.value = params[0];
txt.onkeyup = keyHandler;
txt.onfocus = focusHandler;
txt.setAttribute("size",this.sizeTextbox);
txt.setAttribute("accessKey",this.accessKey);
txt.setAttribute("autocomplete","off");
if(config.browser.isSafari)
{
txt.setAttribute("type","search");
txt.setAttribute("results","5");
}
else
txt.setAttribute("type","text");
}
//}}}
//{{{
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
var matches = store.search(highlightHack,"title","excludeSearch");
var q = useRegExp ? "/" : "'";
clearMessage();
if (!matches.length) {
if (config.options.chkSearchList) discardSearchResults();
displayMessage(config.macros.search.failureMsg.format([q+text+q]));
} else {
if (config.options.chkSearchList)
reportSearchResults(text,matches);
else {
var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);
this.closeAllTiddlers(); story.displayTiddlers(null,titles);
displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
}
}
highlightHack = null;
}
//}}}
//{{{
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)
{
var candidates = this.reverseLookup("tags",excludeTag,false,sortField);
// scan for matching titles
var title_results = [];
if (config.options.chkSearchTitles)
for(var t=0; t<candidates.length; t++)
if(candidates[t].title.search(searchRegExp)!=-1)
title_results.push(candidates[t]);
// scan for matching text
var text_results = [];
if (config.options.chkSearchText)
for(var t=0; t<candidates.length; t++)
if(candidates[t].text.search(searchRegExp)!=-1)
text_results.push(candidates[t]);
// scan for matching tags
var tag_results = [];
if (config.options.chkSearchTags)
for(var t=0; t<candidates.length; t++)
if(candidates[t].tags.join(" ").search(searchRegExp)!=-1)
tag_results.push(candidates[t]);
// merge the results, eliminating redundant matches
var results = [];
for(var t=0; t<title_results.length; t++) results.pushUnique(title_results[t]);
for(var t=0; t<text_results.length; t++) results.pushUnique(text_results[t]);
for(var t=0; t<tag_results.length; t++) results.pushUnique(tag_results[t]);
// if not 'titles first', re-sort results to so titles, text and tag matches are mixed together
if(!sortField) sortField = "title";
var bySortField=function (a,b) {if(a[sortField] == b[sortField]) return(0); else return (a[sortField] < b[sortField]) ? -1 : +1; }
if (!config.options.chkSearchTitlesFirst) results.sort(bySortField);
return results;
}
//}}}
// // ''REPORT GENERATOR''
//{{{
if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
{
var title=config.macros.search.reportTitle
var q = config.options.chkRegExpSearch ? "/" : "'";
var body="";
// summary: nn tiddlers found matching '...', options used
body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\n";
body+="^^//searched in:// ";
body+=(config.options.chkSearchTitles?"''titles'' ":"");
body+=(config.options.chkSearchText?"''text'' ":"");
body+=(config.options.chkSearchTags?"''tags'' ":"");
if (config.options.chkCaseSensitiveSearch||config.options.chkRegExpSearch) {
body+=" //with options:// ";
body+=(config.options.chkCaseSensitiveSearch?"''case sensitive'' ":"");
body+=(config.options.chkRegExpSearch?"''text patterns'' ":"");
}
body+="^^";
// numbered list of links to matching tiddlers
body+="\n<<<";
for(var t=0;t<matches.length;t++) body+="\n# [["+matches[t].title+"]]";
body+="\n<<<\n";
// open all matches button
body+="<html><input type=\"button\" href=\"javascript:;\" ";
body+="onclick=\"story.displayTiddlers(null,["
for(var t=0;t<matches.length;t++)
body+="'"+matches[t].title.replace(/\'/mg,"\\'")+"'"+((t<matches.length-1)?", ":"");
body+="],1);\" ";
body+="accesskey=\"O\" ";
body+="value=\"open all matching tiddlers\"></html> ";
// discard search results button
body+="<html><input type=\"button\" href=\"javascript:;\" ";
body+="onclick=\"story.closeTiddler('"+title+"'); store.deleteTiddler('"+title+"');\" ";
body+="value=\"discard "+title+"\"></html>";
// search again
body+="\n\n----\n";
body+="<<search \""+text+"\">> ";
body+="<<option chkSearchTitles>>titles ";
body+="<<option chkSearchText>>text ";
body+="<<option chkSearchTags>>tags";
body+="<<option chkCaseSensitiveSearch>>case-sensitive ";
body+="<<option chkRegExpSearch>>text patterns";
// create/update the tiddler
var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();
tiddler.set(title,body,config.options.txtUserName,(new Date()),"excludeLists excludeSearch sys");
store.addTiddler(tiddler); story.closeTiddler(title);
// use alternate "search again" label in <<search>> macro
var oldprompt=config.macros.search.label;
config.macros.search.label="search again";
// render tiddler
story.displayTiddler(null,title,1); // force refresh
// restore standard search label
config.macros.search.label=oldprompt;
}
if (!window.discardSearchResults) window.discardSearchResults=function()
{
// remove the tiddler
story.closeTiddler(config.macros.search.reportTitle);
store.deleteTiddler(config.macros.search.reportTitle);
}
//}}}
Every time there's some major snow storm, I listen to everyone complaining about traffic and shoveling out their cars. In the meantime, I'm quietly smiling because I know it means another trip to whatever mountain is getting the most of it.
This last Saturday was [[Wachusett|http://wawa.wachusett.com/]]. I've only gone one other time, also on a snow day. It's a great little place to mess around. Ice and rocks reared their heads toward the afternoon, so I think I'm only interested in going after a storm. But it's still pretty fun considering its size.
Plus, I really broke in my [[second board|http://www.romesnowboards.com/product/boards/slash/]]. I only used it once in Utah because I think I would have died going down chutes on something that soft and squirrelly. But once I got used to the flex, I found it really fun, hitting every bump and off trail hit I could find. Plus, it's mad light; I don't have to get 5 feet of air to feel like I have the time to whip it around.
I count one more day in me [[this season|Days this season ('07 - '08)]]. So we're almost at a close. . .that is of course assuming another storm doesn't hit. . .
/***
| Name:|QuickOpenTagPlugin|
| Purpose:|Makes tag links into a Taggly style open tag plus a normal style drop down menu|
| Creator:|SimonBaird|
| Source:|http://simonbaird.com/mptw/#QuickOpenTagPlugin|
| Requires:|TW 2.x|
| Version|1.1 (7-Feb-06)|
!History
* Version 1.1 (07/02/2006)
** Fix Firefox 1.5.0.1 crashes
** Updated by ~BidiX[at]~BidiX.info
* Version 1.0 (?/01/2006)
** First release
***/
//{{{
//⊻ ⊽ ⋁ ▼
window.createTagButton_orig_mptw = createTagButton;
window.createTagButton = function(place,tag,excludeTiddler) {
var sp = createTiddlyElement(place,"span",null,"quickopentag");
createTiddlyLink(sp,tag,true,"button");
var theTag = createTiddlyButton(sp,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tag]),onClickTag);
theTag.setAttribute("tag",tag);
if(excludeTiddler)
theTag.setAttribute("tiddler",excludeTiddler);
return(theTag);
};
config.macros.miniTag = {handler:function(place,macroName,params,wikifier,paramString,tiddler) {
var tagged = store.getTaggedTiddlers(tiddler.title);
if (tagged.length > 0) {
var theTag = createTiddlyButton(place,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
theTag.setAttribute("tag",tiddler.title);
theTag.className = "miniTag";
}
}};
config.macros.miniTag.dropdownchar = (document.all?"▼":"▾"); // the fat one is the only one that works in IE
config.macros.allTags.handler = function(place,macroName,params)
{
var tags = store.getTags();
var theDateList = createTiddlyElement(place,"ul",null,null,null);
if(tags.length === 0)
createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);
for (var t=0; t<tags.length; t++)
{
var theListItem =createTiddlyElement(theDateList,"li",null,null,null);
var theLink = createTiddlyLink(theListItem,tags[t][0],true);
var theCount = " (" + tags[t][1] + ")";
theLink.appendChild(document.createTextNode(theCount));
var theDropDownBtn = createTiddlyButton(theListItem," "+config.macros.miniTag.dropdownchar,this.tooltip.format([tags[t][0]]),onClickTag);
theDropDownBtn.setAttribute("tag",tags[t][0]);
}
};
setStylesheet(
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }\n"+
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}\n"+
"a.miniTag {font-size:150%;}\n"+
"",
"QuickOpenTagStyles");
//}}}
/***
<html>⊻ ⊽ ⋁ ▼ ▾</html>
***/
Type the text for 'Quotes'
[[Reflex (Jumper)|http://www.amazon.com/Reflex-Jumper-Steven-Gould/dp/0812578546/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1205880630&sr=8-1]] by Steven Gould
Reflex is the sequel to Gould's [[Jumper]]. I have to say, I enjoyed this one a lot more. Even though it serves as a greater departure to the film, it had a lot more action and it also expanded the possibilities of the teleportation ability in a really interesting way.
I hate summaries, so I won't bother running through what it is about. But overall, I liked the characterization a lot more in this one. I felt the motivations were a little stronger. And I think I mentioned in the review of Jumper that I found the middle third really too slow. This one did slow down a bit in the middle as well, but more so it could set up the final third of the novel, which wasn't perfect, but still kept me interested. Check it out. I don't believe the first book is necessarily prerequisite reading.
/***
| Name:|RenameTagsPlugin|
| Purpose:|Allows you to easily rename tags|
| Creator:|SimonBaird|
| Source:|http://simonbaird.com/mptw/#RenameTagsPlugin|
| Version:|1.0.1 (5-Mar-06)|
!Description
If you rename a tiddler/tag that is tagging other tiddlers this plugin will ask you if you want to rename the tag in each tiddler where it is used. This is essential if you use tags and ever want to rename them. To use it, open the tag you want to rename as a tiddler (it's the last option in the tag popup menu), edit it, rename it and click done. You will asked if you want to rename the tag. Click OK to rename the tag in the tiddlers that use it. Click Cancel to not rename the tag.
!Example
Try renaming [[Plugins]] or [[CSS]] on this site.
!History
* 1.0.1 (5-Mar-06) - Added feature to allow renaming of tags without side-effect of creating a tiddler
* 1.0.0 (5-Mar-06) - First working version
!Code
***/
//{{{
version.extensions.RenameTagsPlugin = {
major: 1, minor: 0, revision: 0,
date: new Date(2006,3,5),
source: "http://simonbaird.com/mptw/#RenameTagsPlugin"
};
config.macros.RenameTagsPlugin = {};
config.macros.RenameTagsPlugin.prompt = "Rename the tag '%0' to '%1' in %2 tidder%3?";
// these are very useful, perhaps they should be in the core
if (!store.addTag) {
store.addTag = function(title,tag) {
var t=this.getTiddler(title); if (!t || !t.tags) return;
t.tags.push(tag);
};
};
if (!store.removeTag) {
store.removeTag = function(title,tag) {
var t=this.getTiddler(title); if (!t || !t.tags) return;
if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);
};
};
store.saveTiddler_orig_tagrename = store.saveTiddler;
store.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {
if (title != newTitle && this.getTaggedTiddlers(title).length > 0) {
// then we are renaming a tag
var tagged = this.getTaggedTiddlers(title);
if (confirm(config.macros.RenameTagsPlugin.prompt.format([title,newTitle,tagged.length,tagged.length>1?"s":""]))) {
for (var i=0;i<tagged.length;i++) {
store.removeTag(tagged[i].title,title);
store.addTag(tagged[i].title,newTitle);
// if tiddler is visible refresh it to show updated tag
story.refreshTiddler(tagged[i].title,false,true);
}
}
if (!this.tiddlerExists(title) && newBody == "") {
// dont create unwanted tiddler
return null;
}
}
return this.saveTiddler_orig_tagrename(title,newTitle,newBody,modifier,modified,tags);
}
//}}}
Have you ever text messaged the word "repetitive" in [[T9Word|http://en.wikipedia.org/wiki/T9Word]] mode? Doesn't it feel a little. . .repetitive? How appropriate.
I'm not a big fan of New Years resolutions. Not because of the common argument that you shouldn't wait for an arbitrary date to start on a goal, but more because I'm really bad at them. I don't last more than 3 weeks.
[>img[Ed's Goals|http://www.joesgoals.com/badge/3B036E4A-BA32-4320-D6580FEFF2F1DEE6_h_100_100.jpg][http://www.joesgoals.com/?u=3B036E4A-BA32-4320-D6580FEFF2F1DEE6]]
But this time'll be different. I've got a tracking system and everything!
My big motivation is I want to be able to complete the [[Cooper Test|http://en.wikipedia.org/wiki/Cooper_test]] and simultaneously train for some serious [[snowboarding in Utah|http://www.brightonterrainparks.com/]] come February. I'm doing pretty well so far. . .
Quick music suggestion. Check out Duffy's [[Rockferry|http://www.amazon.com/Rockferry-Duffy/dp/B0012OVF2U/ref=sr_1_1?ie=UTF8&s=music&qid=1205948270&sr=1-1]]. It's a bluesy album that's been compared to Amy Winehouse, but I like this one a bit more. For one, Winehouse's music and overall style seemed a little too gimmickly retro. This one feels real. Give it a try.
/***
| Name|SaveCloseTiddlerPlugin|
| Description|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|
| Version|3.0 ($Rev: 2134 $)|
| Date|$Date: 2007-04-30 16:11:12 +1000 (Mon, 30 Apr 2007) $|
| Source|http://mptw.tiddlyspot.com/#SaveCloseTiddlerPlugin|
| Author|Simon Baird <simon.baird@gmail.com>|
| License|http://mptw.tiddlyspot.com/#TheBSDLicense|
To use these you must add them to the tool bar in your EditTemplate
***/
//{{{
merge(config.commands,{
saveCloseTiddler: {
text: 'done/close',
tooltip: 'Save changes to this tiddler and close it',
handler: function(e,src,title) {
config.commands.saveTiddler.handler(e,src,title);
config.commands.closeTiddler.handler(e,src,title);
return false;
}
},
cancelCloseTiddler: {
text: 'cancel/close',
tooltip: 'Undo changes to this tiddler and close it',
handler: function(e,src,title) {
config.commands.cancelTiddler.handler(e,src,title);
config.commands.closeTiddler.handler(e,src,title);
return false;
}
}
});
//}}}
/***
|Name|SearchOptionsPlugin|
|Source|http://www.TiddlyTools.com/#SearchOptionsPlugin|
|Version|2.6.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.search, TiddlyWiki.prototype.search, config.macros.search.onKeyPress|
|Description|extend core search function with additional user-configurable options|
The TiddlyWiki search function normally looks in both tiddler titles and tiddler body content ('text'). However, narrowing the search so that it examines only titles or only text, or expanding the search to include text contained in tiddler tags can be very helpful, especially when searching on common words or phrases. In addition, it is often useful for the search results to show tiddlers with matching titles before tiddlers that contain matching text or tags.
!!!!!Usage
<<<
This plugin adds checkboxes (see below and in AdvancedOptions) to let you selectively configure the TiddlyWiki search function to just examine any combination of tiddler titles, text, or tags. It also provides an option to switch the search results order between 'titles mixed in' (default) and 'titles shown first', as well as an option display the search results as a list of links (in an auto-generated "SearchResults" tiddler), rather than actually displaying all matching tiddlers. You can also enable/disable the "incremental search" (key-by-key searching), so that a search is only initiated when you press the ENTER key or click on the "search:" prompt text.
<<<
!!!!!Configuration
<<<
In additional to the checkboxes in AdvancedOptions, a self-contained control panel is included here for your convenience:
<<option chkSearchTitles>> Search in titles
<<option chkSearchText>> Search in tiddler text
<<option chkSearchTags>> Search in tags
<<option chkSearchFields>> Search in data fields
<<option chkSearchShadows>> Search shadow tiddlers
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchByDate>> Sort matching tiddlers by date
<<option chkSearchList>> Show list of matches in [[SearchResults]]
<<option chkSearchIncremental>> Incremental searching
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''SearchOptionsPlugin'' (tagged with <<tag systemConfig>>)
^^documentation and javascript for SearchOptionsPlugin handling^^
When installed, this plugin automatically adds checkboxes in the AdvancedOptions shadow tiddler so you can enable/disable the extended search behavior. However, if you have customized your AdvancedOptions, you will need to manually add {{{<<option chkSearchTitles>>}}}, {{{<<option chkSearchText>>}}} and {{{<<option chkSearchTitlesFirst>>}}} (with suitable prompt text) to your customized tiddler.
<<<
!!!!!Revision History
<<<
''2007.02.17 [2.6.1]'' added redefinition of config.macros.search.onKeyPress() to restore check to bypass key-by-key searching (i.e., when chkSearchIncremental==false), which had been unintentionally removed with v2.6.0
''2007.02.13 [2.6.0]'' remove redefinition of config.macros.search.handler since core now includes handling for ENTER key.
''2007.02.08 [2.5.1]'' include 'temporary' tag when creating SearchResults (for use with TemporaryTiddlersPlugin)
''2007.01.29 [2.5.0]'' added support for "sort results by date". Default is to sort alphabetically (standard). When sorted by dates, most recent changes are shown first
''2006.10.10 [2.4.0]'' added support for "search in tiddler data" (tiddler.fields) Default is to search extended data.
''2006.04.06 [2.3.0]'' added support for "search in shadow tiddlers". Default is *not* to search in the shadows (i.e. standard TW behavior). Note: if a shadow tiddler has a 'real' counterpart, only the real tiddler is searched, since the shadow is inaccessible for viewing/editing.
''2006.02.03 [2.2.1]'' rewrite timeout clearing code and blank search text handling to match 2.0.4 core release changes. note that core no longer permits "blank=all" searches, so neither does this plugin. To search for all, use "." with text patterns enabled.
''2006.02.02 [2.2.0]'' in search.handler(), KeyHandler() function clears 'left over' timeout when search input is < 3 chars. Prevents searching on shorter text when shortened by rapid backspaces (<500msec)
''2006.02.01 [2.1.9]'' in Story.prototype.search(), correct inverted logic for using/not using regular expressions when searching
also, blank search text now presents "No search text. Continue anyway?" confirm() message box, so search on blank can still be processed if desired by user.
''2006.02.01 [2.1.8]'' in doSearch(), added alert/return if search text is blank
''2006.01.20 [2.1.7]'' fixed setting of config.macros.search.reportTitle so that Tweaks can override it.
''2006.01.19 [2.1.6]'' improved SearchResults formatting, added a "search again" form to the report (based on a suggestion from MorrisGray)
define results report title using config.macros.search.reportTitle instead of hard-coding the tiddler title
''2006.01.18 [2.1.5]'' Created separate functions for reportSearchResults(text,matches) and discardSearchResults(), so that other developers can create alternative report generators.
''2006.01.17 [2.1.4]'' Use regExp.search() instead of regExp.test() to scan for matches. Correctd the problem where only half the matching tiddlers (the odd-numbered ones) were being reported.
''2006.01.15 [2.1.3]'' Added information (date/time, username, search options used) to SearchResults output
''2006.01.10 [2.1.2]'' use displayTiddlers() to render matched tiddlers. This lets you display multiple matching tiddlers, even if SinglePageModePlugin is enabled.
''2006.01.08 [2.1.1]'' corrected invalid variable reference, "txt.value" to "text" in story.search()
''2006.01.08 [2.1.0]'' re-write to match new store.search(), store.search.handler() and story.search() functions.
''2005.12.30 [2.0.0]'' Upgraded to TW2.0
when rendering SearchResults tiddler, closeTiddler() first to ensure display is refreshed.
''2005.12.26 [1.4.0]'' added option to search for matching text in tiddler tags
''2005.12.21 [1.3.7]'' use \\ to 'escape' single quotes in tiddler titles when generating "Open all matching tiddlers" link. Also, added access key: "O", to trigger "open all" link.
Based on a suggestion by UdoBorkowski.
''2005.12.18 [1.3.6]'' call displayMessage() AFTER showing matching tiddlers so message is not cleared too soon
''2005.12.17 [1.3.5]'' if no matches found, just display message and delete any existing SearchResults tiddler.
''2005.12.17 [1.3.4]'' use {/%%/{/%%/{ and }/%%/}/%%/} to 'escape' display text in SearchResults tiddler to ensure that formatting contained in search string is not rendered
Based on a suggestion by UdoBorkowski.
''2005.12.14 [1.3.3]'' tag SearchResults tiddler with 'excludeSearch' so it won't list itself in subsequent searches
Based on a suggestion by UdoBorkowski.
''2005.12.14 [1.3.2]'' added "open all matching tiddlers..." link to search results output.
Based on a suggestion by UdoBorkowski.
''2005.12.10 [1.3.1]'' added "discard search results" link to end of search list tiddler output for quick self-removal of 'SearchResults' tiddler.
''2005.12.01 [1.3.0]'' added chkSearchIncremental to enable/disable 'incremental' searching (i.e., search after each keystroke) (default is ENABLED).
added handling for Enter key so it can be used to start a search.
Based on a suggestion by LyallPearce
''2005.11.25 [1.2.1]'' renamed from SearchTitleOrTextPlugin to SearchOptionsPlugin
''2005.11.25 [1.2.0]'' added chkSearchList option
Based on a suggestion by RodneyGomes
''2005.10.19 [1.1.0]'' added chkSearchTitlesFirst option.
Based on a suggestion by ChristianHauck
''2005.10.18 [1.0.0]'' Initial Release
Based on a suggestion by LyallPearce.
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].
<<<
!!!!!Code
***/
//{{{
version.extensions.searchOptions = {major: 2, minor: 6, revision: 1, date: new Date(2007,2,17)};
//}}}
//{{{
if (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=true;
if (config.options.chkSearchText==undefined) config.options.chkSearchText=true;
if (config.options.chkSearchTags==undefined) config.options.chkSearchTags=true;
if (config.options.chkSearchFields==undefined) config.options.chkSearchFields=true;
if (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=false;
if (config.options.chkSearchList==undefined) config.options.chkSearchList=false;
if (config.options.chkSearchByDate==undefined) config.options.chkSearchByDate=false;
if (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=true;
if (config.options.chkSearchShadows==undefined) config.options.chkSearchShadows=false;
if (config.optionsDesc) {
config.optionsDesc.chkSearchTitles="Search in tiddler titles";
config.optionsDesc.chkSearchText="Search in tiddler text";
config.optionsDesc.chkSearchTags="Search in tiddler tags";
config.optionsDesc.chkSearchFields="Search in tiddler data fields";
config.optionsDesc.chkSearchShadows="Search in shadow tiddlers";
config.optionsDesc.chkSearchTitlesFirst="Search results show title matches first";
config.optionsDesc.chkSearchList="Search results show list of matching tiddlers";
config.optionsDesc.chkSearchByDate="Search results sorted by modification date ";
config.optionsDesc.chkSearchIncremental="Incremental searching";
} else {
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTitles>> Search in tiddler titles";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchText>> Search in tiddler text";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTags>> Search in tiddler tags";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchFields>> Search in tiddler data fields";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchShadows>> Search in shadow tiddlers";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTitlesFirst>> Search results show title matches first";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchList>> Search results show list of matching tiddlers";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchByDate>> Search results sorted by modification date ";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchIncremental>> Incremental searching";
}
if (config.macros.search.reportTitle==undefined) config.macros.search.reportTitle="SearchResults";
//}}}
//{{{
config.macros.search.onKeyPress = function(e)
{
if(!e) var e = window.event;
switch(e.keyCode)
{
case 13: // Ctrl-Enter
case 10: // Ctrl-Enter on IE PC
config.macros.search.doSearch(this);
break;
case 27: // Escape
this.value = "";
clearMessage();
break;
}
if (config.options.chkSearchIncremental) {
if(this.value.length > 2)
{
if(this.value != this.getAttribute("lastSearchText"))
{
if(config.macros.search.timeout)
clearTimeout(config.macros.search.timeout);
var txt = this;
config.macros.search.timeout = setTimeout(function() {config.macros.search.doSearch(txt);},500);
}
}
else
{
if(config.macros.search.timeout)
clearTimeout(config.macros.search.timeout);
}
}
}
//}}}
//{{{
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
var matches = store.search(highlightHack,config.options.chkSearchByDate?"modified":"title","excludeSearch");
if (config.options.chkSearchByDate) matches=matches.reverse(); // most recent changes first
var q = useRegExp ? "/" : "'";
clearMessage();
if (!matches.length) {
if (config.options.chkSearchList) discardSearchResults();
displayMessage(config.macros.search.failureMsg.format([q+text+q]));
} else {
if (config.options.chkSearchList)
reportSearchResults(text,matches);
else {
var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);
this.closeAllTiddlers(); story.displayTiddlers(null,titles);
displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
}
}
highlightHack = null;
}
//}}}
//{{{
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)
{
var candidates = this.reverseLookup("tags",excludeTag,false,sortField);
// scan for matching titles first...
var results = [];
if (config.options.chkSearchTitles) {
for(var t=0; t<candidates.length; t++)
if(candidates[t].title.search(searchRegExp)!=-1)
results.push(candidates[t]);
if (config.options.chkSearchShadows)
for (var t in config.shadowTiddlers)
if ((t.search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.push((new Tiddler()).assign(t,config.shadowTiddlers[t]));
}
// then scan for matching text, tags, or field data
for(var t=0; t<candidates.length; t++) {
if (config.options.chkSearchText && candidates[t].text.search(searchRegExp)!=-1)
results.pushUnique(candidates[t]);
if (config.options.chkSearchTags && candidates[t].tags.join(" ").search(searchRegExp)!=-1)
results.pushUnique(candidates[t]);
if (config.options.chkSearchFields && store.forEachField!=undefined) // requires TW2.1 or above
store.forEachField(candidates[t],
function(tid,field,val) { if (val.search(searchRegExp)!=-1) results.pushUnique(candidates[t]); },
true); // extended fields only
}
// then check for matching text in shadows
if (config.options.chkSearchShadows)
for (var t in config.shadowTiddlers)
if ((config.shadowTiddlers[t].search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.pushUnique((new Tiddler()).assign(t,config.shadowTiddlers[t]));
// if not 'titles first', or sorting by modification date, re-sort results to so titles, text, tag and field matches are mixed together
if(!sortField) sortField = "title";
var bySortField=function (a,b) {if(a[sortField] == b[sortField]) return(0); else return (a[sortField] < b[sortField]) ? -1 : +1; }
if (!config.options.chkSearchTitlesFirst || config.options.chkSearchByDate) results.sort(bySortField);
return results;
}
//}}}
// // ''REPORT GENERATOR''
//{{{
if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
{
var title=config.macros.search.reportTitle
var q = config.options.chkRegExpSearch ? "/" : "'";
var body="\n";
// summary: nn tiddlers found matching '...', options used
body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\n";
body+="^^//searched in:// ";
body+=(config.options.chkSearchTitles?"''titles'' ":"");
body+=(config.options.chkSearchText?"''text'' ":"");
body+=(config.options.chkSearchTags?"''tags'' ":"");
body+=(config.options.chkSearchFields?"''fields'' ":"");
body+=(config.options.chkSearchShadows?"''shadows'' ":"");
if (config.options.chkCaseSensitiveSearch||config.options.chkRegExpSearch) {
body+=" //with options:// ";
body+=(config.options.chkCaseSensitiveSearch?"''case sensitive'' ":"");
body+=(config.options.chkRegExpSearch?"''text patterns'' ":"");
}
body+="^^";
// numbered list of links to matching tiddlers
body+="\n<<<";
for(var t=0;t<matches.length;t++) {
var date=config.options.chkSearchByDate?(matches[t].modified.formatString('YYYY.0MM.0DD 0hh:0mm')+" "):"";
body+="\n# "+date+"[["+matches[t].title+"]]";
}
body+="\n<<<\n";
// open all matches button
body+="<html><input type=\"button\" href=\"javascript:;\" ";
body+="onclick=\"story.displayTiddlers(null,["
for(var t=0;t<matches.length;t++)
body+="'"+matches[t].title.replace(/\'/mg,"\\'")+"'"+((t<matches.length-1)?", ":"");
body+="],1);\" ";
body+="accesskey=\"O\" ";
body+="value=\"open all matching tiddlers\"></html> ";
// discard search results button
body+="<html><input type=\"button\" href=\"javascript:;\" ";
body+="onclick=\"story.closeTiddler('"+title+"'); store.deleteTiddler('"+title+"'); store.notify('"+title+"',true);\" ";
body+="value=\"discard "+title+"\"></html>";
// search again
body+="\n\n----\n";
body+="<<search \""+text+"\">>\n";
body+="<<option chkSearchTitles>>titles ";
body+="<<option chkSearchText>>text ";
body+="<<option chkSearchTags>>tags";
body+="<<option chkSearchFields>>fields";
body+="<<option chkSearchShadows>>shadows";
body+="<<option chkCaseSensitiveSearch>>case-sensitive ";
body+="<<option chkRegExpSearch>>text patterns";
body+="<<option chkSearchByDate>>sort by date";
// create/update the tiddler
var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();
tiddler.set(title,body,config.options.txtUserName,(new Date()),"excludeLists excludeSearch temporary sys");
store.addTiddler(tiddler); story.closeTiddler(title);
// use alternate "search again" label in <<search>> macro
var oldprompt=config.macros.search.label;
config.macros.search.label="search again";
// render/refresh tiddler
story.displayTiddler(null,title,1);
store.notify(title,true);
// restore standard search label
config.macros.search.label=oldprompt;
}
if (!window.discardSearchResults) window.discardSearchResults=function()
{
// remove the tiddler
story.closeTiddler(config.macros.search.reportTitle);
store.deleteTiddler(config.macros.search.reportTitle);
}
//}}}
''13 tiddlers found matching '{{{Thoughts}}}'''
^^//searched in:// ''titles'' ''text'' ''tags'' ^^
<<<
# [[10-second effect]]
# [[21 Questions]]
# [[About My Top Selections]]
# [[Intro to my college website]]
# [[KubrickSidebar]]
# [[Lessons]]
# [[March 18, 2008]]
# [[MonkeyGTDPlugin]]
# [[Obama!]]
# [[Pick a Side]]
# [[Repetitive]]
# [[The Return from China]]
# [[Thoughts]]
<<<
<html><input type="button" href="javascript:;" onclick="story.displayTiddlers(null,['10-second effect', '21 Questions', 'About My Top Selections', 'Intro to my college website', 'KubrickSidebar', 'Lessons', 'March 18, 2008', 'MonkeyGTDPlugin', 'Obama!', 'Pick a Side', 'Repetitive', 'The Return from China', 'Thoughts'],1);" accesskey="O" value="open all matching tiddlers"></html> <html><input type="button" href="javascript:;" onclick="story.closeTiddler('SearchResults'); store.deleteTiddler('SearchResults');" value="discard SearchResults"></html>
----
<<search "Thoughts">> <<option chkSearchTitles>>titles <<option chkSearchText>>text <<option chkSearchTags>>tags<<option chkCaseSensitiveSearch>>case-sensitive <<option chkRegExpSearch>>text patterns
/***
| Name|SelectPalettePlugin|
| Description|Lets you easily change colour palette|
| Version|3.0 ($Rev: 1845 $)|
| Date|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|
| Source|http://mptw.tiddlyspot.com/#SelectPalettePlugin|
| Author|Simon Baird <simon.baird@gmail.com>|
| License|http://mptw.tiddlyspot.com/#TheBSDLicense|
/***
!!Usage:
{{{<<<selectPalette>>}}}
<<selectPalette>>
!!WARNING
Will overwrite your ColorPalette tiddler.
***/
//{{{
merge(config.macros,{
setPalette: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var paletteName = params[0] ? params[0] : tiddler.title;
createTiddlyButton(place,"apply","Apply this palette",function(e) {
config.macros.selectPalette.updatePalette(tiddler.title);
return false;
});
}
},
selectPalette: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
createTiddlyDropDown(place,this.onPaletteChange,this.getPalettes());
},
getPalettes: function() {
var result = [
{caption:"-palette-", name:""},
{caption:"(Default)", name:"(default)"}
];
var tagged = store.getTaggedTiddlers("palette","title");
for(var t=0; t<tagged.length; t++) {
var caption = tagged[t].title;
var sliceTitle = store.getTiddlerSlice(caption,"Name");
if (sliceTitle)
caption = sliceTitle;
result.push({caption:sliceTitle, name:tagged[t].title});
}
return result;
},
onPaletteChange: function(e) {
config.macros.selectPalette.updatePalette(this.value);
return true;
},
updatePalette: function(title) {
if (title != "") {
store.deleteTiddler("ColorPalette");
if (title != "(default)")
store.saveTiddler("ColorPalette","ColorPalette",store.getTiddlerText(title),
config.options.txtUserName,undefined,"sys");
this.refreshPalette();
if(config.options.chkAutoSave)
saveChanges(true);
}
},
refreshPalette: function() {
config.macros.refreshDisplay.onClick();
}
}
});
config.shadowTiddlers.OptionsPanel = "<<selectPalette>>\n\n" + config.shadowTiddlers.OptionsPanel;
//}}}
/***
''This plugin was previously called StyleChooser.''
|Name|SelectThemePlugin|
|Created by|SimonBaird and SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#SelectThemePlugin|
|Version|1.2.3|
|Requires|~TW2.x|
!Description
*An alternative style switcher, can be used to switch just stylesheets and/or pagetemplates, or a combination of both (a theme)
*you can add your own stylesheets and pagetemplates, or use a ThemePack, like BigThemePack.
!Usage
* You have to have fetch or create some styleSheets and pageTemplates to use this plugin.
**You can either get a ThemePack like BigThemePack which automatically adds themes to ThemeSelect.
**or create tiddlers with styleSheets and pageTemplates and tag them styleSheets and pageTemplates respectively.
* Put {{{<<themeSelect style 'Select theme'>>}}} in your SideBarOptions.
!Creating Theme Packs
*You can create your own theme pack if you like. Instructions can be found [[here.|CreateThemePack]]
!History
* 15-May-06, v1.2.3, added paramifier so you can put theme on url, eg http://www.somewhere.com/twfile.html#theme:Berry2, thanks Clint (Simon).
* 28-Apr-o6, v1.2.2, fixed bug with opening TW after deleting themepacks. (Saq)
* 26-Apr-06, v1.2.1, more code optimization, dropdowns now updated on the fly. (Saq)
* 25-Apr-06, v1.2.0, added 3rd party ThemePack support, and made various other improvements.(Simon & Saq)
* 24-Apr-06, v1.1.0, added: no styles and default styles options,<<br>>support for ThemePack, support for tag variations(Saq)
* 21-Apr-06, v1.0.0, Reworked dropdowns to include option for pagetemplates (Saq)
* 21-Apr-06, v0.9.0, Rewrote and added Saq's lovely dropdown select (Simon)
* 20-Apr-06, v0.0.1, Basic switcher working (Simon)
!Examples
|!Source|!Output|h
|{{{<<themeSelect style>>}}} for a dropdown with StyleSheets|<<themeSelect style>>|
|{{{<<themeSelect pagetemplate>>}}} for a dropdown with PageTemplates|<<themeSelect pagetemplate>>|
|{{{<<themeSelect style customlabel>>}}} to use a customlabel|<<themeSelect style customlabel>>|
* When applying a stylesheet or template, it also looks for a template or stylesheet respectively based on naming convention, eg MyFunkyStyleSheet and MyFunkyPageTemplate.
!Notes
* See also http://www.tiddlytools.com/#SelectStyleSheetPlugin for a more feature-rich style sheet switcher
! Ideas
* do ViewTemplate also?
* Pretty up the [x] bit
!Code
***/
//{{{
// for compatibility with TW <2.0.9
if (!Array.prototype.contains)
Array.prototype.contains = function(item)
{
return this.find(item) != null;
};
// for compatibility with TW <2.0.9
if (!Array.prototype.containsAny)
Array.prototype.containsAny = function(items)
{
for(var i=0; i<items.length; i++)
if (this.contains(items[i]))
return true;
return false;
};
//}}}
//{{{
version.extensions.SelectTheme = { major: 1, minor: 2, revision: 3, date: new Date(2006,5,15),
source: "http://lewcid.googlepages.com/lewcid.html#SelectTheme"
};
config.SelectTheme = {
things: {
style: {
tag: ["StyleSheets","StyleSheet","styleSheet","styleSheets","stylesheet","stylesheets"],
theDefault: "StyleSheet",
suffix: "StyleSheet",
notify: refreshStyles,
cookie: "txtStyleSheet",
otherThing: "pagetemplate",
label: "Choose StyleSheet: ",
tooltip: "Choose a StyleSheet",
caseNone: { text:"None", title:"NoStyleSheet"},
caseDefault: { text:"Default", title:"StyleSheet" }
},
pagetemplate: {
tag: ["PageTemplates","PageTemplate","pageTemplates","pageTemplate","pagetemplate","pagetemplates"],
theDefault: "PageTemplate",
suffix: "PageTemplate",
notify: refreshPageTemplate,
cookie: "txtPageTemplate",
otherThing: "style",
label: "Choose PageTemplate: ",
tooltip: "Choose a PageTemplate",
caseNone: { text:"None", title:"NoPageTemplate"},
caseDefault: { text:"Default", title:"PageTemplate" }
}
},
specialCases: ["caseNone","caseDefault"]
};
TiddlyWiki.prototype.removeNotification = function(title,fn) {
for (var i=0;i<this.namedNotifications.length;i++)
if((this.namedNotifications[i].name == title) && (this.namedNotifications[i].notify == fn))
this.namedNotifications.splice(i,1); // counting on it only being there once
}
var things = config.SelectTheme.things;
var specialCases=config.SelectTheme.specialCases;
for (var t in things) {
// make sure we have a value
if (!config.options[things[t].cookie])
config.options[things[t].cookie] = things[t].theDefault;
// remove core notify
store.removeNotification(things[t].theDefault,things[t].notify);
// and add our one
store.addNotification(config.options[things[t].cookie],things[t].notify);
}
//checks to see if a tiddler exists in store or as a shadow.
TiddlyWiki.prototype.isTiddler= function (title)
{return store.tiddlerExists(title) || store.isShadowTiddler(title)}
//hijack core function & make sure template exists
window.applyPageTemplate_themeSelect=window.applyPageTemplate;
window.applyPageTemplate=function(title){
if(!store.isTiddler(title))
{title = things.pagetemplate.theDefault;}
applyPageTemplate_themeSelect(title);
}
TiddlyWiki.prototype.makeActiveTheme = function(what,title,alsoCheckOtherThing) {
var thing = things[what];
if (!store.isTiddler(title))
title = thing.theDefault;
var oldTitle = config.options[thing.cookie];
if (what == "style") {
// remove old style element from DOM
var oldStyleElement = document.getElementById(oldTitle);
oldStyleElement.parentNode.removeChild(oldStyleElement);
}
store.removeNotification(oldTitle,thing.notify);
store.addNotification(title,thing.notify);
store.notify(title);
config.options[thing.cookie] = title;
saveOptionCookie(thing.cookie);
if (alsoCheckOtherThing)
this.makeActiveTheme(thing.otherThing,
title.replace(new RegExp(thing.suffix+"$"),"") + things[thing.otherThing].suffix,
false);
};
config.shadowTiddlers.NoStyleSheet = "";
config.shadowTiddlers.NoPageTemplate = config.shadowTiddlers.PageTemplate;
function switchTheme(e){
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var theLink = theTarget;
var switchTo= theLink.getAttribute("switchTo");
var mode = theLink.getAttribute("mode");
if ((config.options[things[mode].cookie])!=switchTo)
{store.makeActiveTheme(mode,switchTo,true);};
return(false);
}
config.macros.themeSelect={};
config.macros.themeSelect.dropdownchar = (document.all?"▼":"▾");
config.macros.themeSelect.handler = function(place,macroName,params,wikifier,paramString,tiddler){
var arrow = config.macros.themeSelect.dropdownchar;
var mode = params[0];
var label = (params[1]?params[1]:things[mode].label) + arrow;
var cookie = (config.options[things[mode].cookie]);
var onclick = function(e)
{ if (!e) var e = window.event;
var popup = Popup.create(this);
var tagged=[];
store.forEachTiddler(function(title,tiddler) {
if ((tiddler.tags).containsAny(things[mode].tag)){
tagged.push(tiddler.title);}
});
//integrate ThemePacks
if (config.themes) {
// see what themes have been loaded...
for (var i=0;i<config.themes.length;i++) {
// see if there is one
var lookForThis = config.themes[i] + things[mode].suffix;
if (store.isShadowTiddler(lookForThis)) {
tagged.pushUnique(lookForThis);
}
}
tagged = tagged.sort();
}
//this function used later to create buttons
var createThemeButton = function(switchTo){
var theButton = createTiddlyButton(createTiddlyElement(popup,"li"),text,null,switchTheme,useClass);
theButton.setAttribute("switchTo",switchTo);
theButton.setAttribute("mode",mode);};
//create Buttons for None(shadow styles) & Default (StyleSheet)
// Default button is not created if StyleSheet doesnt exist.
for(var t=0; t<specialCases.length; t++){
var special = specialCases[t];
var text = things[mode][special].text;
var useClass = "tiddlyLinkExisting"; //redundant, optimize!
if ((things[mode][special].title==cookie)||(special=="caseNone"&&!store.isTiddler(cookie)))
{text+= " [x]";
useClass = "currentlySelected";}
if (!((special=="caseDefault")&&(!store.getTiddler(things[mode][special].title))))
createThemeButton(things[mode][special].title); }
//insert horizontal rule
createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
//create buttons for all other stylesheet tiddlers
for(var t=0; t<tagged.length; t++)
{ var useClass = "tiddlyLinkExisting";
var text = (tagged[t]).replace((things[mode].suffix),"");
if (tagged[t]==(cookie) )
{text+=" [x]"; useClass="currentlySelected";}
if ((tagged[t]!= (things[mode].theDefault))&&tagged[t]!= (things[mode].none))
{createThemeButton(tagged[t]);}}
Popup.show(popup,false);
e.cancelBubble = true;
if (e.stopPropagation)
e.stopPropagation();
return(false);
};
var createdropperButton = function(place){
var sp = createTiddlyElement(place,"span",null,"ThemeChooserButton");
var theDropDownBtn = createTiddlyButton(sp,label,things[mode].tooltip,onclick);
};
createdropperButton(place);
};
setStylesheet(".popup li a.currentlySelected {background:#ccc;color:black;font-weight:bold;}","currentlySelectedStyle"); // could do better probably...
config.macros.layoutChooser=config.macros.themeSelect;
//shadow tiddler to hold instructions for creating ThemePacks
config.shadowTiddlers.ThemePack='See http://simonbaird.com/mptw/#CreateThemePack';
config.macros.applyTheme = {handler: function (place,macroName,params,wikifier,paramString,tiddler) {
var theme = params[0];
var label = params[1]?params[1]:'Apply theme "' + theme + '"';
var tooltip = 'Apply the "'+theme+'" theme to this TiddlyWiki';
createTiddlyButton(place,label,tooltip,function() {
store.makeActiveTheme("style",theme+things.style.suffix,true);
});
}};
// this means you can put #theme:ThemeName in url. suggested by Clint
config.paramifiers.theme = {
onstart: function(themeName) {
store.makeActiveTheme("style",themeName+config.SelectTheme.things.style.suffix,true);
}
};
//}}}
<<search>><<closeAll>><<newTiddler>><<saveChanges>><<themeSelect style 'select theme '>><<tiddler TspotSidebar>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
<<tabs txtMainTab Timeline Timeline TabTimeline Tags 'All tags' TabTags All 'All tiddlers' TabAll>>
/***
This CSS by DaveBirss.
***/
/*{{{*/
.tabSelected {
background: [[ColorPalette::TBackground]];
}
.tabUnselected {
background: #eee;
}
#sidebar {
color: [[ColorPalette::Foreground]];
}
#sidebarOptions {
background: [[ColorPalette::TBackground]];
}
#sidebarOptions .button {
color: #999;
}
#sidebarOptions .button:hover {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::TBackground]];
border-color:white;
}
#sidebarOptions .button:active {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::TBackground]];
}
#sidebarOptions .sliderPanel {
background: transparent;
}
#sidebarOptions .sliderPanel A {
color: #999;
}
#sidebarOptions .sliderPanel A:hover {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::TBackground]];
}
#sidebarOptions .sliderPanel A:active {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::TBackground]];
}
.sidebarSubHeading {
color: [[ColorPalette::Foreground]];
}
#sidebarTabs {
background: [[ColorPalette::TBackground]];
}
#sidebarTabs .tabSelected {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::TBackground]];
border-top: solid 1px #ccc;
border-left: solid 1px #ccc;
border-right: solid 1px #ccc;
border-bottom: none;
}
#sidebarTabs .tabUnselected {
color: #999;
background: #eee;
border-top: solid 1px #ccc;
border-left: solid 1px #ccc;
border-right: solid 1px #ccc;
border-bottom: none;
}
#sidebarTabs .tabContents {
background: [[ColorPalette::TBackground]];
}
#sidebarTabs .txtMoreTab .tabSelected {
background: [[ColorPalette::TBackground]];
}
#sidebarTabs .txtMoreTab .tabUnselected {
background: #eee;
}
#sidebarTabs .txtMoreTab .tabContents {
background: [[ColorPalette::TBackground]];
}
#sidebarTabs .tabContents .tiddlyLink {
color: #999;
}
#sidebarTabs .tabContents .tiddlyLink:hover {
background: [[ColorPalette::TBackground]];
color: [[ColorPalette::Foreground]];
}
#sidebarTabs .tabContents {
color: [[ColorPalette::Foreground]];
}
#sidebarTabs .button {
color: #666;
}
#sidebarTabs .tabContents .button:hover {
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::TBackground]];
}
/*}}}*/
The most likely condo candidate out of the ones I was considering just accepted an offer yesterday. Now I feel like I'm back where I started. . .with nothing.
I know I should be patient when looking for a house/condo, but I want this done as soon as possible. Funny how you're impatient when you're young and have all the time in the world, but you learn patience only as you get older.
I guess things are meant to work out in certain ways after all. No more than a week after my disappointment over a property sold to someone else, I find an almost too good to be true location that trumps the first. Of course, I pay for such an advantage, but it all seems to be worth it.
But all those who said buying real estate was a stressful process weren't kidding. Between issues with the inspection, mortgage lenders, and a landlord who seems determined to not let me leave, let's just say it hasn't been the most blissful two weeks in the world.
But whenever something is getting me down, I try to fastforward my life a bit. For instance, when you're standing at the end of a long line, it seems like it will take forever. But then when you get to the front, you can look back and say to yourself, "I remember when I was all the way back there. I thought I'd never make it, but here I am." I'm trying to focus on the feeling of accomplishment I'll get when I look back at early November from mid-December. Here we go.
/***
''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''
|Name|SplashScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#SplashScreenPlugin|
|Version|0.21 |
|Requires|~TW2.08+|
!Description:
Provides a simple splash screen that is visible while the TW is loading.
!Installation
Copy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.
!Customizing
Once the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.
!History
* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.
* 26-06-06 : version 0.2, first release
!Code
***/
//{{{
var old_lewcid_splash_restart=restart;
restart = function()
{ if (document.getElementById("SplashScreen"))
document.getElementById("SplashScreen").style.display = "none";
if (document.getElementById("contentWrapper"))
document.getElementById("contentWrapper").style.display = "block";
old_lewcid_splash_restart();
if (splashScreenInstall)
{if(config.options.chkAutoSave)
{saveChanges();}
displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");
}
}
var oldText = store.getTiddlerText("MarkupPreHead");
if (oldText.indexOf("SplashScreen")==-1)
{var siteTitle = store.getTiddlerText("SiteTitle");
var splasher='\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';
if (! store.tiddlerExists("MarkupPreHead"))
{var myTiddler = store.createTiddler("MarkupPreHead");}
else
{var myTiddler = store.getTiddler("MarkupPreHead");}
myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);
store.setDirty(true);
var splashScreenInstall = true;
}
//}}}
/***
http://tiddlystyles.com/#theme:Kubrick
!General Rules
***/
/*{{{*/
a,
.button{
color: [[ColorPalette::Link]];
border: 0;
text-decoration: none;
background: transparent;
}
a:hover,
.button:hover{
background: transparent;
text-decoration: underline;
color: [[ColorPalette::LinkHover]];
}
body {
font-size: 62.5%; /* Resets 1em to 10px */
font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
background-color: [[ColorPalette::BBC]];
color: [[ColorPalette::Foreground]];
background: [[ColorPalette::Background]];
margin: 0 auto;
}
#contentWrapper{
background: transparent [[ColorPalette::CBackground]] repeat-y 0px 0px;
border: 0;
margin: 0 auto;
width: 760px;
}
/*}}}*/
/***
!Header Rules
***/
/*{{{*/
.titleLine{
margin: 80px auto 0em;
padding: 0;
width: 745px;
text-align: center;
color: [[ColorPalette::Titles]];
}
.siteTitle{
font-weight: bold;
}
.siteTitle a, .siteSubtitle a{
color: [[ColorPalette::Titles]];
}
.siteTitle a:hover, .siteSubtitle a:hover{
text-decoration: underline;
}
.siteSubtitle{
display: block;
margin: .5em auto 1em;
}
.header {
background: [[ColorPalette::CHeader]] no-repeat bottom center;
margin: 0;
padding: 1px;
height: 198px;
width: 758px;
}
/*}}}*/
/***
!Footer Styles
***/
/*{{{*/
#contentFooter {
text-align: center;
clear: both;
background: [[ColorPalette::CFooter]] no-repeat bottom;
border: none;
padding: 2em;
height: 3em;
}
/*}}}*/
/***
!Sidebar styles /% ============================================== %/
***/
/*{{{*/
#sidebar{
margin: 1em 2em 0 0;
position: static;
float: right;
}
#sidebar a,
#sidebar a:hover{
border: 0;
}
#sidebar h1{
font-size: 1.4em;
font-weight: bold;
margin: 0;
background: transparent;
color: [[ColorPalette::SideTit]]
}
#sidebar ul{
padding: 0;
margin: 0 0 0 1em;
}
#sidebar li{
list-style: none;
}
#sidebar li:before{
color: [[ColorPalette::SideTit]]
content: "\00BB \0020";
}
#sidebar, #mainMenu, #sideBarOptions{
width: 200px;
text-align: left;
}
#mainMenu{
position: static;
}
/*}}}*/
/***
!Sidebar search styles /% ======================================== %/
***/
/*{{{*/
#sidebarSearch{
margin: 0 0 0 10px;
width: 145px;
}
#sidebarSearch input{
font-size: 1em;
width: 100px;
}
#sidebarSearch .button{
float: right;
margin-top: 1px;
}
/*}}}*/
/***
!Sidebar option styles
***/
/*{{{*/
#sidebarOptions h1{
font-size: 1.3em;
}
#sidebarOptions .sliderPanel a:before,
#sidebarTabs li:before{
content: "";
}
#sidebarOptions .sliderPanel{
background-color: transparent;
font-size: 1em;
margin: 0;
}
#sidebarOptions a{
border: 0;
}
/*}}}*/
/***
!Sidebar tab styles
***/
/*{{{*/
#sidebarTabs .tab,
#sidebarTabs .tab:hover{
border: 1px solid [[ColorPalette::SideMen]];
text-decoration: none;
}
#sidebarTabs .tabSelected{
background: [[ColorPalette::SideMen]];
color: [[ColorPalette::TabSelectedColor]];
}
#sidebarTabs .tabUnselected{
background: [[ColorPalette::SideBkg]];
color: [[ColorPalette::SideColor]];
}
#sidebarTabs .tabContents{
background: [[ColorPalette::SideMenuBackground]];
color: [[ColorPalette::SideColor]];
border: 1px solid [[ColorPalette::SideMen]];
width: 95%;
-moz-border-radius: 2em;
}
#sidebarTabs .tabContents a{
color: [[ColorPalette::PHover]];
-moz-border-radius: 2em;
}
#sidebarTabs .tabContents a:hover{
color: [[ColorPalette::LinkHover]];
-moz-border-radius: 2em;
}
#sidebarTabs a.tabSelected:hover{
cursor: default;
}
#sidebarTabs .txtMoreTab .tab{
border: 1px solid [[ColorPalette::SideBrd]];
color: [[ColorPalette::SideColor]];
}
#sidebarTabs .txtMoreTab .tabSelected{
background: [[ColorPalette::SideBrd]];
color: [[ColorPalette::SideColor]];
}
#sidebarTabs .txtMoreTab .tabSelected:hover{
background: [[ColorPalette::SideBrd]];
color: [[ColorPalette::SideColor]];
}
#sidebarTabs .txtMoreTab .tabUnselected{
background: [[ColorPalette::SideMen]];
color: [[ColorPalette::SideColor]];
}
#contentWrapper #sidebar .txtMoreTab .tabUnselected:hover,#contentWrapper #displayArea .txtMoreTab .tabUnselected:hover{
color: [[ColorPalette::SideColor]];
}
#contentWrapper .txtMoreTab .tabContents{
background: [[ColorPalette::SideBrd]];
color: [[ColorPalette::SideColor]];
border: 1px solid [[ColorPalette::SideBrd]];
}
/*}}}*/
/***
!Message area styles /% ========================================== %/
***/
/*{{{*/
#messageArea {
background-color: [[ColorPalette::PBackground]];
border: 1px solid [[ColorPalette::SideMen]];
color: [[ColorPalette::Toolbar]];
margin: 0 1em;
font-size: .8em;
}
#messageArea a:link{
color: [[ColorPalette::SideBrd]];
}
#messageArea a:hover{
color: [[ColorPalette::PHover]];
}
#messageArea .messageToolbar .button{
border: 1px solid [[ColorPalette::SideMen]];
color: [[ColorPalette::SideBrd]];
text-decoration: none;
}
#messageArea .messageToolbar .button:hover{
border: 1px solid [[ColorPalette::MBorder]];
color: [[ColorPalette::MBorder]];
}
/*}}}*/
/***
!Popup styles /% ================================================ %/
***/
/*{{{*/
#popup{
padding: 0;
background: [[ColorPalette::PBackground]];
border: 1px solid [[ColorPalette::SideMen]];
color: [[ColorPalette::SideColor]];
}
#popup a{
color: [[ColorPalette::PHover]];
font-weight: normal;
}
#popup a:hover{
color: [[ColorPalette::HoverMen]];
background: [[ColorPalette::PopBkg]];
text-decoration: none;
}
/*}}}*/
/***
!Tiddler display styles /% ====================================== %/
***/
/*{{{*/
#displayArea{
margin: 1em 18em 1em 1em;
text-align: left;
font-size: 1.2em;
}
h1, h2, h3, h4, h5, .title{
font-family: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
color: [[ColorPalette::TitTies]];
padding: 0;
}
.viewer h1,.viewer h2,.viewer h3,.viewer h4,.viewer h5,.viewer h6{
background: transparent;
border-bottom: 1px dotted [[ColorPalette::SideMen]];
}
.title{
font-size: 1.6em;
}
.subtitle{
color: [[ColorPalette::MBorder]];
font-size: .9em;
}
.toolbar{
font-size: .8em;
visibility:hidden;
}
.selected .toolbar {
visibility:visible;
}
.toolbar a:link,.toolbar a:visited{
background: [[ColorPalette::SideBkg]];
border: 1px solid [[ColorPalette::SideMen]];
color: [[ColorPalette::SideBrd]];
padding: 1px 3px;
margin: 0 .5em 0 0;
}
.toolbar a.button:hover{
background: [[ColorPalette::Buttonhover]];
border: 1px solid [[ColorPalette::Toolbar]];
color: [[ColorPalette::PHover]];
text-decoration: none;
}
.viewer a.tiddlyLinkNonExisting:link{
color: [[ColorPalette::DNE]];
font-style: normal;
}
.viewer a.tiddlyLinkNonExisting:hover{
text-decoration: underline;
}
.viewer a.tiddlyLinkExisting:link,#displayArea .viewer a.externalLink{
font-weight: normal;
color: [[ColorPalette::PHover]];
}
.viewer a.tiddlyLinkExisting:hover,.viewer a.externalLink:hover{
color: [[ColorPalette::LinkHover]];
text-decoration: underline;
}
.viewer .button{
border: 0;
}
.editor {
font-size: 8pt;
color: [[ColorPalette::Editor]];
font-weight: normal;
}
.editor input, .editor textarea {
display: block;
font: 11px/110% "Andale Mono", "Monaco", "Lucida Console", "Courier New", monospace;
margin: 0 0 10px 0;
border: 1px inset [[ColorPalette::SideColor]];
padding: 2px 0;
}
.footer, .footer a.button,.editorFooter, .footer a.button{
color: [[ColorPalette::SideBrd]];
}
.selected .footer,.selected .footer a{
color: [[ColorPalette::MBorder]];
}
.selected .footer a.button,.selected .editorFooter a.button{
color: [[ColorPalette::PHover]];
}
.footer a.button:hover,.editorFooter a.button:hover{
color: [[ColorPalette::LinkHover]];
background: transparent;
}
.tagClear{
clear: none;
}
/*}}}*/
#hoverMenu .button, #hoverMenu .tiddlyLink {background: [[ColorPalette::HoverMenBack]]; }
.viewer hr {
border: 0;
border-top: dashed 1px [[ColorPalette::Foreground]];
color: [[ColorPalette::Foreground]];
}
.viewer table {
border: 2px solid [[ColorPalette::Foreground]];
}
.viewer th, thead td {
background: #cccccc;
border: 1px solid [[ColorPalette::Foreground]];
color: #fff;
}
.viewer td, .viewer tr {
border: 1px solid [[ColorPalette::Foreground]];
}
/*{{{*/
@media print {
#mainMenu, #sidebar, #topMenu, #messageArea, .toolbar, #backstageButton, #hoverMenu {display: none ! important;}
#displayArea {margin: 0em 0em 0em 0em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
body {
background: #fff;
color: #000;
font-size: 6.2pt;
font-family: "Lucida Grande", "Bitstream Vera Sans", Helvetica,
Verdana, Arial, sans-serif;
width: 7.4cm;
height: 12.5cm;
margin-left: 0.1cm
}
}
/*}}}*/
About 4 weeks until the CFA. Then I get my life back. Sorry if I've been MIA. It's that time of year.
<<forEachTiddler
where 'tiddler.tags.contains("entry")
>>
<<allTagsExcept systemConfig excludeLists systemTiddlers sys future StyleSheet Themes lewcidExtension entry current CSS excludeSearch plugin PageTemplate Plugins patch past palette stylesheets Settings sortByModified>>
<<timeline better:true onlyTag:entry sortBy:created firstDay:20061201 maxEntries:30>>
<<tagCloud systemConfig systemTiddlers entry sys CSS excludeLists excludeSearch lewcidExtension palette patch plugin Plugins Settings current past future PageTemplate StyleSheet Themes stylesheets sortByModified plugininfo>>
/***
''Plugin:'' Tag Cloud Macro
''Author:'' Clint Checketts
''Source URL:''
!Usage
<<tagCloud>>
!Code
***/
//{{{
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: "No tag cloud created because there are no tags.",
tooltip: "%1 tiddlers tagged with '%0'"
};
config.macros.tagCloud.handler = function(place,macroName,params) {
var tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);
var tags = store.getTags();
for (var t=0; t<tags.length; t++) {
for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) tags[t][0] = "";
}
if(tags.length == 0)
createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);
//Findout the maximum number of tags
var mostTags = 0;
for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
if (tags[t][1] > mostTags) mostTags = tags[t][1];
}
//divide the mostTags into 4 segments for the 6 different tagCloud sizes
var tagSegment = mostTags / 4;
for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
var tagCloudElement = createTiddlyElement(tagCloudWrapper,"span",null,null,null);
tagCloudWrapper.appendChild(document.createTextNode(" "));
var theTag = createTiddlyButton(tagCloudElement,tags[t][0],this.tooltip.format(tags[t]),onClickTag,"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));
theTag.setAttribute("tag",tags[t][0]);
}
};
setStylesheet(".tagCloud span{height: 1.8em;margin: 3px;}.tagCloud1{font-size: 1.2em;}.tagCloud2{font-size: 1.4em;}.tagCloud3{font-size: 1.6em;}.tagCloud4{font-size: 1.8em;}.tagCloud5{font-size: 1.8em;font-weight: bold;}","tagCloudsStyles");
//}}}
/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.chooseTemplateForTiddler()|
|Description|use alternative ViewTemplate/EditTemplate for tiddler's tagged with specific tag values|
The core function, "story.chooseTemplateForTiddler(title,template)" is essentially a "pass-thru" that returns the same template it was given, and is provided by the core so that plugins can customize the template selection logic to select alternative templates, based on whatever programmatic criteria is appropriate. This tweak extends story.chooseTemplateForTiddler() so that ''whenever a tiddler is marked with a specific tag value, it can be viewed and/or edited using alternatives to the standard tiddler templates.''
!!!!!Usage
<<<
Each alternative template is associated with a specific tiddler tag value by using that tag value as a prefix added to the standard TiddlyWiki template titles, [[ViewTemplate]] and [[EditTemplate]].
For example, any tiddlers that are tagged with ''<<tag media>>'' will look for alternative templates named [[mediaViewTemplate]] and [[mediaEditTemplate]]. Additionally, in order to find templates that have proper WikiWord tiddler titles (e.g., [[MediaViewTemplate]] and [[MediaEditTemplate]]), the plugin will also attempt to use a capitalized form of the tag value (e.g., ''Media'') as a prefix. //This capitalization is for comparison purposes only and will not alter the actual tag values that are stored in the tiddler.//
If no matching alternative template can be found by using //any// of the tiddler's tags (either "as-is" or capitalized), the tiddler defaults to using the appropriate standard [[ViewTemplate]] or [[EditTemplate]] definition.
''To add your own custom templates:''
>First, decide upon a suitable tag keyword to uniquely identify your custom templates and create custom view and/or edit templates using that keyword as a prefix (e.g., "KeywordViewTemplate" and "KeywordEditTemplate"). Then, simply create a tiddler and tag it with your chosen keyword... that's it! As long as the tiddler is tagged with your keyword, it will be displayed using the corresponding alternative templates. If you remove the tag or rename/delete the alternative templates, the tiddler will revert to using the standard viewing and editing templates.
<<<
!!!!!Examples
<<<
|Sample tiddler| tag | view template | edit template |
|[[MediaSample - QuickTime]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[MediaSample - Windows]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[CDSample]]| <<tag CD>> | [[CDViewTemplate]] | [[CDEditTemplate]] |
|<<newTiddler label:"create new task..." title:SampleTask tag:task text:"Type some text and then press DONE to view the task controls">> | <<tag task>> | [[TaskViewTemplate]] | [[EditTemplate]] |
//(note: if these samples are not present in your document, please visit// http://www.TiddlyTools.com/ //to view these sample tiddlers on-line)//
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
[[TaggedTemplateTweak]]
<<<
!!!!!Revision History
<<<
''2007.06.23 [1.1.0]'' re-written to use automatic 'tag prefix' search instead of hard coded check for each tag. Allows new custom tags to be used without requiring code changes to this plugin.
''2007.06.11 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by Eric L Shulman / ELS Design Studios
<<<
!!!!!Code
***/
//{{{
version.extensions.taggedTemplate= {major: 1, minor: 1, revision: 0, date: new Date(2007,6,18)};
Story.prototype.taggedTemplate_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler
Story.prototype.chooseTemplateForTiddler = function(title,template)
{
// get default template from core
var template=this.taggedTemplate_chooseTemplateForTiddler.apply(this,arguments);
// if the tiddler to be rendered doesn't exist yet, just return core result
var tiddler=store.getTiddler(title); if (!tiddler) return template;
// look for template whose prefix matches a tag on this tiddler
for (t=0; t<tiddler.tags.length; t++) {
var tag=tiddler.tags[t];
if (store.tiddlerExists(tag+template)) { template=tag+template; break; }
// try capitalized tag (to match WikiWord template titles)
var cap=tag.substr(0,1).toUpperCase()+tag.substr(1);
if (store.tiddlerExists(cap+template)) { template=cap+template; break; }
}
return template;
}
//}}}
/***
|Name|TagglyListPlugin|
|Created by|SimonBaird|
|Location|http://simonbaird.com/mptw/#TagglyListPlugin|
|Version|1.1.1 6-Mar-06|
|Requires|See TagglyTagging|
!History
* 1.1.1 (6-Mar-2006) fixed bug with refreshAllVisible closing tiddlers being edited. Thanks Luke Blanshard.
***/
/***
!Setup and config
***/
//{{{
version.extensions.TagglyListPlugin = {
major: 1, minor: 1, revision: 1,
date: new Date(2006,3,6),
source: "http://simonbaird.com/mptw/#TagglyListPlugin"
};
config.macros.tagglyList = {};
config.macros.tagglyListByTag = {};
config.macros.tagglyListControl = {};
config.macros.tagglyListWithSort = {};
config.macros.hideSomeTags = {};
// change this to your preference
config.macros.tagglyListWithSort.maxCols = 6;
config.macros.tagglyList.label = "Tagged as %0:";
// the default sort options. set these to your preference
config.macros.tagglyListWithSort.defaults = {
sortBy:"title", // title|created|modified
sortOrder: "asc", // asc|desc
hideState: "show", // show|hide
groupState: "nogroup", // nogroup|group
numCols: 1
};
// these tags will be ignored by the grouped view
config.macros.tagglyListByTag.excludeTheseTags = [
"systemConfig",
"TiddlerTemplates"
];
config.macros.tagglyListControl.tags = {
title:"sortByTitle",
modified: "sortByModified",
created: "sortByCreated",
asc:"sortAsc",
desc:"sortDesc",
hide:"hideTagged",
show:"showTagged",
nogroup:"noGroupByTag",
group:"groupByTag",
cols1:"list1Cols",
cols2:"list2Cols",
cols3:"list3Cols",
cols4:"list4Cols",
cols5:"list5Cols",
cols6:"list6Cols",
cols7:"list7Cols",
cols8:"list8Cols",
cols9:"list9Cols"
}
// note: should match config.macros.tagglyListControl.tags
config.macros.hideSomeTags.tagsToHide = [
"sortByTitle",
"sortByCreated",
"sortByModified",
"sortDesc",
"sortAsc",
"hideTagged",
"showTagged",
"noGroupByTag",
"groupByTag",
"list1Cols",
"list2Cols",
"list3Cols",
"list4Cols",
"list5Cols",
"list6Cols",
"list7Cols",
"list8Cols",
"list9Cols",
"startCollapsed",
"NextLook",
"Details","sys","entry","current","past","future",
"Next","1-Urgent","TaskDash","2-Now","3-Soon","4-Someday","TaskDashboard","entry"
];
//}}}
/***
!Utils
***/
//{{{
// from Eric
function isTagged(title,tag) {
var t=store.getTiddler(title); if (!t) return false;
return (t.tags.find(tag)!=null);
}
// from Eric
function toggleTag(title,tag) {
var t=store.getTiddler(title); if (!t || !t.tags) return;
if (t.tags.find(tag)==null) t.tags.push(tag);
else t.tags.splice(t.tags.find(tag),1);
}
function addTag(title,tag) {
var t=store.getTiddler(title); if (!t || !t.tags) return;
t.tags.push(tag);
}
function removeTag(title,tag) {
var t=store.getTiddler(title); if (!t || !t.tags) return;
if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);
}
// from Udo
Array.prototype.indexOf = function(item) {
for (var i = 0; i < this.length; i++) {
if (this[i] == item) {
return i;
}
}
return -1;
};
Array.prototype.contains = function(item) {
return (this.indexOf(item) >= 0);
}
//}}}
/***
!tagglyList
displays a list of tagged tiddlers.
parameters are sortField and sortOrder
***/
//{{{
// not used at the moment...
function sortedListOfOtherTags(tiddler,thisTag) {
var list = tiddler.tags.concat(); // so we are working on a clone..
for (var i=0;i<config.macros.hideSomeTags.tagsToHide.length;i++) {
if (list.find(config.macros.hideSomeTags.tagsToHide[i]) != null)
list.splice(list.find(config.macros.hideSomeTags.tagsToHide[i]),1); // remove hidden ones
}
for (var i=0;i<config.macros.tagglyListByTag.excludeTheseTags.length;i++) {
if (list.find(config.macros.tagglyListByTag.excludeTheseTags[i]) != null)
list.splice(list.find(config.macros.tagglyListByTag.excludeTheseTags[i]),1); // remove excluded ones
}
list.splice(list.find(thisTag),1); // remove thisTag
return '[[' + list.sort().join("]] [[") + ']]';
}
function sortHelper(a,b) {
if (a == b) return 0;
else if (a < b) return -1;
else return +1;
}
config.macros.tagglyListByTag.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
var sortBy = params[0] ? params[0] : "title";
var sortOrder = params[1] ? params[1] : "asc";
var result = store.getTaggedTiddlers(tiddler.title,sortBy);
if (sortOrder == "desc")
result = result.reverse();
var leftOvers = []
for (var i=0;i<result.length;i++) {
leftOvers.push(result[i].title);
}
var allTagsHolder = {};
for (var i=0;i<result.length;i++) {
for (var j=0;j<result[i].tags.length;j++) {
if (
result[i].tags[j] != tiddler.title // not this tiddler
&& config.macros.hideSomeTags.tagsToHide.find(result[i].tags[j]) == null // not a hidden one
&& config.macros.tagglyListByTag.excludeTheseTags.find(result[i].tags[j]) == null // not excluded
) {
if (!allTagsHolder[result[i].tags[j]])
allTagsHolder[result[i].tags[j]] = "";
allTagsHolder[result[i].tags[j]] += "**[["+result[i].title+"]]\n";
if (leftOvers.find(result[i].title) != null)
leftOvers.splice(leftOvers.find(result[i].title),1); // remove from leftovers. at the end it will contain the leftovers...
}
}
}
var allTags = [];
for (var t in allTagsHolder)
allTags.push(t);
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 markup = "";
if (sortOrder == "desc") {
allTags.reverse();
}
else {
// leftovers first...
for (var i=0;i<leftOvers.length;i++)
markup += "*[["+leftOvers[i]+"]]\n";
}
for (var i=0;i<allTags.length;i++)
markup += "*[["+allTags[i]+"]]\n" + allTagsHolder[allTags[i]];
if (sortOrder == "desc") {
// leftovers last...
for (var i=0;i<leftOvers.length;i++)
markup += "*[["+leftOvers[i]+"]]\n";
}
wikify(markup,place);
}
config.macros.tagglyList.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
var sortBy = params[0] ? params[0] : "title";
var sortOrder = params[1] ? params[1] : "asc";
var numCols = params[2] ? params[2] : 1;
var result = store.getTaggedTiddlers(tiddler.title,sortBy);
if (sortOrder == "desc")
result = result.reverse();
var listSize = result.length;
var colSize = listSize/numCols;
var remainder = listSize % numCols;
var upperColsize;
var lowerColsize;
if (colSize != Math.floor(colSize)) {
// it's not an exact fit so..
lowerColsize = Math.floor(colSize);
upperColsize = Math.floor(colSize) + 1;
}
else {
lowerColsize = colSize;
upperColsize = colSize;
}
var markup = "";
var c=0;
var newTaggedTable = createTiddlyElement(place,"table");
var newTaggedBody = createTiddlyElement(newTaggedTable,"tbody");
var newTaggedTr = createTiddlyElement(newTaggedBody,"tr");
for (var j=0;j<numCols;j++) {
var foo = "";
var thisSize;
if (j<remainder)
thisSize = upperColsize;
else
thisSize = lowerColsize;
for (var i=0;i<thisSize;i++)
foo += ( "*[[" + result[c++].title + "]]\n"); // was using splitList.shift() but didn't work in IE;
var newTd = createTiddlyElement(newTaggedTr,"td",null,"tagglyTagging");
wikify(foo,newTd);
}
};
/* snip for later.....
//var groupBy = params[3] ? params[3] : "t.title.substr(0,1)";
//var groupBy = params[3] ? params[3] : "sortedListOfOtherTags(t,tiddler.title)";
//var groupBy = params[3] ? params[3] : "t.modified";
var groupBy = null; // for now. groupBy here is working but disabled for now.
var prevGroup = "";
var thisGroup = "";
if (groupBy) {
result.sort(function(a,b) {
var t = a; var aSortVal = eval(groupBy); var aSortVal2 = eval("t".sortBy);
var t = b; var bSortVal = eval(groupBy); var bSortVal2 = eval("t".sortBy);
var t = b; var bSortVal2 = eval(groupBy);
return (aSortVal == bSortVal ?
(aSortVal2 == bSortVal2 ? 0 : (aSortVal2 < bSortVal2 ? -1 : +1)) // yuck
: (aSortVal < bSortVal ? -1 : +1));
});
}
if (groupBy) {
thisGroup = eval(groupBy);
if (thisGroup != prevGroup)
markup += "*[["+thisGroup+']]\n';
markup += "**[["+t.title+']]\n';
prevGroup = thisGroup;
}
*/
//}}}
/***
!tagglyListControl
Use to make the sort control buttons
***/
//{{{
function getSortBy(title) {
var tiddler = store.getTiddler(title);
var defaultVal = config.macros.tagglyListWithSort.defaults.sortBy;
if (!tiddler) return defaultVal;
var usetags = config.macros.tagglyListControl.tags;
if (tiddler.tags.contains(usetags["title"])) return "title";
else if (tiddler.tags.contains(usetags["modified"])) return "modified";
else if (tiddler.tags.contains(usetags["created"])) return "created";
else return defaultVal;
}
function getSortOrder(title) {
var tiddler = store.getTiddler(title);
var defaultVal = config.macros.tagglyListWithSort.defaults.sortOrder;
if (!tiddler) return defaultVal;
var usetags = config.macros.tagglyListControl.tags;
if (tiddler.tags.contains(usetags["asc"])) return "asc";
else if (tiddler.tags.contains(usetags["desc"])) return "desc";
else return defaultVal;
}
function getHideState(title) {
var tiddler = store.getTiddler(title);
var defaultVal = config.macros.tagglyListWithSort.defaults.hideState;
if (!tiddler) return defaultVal;
var usetags = config.macros.tagglyListControl.tags;
if (tiddler.tags.contains(usetags["hide"])) return "hide";
else if (tiddler.tags.contains(usetags["show"])) return "show";
else return defaultVal;
}
function getGroupState(title) {
var tiddler = store.getTiddler(title);
var defaultVal = config.macros.tagglyListWithSort.defaults.groupState;
if (!tiddler) return defaultVal;
var usetags = config.macros.tagglyListControl.tags;
if (tiddler.tags.contains(usetags["group"])) return "group";
else if (tiddler.tags.contains(usetags["nogroup"])) return "nogroup";
else return defaultVal;
}
function getNumCols(title) {
var tiddler = store.getTiddler(title);
var defaultVal = config.macros.tagglyListWithSort.defaults.numCols; // an int
if (!tiddler) return defaultVal;
var usetags = config.macros.tagglyListControl.tags;
for (var i=1;i<=config.macros.tagglyListWithSort.maxCols;i++)
if (tiddler.tags.contains(usetags["cols"+i])) return i;
return defaultVal;
}
function getSortLabel(title,which) {
// TODO. the strings here should be definable in config
var by = getSortBy(title);
var order = getSortOrder(title);
var hide = getHideState(title);
var group = getGroupState(title);
if (which == "hide") return (hide == "show" ? "−" : "+"); // 0x25b8;
else if (which == "group") return (group == "group" ? "normal" : "grouped");
else if (which == "cols") return "cols±"; // ±
else if (by == which) return which + (order == "asc" ? "↓" : "↑"); // ↑ ↓
else return which;
}
function handleSortClick(title,which) {
var currentSortBy = getSortBy(title);
var currentSortOrder = getSortOrder(title);
var currentHideState = getHideState(title);
var currentGroupState = getGroupState(title);
var currentNumCols = getNumCols(title);
var tags = config.macros.tagglyListControl.tags;
// if it doesn't exist, lets create it..
if (!store.getTiddler(title))
store.saveTiddler(title,title,"",config.options.txtUserName,new Date(),null);
if (which == "hide") {
// toggle hide state
var newHideState = (currentHideState == "hide" ? "show" : "hide");
removeTag(title,tags[currentHideState]);
if (newHideState != config.macros.tagglyListWithSort.defaults.hideState)
toggleTag(title,tags[newHideState]);
}
else if (which == "group") {
// toggle hide state
var newGroupState = (currentGroupState == "group" ? "nogroup" : "group");
removeTag(title,tags[currentGroupState]);
if (newGroupState != config.macros.tagglyListWithSort.defaults.groupState)
toggleTag(title,tags[newGroupState]);
}
else if (which == "cols") {
// toggle num cols
var newNumCols = currentNumCols + 1; // confusing. currentNumCols is an int
if (newNumCols > config.macros.tagglyListWithSort.maxCols || newNumCols > store.getTaggedTiddlers(title).length)
newNumCols = 1;
removeTag(title,tags["cols"+currentNumCols]);
if (("cols"+newNumCols) != config.macros.tagglyListWithSort.defaults.groupState)
toggleTag(title,tags["cols"+newNumCols]);
}
else if (currentSortBy == which) {
// toggle sort order
var newSortOrder = (currentSortOrder == "asc" ? "desc" : "asc");
removeTag(title,tags[currentSortOrder]);
if (newSortOrder != config.macros.tagglyListWithSort.defaults.sortOrder)
toggleTag(title,tags[newSortOrder]);
}
else {
// change sortBy only
removeTag(title,tags["title"]);
removeTag(title,tags["created"]);
removeTag(title,tags["modified"]);
if (which != config.macros.tagglyListWithSort.defaults.sortBy)
toggleTag(title,tags[which]);
}
store.setDirty(true); // save is required now.
story.refreshTiddler(title,false,true); // force=true
}
config.macros.tagglyListControl.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
var onclick = function(e) {
if (!e) var e = window.event;
handleSortClick(tiddler.title,params[0]);
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return false;
};
createTiddlyButton(place,getSortLabel(tiddler.title,params[0]),"Click to change sort options",onclick,params[0]=="hide"?"hidebutton":"button");
}
//}}}
/***
!tagglyListWithSort
put it all together..
***/
//{{{
config.macros.tagglyListWithSort.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
if (tiddler && store.getTaggedTiddlers(tiddler.title).length > 0)
// todo make this readable
wikify(
"<<tagglyListControl hide>>"+
(getHideState(tiddler.title) != "hide" ?
'<html><span class="tagglyLabel">'+config.macros.tagglyList.label.format([tiddler.title])+' </span></html>'+
"<<tagglyListControl title>><<tagglyListControl modified>><<tagglyListControl created>><<tagglyListControl group>>"+(getGroupState(tiddler.title)=="group"?"":"<<tagglyListControl cols>>")+"\n" +
"<<tagglyList" + (getGroupState(tiddler.title)=="group"?"ByTag ":" ") + getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+" "+getNumCols(tiddler.title)+">>" // hacky
// + \n----\n" +
//"<<tagglyList "+getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+">>"
: ""),
place,null,tiddler);
}
//}}}
/***
!hideSomeTags
So we don't see the sort tags.
(note, they are still there when you edit. Will that be too annoying?
***/
//{{{
// based on tags.handler
config.macros.hideSomeTags.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
var theList = createTiddlyElement(place,"ul");
if(params[0] && store.tiddlerExists[params[0]])
tiddler = store.getTiddler(params[0]);
var lingo = config.views.wikified.tag;
var prompt = tiddler.tags.length == 0 ? lingo.labelNoTags : lingo.labelTags;
createTiddlyElement(theList,"li",null,"listTitle",prompt.format([tiddler.title]));
for(var t=0; t<tiddler.tags.length; t++)
if (!this.tagsToHide.contains(tiddler.tags[t])) // this is the only difference from tags.handler...
createTagButton(createTiddlyElement(theList,"li"),tiddler.tags[t],tiddler.title);
}
//}}}
/***
!Refresh everything when we save a tiddler. So the tagged lists never get stale. Is this too slow???
***/
//{{{
function refreshAllVisible() {
story.forEachTiddler(function(title,element) {
if (element.getAttribute("dirty") != "true")
story.refreshTiddler(title,false,true);
});
}
story.saveTiddler_orig_mptw = story.saveTiddler;
story.saveTiddler = function(title,minorUpdate) {
var result = this.saveTiddler_orig_mptw(title,minorUpdate);
refreshAllVisible();
return result;
}
store.removeTiddler_orig_mptw = store.removeTiddler;
store.removeTiddler = function(title) {
this.removeTiddler_orig_mptw(title);
refreshAllVisible();
}
//}}}
// // <html>▸▾−±</html>
/***
To use, add {{{[[TagglyTaggingStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also ViewTemplate, EditTemplate and TagglyTagging.
***/
/*{{{*/
.tagglyTagged li.listTitle { display:none;}
.tagglyTagged li { display: inline; font-size:90%; }
.tagglyTagged ul { margin:0px; padding:0px; }
.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 .tghide { display:inline; } */
.tagglyTagging { vertical-align: top; margin:0px; padding:0px; }
.tagglyTagging table { margin:0px; padding:0px; }
.tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }
.tagglyTagging .button, .tagglyTagging .hidebutton { color:#aaa; font-size:90%; border:0px; padding-left:0.3em;padding-right:0.3em;}
.tagglyTagging .button:hover, .hidebutton:hover { background:#eee; color:#888; }
.selected .tagglyTagging .button { display:inline; }
.tagglyTagging .hidebutton { color:white; } /* has to be there so it takes up space */
.selected .tagglyTagging .hidebutton { color:#aaa }
.tagglyLabel { color:#aaa; 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; }
/*}}}*/
[[The Amber Spyglass|http://www.amazon.com/Amber-Spyglass-Deluxe-Anniversary-Materials/dp/0375846735/ref=bxgy_cc_b_text_b/104-8747472-3895942?ie=UTF8&qid=1190919831&sr=1-3]]
Why was this so bad? What went wrong? I held out, hoping that the plot would pull it together and provide a satisfying finale, but it was completely anticlimactic. The ending dragged on for a third of the book (at least it felt that way). The final resolution didn't even feel conclusive. I think what most angered me about this book is that the series started off so well. It had all the potential in the world and it just wasted it.
The authors bias against religion was another one of this book's weak points. Instead of concentrating on making a compelling story, or subtly lacing the plot with his perspective, __The Amber Spyglass__ felt almost like a lecture on his opinions. And it doesn't help that I disagree.
This is the finale book in the trilogy. The previous books were [[The Golden Compass]] and [[The Subtle Knife]]
__Top 10 Songs__
1. How Good It Can Be - The 88
2. What A Wonderful World (ft Katie Melua) - Eva Cassidy
3. Bad - Michael Jackson
4. Heaven Can Wait - Michael Jackson
5. Caught By The River - Doves
6. Man In The Mirror - Michael Jackson
7. Out Of My Mind - Black Eyed Peas
8. Electric City - Black Eyed Peas
9. Pumpkin Soup - Kate Nash
10. Wow - Kylie Minogue
__Top 10 Artists__
1. Michael Jackson
2. Black Eyed Peas
3. The 88
4. Eva Cassidy
5. [[New Found Glory]]
6. Miri ~Ben-Ari
7. [[Linkin Park]]
8. Everclear
9. Doves
10. Oasis
[[About My Top Selections]]
[[The Golden Compass|http://www.amazon.com/Golden-Compass-Deluxe-Anniversary-Materials/dp/0375838309/ref=pd_bbs_sr_2/104-8747472-3895942?ie=UTF8&s=books&qid=1190919831&sr=1-2]]
I started this book after seeing the trailer for the movie coming out this winter. Reading the book gives me a very different picture of the story than the trailer did. I enjoyed it though. I liked the way the story was told so much from the perspective of the young character that it even showed how kids tend to be oblivious to details they either don't know or don't understand. Instead of outright explaining where, when, and how, the author slowly introduced new elements of the world as the story proceeded.
This is the first book in a trilogy. Although there is a definite plot arc to the book, a lot of things are left unresolved. But it ends in what I see as a satisfying cliffhanger.
The other two books are titled [[The Subtle Knife]] and [[The Amber Spyglass]]
I can't seem to get a break lately. Ok, that's relative. I'm talking more in relation to snowboarding. I was all set to go to Sunday River last weekend, but due to a number of circumstances, I had to call off the trip at the last minute. Very frustrating.
But this. Today. Arg. I made all the arrangements, planned around all the contingencies, got all the details in line. I got a great deal on a 3-day rental of an intermediate-size car ($23/day). They even upgraded me to an SUV free of charge. That's where everything went wrong.
The Ford Escape XLT. I noticed it was a little off on the ride home. I assumed that it just drove differently, and considering I was in the city, I thought maybe when I hit the open road, it would even out. No such luck. My brother and I woke up at 4 in the morning, got the car packed, and were out by 4:30 for the 3 hour drive. The car felt fine at first, but then started acting up again. It wouldn't shift gears. It would stall out at traffic lights. It almost never kicked into 3rd, and to confirm my troubles, the wrench light kicked on intermittently. It was an automatic car, so I know I'm not crazy. Maybe just crazy to have assumed that a well-respected car rental agency would give me a car that works. I couldn't top 40 MPH. We drove for about 15 minutes before deciding we had to turn back. The Ford Escape could barely escape Cambridge.
Interestingly enough, the last time my brother went to Sunday River, he got a concussion (long story). Now he thinks the mountain is cursed. He might be right.
''Update:'' Well I feel slightly vindicatted. I returned the car this morning, and they gave me a full refund (great service on that note). I was walking back to the subway station when I heard that familiar sound of an engine revving, but not kicking into gear (it was fresh on my mind because I had experienced it no less than 5 times in the 3 mile drive to the rental agency from my house). One of the guys who worked there was confirming my difficulties. He was sitting in a parking lot trying to get the car moving with little success. At least I'm not crazy.
<html><center><table style="width:auto;"><tr><td><a href="http://picasaweb.google.com/edmund.rogers/365?feat=embedwebsite#5300242163264109250"><img src="http://lh4.ggpht.com/_WYmcn3agL7k/SY4-KmTnusI/AAAAAAAAITw/Tpbx0C3vlc4/s400/38.jpg" /></a></td></tr><tr><td style="font-family:arial,sans-serif; font-size:11px; text-align:right">From <a href="http://picasaweb.google.com/edmund.rogers/365?feat=embedwebsite">365</a></td></tr></table></center></html>
The Kite Runner by Khaled Hosseini
__What I said before I read it__
I really didn't want to read this book. First off, I'm hesitant to read books just because everyone else is reading them. And how many people have I seen reading this book in the last year? The second reason is I wanted to read something more light-hearted. I heard that this was quite heavy. But I needed something to read and people said it was good, so I borrowed a copy, grabbed my iPod, bought some Crocs, and sat down to read it, __just like everybody else__.
__What I'm saying now__
The book was only 324 pages. I should have been able to get through that in a week at a leisurely pace. It took me two and a half weeks to finish.
First off, it's very well written. The characters are complete and the style is smooth.
But it's certainly not light reading. It became harder and harder to pick up this book because I always felt like another trauma was looming around the corner. One of the things I did not like about this book was how every few pages (particularly in the beginning), the protagonist would foreshadow events to come, with phrases like "that was the last time I saw him smile," or "little did I know it was the last meal I'd eat for a while." It's like watching a horror movie. You know something is going to happen, but you don't know when.
Reading this book was depressing and stressful. And when I say that, I'm not at all stating that it's a bad book. In fact, I think it is excellent. But I would never read it again. Nor could I recommend it to anyone else. It's just that for me, the subject matter was too much. I felt like I would never be happy again. I know, that's a bit of a strong reaction, but maybe that's a testament to the author's skill. I dunno.
Scott flew back in from China last night. He was very excited about the trip and said that he felt he could have lived there and was a little sorry to come back.
Again, I'm really happy for him. You know those trips you took when you were younger, when you went with a group of people that you maybe didn't know so well, but just spending time with them and doing something that was outside of your comfort zone brought you all closer together? And then it feels strange to come back and go your separate ways.
I think the biggest thing is that odd sense of disappointment when you come back all excited and everyone else who never left can't quite match your enthusiasm. It's just life as usual. You've changed, but the place you left behind hasn't. It can be depressing in a way because you want to maintain this feeling that you've transcended some sort of boundary. But it's hard because nothing else around you is any different.
I just hope that Scott can take this experience and retain it. It's more than just having a bunch of pictures and some memories. Even if it's something as simple as a perspective shift, this has the potential to transform the way one interacts with the world. It's a valuable experience to have.
__[[The Road|http://www.amazon.com/The-Road/dp/B000OI0G1Q/ref=sr_1_6?ie=UTF8&s=books&qid=1242687049&sr=8-6]]__ by Cormac ~McCarthy
I read __The Road__ by Cormac ~McCarthy. What an insanely depressing book. I finished it in about a day and a half which made it all the worse because it was a concentrated bit of misery. It was a great book, but just so oppressive. I don't know if I can read it again. I'll see the movie, but it's definitely not something that would brighten a gloomy afternoon.
[[The Subtle Knife|http://www.amazon.com/Subtle-Knife-Deluxe-Anniversary-Materials/dp/0375846727/ref=pd_bbs_3/104-8747472-3895942?ie=UTF8&s=books&qid=1190919831&sr=1-3]]
Ok, so here is where things start to go downhill. I thought [[The Golden Compass]] gave this book a great starting point, but from the moment I started __The Subtle Knife__, it seemed like something was off. I just didn't enjoy this one as much as the last. And what's worse, as the overall plot of the trilogy is revealed, I got this deep sinking feeling that I didn't like where the story was headed.
But the middle child of trilogies are always somewhat awkward because they have to transition from the intro to the finale. So I went ahead and finished it. But I wasn't too happy.
This is the sequel to [[The Golden Compass]]. After it comes [[The Amber Spyglass]]
[[The Zombie Survival Guide: Complete Protection from the Living Dead|http://www.amazon.com/Zombie-Survival-Guide-Complete-Protection/dp/1400049628/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1205675775&sr=8-1]] by Max Brooks
Be honest. At some point in time, you've asked yourself, "What would //I// do in case of a zombie attack?" I have my own ideas that are based off of whether we're talking about fast zombies or slow zombies. But beside that, in case of an emergency, there is no better field manual to have than The Zombie Survival Guide.
This book was great because it took itself 100% seriously. Not only that, but the "expert" advice is actually pretty well thought out. For a split second, I actually felt worried that I hadn't done enough to prepare a base well outside of civilization in the event that there is a Class 4 outbreak. But then I realized, "Wait, if they're fast zombies, I'm dead anyway." But we can talk about that later.
Type the text for 'Thoughts'
TiddlyWiki is a complete [[wiki|http://en.wikipedia.org/wiki/Wiki]] in a single HTML file. It contains the entire text of the wiki, and all the JavaScript, CSS and HTML goodness to be able to display it, and let you edit it or search it. Without needing a server. It allows anyone to create personal selfcontained hypertext documents that can be posted to a WebServer, sent by email or kept on a USB thumb drive.
TiddlyWiki is published under an OpenSourceLincense and maintained by a busy [[Community]] of independent developers.
/***
Contains the stuff you need to use Tiddlyspot
Note you must also have UploadPlugin installed
***/
//{{{
// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'mwanz';
// 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)
// 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(/^/,"[[Welcome to Tiddlyspot]] ");
MainMenu = MainMenu.replace(/^/,"[[Welcome to Tiddlyspot]] ");
}
// create some shadow tiddler content
merge(config.shadowTiddlers,{
'Welcome to Tiddlyspot':[
"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 Guides|http://tiddlywikiguides.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/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], 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")
});
//}}}
We are all born naked and screaming and if you're lucky that sort of thing won't stop there.
So not too much to report over this last week. Thought I'd give a general update on how some of my goals have been going these 17 days into 2009.
__Exercise__
I came down with bronchitis on the 6th of January and have been deathly ill lately. I'm actually feeling much better now, but I was basically out of commission for a week and a half. So this hasn't been going so well.
__Photography__
Reasonably good. I am proud of a lot of the pictures I've gotten, but I don't have any clear conception of technique or form. I worry that I rely too heavily on post-processing to take my pictures from mediocre to notable. I need to read more books about photography as an art instead of the how to work a camera or adjust pictures in Photoshop
__[[CFA|http://en.wikipedia.org/wiki/Chartered_Financial_Analyst]]__
I'm actually on track. There was a period of time when I was about a week behind the schedule I had set for myself. But now I'm exactly in line with where I want to be with studying.
__Guitar__
I haven't been as good about this as I should have been. I //was// sick for a bit and didn't feel like doing much of anything. But that's not a great excuse.
__[[GTD|http://en.wikipedia.org/wiki/Getting_Things_Done]]__
I've gotten a lot of things done, but I'm not being as productive as I could be. I think I'm hitting something of a wall. Things are progressing, but not as quickly as I would like. I need to find a way to push through my recent malaise.
That's it I guess. I have a couple of other things happening on the side, but not really worth mentioning yet. Hopefully something of more significance will happen next week. I blame bronchitis for my recent slowdown.
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 22/08/2007 13:52:51 | therogerspost | [[rogers.html|file:///E:/rogers.html]] | [[store.cgi|http://therogerspost.tiddlyspot.com/store.cgi]] | . | [[index.html | http://therogerspost.tiddlyspot.com/index.html]] | . | ok |
| 22/8/2007 15:6:20 | therogerspost | [[rogers.html|file:///E:/rogers.html]] | [[store.cgi|http://chipt.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 22/8/2007 15:6:55 | therogerspost | [[rogers.html|file:///E:/rogers.html]] | [[store.cgi|http://chipt.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 22/8/2007 15:7:24 | therogerspost | [[rogers.html|file:///E:/rogers.html]] | [[store.cgi|http://chipt.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 22/8/2007 15:11:35 | therogerspost | [[rogers.html|file:///E:/rogers.html]] | [[store.cgi|http://therogerspost.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |
| 22/8/2007 15:17:7 | therogerspost | [[rogers.html|file:///E:/rogers.html]] | [[store.cgi|http://therogerspost.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |
| 11/9/2007 15:41:39 | Mwanz | [[Blog.html|file:///E:/Blog.html]] | [[store.cgi|http://therogerspost.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 11/9/2007 15:42:4 | Mwanz | [[Blog.html|file:///E:/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 24/9/2007 11:0:0 | mwanz | [[Blog.html|file:///E:/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 24/9/2007 14:52:59 | therogerspost | [[Blog.html|file:///E:/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 24/9/2007 14:53:19 | therogerspost | [[Blog.html|file:///E:/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 18/11/2007 10:20:0 | blob | [[Blog.html|file:///I:/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 18/11/2007 10:24:57 | mwanz | [[Blog.html|file:///I:/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |
| 25/2/2008 11:40:47 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |
| 25/2/2008 11:46:15 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |
| 25/2/2008 11:48:2 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |
| 25/2/2008 16:51:15 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 25/2/2008 16:51:30 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 28/2/2008 10:3:43 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 7/3/2008 12:44:57 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 16/3/2008 11:2:57 | YourName | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 16/3/2008 11:3:29 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 16/3/2008 11:3:58 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 16/3/2008 11:4:50 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 18/3/2008 14:36:26 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 20/3/2008 14:37:12 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 20/3/2008 14:37:29 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 20/3/2008 14:37:53 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |
| 1/4/2008 19:57:33 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 6/4/2008 10:41:42 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 9/4/2008 20:2:42 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 9/4/2008 20:3:29 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 9/4/2008 20:14:31 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 18/4/2008 11:10:8 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 1/5/2008 19:47:35 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 1/5/2008 19:48:17 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 1/5/2008 19:48:47 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 14/5/2008 20:7:6 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html#%5B%5BMother's%20Day%5D%5D]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 14/5/2008 20:7:36 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html#%5B%5BMother's%20Day%5D%5D]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 14/5/2008 20:8:9 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html#%5B%5BMother's%20Day%5D%5D]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 28/5/2008 11:20:6 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 28/5/2008 11:20:25 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 28/5/2008 11:20:40 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 28/5/2008 14:35:57 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 9/6/2008 17:32:18 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 14/6/2008 8:46:17 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 14/6/2008 8:46:46 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 19/6/2008 20:35:0 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 19/6/2008 20:35:24 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 19/6/2008 20:35:43 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 13/7/2008 16:3:5 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 13/7/2008 16:3:43 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 13/7/2008 16:4:4 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 21/7/2008 6:45:27 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 21/7/2008 6:45:47 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 21/7/2008 6:46:47 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 22/7/2008 15:58:7 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 6/8/2008 13:46:41 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 6/8/2008 13:46:56 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 6/8/2008 13:47:8 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 25/8/2008 13:24:48 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 29/8/2008 17:51:37 | mwanz | [[Blog.html|file:///I:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 3/9/2008 14:35:34 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 4/9/2008 10:1:53 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 30/9/2008 19:39:23 | mwanz | [[Blog.html|file:///J:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 1/10/2008 8:43:44 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 12/10/2008 8:1:45 | YourName | [[Blog.html|file:///J:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 22/10/2008 15:0:17 | mwanz | [[Blog.html|file:///E:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 1/11/2008 9:0:7 | mwanz | [[Blog.html|file:///J:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 10/11/2008 21:11:49 | mwanz | [[Blog.html|file:///J:/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 3/12/2008 8:55:38 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 9/12/2008 14:47:54 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 29/12/2008 15:3:8 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 1/1/2009 22:19:47 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 8/1/2009 12:23:0 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 17/1/2009 12:3:25 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 31/1/2009 11:10:10 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 1/2/2009 9:6:47 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 7/2/2009 21:20:48 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 9/2/2009 7:35:58 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 17/2/2009 19:29:37 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 28/2/2009 9:36:44 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 17/3/2009 21:7:42 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 20/3/2009 20:8:33 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 29/3/2009 12:45:40 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 10/4/2009 21:29:14 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 17/4/2009 21:18:25 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 25/4/2009 20:46:30 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 10/5/2009 6:43:48 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 10/5/2009 6:44:41 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 10/5/2009 7:9:0 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |
| 10/5/2009 7:9:41 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |
| 10/5/2009 7:11:33 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 18/5/2009 18:55:40 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 25/5/2009 13:54:13 | mwanz | [[Blog.html|file:///D:/My%20Documents/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 8/6/2009 21:35:36 | mwanz | [[Blog.html|file:///E:/D%20Stuff/My%20Docs/GTD/ISTICK%20(J)/Wikis/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 23/6/2009 19:36:16 | mwanz | [[Blog.html|file:///D:/My%20Documents/Wiki/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |
| 23/6/2009 19:42:18 | mwanz | [[Blog.html|file:///D:/My%20Documents/Wiki/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 8/7/2009 20:10:26 | mwanz | [[Blog.html|file:///D:/My%20Documents/Wiki/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 19/7/2009 8:17:23 | mwanz | [[Blog.html|file:///D:/My%20Documents/Wiki/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 23/7/2009 20:52:58 | mwanz | [[Blog.html|file:///D:/My%20Documents/Wiki/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 6/8/2009 20:1:54 | mwanz | [[Blog.html|file:///D:/My%20Documents/Wiki/Blog.html]] | [[store.cgi|http://mwanz.tiddlyspot.com/store.cgi]] | . | index.html | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|3.4.5|
|''Date:''|Oct 15, 2006|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadDoc|
|''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.0.0|
|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|
|''Include:''|config.lib.file; config.lib.log; config.lib.options; PasswordTweak|
|''Require:''|[[UploadService|http://tiddlywiki.bidix.info/#UploadService]]|
***/
//{{{
version.extensions.UploadPlugin = {
major: 3, minor: 4, revision: 5,
date: new Date(2006,9,15),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
documentation: 'http://tiddlywiki.bidix.info/#UploadDoc',
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.0.0',
browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'
};
//}}}
////+++!![config.lib.file]
//{{{
if (!config.lib) config.lib = {};
if (!config.lib.file) config.lib.file= {
author: 'BidiX',
version: {major: 0, minor: 1, revision: 0},
date: new Date(2006,3,9)
};
config.lib.file.dirname = function (filePath) {
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
config.lib.file.basename = function (filePath) {
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);
};
window.basename = function() {return "@@deprecated@@";};
//}}}
////===
////+++!![config.lib.log]
//{{{
if (!config.lib) config.lib = {};
if (!config.lib.log) config.lib.log= {
author: 'BidiX',
version: {major: 0, minor: 1, revision: 1},
date: new Date(2006,8,19)
};
config.lib.Log = function(tiddlerTitle, logHeader) {
if (version.major < 2)
this.tiddler = store.tiddlers[tiddlerTitle];
else
this.tiddler = store.getTiddler(tiddlerTitle);
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = tiddlerTitle;
this.tiddler.text = "| !date | !user | !location |" + logHeader;
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
if (version.major < 2)
store.tiddlers[tiddlerTitle] = this.tiddler;
else
store.addTiddler(this.tiddler);
}
return this;
};
config.lib.Log.prototype.newLine = function (line) {
var now = new Date();
var newText = "| ";
newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";
newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";
newText += config.options.txtUserName + " | ";
var location = document.location.toString();
var filename = config.lib.file.basename(location);
if (!filename) filename = '/';
newText += "[["+filename+"|"+location + "]] |";
this.tiddler.text = this.tiddler.text + "\n" + newText;
this.addToLine(line);
};
config.lib.Log.prototype.addToLine = function (text) {
this.tiddler.text = this.tiddler.text + text;
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
if (version.major < 2)
store.tiddlers[this.tiddler.tittle] = this.tiddler;
else {
store.addTiddler(this.tiddler);
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
}
if (version.major < 2)
store.notifyAll();
};
//}}}
////===
////+++!![config.lib.options]
//{{{
if (!config.lib) config.lib = {};
if (!config.lib.options) config.lib.options = {
author: 'BidiX',
version: {major: 0, minor: 1, revision: 0},
date: new Date(2006,3,9)
};
config.lib.options.init = function (name, defaultValue) {
if (!config.options[name]) {
config.options[name] = defaultValue;
saveOptionCookie(name);
}
};
//}}}
////===
////+++!![PasswordTweak]
//{{{
version.extensions.PasswordTweak = {
major: 1, minor: 0, revision: 3, date: new Date(2006,8,30),
type: 'tweak',
source: 'http://tiddlywiki.bidix.info/#PasswordTweak'
};
//}}}
/***
!!config.macros.option
***/
//{{{
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordType = "password"; // password | text
config.macros.option.onChangeOption = function(e)
{
var opt = this.getAttribute("option");
var elementType,valueField;
if(opt) {
switch(opt.substr(0,3)) {
case "txt":
elementType = "input";
valueField = "value";
break;
case "pas":
elementType = "input";
valueField = "value";
break;
case "chk":
elementType = "input";
valueField = "checked";
break;
}
config.options[opt] = this[valueField];
saveOptionCookie(opt);
var nodes = document.getElementsByTagName(elementType);
for(var t=0; t<nodes.length; t++)
{
var optNode = nodes[t].getAttribute("option");
if (opt == optNode)
nodes[t][valueField] = this[valueField];
}
}
return(true);
};
config.macros.option.handler = function(place,macroName,params)
{
var opt = params[0];
if(config.options[opt] === undefined) {
return;}
var c;
switch(opt.substr(0,3)) {
case "txt":
c = document.createElement("input");
c.onkeyup = this.onChangeOption;
c.setAttribute ("option",opt);
c.className = "txtOptionInput "+opt;
place.appendChild(c);
c.value = config.options[opt];
break;
case "pas":
// input password
c = document.createElement ("input");
c.setAttribute("type",config.macros.option.passwordType);
c.onkeyup = this.onChangeOption;
c.setAttribute("option",opt);
c.className = "pasOptionInput "+opt;
place.appendChild(c);
c.value = config.options[opt];
// checkbox link with this password "save this password on this computer"
c = document.createElement("input");
c.setAttribute("type","checkbox");
c.onclick = this.onChangeOption;
c.setAttribute("option","chk"+opt);
c.className = "chkOptionInput "+opt;
place.appendChild(c);
c.checked = config.options["chk"+opt];
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
break;
case "chk":
c = document.createElement("input");
c.setAttribute("type","checkbox");
c.onclick = this.onChangeOption;
c.setAttribute("option",opt);
c.className = "chkOptionInput "+opt;
place.appendChild(c);
c.checked = config.options[opt];
break;
}
};
//}}}
/***
!! Option cookie stuff
***/
//{{{
window.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;
window.loadOptionsCookie = function()
{
var cookies = document.cookie.split(";");
for(var c=0; c<cookies.length; c++) {
var p = cookies[c].indexOf("=");
if(p != -1) {
var name = cookies[c].substr(0,p).trim();
var value = cookies[c].substr(p+1).trim();
switch(name.substr(0,3)) {
case "txt":
config.options[name] = unescape(value);
break;
case "pas":
config.options[name] = unescape(value);
break;
case "chk":
config.options[name] = value == "true";
break;
}
}
}
};
window.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;
window.saveOptionCookie = function(name)
{
var c = name + "=";
switch(name.substr(0,3)) {
case "txt":
c += escape(config.options[name].toString());
break;
case "chk":
c += config.options[name] ? "true" : "false";
// is there an option link with this chk ?
if (config.options[name.substr(3)]) {
saveOptionCookie(name.substr(3));
}
break;
case "pas":
if (config.options["chk"+name]) {
c += escape(config.options[name].toString());
} else {
c += "";
}
break;
}
c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";
document.cookie = c;
};
//}}}
/***
!! Initializations
***/
//{{{
// define config.options.pasPassword
if (!config.options.pasPassword) {
config.options.pasPassword = 'defaultPassword';
window.saveOptionCookie('pasPassword');
}
// since loadCookies is first called befor password definition
// we need to reload cookies
window.loadOptionsCookie();
//}}}
////===
////+++!![config.macros.upload]
//{{{
config.macros.upload = {
accessKey: "U",
formName: "UploadPlugin",
contentType: "text/html;charset=UTF-8",
defaultStoreScript: "store.php"
};
// only this two configs need to be translated
config.macros.upload.messages = {
aboutToUpload: "About to upload TiddlyWiki to %0",
backupFileStored: "Previous file backuped in %0",
crossDomain: "Certainly a cross-domain isue: access to an other site isn't allowed",
errorDownloading: "Error downloading",
errorUploadingContent: "Error uploading content",
fileLocked: "Files is locked: You are not allowed to Upload",
fileNotFound: "file to upload not found",
fileNotUploaded: "File %0 NOT uploaded",
mainFileUploaded: "Main TiddlyWiki file uploaded to %0",
passwordEmpty: "Unable to upload, your password is empty",
urlParamMissing: "url param missing",
rssFileNotUploaded: "RssFile %0 NOT uploaded",
rssFileUploaded: "Rss File uploaded to %0"
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.handler = function(place,macroName,params){
// parameters initialization
var storeUrl = params[0];
var toFilename = params[1];
var backupDir = params[2];
var uploadDir = params[3];
var username = params[4];
var password; // for security reason no password as macro parameter
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (storeUrl) {
prompt = this.label.promptParamMacro.toString().format([this.toDirUrl(storeUrl, uploadDir, username)]);
}
else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt,
function () {
config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;},
null, null, this.accessKey);
};
config.macros.upload.UploadLog = function() {
return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );
};
config.macros.upload.UploadLog.prototype = config.lib.Log.prototype;
config.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";
line += uploadDir + " | " + toFilename + " | " + backupDir + " |";
this.newLine(line);
};
config.macros.upload.UploadLog.prototype.endUpload = function() {
this.addToLine(" Ok |");
};
config.macros.upload.basename = config.lib.file.basename;
config.macros.upload.dirname = config.lib.file.dirname;
config.macros.upload.toRootUrl = function (storeUrl, username)
{
return root = (this.dirname(storeUrl)?this.dirname(storeUrl):this.dirname(document.location.toString()));
}
config.macros.upload.toDirUrl = function (storeUrl, uploadDir, username)
{
var root = this.toRootUrl(storeUrl, username);
if (uploadDir && uploadDir != '.')
root = root + '/' + uploadDir;
return root;
}
config.macros.upload.toFileUrl = function (storeUrl, toFilename, uploadDir, username)
{
return this.toDirUrl(storeUrl, uploadDir, username) + '/' + toFilename;
}
config.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)
{
// parameters initialization
storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);
toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);
backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);
uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);
username = (username ? username : config.options.txtUploadUserName);
password = config.options.pasUploadPassword; // for security reason no password as macro parameter
if (!password || password === '') {
alert(config.macros.upload.messages.passwordEmpty);
return;
}
if (storeUrl === '') {
storeUrl = config.macros.upload.defaultStoreScript;
}
if (config.lib.file.dirname(storeUrl) === '') {
storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;
}
if (toFilename === '') {
toFilename = config.lib.file.basename(document.location.toString());
}
clearMessage();
// only for forcing the message to display
if (version.major < 2)
store.notifyAll();
if (!storeUrl) {
alert(config.macros.upload.messages.urlParamMissing);
return;
}
// Check that file is not locked
if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {
if (BidiX.GroupAuthoring.lock.isLocked() && !BidiX.GroupAuthoring.lock.isMyLock()) {
alert(config.macros.upload.messages.fileLocked);
return;
}
}
var log = new this.UploadLog();
log.startUpload(storeUrl, toFilename, uploadDir, backupDir);
if (document.location.toString().substr(0,5) == "file:") {
saveChanges();
}
var toDir = config.macros.upload.toDirUrl(storeUrl, toFilename, uploadDir, username);
displayMessage(config.macros.upload.messages.aboutToUpload.format([toDir]), toDir);
this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);
if(config.options.chkGenerateAnRssFeed) {
//var rssContent = convertUnicodeToUTF8(generateRss());
var rssContent = generateRss();
var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";
this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password,
function (responseText) {
if (responseText.substring(0,1) != '0') {
displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));
}
else {
var toFileUrl = config.macros.upload.toFileUrl(storeUrl, rssPath, uploadDir, username);
displayMessage(config.macros.upload.messages.rssFileUploaded.format(
[toFileUrl]), toFileUrl);
}
// for debugging store.php uncomment last line
//DEBUG alert(responseText);
});
}
return;
};
config.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir,
username, password) {
var original;
if (document.location.toString().substr(0,4) == "http") {
original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);
return;
}
else {
// standard way : Local file
original = loadFile(getLocalPath(document.location.toString()));
if(window.Components) {
// it's a mozilla browser
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
.createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
original = converter.ConvertToUnicode(original);
}
catch(e) {
}
}
}
//DEBUG alert(original);
this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir,
username, password);
};
config.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir,
username, password) {
var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it
var endSaveArea = '</d' + 'iv>';
// Locate the storeArea div's
var posOpeningDiv = original.indexOf(startSaveArea);
var posClosingDiv = original.lastIndexOf(endSaveArea);
if((posOpeningDiv == -1) || (posClosingDiv == -1))
{
alert(config.messages.invalidFileError.format([document.location.toString()]));
return;
}
var revised = original.substr(0,posOpeningDiv + startSaveArea.length) +
allTiddlersAsHtml() + "\n\t\t" +
original.substr(posClosingDiv);
var newSiteTitle;
if(version.major < 2){
newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();
} else {
newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();
}
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\n" + store.getTiddlerText("MarkupPreHead","") + "\n");
revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\n" + store.getTiddlerText("MarkupPostHead","") + "\n");
revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\n" + store.getTiddlerText("MarkupPreBody","") + "\n");
revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\n" + store.getTiddlerText("MarkupPostBody","") + "\n");
var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir,
username, password, function (responseText) {
if (responseText.substring(0,1) != '0') {
alert(responseText);
displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));
}
else {
if (uploadDir !== '') {
toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);
} else {
toFilename = config.macros.upload.basename(toFilename);
}
var toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);
if (responseText.indexOf("destfile:") > 0) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,
responseText.indexOf("\n", responseText.indexOf("destfile:")));
toFileUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + destfile;
}
else {
toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);
}
displayMessage(config.macros.upload.messages.mainFileUploaded.format(
[toFileUrl]), toFileUrl);
if (backupDir && responseText.indexOf("backupfile:") > 0) {
var backupFile = responseText.substring(responseText.indexOf("backupfile:")+11,
responseText.indexOf("\n", responseText.indexOf("backupfile:")));
toBackupUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + backupFile;
displayMessage(config.macros.upload.messages.backupFileStored.format(
[toBackupUrl]), toBackupUrl);
}
var log = new config.macros.upload.UploadLog();
log.endUpload();
store.setDirty(false);
// erase local lock
if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {
BidiX.GroupAuthoring.lock.eraseLock();
// change mtime with new mtime after upload
var mtime = responseText.substr(responseText.indexOf("mtime:")+6);
BidiX.GroupAuthoring.lock.mtime = mtime;
}
}
// for debugging store.php uncomment last line
//DEBUG alert(responseText);
}
);
};
config.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir,
username, password, callbackFn) {
var boundary = "---------------------------"+"AaB03x";
var request;
try {
request = new XMLHttpRequest();
}
catch (e) {
request = new ActiveXObject("Msxml2.XMLHTTP");
}
if (window.netscape){
try {
if (document.location.toString().substr(0,4) != "http") {
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}
}
catch (e) {}
}
//DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += config.macros.upload.formName +"\"\r\n\r\n";
sheader += "backupDir="+backupDir
+";user=" + username
+";password=" + password
+";uploaddir=" + uploadDir;
// add lock attributes to sheader
if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {
var l = BidiX.GroupAuthoring.lock.myLock;
sheader += ";lockuser=" + l.user
+ ";mtime=" + l.mtime
+ ";locktime=" + l.locktime;
}
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+toFilename+"\"\r\n";
sheader += "Content-Type: " + config.macros.upload.contentType + "\r\n";
sheader += "Content-Length: " + content.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
//strailer = "--" + boundary + "--\r\n";
var data;
data = sheader + content + strailer;
//request.open("POST", storeUrl, true, username, password);
try {
request.open("POST", storeUrl, true);
}
catch(e) {
alert(config.macros.upload.messages.crossDomain + "\nError:" +e);
exit;
}
request.onreadystatechange = function () {
if (request.readyState == 4) {
if (request.status == 200)
callbackFn(request.responseText);
else
alert(config.macros.upload.messages.errorUploadingContent + "\nStatus: "+request.status.statusText);
}
};
request.setRequestHeader("Content-Length",data.length);
request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);
request.send(data);
};
config.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir,
username, password) {
var request;
try {
request = new XMLHttpRequest();
}
catch (e) {
request = new ActiveXObject("Msxml2.XMLHTTP");
}
try {
if (uploadUrl.substr(0,4) == "http") {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}
else {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
} catch (e) { }
//request.open("GET", document.location.toString(), true, username, password);
try {
request.open("GET", document.location.toString(), true);
}
catch(e) {
alert(config.macros.upload.messages.crossDomain + "\nError:" +e);
exit;
}
request.onreadystatechange = function () {
if (request.readyState == 4) {
if(request.status == 200) {
config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl,
uploadToFilename, uploadDir, uploadBackupDir, username, password);
}
else
alert(config.macros.upload.messages.errorDownloading.format(
[document.location.toString()]) + "\nStatus: "+request.status.statusText);
}
};
request.send(null);
};
//}}}
////===
////+++!![Initializations]
//{{{
config.lib.options.init('txtUploadStoreUrl','store.php');
config.lib.options.init('txtUploadFilename','');
config.lib.options.init('txtUploadDir','');
config.lib.options.init('txtUploadBackupDir','');
config.lib.options.init('txtUploadUserName',config.options.txtUserName);
config.lib.options.init('pasUploadPassword','');
setStylesheet(
".pasOptionInput {width: 11em;}\n"+
".txtOptionInput.txtUploadStoreUrl {width: 25em;}\n"+
".txtOptionInput.txtUploadFilename {width: 25em;}\n"+
".txtOptionInput.txtUploadDir {width: 25em;}\n"+
".txtOptionInput.txtUploadBackupDir {width: 25em;}\n"+
"",
"UploadOptionsStyles");
if (document.location.toString().substr(0,4) == "http") {
config.options.chkAutoSave = false;
saveOptionCookie('chkAutoSave');
}
config.shadowTiddlers.UploadDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadDoc ]]\n";
//}}}
////===
////+++!![Core Hijacking]
//{{{
config.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;
config.macros.saveChanges.label = config.macros.upload.label.saveToDisk;
config.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;
config.macros.saveChanges.handler = function(place)
{
if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))
createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);
};
//}}}
////===
Such a great trip. I'd like to take a moment to thank the Rogers family for taking me to Utah that first year. I'm hooked. I'm sad that I couldn't enjoy it with you all this year, but I can't help but think of you every time I'm there.
With good friends, Brian, Kristi, and Jesse, we spend 5 days at [[Brighton in Utah|http://www.skibrighton.com/]]. The first 3 days, it snowed and we hit the double blacks with reckless abandon. I'm now exhausted and a bit sleep deprived, but very //very// satisfied. I feel like I'm really progressing. I'm not afraid of making turns on the double black moguls, and off trail tree routes are an adventure. Still much room for improvement, but I've never been more enthusiastic to step up to the challenge.
<html><center><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fedmund.rogers%2Falbumid%2F5166608288451519457%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></center></html>
<!---
| Name:|~TagglyTaggingViewTemplate |
| Version:|1.2 (16-Jan-2006)|
| Source:|http://simonbaird.com/mptw/#TagglyTaggingViewTemplate|
| Purpose:|See TagglyTagging for more info|
| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|
!History
* 16-Jan-06, version 1.2, added tagglyListWithSort
* 12-Jan-06, version 1.1, first version
<div class='tagged' macro='tags'></div>
!Notes
Remove the miniTag if you don't like it or you don't use QuickOpenTagPlugin
This will put a graphical button on the screen
<img style="vertical-align: middle; cursor: pointer" src="http://i14.photobucket.com/albums/a324/gen329/Website/emblem-unreadable.png" onclick="
config.commands.closeTiddler.handler(event,this,story.findContainingTiddler(this).id.substr(7))"
>
--->
<!--{{{-->
<div class="toolbar" macro="toolbar -closeTiddler closeOthers +editTiddler deleteTiddler"></div>
<div class='title' macro='view title'></div>
<div class='subtitle'>Created <span macro='view created date [[MM/DD/YY]]'></span>, updated <span macro='view modified date [[MM/DD/YY]]'></span></div>
<div class="viewer" macro="view text wikified"></div>
<div class="tagglyTagging" macro="tagglyListWithSort"></div>
<!--}}}-->
I got in a fight on Saturday. Witness the insanity.
[[CNN News Report|http://www.cnn.com/video/?/video/ireports/2009/04/06/dcl.irpt.today.monday.cnn]]
<html>
<center>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="288" height="192" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fedmund.rogers%2Falbumid%2F5321708200402302241%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</center>
</html>
Welcome to my little website. It's not much, but it's low maintenance, which is key. The purpose of this site isn't to wax philosophical or feign that my opinion is so relevant that it deserves it's own web space. Really, this is the easiest way for my friends to keep tabs on what is going on in my life. Every time I talk to someone and they ask me what's been going on lately, I can't think of much, because to me, I'm just moving along to whatever is next. I plan ahead a lot and so sometimes really big events become background noise because I've prepared for them. So if you really want to know what's been going on, take a read. Hopefully there's a lot to find.
This page is written in TiddlyWiki, an easy to use [[microcontent|MicroContent]] WikiWikiWeb created by Jeremy Ruston and a busy [[community|Community]] of independent developers.
<<forEachTiddler
where 'tiddler.tags.contains("entry")'
sortBy tiddler.modified ascending
script '
function lastDays(tiddler) {
var compareDate = new Date();
compareDate.setDate(compareDate.getDate() - 30);
if (tiddler.modified > compareDate)
return "* [[" + tiddler.title + "]]\n";
else
return "";
}
'
write 'context.output+= lastDays(tiddler) , ""'
begin 'context.output = ""'
end 'context.output
? context.output
: "<<tiddler [[List the 10 most recently modified entries]]\>\>"
'
>>
A Wiki is a popular way of building collaborative websites. It's based on the two ideas of allowing users to easily edit any page and the use of special WikiWord notation to automagically create links between pages. See Wikipedia for [[more details|http://en.wikipedia.org/wiki/Wiki]].
TiddlyWiki is fundamentally different from a conventional Wiki because it is not based on separate, entire pages of content, but rather items of MicroContent referred to as [[Tiddlers|Tiddler]] that live together on the same page.
Out of the box, TiddlyWiki is also different because it doesn't support public editing - or indeed any persistent editing when viewed over the web. However, there are several TiddlyWikiAdaptations and [[Plugins]] that provide these features in a wide range of different configurations.
//{{{
// for use in templates
config.macros.wikifyContents = {};
config.macros.wikifyContents.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
var contents = place.innerHTML;
// to avoid CSS complications change the xmp to a div...
var newDiv = document.createElement("div");
newDiv.className = place.className;
newDiv.setAttribute("style",place.getAttribute("style"));
place.parentNode.insertBefore(newDiv,place);
place.parentNode.removeChild(place);
wikify(contents.trim().replace(/\\\r\n/mg,'').replace(/\\\n/mg,''), newDiv, null, tiddler); // the replace is a hack for non-br-ing line breaks
}
//}}}
True friendship is self-love at second-hand.
<html>
<div align="center"><iframe src="http://thefamilynet.googlepages.com/testwishlist.htm" frameborder="0" width="100%" height="485"></iframe></div>
</html>
There are a few more items out there. Feel free to check out the full list:
[img[AmazonBadge|http://g-ecx.images-amazon.com/images/G/01/gifts/registries/wishlist/v2/web/wl-btn-74-b._V46774601_.gif][http://www.amazon.com/gp/registry/wishlist/2C598MF23GD95?reveal=unpurchased&filter=all&sort=priority&layout=standard&x=5&y=9]]
Last night, I tried yoga for the first time. It's not really the type of thing that is typical of me. But I know many people who swear by it as a life-changing habit, so I figured it was worth a try.
I participated in Baptiste Power Yoga which I suppose is one of the more active and intense versions. It takes place in a 90 degree room and my practice lasted 90 minutes. I had heard horror stories about people passing out or throwing up at these things. I used to consider myself to be above average in athleticism, but I haven't really done much on a regular basis, so I wasn't as confident about how I would react to the experience.
I expected lots of stretching and contorting, but I found that I was actually able to do most everything. It was more the precise body positions that I had trouble with. But there didn't really seem to be much that wasn't beyond my potential to accomplish. And it definitely was work. At the same time that it was stretching your body, it was also straining specific muscles for a period of time. It almost felt like being back in high school and doing push-ups and sit-ups during preseason. I liked that part.
But overall, I am left slightly unimpressed. I will say, to start, that it may not be fair of me to make a judgment after only one practice. And in fact, I get my first week free, so I'm going to go again later on. But my initial impression is that as interesting as it was, it didn't really connect with me because of the type of person I am.
Having been an athlete, I am used to pushing my body past the point where I feel comfortable and secure. I'm accustomed to pushing through pain and working hard to get stronger and/or faster. This practice seemed too forgiving. Yes, it was still challenging, but there was a lot of emphasis on placing your body in a zone that feels right for you. I'm used to others, coaches, teammates, demanding of me (and me demanding of myself) an objective standard. What feels right for you only gets you so far. Am I doing it right? Am I stretching far enough? How do I measure my achievement in this practice? It's just a personal mindset that made me feel frustrated with the "whatever you can do is good enough" attitude.
And branching off of that, I'm also very competitive. They specifically said that it's not about keeping up with the class, it's about challenging yourself. But again, I need some sort of measure of my own success. If they won't give that to me, I have to look around the room and compare my endurance and my control to others. It definitely feels at odds to the spirit of the class.
But finally, I guess I don't really feel the objective to the practice. I thought, going into it, that it was going to give me greater range of motion and enhanced flexibility. I don't feel necessarily any more limber than if I had warmed-up and stretched on my own. Then I thought it was a good workout in the same way push-ups and situps would be. But I don't feel sore in the same way I would if I gave myself a workout. Instead, it's like this weird amalgamation of stretching, working out, and meditating. But it doesn't give me either of those three in enough quantity for me to feel satisfied.
I will reiterate that it's unfair to make this judgment after only one practice, but at the same time, I see so many other things I want to try that will push me in various directions. If yoga isn't it, then I'd rather move toward [[Capoiera|http://www.youtube.com/watch?v=fCazYlnGYtY]], [[Parkour|http://www.youtube.com/watch?v=jquXcwooV6A]], and/or [[Bartendaz|http://www.cnn.com/2009/HEALTH/03/09/bartendaz.urban.youth.exercise/index.html]].
<<newTiddler>>
<<saveChanges>>
<<tiddler TspotSidebar>>
<<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
I got the new iPhone. And yes, I waited in line for it. No, I wasn't one of those people who stayed all night. I was hoping to pick it up mid-morning after the line had subsided, but things proceeded much more slowly than I had anticipated. So when I strolled into the Cambridge mall to wait in what I though was a short line, I only managed to get my hands on the phone after 3.5 hours of waiting.
But boy is it slick. My Sprint contract had expired and I wanted something that could do internet. So I had a good justification.
/***
Macro: allTagsExcept
Author: Clint Checketts
Version: 1.0 Sept 8, 2005
usage: {{{<< allTagsExcept systemConfig excludeLists systemTiddlers >>}}} This will show all tags but those listed (e.g. systemConfig and systemTiddlers
<<allTagsExcept systemConfig excludeLists systemTiddlers >>
***/
//{{{
version.extensions.allTagsExcept = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};
config.macros.allTagsExcept = {tooltip: "Show tiddlers tagged with '%0'",noTags: "There are no tags to display"};
config.macros.allTagsExcept.handler = function(place,macroName,params)
{
var tags = store.getTags();
var theTagList = createTiddlyElement(place,"ul",null,null,null);
if(tags.length == 0)
createTiddlyElement(theTagList,"li",null,"listTitle",this.noTags);
for (var t=0; t<tags.length; t++) {
var includeTag = true;
for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) includeTag = false;
if (includeTag){
var theListItem =createTiddlyElement(theTagList,"li",null,null,null);
var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);
theTag.setAttribute("tag",tags[t][0]);
}
}
}
//}}}
<<comment>>__''blah''__
^^posted by mwanz on Thursday, April 24th, 2008 at 9:26:23 am^^
<<<
comment here
<<<
Strolled in, took the Level 2 CFA exam, and went back to my life.
So it wasn't as simple as that. The CFA exam is divided into two parts. There is a 3-hour morning section, and a 3-hour afternoon session, conveniently monopolizing your whole day.
The first half of the exam, I thought was manageable. I felt fairly confident after the first part and I was ready to tackle the last half. That's where the real challenge set in. The most frustrating part was that there were sections where I //knew// the information. I should have been so money. But for one reason or another, I couldn't get the answers that I needed.
I was slightly consoled by the fact that everyone else in Level 2 seemed to feel the same way. Now it just comes down to which side of the ~35% pass rate I will fall on. I won't know until August, so I'm content to put it out of mind until then.