<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>Climate Change 2.0 | plugins</title>
<link>http://www.climate-change-two.net/</link>
<description>tiddlywiki plugins only</description>
<language>en-us</language>
<copyright>Copyright 2007 Webster</copyright>
<pubDate>Thu, 22 Nov 2007 17:30:28 GMT</pubDate>
<lastBuildDate>Thu, 22 Nov 2007 17:30:28 GMT</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>TiddlyWiki 2.2.5</generator>
<item>
<title>TwHelpSearchPlugin</title>
<description>&lt;strong&gt;TwHelpSearch&lt;/strong&gt; for TiddlyWiki 2.0.x to 2.2.x&lt;br&gt;&lt;sup&gt;author: Morris S. Gray&lt;br&gt;source: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin&quot; href=&quot;http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin&quot; class=&quot;externalLink&quot;&gt;http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin&lt;/a&gt;&lt;br&gt;license: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://creativecommons.org/licenses/by-sa/2.5/&quot; href=&quot;http://creativecommons.org/licenses/by-sa/2.5/&quot; class=&quot;externalLink&quot;&gt;Creative Commons Attribution-ShareAlike 2.5 License&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;&lt;br&gt;&lt;table class=&quot;twtable&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td colspan=&quot;4&quot; align=&quot;left&quot;&gt;&lt;a class=&quot;button&quot; title=&quot;Search this TiddlyWiki&quot; href=&quot;javascript:;&quot;&gt;search&lt;/a&gt;&lt;input autocomplete=&quot;off&quot; accesskey=&quot;F&quot; size=&quot;15&quot; type=&quot;text&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td colspan=&quot;3&quot; align=&quot;center&quot;&gt;look for in&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkSearchTitles&quot; type=&quot;checkbox&quot;&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkSearchText&quot; type=&quot;checkbox&quot;&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkSearchTags&quot; type=&quot;checkbox&quot;&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkHoldSearches&quot; type=&quot;checkbox&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;titles&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;text&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;tags&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;hold&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;strong&gt;A Plugin Tweak for:&lt;/strong&gt; SearchOptionsPlugin&lt;br&gt;&lt;h5&gt;Description&lt;/h5&gt;&lt;blockquote&gt;This plugin defines an alternative format for the SearchResults tiddler that is generated by the SearchOptionsPlugin . It presents the search results in tabular form numbering the rows; and showing the tiddler title, the size in bytes, and the tags.  It is ready to be used with the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://solo.dc3.com/tw/#SortableGridPlugin&quot; href=&quot;http://solo.dc3.com/tw/#SortableGridPlugin&quot; class=&quot;externalLink&quot;&gt;SortableGridPlugin&lt;/a&gt; (check versions) so any column can be sorted; such as size in ascending or descending order.&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Installation&lt;/h5&gt;&lt;blockquote&gt;Import (or copy/paste) the following tiddlers into your TiddlyWiki:&lt;br&gt;&lt;ul&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin&quot; href=&quot;http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin&quot; class=&quot;externalLink&quot;&gt;http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt;SearchOptionsPlugin from &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.tiddlytools.com/#SearchOptionsPlugin&quot; href=&quot;http://www.tiddlytools.com/#SearchOptionsPlugin&quot; class=&quot;externalLink&quot;&gt;http://www.tiddlytools.com/#SearchOptionsPlugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Get more documentation here TwHelpSearchDoc or here:&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://twhelp.tiddlyspot.com/#TwHelpSearchDoc&quot; href=&quot;http://twhelp.tiddlyspot.com/#TwHelpSearchDoc&quot; class=&quot;externalLink&quot;&gt;http://twhelp.tiddlyspot.com/#TwHelpSearchDoc&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;h5&gt;Revision History&lt;/h5&gt;&lt;blockquote&gt;&lt;br&gt;&lt;strong&gt;2007.09.12  [1.0.6]&lt;/strong&gt;&lt;br&gt;Added overflow scroll to TWHelp-SearchResults for long titles or tags.&lt;br&gt;&lt;strong&gt;2006.02.03  [1.0.5]&lt;/strong&gt;&lt;br&gt;Added facility for holding the results of multiple searches with tick box on dashboard.&lt;br&gt;&lt;strong&gt;2006.02.02  [1.0.4]&lt;/strong&gt;&lt;br&gt;Added several options, cleaned up design.Planning one version basic and one with added options this is the added options version.&lt;br&gt;&lt;strong&gt;2006.01.27  [1.0.3&lt;/strong&gt;&lt;br&gt;Added a column for the size of the text in each tiddler, this does not include the size of the title or tags.  Added overall TW statistics button requires TiddlerStatsPlugin.&lt;br&gt;&lt;strong&gt;2006.01.23 [1.0.2 ]&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;a)&lt;/strong&gt;Changed function reportSearchResults(text,matches) to  window.reportSearchResults=function(text,matches)&lt;br&gt;&lt;strong&gt;b)&lt;/strong&gt;Added a line so that Incremental Search is automatically disabled config.options.chkSearchIncremental=false; turn off key-by-key searching&lt;br&gt;&lt;strong&gt;c)&lt;/strong&gt;Removed space inside parens. bgcolor(#fe8 )&quot; to &quot;bgcolor(#fe8)&quot;.  This&lt;br&gt;is what was causing IE to 'crap out' halfway through drawing the table&lt;br&gt;headings.&lt;br&gt;&lt;strong&gt;d)&lt;/strong&gt;Added &lt;code&gt;config.options.chkSearchList=true;&lt;/code&gt;&lt;br&gt;&lt;strong&gt;2006.01.20 [1.0.1]&lt;/strong&gt;&lt;br&gt;ELS: reportSearchResults() definition moved to this Plugin Tweak tiddler and removed extranous code&lt;br&gt;&lt;strong&gt;2006.01.19 [1.0.0]&lt;/strong&gt;&lt;br&gt;This is an adaptation of Eric Shulman's SearchOptionsPlugin. Adapted by MorrisGray to provide search results in table form. All the necessary controls for refining the search is provided within the table including slide-down access to &lt;a tiddlylink=&quot;AdvancedOptions&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#AdvancedOptions&quot; href=&quot;http://www.climate-change-two.net/#AdvancedOptions&quot; class=&quot;externalLink&quot;&gt;AdvancedOptions&lt;/a&gt;.&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Code&lt;/h5&gt;&lt;br&gt;&lt;pre&gt;if (config.options.chkSinglePageMode==undefined) config.options.chkSinglePageMode=false;
if (config.options.chkRegExpSearch==undefined) config.options.chkRegExpSearch=true;
if (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=false;
if (config.options.chkSearchText==undefined) config.options.chkSearchText=true;
if (config.options.chkSearchTags==undefined) config.options.chkSearchTags=false;
if (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=true;
if (config.options.chkSearchList==undefined) config.options.chkSearchList=true;
if (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=false;
if (config.options.chkToggleLinks==true) config.options.chkToggleLinks=false;
if (config.options.chkHoldSearches==undefined) config.options.chkHoldSearches=false;
if (config.options.chkSortTags==undefined) config.options.chkSortTags=false;

config.options.chkToggleLinks=false;
config.options.chkSinglePageMode=false;
config.options.chkHoldSearches=false;
config.options.chkSearchIncremental=false;
config.options.chkHttpReadOnly = false;
config.options.chkRegExpSearch=true;
config.options.chkSearchList=true;
config.options.chkToggleLinks=false;

config.shadowTiddlers.AdvancedOptions += &quot;\n&amp;lt;&amp;lt;option chkHoldSearches&amp;gt;&amp;gt; Hold search results&quot;;
&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;// Give the report a custom name
config.macros.search.reportTitle=&quot;TWHelp-SearchResults&quot;;

// Override default SearchOptionsPlugin formatting for SearchResults tiddler
window.reportSearchResults=function(text,matches)

{
  
        var title=config.macros.search.reportTitle
	config.macros.search.reportTitle;
	var q = config.options.chkRegExpSearch ? &quot;/&quot; : &quot;'&quot;;
        if (!config.options.chkHoldSearches)  body=&quot;&quot;;

body+=&quot;\n|&amp;gt;|bgcolor(#8af):@@color(#000080):''&quot;+config.macros.search.successMsg.format([matches.length,q+&quot;{{{&quot;+text+&quot;}}}&quot;+q])+&quot;''@@|bgcolor(#8af):  @@color(#A00000): SearchHelp@@ &quot;+&quot;|&quot;+&quot;\n&quot;;
        body+=&quot;|&amp;gt;|&amp;gt;|bgcolor(#E3FFE3):&amp;lt;&amp;lt;search&amp;gt;&amp;gt; &amp;lt;&amp;lt;option chkSearchTitles&amp;gt;&amp;gt; Titles &amp;lt;&amp;lt;option chkSearchText&amp;gt;&amp;gt; Text &amp;lt;&amp;lt;option chkSearchTags&amp;gt;&amp;gt;Tags &amp;lt;&amp;lt;option chkHoldSearches&amp;gt;&amp;gt; Hold |&quot;+&quot;\n&quot;;
        body+=&quot;\n|&amp;amp;nbsp;|bgcolor(#8af): @@color(#000080):sort by: ''Titles''@@ |bgcolor(#8af): @@color(#000080): ''Size'' (bytes)@@ |bgcolor(#8af): @@color(#000080): ''Tags''@@ |h&quot;;
	for(var t=0;t&amp;lt;matches.length;t++) 
        body+=&quot;\n&quot;+&quot;| &quot;+(t+1)+&quot;|[[&quot;+matches[t].title+&quot;]]| &quot;+matches[t].text.length+&quot;|&quot;+matches[t].tags+&quot;|&quot;;
        body+=&quot;\n&quot;;
       


	// create/update the tiddler
	var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();
	tiddler.set(title,body,config.options.txtUserName,(new Date()),&quot;excludeLists excludeSearch killbookmark&quot;);
	store.addTiddler(tiddler); story.closeTiddler(title);


	// render tiddler
	var oldprompt=config.macros.search.label;
	config.macros.search.label=&quot;search again&quot;; // use alternate &quot;search again&quot; label
        story.displayTiddler(null,title,1); // force refresh
	config.macros.search.label=oldprompt;	// restore standard search label
}
&lt;/pre&gt;</description>
<category>quickedit</category>
<category>systemConfig</category>
<link>http://www.climate-change-two.net/#TwHelpSearchPlugin</link>
<pubDate>Wed, 31 Oct 2007 18:31:00 GMT</pubDate>
</item>
<item>
<title>YourSearchPlugin macro</title>
<description>&lt;table class=&quot;twtable&quot;&gt;&lt;thead&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;&lt;strong&gt;YourSearchPlugin&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Author&lt;/td&gt;&lt;td&gt;&lt;a tiddlylink=&quot;Udo Borkowski&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#Udo Borkowski&quot; href=&quot;http://www.climate-change-two.net/#Udo%20Borkowski&quot; class=&quot;externalLink&quot;&gt;Udo Borkowski&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Version&lt;/td&gt;&lt;td&gt;2.02 (2006.02.13)&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Description&lt;/td&gt;&lt;td&gt;Provide enhanced search options.&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Source&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://tiddlywiki.abego-software.de/#YourSearchPlugin&quot; href=&quot;http://tiddlywiki.abego-software.de/#YourSearchPlugin&quot; class=&quot;externalLink&quot;&gt;http://tiddlywiki.abego-software.de/#YourSearchPlugin&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Licence&lt;/td&gt;&lt;td&gt;&lt;a tiddlylink=&quot;BSD open source licence&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#BSD open source licence&quot; href=&quot;http://www.climate-change-two.net/#BSD%20open%20source%20licence&quot; class=&quot;externalLink&quot;&gt;BSD open source licence&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;TW Version&lt;/td&gt;&lt;td&gt;2.0&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Browser:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Firefox 1.0.4+; Firefox 1.5+; Internet Explorer 6.0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span tiddler=&quot;YourSearch Introduction&quot; refresh=&quot;content&quot;&gt;&lt;/span&gt;&lt;br&gt;For more information see &lt;a tiddlylink=&quot;YourSearch Help&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#YourSearch Help&quot; href=&quot;http://www.climate-change-two.net/#YourSearch%20Help&quot; class=&quot;externalLink&quot;&gt;Help&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;h1&gt;Compatibility&lt;/h1&gt;This plugin requires TiddlyWiki 2.0. &lt;br&gt;Use &lt;a target=&quot;_blank&quot; title=&quot;External link to http://tiddlywiki.abego-software.de/#YourSearchPlugin-1.0.1&quot; href=&quot;http://tiddlywiki.abego-software.de/#YourSearchPlugin-1.0.1&quot; class=&quot;externalLink&quot;&gt;http://tiddlywiki.abego-software.de/#YourSearchPlugin-1.0.1&lt;/a&gt; for older TiddlyWiki versions.&lt;br&gt;&lt;br&gt;&lt;h1&gt;Revision history&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; v2.0.2 (2006-02-13)&lt;ul&gt;&lt;li&gt; Bugfix for Firefox 1.5.0.1 related to the &quot;Show prefix&quot; checkbox. Thanks to Ted Pavlic for reporting and to BramChen for fixing. &lt;/li&gt;&lt;li&gt; Internal&lt;ul&gt;&lt;li&gt; Make &quot;JSLint&quot; conform&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; v2.0.1 (2006-02-05)&lt;ul&gt;&lt;li&gt; Support &quot;Exact Word Match&quot; (use '=' to prefix word)&lt;/li&gt;&lt;li&gt; Support default filter settings (when no filter flags are given in search term)&lt;/li&gt;&lt;li&gt; Rework on the &quot;less than 3 chars search text&quot; feature (thanks to EricShulman)&lt;/li&gt;&lt;li&gt; Better support SinglePageMode when doing &quot;Open all tiddlers&quot; (thanks to EricShulman)&lt;/li&gt;&lt;li&gt; Support Firefox 1.5.0.1&lt;/li&gt;&lt;li&gt; Bug: Fixed a hilite bug in &quot;classic search mode&quot; (thanks to EricShulman)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; v2.0.0 (2006-01-16)&lt;ul&gt;&lt;li&gt; Add User Interface&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; v1.0.1 (2006-01-06)&lt;ul&gt;&lt;li&gt; Support TiddlyWiki 2.0&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; v1.0.0 (2005-12-28)&lt;ul&gt;&lt;li&gt; initial version&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;Code&lt;/h1&gt;The code is compressed. &lt;br&gt;&lt;br&gt;You can retrieve a readable source code version from &lt;a target=&quot;_blank&quot; title=&quot;External link to http://tiddlywiki.abego-software.de/#YourSearchPlugin-src&quot; href=&quot;http://tiddlywiki.abego-software.de/#YourSearchPlugin-src&quot; class=&quot;externalLink&quot;&gt;http://tiddlywiki.abego-software.de/#YourSearchPlugin-src&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;h1&gt;Licence and Copyright&lt;/h1&gt;Copyright (c) abego Software GmbH, 2005-2006 (&lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.abego-software.de&quot; href=&quot;http://www.abego-software.de&quot; class=&quot;externalLink&quot;&gt;www.abego-software.de&lt;/a&gt;)&lt;br&gt;&lt;br&gt;Redistribution and use in source and binary forms, with or without modification,&lt;br&gt;are permitted provided that the following conditions are met:&lt;br&gt;&lt;br&gt;Redistributions of source code must retain the above copyright notice, this&lt;br&gt;list of conditions and the following disclaimer.&lt;br&gt;&lt;br&gt;Redistributions in binary form must reproduce the above copyright notice, this&lt;br&gt;list of conditions and the following disclaimer in the documentation and/or other&lt;br&gt;materials provided with the distribution.&lt;br&gt;&lt;br&gt;Neither the name of abego Software nor the names of its contributors may be&lt;br&gt;used to endorse or promote products derived from this software without specific&lt;br&gt;prior written permission.&lt;br&gt;&lt;br&gt;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND ANY&lt;br&gt;EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES&lt;br&gt;OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT&lt;br&gt;SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,&lt;br&gt;INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED&lt;br&gt;TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR&lt;br&gt;BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN&lt;br&gt;CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN&lt;br&gt;ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH&lt;br&gt;DAMAGE.&lt;br&gt;</description>
<category>3rd party plugin</category>
<category>excludeLists</category>
<category>excludeSearch</category>
<category>plugin macro</category>
<category>systemConfig</category>
<category>abego software</category>
<category>systemConfigDisable</category>
<link>http://www.climate-change-two.net/#%5B%5BYourSearchPlugin%20macro%5D%5D</link>
<pubDate>Wed, 31 Oct 2007 17:17:00 GMT</pubDate>
</item>
<item>
<title>MultiRssPlugin</title>
<description>&lt;pre&gt;config.macros.saveRss = {};
config.macros.saveRss.handler = function(place)
{
	if(!readOnly)
		createTiddlyButton(place,'save rss','save rss',function(e){saveMultiRss();return false;});
}

window.getRssMarkers = function()
{
    var s = [];
    myregexp=/\|(?:.*?)\|(?:.*?)\|(.*?)\|(?:.*?)\|(.*?)\|/g;
    while((m = myregexp.exec(store.getTiddlerText(&quot;MultiRssConfig&quot;))) != null)
         s.push(&quot;&amp;lt;link rel='alternate' type='application/rss+xml' title='%0' href='%1'&amp;gt;&quot;.format([m[1].trim(),m[2].trim()]));
    return s.splice(1,s.length).join(&quot;\n&quot;);
}

updateMarkupBlock_old_multirss = window.updateMarkupBlock;
window.updateMarkupBlock = function (s,blockName,tiddlerName)
{
    s = updateMarkupBlock_old_multirss.apply(this,arguments);
    if (blockName == &quot;PRE-HEAD&quot;)
        s = lewcidRSSAddToMarkupBlock(s);
    return s;
}

window.lewcidRSSAddToMarkupBlock = function (s)
{
    var pos = s.indexOf(&quot;&amp;lt;!--PRE-HEAD-END--&amp;gt;&quot;);
    return ( s.substring(0,pos).replace(&quot;&amp;lt;link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'&amp;gt;&quot;,&quot;&quot;) + &quot;\n&quot; + getRssMarkers() + &quot;\n&quot; + s.substring(pos) );
}

TiddlyWiki.prototype.rssgetTiddlers = function(field,includeTag,excludeTag)
{
          var results = [];
          this.forEachTiddler(function(title,tiddler)
          {
          if(excludeTag == undefined || excludeTag == '' || tiddler.tags.find(excludeTag) == null)
                        if(includeTag == undefined || includeTag == '' || 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] &amp;lt; b[field]) ? -1 : +1; });
          return results;
}

window.generateRss = function (tiddlers,title,subtitle)
{
	var s = [];
	var d = new Date();
	var u = store.getTiddlerText(&quot;SiteUrl&quot;);
	s.push(&quot;&amp;lt;&quot; + &quot;?xml version=\&quot;1.0\&quot;?&quot; + &quot;&amp;gt;&quot;);
	s.push(&quot;&amp;lt;rss version=\&quot;2.0\&quot;&amp;gt;&quot;);
	s.push(&quot;&amp;lt;channel&amp;gt;&quot;);
	s.push(&quot;&amp;lt;title&quot; + &quot;&amp;gt;&quot; + ((title &amp;amp;&amp;amp; title != '') ? wikifyPlain(&quot;SiteTitle&quot;).htmlEncode()+ &quot; | &quot;+ title: wikifyPlain(&quot;SiteTitle&quot;).htmlEncode()) + &quot;&amp;lt;/title&quot; + &quot;&amp;gt;&quot;);
	if(u)
		s.push(&quot;&amp;lt;link&amp;gt;&quot; + u.htmlEncode() + &quot;&amp;lt;/link&amp;gt;&quot;);
	s.push(&quot;&amp;lt;description&amp;gt;&quot; + ((subtitle &amp;amp;&amp;amp; subtitle != '')? subtitle : wikifyPlain(&quot;SiteSubtitle&quot;).htmlEncode()) + &quot;&amp;lt;/description&amp;gt;&quot;);
	s.push(&quot;&amp;lt;language&amp;gt;en-us&amp;lt;/language&amp;gt;&quot;);
	s.push(&quot;&amp;lt;copyright&amp;gt;Copyright &quot; + d.getFullYear() + &quot; &quot; + config.options.txtUserName.htmlEncode() + &quot;&amp;lt;/copyright&amp;gt;&quot;);
	s.push(&quot;&amp;lt;pubDate&amp;gt;&quot; + d.toGMTString() + &quot;&amp;lt;/pubDate&amp;gt;&quot;);
	s.push(&quot;&amp;lt;lastBuildDate&amp;gt;&quot; + d.toGMTString() + &quot;&amp;lt;/lastBuildDate&amp;gt;&quot;);
	s.push(&quot;&amp;lt;docs&amp;gt;http://blogs.law.harvard.edu/tech/rss&amp;lt;/docs&amp;gt;&quot;);
	s.push(&quot;&amp;lt;generator&amp;gt;TiddlyWiki &quot; + version.major + &quot;.&quot; + version.minor + &quot;.&quot; + version.revision + &quot;&amp;lt;/generator&amp;gt;&quot;);
	if (!tiddlers)
        var tiddlers = store.getTiddlers(&quot;modified&quot;,&quot;excludeLists&quot;);
	var n = config.numRssItems &amp;gt; tiddlers.length ? 0 : tiddlers.length-config.numRssItems;
	for (var t=tiddlers.length-1; t&amp;gt;=n; t--)
		s.push(tiddlers[t].saveToRss(u));
	s.push(&quot;&amp;lt;/channel&amp;gt;&quot;);
	s.push(&quot;&amp;lt;/rss&amp;gt;&quot;);
	return s.join(&quot;\n&quot;);
}


old_multiRss_saveChanges = window.saveChanges;
window.saveChanges = function(onlyIfDirty)
{
    var rssStatus = config.options.chkGenerateAnRssFeed;
    config.options.chkGenerateAnRssFeed = false;
    old_multiRss_saveChanges.apply(this,arguments);
    config.options.chkGenerateAnRssFeed = rssStatus;
    if(config.options.chkGenerateAnRssFeed)
        saveMultiRss();
}

window.saveMultiRss = function()
{
      var rssIndex = store.getTiddlerText(&quot;MultiRssConfig&quot;).split(&quot;\n&quot;);
      rssIndex = rssIndex.splice(1,rssIndex.length);
      for (var i=0; i&amp;lt;rssIndex.length; i++)
          {
          var rss = rssIndex[i].split(&quot;|&quot;);
          var localPath = getLocalPath(document.location.toString());
          var rssPath = getRssPath(localPath)+ (rss[5].trim());
          var rssSave = saveFile(rssPath,convertUnicodeToUTF8(generateRss(store.rssgetTiddlers(&quot;modified&quot;,rss[1].trim(),rss[2].trim()),rss[3].trim(),rss[4].trim())));
          if(rssSave)
              displayMessage(config.messages.rssSaved,&quot;file://&quot; + rssPath);
          else
              alert(config.messages.rssFailed);
          }
}

window.getRssPath = function(str) {
    var slash = (str.indexOf('/')!=-1)? '/':'\\';
    return str.substring(0,str.lastIndexOf(slash) + 1);
}

config.shadowTiddlers.MultiRssConfig = &quot;| !includeTag | !excludeTag | !title | !description | !filename |\n| rss | |rss only| this feed has rss tiddlers only | rss-feed.xml |\n|  systemConfig| |plugins| tiddlywiki plugins only |plugins.xml|\n| | systemConfig excludeRSS| Main RSS feed | everything but plugins | rss.xml|&quot;;
&lt;/pre&gt;</description>
<category>systemConfig</category>
<category>rss file</category>
<link>http://www.climate-change-two.net/#MultiRssPlugin</link>
<pubDate>Sat, 06 Oct 2007 19:01:00 GMT</pubDate>
</item>
<item>
<title>Better timeline plugin macro</title>
<description>&lt;table class=&quot;twtable&quot;&gt;&lt;thead&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;&lt;strong&gt;timeline&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Author&lt;/td&gt;&lt;td&gt;&lt;a tiddlylink=&quot;Saq Imtiaz&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#Saq Imtiaz&quot; href=&quot;http://www.climate-change-two.net/#Saq%20Imtiaz&quot; class=&quot;externalLink&quot;&gt;Saq Imtiaz&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Version&lt;/td&gt;&lt;td&gt;0.5 bet&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Description&lt;/td&gt;&lt;td&gt;A replacement for the core timeline macro that offers more features&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Source&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://lewcid.googlepages.com/lewcid.html#BetterTimelineMacro&quot; href=&quot;http://lewcid.googlepages.com/lewcid.html#BetterTimelineMacro&quot; class=&quot;externalLink&quot;&gt;http://lewcid.googlepages.com/lewcid.html#BetterTimelineMacro&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;TW Version&lt;/td&gt;&lt;td&gt;2.x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3&gt;Features:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;list tiddlers with only specific tag&lt;/li&gt;&lt;li&gt;exclude tiddlers with a particular tag&lt;/li&gt;&lt;li&gt;limit entries to any number of days, for example one week&lt;/li&gt;&lt;li&gt;specify a start date for the timeline, only tiddlers after that date will be listed.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;h3&gt;Installation:&lt;/h3&gt;Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.&lt;br&gt;&lt;br&gt;&lt;h3&gt;Syntax:&lt;/h3&gt;&lt;code&gt;&amp;lt;&amp;lt;timeline better:true&amp;gt;&amp;gt;&lt;/code&gt;&lt;br&gt;&lt;strong&gt;the param &lt;a target=&quot;_blank&quot; title=&quot;External link to better:true&quot; href=&quot;better:true&quot; class=&quot;externalLink&quot;&gt;better:true&lt;/a&gt; enables the advanced features, without it you will get the old timeline behaviour.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;additonal params:&lt;br&gt;(use only the ones you want)&lt;br&gt;&lt;code&gt;&amp;lt;&amp;lt;timeline better:true  onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30&amp;gt;&amp;gt;&lt;/code&gt;&lt;br&gt;&lt;br&gt;&lt;strong&gt;explanation of syntax:&lt;/strong&gt;&lt;br&gt;onlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.&lt;br&gt;excludeTag: tiddlers with this tag will not be listed.&lt;br&gt;sortBy: sort tiddlers by date modified or date created. Possible values are modified or created.&lt;br&gt;firstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006&lt;br&gt;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.&lt;br&gt;maxEntries: limit the total number of entries in the timeline.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h3&gt;History:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;28-07-06: ver 0.5 beta, first release&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;h3&gt;Code&lt;/h3&gt;&lt;pre&gt;// 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] &amp;lt; 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(&quot;list&quot;,null,true);
          var betterMode = getParam(args, &quot;better&quot;, &quot;false&quot;);
          if (betterMode == 'true')
          {
          var sortBy = getParam(args,&quot;sortBy&quot;,&quot;modified&quot;);
          var excludeTag = getParam(args,&quot;excludeTag&quot;,undefined);
          var includeTag = getParam(args,&quot;onlyTag&quot;,undefined);
          var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);
          var firstDayParam = getParam(args,&quot;firstDay&quot;,undefined);
          var firstDay = (firstDayParam!=undefined)? firstDayParam: &quot;00010101&quot;;
          var lastDay = &quot;&quot;;
          var field= sortBy;
          var maxDaysParam = getParam(args,&quot;maxDays&quot;,undefined);
          var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;
          var maxEntries = getParam(args,&quot;maxEntries&quot;,undefined);
          var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;
          for(var t=tiddlers.length-1; t&amp;gt;=last; t--)
                  {
                  var tiddler = tiddlers[t];
                  var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
                  if ((theDay&amp;gt;=firstDay)&amp;amp;&amp;amp; (tiddler[field].getTime()&amp;gt; (new Date()).getTime() - maxDays))
                     {
                     if(theDay != lastDay)
                               {
                               var theDateList = document.createElement(&quot;ul&quot;);
                               place.appendChild(theDateList);
                               createTiddlyElement(theDateList,&quot;li&quot;,null,&quot;listTitle&quot;,tiddler[field].formatString(this.dateFormat));
                               lastDay = theDay;
                               }
                  var theDateListItem = createTiddlyElement(theDateList,&quot;li&quot;,null,&quot;listLink&quot;,null);
                  theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));
                  }
                  }
          }

          else
              {
              window.old_timeline_handler.apply(this,arguments);
              }
}
&lt;/pre&gt;</description>
<category>excludeLists</category>
<category>lewcidExtension</category>
<category>plugin macro</category>
<category>systemConfig</category>
<link>http://www.climate-change-two.net/#%5B%5BBetter%20timeline%20plugin%20macro%5D%5D</link>
<pubDate>Sun, 23 Sep 2007 18:27:00 GMT</pubDate>
</item>
<item>
<title>Include plugin</title>
<description>&lt;table class=&quot;twtable&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Name:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;abego.IncludePlugin&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Version:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;1.0.0 (2007-02-08)&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Type:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;plugin&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Source:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://tiddlywiki.abego-software.de/#IncludePlugin&quot; href=&quot;http://tiddlywiki.abego-software.de/#IncludePlugin&quot; class=&quot;externalLink&quot;&gt;http://tiddlywiki.abego-software.de/#IncludePlugin&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Author:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Udo Borkowski (ub [at] abego-software [dot] de)&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Documentation:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D&quot; href=&quot;http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D&quot; class=&quot;externalLink&quot;&gt;IncludePlugin Documentation&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Community:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;(&lt;a target=&quot;_blank&quot; title=&quot;External link to http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23IncludePlugin&quot; href=&quot;http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23IncludePlugin&quot; class=&quot;externalLink&quot;&gt;del.icio.us&lt;/a&gt;) (&lt;a target=&quot;_blank&quot; title=&quot;External link to http://groups.google.com/group/TiddlyWiki&quot; href=&quot;http://groups.google.com/group/TiddlyWiki&quot; class=&quot;externalLink&quot;&gt;Support&lt;/a&gt;)&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Copyright:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;span&gt;©&lt;/span&gt; 2007 &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.abego-software.de&quot; href=&quot;http://www.abego-software.de&quot; class=&quot;externalLink&quot;&gt;abego Software&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Licence:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.abego-software.de/legal/apl-v10.html&quot; href=&quot;http://www.abego-software.de/legal/apl-v10.html&quot; class=&quot;externalLink&quot;&gt;BSD open source license (abego Software)&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;strong&gt;CoreVersion:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2.1.3&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Browser:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Firefox 1.5.0.9 or better; Internet Explorer 6.0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;This plugin's source code is compressed (and hidden). Use this &lt;a target=&quot;_blank&quot; title=&quot;External link to http://tiddlywiki.abego-software.de/archive/IncludePlugin/Plugin-Include-src.1.0.0.js&quot; href=&quot;http://tiddlywiki.abego-software.de/archive/IncludePlugin/Plugin-Include-src.1.0.0.js&quot; class=&quot;externalLink&quot;&gt;link&lt;/a&gt; to get the readable source code.&lt;br&gt;&lt;em&gt;&lt;br&gt;&lt;/em&gt;</description>
<category>systemConfig</category>
<category>include</category>
<category>systemConfigDisable</category>
<category>abego software</category>
<link>http://www.climate-change-two.net/#%5B%5BInclude%20plugin%5D%5D</link>
<pubDate>Sun, 23 Sep 2007 18:23:00 GMT</pubDate>
</item>
<item>
<title>IntelliTaggerPlugin</title>
<description>&lt;table class=&quot;twtable&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;em&gt;Name:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;IntelliTaggerPlugin&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;em&gt;Version:&lt;/em&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.0.0&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td align=&quot;left&quot;&gt;&lt;em&gt;Date:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;26 April 2006 - 2006-04-26&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;em&gt;Tags:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;tagging intellitagger plugin 'abego software' intelligence 'key words'&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;em&gt;Type:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;plugin&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;em&gt;Source:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin&quot; href=&quot;http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin&quot; class=&quot;externalLink&quot;&gt;http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;em&gt;Author:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;Udo Borkowski (ub [at] abego-software [dot] de)&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;em&gt;Documentation:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf&quot; href=&quot;http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf&quot; class=&quot;externalLink&quot;&gt;IntelliTaggerPlugin Documentation&lt;/a&gt; (pdf)&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;em&gt;Source Code:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to [http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin SourceCode&quot; href=&quot;%5Bhttp://tiddlywiki.abego-software.de/#IntelliTaggerPlugin%20SourceCode&quot; class=&quot;externalLink&quot;&gt;IntelliTaggerPlugin SourceCode&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;em&gt;Licence:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://tiddlywiki.abego-software.de/#BSD open source license (abego Software)&quot; href=&quot;http://tiddlywiki.abego-software.de/#BSD%20open%20source%20license%20%28abego%20Software%29&quot; class=&quot;externalLink&quot;&gt;BSD open source license (abego Software)&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;em&gt;TiddlyWiki:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;Version 2.0.8 or better&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;em&gt;Browser:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;Firefox 1.5.0.2 or better&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;em&gt; &lt;br&gt;&lt;/em&gt;</description>
<category>3rd party plugin</category>
<category>excludeLists</category>
<category>plugin macro</category>
<category>systemConfig</category>
<category>abego software</category>
<category>tag management</category>
<link>http://www.climate-change-two.net/#IntelliTaggerPlugin</link>
<pubDate>Sun, 23 Sep 2007 17:45:00 GMT</pubDate>
</item>
<item>
<title>Settings plugin macro</title>
<description>&lt;table class=&quot;twtable&quot;&gt;&lt;thead&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;&lt;strong&gt;SettingsPlugin&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Author&lt;/td&gt;&lt;td&gt;&lt;a tiddlylink=&quot;Udo Borkowski&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#Udo Borkowski&quot; href=&quot;http://www.climate-change-two.net/#Udo%20Borkowski&quot; class=&quot;externalLink&quot;&gt;Udo Borkowski&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Version&lt;/td&gt;&lt;td&gt;1.1.0 (2006.07.30)&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Description&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Source&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://tiddlywiki.abego-software.de/#SettingsPlugin&quot; href=&quot;http://tiddlywiki.abego-software.de/#SettingsPlugin&quot; class=&quot;externalLink&quot;&gt;http://tiddlywiki.abego-software.de/#SettingsPlugin&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Licence&lt;/td&gt;&lt;td&gt;&lt;a tiddlylink=&quot;BSD open source licence&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#BSD open source licence&quot; href=&quot;http://www.climate-change-two.net/#BSD%20open%20source%20licence&quot; class=&quot;externalLink&quot;&gt;BSD open source licence&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;TW Version&lt;/td&gt;&lt;td&gt;2.0.7&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table class=&quot;twtable&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Documentation:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a tiddlylink=&quot;SettingsPlugin Documentation&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#SettingsPlugin Documentation&quot; href=&quot;http://www.climate-change-two.net/#SettingsPlugin%20Documentation&quot; class=&quot;externalLink&quot;&gt;SettingsPlugin Documentation&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;strong&gt;SourceCode:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a tiddlylink=&quot;SettingsPlugin SourceCode&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#SettingsPlugin SourceCode&quot; href=&quot;http://www.climate-change-two.net/#SettingsPlugin%20SourceCode&quot; class=&quot;externalLink&quot;&gt;SettingsPlugin SourceCode&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Browser:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Firefox 1.5.0.2 or better; Internet Explorer 6.0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;sup&gt;This tiddler contains compressed source code. &lt;a tiddlylink=&quot;SettingsPlugin SourceCode&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#SettingsPlugin SourceCode&quot; href=&quot;http://www.climate-change-two.net/#SettingsPlugin%20SourceCode&quot; class=&quot;externalLink&quot;&gt;Full Source Code&lt;/a&gt;.&lt;/sup&gt;&lt;br&gt;&lt;em&gt; &lt;br&gt;&lt;br&gt;&lt;/em&gt;</description>
<category>plugin macro</category>
<category>systemConfig</category>
<category>systemConfigX</category>
<category>abego software</category>
<link>http://www.climate-change-two.net/#%5B%5BSettings%20plugin%20macro%5D%5D</link>
<pubDate>Sun, 23 Sep 2007 17:38:00 GMT</pubDate>
</item>
<item>
<title>ImportTiddlersPlugin</title>
<description>&lt;table class=&quot;twtable&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;ImportTiddlersPlugin&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Source&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.TiddlyTools.com/#ImportTiddlersPlugin&quot; href=&quot;http://www.TiddlyTools.com/#ImportTiddlersPlugin&quot; class=&quot;externalLink&quot;&gt;http://www.TiddlyTools.com/#ImportTiddlersPlugin&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Version&lt;/td&gt;&lt;td&gt;3.5.5&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Date&lt;/td&gt;&lt;td&gt;2007.06.25&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Author&lt;/td&gt;&lt;td&gt;Eric Shulman - ELS Design Studios&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;License&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.TiddlyTools.com/#LegalStatements&quot; href=&quot;http://www.TiddlyTools.com/#LegalStatements&quot; class=&quot;externalLink&quot;&gt;http://www.TiddlyTools.com/#LegalStatements&lt;/a&gt; &lt;br&gt;and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://creativecommons.org/licenses/by-sa/2.5/&quot; href=&quot;http://creativecommons.org/licenses/by-sa/2.5/&quot; class=&quot;externalLink&quot;&gt;Creative Commons Attribution-ShareAlike 2.5 License&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;CoreVersion&lt;/td&gt;&lt;td&gt;2.1&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Type&lt;/td&gt;&lt;td&gt;plugin&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Requires&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Overrides&lt;/td&gt;&lt;td&gt;config.macros.importTiddlers.handler&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Description&lt;/td&gt;&lt;td&gt;interactive controls for import/export with filtering.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;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.)&lt;br&gt;&lt;br&gt;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.&lt;br&gt;&lt;h5&gt;Usage&lt;/h5&gt;&lt;blockquote&gt;&lt;code&gt;&amp;lt;&amp;lt;importTiddlers&amp;gt;&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;&amp;lt;importTiddlers core&amp;gt;&amp;gt;&lt;/code&gt;&lt;br&gt;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)&lt;br&gt;&lt;br&gt;&lt;code&gt;&amp;lt;&amp;lt;importTiddlers link label tooltip&amp;gt;&amp;gt;&lt;/code&gt;&lt;br&gt;The &lt;strong&gt;link&lt;/strong&gt; keyword creates an &quot;import tiddlers&quot; link that when clicked to show/hide import control panel.  &lt;strong&gt;label&lt;/strong&gt; and &lt;strong&gt;tooltip&lt;/strong&gt; are optional text parameters (enclosed in quotes or &lt;code&gt;[[...]]&lt;/code&gt;, and allow you to override the default display text for the link and the mouseover help text, respectively.&lt;br&gt;&lt;br&gt;&lt;code&gt;&amp;lt;&amp;lt;importTiddlers inline&amp;gt;&amp;gt;&lt;/code&gt;&lt;br&gt;creates import control panel directly in tiddler content&lt;br&gt;&lt;br&gt;&lt;span style=&quot;position: static; display: block;&quot; id=&quot;importPanel&quot;&gt;&lt;!-- source and report --&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;	import from	&lt;input class=&quot;rad&quot; name=&quot;importFrom&quot; id=&quot;importFromFile&quot; value=&quot;file&quot; checked=&quot;checked&quot; onclick=&quot;document.getElementById('importLocalPanel').style.display=this.checked?'block':'none';			document.getElementById('importHTTPPanel').style.display=!this.checked?'block':'none'&quot; type=&quot;radio&quot;&gt; local file	&lt;input class=&quot;rad&quot; name=&quot;importFrom&quot; id=&quot;importFromWeb&quot; value=&quot;http&quot; onclick=&quot;document.getElementById('importLocalPanel').style.display=!this.checked?'block':'none';			document.getElementById('importHTTPPanel').style.display=this.checked?'block':'none'&quot; type=&quot;radio&quot;&gt; web server&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;	&lt;input class=&quot;chk&quot; id=&quot;chkImportReport&quot; checked=&quot;checked&quot; onclick=&quot;config.options['chkImportReport']=this.checked;&quot; type=&quot;checkbox&quot;&gt; create a report&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;!-- import from local file  --&gt;&lt;div id=&quot;importLocalPanel&quot; style=&quot;border-top: 1px solid rgb(153, 153, 153); display: block; margin-bottom: 5px; margin-top: 5px; padding-top: 3px;&quot;&gt;local document path/filename:&lt;br&gt;&lt;input id=&quot;fileImportSource&quot; size=&quot;57&quot; style=&quot;width: 100%;&quot; onkeyup=&quot;config.macros.importTiddlers.src=this.value&quot; onchange=&quot;config.macros.importTiddlers.src=this.value;&quot; type=&quot;file&quot;&gt;&lt;/div&gt;&lt;!--panel--&gt;&lt;!-- import from http server --&gt;&lt;div id=&quot;importHTTPPanel&quot; style=&quot;border-top: 1px solid rgb(153, 153, 153); display: none; margin-bottom: 5px; margin-top: 5px; padding-top: 3px;&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;	remote document URL:&lt;br&gt;&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;	&lt;input class=&quot;chk&quot; id=&quot;importUseProxy&quot; onclick=&quot;config.macros.importTiddlers.useProxy=this.checked;			document.getElementById('importSiteProxy').style.display=this.checked?'block':'none'&quot; type=&quot;checkbox&quot;&gt; use a proxy script&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;input id=&quot;importSiteProxy&quot; style=&quot;display: none; margin-bottom: 1px;&quot; onfocus=&quot;this.select()&quot; value=&quot;SiteProxy&quot; onkeyup=&quot;config.macros.importTiddlers.proxy=this.value&quot; onchange=&quot;config.macros.importTiddlers.proxy=this.value;&quot; type=&quot;text&quot;&gt;&lt;input id=&quot;importSourceURL&quot; onfocus=&quot;this.select()&quot; value=&quot;SiteUrl&quot; onkeyup=&quot;config.macros.importTiddlers.src=this.value&quot; onchange=&quot;config.macros.importTiddlers.src=this.value;&quot; type=&quot;text&quot;&gt;&lt;/div&gt;&lt;!--panel--&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;	select:	&lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectAll&quot; onclick=&quot;onClickImportButton(this)&quot; title=&quot;select all tiddlers&quot;&gt;		&amp;nbsp;all&amp;nbsp;&lt;/a&gt;	&lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectNew&quot; onclick=&quot;onClickImportButton(this)&quot; title=&quot;select tiddlers not already in destination document&quot;&gt;		&amp;nbsp;added&amp;nbsp;&lt;/a&gt; 	&lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectChanges&quot; onclick=&quot;onClickImportButton(this)&quot; title=&quot;select tiddlers that have been updated in source document&quot;&gt;		&amp;nbsp;changes&amp;nbsp;&lt;/a&gt; 	&lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectDifferences&quot; onclick=&quot;onClickImportButton(this)&quot; title=&quot;select tiddlers that have been added or are different from existing tiddlers&quot;&gt;		&amp;nbsp;differences&amp;nbsp;&lt;/a&gt; 	&lt;a href=&quot;JavaScript:;&quot; id=&quot;importToggleFilter&quot; onclick=&quot;onClickImportButton(this)&quot; title=&quot;show/hide selection filter&quot;&gt;		&amp;nbsp;filter&amp;nbsp;&lt;/a&gt; &lt;/td&gt;&lt;td align=&quot;right&quot;&gt;	&lt;a href=&quot;JavaScript:;&quot; id=&quot;importListSmaller&quot; onclick=&quot;onClickImportButton(this)&quot; title=&quot;reduce list size&quot;&gt;		&amp;nbsp;–&amp;nbsp;&lt;/a&gt;	&lt;a href=&quot;JavaScript:;&quot; id=&quot;importListLarger&quot; onclick=&quot;onClickImportButton(this)&quot; title=&quot;increase list size&quot;&gt;		&amp;nbsp;+&amp;nbsp;&lt;/a&gt;	&lt;a href=&quot;JavaScript:;&quot; id=&quot;importListMaximize&quot; onclick=&quot;onClickImportButton(this)&quot; title=&quot;maximize/restore list size&quot;&gt;		&amp;nbsp;=&amp;nbsp;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;select id=&quot;importList&quot; size=&quot;8&quot; multiple=&quot;multiple&quot; onchange=&quot;setTimeout('refreshImportList('+this.selectedIndex+')',1)&quot;&gt;	&lt;!-- NOTE: delay refresh so list is updated AFTER onchange event is handled --&gt;&lt;option value=&quot;&quot;&gt;please load a document...&lt;/option&gt;&lt;/select&gt;&lt;input class=&quot;chk&quot; id=&quot;chkAddTags&quot; checked=&quot;checked&quot; onclick=&quot;config.macros.importTiddlers.addTags=this.checked;&quot; type=&quot;checkbox&quot;&gt;add new tags &amp;nbsp;&lt;input class=&quot;chk&quot; id=&quot;chkImportTags&quot; checked=&quot;checked&quot; onclick=&quot;config.macros.importTiddlers.importTags=this.checked;&quot; type=&quot;checkbox&quot;&gt;import source tags &amp;nbsp;&lt;input class=&quot;chk&quot; id=&quot;chkKeepTags&quot; checked=&quot;checked&quot; onclick=&quot;config.macros.importTiddlers.keepTags=this.checked;&quot; type=&quot;checkbox&quot;&gt;keep existing tags&lt;br&gt;&lt;input id=&quot;txtNewTags&quot; size=&quot;15&quot; onkeyup=&quot;config.macros.importTiddlers.newTags=this.value&quot; autocomplete=&quot;off&quot; type=&quot;text&quot;&gt;&lt;div align=&quot;center&quot;&gt;	&lt;input id=&quot;importLoad&quot; class=&quot;importButton&quot; style=&quot;width: 32%;&quot; value=&quot;load&quot; title=&quot;load listbox with tiddlers from source document&quot; onclick=&quot;onClickImportButton(this)&quot; type=&quot;button&quot;&gt;	&lt;input id=&quot;importStart&quot; class=&quot;importButton&quot; style=&quot;width: 32%;&quot; value=&quot;import&quot; title=&quot;add selected source tiddlers to the current document&quot; onclick=&quot;onClickImportButton(this)&quot; type=&quot;button&quot;&gt;	&lt;input id=&quot;importClose&quot; class=&quot;importButton&quot; style=&quot;width: 32%;&quot; value=&quot;close&quot; title=&quot;clear listbox or hide control panel&quot; onclick=&quot;onClickImportButton(this)&quot; type=&quot;button&quot;&gt;&lt;/div&gt;&lt;div id=&quot;importCollisionPanel&quot;&gt;	tiddler already exists:	&lt;input id=&quot;importNewTitle&quot; size=&quot;15&quot; autocomplete=&quot;off&amp;quot;&quot; type=&quot;text&quot;&gt;	&lt;div align=&quot;center&quot;&gt;	&lt;input id=&quot;importSkip&quot; class=&quot;importButton&quot; style=&quot;width: 23%;&quot; value=&quot;skip&quot; title=&quot;do not import this tiddler&quot; onclick=&quot;onClickImportButton(this)&quot; type=&quot;button&quot;&gt;	&lt;input id=&quot;importRename&quot; class=&quot;importButton&quot; style=&quot;width: 23%;&quot; value=&quot;rename&quot; title=&quot;rename the incoming tiddler&quot; onclick=&quot;onClickImportButton(this)&quot; type=&quot;button&quot;&gt;	&lt;input id=&quot;importMerge&quot; class=&quot;importButton&quot; style=&quot;width: 23%;&quot; value=&quot;merge&quot; title=&quot;append the incoming tiddler to the existing tiddler&quot; onclick=&quot;onClickImportButton(this)&quot; type=&quot;button&quot;&gt;	&lt;input id=&quot;importReplace&quot; class=&quot;importButton&quot; style=&quot;width: 23%;&quot; value=&quot;replace&quot; title=&quot;discard the existing tiddler&quot; onclick=&quot;onClickImportButton(this)&quot; type=&quot;button&quot;&gt;	&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;Press &lt;strong&gt;[browse]&lt;/strong&gt; to select a TiddlyWiki document file to import, and then press &lt;strong&gt;[open]&lt;/strong&gt;.  Alternatively, you can type in the path/filename or a remote document URL (starting with &lt;a target=&quot;_blank&quot; title=&quot;External link to http://&quot; href=&quot;http://&quot; class=&quot;externalLink&quot;&gt;http://&lt;/a&gt;).  When you have entered the desired source location, press &lt;strong&gt;[load]&lt;/strong&gt; to retrieve the tiddlers from the remote source.  &lt;em&gt;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.&lt;/em&gt;&lt;br&gt;&lt;br&gt;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 &lt;strong&gt;[select all]&lt;/strong&gt; to quickly highlight all tiddler titles in the list.  Use the &lt;strong&gt;[-]&lt;/strong&gt;, &lt;strong&gt;[+]&lt;/strong&gt;, or &lt;strong&gt;[=]&lt;/strong&gt; 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 &lt;strong&gt;[import]&lt;/strong&gt; to begin copying them to the current TiddlyWiki document.&lt;br&gt;&lt;br&gt;&lt;strong&gt;select: all, new, changes, or differences&lt;/strong&gt;&lt;br&gt;&lt;br&gt;You can click on &lt;strong&gt;all&lt;/strong&gt;, &lt;strong&gt;new&lt;/strong&gt;, &lt;strong&gt;changes&lt;/strong&gt;, or &lt;strong&gt;differences&lt;/strong&gt; 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:&lt;br&gt;&lt;blockquote&gt;&lt;strong&gt;&quot;all&quot;&lt;/strong&gt; selects ALL tiddlers from the import source document, even if they have not been changed.&lt;br&gt;&lt;strong&gt;&quot;new&quot;&lt;/strong&gt; selects only tiddlers that are found in the import source document, but do not yet exist in the destination document&lt;br&gt;&lt;strong&gt;&quot;changes&quot;&lt;/strong&gt; selects only tiddlers that exist in both documents but that are newer in the source document&lt;br&gt;&lt;strong&gt;&quot;differences&quot;&lt;/strong&gt; selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)&lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;strong&gt;Import Tagging:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;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 &quot;add tags&quot; input field, and then &lt;em&gt;added&lt;/em&gt; to the existing tags for each tiddler as it is imported.&lt;br&gt;&lt;br&gt;&lt;strong&gt;Skip, Rename, Merge, or Replace:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;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: &lt;strong&gt;[skip]&lt;/strong&gt;, &lt;strong&gt;[rename]&lt;/strong&gt;, &lt;strong&gt;[merge]&lt;/strong&gt; and &lt;strong&gt;[replace]&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;To bypass importing this tiddler, press &lt;strong&gt;[skip]&lt;/strong&gt;.  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 &lt;strong&gt;[rename]&lt;/strong&gt;.   Press &lt;strong&gt;[merge]&lt;/strong&gt; to combine the content from both tiddlers into a single tiddler.  Press &lt;strong&gt;[replace]&lt;/strong&gt; to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.&lt;br&gt;&lt;br&gt;&lt;em&gt;Note: if both the title &lt;strong&gt;and&lt;/strong&gt; modification date&lt;/em&gt;&lt;em&gt;/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.&lt;/em&gt;&lt;br&gt;&lt;br&gt;&lt;strong&gt;Import Report History&lt;/strong&gt;&lt;br&gt;&lt;br&gt;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.&lt;br&gt;&lt;br&gt;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 &lt;em&gt;added&lt;/em&gt; to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.&lt;br&gt;&lt;br&gt;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.&lt;br&gt;&lt;br&gt;Note: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the &quot;create a report&quot; checkbox before beginning the import processing.&lt;br&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Installation&lt;/h5&gt;&lt;blockquote&gt;copy/paste the following tiddlers into your document:&lt;br&gt;&lt;strong&gt;ImportTiddlersPlugin&lt;/strong&gt; &lt;br&gt;&lt;strong&gt;ImportTiddlersPluginPatch2.1.x&lt;/strong&gt; (only for installation in TW2.1.x or earlier)&lt;br&gt;(both tagged with &lt;span class=&quot;quickopentag&quot;&gt;&lt;a tiddlylink=&quot;systemConfig&quot; refresh=&quot;link&quot; tip=&quot;The ''systemConfig'' tag is used for [[Plugin Macros]] and instructs TiddlyWiki to include the plugin in its J&quot; class=&quot;tiddlyLink tiddlyLinkExisting&quot; title=&quot;&quot; href=&quot;javascript:;&quot;&gt;systemConfig&lt;/a&gt;&lt;a tag=&quot;systemConfig&quot; class=&quot;button&quot; title=&quot;Show tiddlers tagged with 'systemConfig'&quot; href=&quot;javascript:;&quot;&gt;▾&lt;/a&gt;&lt;/span&gt;)&lt;br&gt;&lt;blockquote&gt;Important Notes:&lt;br&gt;* As of 6/27/2007, &quot;patch&quot; functions that provide backward-compatibility with TW2.1.x and earlier have been split into a separate &lt;a tiddlylink=&quot;ImportTiddlersPluginPatch2.1.x&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#ImportTiddlersPluginPatch2.1.x&quot; href=&quot;http://www.climate-change-two.net/#ImportTiddlersPluginPatch2.1.x&quot; class=&quot;externalLink&quot;&gt;ImportTiddlersPluginPatch2.1.x&lt;/a&gt; tiddler to reduce installation overhead for &lt;em&gt;this&lt;/em&gt; plugin.  You only need to install this additional plugin tiddler when using ImportTiddlersPlugin in documents using TW2.1.x or earlier.&lt;br&gt;* As of 3/21/2007, the interactive &lt;code&gt;&amp;lt;&amp;lt;importTiddlers&amp;gt;&amp;gt;&lt;/code&gt; and non-interactive &lt;code&gt;&amp;lt;&amp;lt;loadTiddlers&amp;gt;&amp;gt;&lt;/code&gt; macro definitions and related code have been split into separate &lt;a tiddlylink=&quot;ImportTiddlersPlugin&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#ImportTiddlersPlugin&quot; href=&quot;http://www.climate-change-two.net/#ImportTiddlersPlugin&quot; class=&quot;externalLink&quot;&gt;ImportTiddlersPlugin&lt;/a&gt; and &lt;a tiddlylink=&quot;LoadTiddlersPlugin&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#LoadTiddlersPlugin&quot; href=&quot;http://www.climate-change-two.net/#LoadTiddlersPlugin&quot; class=&quot;externalLink&quot;&gt;LoadTiddlersPlugin&lt;/a&gt; to permit selective installation of either the interactive and/or non-interactive macro functions&lt;br&gt;&lt;/blockquote&gt;&lt;strong&gt;Quick Installation Tip #1:&lt;/strong&gt;&lt;br&gt;If you are using an unmodified version of TiddlyWiki (core release version &lt;span&gt;2.2.5&lt;/span&gt;), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (&lt;strong&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to TW+ImportExport.html&quot; href=&quot;TW+ImportExport.html&quot; class=&quot;externalLink&quot;&gt;download from here&lt;/a&gt;&lt;/strong&gt;), and then simply import all your content from your old document into this new, empty document.&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Revision History&lt;/h5&gt;&lt;blockquote&gt;&lt;strong&gt;2007.06.27 [3.5.5]&lt;/strong&gt; 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 &lt;a tiddlylink=&quot;ImportTiddlersPluginPatch2.1.x&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#ImportTiddlersPluginPatch2.1.x&quot; href=&quot;http://www.climate-change-two.net/#ImportTiddlersPluginPatch2.1.x&quot; class=&quot;externalLink&quot;&gt;ImportTiddlersPluginPatch2.1.x&lt;/a&gt; tiddler, reducing the size of &lt;em&gt;this&lt;/em&gt; plugin tiddler by a significant amount.&lt;br&gt;&lt;strong&gt;2007.06.25 [3.5.4]&lt;/strong&gt; added calls to store.suspendNotifications() and store.resumeNotifications().  Eliminates redisplay processing overhead DURING import activities&lt;br&gt;&lt;table class=&quot;twtable&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;please see &lt;a tiddlylink=&quot;ImportTiddlersPluginHistory&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#ImportTiddlersPluginHistory&quot; href=&quot;http://www.climate-change-two.net/#ImportTiddlersPluginHistory&quot; class=&quot;externalLink&quot;&gt;ImportTiddlersPluginHistory&lt;/a&gt; for additional revision details&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;strong&gt;2005.07.20 [1.0.0]&lt;/strong&gt; Initial Release&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Credits&lt;/h5&gt;&lt;blockquote&gt;This feature was developed by EricShulman from &lt;a target=&quot;_blank&quot; title=&quot;External link to http:/www.elsdesign.com&quot; href=&quot;http:/www.elsdesign.com&quot; class=&quot;externalLink&quot;&gt;ELS Design Studios&lt;/a&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Code&lt;/h5&gt;&lt;em&gt; &lt;/em&gt; &lt;strong&gt;MACRO DEFINITION&lt;/strong&gt;&lt;br&gt;&lt;pre&gt;// 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: &quot;import tiddlers&quot;,
	prompt: &quot;Copy tiddlers from another document&quot;,
	openMsg: &quot;Opening %0&quot;,
	openErrMsg: &quot;Could not open %0 - error=%1&quot;,
	readMsg: &quot;Read %0 bytes from %1&quot;,
	foundMsg: &quot;Found %0 tiddlers in %1&quot;,
	countMsg: &quot;%0 tiddlers selected for import&quot;,
	importedMsg: &quot;Imported %0 of %1 tiddlers from %2&quot;,
	loadText: &quot;please load a document...&quot;,
	closeText: &quot;close&quot;,	// text for close button when remote file is loaded
	doneText: &quot;done&quot;,	// text for close button when remote file is not loaded
	src: &quot;&quot;,		// path/filename or URL of document to import (retrieved from SiteUrl tiddler)
	proxy: &quot;&quot;,		// 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: &quot;&quot;,		// 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: &quot;&quot;		// 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(&quot;importPanel&quot;).style.position=&quot;static&quot;;
		document.getElementById(&quot;importPanel&quot;).style.display=&quot;block&quot;;
	}
	else if (config.macros.loadTiddlers)
		config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers
}
&lt;/pre&gt;&lt;br&gt;&lt;em&gt; &lt;/em&gt; &lt;strong&gt;INTERFACE DEFINITION&lt;/strong&gt;&lt;br&gt;&lt;em&gt; &lt;/em&gt; Handle link click to create/show/hide control panel&lt;br&gt;&lt;pre&gt;function onClickImportMenu(e)
{
	if (!e) var e = window.event;
	var parent=resolveTarget(e).parentNode;
	var panel = document.getElementById(&quot;importPanel&quot;);
	if (panel==undefined || panel.parentNode!=parent)
		panel=createImportPanel(parent);
	var isOpen = panel.style.display==&quot;block&quot;;
	if(config.options.chkAnimate)
		anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,&quot;none&quot;));
	else
		panel.style.display = isOpen ? &quot;none&quot; : &quot;block&quot; ;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);
}
&lt;/pre&gt;&lt;br&gt;&lt;em&gt; &lt;/em&gt; Create control panel: HTML, CSS&lt;br&gt;&lt;pre&gt;function createImportPanel(place) {
	var panel=document.getElementById(&quot;importPanel&quot;);
	if (panel) { panel.parentNode.removeChild(panel); }
	setStylesheet(config.macros.importTiddlers.css,&quot;importTiddlers&quot;);
	panel=createTiddlyElement(place,&quot;span&quot;,&quot;importPanel&quot;,null,null)
	panel.innerHTML=config.macros.importTiddlers.html;
	refreshImportList();
	var siteURL=store.getTiddlerText(&quot;SiteUrl&quot;); if (!siteURL) siteURL=&quot;&quot;;
	document.getElementById(&quot;importSourceURL&quot;).value=siteURL;
	config.macros.importTiddlers.src=siteURL;
	var siteProxy=store.getTiddlerText(&quot;SiteProxy&quot;); if (!siteProxy) siteProxy=&quot;SiteProxy&quot;;
	document.getElementById(&quot;importSiteProxy&quot;).value=siteProxy;
	config.macros.importTiddlers.proxy=siteProxy;
	return panel;
}
&lt;/pre&gt;&lt;br&gt;&lt;em&gt; &lt;/em&gt; CSS&lt;br&gt;&lt;pre&gt;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; }\
';
&lt;/pre&gt;&lt;br&gt;&lt;em&gt; &lt;/em&gt; HTML &lt;br&gt;&lt;pre&gt;config.macros.importTiddlers.html = '\
&amp;lt;!-- source and report --&amp;gt;\
&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td align=left&amp;gt;\
	import from\
	&amp;lt;input type=&quot;radio&quot; class=&quot;rad&quot; name=&quot;importFrom&quot; id=&quot;importFromFile&quot; value=&quot;file&quot; CHECKED\
		onClick=&quot;document.getElementById(\'importLocalPanel\').style.display=this.checked?\'block\':\'none\';\
			document.getElementById(\'importHTTPPanel\').style.display=!this.checked?\'block\':\'none\'&quot;&amp;gt; local file\
	&amp;lt;input type=&quot;radio&quot; class=&quot;rad&quot; name=&quot;importFrom&quot; id=&quot;importFromWeb&quot;  value=&quot;http&quot;\
		onClick=&quot;document.getElementById(\'importLocalPanel\').style.display=!this.checked?\'block\':\'none\';\
			document.getElementById(\'importHTTPPanel\').style.display=this.checked?\'block\':\'none\'&quot;&amp;gt; web server\
&amp;lt;/td&amp;gt;&amp;lt;td align=right&amp;gt;\
	&amp;lt;input type=checkbox class=&quot;chk&quot; id=&quot;chkImportReport&quot; checked\
		onClick=&quot;config.options[\'chkImportReport\']=this.checked;&quot;&amp;gt; create a report\
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;\
&amp;lt;!-- import from local file  --&amp;gt;\
&amp;lt;div id=&quot;importLocalPanel&quot; style=&quot;display:block;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999&quot;&amp;gt;\
local document path/filename:&amp;lt;br&amp;gt;\
&amp;lt;input type=&quot;file&quot; id=&quot;fileImportSource&quot; size=57 style=&quot;width:100%&quot;\
	onKeyUp=&quot;config.macros.importTiddlers.src=this.value&quot;\
	onChange=&quot;config.macros.importTiddlers.src=this.value;&quot;&amp;gt;\
&amp;lt;/div&amp;gt;&amp;lt;!--panel--&amp;gt;\
\
&amp;lt;!-- import from http server --&amp;gt;\
&amp;lt;div id=&quot;importHTTPPanel&quot; style=&quot;display:none;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999&quot;&amp;gt;\
&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td align=left&amp;gt;\
	remote document URL:&amp;lt;br&amp;gt;\
&amp;lt;/td&amp;gt;&amp;lt;td align=right&amp;gt;\
	&amp;lt;input type=&quot;checkbox&quot; class=&quot;chk&quot; id=&quot;importUseProxy&quot;\
		onClick=&quot;config.macros.importTiddlers.useProxy=this.checked;\
			document.getElementById(\'importSiteProxy\').style.display=this.checked?\'block\':\'none\'&quot;&amp;gt; use a proxy script\
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;\
&amp;lt;input type=&quot;text&quot; id=&quot;importSiteProxy&quot; style=&quot;display:none;margin-bottom:1px&quot; onfocus=&quot;this.select()&quot; value=&quot;SiteProxy&quot;\
	onKeyUp=&quot;config.macros.importTiddlers.proxy=this.value&quot;\
	onChange=&quot;config.macros.importTiddlers.proxy=this.value;&quot;&amp;gt;\
&amp;lt;input type=&quot;text&quot; id=&quot;importSourceURL&quot; onfocus=&quot;this.select()&quot; value=&quot;SiteUrl&quot;\
	onKeyUp=&quot;config.macros.importTiddlers.src=this.value&quot;\
	onChange=&quot;config.macros.importTiddlers.src=this.value;&quot;&amp;gt;\
&amp;lt;/div&amp;gt;&amp;lt;!--panel--&amp;gt;\
\
&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td align=left&amp;gt;\
	select:\
	&amp;lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectAll&quot;\
		onclick=&quot;onClickImportButton(this)&quot; title=&quot;select all tiddlers&quot;&amp;gt;\
		&amp;amp;nbsp;all&amp;amp;nbsp;&amp;lt;/a&amp;gt;\
	&amp;lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectNew&quot;\
		onclick=&quot;onClickImportButton(this)&quot; title=&quot;select tiddlers not already in destination document&quot;&amp;gt;\
		&amp;amp;nbsp;added&amp;amp;nbsp;&amp;lt;/a&amp;gt; \
	&amp;lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectChanges&quot;\
		onclick=&quot;onClickImportButton(this)&quot; title=&quot;select tiddlers that have been updated in source document&quot;&amp;gt;\
		&amp;amp;nbsp;changes&amp;amp;nbsp;&amp;lt;/a&amp;gt; \
	&amp;lt;a href=&quot;JavaScript:;&quot; id=&quot;importSelectDifferences&quot;\
		onclick=&quot;onClickImportButton(this)&quot; title=&quot;select tiddlers that have been added or are different from existing tiddlers&quot;&amp;gt;\
		&amp;amp;nbsp;differences&amp;amp;nbsp;&amp;lt;/a&amp;gt; \
	&amp;lt;a href=&quot;JavaScript:;&quot; id=&quot;importToggleFilter&quot;\
		onclick=&quot;onClickImportButton(this)&quot; title=&quot;show/hide selection filter&quot;&amp;gt;\
		&amp;amp;nbsp;filter&amp;amp;nbsp;&amp;lt;/a&amp;gt; \
&amp;lt;/td&amp;gt;&amp;lt;td align=right&amp;gt;\
	&amp;lt;a href=&quot;JavaScript:;&quot; id=&quot;importListSmaller&quot;\
		onclick=&quot;onClickImportButton(this)&quot; title=&quot;reduce list size&quot;&amp;gt;\
		&amp;amp;nbsp;&amp;amp;#150;&amp;amp;nbsp;&amp;lt;/a&amp;gt;\
	&amp;lt;a href=&quot;JavaScript:;&quot; id=&quot;importListLarger&quot;\
		onclick=&quot;onClickImportButton(this)&quot; title=&quot;increase list size&quot;&amp;gt;\
		&amp;amp;nbsp;+&amp;amp;nbsp;&amp;lt;/a&amp;gt;\
	&amp;lt;a href=&quot;JavaScript:;&quot; id=&quot;importListMaximize&quot;\
		onclick=&quot;onClickImportButton(this)&quot; title=&quot;maximize/restore list size&quot;&amp;gt;\
		&amp;amp;nbsp;=&amp;amp;nbsp;&amp;lt;/a&amp;gt;\
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;\
&amp;lt;select id=&quot;importList&quot; size=8 multiple\
	onchange=&quot;setTimeout(\'refreshImportList(\'+this.selectedIndex+\')\',1)&quot;&amp;gt;\
	&amp;lt;!-- NOTE: delay refresh so list is updated AFTER onchange event is handled --&amp;gt;\
&amp;lt;/select&amp;gt;\
&amp;lt;input type=checkbox class=&quot;chk&quot; id=&quot;chkAddTags&quot; checked\
	onClick=&quot;config.macros.importTiddlers.addTags=this.checked;&quot;&amp;gt;add new tags &amp;amp;nbsp;\
&amp;lt;input type=checkbox class=&quot;chk&quot; id=&quot;chkImportTags&quot; checked\
	onClick=&quot;config.macros.importTiddlers.importTags=this.checked;&quot;&amp;gt;import source tags &amp;amp;nbsp;\
&amp;lt;input type=checkbox class=&quot;chk&quot; id=&quot;chkKeepTags&quot; checked\
	onClick=&quot;config.macros.importTiddlers.keepTags=this.checked;&quot;&amp;gt;keep existing tags&amp;lt;br&amp;gt;\
&amp;lt;input type=text id=&quot;txtNewTags&quot; size=15 onKeyUp=&quot;config.macros.importTiddlers.newTags=this.value&quot; autocomplete=off&amp;gt;\
&amp;lt;div align=center&amp;gt;\
	&amp;lt;input type=button id=&quot;importLoad&quot; class=&quot;importButton&quot; style=&quot;width:32%&quot; value=&quot;load&quot;\
		title=&quot;load listbox with tiddlers from source document&quot;\
		onclick=&quot;onClickImportButton(this)&quot;&amp;gt;\
	&amp;lt;input type=button id=&quot;importStart&quot;	 class=&quot;importButton&quot; style=&quot;width:32%&quot; value=&quot;import&quot;\
		title=&quot;add selected source tiddlers to the current document&quot;\
		onclick=&quot;onClickImportButton(this)&quot;&amp;gt;\
	&amp;lt;input type=button id=&quot;importClose&quot;	 class=&quot;importButton&quot; style=&quot;width:32%&quot; value=&quot;close&quot;\
		title=&quot;clear listbox or hide control panel&quot;\
		onclick=&quot;onClickImportButton(this)&quot;&amp;gt;\
&amp;lt;/div&amp;gt;\
&amp;lt;div id=&quot;importCollisionPanel&quot;&amp;gt;\
	tiddler already exists:\
	&amp;lt;input type=text id=&quot;importNewTitle&quot; size=15 autocomplete=off&quot;&amp;gt;\
	&amp;lt;div align=center&amp;gt;\
	&amp;lt;input type=button id=&quot;importSkip&quot;	class=&quot;importButton&quot; style=&quot;width:23%&quot; value=&quot;skip&quot;\
		title=&quot;do not import this tiddler&quot;\
		onclick=&quot;onClickImportButton(this)&quot;&amp;gt;\
	&amp;lt;input type=button id=&quot;importRename&quot;  class=&quot;importButton&quot; style=&quot;width:23%&quot; value=&quot;rename&quot;\
		title=&quot;rename the incoming tiddler&quot;\
		onclick=&quot;onClickImportButton(this)&quot;&amp;gt;\
	&amp;lt;input type=button id=&quot;importMerge&quot;   class=&quot;importButton&quot; style=&quot;width:23%&quot; value=&quot;merge&quot;\
		title=&quot;append the incoming tiddler to the existing tiddler&quot;\
		onclick=&quot;onClickImportButton(this)&quot;&amp;gt;\
	&amp;lt;input type=button id=&quot;importReplace&quot; class=&quot;importButton&quot; style=&quot;width:23%&quot; value=&quot;replace&quot;\
		title=&quot;discard the existing tiddler&quot;\
		onclick=&quot;onClickImportButton(this)&quot;&amp;gt;\
	&amp;lt;/div&amp;gt;\
&amp;lt;/div&amp;gt;\
';
&lt;/pre&gt;&lt;br&gt;&lt;em&gt; &lt;/em&gt; Control interactions&lt;br&gt;&lt;pre&gt;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==&quot;&quot;) 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,&quot; &quot;);
					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(&quot;?&quot;); 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 &amp;lt; theList.options.length; t++) {
				if (theList.options[t].value==&quot;&quot;) 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 &amp;lt; theList.options.length; t++) {
				theList.options[t].selected=false;
				if (theList.options[t].value==&quot;&quot;) 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 &amp;lt; theList.options.length; t++) {
				theList.options[t].selected=false;
				if (theList.options[t].value==&quot;&quot;||!store.tiddlerExists(theList.options[t].value)) continue;
				for (var i=0; i&amp;lt;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&amp;gt;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 &amp;lt; theList.options.length; t++) {
				theList.options[t].selected=false;
				if (theList.options[t].value==&quot;&quot;) continue;
				if (!store.tiddlerExists(theList.options[t].value)) { theList.options[t].selected=true; count++; continue; }
				for (var i=0; i&amp;lt;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(&quot;coming soon!&quot;);
			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&amp;lt;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&amp;lt;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&amp;lt;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(&quot;MM/DD/YYYY 0hh:0mm:0ss&quot;);
			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&amp;lt;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(&quot;MM/DD/YYYY 0hh:0mm:0ss&quot;);
			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&amp;gt;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&amp;lt;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;
		}
}
&lt;/pre&gt;&lt;br&gt;&lt;em&gt; &lt;/em&gt; refresh listbox&lt;br&gt;&lt;pre&gt;function refreshImportList(selectedIndex)
{
	var theList  = document.getElementById(&quot;importList&quot;);
	if (!theList) return;
	// if nothing to show, reset list content and size
	if (!config.macros.importTiddlers.inbound) 
	{
		while (theList.length &amp;gt; 0) { theList.options[0] = null; }
		theList.options[0]=new Option(config.macros.importTiddlers.loadText,&quot;&quot;,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&amp;gt;3) {
		// display selected tiddler count
		for (var t=0,count=0; t &amp;lt; theList.options.length; t++) {
			if (!theList.options[t].selected) continue;
			if (theList.options[t].value!=&quot;&quot;)
				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&amp;lt;theList.options.length &amp;amp;&amp;amp; theList.options[t].value!=&quot;&quot;; 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'] &amp;lt; b['title']) ? -1 : +1; });
	// clear current list contents
	while (theList.length &amp;gt; 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',&quot;&quot;,false,false);
	theList.options[i++]=new Option(((config.macros.importTiddlers.sort==&quot;title&quot;   )?&quot;&amp;gt;&quot;:indent)+' [by title]',&quot;&quot;,false,false);
	theList.options[i++]=new Option(((config.macros.importTiddlers.sort==&quot;modified&quot;)?&quot;&amp;gt;&quot;:indent)+' [by date]',&quot;&quot;,false,false);
	theList.options[i++]=new Option(((config.macros.importTiddlers.sort==&quot;tags&quot;)?&quot;&amp;gt;&quot;:indent)+' [by tags]',&quot;&quot;,false,false);
	// output the tiddler list
	switch(config.macros.importTiddlers.sort)
		{
		case &quot;title&quot;:
			for(var t = 0; t &amp;lt; tiddlers.length; t++)
				theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
			break;
		case &quot;modified&quot;:
			// sort descending for newest date first
			tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] &amp;gt; b['modified']) ? -1 : +1; });
			var lastSection = &quot;&quot;;
			for(var t = 0; t &amp;lt; tiddlers.length; t++) {
				var tiddler = tiddlers[t];
				var theSection = tiddler.modified.toLocaleDateString();
				if (theSection != lastSection) {
					theList.options[i++] = new Option(theSection,&quot;&quot;,false,false);
					lastSection = theSection;
				}
				theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
			}
			break;
		case &quot;tags&quot;:
			var theTitles = {}; // all tiddler titles, hash indexed by tag value
			var theTags = new Array();
			for(var t=0; t&amp;lt;tiddlers.length; t++) {
				var title=tiddlers[t].title;
				var tags=tiddlers[t].tags;
				if (!tags || !tags.length) {
					if (theTitles[&quot;untagged&quot;]==undefined) { theTags.push(&quot;untagged&quot;); theTitles[&quot;untagged&quot;]=new Array(); }
					theTitles[&quot;untagged&quot;].push(title);
				}
				else for(var s=0; s&amp;lt;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&amp;lt;theTags.length; tagindex++) {
				var theTag=theTags[tagindex];
				theList.options[i++]=new Option(theTag,&quot;&quot;,false,false);
				for(var t=0; t&amp;lt;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&amp;lt;config.macros.importTiddlers.listsize) theList.size=config.macros.importTiddlers.listsize;
	if (theList.size&amp;gt;theList.options.length) theList.size=theList.options.length;
}
&lt;/pre&gt;&lt;br&gt;&lt;em&gt; &lt;/em&gt; re-entrant processing for handling import with interactive collision prompting&lt;br&gt;&lt;pre&gt;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&amp;lt;config.macros.importTiddlers.inbound.length;t++)
			config.macros.importTiddlers.inbound[t].status=&quot;&quot;;
	for (var i=startIndex; i&amp;lt;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)==&quot;&quot;))
			continue;
		for (var j=0;j&amp;lt;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==&quot;added&quot;)
			continue;
		// don't import the &quot;ImportedTiddlers&quot; 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 &amp;amp;&amp;amp; (inbound.status.substr(0,7)!=&quot;replace&quot;) &amp;amp;&amp;amp; (inbound.status.substr(0,5)!=&quot;merge&quot;))
			return i;
		// assemble tags (remote + existing + added)
		var newTags = &quot;&quot;;
		if (config.macros.importTiddlers.importTags)
			newTags+=inbound.getTags()	// import remote tags
		if (config.macros.importTiddlers.keepTags &amp;amp;&amp;amp; theExisting)
			newTags+=&quot; &quot;+theExisting.getTags(); // keep existing tags
		if (config.macros.importTiddlers.addTags &amp;amp;&amp;amp; config.macros.importTiddlers.newTags.trim().length)
			newTags+=&quot; &quot;+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==&quot;&quot;)?'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
}
&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;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;
		}
}
&lt;/pre&gt;&lt;br&gt;&lt;em&gt; &lt;/em&gt; &lt;strong&gt;REPORT GENERATOR&lt;/strong&gt;&lt;br&gt;&lt;pre&gt;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&amp;lt;tiddlers.length; t++)
		if (tiddlers[t].status &amp;amp;&amp;amp; tiddlers[t].status.trim().length &amp;amp;&amp;amp; tiddlers[t].status.substr(0,7)!=&quot;skipped&quot;) count++;

	// generate a report
	if (count &amp;amp;&amp;amp; config.options.chkImportReport) {
		// get/create the report tiddler
		var theReport = store.getTiddler('ImportedTiddlers');
		if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text  = &quot;&quot;; }
		// format the report content
		var now = new Date();
		var newText = &quot;On &quot;+now.toLocaleString()+&quot;, &quot;+config.options.txtUserName
		newText +=&quot; imported &quot;+count+&quot; tiddler&quot;+(count==1?&quot;&quot;:&quot;s&quot;)+&quot; from\n[[&quot;+config.macros.importTiddlers.src+&quot;|&quot;+config.macros.importTiddlers.src+&quot;]]:\n&quot;;
		if (config.macros.importTiddlers.addTags &amp;amp;&amp;amp; config.macros.importTiddlers.newTags.trim().length)
			newText += &quot;imported tiddlers were tagged with: \&quot;&quot;+config.macros.importTiddlers.newTags+&quot;\&quot;\n&quot;;
		newText += &quot;&amp;lt;&amp;lt;&amp;lt;\n&quot;;
		for (var t=0; t&amp;lt;tiddlers.length; t++) if (tiddlers[t].status) newText += &quot;#[[&quot;+tiddlers[t].title+&quot;]] - &quot;+tiddlers[t].status+&quot;\n&quot;;
		newText += &quot;&amp;lt;&amp;lt;&amp;lt;\n&quot;;
		// update the ImportedTiddlers content and show the tiddler
		theReport.text	 = newText+((theReport.text!=&quot;&quot;)?'\n----\n':&quot;&quot;)+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&amp;lt;config.macros.importTiddlers.inbound.length; t++) config.macros.importTiddlers.inbound[t].status=&quot;&quot;;

	// 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,&quot; &quot;)]));
}
&lt;/pre&gt;&lt;br&gt;&lt;em&gt; &lt;/em&gt; File and XMLHttpRequest I/O&lt;br&gt;&lt;pre&gt;config.macros.importTiddlers.fileExists=function(theFile) {
	var found=false;
	// DEBUG: alert('testing fileExists('+theFile+')...');
	if(window.Components) {
		try { netscape.security.PrivilegeManager.enablePrivilege(&quot;UniversalXPConnect&quot;); }
		catch(e) { return false; } // security access denied
		var file = Components.classes[&quot;@mozilla.org/file/local;1&quot;].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(&quot;Scripting.FileSystemObject&quot;);
		found = fso.FileExists(theFile)
	}
	// DEBUG: alert(theFile+&quot; &quot;+(found?&quot;exists&quot;:&quot;not found&quot;));
	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,&quot; &quot;)]));
	if (src.substr(0,5)!=&quot;http:&quot; &amp;amp;&amp;amp; src.substr(0,5)!=&quot;file:&quot;) { // 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(&quot;/&quot;); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf(&quot;\\&quot;); 
			if (slashpos!=-1 &amp;amp;&amp;amp; slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
			src=pathPrefix+src;
			if (pathPrefix.substr(0,5)!=&quot;http:&quot;) src=getLocalPath(src);
		}
	}
	if (src.substr(0,5)!=&quot;http:&quot; &amp;amp;&amp;amp; src.substr(0,5)!=&quot;file:&quot;) { // 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,&quot; &quot;),&quot;(filesystem error)&quot;])); }
		else {
			if (!quiet) displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g,&quot; &quot;)]));
			if (callback) callback(true,quiet,convertUTF8ToUnicode(txt),src,null);
		}
	}
	else {
		var xhr=loadRemoteFile(src,callback,quiet);
		if (!quiet &amp;amp;&amp;amp; !xhr) displayMessage(config.macros.importTiddlers.openErrMsg.format([src,&quot;(XMLHTTPRequest error)&quot;]));
	}
}

