Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which use a logographic writing system and need larger font sizes.
***/

/*{{{*/
body {font-size:0.8em;}

#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}

.subtitle {font-size:0.8em;}

.viewer table.listView {font-size:0.95em;}

.htmlarea .toolbarHA table {border:1px solid ButtonFace; margin:0em 0em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers testCmd +editTiddler > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<!--}}}-->
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>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

----
Also see AdvancedOptions
<<craigMacro 'CraigCook' 'This was programatically created'>>
This was programatically created
//{{{
config.macros.craigMacro = {};

config.macros.craigMacro.handler = function(place, macro, params){

     store.saveTiddler(params[0],params[0],params[1], config.options.txtUserName);

};
//}}}
RSSWiki
RSSFeedList
GettingStarted
If you want to have a copy of RSSWiki you can get this file at: http://www.craigcook.co.uk/samples/RSSWiki.html

You can also just get the macro code alone in a JavaScript file at: http://www.craigcook.co.uk/samples/RSSReaderPlugin.js
InterfaceOptions are displayed when you click the 'options' button on the right. They are saved in a cookie on your browser, making them sticky between visits:
<<<
<<tiddler OptionsPanel>>
<<<
* The user name for edits should be set //before// starting to edit things (ouch. another bug)
* SaveBackups gives the option of whether to generate backup files 
* AutoSave gives the option of automatically saving every time a change is made
* RegExpSearch allows more complex search expressions
* CaseSensitiveSearch does as its name implies
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.2|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
***/

//{{{
// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};

config.formatters.push(
{
	name: "legacyStrikeByChar",
	match: "==",
	termRegExp: /(==)/mg,
	element: "strike",
	handler: config.formatterHelpers.createElementAndWikify
});

} //# end of "install only once"
//}}}
RSSWiki
RSSFeedList
ManageRSSFeeds
RSSReaderMacro
GettingStarted
<<rssReader 'GUI'>>
<script src="RSSReaderPlugin.js" language="javascript" type="text/javascript"></script>
<<plugins>>
http://boycook.wordpress.com/rss/, boyCookBlog,
http://jayfresh.wordpress.com/rss/, jayFreshBlog
//{{{
// RSSReader macro
// v0.1
// 24th September 2007
// 
// Author: Craig Cook, craig [dot] cook [at] bt [dot] com
//
// Usage: <<rssReader>>
// Usage: <<rssReader RSSFeedURL TagName>>
// Usage: <<rssReader ReaderMode RSSFeedURL TagName>>
// NB: Can use tiddler RSSFeedList to store list of feeds and tags

config.macros.rssReader = {};

config.macros.rssReader.handler = function(place, macro, params){
    //Checks if parameters are passed in, if not uses RSSFeedsList tiddler   
    if (params[0] != undefined) {
        if (params[0] == 'GUI') {
            this.readerUI(place);
        } else {
            this.reader(this.trim(params[0]), this.trim(params[1]), 1);
        }
    } else {
        this.getAllFeeds();
    }
};

config.macros.rssReader.getAllFeeds = function(place, macro, params){
    //Reads lists of feeds from RSSFeedList tiddler
    var tiddler = store.getTiddler('RSSFeedList');
    var rssFeedsArr = tiddler.text.split(',');

    for (ri=0; ri < rssFeedsArr.length; ri++)  {
        //alert(this.trim(rssFeedsArr[ri]) + ' ' + this.trim(rssFeedsArr[ri + 1]));
        this.reader(this.trim(rssFeedsArr[ri]), this.trim(rssFeedsArr[ri + 1]), 1);
        ri++;
    }
};

config.macros.rssReader.trim = function(trimString) { 
    //Trims the string
    return trimString.replace(/^\s+|\s+$/g, '');
};

config.macros.rssReader.processSelect = function(selId){
    //Reads the selected feed
    var selBox = document.getElementById(selId);
    this.reader(selBox.options[selBox.selectedIndex].text, selBox.options[selBox.selectedIndex].value, 1)
};