config.macros.importTiddlers.readTiddlersFromHTML=function(html)
{
	var remoteStore=new TiddlyWiki();
	remoteStore.importTiddlyWiki(html);
	return remoteStore.getTiddlers(&quot;title&quot;);	
}
&lt;/pre&gt;</description>
<category>systemConfig</category>
<category>includeNew</category>
<category>editing</category>
<category>ImportExportPackage</category>
<link>http://www.climate-change-two.net/#ImportTiddlersPlugin</link>
<pubDate>Sun, 23 Sep 2007 17:30:00 GMT</pubDate>
</item>
<item>
<title>DisableWikiLinksPlugin</title>
<description>&lt;table class=&quot;twtable&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Name:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;DisableWikiLinksPlugin&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Source:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.TiddlyTools.com/#DisableWikiLinksPlugin&quot; href=&quot;http://www.TiddlyTools.com/#DisableWikiLinksPlugin&quot; class=&quot;externalLink&quot;&gt;http://www.TiddlyTools.com/#DisableWikiLinksPlugin&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;strong&gt;Author:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Eric Shulman - ELS Design Studios&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;&lt;strong&gt;License:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://creativecommons.org/licenses/by-sa/2.5/&quot; href=&quot;http://creativecommons.org/licenses/by-sa/2.5/&quot; class=&quot;externalLink&quot;&gt;Creative Commons Attribution-ShareAlike 2.5 License&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;&lt;strong&gt;CoreVersion:&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;2.0.10&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;This plugin allows you to disable TiddlyWiki's automatic WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links.  To create a tiddler link when automatic linking is disabled, you must enclose the link text within &lt;code&gt;[[...]]&lt;/code&gt;.&lt;br&gt;&lt;br&gt;You can also block automatic WikiWord linking behavior only for non-existing tiddler titles, while still automatically linking WikiWords that correspond to existing tiddlers titles or shadow tiddler titles.&lt;br&gt;&lt;br&gt;You can also block specific selected WikiWords from being automatically linked by listing them in &lt;a tiddlylink=&quot;DisableWikiLinksList&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#DisableWikiLinksList&quot; href=&quot;http://www.climate-change-two.net/#DisableWikiLinksList&quot; class=&quot;externalLink&quot;&gt;DisableWikiLinksList&lt;/a&gt;, separated by whitespace.  This tiddler is optional and, when present, causes the listed words to always be excluded, even if automatic linking of other WikiWords is being permitted.  &lt;br&gt;&lt;br&gt;Note: WikiWords contained in default &lt;strong&gt;shadow&lt;/strong&gt; tiddlers will be automatically linked unless you select an additional checkbox option lets you disable these automatic links as well, though this is not recommended, since it can make it more difficult to access some TiddlyWiki standard default content (such as &lt;a tiddlylink=&quot;AdvancedOptions&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#AdvancedOptions&quot; href=&quot;http://www.climate-change-two.net/#AdvancedOptions&quot; class=&quot;externalLink&quot;&gt;AdvancedOptions&lt;/a&gt; or &lt;a tiddlylink=&quot;SideBarTabs&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#SideBarTabs&quot; href=&quot;http://www.climate-change-two.net/#SideBarTabs&quot; class=&quot;externalLink&quot;&gt;SideBarTabs&lt;/a&gt;)&lt;br&gt;&lt;br&gt;&lt;h5&gt;Configuration&lt;/h5&gt;&lt;blockquote&gt;Self-contained control panel:&lt;br&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkDisableNonExistingWikiLinks&quot; type=&quot;checkbox&quot;&gt; Disable automatic WikiWord links for non-existing tiddlers&lt;br&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkDisableWikiLinks&quot; type=&quot;checkbox&quot;&gt; Disable ALL automatic WikiWord tiddler links&lt;br&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkAllowLinksFromShadowTiddlers&quot; type=&quot;checkbox&quot;&gt; ... except for WikiWords contained in shadow tiddlers&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Installation&lt;/h5&gt;&lt;blockquote&gt;import (or copy/paste) the following tiddlers into your document:&lt;br&gt;&lt;strong&gt;DisableWikiLinksPlugin&lt;/strong&gt; (tagged with &lt;span class=&quot;quickopentag&quot;&gt;&lt;a tiddlylink=&quot;systemConfig&quot; refresh=&quot;link&quot; tip=&quot;The ''systemConfig'' tag is used for [[Plugin Macros]] and instructs TiddlyWiki to include the plugin in its J&quot; class=&quot;tiddlyLink tiddlyLinkExisting&quot; title=&quot;&quot; href=&quot;javascript:;&quot;&gt;systemConfig&lt;/a&gt;&lt;a tag=&quot;systemConfig&quot; class=&quot;button&quot; title=&quot;Show tiddlers tagged with 'systemConfig'&quot; href=&quot;javascript:;&quot;&gt;▾&lt;/a&gt;&lt;/span&gt;)&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Revision History&lt;/h5&gt;&lt;blockquote&gt;&lt;strong&gt;2006.12.31 [1.4.0]&lt;/strong&gt; in formatter, test for chkDisableNonExistingWikiLinks&lt;br&gt;&lt;strong&gt;2006.12.09 [1.3.0]&lt;/strong&gt; in formatter, test for excluded wiki words specified in DisableWikiLinksList&lt;br&gt;&lt;strong&gt;2006.12.09 [1.2.2]&lt;/strong&gt; fix logic in autoLinkWikiWords() (was allowing links TO shadow tiddlers, even when chkDisableWikiLinks is TRUE).  &lt;br&gt;&lt;strong&gt;2006.12.09 [1.2.1]&lt;/strong&gt; revised logic for handling links in shadow content&lt;br&gt;&lt;strong&gt;2006.12.08 [1.2.0]&lt;/strong&gt; added hijack of Tiddler.prototype.autoLinkWikiWords so regular (non-bracketed) WikiWords won't be added to the missing list&lt;br&gt;&lt;strong&gt;2006.05.24 [1.1.0]&lt;/strong&gt; added option to NOT bypass automatic wikiword links when displaying default shadow content (default is to auto-link shadow content)&lt;br&gt;&lt;strong&gt;2006.02.05 [1.0.1]&lt;/strong&gt; wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals&lt;br&gt;&lt;strong&gt;2005.12.09 [1.0.0]&lt;/strong&gt; initial release&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Credits&lt;/h5&gt;&lt;blockquote&gt;This feature was developed by EricShulman from &lt;a target=&quot;_blank&quot; title=&quot;External link to http:/www.elsdesign.com&quot; href=&quot;http:/www.elsdesign.com&quot; class=&quot;externalLink&quot;&gt;ELS Design Studios&lt;/a&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Code&lt;/h5&gt;&lt;pre&gt;version.extensions.disableWikiLinks= {major: 1, minor: 4, revision: 0, date: new Date(2006,12,31)};