config.macros.rssReader.delFeed = function(selId){
    //Deletes selected feed from list
    var selBox = document.getElementById(selId);
    var feedTidder = store.getTiddler('RSSFeedList');
    var feedTxt = feedTidder.text;

    if(feedTxt.indexOf(selBox.options[selBox.selectedIndex].text) < 1) {
        //If Feed is first in the list
        if (feedTxt.indexOf('\n') < 1) {
            feedTxt = "";
        } else {
            feedTxt = feedTxt.substring((feedTxt.indexOf('\n') + 1), feedTxt.length);
        }
    } else if (feedTxt.indexOf(selBox.options[selBox.selectedIndex].text) > feedTxt.lastIndexOf('\n')) {
        //If Feed is last in the list
        feedTxt = feedTxt.substring(0, (feedTxt.indexOf(selBox.options[selBox.selectedIndex].text) -2 ));
    } else {
        feedTxt = feedTxt.substring(0, feedTxt.indexOf(selBox.options[selBox.selectedIndex].text)) + feedTxt.substring((feedTxt.indexOf(selBox.options[selBox.selectedIndex].value) +  selBox.options[selBox.selectedIndex].value.length + 2), feedTxt.length);
    }

    store.saveTiddler("RSSFeedList","RSSFeedList", feedTxt);
    this.populateDD('selFeed');
};

config.macros.rssReader.addFeed = function(){
    //Adds feed to list
    var feedTidder = store.getTiddler('RSSFeedList');
    var feedTxt = feedTidder.text;

    if (this.trim(document.getElementById('txtFeedURL').value) != "" && this.trim(document.getElementById('txtFeedTag').value) != "") {
        if (feedTxt == "") {
            feedTxt = document.getElementById('txtFeedURL').value + ", " + document.getElementById('txtFeedTag').value;
        } else {
            feedTxt = feedTxt + ",\n" + document.getElementById('txtFeedURL').value + ", " + document.getElementById('txtFeedTag').value;
        }
        store.saveTiddler("RSSFeedList","RSSFeedList", feedTxt);
        this.populateDD('selFeed');
    } else {
        alert('You must enter all the feed details');
    }
};

config.macros.rssReader.populateDD= function(selId){
    //Populates dropdown with contents of tiddler
    this.clearDD(selId);
    var selFeed= document.getElementById(selId);
    var tiddler = store.getTiddler('RSSFeedList');
    var rssFeedsArr = tiddler.text.split(',');

    for (ri=0; ri < rssFeedsArr.length; ri++) {
        var myOption = createTiddlyElement(selFeed,"Option");
        myOption.text = this.trim(rssFeedsArr[ri]);
        myOption.value = this.trim(rssFeedsArr[ri + 1]);
        ri++;
    }
};

config.macros.rssReader.clearDD= function(selId){
    //Clears dropdown box
    var selBox = document.getElementById(selId);
    var i;

    for(i=selBox .options.length-1;i>=0;i--) {
        selBox .remove(i);
    }
};

config.macros.rssReader.readerUI= function(place){
    //GUI for managing reader
	// Some code to insert the appropriate styles into StyleSheet tiddler
	var cssText = "div.feedSelector {border-width:0px; border:0; padding:5px;} \n" +
                  "div.feedSelector TABLE {border-width:0px; border:0; } \n" +
		          "div.feedSelector SELECT {width:300px;} \n" +
		          "div.feedSelector INPUT.Text {width:300px;} \n" +
		          "div.feedSelector INPUT.Button {width:100px;}";

	store.saveTiddler("StyleSheet","StyleSheet", cssText);

	var feedSelector = createTiddlyElement(place,"div",null,"feedSelector");
	var feedTable = createTiddlyElement(createTiddlyElement(feedSelector,"table"),"tbody");
	var feedTR = createTiddlyElement(feedTable,"tr");
	var feedTD = createTiddlyElement(feedTR,"td");
    createTiddlyText(feedTD, "Select RSS Feed:  ");
	var selFeed = createTiddlyElement(feedTD, "select", "selFeed");

    this.populateDD('selFeed');
    createTiddlyText(feedTD, "   ");

	var butGetFeed = createTiddlyElement(feedTD,"input");
	butGetFeed.setAttribute("type","button");
	butGetFeed.setAttribute("name","butGetFeed");
	butGetFeed.setAttribute("value", "Get Selected Feed");
	butGetFeed.setAttribute("onclick","config.macros.rssReader.processSelect('selFeed');");

    createTiddlyText(feedTD, "   ");

	var butGetFeeds= createTiddlyElement(feedTD,"input");
	butGetFeeds.setAttribute("type","button");
	butGetFeeds.setAttribute("name","butGetFeeds");
	butGetFeeds.setAttribute("value", "Get all Feeds");
	butGetFeeds.setAttribute("onclick","config.macros.rssReader.getAllFeeds();");

	var feedTR = createTiddlyElement(feedTable,"tr");
	var feedTD = createTiddlyElement(feedTR,"td");
    createTiddlyText(feedTD, "or add new feed");

	var feedTR = createTiddlyElement(feedTable,"tr");
	var feedTD = createTiddlyElement(feedTR,"td");
    createTiddlyText(feedTD, "Feed URL: ");

	var txtFeedURL = createTiddlyElement(feedTD,"input");
	txtFeedURL.setAttribute("type","text");
	txtFeedURL.setAttribute("name","txtFeedURL");
	txtFeedURL.setAttribute("id","txtFeedURL");
	txtFeedURL.setAttribute("value","http://");

    createTiddlyText(feedTD, "  Tag Name: ");

	var txtFeedTag = createTiddlyElement(feedTD,"input");
	txtFeedTag.setAttribute("type","text");
	txtFeedTag.setAttribute("name","txtFeedTag");
	txtFeedTag.setAttribute("id","txtFeedTag");
	txtFeedTag.setAttribute("value"," ");

    createTiddlyText(feedTD, "   ");

	var butAddFeed = createTiddlyElement(feedTD,"input");
	butAddFeed.setAttribute("type","button");
	butAddFeed.setAttribute("name","butAddFeed");
	butAddFeed.setAttribute("value", "Add Feed");
	butAddFeed.setAttribute("onclick","config.macros.rssReader.addFeed();");

    createTiddlyText(feedTD, "   ");

	var butDelFeed = createTiddlyElement(feedTD,"input");
	butDelFeed.setAttribute("type","button");
	butDelFeed.setAttribute("name","butDelFeed");
	butDelFeed.setAttribute("value", "Remove Selected Feed");
	butDelFeed.setAttribute("onclick","config.macros.rssReader.delFeed('selFeed');");
};