if (config.options.chkDisableNonExistingWikiLinks==undefined) config.options.chkDisableNonExistingWikiLinks= false;
if (config.options.chkDisableWikiLinks==undefined) config.options.chkDisableWikiLinks= false;
if (config.options.chkAllowLinksFromShadowTiddlers==undefined) config.options.chkAllowLinksFromShadowTiddlers=true;

// find the formatter for wikiLink and replace handler with 'pass-thru' rendering
initDisableWikiLinksFormatter();
function initDisableWikiLinksFormatter() {
	for (var i=0; i&amp;lt;config.formatters.length &amp;amp;&amp;amp; config.formatters[i].name!=&quot;wikiLink&quot;; i++);
	config.formatters[i].coreHandler=config.formatters[i].handler;
	config.formatters[i].handler=function(w) {
		// supress any leading &quot;~&quot; (if present)
		var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;
		var title=w.matchText.substr(skip);
		var exists=store.tiddlerExists(title);
		var inShadow=w.tiddler &amp;amp;&amp;amp; store.isShadowTiddler(w.tiddler.title);

		// check for specific excluded wiki words
		var t=store.getTiddlerText(&quot;DisableWikiLinksList&quot;)
		if (t &amp;amp;&amp;amp; t.length &amp;amp;&amp;amp; t.indexOf(w.matchText)!=-1)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }

		// if not disabling links from shadows (default setting)
		if (config.options.chkAllowLinksFromShadowTiddlers &amp;amp;&amp;amp; inShadow)
			return this.coreHandler(w);

		// check for non-existing non-shadow tiddler
		if (config.options.chkDisableNonExistingWikiLinks &amp;amp;&amp;amp; !exists)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }

		// if not enabled, just do standard WikiWord link formatting
		if (!config.options.chkDisableWikiLinks)
			return this.coreHandler(w);

		// just return text without linking
		w.outputText(w.output,w.matchStart+skip,w.nextMatch)
	}
}

Tiddler.prototype.coreAutoLinkWikiWords = Tiddler.prototype.autoLinkWikiWords;
Tiddler.prototype.autoLinkWikiWords = function()
{
	// DEBUG alert(&quot;processing: &quot;+this.title);
	// if all automatic links are not disabled, just return results from core function
	if (!config.options.chkDisableWikiLinks)
		return this.coreAutoLinkWikiWords.apply(this,arguments);
	return false;
}
&lt;/pre&gt;</description>
<category>systemConfig</category>
<category>authoring</category>
<category>excludeLists</category>
<category>els design</category>
<link>http://www.climate-change-two.net/#DisableWikiLinksPlugin</link>
<pubDate>Sun, 23 Sep 2007 17:18:00 GMT</pubDate>
</item>
<item>
<title>SearchOptions plugin</title>
<description>&lt;table class=&quot;twtable&quot;&gt;&lt;thead&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;&lt;strong&gt;SearchOptions&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Author&lt;/td&gt;&lt;td&gt;&lt;a tiddlylink=&quot;Eric Shulman&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#Eric Shulman&quot; href=&quot;http://www.climate-change-two.net/#Eric%20Shulman&quot; class=&quot;externalLink&quot;&gt;Eric Shulman&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Version&lt;/td&gt;&lt;td&gt;2.2.1 (2006.02.03)&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Description&lt;/td&gt;&lt;td&gt;Allows modification of search criteria.&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td&gt;Source&lt;/td&gt;&lt;td&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.TiddlyTools.com/#SearchOptionsPlugin&quot; href=&quot;http://www.TiddlyTools.com/#SearchOptionsPlugin&quot; class=&quot;externalLink&quot;&gt;http://www.TiddlyTools.com/#SearchOptionsPlugin&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td&gt;Licence&lt;/td&gt;&lt;td&gt;&lt;a tiddlylink=&quot;Creative Commons Attribution ShareAlike 2.5 Licence&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#Creative Commons Attribution ShareAlike 2.5 Licence&quot; href=&quot;http://www.climate-change-two.net/#Creative%20Commons%20Attribution%20ShareAlike%202.5%20Licence&quot; class=&quot;externalLink&quot;&gt;Creative Commons Attribution ShareAlike 2.5 Licence&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;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.&lt;br&gt;&lt;br&gt;&lt;h5&gt;Usage&lt;/h5&gt;&lt;blockquote&gt;This plugin adds checkboxes (see below and in &lt;a tiddlylink=&quot;AdvancedOptions&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#AdvancedOptions&quot; href=&quot;http://www.climate-change-two.net/#AdvancedOptions&quot; class=&quot;externalLink&quot;&gt;AdvancedOptions&lt;/a&gt;) 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 &quot;SearchResults&quot; tiddler), rather than actually displaying all matching tiddlers.  You can also enable/disable the &quot;incremental search&quot; (key-by-key searching), so that a search is only initiated when you press the ENTER key or click on the &quot;search:&quot; prompt text.&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Configuration&lt;/h5&gt;&lt;blockquote&gt;In additional to the checkboxes in &lt;a tiddlylink=&quot;AdvancedOptions&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#AdvancedOptions&quot; href=&quot;http://www.climate-change-two.net/#AdvancedOptions&quot; class=&quot;externalLink&quot;&gt;AdvancedOptions&lt;/a&gt;, a self-contained control panel is included here for your convenience:&lt;br&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkSearchTitles&quot; type=&quot;checkbox&quot;&gt; Search tiddler titles&lt;br&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkSearchText&quot; type=&quot;checkbox&quot;&gt; Search tiddler text&lt;br&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkSearchTags&quot; type=&quot;checkbox&quot;&gt; Search in tiddler tags&lt;br&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkSearchTitlesFirst&quot; type=&quot;checkbox&quot;&gt; Show title matches first&lt;br&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkSearchList&quot; type=&quot;checkbox&quot;&gt; Show list of matching tiddlers&lt;br&gt;&lt;input class=&quot;chkOptionInput&quot; option=&quot;chkSearchIncremental&quot; type=&quot;checkbox&quot;&gt; Incremental searching&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Installation&lt;/h5&gt;&lt;blockquote&gt;import (or copy/paste) the following tiddlers into your document:&lt;br&gt;&lt;strong&gt;SearchOptionsPlugin&lt;/strong&gt; (tagged with &lt;span class=&quot;quickopentag&quot;&gt;&lt;a tiddlylink=&quot;systemConfig&quot; refresh=&quot;link&quot; tip=&quot;The ''systemConfig'' tag is used for [[Plugin Macros]] and instructs TiddlyWiki to include the plugin in its J&quot; class=&quot;tiddlyLink tiddlyLinkExisting&quot; title=&quot;&quot; href=&quot;javascript:;&quot;&gt;systemConfig&lt;/a&gt;&lt;a tag=&quot;systemConfig&quot; class=&quot;button&quot; title=&quot;Show tiddlers tagged with 'systemConfig'&quot; href=&quot;javascript:;&quot;&gt;▾&lt;/a&gt;&lt;/span&gt;)&lt;br&gt;&lt;sup&gt;documentation and javascript for SearchOptionsPlugin handling&lt;/sup&gt;&lt;br&gt;&lt;br&gt;When installed, this plugin automatically adds checkboxes in the &lt;a tiddlylink=&quot;AdvancedOptions&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#AdvancedOptions&quot; href=&quot;http://www.climate-change-two.net/#AdvancedOptions&quot; class=&quot;externalLink&quot;&gt;AdvancedOptions&lt;/a&gt; shadow tiddler so you can enable/disable the extended search behavior.  However, if you have customized your &lt;a tiddlylink=&quot;AdvancedOptions&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#AdvancedOptions&quot; href=&quot;http://www.climate-change-two.net/#AdvancedOptions&quot; class=&quot;externalLink&quot;&gt;AdvancedOptions&lt;/a&gt;, you will need to manually add &lt;code&gt;&amp;lt;&amp;lt;option chkSearchTitles&amp;gt;&amp;gt;&lt;/code&gt;,  &lt;code&gt;&amp;lt;&amp;lt;option chkSearchText&amp;gt;&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;&amp;lt;option chkSearchTitlesFirst&amp;gt;&amp;gt;&lt;/code&gt;  (with suitable prompt text) to your customized tiddler.&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Revision History&lt;/h5&gt;&lt;blockquote&gt;&lt;strong&gt;2006.02.03 [2.2.1]&lt;/strong&gt;&lt;br&gt;rewrite timeout clearing code and blank search text handling to match 2.0.4 core release changes.  note that core no longer permits &quot;blank=all&quot; searches, so neither does this plugin.  To search for all, use &quot;.&quot; with text patterns enabled.&lt;br&gt;&lt;strong&gt;2006.02.02 [2.2.0]&lt;/strong&gt;&lt;br&gt;in search.handler(), KeyHandler() function clears 'left over' timeout when search input is &amp;lt; 3 chars.  Prevents searching on shorter text when shortened by rapid backspaces (&amp;lt;500msec)&lt;br&gt;&lt;strong&gt;2006.02.01 [2.1.9]&lt;/strong&gt;&lt;br&gt;in Story.prototype.search(), correct inverted logic for using/not using regular expressions when searching&lt;br&gt;also, blank search text now presents &quot;No search text.  Continue anyway?&quot; confirm() message box, so search on blank can still be processed if desired by user.&lt;br&gt;&lt;strong&gt;2006.02.01 [2.1.8]&lt;/strong&gt;&lt;br&gt;in doSearch(), added alert/return if search text is blank&lt;br&gt;&lt;strong&gt;2006.01.20 [2.1.7]&lt;/strong&gt;&lt;br&gt;fixed setting of config.macros.search.reportTitle so that Tweaks can override it.&lt;br&gt;&lt;strong&gt;2006.01.19 [2.1.6]&lt;/strong&gt;&lt;br&gt;improved SearchResults formatting, added a &quot;search again&quot; form to the report (based on a suggestion from MorrisGray)&lt;br&gt;define results report title using config.macros.search.reportTitle instead of hard-coding the tiddler title&lt;br&gt;&lt;strong&gt;2006.01.18 [2.1.5]&lt;/strong&gt;&lt;br&gt;Created separate functions for reportSearchResults(text,matches) and discardSearchResults(), so that other developers can create alternative report generators.&lt;br&gt;&lt;strong&gt;2006.01.17 [2.1.4]&lt;/strong&gt;&lt;br&gt;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.&lt;br&gt;&lt;strong&gt;2006.01.15 [2.1.3]&lt;/strong&gt;&lt;br&gt;Added information (date/time, username, search options used) to SearchResults output&lt;br&gt;&lt;strong&gt;2006.01.10 [2.1.2]&lt;/strong&gt;&lt;br&gt;use displayTiddlers() to render matched tiddlers.  This lets you display multiple matching tiddlers, even if SinglePageModePlugin is enabled.&lt;br&gt;&lt;strong&gt;2006.01.08 [2.1.1]&lt;/strong&gt;&lt;br&gt;corrected invalid variable reference, &quot;txt.value&quot; to &quot;text&quot; in story.search()&lt;br&gt;&lt;strong&gt;2006.01.08 [2.1.0]&lt;/strong&gt;&lt;br&gt;re-write to match new store.search(), store.search.handler() and story.search() functions.&lt;br&gt;&lt;strong&gt;2005.12.30 [2.0.0]&lt;/strong&gt;&lt;br&gt;Upgraded to TW2.0&lt;br&gt;when rendering SearchResults tiddler, closeTiddler() first to ensure display is refreshed.&lt;br&gt;&lt;strong&gt;2005.12.26 [1.4.0]&lt;/strong&gt;&lt;br&gt;added option to search for matching text in tiddler tags&lt;br&gt;&lt;strong&gt;2005.12.21 [1.3.7]&lt;/strong&gt;&lt;br&gt;use \\ to 'escape' single quotes in tiddler titles when generating &quot;Open all matching tiddlers&quot; link.  Also, added access key: &quot;O&quot;, to trigger &quot;open all&quot; link.&lt;br&gt;Based on a suggestion by UdoBorkowski.&lt;br&gt;&lt;strong&gt;2005.12.18 [1.3.6]&lt;/strong&gt;&lt;br&gt;call displayMessage() AFTER showing matching tiddlers so message is not cleared too soon&lt;br&gt;&lt;strong&gt;2005.12.17 [1.3.5]&lt;/strong&gt;&lt;br&gt;if no matches found, just display message and delete any existing SearchResults tiddler.&lt;br&gt;&lt;strong&gt;2005.12.17 [1.3.4]&lt;/strong&gt;&lt;br&gt;use &lt;span&gt;{{{&lt;/span&gt;  and &lt;span&gt;}}}&lt;/span&gt; to 'escape' display text in SearchResults tiddler to ensure that formatting contained in search string is not rendered &lt;br&gt;Based on a suggestion by UdoBorkowski.&lt;br&gt;&lt;strong&gt;2005.12.14 [1.3.3]&lt;/strong&gt;&lt;br&gt;tag SearchResults tiddler with 'excludeSearch' so it won't list itself in subsequent searches&lt;br&gt;Based on a suggestion by UdoBorkowski.&lt;br&gt;&lt;strong&gt;2005.12.14 [1.3.2]&lt;/strong&gt;&lt;br&gt;added &quot;open all matching tiddlers...&quot; link to search results output.&lt;br&gt;Based on a suggestion by UdoBorkowski.&lt;br&gt;&lt;strong&gt;2005.12.10 [1.3.1]&lt;/strong&gt;&lt;br&gt;added &quot;discard search results&quot; link to end of search list tiddler output for quick self-removal of 'SearchResults' tiddler.&lt;br&gt;&lt;strong&gt;2005.12.01 [1.3.0]&lt;/strong&gt;&lt;br&gt;added chkSearchIncremental to enable/disable 'incremental' searching (i.e., search after each keystroke) (default is ENABLED).&lt;br&gt;added handling for Enter key so it can be used to start a search.&lt;br&gt;Based on a suggestion by LyallPearce&lt;br&gt;&lt;strong&gt;2005.11.25 [1.2.1]&lt;/strong&gt;&lt;br&gt;renamed from SearchTitleOrTextPlugin to SearchOptionsPlugin&lt;br&gt;&lt;strong&gt;2005.11.25 [1.2.0]&lt;/strong&gt;&lt;br&gt;added chkSearchList option&lt;br&gt;Based on a suggestion by RodneyGomes&lt;br&gt;&lt;strong&gt;2005.10.19 [1.1.0]&lt;/strong&gt;&lt;br&gt;added chkSearchTitlesFirst option.&lt;br&gt;Based on a suggestion by ChristianHauck&lt;br&gt;&lt;strong&gt;2005.10.18 [1.0.0]&lt;/strong&gt;&lt;br&gt;Initial Release&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Credits&lt;/h5&gt;&lt;blockquote&gt;This feature was developed by &lt;a tiddlylink=&quot;Eric Shulman&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://www.climate-change-two.net/#Eric Shulman&quot; href=&quot;http://www.climate-change-two.net/#Eric%20Shulman&quot; class=&quot;externalLink&quot;&gt;Eric Shulman&lt;/a&gt; from &lt;a target=&quot;_blank&quot; title=&quot;External link to http:/www.elsdesign.com&quot; href=&quot;http:/www.elsdesign.com&quot; class=&quot;externalLink&quot;&gt;ELS Design Studios&lt;/a&gt;.&lt;br&gt;Based on a suggestion by Lyall Pearce.&lt;br&gt;&lt;/blockquote&gt;&lt;h5&gt;Code&lt;/h5&gt;&lt;pre&gt;version.extensions.SearchTitleOrText = {major: 2, minor: 2, revision: 1, date: new Date(2006,2,3)};
&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;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 += &quot;\n&amp;lt;&amp;lt;option chkSearchTitles&amp;gt;&amp;gt; Search in tiddler titles&quot;;
config.shadowTiddlers.AdvancedOptions += &quot;\n&amp;lt;&amp;lt;option chkSearchText&amp;gt;&amp;gt; Search in tiddler text&quot;;
config.shadowTiddlers.AdvancedOptions += &quot;\n&amp;lt;&amp;lt;option chkSearchTags&amp;gt;&amp;gt; Search in tiddler tags&quot;;
config.shadowTiddlers.AdvancedOptions += &quot;\n&amp;lt;&amp;lt;option chkSearchTitlesFirst&amp;gt;&amp;gt; Search results show title matches first&quot;;
config.shadowTiddlers.AdvancedOptions += &quot;\n&amp;lt;&amp;lt;option chkSearchList&amp;gt;&amp;gt; Search results show list of matching tiddlers&quot;;
config.shadowTiddlers.AdvancedOptions += &quot;\n&amp;lt;&amp;lt;option chkSearchIncremental&amp;gt;&amp;gt; Incremental searching&quot;;
&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;if (config.macros.search.reportTitle==undefined)
config.macros.search.reportTitle=&quot;SearchResults&quot;;
&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;config.macros.search.handler = function(place,macroName,params)
{
var lastSearchText = &quot;&quot;;
var searchTimeout = null;
var doSearch = function(txt)
{
if (txt.value.length&amp;gt;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 = &quot;&quot;;
clearMessage();
break;
}
if (config.options.chkSearchIncremental)
{
if(this.value.length &amp;gt; 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,&quot;input&quot;,null,null,null);
if(params[0])
txt.value = params[0];
txt.onkeyup = keyHandler;
txt.onfocus = focusHandler;
txt.setAttribute(&quot;size&quot;,this.sizeTextbox);
txt.setAttribute(&quot;accessKey&quot;,this.accessKey);
txt.setAttribute(&quot;autocomplete&quot;,&quot;off&quot;);
if(config.browser.isSafari)
{
txt.setAttribute(&quot;type&quot;,&quot;search&quot;);
txt.setAttribute(&quot;results&quot;,&quot;5&quot;);
}
else
txt.setAttribute(&quot;type&quot;,&quot;text&quot;);
}
&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? &quot;mg&quot; : &quot;img&quot;);
var matches = store.search(highlightHack,&quot;title&quot;,&quot;excludeSearch&quot;);
var q = useRegExp ? &quot;/&quot; : &quot;'&quot;;
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&amp;lt;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;
}
&lt;/pre&gt;&lt;br&gt;&lt;pre&gt;TiddlyWiki.prototype.search = f