config.macros.rssReader.reader = function(feedURL, tagName, tryX){
    //Main RSS reader / Ajax code
    try {
        var xmlhttp = getXMLHttpRequest();
        
	    if(window.Components && window.netscape && window.netscape.security && document.location.protocol.indexOf("http") == -1)
		    window.netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");

        xmlhttp.open("GET", feedURL, false);
        xmlhttp.send(null);

        var response = xmlhttp.responseXML.documentElement;
        x=response.getElementsByTagName("item");

        for (i=0;i<x.length;i++) {
            try {
                var titleNode = x[i].getElementsByTagName('title');
                titleText = titleNode[0].firstChild.nodeValue;

                var descNode = x[i].getElementsByTagName('description');
                descText = descNode[0].firstChild.nodeValue;

                var linkNode = x[i].getElementsByTagName('link');
                linkText = linkNode[0].firstChild.nodeValue;

                store.saveTiddler(titleText, titleText, descText + '\n\n' + linkText, config.options.txtUserName, null, tagName);
            }
            catch(e) {
                store.saveTiddler('Blog ' + x.length + '/' + i + ' failed', 'Blog ' + x.length + '/' + i + ' failed', 'failed', config.options.txtUserName);
            }            
        }   
    }      
    catch(ex) {
        //For some reason xmlhttp.send() fails every now and again. I've only really seen it happen once in a row. 
        //At the moment this is dirty code that just recurses again, but no more than 3 times in a row
        if (tryX < 4) {
            alert('There was an error getting feed: ' + feedURL + ' trying again. Attempt: ' + tryX + '/3');
            this.reader(feedURL, tagName, (tryX + 1));
        } else {
            alert('Sorry getting feed: ' + feedURL + ' has failed. Perhaps the URL is wrong or your browser does not support Ajax');
        }
    }
};
//}}}
This is a version of TiddlyWiki that pulls in your favourite RSS feeds as tiddlers into your TiddlyWiki using the RSSReaderMacro.

Click on the ManageRSSFeeds tiddly to open the UI to manage your feeds. This only works in FireFox at the moment.

If you don't have FireFox you can manually edit your feed list by modifying the tiddler RSSFeedList. 
Simply list the RSS feeds with the tagname that you want for that feed in the 
Make sure you coma separate each item.

Please note that this currently only works (meaning tested) in FireFox and IE (not UI though).
manage your favourite RSS feeds in your TiddlyWiki
RSSWiki
div.feedSelector {border-width:0px; border:0; padding:5px;} 
div.feedSelector TABLE {border-width:0px; border:0; } 
div.feedSelector SELECT {width:300px;} 
div.feedSelector INPUT.Text {width:300px;} 
div.feedSelector INPUT.Button {width:100px;}
alert('Hello');
<<option txt>>
Type the text for 'systemConfig'