Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<<importTiddlers>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

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

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

----
Also see [[AdvancedOptions]]
<!--{{{-->
<div class='header' role='banner' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

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

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

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

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

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

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

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

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
|!Author: |Phil Chandler. Friends of the Bees. http://www.biobees.com  http://www.FriendsOfTheBees.org |

Bees are in trouble, and it is mostly because of us. We have destroyed much of their natural habitat, we have poisoned their food and in the case of honeybees, we have used and abused them for our own purposes while not giving enough attention to their needs and welfare.

Honeybees have been evolving for a very long time – the fossil record goes back at least 100 million years – and they became remarkably successful due to their adaptability to different climates, varied flora and their tolerance of many shapes and sizes of living accommodation. They became attractive to humans because of their unique ability to produce useful things, apparently out of thin air: honey, wax and propolis.

Until the nineteenth century, they were kept in pots, skeps, baskets and a variety of wooden boxes intended more-or-less to imitate their natural habitat of choice, the hollow tree. With the invention of the 'movable frame' hive, the second half of that century saw an exponential growth in commercial-scale beekeeping, and by the time motor vehicles became widely available, beekeeping on a widespread and industrial scale became a practical possibility.

Since then, bees have been treated in rather the same way as battery hens: routinely dosed with antibiotics and miticides in an effort to keep them producing, despite the growing problems of diseases and parasites and insecticide-treated plants that have led to the emergence of so-called 'Colony Collapse Disorder', especially in the massive beefarming operations in the USA.

It doesn't have to be like this. Some beekeepers have realized that, if bees are to become healthy enough to develop resistance to disease and the ability to adapt to pests, then they have to be treated differently – and not just by beekeepers.

Here are some things you can do to help the bees:
!!1. Stop using insecticides - especially for 'cosmetic' gardening.
There are better ways of dealing with pests - especially biological controls. Modern pesticides are extremely powerful and many are long-lasting and very toxic to bees and other insects. Removing all unnecessary pesticides from the environment is probably the single most important thing we can do to help save the bees.
!!2. Avoid seeds coated with systemic insecticides.
Beware - many farm seeds are now coated with Clothianidin and related systemic insecticides, which cause the entire plant to become toxic to bees and all other insects that may feed on it. The same coatings may soon appear on garden seeds. Check your seed packets carefully - and if in doubt, ask the manufacturer for full information.
!!3. Read the labels on garden compost - beware hidden killers!
Some garden and potting composts are on sale that contain Imidacloprid - a deadly insecticide manufactured by Bayer. It is often disguised as 'vine weevil protection' or similar, but it is highly toxic to all insects and all soil life, including beneficial earthworms. The insecticide is taken up by plants, and if you use this compost in hanging baskets, bees seeking water from the moist compost may be killed.
!!4. Create natural habitat.
If you have space in your garden, let some of it go wild to create a safe haven for bees and other insects and small mammals. Gardens that are too tidy are not so wildlifefriendly.
!!5. Plant bee-friendly flowers.
You can buy wildflower seeds from many seed merchants, and they can be sown in any spare patch of ground - even on waste ground that is not being cultivated. Some 'guerilla gardeners' even plant them in public parks and waste ground.
!!6. Provide a site for beehives.
If you have some space to spare, you could offer a corner of your garden to a local beekeeper as a place to keep a hive or two. They will need to have regular access, so bear this in mind when considering a site.
!!7. Make a wild bee house.
Providing a simple box as a place for feral bees to set up home is one step short of taking up beekeeping, but may appeal to those who want to have bees around but don't want to get involved with looking after them. Ideas for such boxes will be available at http://www.friendsofthebees.org
!!8. Support your local beekeepers.
Many people believe that local honey can help to reduce the effects of hayfever and similar allergies, which is one good reason to buy honey from a local beekeeper rather than from supermarkets, most of which source honey from thousands of miles away. If you can, find a beekeeper who does not use any chemicals in their hives and ask for pure comb honey for a real treat.
!!9. Learn about bees - and tell others.
Bees are fascinating creatures that relatively few people take the trouble to understand. Read a good book about bees and beekeeping, and who knows - you might decide to -
!!10. Become a beekeeper.
It is easier than you might imagine to become a beekeeper - and you don't need any of the expensive equipment in the glossy catalogues! Everything you need to keep bees successfully can be made by anyone with a few simple tools: if you can put up a shelf, you can probably build a beehive! For details, see http://www.biobees.com

Phil Chandler is author of The Barefoot Beekeeper and has a busy discussion forum for
natural beekeeping on his web site at http://www.biobees.com
A new charity – Friends of the Bees – has been created to raise awareness of the bees' health problems and to promote more natural methods of beekeeping. See their web site at http://www.FriendsOfTheBees.org
[>img[./Images/Book.png][./Documents/10 things to accomplish - before its too late.pdf]]
|!Name: |10 things to accomplish - before its too late |
|!Author: |Prepper Link |
|!Date: |2012 |
[>img[./Images/Book.png][./Documents/battery wire diagram.pdf]]
|!Name: |12 Volt and 6 Volt Battery Wiring Diagram |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/12_things_you_can_do-to_move_towards_a_lower_energy_life-style.pdf]]
|!Name: |12 things you can do to move towards a lower energy life-style |
|!Author: |Billinge & Orrell Transition Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/TinyHousePlans/12x24-homesteader's-cabin-v1.pdf]]
|!Name: |12x24 Homesteader's Cabin |
|!Author: |Tinyhousedesign.com |
|!Date: | |
/%
Image:200calories.jpg
Thumbnail:200calories_thumbnail.jpg
%/
This is what 200 Calories looks like...
[img[./Images/200calories_small.jpg][./Images/200calories.jpg]]
[>img[./Images/Book.png][./Documents/2000-watt_society.pdf]]
|!Name: |2000-watt Society |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/veg3x3.pdf]]
|!Name: |3x3 Garden Vegetable Plot |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/veg3x3harlowcarr.pdf]]
|!Name: |3x3 Garden Vegetable Plot |
|!Author: |Harlow Carr |
|!Date: | |
[>img[./Images/Book.png][./Documents/veg3x3rosemoor.pdf]]
|!Name: |3x3 Garden Vegetable Plot |
|!Author: |Rosemoor |
|!Date: | |
[>img[./Images/Book.png][./Documents/veg3x3wisley.pdf]]
|!Name: |3x3 Garden Vegetable Plot |
|!Author: |Wisley |
|!Date: | |
[>img[./Images/Book.png][./Documents/veg3x3list.pdf]]
|!Name: |3x3 Garden Vegetable Plot List |
|!Author: |Harlow Carr |
|!Date: | |

[>img[./Images/Book.png][./Documents/commonland_foundation.pdf]]
|!Name: |4 Returns from Landscape Restoration |
|!Author: |André Brasser and Willem Ferwerda |
|!Date: |2015 |
[>img[./Images/Book.png][./Documents/TinyHousePlans/5x8-tiny-market-house-plans-.pdf]]
|!Name: |5x8 Tiny Market House Plans |
|!Author: |Tinyhousedesign.com |
|!Date: | |
[>img[./Images/Book.png][./Documents/CAT/600kw-wind-turbine-at-cat.pdf]]
|!Name: |600kw wind turbine at CAT |
|!Author: |[[CAT]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/68751.pdf]]
|!Name: |68751 Solar Panel Kit |
|!Author: |Thunderbolt Solar |
|!Date: | |
[>img[./Images/Book.png][./Documents/TinyHousePlans/8x12-tiny-house-.pdf]]
|!Name: |8x12 Tiny House |
|!Author: |Tinyhousedesign.com |
|!Date: | |
[>img[./Images/Book.png][./Documents/TinyHousePlans/8x16-tiny-solar-house-plans-v2-.pdf]]
|!Name: |8x16 Tiny Solar House Plans v2 |
|!Author: |Tinyhousedesign.com |
|!Date: | |
[>img[./Images/Book.png][./Documents/TinyHousePlans/8x20-tiny-solar-house-plans-.pdf]]
|!Name: |8x20 Tiny Solar House Plans |
|!Author: |Tinyhousedesign.com |
|!Date: | |
[>img[./Images/Book.png][./Documents/TinyHousePlans/8x8-tiny-house-plans-v3-.pdf]]
|!Name: |8x8 Tiny House Plans v3 |
|!Author: |Tinyhousedesign.com |
|!Date: | |
[>img[./Images/Book.png][./Documents/e2463_beebooklet_web.pdf]]
|!Name: |A '~Bee-Friendly' Guide |
|!Author: |British Beekeepers Association and Egmont Publishing |
|!Date: |2015 |
[>img[./Images/Book.png][./Documents/ATMRL/beekeeping_guide.pdf]]
|!Name: |A Beekeeping Guide |
|!Author: |Harlan H. D. Attfield  |
|!Date: |1989 |
[>img[./Images/Book.png][./Documents/sheet metal - sn24 bench shear.pdf]]
|!Name: |A Bench Shear for the Small Shop |
|!Author: |Clifford J Butterworth |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/a_bibliography_for_the_solar_homebuilder.pdf]]
|!Name: |A Bibliography for the Solar Homebuilder |
|!Author: |Don Aitken |
|!Date: |1979 |
[>img[./Images/Book.png][./Documents/social_enterprise_business_planning_guide.pdf]]
|!Name: |A Business Planning Guide to Developing a Social Enterprise |
|!Author: |National Westminster Bank, Royal Bank of Scotland |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/24-572.pdf]]
|!Name: |A Chinese Biogas Manual |
|!Author: |Ariane van Buren |
|!Date: |1976 |
[>img[./Images/Book.png][./Documents/facilitators-handbook-for-permaculture.pdf]]
|!Name: |A Facilitator's Handbook for Permaculture |
|!Author: |IDEP Foundation |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/planning - a guide for farmers.pdf]]
|!Name:|A Farmer's Guide to the Planning System|
|!Author: |Department for Environment, Food & Rural Affairs |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/9712200299_content.pdf]]
|!Name: |A Farmer's Primer on Growing Rice |
|!Author: |Benito S. Vergara. International Rice Research Institute  |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/9711041685_content.pdf]]
|!Name: |A Farmer's Primer on Growing Soyabean on Riceland |
|!Author: |R.K. Pandey, International Rice Research Institute |
|!Date: |1987 |
[>img[./Images/Book.png][./Documents/9711041707_content.pdf]]
|!Name: |A Farmer's Primer on Growing Upland Rice |
|!Author: |M.A. Arraudeau and B.S. Vergara, International Rice Research Institute |
|!Date: |1988 |
[>img[./Images/Book.png][./Documents/gardeners guide - deer resistent plants.pdf]]
|!Name: |A Gardener’s Guide to Preventing Deer Damage |
|!Author: |Bob Coey and Kenneth Mayer, California Department of Fish and Game’s Wildlife Programs Branch |
|!Date: | |
[>img[./Images/Book.png][./Documents/community-composting-kitchen-waste.pdf]]
|!Name: |A Guide to Community Composting with Kitchen Waste |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/guide_to_community_dialogue_3.0.pdf]]
|!Name: |A Guide to Community Dialogue |
|!Author: |Public Conversations Project |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/2001-09-04_500-01-020.pdf]]
|!Name: |A Guide to Photovoltaic System Design and Installation |
|!Author: |California Energy Commission |
|!Date: |Jun 2001 |
[>img[./Images/Book.png][./Documents/seedzine4handout.pdf]]
|!Name: |A Guide to Seed Saving, Seed Stewardship & Seed Sovereignty |
|!Author: |The Seed Ambassadors Project |
|!Date: |Jan 2011 |
[>img[./Images/Book.png][./Documents/ATMRL/guide_to_organizing_local_solar_events.pdf]]
|!Name: |A Guide to organizing local solar events |
|!Author: |Solar Energy Research Institute |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/military guide to poisonous and toxic plants.pdf]]
|!Name: |A Guide to poisonous and toxic plants |
|!Author: |U S Army Center for Health Promotion and Preventive Medicine |
|!Date: |Dec 1995 |
[>img[./Images/Book.png][./Documents/ATMRL/a_homemade_honey_extractor.pdf]]
|!Name: |A Homemade Honey Extractor |
|!Author: |Larry ~McWilliams  |
|!Date: |1974 |
[>img[./Images/Book.png][./Documents/citizen-engagement.pdf]]
|!Name: |A Manager’s Guide to Citizen Engagement |
|!Author: |Carolyn J. Lukensmeyer, Lars Hasselblad Torres |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/free-range-chickens.pdf]]
|!Name: |A Practical Guide to Free Range Management |
|!Author: |Lohmann GB Ltd |
|!Date: |May 1998 |
[>img[./Images/Book.png][./Documents/a_practical_manual_of_beekeeping.pdf]]
|!Name: |A Practical Manual of Beekeeping |
|!Author: |David Cramp |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/cpr (quick guide).pdf]]
|!Name: |A Quick Guide to CPR |
|!Author: |(Pullout from medical book) |
|!Date: | |
[>img[./Images/Book.png][./Documents/resource-book-for-permaculture.pdf]]
|!Name: |A Resource Book for Permaculture |
|!Author: |Lachlan ~McKenzie with Ego Lemos |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/a_rough_guide_to_the_uk_farming_crisis.pdf]]
|!Name: |A Rough Guide to the UK Farming Crisis |
|!Author: |Kathryn Tulip and Lucy Michaels |
|!Date: |May 2004 |
[>img[./Images/Book.png][./Documents/ATMRL/25-658.pdf]]
|!Name: |A Series of Articles on the Use of Bamboo in Building Construction |
|!Author: |Dr. Jules J.A. Janssen |
|!Date: |1982 |
[>img[./Images/Book.png][./Documents/ATMRL/siting_hand_book_for_small_windmills.pdf]]
|!Name: |A Siting Handbook for Small Wind Energy Conversion Systems |
|!Author: |Harry L. Wegley, Montie M. Orgill and Ron L. Drake  |
|!Date: |May 1978 |
[>img[./Images/Book.png][./Documents/ATMRL/solar_water_heater_workshop_manual.pdf]]
|!Name: |A Solar Water Heater Workshop Manual |
|!Author: |Ken Eklund  |
|!Date: |1979 |
[>img[./Images/Book.png][./Documents/ATMRL/survey_of_solar_powered_water_pumps_solar_cookers_for_sub-sahara_africa.pdf]]
|!Name: |A State of the Art Survey of Solar Powered Irrigation Pumps, Solar Cookers, and Wood Burning Stoves for Use in Sub-Saharan Africa |
|!Author: |J.D, Walton, Jr., A.H. Roy and S.H. Bomar, Jr. |
|!Date: |Jan 1978 |
[>img[./Images/Book.png][./Documents/tropicalvegetablegardening.pdf]]
|!Name: |A Tropical Guide to Year Round Vegetable Gardening |
|!Author: |Harlan Attfield |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/user_guide_to_open_space.pdf]]
|!Name: |A Users Guide to Open Space Technology |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/a_viable_food_future.pdf]]
|!Name: |A Viable Food Future |
|!Author: |Utviklingsfondet / The Development Fund, Norway |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/sustainable guide m12.pdf]]
|!Name: |Sustainable Guide M12 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/nutcycle.pdf]]
|!Name: |nutcycle |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/new_busplanguide.pdf]]
|!Name: |A business planning guide for developing a social enterprise |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/4f76e3fd-bc84-4463-8d04-0c710ae4f5bb.pdf]]
|!Name: |A case study in Lime Production |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/bottle_jar_cooling_system.pdf]]
|!Name: |A continuous low cost bottle and jar cooling system |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/cook_book_for_building_a_food_dehydrator.pdf]]
|!Name: |A cook book for building a food dehydrator |
|!Author: |Arnold and Maria Valdez |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/guide_to_putting_on_grassroots_event.pdf]]
|!Name: |A guide to putting on grassroot events |
|!Author: |ATC |
|!Date: | |
[>img[./Images/Book.png][./Documents/a_list_of_items_and_equipment_for_bugging_out.pdf]]
|!Name: |A list of items and equipment for bugging out |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrospecial1.pdf]]
|!Name: |A nurseryman and his trees |
|!Author: |Ed Verheij, Harrie Lövenstein. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/PracticalAction/50c1d202-31f0-49d1-ad8d-4b100ae4f5bb.pdf]]
|!Name: |A small Lime Kiln for batch and continuous firing |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/community-cookbook.pdf]]
|!Name: |community-cookbook |
|!Author: |Sue Mackinnon |
|!Date: | |
Appropriate Technology MicroFiche Reference Library

Produce for the 3rd World and Asia areas. These reference documents date back to the 1970's and 80's. All entries tagged as such are available in the Public Domain.
ATTRA is a program developed and managed by the National Center for Appropriate Technology (NCAT). The majority of funding for ATTRA is through a cooperative agreement with the United States Department of Agriculture's Rural Business-Cooperative Service.

https://attra.ncat.org/
[>img[./Images/Book.png][./Documents/beekeeping_getting_started.pdf]]
|!Name: |About Beekeeping |
|!Author: |Roger Patterson  |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/abundant_living_1.pdf]]
|!Name: |Abundant Living in the coming age of the tree |
|!Author: |Kathleen Jannaway |
|!Date: |Apr 1991 |
[>img[./Images/Book.png][./Documents/ATTRA/adding_value_to_farm_products_manual.pdf]]
|!Name: |adding_value_to_farm_products_manual |
|!Author: |Rachel Armstrong, [[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/valueovr.pdf]]
|!Name: |valueovr |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/app_note_acc_new.pdf]]
|!Name: |Adding the battery back-up power option to existing grid-tied PV/solar systems |
|!Author: |~OutBack Power Technologies |
|!Date: |2014 |
[>img[./Images/book.png][./Documents/USAMD/md 0552 - administer intramuscular, subcutaneous & intradermal injections.pdf]]
|!Name: |MD 0552 - Administer Intramuscular, Subcutaneous & Intradermal Injections |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/dotmocracy_instructions_one_page_v4-00.pdf]]
|!Name: |Advanced Dotmocracy Instructions |
|!Author: |InternetArticle |
|!Date: | |
A selection of Building Plans from the University of Tennessee.
<<include "AgriBuildingPlans.html" hide>>
|!Name: |Agricultural Building and Equipment Plans |
|!Author: |The University of Tennessee |
|!Date: |1997 |
http://bioengr.ag.utk.edu/extension/extpubs/planlist97.htm
[>img[./Images/Book.png][./Documents/ATTRA/agriculture_planning.pdf]]
|!Name: |agriculture_planning |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/carbonsequestration.pdf]]
|!Name: |carbonsequestration |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/agrihoods.pdf]]
|!Name: |agrihoods |
|!Author: |[[ATTRA]] |
|!Date: | |
The Agromisa Foundation is a non-profit organisation founded in 1934 in the Netherlands that supports small-scale farmers and organisations by providing them with practical information on sustainable agriculture. Agromisa produces practical oriented and easy to read publications for small scale farmers, staff of agricultural service providers and development workers.

http://www.agromisa.org

[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc16.pdf]]
|!Name: |Agroforestry |
|!Author: |Ed Verheij |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/agroforestry_a_decade_of_development.pdf]]
|!Name: |Agroforestry - A Decade of Development |
|!Author: |Howard A. Steppler and P.K. Ramachandran Nair   |
|!Date: |1987 |
[>img[./Images/Book.png][./Documents/agroforestry_systems_and_practices.pdf]]
|!Name: |Agroforestry - Systems and Practices |
|!Author: |Ramesh Umrani, C.K. Jain |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/agroforestry_research_trust_catalogue_2010-11.pdf]]
|!Name: |Agroforestry Research Trust - Catalogue 2010-11 |
|!Author: |Agroforestry Research Trust |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/ATMRL/agroforestry_species-crop_sheet_manual.pdf]]
|!Name: |Agroforestry Species: A Crop Sheet Manual |
|!Author: |P.K.R Nair |
|!Date: |1980 |
[>img[./Images/Book.png][./Documents/agroforestry_and_biodiversity_conservation_in_tropical_landscapes.pdf]]
|!Name: |Agroforestry and Biodiversity Conservation in Tropical Landscapes |
|!Author: |Götz Schroth, Gustavo A. B. da Fonseca, Celia A. Harvey, Claude Gascon, Heraldo L. Vasconcelos, and Anne-Marie N. Izac |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/annual11.pdf]]
|!Name: |Agroforestry for Ecosystem Services |
|!Author: |The Center for Agroforestry at the University of Missouri |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/agroforestry_for_natural_resource_management.pdf]]
|!Name: |Agroforestry for natural resource management |
|!Author: |Ian Nuberg, Brendan George, Rowan Reid |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/agroforestry_in_europe-current_status_and_future_prospects.pdf]]
|!Name: |Agroforestry in Europe |
|!Author: |Antonio Rigueiro-Rodríguez, Jim McAdam, María Rosa Mosquera-Losada |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/agroforestry_in_sustainable_agricultural_systems.pdf]]
|!Name: |agroforestry_in_sustainable_agricultural_systems |
|!Author: |Louise E. Buck, James P. Lassoie, Erick C.M. Fernandes |
|!Date: |1999 |
[>img[./Images/Book.png][./Documents/ATTRA/agrofor.pdf]]
|!Name: |agrofor |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/aids to survival.pdf]]
|!Name: |Aids to Survival |
|!Author: |Western Australia Police Academy |
|!Date: |June 2002 |
[>img[./Images/Book.png][./Documents/us navy course - aircrew survival equipmentman 1 & c navedtra 14217.pdf]]
|!Name: |Aircrew Survival Equipment Manual 1 |
|!Author: |US Navy |
|!Date: |Mar 1990 |
[>img[./Images/Book.png][./Documents/us navy course - aircrew survival equipmentman 2 navedtra 14218.pdf]]
|!Name: |Aircrew Survival Equipment Manual 2 |
|!Author: |US Navy |
|!Date: |Mar 1990 |
[>img[./Images/Book.png][./Documents/airway management.pdf]]
|!Name: |Airway Management |
|!Author: |Prepperlink |
|!Date: |2012 |
[>img[./Images/Book.png][./Documents/general_-_all_hazard_preparedness_workbook.pdf]]
|!Name: |All Hazard Preparedness Workbook |
|!Author: |Provincial Emergency Program, British Columbia |
|!Date: |October 2002 |
[>img[./Images/Book.png][./Documents/art10.1007s13595-014-0373-5.pdf]]
|!Name: |Alley Coppice |
|!Author: |Christopher D. Morhart, Gerry C. Douglas, Christian Dupraz |
|!Date: |Oct 2013 |

[>img[./Images/Book.png][./Documents/allotment guide.pdf]]
|!Name: |Allotment Guide |
|!Author: |Department for Transport, Local Government and the Regions |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/allotment handbook.pdf]]
|!Name: |Allotment Handbook |
|!Author: |Sheffield City Council |
|!Date: | |
[>img[./Images/Book.png][./Documents/rspb_allotments for wildlife.pdf]]
|!Name: |Allotments for Wildlife |
|!Author: |RSPB |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_alternate_cooking_methods.pdf]]
|!Name: |Alternate Cooking Methods |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/altcrops.pdf]]
|!Name: |altcrops |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/general_-_compact_survival_kit.pdf]]
|!Name: |Altoids Survival Kit (and others) |
|!Author: |Internet Article |
|!Date: | |

[>img[./Images/Book.png][./Documents/ATMRL/an_attached_solar_greenhouse.pdf]]
|!Name: |An Attached Solar Greenhouse |
|!Author: |Bill and Susan Yanda |
|!Date: |1976 |
English and Spanish
[>img[./Images/Book.png][./Documents/ATTRA/sheep_illus.pdf]]
|!Name: |sheep_illus |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/baile-dulra-eco-village-project.pdf]]
|!Name: |An Introduction to Baile Dúlra |
|!Author: |Rob Hopkins |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/bioenergy.pdf]]
|!Name: |bioenergy |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/an_introduction_to_permaculture_sheet_mulching.pdf]]
|!Name: |An Introduction to Permaculture Sheet Mulching |
|!Author: |Harold Waldock |
|!Date: |Aug 2001 |
[>img[./Images/Book.png][./Documents/an_inconvenient_truth_about_food.pdf]]
|!Name: |An inconvenient truth about food |
|!Author: |Soil Association |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/anaerobic_composting.pdf]]
|!Name: |Anaerobic Composting |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/anaerobic.pdf]]
|!Name: |anaerobic |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/wind-report.pdf]]
|!Name: |Analysis of UK Wind Power Generation |
|!Author: |John Muir Trust |
|!Date: |December 2010 |
[>img[./Images/Book.png][./Documents/USAMD/md 0353 - anesthesia apparatus.pdf]]
|!Name: |MD 0353 - Anesthesia Apparatus |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/book.png][./Documents/ATMRL/06-287.pdf]]
|!Name: |Animal Traction |
|!Author: |Peter R Watson |
|!Date: |Aug 1981 |

[>img[./Images/Book.png][./Documents/food_-_animals_for_food.pdf]]
|!Name: |Animals For Food |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/annealing_hardening_tempering.pdf]]
|!Name: |Annealing Hardening Tempering |
|!Author: |Book Extract |
|!Date: | |
[>img[./Images/Book.png][./Documents/metalworking - how to anodizing aluminum.pdf]]
|!Name: |Anodizing Aluminium |
|!Author: |Ron Newman |
|!Date: | |
[>img[./Images/Book.png][./Documents/metalworking - anodizing aluminum guide.pdf]]
|!Name: |Anodizing Aluminium Guide |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/metalworking - anodizing of aluminum.pdf]]
|!Name: |Anodizing of Aluminium |
|!Author: |Charles A. Grubbs |
|!Date: | |
[>img[./Images/Book.png][./Documents/us marine corps - antenna handbook mcrp 3-40.3c.pdf]]
|!Name: |Antenna Handbook |
|!Author: |US Marine Corps |
|!Date: |Jul 2001 |
[>img[./Images/Book.png][./Documents/antenna toolkit-lrn.pdf]]
|!Name: |Antenna Toolkit |
|!Author: |Joseph J Carr |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/anvils - types, buying, installing tutorial.pdf]]
|!Name: |Anvils - Types, Buying, Installing Tutorial |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/aphids_tip_sheet.pdf]]
|!Name: |aphids_tip_sheet |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/apple_diseases_diagnostic_key.pdf]]
|!Name: |apple_diseases_diagnostic_key |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/apple_insects_diagnostic_key.pdf]]
|!Name: |apple_insects_diagnostic_key |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/sheetmetal - applying gold leaf to sheet metal.pdf]]
|!Name: |Applying Gold Leaf To Sheet Metal |
|!Author: |J. P. Harner |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/transition.pdf]]
|!Name: |transition |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/apricot_diseases_diagnostic_key.pdf]]
|!Name: |apricot_diseases_diagnostic_key |
|!Author: |[[ATTRA]] |
|!Date: | |

[>img[./Images/Book.png][./Documents/ATTRA/aquaponic.pdf]]
|!Name: |Aquaponics - Integration of Hydroponics with Aquaculture |
|!Author: |National Sustainable Agriculture Information Service |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/aquaponics_common_sense_guide.pdf]]
|!Name: |Aquaponics Common Sense Guide |
|!Author: |Michael Tezel |
|!Date: |Jul 2009 |
[>img[./Images/Book.png][./Documents/aquaponicsfacts.pdf]]
|!Name: |Aquaponics Factsheet |
|!Author: |Capital Aquaponics |
|!Date: | |
[>img[./Images/Book.png][./Documents/guidelines_aquaponics_20151112.pdf]]
|!Name: |Aquaponics Guidelines |
|!Author: |Ragnheidur I. Thorarinsdottir |
|!Date: |Nov 2015 |
[>img[./Images/Book.png][./Documents/ap handout.pdf]]
|!Name: |Aquaponics Information Handout |
|!Author: |Backyard Aquaponics |
|!Date: | |
[>img[./Images/Book.png][./Documents/safety.pdf]]
|!Name: |Aquaponics Safety |
|!Author: |College of Tropical Agriculture and Human Resources |
|!Date: |Jul 2009 |
[>img[./Images/Book.png][./Documents/aquaponics-and-food-safety.pdf]]
|!Name: |Aquaponics and Food Safety |
|!Author: |Gordon A Chalmers |
|!Date: |Apr 2004 |
[>img[./Images/Book.png][./Documents/20121024112120176.pdf]]
|!Name: |Aquaponics in Nordic Countries |
|!Author: |Stefania K. Karlsdottir |
|!Date: |Sep 2012 |
[>img[./Images/Book.png][./Documents/aquaponics systems suck.pdf]]
|!Name: |Aquaponics systems suck |
|!Author: |Ian King |
|!Date: |December 2008 |
/***
|''Name:''|ArchivePlugin|
|''Version:''|2.4.0 (2 Jun 2008)|
|''Source''|http://jackparke.googlepages.com/jtw.html#ArchivePlugin ([[del.icio.us|http://del.icio.us/post?url=http://jackparke.googlepages.com/jtw.html%23ArchivePlugin]])|
|''Author:''|Jack|
|''Type:''|Plugin|
!Description
The archive plugin allows you to store tiddler text outside of the tiddlywiki file.
Typically you would tag bulky tiddlers or those with infrequently needed content as "Archive" and these would
then be archived as separate html files in the sub folder called "archive".
!Usage
#Create a folder "archive" in the same folder as your tiddlywiki file.
#Install the Archive Plugin and reload your tiddlywiki
#Tag your bulky tiddlers with "Archive"
#Save your tiddlywiki file
!To Do
* Synchronize tiddler renames/deletions with file system
* Lazy loading of archived files via HTTP
!Code
***/
//{{{
version.extensions.ArchivePlugin = {major: 2, minor: 4, revision: 0, date: new Date("Jun 6, 2008")};
config.macros.ArchivePlugin = {};
config.macros.ArchivePlugin.init = function () {
 this.archivePath = getWikiPath('archive');
}

// Hijacking the built-in functions
TW21Saver.prototype.externalizeTiddler = function(store,tiddler)
{
	try {
		var extendedAttributes = "";
		var usePre = config.options.chkUsePreForStorage;
		store.forEachField(tiddler,
			function(tiddler,fieldName,value) {
				// don't store stuff from the temp namespace
				if(typeof value != "string")
					value = "";
				if (!fieldName.match(/^temp\./))
					extendedAttributes += ' %0="%1"'.format([fieldName,value.escapeLineBreaks().htmlEncode()]);
			},true);
		var created = tiddler.created.convertToYYYYMMDDHHMM();
		var modified = tiddler.modified.convertToYYYYMMDDHHMM();
		var vdate = version.date.convertToYYYYMMDDHHMM();
		var attributes = tiddler.modifier ? ' modifier="' + tiddler.modifier.htmlEncode() + '"' : "";
		attributes += (usePre && modified == created) ? "" : ' modified="' + modified +'"';
		attributes += (usePre && created == vdate) ? "" :' created="' + created + '"';
		var tags = tiddler.getTags();
		if(!usePre || tags)
			attributes += ' tags="' + tags.htmlEncode() + '"';
		return ('<div %0="%1"%2%3>%4</'+'div>').format([
				usePre ? "title" : "tiddler",
				tiddler.title.htmlEncode(),
				attributes,
				extendedAttributes,
				usePre ? "\n<pre>" + tiddler.saveMe() + "</pre>\n" : tiddler.escapeLineBreaks().htmlEncode()
			]);
	} catch (ex) {
		throw exceptionText(ex,config.messages.tiddlerSaveError.format([tiddler.title]));
	}
};

Tiddler.prototype.saveMe = function() {
 if (this.tags.indexOf('Archive') != -1) {
 // Save tiddler body to a file in the archive folder
 if (this.text) saveFile(config.macros.ArchivePlugin.archivePath + this.title.filenameEncode() + '.html', this.text)
 return '';
 }
 else
 return this.text.htmlEncode();
}

// This hijack ensures plugins can also be archived
var archivePlugin_getPluginInfo = getPluginInfo;
getPluginInfo = function(tiddler) {
alert(tiddler.title)
 tiddler.text = store.getValue(tiddler, 'text');
 return archivePlugin_getPluginInfo(tiddler);
}

TiddlyWiki.prototype.getValue = function(tiddler, fieldName) {
 var t = this.resolveTiddler(tiddler);
 if (!t)
 return undefined;

 fieldName = fieldName.toLowerCase();

 if (t.tags.indexOf('Archive')!=-1 && fieldName=='text' && t['text']=='') {
 try {
   var tmp = loadFile(config.macros.ArchivePlugin.archivePath + t.title.filenameEncode() + '.html');
   tmp = (tmp.charCodeAt(0) == 239 ? manualConvertUTF8ToUnicode(tmp) : tmp);
 } catch (e) {
   return ''; //alert("{{{Error: Unable to load file '" + config.macros.ArchivePlugin.archivePath + t.title.filenameEncode() + '.html' + "'}}}");
 }
return tmp;
 } else {
 var accessor = TiddlyWiki.standardFieldAccess[fieldName];
 if (accessor) {
 return accessor.get(t);
 }
 }

 return t.fields ? t.fields[fieldName] : undefined;
}

String.prototype.filenameEncode = function() {
 return(this.toLowerCase().replace(/[^a-z0-9_-]/g ,"_"));
}

function getWikiPath(folderName) {
 var originalPath = document.location.toString();
 if(originalPath.substr(0,5) != 'file:') {
 alert(config.messages.notFileUrlError);
 if(store.tiddlerExists(config.messages.saveInstructions))
 story.displayTiddler(null,config.messages.saveInstructions);
 return;
 }
 var localPath = getLocalPath(originalPath);
 var backSlash = localPath.lastIndexOf('\\') == -1 ? '/' : '\\';
 var dirPathPos = localPath.lastIndexOf(backSlash);
 var subPath = localPath.substr(0,dirPathPos) + backSlash + (folderName ? folderName + backSlash : '');
 return subPath;
}
// Deleting archive files
TiddlyWiki.prototype.archivePlugin_removeTiddler = TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler = function(title) {
 var tiddler = store.getTiddler(title);
 var filePath = config.macros.ArchivePlugin.archivePath + title.filenameEncode() + '.html';
 if (tiddler.tags.indexOf('Archive') != -1) ieDeleteFile(filePath);
 this.archivePlugin_removeTiddler(title);
}
function ieDeleteFile(filePath) {
// IE Support only
 if (!config.browser.isIE) return false;
	try {
		var fso = new ActiveXObject("Scripting.FileSystemObject");
	} catch(ex) {return null;}
	try {
	 var file = fso.GetFile(filePath);
	 file.Delete();
	} catch(ex) {return null;}
	return true;
}
//}}}
[>img[./Images/Book.png][./Documents/FEMA/general_-_fema_areyouready.pdf]]
|!Name: |Are You Ready? |
|!Author: |Federal Emergency Management Agency |
|!Date: |Aug 2004 |
[>img[./Images/Book.png][./Documents/ATTRA/arsenic_poultry_litter.pdf]]
|!Name: |arsenic_poultry_litter |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/united_states_army_fm_5-20_-_20_may_1968.pdf]]
|!Name: |Art of Camouflage |
|!Author: |[[US Army]] |
|!Date: |1968 |
[>img[./Images/Book.png][./Documents/USAMD/md 0171 - arthropod control.pdf]]
|!Name: |MD 0171 - Arthropod Control |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0170 - arthropod identification & surveys.pdf]]
|!Name: |MD 0170 - Arthropod Identification & Surveys |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/aspects_of_wind_power_for_irrgiation.pdf]]
|!Name: |Aspects of irrigation with Windmills |
|!Author: |A. van Vilsteren |
|!Date: |1981 |
[>img[./Images/Book.png][./Documents/austere medicine books.pdf]]
|!Name: |Austere Medicine Books |
|!Author: |Compiled by Charles Stewart MD |
|!Date: | |
/***
|''Name:''|AutoRefreshPlugin|
|''Version:''|1.0.1 (2007-01-20)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#AutoRefreshPlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[AutoRefreshPlugin Documentation|http://tiddlywiki.abego-software.de/#%5B%5BAutoRefreshPlugin%20Documentation%5D%5D]]|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''~CoreVersion:''|2.1.3|
|''Browser:''|Firefox 1.5.0.9 or better; Internet Explorer 6.0|
A tiddler containing the {{{<<autoRefresh...>>}}} macro is automatically refreshed (re-painted) whenever a tiddler changes.
!Syntax
{{{
<<autoRefresh [observeTiddler: tiddler ...]>>
}}}
|{{{observeTiddler}}}|(optional) when specified the refresh will only happen when one of the tiddlers specified is changed.|
!Source Code
***/
//{{{

if (!window.abego) window.abego = {};

// autoRefresh Macro =============================================================
//
(function() {


var REFRESHER_NAME = "abego_onEveryChange";

var tiddlersToRefresh = {}; // A set holding the names of tiddlers to be refreshed

var onEveryChangeRefresher = function(e,changeList) {

	var tiddlerElem = story.findContainingTiddler(e);
	if (!tiddlerElem) return false;

	var title = tiddlerElem.getAttribute("tiddler");
	if (!title) return false;

	// if "observeTiddler" are specified we only refresh if one of the given
	// tiddlers has changed.
	var observedTiddlers = e.getAttribute("observedTiddlers");
	if (observedTiddlers) {
		var a = observedTiddlers.readBracketedList();
		if (!changeList || !a.containsAny(changeList))
			return;
	}

	// Refresh the tiddler asynchronously.
	// This way we can avoid repeated refreshes (e.g. when a tiddler is renamed)
	tiddlersToRefresh[title] = true;
	setTimeout(function() {
		// Refresh all tiddlers in tiddlersToRefresh
		for(var title in tiddlersToRefresh)
			story.refreshTiddler(title,null,true);

		// We have refreshed all pending tiddlers. Clear the set.
		tiddlersToRefresh = {};
	}, 0);

	return true;
}

config.refreshers[REFRESHER_NAME] = onEveryChangeRefresher;


config.macros.autoRefresh = {};

config.macros.autoRefresh.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
    params = paramString.parseParams("observeTiddler",null,true,false,true); // allowEval, cascadeDefaults, names allowed

	var e = createTiddlyElement(place,"span");
	e.setAttribute("refresh",REFRESHER_NAME);
	var observedTiddlers = params[0]["observeTiddler"];
	if (observedTiddlers && observedTiddlers.length) {
		var s = "[["+observedTiddlers.join("]] [[")+"]]";
		e.setAttribute("observedTiddlers",s);
	}
};


})();

//}}}
[>img[./Images/Book.png][./Documents/us_army_cc_al0661_aviation_survival_part_i.pdf]]
|!Name: |Aviation Survival Part 1 |
|!Author: |[[US Army]] Aviation Center |
|!Date: |Jun 1993 |
[>img[./Images/Book.png][./Documents/us_army_cc_av0662_aviation_survival_part_ii.pdf]]
|!Name: |Aviation Survival Part 2 |
|!Author: |[[US Army]] Aviation Center |
|!Date: | |
[>img[./Images/Book.png][./Documents/us_army_cc_av0663_aviation_survival_part_iii.pdf]]
|!Name: |Aviation Survival Part 3 |
|!Author: |[[US Army]] Aviation Center |
|!Date: |Jun1993 |
[>img[./Images/Book.png][./Documents/us_army_cc_av0664_aviation_survival_part_iv.pdf]]
|!Name: |Aviation Survival Part 4 |
|!Author: |[[US Army]] Aviation Center |
|!Date: |Jun 1993 |
[>img[./Images/Book.png][./Documents/us navy - aviation weather student guide cnatra p-303.pdf]]
|!Name: |Aviation Weather Student Guide |
|!Author: |[[US Navy]] |
|!Date: |2003 |
/%
Image:bbqgrilling.jpg
Thumbnail:bbqgrilling_thumbnail.jpg
%/
[img[./Images/bbqgrilling_small.jpg][./Images/bbqgrilling.jpg]]
[>img[./Images/Book.png][./Documents/hawauh89001.pdf]]
|!Name: |Backyard Aquaculture in Hawaii |
|!Author: |Dr. Jim Szyper, University of Hawaii |
|!Date: |1989 |
[>img[./Images/Book.png][./Documents/byap_magazine_issue1.pdf]]
|!Name: |Backyard Aquaponics Magazine Issue 1 |
|!Author: |Backyard Aquaponics |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/ATMRL/05-134.pdf]]
|!Name: |Backyard Composting |
|!Author: |Helga Olkowski |
|!Date: |Jun 1975 |
[>img[./Images/Book.png][./Documents/backyard_composting-recycling_a_natural_product.pdf]]
|!Name: |Backyard Composting - Recycling a Natural Product |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_backyard_greenhouse.pdf]]
|!Name: |Backyard Greenhouse |
|!Author: |Unknown |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc20.pdf]]
|!Name: |Backyard rabbit farming in the tropics |
|!Author: |J.B. Schiere. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/USAMD/md 0856 - bacteriology.pdf]]
|!Name: |MD 0856 - Bacteriology |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ball_blue_book_guide_to_home_canning,_freezing,_&_dehydration_-_1999.pdf]]
|!Name: |Ball Blue Book Guide to home canning, freezing, and dehydration |
|!Author: | |
|!Date: |1999 |
[>img[./Images/Book.png][./Documents/ATMRL/rain_water_catchment_tank.pdf]]
|!Name: |Bamboo Reinforced Concrete Rainwater Collection Tanks |
|!Author: |Thomas B. Fricke |
|!Date: |1982 |
 
[>img[./Images/Book.png][./Documents/ATMRL/25-585.pdf]]
|!Name: |Bamboo as a Building Material |
|!Author: |F.A. ~McClure |
|!Date: |May 1953 |
[>img[./Images/Book.png][./Documents/PracticalAction/banana_beer.pdf]]
|!Name: |Banana Beer |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/banana_chips.pdf]]
|!Name: |Banana chips |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/barrelponics_manual.pdf]]
|!Name: |Barrel-ponics Manual |
|!Author: |Travis W. Hughey |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/base camp hygiene and health (bennett-jones).pdf]]
|!Name: |Base Camp Hygiene and Health |
|!Author: |Bennett Jones. Extract from Expedition Medicine|
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/blacksmithing.pdf]]
|!Name: |Blacksmithing |
|!Author: |David Harries and Bernhard Heer |
|!Date: |1993 |
[>img[./Images/Book.png][./Documents/USAMD/md 0694 - basic food inspection procedures.pdf]]
|!Name: |MD 0694 - Basic Food Inspection Procedures |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0006 - basic human anatomy.pdf]]
|!Name: |MD 0006 - Basic Human Anatomy |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0007 - basic human physiology.pdf]]
|!Name: |MD 0007 - Basic Human Physiology |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/md 0010 - basic medical terminology.pdf]]
|!Name: |MD 0010 - Basic Medical Terminology |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0556 - basic patient care procedures.pdf]]
|!Name: |MD 0556 - Basic Patient Care Procedures |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/passive_solar_design_basic_principals.pdf]]
|!Name: |Basic Principles of Passive Solar Design |
|!Author: |Fred Hopman |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/help_basicwoundcare.pdf]]
|!Name: |Basic Wound Care |
|!Author: |Nadine B. Semer, Global Health Education Low-cost Publications |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/ATTRA/localfoods3.pdf]]
|!Name: |localfoods3 |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/batteries.pdf]]
|!Name: |Batteries |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/batteries_not_included-organic_farming_and_animal_welfare.pdf]]
|!Name: |Batteries not included - organic farming and animal welfare |
|!Author: |Charlie Pye-Smith, Soil Association |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/eurobat_rural_may_2013_0.pdf]]
|!Name: |Battery Energy Storage for Rural Electrification Systems |
|!Author: |Euro Battery |
|!Date: |2013 |

[>img[./Images/Book.png][./Documents/general_-_becoming_self-sufficient_for_six.pdf]]
|!Name: |Becoming Self Sufficient for Six Months |
|!Author: |Pandemic Flu Information Contributor “Dr Dave” |
|!Date: |Jun 2007 |
[>img[./Images/Book.png][./Documents/ATMRL/bee_keepers_handbook.pdf]]
|!Name: |Bee Keepers Handbook |
|!Author: |Diana Sammataro and Alphonse Avitabile  |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/ATMRL/bee_keeping_handbook.pdf]]
|!Name: |Bee Keeping Handbook |
|!Author: |B. Clauss and L. Tiernan  |
|!Date: |Mar 1982 |
[>img[./Images/Book.png][./Documents/185190196-beekeeping-simple-and-natural_1.pdf]]
|!Name: |Bee Keeping, Simple and Natural |
|!Author: |Phil Chandler |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc42.pdf]]
|!Name: |Bee products |
|!Author: |Marieke Mutsaers, Henk van Blitterswijk, Leen van 't Leven, Jaap Kerkvliet, Jan van de Waerdt |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/ATTRA/beefchec.pdf]]
|!Name: |beefchec |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/beefchec-ez.pdf]]
|!Name: |beefchec-ez |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/beekeeping.pdf]]
|!Name: |Beekeeping |
|!Author: |Practical Action |
|!Date: |Mar 1994 |
[>img[./Images/Book.png][./Documents/beekeeping_for_all.pdf]]
|!Name: |Beekeeping For All |
|!Author: |Abbé Warré, Translated by Pat Cheney and David Heaf |
|!Date: |Jul 2007 |
[>img[./Images/Book.png][./Documents/beekeepingguide.pdf]]
|!Name: |Beekeeping Guide |
|!Author: |Harlan Attfield |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/beekeeping_in_dug_community_gardens.pdf]]
|!Name: |Beekeeping in Denver Urban Gardens  Community Gardens |
|!Author: |Denver Beekeepers Association  |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/ATMRL/beekeeping_in_rural_develoment.pdf]]
|!Name: |Beekeeping in Rural Develoment |
|!Author: |Commonwealth Secretariat, International Bee Research Association  |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc32.pdf]]
|!Name: |Beekeeping in the tropics |
|!Author: |P. Segeren - Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/ATTRA/beekeeping.pdf]]
|!Name: |beekeeping |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/beekeeping-natural_simple_and_ecological.pdf]]
|!Name: |Beekeeping: natural, simple and ecological |
|!Author: |Johann Thür |
|!Date: |1946 |

[>img[./Images/Book.png][./Documents/dehydrating_beginners_guide.pdf]]
|!Name: |Beginners Guide to Dehydrating |
|!Author: |Prepperlink |
|!Date: |2012 |
[>img[./Images/Book.png][./Documents/beginning_beekeeping_for_kentuckians.pdf]]
|!Name: |Beginning Beekeeping for Kentuckians |
|!Author: |R.T. Bessin and L.H. Townsend |
|!Date: |Apr 1996 |
[>img[./Images/Book.png][./Documents/ATMRL/bell_alarms_and_sack_hoists_in_windmills.pdf]]
|!Name: |Bell alarms and sack hoists in windmills |
|!Author: |A. Clark and R. Wailes |
|!Date: |1972 |
[>img[./Images/Book.png][./Documents/urgp_benefits_of_green_infrastructure.pdf]]
|!Name: |Benefits of green infrastructure |
|!Author: |Forest Research |
|!Date: |Oct 2010 |
[>img[./Images/Book.png][./Documents/ATTRA/beyondbasic.pdf]]
|!Name: |beyondbasic |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/bicycle_trailers.pdf]]
|!Name: |Bicycle Trailers |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/bicycles.pdf]]
|!Name: |Bicycles |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/biltong.pdf]]
|!Name: |Biltong |
|!Author: |Intermediate Technology Development Group |
|!Date: | |

[>img[./Images/Book.png][./Documents/CAT/biodiesel-buy-or-diy.pdf]]
|!Name: |Biodiesel |
|!Author: |[[CAT]] |
|!Date: |2006 |


[>img[./Images/Book.png][./Documents/PracticalAction/biogas_liquid_fuels.pdf]]
|!Name: |BioGas and Liquid Biofuels |
|!Author: |Intermediate Technology Development Group |
|!Date: | |


[>img[./Images/Book.png][./Documents/ATTRA/biodiesel_on_farm.pdf]]
|!Name: |biodiesel_on_farm |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/biodiesel_safety_and_best_management.pdf]]
|!Name: |Biodiesel Safety and Best Management |
|!Author: |Pennsylvania State University - College of Agricultural Sciences |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/ATTRA/biodiesel_use.pdf]]
|!Name: |biodiesel_use |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/biodiesel.pdf]]
|!Name: |biodiesel |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/biodiesel_sustainable.pdf]]
|!Name: |biodiesel_sustainable |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/biodiversity_biofuels_agroforestry_and_conservation_agriculture.pdf]]
|!Name: |biodiversity_biofuels_agroforestry_and_conservation_agriculture |
|!Author: |Eric Lichtfouse |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/biodynamic_beekeeping_qa.pdf]]
|!Name: |Biodynamic Beekeeping: Questions and Answers |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/biodynamic_beekeeping-a_weekend.pdf]]
|!Name: |Biodynamic Beekeeping: a weekend with Michael Weiler |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/biogas_digester.pdf]]
|!Name: |Biogas Digester |
|!Author: |T. H. Culhane |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/24-582.pdf]]
|!Name: |Biogas Plants in Animal Husbandry |
|!Author: |Uli Werner, Ulrich Stohr, and Nicolai Hees |
|!Date: |1989 |
[>img[./Images/Book.png][./Documents/36203835.pdf]]
|!Name: |Biogas Production |
|!Author: |(Book Extract) |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/24-569.pdf]]
|!Name: |Biogas Systems in India |
|!Author: |Jon Lichtman |
|!Date: |1983 |
[>img[./Images/Book.png][./Documents/ATMRL/24-570.pdf]]
|!Name: |Biogas Technology in the Third World |
|!Author: |Andrew Barnett, Leo Pyle and S.K Subramanian |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/PracticalAction/biogas.pdf]]
|!Name: |Biogas |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/book.png][./Documents/ATMRL/24-567.pdf]]
|!Name: |Biogas and Waste Recycling |
|!Author: |Felix D. Maramaba |
|!Date: |1978 |

[>img[./Images/Book.png][./Documents/ATTRA/ipm.pdf]]
|!Name: |ipm |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/fresh water prawns (biology).pdf]]
|!Name: |Biology and Life History of Freshwater Prawns |
|!Author: |Louis R. D’Abramo and Martin W. Brunson |
|!Date: |Jul 1996 |

[>img[./Images/Book.png][./Documents/biomass-a_burning_issue-sept_2010.pdf]]
|!Name: |Biomass - a burning issue |
|!Author: |Nick Grant, Alan Clarke |
|!Date: |Sep 2010 |
[>img[./Images/Book.png][./Documents/PracticalAction/biomass.pdf]]
|!Name: |Biomass |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/biomethanefull_report.pdf]]
|!Name: |Biomethane from Dairy Waste |
|!Author: |Western United Dairymen |
|!Date: |Jul 2005 |
[>img[./Images/Book.png][./Documents/medical_-_bird_flu_diagnosis_and_personal.pdf]]
|!Name: |Bird Flu Diagnosis And Personal Hygiene |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/bison.pdf]]
|!Name: |bison |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/bitter harvest, bitter beer - food facts.pdf]]
|!Name: |Bitter harvest, bitter beer - food facts |
|!Author: |Alexis Vaughan |
|!Date: |1999 |

[>img[./Images/Book.png][./Documents/blacksmith knife tutorial.pdf]]
|!Name: |Blacksmith Knife Tutorial |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/blacksmithing glossary.pdf]]
|!Name: |Blacksmithing Glossary |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0867 - blood donor operations i.pdf]]
|!Name: |MD 0867 - Blood Donor Operations I |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0868 - blood donor operations ii.pdf]]
|!Name: |MD 0868 - Blood Donor Operations II |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0564 - blood, electrolytes & intravenous infusions.pdf]]
|!Name: |MD 0564 - Blood, Electrolytes & Intravenous Infusions |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/planting blueberries in home gardens (sp284-d).pdf]]
|!Name: |Blueberries in Home Gardens |
|!Author: |Wade J. Sperry, The University of Tennessee |
|!Date: |1998 |
[>img[./Images/Book.png][./Documents/ATMRL/boat_building_manual.pdf]]
|!Name: |Boatbuilding Manual |
|!Author: |Robert M. Steward  |
|!Date: | |
[>img[./Images/Book.png][./Documents/fire_-_bow_drill.pdf]]
|!Name: |Bow Drill |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/bread_box_water_heater_plans.pdf]]
|!Name: |Bread Box Water Heater Plans |
|!Author: |Zomeworks |
|!Date: |March 75 |
[>img[./Images/Book.png][./Documents/break in.pdf]]
|!Name: |Break Ins |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/CAT/bright-ideas-buying-energy-efficient-bulbs.pdf]]
|!Name: |Bright Ideas - Energy efficient bulbs |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/allotment_rules_v3_dec_2011.pdf]]
|!Name: |Brighton and Hove Allotment Rules |
|!Author: |Brighton and Hove City Council |
|!Date: |December 2011 |
[>img[./Images/Book.png][./Documents/ATTRA/local-foods-to-local-institutions.pdf]]
|!Name: |local-foods-to-local-institutions |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/british_columbia_energy_plan.pdf]]
|!Name: |British Columbia Energy Plan |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/brittlepower.pdf]]
|!Name: |Brittle Power: Energy Strategy for National Security |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/brown_sugar.pdf]]
|!Name: |Brown Sugar |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/bucketfilter.pdf]]
|!Name: |Bucket Filter |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_bucket_stove.pdf]]
|!Name: |Bucket Stove |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/bugvacuums.pdf]]
|!Name: |bugvacuums |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/bugout.pdf]]
|!Name: |Bugout Bag|
|!Author: |Mike S. Medintz |
|!Date: |1998 |

[>img[./Images/Book.png][./Documents/water_-_build_a_hand_pump.pdf]]
|!Name: |Build a Hand Pump |
|!Author: |Unknown |
|!Date: | |
[>img[./Images/Book.png][./Documents/hydroelectric_generator.pdf]]
|!Name: |Build your own Hydroelectric Generator |
|!Author: |The Pembina Institute |
|!Date: | |
[>img[./Images/Book.png][./Documents/build_your_own_waterless_composting_toilet.pdf]]
|!Name: |Build your own waterless composting toilet |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/solar_oven.pdf]]
|!Name: |Build your own: Solar Oven |
|!Author: |re-energy.ca |
|!Date: | |

[>img[./Images/Book.png][./Documents/construction-handbook-chudley.pdf]]
|!Name: |Building Construction Handbook |
|!Author: |R. Chudley and R. Greeno |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/building_material_reuse_centres_business_plan-presentation.pdf]]
|!Name: |Building Material Reuse Centres Business Plan |
|!Author: |Jonathan Essex, BioRegional. Lewis Herbert, WasteWise |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/sales_guide_production_services.pdf]]
|!Name: |Building Strong, Legally Enforceable Sales Agreements for Production Services |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/sales_guide_availability_invoice.pdf]]
|!Name: |sales_guide_availability_invoice |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/building_sust_farms.pdf]]
|!Name: |building_sust_farms |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/pdf_building_sustainable_homes_378.pdf]]
|!Name: |Building Sustainable Homes |
|!Author: |Jospeh Rowntree Foundation |
|!Date: |Mar 2015 |
[>img[./Images/Book.png][./Documents/bts.pdf]]
|!Name: |Building Towards Sustainability |
|!Author: |World Wide Fund for Nature www.wwf.org.uk/sustainablehomes |
|!Date: | |
[>img[./Images/Book.png][./Documents/building_your_own_home_for_dummies.pdf]]
|!Name: |Building Your Own Home For Dummies |
|!Author: |Kevin Daum, Janice Brewster, and Peter Economy |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/building_a_floating_hydroponic_garden.pdf]]
|!Name: |Building a Floating Hydroponic Garden |
|!Author: |University of Florida |
|!Date: | |
[>img[./Images/Book.png][./Documents/building a gas fired crucible furnace (gingery).pdf]]
|!Name: |Building a Gas Fired Crucible Furnace |
|!Author: |David J Gingery |
|!Date: |1988/2000 |
[>img[./Images/Book.png][./Documents/still.pdf]]
|!Name: |Building a Home Distillation Apparatus |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/yurt_construction_document.pdf]]
|!Name: |Building a Mongolian Yurt |
|!Author: |Sir Ogami Akira |
|!Date: | |
[>img[./Images/Book.png][./Documents/single-bike-gen-instructions.pdf]]
|!Name: |Building a Single Bike Generator |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/metalworking - plans for small horizontal steam engine.pdf]]
|!Name: |Building a Small Horizontal Steam Engine |
|!Author: |Book Extract - Popular Mechanics |
|!Date: | |
[>img[./Images/Book.png][./Documents/business%20guide.pdf]]
|!Name:|A Guide to Developing a Business Plan|
|!Author: |Minnesota Institute for Sustainable Agriculture |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/wildfire_risk_chapter_6.pdf]]
|!Name: |Building construction to reduce wildfire risk |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/buildingplansfor00torm.pdf]]
|!Name: |Building plans for poultrymen |
|!Author: |Poultry Breeders Association, Iowa |
|!Date: |1920 |
[>img[./Images/Book.png][./Documents/building_the_ecowaters_twin-bin_with_net_composting_toilet_system.pdf]]
|!Name: |Building the Ecowaters twin-bin with net composting toilet system |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/building_with_earth-a_handbook.pdf]]
|!Name: |Building with Earth: a handbook |
|!Author: |John Norton |
|!Date: |1986 |
[>img[./Images/Book.png][./Documents/build-compost-bin.pdf]]
|!Name: |Building your Own Composting Bin |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/bulletproof.pdf]]
|!Name: |Bullet Proof your Home |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/bumblebees-behaviour_ecology_and_conservation.pdf]]
|!Name: |Bumblebees - Behaviour, Ecology, and Conservation |
|!Author: |Dave Goulson |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/fire_-_bush_fungus_stove.pdf]]
|!Name: |Bush Fungus Stove |
|!Author: |Unknown |
|!Date: | |
[>img[./Images/Book.png][./Documents/bushcraft-richard-graves.pdf]]
|!Name: |Bushcraft |
|!Author: |Richard Graves |
|!Date: |1972 |
[>img[./Images/Book.png][./Documents/businesplantemplate.pdf]]
|!Name: |Busines Plan Template: Social Enterprises |
|!Author: | |
|!Date: | |

[>img[./Images/Book.png][./Documents/businessmodelgeneration_preview.pdf]]
|!Name: |Business Model Generation |
|!Author: |Alexander Osterwalder and Yves Pigneur |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/business_model_canvas_poster.pdf]]
|!Name: |Business Model Poster |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/business_plan.pdf]]
|!Name: |Business Plan – Guidance Notes |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/guide_to_doing_a_business_plan.pdf]]
|!Name: |Business Planning - A Guide |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/42_business_planning.pdf]]
|!Name: |Business planning |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/butter_and_ghee_1_.pdf]]
|!Name: |Butter and Ghee |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/buying_directly_from_a_farmer_fact_sheet.pdf]]
|!Name: |Buying Directly From a Farmer: Fact Sheet |
|!Author: |Land Stewardship Project http://www.landstewardshipproject.org |
|!Date: |Apr 2003 |
The Centre for Alternative Technology
http://www.cat.org.uk

[>img[./Images/Book.png][./Documents/caching techniques (u.s. army).pdf]]
|!Name: |Caching Techniques |
|!Author: |[[US Army]] Special Forces |
|!Date: | |
[>img[./Images/Book.png][./Documents/Public/californiamexica00haffiala.pdf]]
|!Name: |California Mexican/Spanish Cook Book |
|!Author: |Bertha Haffner Ginger |
|!Date: |1914 |
[>img[./Images/Book.png][./Documents/camp life in the woods and the tricks of.pdf]]
|!Name: |Camp Life in the Woods and the Tricks of Trapping and Trap Making |
|!Author: |W. Hamilton Gibson |
|!Date: | |
[>img[./Images/Book.png][./Documents/can_britain_feed_itself.pdf]]
|!Name: |Can Britain Feed Itself? Should Britain Feed Itself? |
|!Author: |Colin Tudge, Landshare |
|!Date: |Jan 2009 |
[>img[./Images/Book.png][./Documents/canbritainfeeditself.pdf]]
|!Name: |Can Britain feed itself? |
|!Author: |Simon Fairlie |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/can_you_dig_it-meeting_commuity_demand_for_allotments.pdf]]
|!Name: |Can You Dig it? Meeting community demand for allotments |
|!Author: |Nick Hope and Victoria Ellis |
|!Date: |Sep 2009 |
[>img[./Images/Book.png][./Documents/can_organic_agriculture_feed_the_world.pdf]]
|!Name: |Can organic agriculture feed the world? |
|!Author: |Catherine Badgley and Ivette Perfecto, Cambridge University Press |
|!Date: |2007 |
/%
Image:can-do-canning.png
Thumbnail:can-do-canning_thumbnail.jpg
%/
[img[./Images/can-do-canning_small.jpg][./Images/can-do-canning.png]]
[>img[./Images/Book.png][./Documents/61010.pdf]]
|!Name: |Canadian Woodframe House Construction |
|!Author: |Canada Mortgage and Housing Corporation |
|!Date: |2014 |
[>img[./Images/Book.png][./Documents/general_-_candle_making.pdf]]
|!Name: |Candle Making |
|!Author: |Margaret Bass, Homecrafts Direct |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/candlemaking.pdf]]
|!Name: |Candlemaking |
|!Author: |Practical Action  |
|!Date: | |

[>img[./Images/Book.png][./Documents/canning_and_preserving_2_.pdf]]
|!Name: |Canning and preserving |
|!Author: |Mrs S T Rorer |
|!Date: |1911 |
[>img[./Images/Book.png][./Documents/PracticalAction/canning_of_foods.pdf]]
|!Name: |Canning of foods |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/Public/canning_preserving_and_jelly_making.pdf]]
|!Name: |Canning, Preserving and Jelly Making |
|!Author: |Janet M Hill |
|!Date: |1915 |
[>img[./Images/Book.png][./Documents/canning__preserving_and_pickling.pdf]]
|!Name: |Canning, preserving and pickling |
|!Author: |Marion Harris Neil |
|!Date: |1915 |
[>img[./Images/Book.png][./Documents/captain dave's survival guide.pdf]]
|!Name: |Captain Dave's Survival Guide |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/carbon_sequestration_potential_of_agroforestry_systems-opportunities_and_challenges.pdf]]
|!Name: |Carbon Sequestration Potential of Agroforestry Systems |
|!Author: |B. Mohan Kumar, P.K. Ramachandran Nair |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/carbon steel quenching secrets.pdf]]
|!Name: |Carbon Steel Quenching Secrets |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0571 - cardiac impairment.pdf]]
|!Name: |MD 0571 - Cardiac Impairment |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0532 - cardiopulmonary resuscitation.pdf]]
|!Name: |MD 0532 - Cardiopulmonary Resuscitation |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/carrot fashion - food facts.pdf]]
|!Name: |Carrot fashion - food facts |
|!Author: |Rosemary Hoskins - Sustainable Agriculture, Food and Environment (SAFE) |
|!Date: |1999 |
[>img[./Images/Book.png][./Documents/PracticalAction/cashew_fruit.pdf]]
|!Name: |Cashew Fruit |
|!Author: |[[Practical Action]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/cashew_nut_processing.pdf]]
|!Name: |Cashew nut processing |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/cassava_processing.pdf]]
|!Name: |Cassava processing |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/cast iron pipe handbook.pdf]]
|!Name: |Cast Iron Soil Pipe and Fittings Handbook |
|!Author: |The Cast Iron Soil Pipe Institute |
|!Date: |1967 |
[>img[./Images/Book.png][./Documents/casting - foundrywork for the amateur casting metal work 50.pdf]]
|!Name: |Casting - Foundrywork For The Amateur |
|!Author: |B. Terry Aspin |
|!Date: |1984 |
[>img[./Images/Book.png][./Documents/casting - metal casting made easy - 3 volumes.pdf]]
|!Name: |Casting - Metal Casting Made Easy |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/casting metals - handbook.pdf]]
|!Name: |Casting Metals |
|!Author: |Internet Article |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/charcoal foundry.pdf]]
|!Name: |Charcoal Foundry |
|!Author: |David J Gingery |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/checklist_for_encouraging_people.pdf]]
|!Name: |Checklist for encouraging people |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/cheese_making.pdf]]
|!Name: |Cheese Making |
|!Author: |[[Practical Action]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/cherry_diseases_diagnostic_key.pdf]]
|!Name: |cherry_diseases_diagnostic_key |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/cherry_insect_diagnostic_key.pdf]]
|!Name: |cherry_insect_diagnostic_key |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0569 - chest & airway problems.pdf]]
|!Name: |MD 0569 - Chest & Airway Problems |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/chest_fridge_1.pdf]]
|!Name: |Chest Fridge |
|!Author: |Dr Tom Chalko |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/lohmann-brown.pdf]]
|!Name: |Chicken Management Guide |
|!Author: |Lohmann Brown |
|!Date: |May 2007 |

[>img[./Images/Book.png][./Documents/PracticalAction/chimney_stoves_and_smokehoods.pdf]]
|!Name: |Chimney stoves and smokehoods |
|!Author: |Practical Action |
|!Date: | |

[>img[./Images/Book.png][./Documents/PracticalAction/chinese_rice_grinders.pdf]]
|!Name: |Chinese Rice Grinders |
|!Author: |[[Practical Action]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/chiuri.pdf]]
|!Name: |Chiuri |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/medical_-_cholera.pdf]]
|!Name: |Cholera |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/shortwave1.pdf]]
|!Name: |Choosing a Shortwave Radio |
|!Author: |Internet Article	 |
|!Date: | |
[>img[./Images/Book.png][./Documents/choosing and keeping chickens complete.pdf]]
|!Name: |Choosing and keeping chickens |
|!Author: |Chris Graham |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/ATTRA/localfoods2.pdf]]
|!Name: |localfoods2 |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/cinnamon.pdf]]
|!Name: |Cinnamon |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/citizen's homeland defense guide i - the art.pdf]]
|!Name: |Citizen's Homeland Defense Guide I - The Art of Survival |
|!Author: |Citizen's Defense Guide |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/city_harvest-growing_more_food_in_london.pdf]]
|!Name: |City Harvest - The feasibility of growing more food in London |
|!Author: |Tara Garnett |
|!Date: |Jun 1999 |
[>img[./Images/Book.png][./Documents/ATTRA/climate_change_fruit_nut_production.pdf]]
|!Name: |climate_change_fruit_nut_production |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0861 - clinical chemistry i.pdf]]
|!Name: |MD 0861 - Clinical Chemistry I |
|!Author: |US Army Medical Department |
|!Date: | |
/***
|Name:|CloseOnCancelPlugin|
|Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
|Version:|3.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.commands.cancelTiddler,{

  handler_mptw_orig_closeUnsaved: config.commands.cancelTiddler.handler,

  handler: function(event,src,title) {
    this.handler_mptw_orig_closeUnsaved(event,src,title);
    if (!story.isDirty(title) && !store.tiddlerExists(title) && !store.isShadowTiddler(title))
      story.closeTiddler(title,true);
    return false;
  }

});

//}}}
[>img[./Images/Book.png][./Documents/PracticalAction/cloves.pdf]]
|!Name: |Cloves |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/cohousing.pdf]]
|!Name: |Co-housing Network |
|!Author: |UK Cohousing Network |
|!Date: | |
[>img[./Images/Book.png][./Documents/fire_-_coal_extenders.pdf]]
|!Name: |Coal Extenders |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/coccidiosis_sheep_goats_calves.pdf]]
|!Name: |coccidiosis_sheep_goats_calves |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/cocoa_and_chocolate.pdf]]
|!Name: |Cocoa and chocolate |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/code_for_sust_homes.pdf]]
|!Name: |Code for Sustainable Homes |
|!Author: |Communities and Local Government Publications |
|!Date: |Dec 2006 |
[>img[./Images/Book.png][./Documents/broiler_hens_code_of_recommendations.pdf]]
|!Name: |Code of Recommendations for the Welfare of Livestock: Broiler Hens |
|!Author: |[[DEFRA]] |
|!Date: |Jul 2002 |
[>img[./Images/Book.png][./Documents/farmers-5415.pdf]]
|!Name: |Code of Recommendations for the Welfare of Livestock: Cattle |
|!Author: |[[DEFRA]] |
|!Date: |Mar 2003 |
[>img[./Images/Book.png][./Documents/pb7950-pig-code-030228.pdf]]
|!Name: |Code of Recommendations for the Welfare of Livestock: Pigs |
|!Author: |[[DEFRA]] |
|!Date: |Mar 2003 |
[>img[./Images/Book.png][./Documents/farmers-5416.pdf]]
|!Name: |Code of Recommendations for the Welfare of Livestock: Sheep |
|!Author: |[[DEFRA]] |
|!Date: |Aug 2000 |
[>img[./Images/Book.png][./Documents/PracticalAction/cold_storage_fruits_vegetables.pdf]]
|!Name: |Cold storage of fruits and vegetables |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/cole.pdf]]
|!Name: |cole |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/colony_collapse_disorder.pdf]]
|!Name: |Colony Collapse Disorder |
|!Author: |Gunther Hauk |
|!Date: |May 2007 |
Name: MptwBlue
Background: #fff
Foreground: #000
PrimaryPale: #cdf
PrimaryLight: #57c
PrimaryMid: #114
PrimaryDark: #012
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

[>img[./Images/Book.png][./Documents/ATTRA/copotbeetl.pdf]]
|!Name: |copotbeetl |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/combat survival and evasion.pdf]]
|!Name: |Combat Survival and Evasion |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/common_forum_project_plan_v0-06-04.pdf]]
|!Name: |Common Forum Project Plan |
|!Author: |Jason Diceman |
|!Date: |Jul 2002 |
[>img[./Images/Book.png][./Documents/USAMD/md 0535 - communicable diseases & field sanitation.pdf]]
|!Name: |MD 0535 - Communicable Diseases & Field Sanitation |
|!Author: |US Army Medical Department |
|!Date: | |


[>img[./Images/Book.png][./Documents/community_energy-planning_development_delivery.pdf]]
|!Name: |Community Energy - Planning, development and delivery |
|!Author: |Michael King & Rob Shaw |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/uk_community_food_projects_directory.pdf]]
|!Name: |Community Food Projects: a directory |
|!Author: |Catharine Courtauld, Sustain |
|!Date: |Jan 2003 |
[>img[./Images/Book.png][./Documents/community_food_security_assessment_toolkit.pdf]]
|!Name: |Community Food Security Assessment Toolkit |
|!Author: |Barbara Cohen, IQ Solutions, Inc. |
|!Date: |Jul 2002 |
[>img[./Images/Book.png][./Documents/ATTRA/communitygarden.pdf]]
|!Name: |communitygarden |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/community_orchards.pdf]]
|!Name: |community_orchards |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/csa.pdf]]
|!Name: |csa |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/community_supported_agriculture_action_manual.pdf]]
|!Name: |Community Supported Agriculture Action Manual |
|!Author: |Cultivating Communities |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/water_supply_and_sanitation_in_nepal.pdf]]
|!Name: |Community Water Supply and Sanitation in Nepal: Sanitation Handbook |
|!Author: |Martin Strauss |
|!Date: |Jun 1982 |
[>img[./Images/Book.png][./Documents/ATMRL/community_water_supply_and_the_hand_pump.pdf]]
|!Name: |Community Water Supply: The Handpump Option |
|!Author: |Saul Arlosoroff, Gerhard Tschannerl, David Grey, William Journey, Andrew Karp, Otto Langenegger, and Robert Roche  |
|!Date: |1987 |
[>img[./Images/Book.png][./Documents/community_investment_in_csa.pdf]]
|!Name: |Community investment in CSA |
|!Author: |Jim Brown |
|!Date: | |
[>img[./Images/Book.png][./Documents/community-led_hydro_initiatives.pdf]]
|!Name: |Community led Hydro Initiatives |
|!Author: |Local United |
|!Date: | |
[>img[./Images/Book.png][./Documents/community-led_food_initiatives.pdf]]
|!Name: |community-led_food_initiatives |
|!Author: |Local United |
|!Date: | |
[>img[./Images/Book.png][./Documents/community-led_reuse_of_resources.pdf]]
|!Name: |Community-led reuse of resources |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/community-led_transport_initiatives.pdf]]
|!Name: |Community-led transport initiatives |
|!Author: |The Big Lemon |
|!Date: | |
[>img[./Images/Book.png][./Documents/community-led_wind_power.pdf]]
|!Name: |Community-led wind power |
|!Author: |Local United |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/poster_gdn_com_plant.pdf]]
|!Name: |Companion Planting Chart |
|!Author: |IDEP Foundation |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/companion.pdf]]
|!Name: |companion |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/croppingsystems.pdf]]
|!Name: |croppingsystems |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/complete_solar_kit_manual_r2.pdf]]
|!Name: |Complete Off Grid Solar Kit Manual R2 |
|!Author: |Windy Nation |
|!Date: |Mar 2014 |
 
[>img[./Images/Book.png][./Documents/organic_compost.pdf]]
|!Name: |Compost - the organic farmer's gold! |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/24-573.pdf]]
|!Name: |Compost Fertilizer and Biogas Production from Human and Farm Wastes in The Peoples Republic of China |
|!Author: |Michael G. ~McGarry and Jill Stainforth |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/compost_pests.pdf]]
|!Name: |Compost Pests |
|!Author: |East Sussex County Council |
|!Date: | |

[>img[./Images/Book.png][./Documents/PracticalAction/compost_toilets.pdf]]
|!Name: |Compost Toilets |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/compost_toilets_information_sheet.pdf]]
|!Name: |Compost Toilets information sheet |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/composting-a_teachers_guide_to_making_your_own_compost_box_and_compost.pdf]]
|!Name: |Composting - A guide to making your own compost box and compost |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/composting.pdf]]
|!Name: |Composting - Easy Methods for Every Gardener  |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/CAT/composting-secrets.pdf]]
|!Name: |Composting Secrets |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/composting_and_peat-free_gardening.pdf]]
|!Name: |Composting and peat-free gardening |
|!Author: |English Nature |
|!Date: | |
[>img[./Images/Book.png][./Documents/composting_at_home.pdf]]
|!Name: |Composting at home |
|!Author: |Robert Rynk and Michael Col  |
|!Date: | |
[>img[./Images/Book.png][./Documents/compost_bins_you_can_build.pdf]]
|!Name: |Composting bins you can build |
|!Author: |City of Edmonton |
|!Date: | |
[>img[./Images/Book.png][./Documents/concentrated-solar-thermal-power.pdf]]
|!Name: |Concentrated Solar Thermal Power |
|!Author: |Rainer Aringhoff, Georg Brakmann (ESTIA), Dr. Michael Geyer (IEA ~SolarPACES), Sven Teske (Greenpeace) |
|!Date: |September 2005 |
[>img[./Images/Book.png][./Documents/solar_power.pdf]]
|!Name: |Concentrating Solar Power - Mirrors |
|!Author: |Department of Energy |
|!Date: |Mar 2001 |
[>img[./Images/Book.png][./Documents/condensation-and-mould.pdf]]
|!Name: |Condensation and Mould |
|!Author: |~Stratford-on-Avon District Council |
|!Date: |January 2013 |
PageTemplate
|>|>|SiteTitle - SiteSubtitle|
|MainMenu|DefaultTiddlers<br><br><br><br>ViewTemplate<br><br>EditTemplate|SideBarOptions|
|~|~|OptionsPanel|
|~|~|AdvancedOptions|
|~|~|<<tiddler Configuration.SideBarTabs>>|

''StyleSheet:'' StyleSheetColors - StyleSheetLayout - StyleSheetPrint

InterfaceOptions

SiteUrl

Extensive StartupParameters to control the startup beahviour of ~TiddlyWiki through specially crafted ~URLs
[>img[./Images/Book.png][./Documents/ATTRA/consbuffers.pdf]]
|!Name: |consbuffers |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/coneasements.pdf]]
|!Name: |coneasements |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/consfuelfarm.pdf]]
|!Name: |consfuelfarm |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/wind_power_for_bore_hole_pumping.pdf]]
|!Name: |Considerations for the use of Wind Power for Borehole Pumping  |
|!Author: |Everett Ressler  |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/constructing_a_solar_heated_lumber_dryer.pdf]]
|!Name: |Constructing and Operating a Solar Heated Lumber Dryer |
|!Author: |Paul J. Bois  |
|!Date: |Jan 1977 |
[>img[./Images/Book.png][./Documents/constructing_compost_toilets.pdf]]
|!Name: |Constructing compost toilets |
|!Author: |Water for the World |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/water_tank_construction_manual.pdf]]
|!Name: |Construction Manual for a 3500gal. Ferrocement Water Tank |
|!Author: |E. H. Robinson  |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/construction_of_a_cretan_windmill.pdf]]
|!Name: |Construction Manual for a Cretan Windmill |
|!Author: |N. van de Ven |
|!Date: |Oct 1977 |
[>img[./Images/Book.png][./Documents/ATMRL/construction_manual_for_12pu350_and_12pu500_windmills.pdf]]
|!Name: |Construction manual for 12pu350 and 12pu500 windmills |
|!Author: |Niek Van de Ven  |
|!Date: |1982 |
[>img[./Images/Book.png][./Documents/100w_wind_turbine_manual.pdf]]
|!Name: |Construction manual for a 100 Watt wind turbine |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/FEMA/fema.woodgas.pdf]]
|!Name: |Construction of a Simplified Wood Gas Generator |
|!Author: |Federal Emergency Management Agency |
|!Date: |Jul 1989 |
[>img[./Images/Book.png][./Documents/41_business_plan.pdf]]
|!Name: |Contents of a business plan: What makes a good business plan |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/continuous_productive_urban_landscapes.pdf]]
|!Name: |Continuous Productive Urban Landscapes |
|!Author: |André Viljoen, Katrin Bohn, Joe Howe |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/control_vegetable_pests_organically.pdf]]
|!Name: |Controlling Vegetable Pests Organically |
|!Author: |Creative Homeowner |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/grassland.pdf]]
|!Name: |grassland |
|!Author: |[[ATTRA]] |
|!Date: | |



[>img[./Images/Book.png][./Documents/cooking_and_feasting_on_the_plot.pdf]]
|!Name: |Cooking and Feasting on the plot |
|!Author: |City Farms and Community Gardens |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/cook_stove_by_the_teraceta_method.pdf]]
|!Name: |Cookstove Construction by the ~Terra-CETA Method  |
|!Author: |Roberto Lou Ma |
|!Date: |Nov 1982 |
[>img[./Images/Book.png][./Documents/CAT/cool-it-eco-fridges.pdf]]
|!Name: |Cool it! Eco Fridges |
|!Author: |[[CAT]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/coriander.pdf]]
|!Name: |Coriander |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/costbenefitanalysisofaquaponicsystems.pdf]]
|!Name: |Cost Benefit Analysis of Aquaponic Systems |
|!Author: |Richard Chiang |
|!Date: |Nov 2009 |
/%
Image:cost-effectiveness.jpg
Thumbnail:cost-effectiveness_thumbnail.jpg
%/
[img[./Images/cost-effectiveness_small.jpg][./Images/cost-effectiveness.jpg]]
[>img[./Images/Book.png][./Documents/ATMRL/small_hydropower_cost_reductions.pdf]]
|!Name: |Cost Reduction Considerations in Small Hydropower Development  |
|!Author: |D. Minott and R. Delisser |
|!Date: |Aug 1983 |

[>img[./Images/Book.png][./Documents/forestgardenhandout.pdf]]
|!Name: |Course Handout for Introduction to Forest Gardening |
|!Author: |Jess Clynewood and Rich Wright |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/covercropsolutionsweb2013.pdf]]
|!Name: |Cover Crops Solutions Chart |
|!Author: |Grow Organic http://www.groworganic.com |
|!Date: |2013 |
[>img[./Images/Book.png][./Documents/ATTRA/cover_crops_in_organic_systems.pdf]]
|!Name: |cover_crops_in_organic_systems |
|!Author: |[[ATTRA]] |
|!Date: | |


[>img[./Images/Book.png][./Documents/CAT/crazy_idealists.pdf]]
|!Name: |Crazy Idealists |
|!Author: |The Centre for Alternative Technology [[CAT]] |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/CAT/create-a-herb-spiral.pdf]]
|!Name: |Create a Herb Spiral |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/4_coursebookweek1_0.pdf]]
|!Name: |Creating A Forest Garden |
|!Author: |Edible Landscapes London Ltd |
|!Date: |Jul 2015 |
[>img[./Images/Book.png][./Documents/crude_designs-the_rip_off_of_iraqs_oil_wealth.pdf]]
|!Name: |Crude Designs - The rip off of Iraq's oil wealth |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/cucumberbeetle.pdf]]
|!Name: |cucumberbeetle |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/cultivating_cooperatives.pdf]]
|!Name: |Cultivating Co-operatives |
|!Author: |Soil Association |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/cultivatinghavana-urbanagricultureandfoodsecurity.pdf]]
|!Name: |Cultivating Havana: Urban Agriculture and Food Security |
|!Author: |Catherine Murphy |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_cultivating_vegetables.pdf]]
|!Name: |Cultivating Vegetables |
|!Author: |Department of Agriculture, South Africa |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc10.pdf]]
|!Name: |Cultivation of soya and other legumes |
|!Author: |Rienke Nieuwenhuis, Joke Nieuwelink. Agromisa Foundation |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc17.pdf]]
|!Name: |Cultivation of tomato |
|!Author: |Shankara Naika, Joep van Lidt de Jeude, Marja de Goffau, Martin Hilmi, Barbara van Dam. Agromisa Foundation |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/PracticalAction/cumin.pdf]]
|!Name: |Cumin |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
!Department for Environment, Food & Rural Affairs

Are the UK government department responsible for safeguarding our natural environment, supporting our world-leading food and farming industry, and sustaining a thriving rural economy. Our broad remit means we play a major role in people's day-to-day life, from the food we eat, and the air we breathe, to the water we drink.

https://www.gov.uk/government/organisations/department-for-environment-food-rural-affairs

[>img[./Images/Book.png][./Documents/diy-1000-watt-wind-turbine.pdf]]
|!Name: |DIY 1000 Watt Wind Turbine |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/diy_business_plans-social_business_plan_template.pdf]]
|!Name: |DIY Business Plans - Social Business Plan Template |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/CAT/diy-geodesic-domes.pdf]]
|!Name: |DIY Geodesic domes |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/diypermablitzkit.pdf]]
|!Name: |diypermablitzkit |
|!Author: |Friends of the Earth Sydney |
|!Date: | |
[>img[./Images/Book.png][./Documents/diy solar install.pdf]]
|!Name: |DIY Solar Install |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0715 - dairy.pdf]]
|!Name: |MD 0715 - Dairy |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/dairybeef.pdf]]
|!Name: |dairybeef |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/dairyenergy.pdf]]
|!Name: |dairyenergy |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/dairychecksheet.pdf]]
|!Name: |dairychecksheet |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/dairygoats.pdf]]
|!Name: |dairygoats |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/grassbaseddairy.pdf]]
|!Name: |grassbaseddairy |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/dairy_resources.pdf]]
|!Name: |dairy_resources |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/dairysheep.pdf]]
|!Name: |dairysheep |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc14.pdf]]
|!Name: |Dairy cattle husbandry |
|!Author: |Puck Bonnier, Arno Maas, Jolianne Rijks. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/PracticalAction/dairy_processing.pdf]]
|!Name: |Dairy processing |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
/***
|''Name:''|DataTiddlerPlugin|
|''Version:''|1.0.7 (2012-04-19)|
|''Summary:''|Enhance your tiddlers with structured data (such as strings, booleans, numbers, or even arrays and compound objects) that can be easily accessed and modified through named fields (in JavaScript code).|
|''Source:''|http://tiddlywiki.abego-software.de/#DataTiddlerPlugin|
|''Twitter:''|[[@abego|https://twitter.com/#!/abego]]|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''License:''|[[BSD open source license|http://www.abego-software.de/legal/apl-v10.html]]|
!Description
Enhance your tiddlers with structured data (such as strings, booleans, numbers, or even arrays and compound objects) that can be easily accessed and modified through named fields (in JavaScript code).

Such tiddler data can be used in various applications. E.g. you may create tables that collect data from various tiddlers.

''//Example: "Table with all December Expenses"//''
{{{
<<forEachTiddler
    where
        'tiddler.tags.contains("expense") && tiddler.data("month") == "Dec"'
    write
        '"|[["+tiddler.title+"]]|"+tiddler.data("descr")+"| "+tiddler.data("amount")+"|\n"'
>>
}}}
//(This assumes that expenses are stored in tiddlers tagged with "expense".)//
<<forEachTiddler
    where
        'tiddler.tags.contains("expense") && tiddler.data("month") == "Dec"'
    write
        '"|[["+tiddler.title+"]]|"+tiddler.data("descr")+"| "+tiddler.data("amount")+"|\n"'
>>
For other examples see DataTiddlerExamples.




''Access and Modify Tiddler Data''

You can "attach" data to every tiddler by assigning a JavaScript value (such as a string, boolean, number, or even arrays and compound objects) to named fields.

These values can be accessed and modified through the following Tiddler methods:
|!Method|!Example|!Description|
|{{{data(field)}}}|{{{t.data("age")}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined {{{undefined}}} is returned.|
|{{{data(field,defaultValue)}}}|{{{t.data("isVIP",false)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined the defaultValue is returned.|
|{{{data()}}}|{{{t.data()}}}|Returns the data object of the tiddler, with a property for every field. The properties of the returned data object may only be read and not be modified. To modify the data use DataTiddler.setData(...) or the corresponding Tiddler method.|
|{{{setData(field,value)}}}|{{{t.setData("age",42)}}}|Sets the value of the given data field of the tiddler to the value. When the value is {{{undefined}}} the field is removed.|
|{{{setData(field,value,defaultValue)}}}|{{{t.setData("isVIP",flag,false)}}}|Sets the value of the given data field of the tiddler to the value. When the value is equal to the defaultValue no value is set (and the field is removed).|

Alternatively you may use the following functions to access and modify the data. In this case the tiddler argument is either a tiddler or the name of a tiddler.
|!Method|!Description|
|{{{DataTiddler.getData(tiddler,field)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined {{{undefined}}} is returned.|
|{{{DataTiddler.getData(tiddler,field,defaultValue)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined the defaultValue is returned.|
|{{{DataTiddler.getDataObject(tiddler)}}}|Returns the data object of the tiddler, with a property for every field. The properties of the returned data object may only be read and not be modified. To modify the data use DataTiddler.setData(...) or the corresponding Tiddler method.|
|{{{DataTiddler.setData(tiddler,field,value)}}}|Sets the value of the given data field of the tiddler to the value. When the value is {{{undefined}}} the field is removed.|
|{{{DataTiddler.setData(tiddler,field,value,defaultValue)}}}|Sets the value of the given data field of the tiddler to the value. When the value is equal to the defaultValue no value is set (and the field is removed).|
//(For details on the various functions see the detailed comments in the source code.)//


''Data Representation in a Tiddler''

The data of a tiddler is stored as plain text in the tiddler's content/text, inside a "data" section that is framed by a {{{<data>...</data>}}} block. Inside the data section the information is stored in the [[JSON format|http://www.crockford.com/JSON/index.html]].

//''Data Section Example:''//
{{{
<data>{"isVIP":true,"user":"John Brown","age":34}</data>
}}}

The data section is not displayed when viewing the tiddler (see also "The showData Macro").

Beside the data section a tiddler may have all kind of other content.

Typically you will not access the data section text directly but use the methods given above. Nevertheless you may retrieve the text of the data section's content through the {{{DataTiddler.getDataText(tiddler)}}} function.


''Saving Changes''

The "setData" methods respect the "ForceMinorUpdate" and "AutoSave" configuration values. I.e. when "ForceMinorUpdate" is true changing a value using setData will not affect the "modifier" and "modified" attributes. With "AutoSave" set to true every setData will directly save the changes after a setData.


''Notifications''

No notifications are sent when a tiddler's data value is changed through the "setData" methods.

''Escape Data Section''
In case that you want to use the text {{{<data>}}} or {{{</data>}}} in a tiddler text you must prefix the text with a tilde ('~'). Otherwise it may be wrongly considered as the data section. The tiddler text {{{~<data>}}} is displayed as {{{<data>}}}.


''The showData Macro''

By default the data of a tiddler (that is stored in the {{{<data>...</data>}}} section of the tiddler) is not displayed. If you want to display this data you may used the {{{<<showData ...>>}}} macro:

''Syntax:''
|>|{{{<<}}}''showData '' [''JSON''] [//tiddlerName//] {{{>>}}}|
|''JSON''|By default the data is rendered as a table with a "Name" and "Value" column. When defining ''JSON'' the data is rendered in JSON format|
|//tiddlerName//|Defines the tiddler holding the data to be displayed. When no tiddler is given the tiddler containing the showData macro is used. When the tiddler name contains spaces you must quote the name (or use the {{{[[...]]}}} syntax.)|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
!Source Code
***/
/***
This plugin's source code is compressed (and hidden).
Use this [[link|http://tiddlywiki.abego-software.de/archive/DataTiddlerPlugin/1.0.7/DataTiddlerPlugin-1.0.7-src.js]] to get the readable source code.
***/
///%
if(!version.extensions.DataTiddlerPlugin){version.extensions.DataTiddlerPlugin={major:1,minor:0,revision:7,date:new Date(2012,3,19),type:"plugin",source:"http://tiddlywiki.abego-software.de/#DataTiddlerPlugin"};if(!window.story){window.story=window}if(!TiddlyWiki.prototype.getTiddler){TiddlyWiki.prototype.getTiddler=function(b){var a=this.tiddlers[b];return(a!==undefined&&a instanceof Tiddler)?a:null}}function DataTiddler(){}DataTiddler={stringify:null,parse:null};window.DataTiddler=DataTiddler;DataTiddler.getData=function(c,d,a){var b=(typeof c=="string")?store.getTiddler(c):c;if(!(b instanceof Tiddler)){throw"Tiddler expected. Got "+c}return DataTiddler.getTiddlerDataValue(b,d,a)};DataTiddler.setData=function(c,e,d,a){var b=(typeof c=="string")?store.getTiddler(c):c;if(!(b instanceof Tiddler)){throw"Tiddler expected. Got "+c+"("+b+")"}DataTiddler.setTiddlerDataValue(b,e,d,a)};DataTiddler.getDataObject=function(b){var a=(typeof b=="string")?store.getTiddler(b):b;if(!(a instanceof Tiddler)){throw"Tiddler expected. Got "+b}return DataTiddler.getTiddlerDataObject(a)};DataTiddler.getDataText=function(b){var a=(typeof b=="string")?store.getTiddler(b):b;if(!(a instanceof Tiddler)){throw"Tiddler expected. Got "+b}return DataTiddler.readDataSectionText(a)};DataTiddler.extendJSONError=function(a){if(a.name=="JSONError"){a.toString=function(){return a.name+": "+a.message+" ("+a.text+")"}}return a};DataTiddler.getTiddlerDataObject=function(a){if(a.dataObject===undefined){var b=DataTiddler.readData(a);a.dataObject=(b)?b:{}}return a.dataObject};DataTiddler.getTiddlerDataValue=function(b,d,a){var c=DataTiddler.getTiddlerDataObject(b)[d];return(c===undefined)?a:c};DataTiddler.setTiddlerDataValue=function(c,f,e,a){var d=DataTiddler.getTiddlerDataObject(c);var b=d[f];if(e==a){if(b!==undefined){delete d[f];DataTiddler.save(c)}return}d[f]=e;DataTiddler.save(c)};DataTiddler.readDataSectionText=function(a){var b=DataTiddler.getDataTiddlerMatches(a);if(b===null||!b[2]){return null}return b[2]};DataTiddler.readData=function(b){var c=DataTiddler.readDataSectionText(b);try{return c?DataTiddler.parse(c):null}catch(a){throw DataTiddler.extendJSONError(a)}};DataTiddler.getDataTextOfTiddler=function(a){var b=DataTiddler.getTiddlerDataObject(a);return DataTiddler.stringify(b)};DataTiddler.indexOfNonEscapedText=function(c,a,d){var b=c.indexOf(a,d);while((b>0)&&(c[b-1]=="~")){b=c.indexOf(a,b+1)}return b};DataTiddler.getDataSectionInfo=function(e){var a="<data>{";var f="}</data>";var d=DataTiddler.indexOfNonEscapedText(e,a,0);if(d<0){return null}var c=e.indexOf(f,d);if(c<0){return null}var b;while((b=e.indexOf(f,c+1))>=0){c=b}return{prefixEnd:d,dataStart:d+(a.length)-1,dataEnd:c,suffixStart:c+(f.length)}};DataTiddler.getDataTiddlerMatches=function(a){var f=a.text;var e=DataTiddler.getDataSectionInfo(f);if(!e){return null}var c=f.substr(0,e.prefixEnd);var b=f.substr(e.dataStart,e.dataEnd-e.dataStart+1);var d=f.substr(e.suffixStart);return[f,c,b,d]};DataTiddler.save=function(a){var e=DataTiddler.getDataTiddlerMatches(a);var d;var f;if(e===null){d=a.text;f=""}else{d=e[1];f=e[3]}var b=DataTiddler.getDataTextOfTiddler(a);var c=(b!==null)?d+"<data>"+b+"</data>"+f:d+f;if(c!=a.text){a.isDataTiddlerChange=true;a.set(a.title,c,config.options.txtUserName,config.options.chkForceMinorUpdate?undefined:new Date(),a.tags);delete a.isDataTiddlerChange;store.dirty=true;if(config.options.chkAutoSave){saveChanges()}}};DataTiddler.MyTiddlerChangedFunction=function(){if(this.dataObject&&!this.isDataTiddlerChange){delete this.dataObject}DataTiddler.originalTiddlerChangedFunction.apply(this,arguments)};config.formatters.push({name:"data-escape",match:"~<\\/?data>",handler:function(a){a.outputText(a.output,a.matchStart+1,a.nextMatch)}});config.formatters.push({name:"data",match:"<data>",handler:function(a){var b=DataTiddler.getDataSectionInfo(a.source);if(b&&b.prefixEnd==a.matchStart){a.nextMatch=b.suffixStart}else{a.outputText(a.output,a.matchStart,a.nextMatch)}}});DataTiddler.originalTiddlerChangedFunction=Tiddler.prototype.changed;Tiddler.prototype.changed=DataTiddler.MyTiddlerChangedFunction;Tiddler.prototype.data=function(b,a){return(b)?DataTiddler.getTiddlerDataValue(this,b,a):DataTiddler.getTiddlerDataObject(this)};Tiddler.prototype.setData=function(c,b,a){DataTiddler.setTiddlerDataValue(this,c,b,a)};config.macros.showData={label:"showData",prompt:"Display the values stored in the data section of the tiddler"};config.macros.showData.handler=function(a,g,h){var c=0;var d=false;if((c<h.length)&&h[c]=="JSON"){c++;d=true}var b=story.findContainingTiddler(a).getAttribute("tiddler");if(c<h.length){b=h[c];c++}try{if(d){this.renderDataInJSONFormat(a,b)}else{this.renderDataAsTable(a,b)}}catch(f){this.createErrorElement(a,f)}};config.macros.showData.renderDataInJSONFormat=function(a,b){var c=DataTiddler.getDataText(b);if(c){createTiddlyElement(a,"pre",null,null,c)}};config.macros.showData.renderDataAsTable=function(a,b){var f="|!Name|!Value|\n";var e=DataTiddler.getDataObject(b);if(e){for(var c in e){var d=e[c];f+="|"+c+"|"+DataTiddler.stringify(d)+"|\n"}}wikify(f,a)};config.macros.showData.createErrorElement=function(a,b){var c=(b.description)?b.description:b.toString();return createTiddlyElement(a,"span",null,"showDataError","<<showData ...>>: "+c)};setStylesheet(".showDataError{color: #ffffff;background-color: #880000;}","showData")}var JSON={copyright:"(c)2005 JSON.org",license:"http://www.crockford.com/JSON/license.html",stringify:function(c){var b=[];function f(a){b[b.length]=a}function d(a){var j,h=undefined,e,g;switch(typeof a){case"object":if(a){if(a instanceof Array){f("[");e=b.length;for(h=0;h<a.length;h+=1){g=a[h];if(typeof g!="undefined"&&typeof g!="function"){if(e<b.length){f(",")}d(g)}}f("]");return}else{if(typeof a.toString!="undefined"){f("{");e=b.length;for(h in a){g=a[h];if(a.hasOwnProperty(h)&&typeof g!="undefined"&&typeof g!="function"){if(e<b.length){f(",")}d(h);f(":");d(g)}}return f("}")}}}f("null");return;case"number":f(isFinite(a)?+a:"null");return;case"string":e=a.length;f('"');for(h=0;h<e;h+=1){j=a.charAt(h);if(j>=" "){if(j=="\\"||j=='"'){f("\\")}f(j)}else{switch(j){case"\b":f("\\b");break;case"\f":f("\\f");break;case"\n":f("\\n");break;case"\r":f("\\r");break;case"\t":f("\\t");break;default:j=j.charCodeAt();f("\\u00"+Math.floor(j/16).toString(16)+(j%16).toString(16))}}}f('"');return;case"boolean":f(String(a));return;default:f("null");return}}d(c);return b.join("")},parse:function(text){var p=/^\s*(([,:{}\[\]])|"(\\.|[^\x00-\x1f"\\])*"|-?\d+(\.\d*)?([eE][+-]?\d+)?|true|false|null)\s*/,token=undefined,operator=undefined;function error(m,t){throw {name:"JSONError",message:m,text:t||operator||token}}function next(b){if(b&&b!=operator){error("Expected '"+b+"'")}if(text){var t=p.exec(text);if(t){if(t[2]){token=null;operator=t[2]}else{operator=null;try{token=eval(t[1])}catch(e){error("Bad token",t[1])}}text=text.substring(t[0].length)}else{error("Unrecognized token",text)}}else{token=operator=undefined}}function val(){var k,o;switch(operator){case"{":next("{");o={};if(operator!="}"){for(;;){if(operator||typeof token!="string"){error("Missing key")}k=token;next();next(":");o[k]=val();if(operator!=","){break}next(",")}}next("}");return o;case"[":next("[");o=[];if(operator!="]"){for(;;){o.push(val());if(operator!=","){break}next(",")}}next("]");return o;default:if(operator!==null){error("Missing value")}k=token;next();return k}}next();return val()}};DataTiddler.format="JSON";DataTiddler.stringify=JSON.stringify;DataTiddler.parse=JSON.parse;
//%/
[>img[./Images/Book.png][./Documents/decentralising-power.pdf]]
|!Name: |Decentralising Power |
|!Author: |Greenpeace |
|!Date: |Jul 2005 |
[>img[./Images/Book.png][./Documents/USAMD/md 0537 - decontaminating casualties.pdf]]
|!Name: |MD 0537 - Decontaminating Casualties |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/decorative metalwork - a practical handbook.pdf]]
|!Name: |Decorative Metalwork - A Practical Handbook |
|!Author: |George Day |
|!Date: |1906 |
[[Introduction]]
[>img[./Images/Book.png][./Documents/degrees_of_capture-universities_the_oil_industry_and_climate_change.pdf]]
|!Name: |Degrees of Capture - Universities, the oil industry and climate change |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_dehydrating_food.pdf]]
|!Name: |Dehydrating Food |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/Public/delicious_peach_recipes.pdf]]
|!Name: |Delicious Peach Recipes |
|!Author: |Marian Harris Neil |
|!Date: |Feb 1920 |

[>img[./Images/Book.png][./Documents/USAMD/md 0501 - dental anatomy & physiology.pdf]]
|!Name: |MD 0501 - Dental Anatomy & Physiology |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0373 - dental chair (jsa-r).pdf]]
|!Name: |MD 0373 - Dental Chair |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0503 - dental instrument setups.pdf]]
|!Name: |MD 0503 - Dental Instrument Setups |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0502 - dental materials.pdf]]
|!Name: |MD 0502 - Dental Materials |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/desert_awareness.pdf]]
|!Name: |Desert Awareness |
|!Author: |Maricopa County Department of Emergency Management |
|!Date: |Nov 1998 |
[>img[./Images/Book.png][./Documents/ATMRL/design_problems_for_simple_rural_water_systems.pdf]]
|!Name: |Design Problems for simple rural water systems |
|!Author: |A. Scott Faiia  |
|!Date: |1982 |
[>img[./Images/Book.png][./Documents/ATMRL/design_of_small_water_storage_and_erosion_controll_dams.pdf]]
|!Name: |Design of Small Water Storage and Erosion Control Dams |
|!Author: |Wood, A.D. and Richardson, E.V.  |
|!Date: |Jun 1975 |
[>img[./Images/Book.png][./Documents/designing_communities_of_learning.pdf]]
|!Name: |Designing Communities of Learning |
|!Author: |The Mary Parker Follett Foundation, Inc. |
|!Date: |Aug 2002 |
[>img[./Images/Book.png][./Documents/designingmeetings.pdf]]
|!Name: |Designing Productive Meetings and Events |
|!Author: |Agenda 21 Networks |
|!Date: |Apr 1998 |
[>img[./Images/Book.png][./Documents/sheet metal brake.pdf]]
|!Name: |Designing and Building a Sheet Metal Brake |
|!Author: |David J Gingery |
|!Date: |1997 |
[>img[./Images/Book.png][./Documents/2014 09 rapport de stage alexis de liedekerke - associations de cultures.pdf]]
|!Name: |Designing intercropping in vegetables |
|!Author: |Alexis de Liedekerke |
|!Date: |2014 |
[>img[./Images/Book.png][./Documents/desire_book_low_resolution.pdf]]
|!Name: |Desire for Greener Land |
|!Author: |Gudrun Schwilch, Rudi Hessel and Simone Verzandvoort, World Overview of Conservation Approaches and Technologies |
|!Date: |2012 |
[>img[./Images/Book.png][./Documents/developing_local_networks_to_tackle_food_poverty.pdf]]
|!Name: |Developing Local Networks to Tackle Food Poverty  |
|!Author: |Jacqui Webster, Sustain |
|!Date: |Jul 1999 |
[>img[./Images/Book.png][./Documents/diabetes_disaster_guidelines.pdf]]
|!Name: |Diabetes Disaster Preparedness |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/dictionary of plant lore - d. watts (elsevier, 2007) ww.pdf]]
|!Name: |Dictionary of Plant Lore |
|!Author: |D. Watts |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/PracticalAction/diesel.pdf]]
|!Name: |Diesel |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/directmkt.pdf]]
|!Name: |directmkt |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/directmarketinglamb.pdf]]
|!Name: |directmarketinglamb |
|!Author: |[[ATTRA]] |
|!Date: | |

[>img[./Images/Book.png][./Documents/tokyodisaster-cover.pdf]]
|!Name: |Disaster Preparedness Tokyo |
|!Author: |Tokyo Metropolitan Government |
|!Date: | |
[>img[./Images/Book.png][./Documents/tokyodisaster-1-introduction_index_symbolmark.pdf]]
|!Name: |Disaster Preparedness Tokyo - Introduction |
|!Author: |Tokyo Metropolitan Government |
|!Date: | |
[>img[./Images/Book.png][./Documents/tokyodisaster-01_simulation_of_a_major_earthquake.pdf]]
|!Name: |Disaster Preparedness Tokyo 01 - Simulation of a Major Earthquake |
|!Author: |Tokyo Metropolitan Government |
|!Date: | |
[>img[./Images/Book.png][./Documents/tokyodisaster-02_lets_get_prepared.pdf]]
|!Name: |Disaster Preparedness Tokyo 02 - Lets Get Prepared |
|!Author: |Tokyo Metropolitan Government |
|!Date: | |
[>img[./Images/Book.png][./Documents/tokyodisaster-03_other_disasters_and_countermeasures.pdf]]
|!Name: |Disaster Preparedness Tokyo 03 - Other Disasters and Countermeasures |
|!Author: |Tokyo Metropolitan Government |
|!Date: | |
[>img[./Images/Book.png][./Documents/tokyodisaster-04_survival_tips.pdf]]
|!Name: |Disaster Preparedness Tokyo 04 - Survival Tips |
|!Author: |Tokyo Metropolitan Government |
|!Date: | |
[>img[./Images/Book.png][./Documents/tokyodisaster-05_disaster_facts_and_information_you_should_know.pdf]]
|!Name: |Disaster Preparedness Tokyo 05 - Disaster Facts and Information You Should Know |
|!Author: |Tokyo Metropolitan Government |
|!Date: | |
[>img[./Images/Book.png][./Documents/disaster_supply_kit.pdf]]
|!Name: |Disaster Supply Kit |
|!Author: |National Disaster Education Coalition |
|!Date: | |
[>img[./Images/Book.png][./Documents/FEMA/general_-.pdf]]
|!Name: |Disaster preparation for Special Needs |
|!Author: |Federal Emergency Management Agency |
|!Date: |Aug 2004 |
[>img[./Images/Book.png][./Documents/disease and insect control in home fruit plantings (pb1622).pdf]]
|!Name: |Disease and Insect Control in Home Fruit Plantings |
|!Author: |Steve Bost, The University of Tennessee Institute of Agriculture, |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/CAT/district-heating-system-at-cat.pdf]]
|!Name: |district-heating-system-at-cat |
|!Author: |[[CAT]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/documentationforms_intro.pdf]]
|!Name: |documentationforms_intro |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/doing_it_without_leaders.pdf]]
|!Name: |Doing it without leaders |
|!Author: |Seeds for Change |
|!Date: | |

[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc35.pdf]]
|!Name: |Donkeys for traction and tillage  |
|!Author: |Luurt Oudman, Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/ATMRL/double_drum_sawdust_stove.pdf]]
|!Name: |Double Drum Sawdust Stove |
|!Author: |Jeffery L. Wartluft |
|!Date: |1975 |
[>img[./Images/Book.png][./Documents/ATTRA/downymil.pdf]]
|!Name: |downymil |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/draft_animal.pdf]]
|!Name: |Draft Animal Power for Farming |
|!Author: |Tracy Mumma, [[ATTRA]] |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/ATTRA/drafting_lease_question_sheet.pdf]]
|!Name: |drafting_lease_question_sheet |
|!Author: |[[ATTRA]] |
|!Date: | |
/%
Image:dried-beans.jpg
Thumbnail:dried-beans_thumbnail.jpg
%/
[img[./Images/dried-beans_small.jpg][./Images/dried-beans.jpg]]
[>img[./Images/Book.png][./Documents/ATMRL/drinking_water_installations_and_drainage_requirements_in_nepal.pdf]]
|!Name: |Drinking Water Installations and Drainage Requirements in Nepal |
|!Author: |Andreas Bachmann and Heinz Waldvogel |
|!Date: |1988 |
[>img[./Images/Book.png][./Documents/backcountry_water_treatment.pdf]]
|!Name: |Drinking Water Treatment Methods for Backcountry and Travel Use |
|!Author: |Center for Disease Control |
|!Date: |February 2009 |
[>img[./Images/Book.png][./Documents/ATTRA/drought_resources_california.pdf]]
|!Name: |drought_resources_california |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/drought_resources_texas.pdf]]
|!Name: |drought_resources_texas |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0913 - drug dosage & therapy.pdf]]
|!Name: |MD 0913 - Drug Dosage & Therapy |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/drying_foods.pdf]]
|!Name: |Drying Foods |
|!Author: |Internet Article |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/drying_fruits_and_vegetables.pdf]]
|!Name: |Drying fruits and vegetables |
|!Author: |Marilyn A. Swanson, University of Idaho |
|!Date: |Apr 2000 |
[>img[./Images/Book.png][./Documents/PracticalAction/drying_of_apricots.pdf]]
|!Name: |Drying of apricots |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/drying_of_chillies.pdf]]
|!Name: |Drying of chillies |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/drying_of_foods.pdf]]
|!Name: |Drying of foods |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/drying_technology.pdf]]
|!Name: |Drying technology |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc33.pdf]]
|!Name: |Duck keeping in the tropics |
|!Author: |S.J. van der Meulen, G. den Dikken. Agromisa Foundation |
|!Date: |2004 |

[>img[./Images/Book.png][./Documents/ducksandgeese.pdf]]
|!Name: |Ducks and Geese |
|!Author: |Emil Malinovsky |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/dungbeetle.pdf]]
|!Name: |dungbeetle |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_dutch_ovens.pdf]]
|!Name: |Dutch Ovens |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetearthovens.pdf]]
|!Name: |Earth Ovens |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/earthbag_building-the_tools_tricks_and_techniques.pdf]]
|!Name: |Earthbag Building - The Tools, Tricks and Techniques |
|!Author: |Kaki Hunter and Donald Kiffmeyer |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/eating_oil-food_supply_in_a_changing_climate.pdf]]
|!Name: |Eating Oil: Food Supply in a Changing Climate |
|!Author: |Andy Jones, Sustain  |
|!Date: |Nov 2001 |
[>img[./Images/Book.png][./Documents/ecohouse-a_design_guide.pdf]]
|!Name: |Ecohouse: A Design Guide |
|!Author: |Sue Roaf, Manuel Fuentes, Stephanie Thomas |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/ecological_basis_of_agroforestry.pdf]]
|!Name: |Ecological Basis of Agroforestry |
|!Author: |Daizy Rani Batish, Ravinder Kumar Kohli, Shibu Jose, Harminder Pal Singh |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/food and farming vision.pdf]]
|!Name: |Ecological Farming |
|!Author: |Greenpeace |
|!Date: |May 2015 |
[>img[./Images/Book.png][./Documents/CAT/ecotourism.pdf]]
|!Name: |Ecotourism |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/ecowaters_net-drum_compost_toilet_plans.pdf]]
|!Name: |Ecowaters net-drum compost toilet plans |
|!Author: |David Del Porto, Carol Steinfeld |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/ATTRA/edamame.pdf]]
|!Name: |edamame |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/edibleforestgardenpamphletfeb2009.pdf]]
|!Name: |Edible Forest Gardening |
|!Author: |Dave Sansone |
|!Date: |Feb 2009 |
[>img[./Images/Book.png][./Documents/edibleforestgardens1.pdf]]
|!Name: |Edible Forest Gardens Vol.1 |
|!Author: |Dave Jacke |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/edibleforestgardens2.pdf]]
|!Name: |Edible Forest Gardens Vol.1 |
|!Author: |Dave Jacke |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/edible plants of the world.pdf]]
|!Name: |Edible Plants of the World |
|!Author: |U. P. Hedrick |
|!Date: |1919 |
[>img[./Images/Book.png][./Documents/edible_roof_garden.pdf]]
|!Name: |Guide to Setting Up Your Own Edible Rooftop Garden |
|!Author: |Alternatives and the Rooftop Garden Project |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/survival - plants - edible and medicinal plants.pdf]]
|!Name: |Edible and Medicinal Plants |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/edible and medicinal plants.pdf]]
|!Name: |Edible and Medicinal Plants (Illustrated) |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/agbuildings.pdf]]
|!Name: |agbuildings |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/sheetmetal - elbow patterns (kidder 1935).pdf]]
|!Name: |Elbow Patterns for all Forms of Pipe |
|!Author: |F. S. Kidder |
|!Date: |1935 |
[>img[./Images/Book.png][./Documents/electric blower for forges.pdf]]
|!Name: |Electric Blower for Forges |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/electric_power_from_the_wind.pdf]]
|!Name: |Electric Power from the Wind |
|!Author: |Henry Clews  |
|!Date: |1974 |
[>img[./Images/Book.png][./Documents/us navy - electrical safety field guide navfac p-45.pdf]]
|!Name: |Electrical Safety Field Guide |
|!Author: |US Navy |
|!Date: |Jun 1998 |

[>img[./Images/Book.png][./Documents/elem. metallurgy & heat-treating (making knives) - b. gaston (2002) ww.pdf]]
|!Name: |Elementary Metallurgy & ~Heat-Treating |
|!Author: |B. Gaston |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/ATMRL/elements_of_solar_architecture_for_tropical_places.pdf]]
|!Name: |Elements of solar architecture for tropical places |
|!Author: |Roland Stulz |
|!Date: |1980 |
[>img[./Images/Book.png][./Documents/medical_-_emergency_childbirth.pdf]]
|!Name: |Emergency Childbirth |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/water_-_emergency_disinfection_of_drinking.pdf]]
|!Name: |Emergency Disinfection of Drinking Water |
|!Author: |Environment Protection Agency |
|!Date: |Aug 2006 |
/%
Image:emergencyfood.jpg
Thumbnail:emergencyfood_thumbnail.jpg
%/
[img[./Images/emergencyfood_small.jpg][./Images/emergencyfood.jpg]]
[>img[./Images/Book.png][./Documents/food_-_emergency_food_for_babies.pdf]]
|!Name: |Emergency Food For Babies |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/emergency lighting system (pl 05-002-13).pdf]]
|!Name: |Emergency Lighting System |
|!Author: |Prepper Link |
|!Date: |2013 |
[>img[./Images/Book.png][./Documents/FEMA/is513complete.pdf]]
|!Name: |Emergency Management Independent Study Course |
|!Author: |Federal Emergency Management Agency |
|!Date: |Mar 1999 |
[>img[./Images/Book.png][./Documents/FEMA/check list.pdf]]
|!Name: |Emergency Preparedness Check list |
|!Author: |Federal Emergency Management Agency |
|!Date: |Aug 1993 |
[>img[./Images/Book.png][./Documents/emergency war surgery (dod).pdf]]
|!Name: |Emergency War Surgery |
|!Author: |Department of Defense |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/emergency_water_supply.pdf]]
|!Name: |Emergency Water Supply |
|!Author: |Internet Article |
|!Date: | |

[>img[./Images/Book.png][./Documents/ATTRA/energytips_irrig.pdf]]
|!Name: |energytips_irrig |
|!Author: |[[ATTRA]] |
|!Date: | |

[>img[./Images/Book.png][./Documents/ESSN/essn-2005-01-jan.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-01-Jan |
|!Author: |Larry D Barr |
|!Date: |January 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2005-02-feb.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-02-Feb |
|!Author: |Larry D Barr |
|!Date: |February 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2005-03-mar.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-03-Mar |
|!Author: |Larry D Barr |
|!Date: |March 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2005-04-apr.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-04-Apr |
|!Author: |Larry D Barr |
|!Date: |April 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2005-05-may.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-05-May |
|!Author: |Larry D Barr |
|!Date: |May 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2005-06-jun.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-06-Jun |
|!Author: |Larry D Barr |
|!Date: |June 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2005-07-jul.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-07-Jul |
|!Author: |Larry D Barr |
|!Date: |July 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2005-08-aug.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-08-Aug |
|!Author: |Larry D Barr |
|!Date: |August 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2005-09-sep.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-09-Sep |
|!Author: |Larry D Barr |
|!Date: |September 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2005-10-oct.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-10-Oct |
|!Author: |Larry D Barr |
|!Date: |October 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2005-11-nov.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-11-Nov |
|!Author: |Larry D Barr |
|!Date: |November 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2005-12-dec.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2005-12-Dec |
|!Author: |Larry D Barr |
|!Date: |December 2005 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2006-01-jan.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2006-01-Jan |
|!Author: |Larry D Barr |
|!Date: |January 2006 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2006-04-apr.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2006-04-Apr |
|!Author: |Larry D Barr |
|!Date: |April 2006 |
[>img[./Images/Book.png][./Documents/ESSN/essn-2006-07-jul.pdf]]
|!Name: |Energy Self Sufficiency Newsletter - 2006-07-Jul |
|!Author: |Larry D Barr |
|!Date: |July 2006 |
[>img[./Images/Book.png][./Documents/CAT/4._energy_and_buildings_at_the_centre_for_alternative_technology_technical_information_report_no.1_.pdf]]
|!Name: |Energy and Buildings at the CAT |
|!Author: |[[CAT]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/energy_farms-anaerobic_digestion.pdf]]
|!Name: |Energy farms – anaerobic digestion |
|!Author: |Local United |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/energy_from_wind.pdf]]
|!Name: |Energy from wind |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/energy_performance_energy_services_company.pdf]]
|!Name: |Energy performance energy services company |
|!Author: |Local United |
|!Date: | |
[>img[./Images/Book.png][./Documents/iea_2050_energy_scenarios.pdf]]
|!Name: |Energy to 2050 |
|!Author: |International Energy Agency |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/ATMRL/energy_the_solar_prospect.pdf]]
|!Name: |Energy: The Solar Prospect |
|!Author: |Denis Hayes |
|!Date: |Mar 1977 |
[>img[./Images/Book.png][./Documents/AgroDoc/48-entering_the_organic_export_market.pdf]]
|!Name: |Entering the Organic Export Market |
|!Author: |Freek Jan Koekoek, Marg Leijdens, Gerbert Rieks. Agromisa Foundation |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/USAMD/md 0588 - environmental diseases & injuries i.pdf]]
|!Name: |MD 0588 - Environmental Diseases & Injuries I |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0589 - environmental injuries & diseases ii.pdf]]
|!Name: |MD 0589 - Environmental Injuries & Diseases II |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0548 - environmental injuries.pdf]]
|!Name: |MD 0548 - Environmental Injuries |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/environmentaly_sound_small-scale_water_projects.pdf]]
|!Name: |Environmentally Sound Small-scale Water Projects |
|!Author: |Gus Tillman |
|!Date: |1981 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc11.pdf]]
|!Name: |Erosion control in the tropics |
|!Author: |Hil Kuypers, Anne Mollema, Egger Topper |
|!Date: |1983, 1999, 2005 |
[>img[./Images/Book.png][./Documents/food_-_essential_nutrient_sources.pdf]]
|!Name: |Essential Nutrient Sources |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/essential_oils.pdf]]
|!Name: |Essential oils |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc27.pdf]]
|!Name: |Establishing and managing waterpoints for village livestock |
|!Author: |André Teyssier, Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/ATTRA/ethanol.pdf]]
|!Name: |ethanol |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc44.pdf]]
|!Name: |Ethnoveterinary medicine |
|!Author: |Ngeh J. Toyang, Jacob Wanyama, Mopoi Nuwanyakpa, Sali Django. Agromisa Foundation |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/evaluation-and-development-of-aquaponics-production-and-product-market-capabilities-in-alberta.pdf]]
|!Name: |Evaluation and Development of Aquaponics Production and Product Market Capabilities in Alberta |
|!Author: |Nick Savidov, Greenhouse Crops Programme Leader |
|!Date: |Aug 2004 |
[>img[./Images/Book.png][./Documents/ATMRL/evaluation_of_solar_cookers.pdf]]
|!Name: |Evaluation of Solar Cookers |
|!Author: |VITA |
|!Date: |1977 |
#displayArea {background-color: #ffccff; }
#mainMenu {border: 1px solid #ffff88; }
#commandPanel {background-color: #008800; }
[>img[./Images/Book.png][./Documents/food_-_expedient_cooking.pdf]]
|!Name: |Expedient Cooking |
|!Author: |Internet Article |
|!Date: | |
/***
|Name|ExportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ExportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ExportTiddlersPluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|interactively select/export tiddlers to a separate file|
!!!!!Documentation
>see [[ExportTiddlersPluginInfo]]
!!!!!Inline control panel (live):
><<exportTiddlers inline>>
!!!!!Revisions
<<<
2011.02.14 2.9.6 fix OSX error: use picker.file.path
2010.02.25 2.9.5 added merge checkbox option and improved 'merge' status message
|please see [[ExportTiddlersPluginInfo]] for additional revision details|
2005.10.09 0.0.0 development started
<<<
!!!!!Code
***/
//{{{
// version
version.extensions.ExportTiddlersPlugin= {major: 2, minor: 9, revision: 6, date: new Date(2011,2,14)};

// default shadow definition
config.shadowTiddlers.ExportTiddlers='<<exportTiddlers inline>>';

// add 'export' backstage task (following built-in import task)
if (config.tasks) { // TW2.2 or above
	config.tasks.exportTask = {
		text:'export',
		tooltip:'Export selected tiddlers to another file',
		content:'<<exportTiddlers inline>>'
	}
	config.backstageTasks.splice(config.backstageTasks.indexOf('importTask')+1,0,'exportTask');
}

config.macros.exportTiddlers = {
	$: function(id) { return document.getElementById(id); }, // abbreviation
	label: 'export tiddlers',
	prompt: 'Copy selected tiddlers to an export document',
	okmsg: '%0 tiddler%1 written to %2',
	failmsg: 'An error occurred while creating %1',
	overwriteprompt: '%0\ncontains %1 tiddler%2 that will be discarded or replaced',
	mergestatus: '%0 tiddler%1 added, %2 tiddler%3 updated, %4 tiddler%5 unchanged',
	statusmsg: '%0 tiddler%1 - %2 selected for export',
	newdefault: 'export.html',
	datetimefmt: '0MM/0DD/YYYY 0hh:0mm:0ss',  // for 'filter date/time' edit fields
	type_TW: "tw", type_PS: "ps", type_TX: "tx", type_CS: "cs", type_NF: "nf", // file type tokens
	type_map: { // maps type param to token values
		tiddlywiki:"tw", tw:"tw", wiki: "tw",
		purestore: "ps", ps:"ps", store:"ps",
		plaintext: "tx", tx:"tx", text: "tx",
		comma:     "cs", cs:"cs", csv:  "cs",
		newsfeed:  "nf", nf:"nf", xml:  "nf", rss:"nf"
	},
	handler: function(place,macroName,params) {
		if (params[0]!='inline')
			{ createTiddlyButton(place,this.label,this.prompt,this.togglePanel); return; }
		var panel=this.createPanel(place);
		panel.style.position='static';
		panel.style.display='block';
	},
	createPanel: function(place) {
		var panel=this.$('exportPanel');
		if (panel) { panel.parentNode.removeChild(panel); }
		setStylesheet(store.getTiddlerText('ExportTiddlersPlugin##css',''),'exportTiddlers');
		panel=createTiddlyElement(place,'span','exportPanel',null,null)
		panel.innerHTML=store.getTiddlerText('ExportTiddlersPlugin##html','');
		this.initFilter();
		this.refreshList(0);
		var fn=this.$('exportFilename');
		if (window.location.protocol=='file:' && !fn.value.length) {
			// get new target path/filename
			var newPath=getLocalPath(window.location.href);
			var slashpos=newPath.lastIndexOf('/'); if (slashpos==-1) slashpos=newPath.lastIndexOf('\\');
			if (slashpos!=-1) newPath=newPath.substr(0,slashpos+1); // trim filename
			fn.value=newPath+this.newdefault;
		}
		return panel;
	},
	togglePanel: function(e) { var e=e||window.event;
		var cme=config.macros.exportTiddlers; // abbrev
		var parent=resolveTarget(e).parentNode;
		var panel=cme.$('exportPanel');
		if (panel==undefined || panel.parentNode!=parent)
			panel=cme.createPanel(parent);
		var isOpen=panel.style.display=='block';
		if(config.options.chkAnimate)
			anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,'none'));
		else
			panel.style.display=isOpen?'none':'block' ;
		if (panel.style.display!='none') {
			cme.refreshList(0);
			cme.$('exportFilename').focus();
			cme.$('exportFilename').select();
		}
		e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
	},
	process: function(which) { // process panel control interactions
		var theList=this.$('exportList'); if (!theList) return false;
		var count = 0;
		var total = store.getTiddlers('title').length;
		switch (which.id) {
			case 'exportFilter':
				count=this.filterExportList();
				var panel=this.$('exportFilterPanel');
				if (count==-1) { panel.style.display='block'; break; }
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(count,total);
				if (count==0) { alert('No tiddlers were selected'); panel.style.display='block'; }
				break;
			case 'exportStart':
				this.go();
				break;
			case 'exportDelete':
				this.deleteTiddlers();
				break;
			case 'exportHideFilter':
			case 'exportToggleFilter':
				var panel=this.$('exportFilterPanel')
				panel.style.display=(panel.style.display=='block')?'none':'block';
				break;
			case 'exportSelectChanges':
				var lastmod=new Date(document.lastModified);
				for (var t = 0; t < theList.options.length; t++) {
					if (theList.options[t].value=='') continue;
					var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;
					theList.options[t].selected=(tiddler.modified>lastmod);
					count += (tiddler.modified>lastmod)?1:0;
				}
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(count,total);
				if (count==0) alert('There are no unsaved changes');
				break;
			case 'exportSelectAll':
				for (var t = 0; t < theList.options.length; t++) {
					if (theList.options[t].value=='') continue;
					theList.options[t].selected=true;
					count += 1;
				}
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(count,count);
				break;
			case 'exportSelectOpened':
				for (var t=0; t<theList.options.length; t++) theList.options[t].selected=false;
				var tiddlerDisplay=this.$('tiddlerDisplay');
				for (var t=0; t<tiddlerDisplay.childNodes.length;t++) {
					var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);
					for (var i=0; i<theList.options.length; i++) {
						if (theList.options[i].value!=tiddler) continue;
						theList.options[i].selected=true; count++; break;
					}
				}
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(count,total);
				if (count==0) alert('There are no tiddlers currently opened');
				break;
			case 'exportSelectRelated':
				// recursively build list of related tiddlers
				function getRelatedTiddlers(tid,tids) {
					var t=store.getTiddler(tid); if (!t || tids.contains(tid)) return tids;
					tids.push(t.title);
					if (!t.linksUpdated) t.changed();
					for (var i=0; i<t.links.length; i++)
						if (t.links[i]!=tid) tids=getRelatedTiddlers(t.links[i],tids);
					return tids;
				}
				// for all currently selected tiddlers, gather up the related tiddlers (including self) and select them as well
				var tids=[];
				for (var i=0; i<theList.options.length; i++)
					if (theList.options[i].selected) tids=getRelatedTiddlers(theList.options[i].value,tids);
				// select related tiddlers (includes original selected tiddlers)
				for (var i=0; i<theList.options.length; i++)
					theList.options[i].selected=tids.contains(theList.options[i].value);
				this.displayStatus(tids.length,total);
				break;
			case 'exportListSmaller':	// decrease current listbox size
				var min=5;
				theList.size-=(theList.size>min)?1:0;
				break;
			case 'exportListLarger':	// increase current listbox size
				var max=(theList.options.length>25)?theList.options.length:25;
				theList.size+=(theList.size<max)?1:0;
				break;
			case 'exportClose':
				this.$('exportPanel').style.display='none';
				break;
		}
		return false;
	},
	displayStatus: function(count,total) {
		var txt=this.statusmsg.format([total,total!=1?'s':'',!count?'none':count==total?'all':count]);
		clearMessage();	displayMessage(txt);
		return txt;
	},
	refreshList: function(selectedIndex) {
		var theList = this.$('exportList'); if (!theList) return;
		// get the sort order
		var sort;
		if (!selectedIndex)   selectedIndex=0;
		if (selectedIndex==0) sort='modified';
		if (selectedIndex==1) sort='title';
		if (selectedIndex==2) sort='modified';
		if (selectedIndex==3) sort='modifier';
		if (selectedIndex==4) sort='tags';

		// unselect headings and count number of tiddlers actually selected
		var count=0;
		for (var t=5; t < theList.options.length; t++) {
			if (!theList.options[t].selected) continue;
			if (theList.options[t].value!='')
				count++;
			else { // if heading is selected, deselect it, and then select and count all in section
				theList.options[t].selected=false;
				for ( t++; t<theList.options.length && theList.options[t].value!=''; t++) {
					theList.options[t].selected=true;
					count++;
				}
			}
		}

		// disable 'export' and 'delete' buttons if no tiddlers selected
		this.$('exportStart').disabled=(count==0);
		this.$('exportDelete').disabled=(count==0);

		// show selection count
		var tiddlers = store.getTiddlers('title');
		if (theList.options.length) this.displayStatus(count,tiddlers.length);

		// if a [command] item, reload list... otherwise, no further refresh needed
		if (selectedIndex>4) return;

		// clear current list contents
		while (theList.length > 0) { theList.options[0] = null; }
		// add heading and control items to list
		var i=0;
		var indent=String.fromCharCode(160)+String.fromCharCode(160);
		theList.options[i++]=
			new Option(tiddlers.length+' tiddlers in document', '',false,false);
		theList.options[i++]=
			new Option(((sort=='title'   )?'>':indent)+' [by title]', '',false,false);
		theList.options[i++]=
			new Option(((sort=='modified')?'>':indent)+' [by date]', '',false,false);
		theList.options[i++]=
			new Option(((sort=='modifier')?'>':indent)+' [by author]', '',false,false);
		theList.options[i++]=
			new Option(((sort=='tags'    )?'>':indent)+' [by tags]', '',false,false);

		// output the tiddler list
		switch(sort) {
			case 'title':
				for(var t = 0; t < tiddlers.length; t++)
					theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
				break;
			case 'modifier':
			case 'modified':
				var tiddlers = store.getTiddlers(sort);
				// sort descending for newest date first
				tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });
				var lastSection = '';
				for(var t = 0; t < tiddlers.length; t++) {
					var tiddler = tiddlers[t];
					var theSection = '';
					if (sort=='modified') theSection=tiddler.modified.toLocaleDateString();
					if (sort=='modifier') theSection=tiddler.modifier;
					if (theSection != lastSection) {
						theList.options[i++] = new Option(theSection,'',false,false);
						lastSection = theSection;
					}
					theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
				}
				break;
			case 'tags':
				var theTitles = {}; // all tiddler titles, hash indexed by tag value
				var theTags = new Array();
				for(var t=0; t<tiddlers.length; t++) {
					var title=tiddlers[t].title;
					var tags=tiddlers[t].tags;
					if (!tags || !tags.length) {
						if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
						theTitles['untagged'].push(title);
					}
					else for(var s=0; s<tags.length; s++) {
						if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
						theTitles[tags[s]].push(title);
					}
				}
				theTags.sort();
				for(var tagindex=0; tagindex<theTags.length; tagindex++) {
					var theTag=theTags[tagindex];
					theList.options[i++]=new Option(theTag,'',false,false);
					for(var t=0; t<theTitles[theTag].length; t++)
						theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
				}
				break;
			}
		theList.selectedIndex=selectedIndex; // select current control item
		this.$('exportStart').disabled=true;
		this.$('exportDelete').disabled=true;
		this.displayStatus(0,tiddlers.length);
	},
	askForFilename: function(here) {
		var msg=here.title; // use tooltip as dialog box message
		var path=getLocalPath(document.location.href);
		var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\');
		if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
		var filetype=this.$('exportFormat').value.toLowerCase();
		var defext='html';
		if (filetype==this.type_TX) defext='txt';
		if (filetype==this.type_CS) defext='csv';
		if (filetype==this.type_NF) defext='xml';
		var file=this.newdefault.replace(/html$/,defext);
		var result='';
		if(window.Components) { // moz
			try {
				netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
				var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
				var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
				picker.init(window, msg, nsIFilePicker.modeSave);
				var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
				thispath.initWithPath(path);
				picker.displayDirectory=thispath;
				picker.defaultExtension=defext;
				picker.defaultString=file;
				picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
				if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.path;
			}
			catch(e) { alert('error during local file access: '+e.toString()) }
		}
		else { // IE
			try { // XPSP2 IE only
				var s = new ActiveXObject('UserAccounts.CommonDialog');
				s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|XML files|*.xml|';
				s.FilterIndex=defext=='txt'?2:'html'?3:'xml'?4:1;
				s.InitialDir=path;
				s.FileName=file;
				if (s.showOpen()) var result=s.FileName;
			}
			catch(e) {  // fallback
				var result=prompt(msg,path+file);
			}
		}
		return result;
	},
	initFilter: function() {
		this.$('exportFilterStart').checked=false; this.$('exportStartDate').value='';
		this.$('exportFilterEnd').checked=false;  this.$('exportEndDate').value='';
		this.$('exportFilterTags').checked=false; this.$('exportTags').value='';
		this.$('exportFilterText').checked=false; this.$('exportText').value='';
		this.showFilterFields();
	},
	showFilterFields: function(which) {
		var show=this.$('exportFilterStart').checked;
		this.$('exportFilterStartBy').style.display=show?'block':'none';
		this.$('exportStartDate').style.display=show?'block':'none';
		var val=this.$('exportFilterStartBy').value;
		this.$('exportStartDate').value
			=this.getFilterDate(val,'exportStartDate').formatString(this.datetimefmt);
		if (which && (which.id=='exportFilterStartBy') && (val=='other'))
			this.$('exportStartDate').focus();

		var show=this.$('exportFilterEnd').checked;
		this.$('exportFilterEndBy').style.display=show?'block':'none';
		this.$('exportEndDate').style.display=show?'block':'none';
		var val=this.$('exportFilterEndBy').value;
		this.$('exportEndDate').value
			=this.getFilterDate(val,'exportEndDate').formatString(this.datetimefmt);
		 if (which && (which.id=='exportFilterEndBy') && (val=='other'))
			this.$('exportEndDate').focus();

		var show=this.$('exportFilterTags').checked;
		this.$('exportTags').style.display=show?'block':'none';

		var show=this.$('exportFilterText').checked;
		this.$('exportText').style.display=show?'block':'none';
	},
	getFilterDate: function(val,id) {
		var result=0;
		switch (val) {
			case 'file':
				result=new Date(document.lastModified);
				break;
			case 'other':
				result=new Date(this.$(id).value);
				break;
			default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31
				var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;
				var oneday=86400000;
				if (id=='exportStartDate')
					result=new Date((Math.floor(now/oneday)-val)*oneday+tz);
				else
					result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);
				break;
		}
		return result;
	},
	filterExportList: function() {
		var theList  = this.$('exportList'); if (!theList) return -1;
		var filterStart=this.$('exportFilterStart').checked;
		var val=this.$('exportFilterStartBy').value;
		var startDate=config.macros.exportTiddlers.getFilterDate(val,'exportStartDate');
		var filterEnd=this.$('exportFilterEnd').checked;
		var val=this.$('exportFilterEndBy').value;
		var endDate=config.macros.exportTiddlers.getFilterDate(val,'exportEndDate');
		var filterTags=this.$('exportFilterTags').checked;
		var tags=this.$('exportTags').value;
		var filterText=this.$('exportFilterText').checked;
		var text=this.$('exportText').value;
		if (!(filterStart||filterEnd||filterTags||filterText)) {
			alert('Please set the selection filter');
			this.$('exportFilterPanel').style.display='block';
			return -1;
		}
		if (filterStart&&filterEnd&&(startDate>endDate)) {
			var msg='starting date/time:\n'
			msg+=startDate.toLocaleString()+'\n';
			msg+='is later than ending date/time:\n'
			msg+=endDate.toLocaleString()
			alert(msg);
			return -1;
		}
		// if filter by tags, get list of matching tiddlers
		// use getMatchingTiddlers() (if MatchTagsPlugin is installed) for full boolean expressions
		// otherwise use getTaggedTiddlers() for simple tag matching
		if (filterTags) {
			var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
			var t=fn.apply(store,[tags]);
			var tagged=[];
			for (var i=0; i<t.length; i++) tagged.push(t[i].title);
		}
		// scan list and select tiddlers that match all applicable criteria
		var total=0;
		var count=0;
		for (var i=0; i<theList.options.length; i++) {
			// get item, skip non-tiddler list items (section headings)
			var opt=theList.options[i]; if (opt.value=='') continue;
			// get tiddler, skip missing tiddlers (this should NOT happen)
			var tiddler=store.getTiddler(opt.value); if (!tiddler) continue;
			var sel=true;
			if ( (filterStart && tiddler.modified<startDate)
			|| (filterEnd && tiddler.modified>endDate)
			|| (filterTags && !tagged.contains(tiddler.title))
			|| (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))
				sel=false;
			opt.selected=sel;
			count+=sel?1:0;
			total++;
		}
		return count;
	},
	deleteTiddlers: function() {
		var list=this.$('exportList'); if (!list) return;
		var tids=[];
		for (i=0;i<list.length;i++)
			if (list.options[i].selected && list.options[i].value.length)
				tids.push(list.options[i].value);
		if (!confirm('Are you sure you want to delete these tiddlers:\n\n'+tids.join(', '))) return;
		store.suspendNotifications();
		for (t=0;t<tids.length;t++) {
			var tid=store.getTiddler(tids[t]); if (!tid) continue;
			var msg="'"+tid.title+"' is tagged with 'systemConfig'.\n\n";
			msg+='Removing this tiddler may cause unexpected results.  Are you sure?'
			if (tid.tags.contains('systemConfig') && !confirm(msg)) continue;
			store.removeTiddler(tid.title);
			story.closeTiddler(tid.title);
		}
		store.resumeNotifications();
		alert(tids.length+' tiddlers deleted');
		this.refreshList(0); // reload listbox
		store.notifyAll(); // update page display
	},
	go: function() {
		if (window.location.protocol!='file:') // make sure we are local
			{ displayMessage(config.messages.notFileUrlError); return; }
		// get selected tidders, target filename, target type, and notes
		var list=this.$('exportList'); if (!list) return;
		var tids=[]; for (var i=0; i<list.options.length; i++) {
			var opt=list.options[i]; if (!opt.selected||!opt.value.length) continue;
			var tid=store.getTiddler(opt.value); if (!tid) continue;
			tids.push(tid);
		}
		if (!tids.length) return; // no tiddlers selected
		var target=this.$('exportFilename').value.trim();
		if (!target.length) {
			displayMessage('A local target path/filename is required',target);
			return;
		}
		var merge=this.$('exportMerge').checked;
		var filetype=this.$('exportFormat').value.toLowerCase();
		var notes=this.$('exportNotes').value.replace(/\n/g,'<br>');
		var total={val:0};
		var out=this.assembleFile(target,filetype,tids,notes,total,merge);
		if (!total.val) return; // cancelled file overwrite
		var link='file:///'+target.replace(/\\/g,'/');
		var samefile=link==decodeURIComponent(window.location.href);
		var p=getLocalPath(document.location.href);
		if (samefile) {
			if (config.options.chkSaveBackups) { var t=loadOriginal(p);if(t)saveBackup(p,t); }
			if (config.options.chkGenerateAnRssFeed && saveRss instanceof Function) saveRss(p);
		}
		var ok=saveFile(target,out);
		displayMessage((ok?this.okmsg:this.failmsg).format([total.val,total.val!=1?'s':'',target]),link);
	},
	plainTextHeader:
		 'Source:\n\t%0\n'
		+'Title:\n\t%1\n'
		+'Subtitle:\n\t%2\n'
		+'Created:\n\t%3 by %4\n'
		+'Application:\n\tTiddlyWiki %5 / %6 %7\n\n',
	plainTextTiddler:
		'- - - - - - - - - - - - - - -\n'
		+'|     title: %0\n'
		+'|   created: %1\n'
		+'|  modified: %2\n'
		+'| edited by: %3\n'
		+'|      tags: %4\n'
		+'- - - - - - - - - - - - - - -\n'
		+'%5\n',
	plainTextFooter:
		'',
	newsFeedHeader:
		 '<'+'?xml version="1.0"?'+'>\n'
		+'<rss version="2.0">\n'
		+'<channel>\n'
		+'<title>%1</title>\n'
		+'<link>%0</link>\n'
		+'<description>%2</description>\n'
		+'<language>en-us</language>\n'
		+'<copyright>Copyright '+(new Date().getFullYear())+' %4</copyright>\n'
		+'<pubDate>%3</pubDate>\n'
		+'<lastBuildDate>%3</lastBuildDate>\n'
		+'<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n'
		+'<generator>TiddlyWiki %5 / %6 %7</generator>\n',
	newsFeedTiddler:
		'\n%0\n',
	newsFeedFooter:
		'</channel></rss>',
	pureStoreHeader:
		 '<html><body>'
		+'<style type="text/css">'
		+'	#storeArea {display:block;margin:1em;}'
		+'	#storeArea div {padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}'
		+'	#pureStoreHeading {width:100%;text-align:left;background-color:#eeeeee;padding:1em;}'
		+'</style>'
		+'<div id="pureStoreHeading">'
		+'	TiddlyWiki "PureStore" export file<br>'
		+'	Source'+': <b>%0</b><br>'
		+'	Title: <b>%1</b><br>'
		+'	Subtitle: <b>%2</b><br>'
		+'	Created: <b>%3</b> by <b>%4</b><br>'
		+'	TiddlyWiki %5 / %6 %7<br>'
		+'	Notes:<hr><pre>%8</pre>'
		+'</div>'
		+'<div id="storeArea">',
	pureStoreTiddler:
		'%0\n%1',
	pureStoreFooter:
		'</div><!--POST-BODY-START-->\n<!--POST-BODY-END--></body></html>',
	assembleFile: function(target,filetype,tids,notes,total,merge) {
		var revised='';
		var now = new Date().toLocaleString();
		var src=convertUnicodeToUTF8(document.location.href);
		var title = convertUnicodeToUTF8(wikifyPlain('SiteTitle').htmlEncode());
		var subtitle = convertUnicodeToUTF8(wikifyPlain('SiteSubtitle').htmlEncode());
		var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());
		var twver = version.major+'.'+version.minor+'.'+version.revision;
		var v=version.extensions.ExportTiddlersPlugin; var pver = v.major+'.'+v.minor+'.'+v.revision;
		var headerargs=[src,title,subtitle,now,user,twver,'ExportTiddlersPlugin',pver,notes];
		switch (filetype) {
			case this.type_TX: // plain text
				var header=this.plainTextHeader.format(headerargs);
				var footer=this.plainTextFooter;
				break;
			case this.type_CS: // comma-separated
				var fields={};
				for (var i=0; i<tids.length; i++) for (var f in tids[i].fields) fields[f]=f;
				var names=['title','created','modified','modifier','tags','text'];
				for (var f in fields) names.push(f);
				var header=names.join(',')+'\n';
				var footer='';
				break;
			case this.type_NF: // news feed (XML)
				headerargs[0]=store.getTiddlerText('SiteUrl','');
				var header=this.newsFeedHeader.format(headerargs);
				var footer=this.newsFeedFooter;
				break;
			case this.type_PS: // PureStore (no code)
				var header=this.pureStoreHeader.format(headerargs);
				var footer=this.pureStoreFooter;
				break;
			case this.type_TW: // full TiddlyWiki
			default:
				var currPath=getLocalPath(window.location.href);
				var original=loadFile(currPath);
				if (!original) { displayMessage(config.messages.cantSaveError); return; }
				var posDiv = locateStoreArea(original);
				if (!posDiv) { displayMessage(config.messages.invalidFileError.format([currPath])); return; }
				var header = original.substr(0,posDiv[0]+startSaveArea.length)+'\n';
				var footer = '\n'+original.substr(posDiv[1]);
				break;
		}
		var out=this.getData(target,filetype,tids,fields,merge);
		var revised = header+convertUnicodeToUTF8(out.join('\n'))+footer;
		// if full TW, insert page title and language attr, and reset all MARKUP blocks...
		if (filetype==this.type_TW) {
			var newSiteTitle=convertUnicodeToUTF8(getPageTitle()).htmlEncode();
			revised=revised.replaceChunk('<title'+'>','</title'+'>',' ' + newSiteTitle + ' ');
			revised=updateLanguageAttribute(revised);
			var titles=[]; for (var i=0; i<tids.length; i++) titles.push(tids[i].title);
			revised=updateMarkupBlock(revised,'PRE-HEAD',
				titles.contains('MarkupPreHead')? 'MarkupPreHead' :null);
			revised=updateMarkupBlock(revised,'POST-HEAD',
				titles.contains('MarkupPostHead')?'MarkupPostHead':null);
			revised=updateMarkupBlock(revised,'PRE-BODY',
				titles.contains('MarkupPreBody')? 'MarkupPreBody' :null);
			revised=updateMarkupBlock(revised,'POST-SCRIPT',
				titles.contains('MarkupPostBody')?'MarkupPostBody':null);
		}
		total.val=out.length;
		return revised;
	},
	getData: function(target,filetype,tids,fields,merge) {
		// output selected tiddlers and gather list of titles (for use with merge)
		var out=[]; var titles=[];
		var url=store.getTiddlerText('SiteUrl','');
		for (var i=0; i<tids.length; i++) {
			out.push(this.formatItem(store,filetype,tids[i],url,fields));
			titles.push(tids[i].title);
		}
		// if TW or PureStore format, ask to merge with existing tiddlers (if any)
		if (filetype==this.type_TW || filetype==this.type_PS) {
			var txt=loadFile(target);
			if (txt && txt.length) {
				var remoteStore=new TiddlyWiki();
				if (version.major+version.minor*.1+version.revision*.01<2.52) txt=convertUTF8ToUnicode(txt);
				if (remoteStore.importTiddlyWiki(txt)) {
					var existing=remoteStore.getTiddlers('title');
					var msg=this.overwriteprompt.format([target,existing.length,existing.length!=1?'s':'']);
					if (merge) {
						var added=titles.length; var updated=0; var kept=0;
						for (var i=0; i<existing.length; i++)
							if (titles.contains(existing[i].title)) {
								added--; updated++;
							} else {
								out.push(this.formatItem(remoteStore,filetype,existing[i],url));
								kept++;
							}
						displayMessage(this.mergestatus.format(
							[added,added!=1?'s':'',updated,updated!=1?'s':'',kept,kept!=1?'s':'',]));
					}
					else if (!confirm(msg)) out=[]; // empty the list = don't write file
				}
			}
		}
		return out;
	},
	formatItem: function(s,f,t,u,fields) {
		if (f==this.type_TW)
			var r=s.getSaver().externalizeTiddler(s,t);
		if (f==this.type_PS)
			var r=this.pureStoreTiddler.format([t.title,s.getSaver().externalizeTiddler(s,t)]);
		if (f==this.type_NF)
			var r=this.newsFeedTiddler.format([t.saveToRss(u)]);
		if (f==this.type_TX)
			var r=this.plainTextTiddler.format([t.title, t.created.toLocaleString(), t.modified.toLocaleString(),
				t.modifier, String.encodeTiddlyLinkList(t.tags), t.text]);
		if (f==this.type_CS) {
			function toCSV(t) { return '"'+t.replace(/"/g,'""')+'"'; } // always encode CSV
			var out=[ toCSV(t.title), toCSV(t.created.toLocaleString()), toCSV(t.modified.toLocaleString()),
				toCSV(t.modifier), toCSV(String.encodeTiddlyLinkList(t.tags)), toCSV(t.text) ];
			for (var f in fields) out.push(toCSV(t.fields[f]||''));
			var r=out.join(',');
		}
		return r||"";
	}
}
//}}}
/***
!!!Control panel CSS
//{{{
!css
#exportPanel {
	display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;
	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;-webkit-border-radius:1em;
}
#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }
#exportPanel table {
	width:100%; border:0px; padding:0px; margin:0px;
	font-size:8pt; line-height:110%; background:transparent;
}
#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }
#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }
#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}
#exportPanel input  { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%; }
#exportPanel textarea  { width:98%;padding:0px;margin:0px;overflow:auto;font-size:8pt; }
#exportPanel .box {
	border:1px solid black; padding:3px; margin-bottom:5px;
	background:#f8f8f8; -moz-border-radius:5px;-webkit-border-radius:5px; }
#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }
#exportPanel .rad { width:auto;border:0 }
#exportPanel .chk { width:auto;border:0 }
#exportPanel .btn { width:auto; }
#exportPanel .btn1 { width:98%; }
#exportPanel .btn2 { width:48%; }
#exportPanel .btn3 { width:32%; }
#exportPanel .btn4 { width:24%; }
#exportPanel .btn5 { width:19%; }
!end
//}}}
!!!Control panel HTML
//{{{
!html
<!-- target path/file  -->
<div>
<div style="float:right;padding-right:.5em">
<input type="checkbox" style="width:auto" id="exportMerge" CHECKED
	title="combine selected tiddlers with existing tiddlers (if any) in export file"> merge
</div>
export to:<br>
<input type="text" id="exportFilename" size=40 style="width:93%"><input
	type="button" id="exportBrowse" value="..." title="select or enter a local folder/file..." style="width:5%"
	onclick="var fn=config.macros.exportTiddlers.askForFilename(this); if (fn.length) this.previousSibling.value=fn; ">
</div>

<!-- output format -->
<div>
format:
<select id="exportFormat" size=1>
	<option value="TW">TiddlyWiki HTML document (includes core code)</option>
	<option value="PS">TiddlyWiki "PureStore" HTML file (tiddler data only)</option>
	<option value="TX">TiddlyWiki plain text TXT file (tiddler source listing)</option>
	<option value="CS">Comma-Separated Value (CSV) data file</option>
	<option value="NF">RSS NewsFeed XML file</option>
</select>
</div>

<!-- notes -->
<div>
notes:<br>
<textarea id="exportNotes" rows=3 cols=40 style="height:4em;margin-bottom:5px;" onfocus="this.select()"></textarea>
</div>

<!-- list of tiddlers -->
<table><tr align="left"><td>
	select:
	<a href="JavaScript:;" id="exportSelectAll"
		onclick="return config.macros.exportTiddlers.process(this)" title="select all tiddlers">
		&nbsp;all&nbsp;</a>
	<a href="JavaScript:;" id="exportSelectChanges"
		onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers changed since last save">
		&nbsp;changes&nbsp;</a>
	<a href="JavaScript:;" id="exportSelectOpened"
		onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers currently being displayed">
		&nbsp;opened&nbsp;</a>
	<a href="JavaScript:;" id="exportSelectRelated"
		onclick="return config.macros.exportTiddlers.process(this)" title="select tiddlers related to the currently selected tiddlers">
		&nbsp;related&nbsp;</a>
	<a href="JavaScript:;" id="exportToggleFilter"
		onclick="return config.macros.exportTiddlers.process(this)" title="show/hide selection filter">
		&nbsp;filter&nbsp;</a>
</td><td align="right">
	<a href="JavaScript:;" id="exportListSmaller"
		onclick="return config.macros.exportTiddlers.process(this)" title="reduce list size">
		&nbsp;&#150;&nbsp;</a>
	<a href="JavaScript:;" id="exportListLarger"
		onclick="return config.macros.exportTiddlers.process(this)" title="increase list size">
		&nbsp;+&nbsp;</a>
</td></tr></table>
<select id="exportList" multiple size="10" style="margin-bottom:5px;"
	onchange="config.macros.exportTiddlers.refreshList(this.selectedIndex)">
</select><br>

<!-- selection filter -->
<div id="exportFilterPanel" style="display:none">
<table><tr align="left"><td>
	selection filter
</td><td align="right">
	<a href="JavaScript:;" id="exportHideFilter"
		onclick="return config.macros.exportTiddlers.process(this)" title="hide selection filter">hide</a>
</td></tr></table>
<div class="box">

<input type="checkbox" class="chk" id="exportFilterStart" value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(this)"> starting date/time<br>
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">
	<select size=1 id="exportFilterStartBy"
		onchange="config.macros.exportTiddlers.showFilterFields(this);">
		<option value="0">today</option>
		<option value="1">yesterday</option>
		<option value="7">a week ago</option>
		<option value="30">a month ago</option>
		<option value="file">file date</option>
		<option value="other">other (mm/dd/yyyy hh:mm)</option>
	</select>
</td><td width="50%">
	<input type="text" id="exportStartDate" onfocus="this.select()"
		onchange="config.macros.exportTiddlers.$('exportFilterStartBy').value='other';">
</td></tr></table>

<input type="checkbox" class="chk" id="exportFilterEnd" value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(this)"> ending date/time<br>
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">
	<select size=1 id="exportFilterEndBy"
		onchange="config.macros.exportTiddlers.showFilterFields(this);">
		<option value="0">today</option>
		<option value="1">yesterday</option>
		<option value="7">a week ago</option>
		<option value="30">a month ago</option>
		<option value="file">file date</option>
		<option value="other">other (mm/dd/yyyy hh:mm)</option>
	</select>
</td><td width="50%">
	<input type="text" id="exportEndDate" onfocus="this.select()"
		onchange="config.macros.exportTiddlers.$('exportFilterEndBy').value='other';">
</td></tr></table>

<input type="checkbox" class="chk" id=exportFilterTags value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(this)"> match tags<br>
<input type="text" id="exportTags" onfocus="this.select()">

<input type="checkbox" class="chk" id=exportFilterText value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(this)"> match titles/tiddler text<br>
<input type="text" id="exportText" onfocus="this.select()">

</div> <!--box-->
</div> <!--panel-->

<!-- action buttons -->
<div style="text-align:center">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportFilter" value="apply filter">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportStart" value="export tiddlers">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportDelete" value="delete tiddlers">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportClose" value="close">
</div><!--center-->
!end
//}}}
***/
 
/***
|Name:|ExtentTagButtonPlugin|
|Description:|Adds a New tiddler button in the tag drop down|
|Version:|3.2a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#ExtendTagButtonPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{

window.onClickTag_mptw_orig = window.onClickTag;
window.onClickTag = function(e) {
  window.onClickTag_mptw_orig.apply(this,arguments);
  var tag = this.getAttribute("tag");
  var title = this.getAttribute("tiddler");
  // Thanks Saq, you're a genius :)
  var popup = Popup.stack[Popup.stack.length-1].popup;
  createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
  wikify("<<newTiddler label:'New tiddler' tag:'"+tag+"'>>",createTiddlyElement(popup,"li"));
  return false;
}

//}}}
[>img[./Images/Book.png][./Documents/USAMD/md 0547 - eye, ear & nose injuries.pdf]]
|!Name: |MD 0547 - Eye, Ear & Nose Injuries |
|!Author: |US Army Medical Department |
|!Date: | |
!Federal Emergency Management Agency

Part of the US' Department of Homeland Security. http://www.fema.gov

[>img[./Images/Book.png][./Documents/medical_-_face_masks.pdf]]
|!Name: |Face Masks |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/facilitating_workshops.pdf]]
|!Name: |Facilitating Workshops |
|!Author: |Seeds for Change |
|!Date: | |
[>img[./Images/Book.png][./Documents/facilitating_meetings.pdf]]
|!Name: |Facilitation of Meetings |
|!Author: |Seeds for Change |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetaxesandsaws.pdf]]
|!Name: |factsheetaxesandsaws |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetbasketmaking.pdf]]
|!Name: |Basket making |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetbatteries.pdf]]
|!Name: |Factsheet: Batteries |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetbeekeeping.pdf]]
|!Name: |factsheetbeekeeping |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetbiodiesel.pdf]]
|!Name: |factsheetbiodiesel |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetbiogas.pdf]]
|!Name: |factsheetbiogas |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetblacksmithing.pdf]]
|!Name: |factsheetblacksmithing |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetbowmaking.pdf]]
|!Name: |factsheetbowmaking |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetbreadmaking.pdf]]
|!Name: |factsheetbreadmaking |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetbushcraft.pdf]]
|!Name: |factsheetbushcraft |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetcanoes.pdf]]
|!Name: |factsheetcanoes |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetcharcoalburning.pdf]]
|!Name: |factsheetcharcoalburning |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetcheesemaking.pdf]]
|!Name: |factsheetcheesemaking |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetcobbuilding.pdf]]
|!Name: |factsheetcobbuilding |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetcommunityenergy.pdf]]
|!Name: |factsheetcommunityenergy |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetcsa.pdf]]
|!Name: |factsheetcsa |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetcomposting.pdf]]
|!Name: |factsheetcomposting |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetcoracles.pdf]]
|!Name: |factsheetcoracles |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetcrayfish.pdf]]
|!Name: |factsheetcrayfish |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetcryptocurrencies.pdf]]
|!Name: |factsheetcryptocurrencies |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetdrystonewalling.pdf]]
|!Name: |factsheetdrystonewalling |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetducks.pdf]]
|!Name: |factsheetducks |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetearthbagbuilding.pdf]]
|!Name: |factsheetearthbagbuilding |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetearthshelters.pdf]]
|!Name: |factsheetearthshelters |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetelectricvehicles.pdf]]
|!Name: |factsheetelectricvehicles |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetessentialoils.pdf]]
|!Name: |factsheetessentialoils |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetextinctions.pdf]]
|!Name: |factsheetextinctions |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetfeltmaking.pdf]]
|!Name: |factsheetfeltmaking |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetfirecraft.pdf]]
|!Name: |factsheetfirecraft |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetflowergrowing.pdf]]
|!Name: |factsheetflowergrowing |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetfoodsmoking.pdf]]
|!Name: |factsheetfoodsmoking |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetforestgardening.pdf]]
|!Name: |factsheetforestgardening |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetgame.pdf]]
|!Name: |factsheetgame |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetgardening.pdf]]
|!Name: |factsheetgardening |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetgasification.pdf]]
|!Name: |factsheetgasification |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetgreenelectricity.pdf]]
|!Name: |factsheetgreenelectricity |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetgroundsourceheatpumps.pdf]]
|!Name: |factsheetgroundsourceheatpumps |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetherbalmedicine.pdf]]
|!Name: |factsheetherbalmedicine |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetherbs.pdf]]
|!Name: |factsheetherbs |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheethorses.pdf]]
|!Name: |factsheethorses |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheethousingcoops.pdf]]
|!Name: |factsheethousingcoops |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheethurdles.pdf]]
|!Name: |factsheethurdles |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheethydroponics.pdf]]
|!Name: |factsheethydroponics |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetcommunities.pdf]]
|!Name: |factsheetcommunities |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetknitting.pdf]]
|!Name: |factsheetknitting |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetledlighting.pdf]]
|!Name: |factsheetledlighting |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetland.pdf]]
|!Name: |factsheetland |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetclothes.pdf]]
|!Name: |factsheetclothes |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetlowimpact.pdf]]
|!Name: |factsheetlowimpact |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetgreenshopping.pdf]]
|!Name: |factsheetgreenshopping |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheettransport.pdf]]
|!Name: |factsheettransport |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetmasonrystoves.pdf]]
|!Name: |factsheetmasonrystoves |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetmeadows.pdf]]
|!Name: |factsheetmeadows |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetnaturalbodycare.pdf]]
|!Name: |factsheetnaturalbodycare |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetnaturalcleaners.pdf]]
|!Name: |factsheetnaturalcleaners |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetnaturalmenstrualproducts.pdf]]
|!Name: |factsheetnaturalmenstrualproducts |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetpestcontrol.pdf]]
|!Name: |factsheetpestcontrol |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetnaturalsoaps.pdf]]
|!Name: |factsheetnaturalsoaps |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetnatureawareness.pdf]]
|!Name: |factsheetnatureawareness |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetnavigation.pdf]]
|!Name: |factsheetnavigation |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetopensource.pdf]]
|!Name: |factsheetopensource |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetphilosophy.pdf]]
|!Name: |factsheetphilosophy |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetpigs.pdf]]
|!Name: |factsheetpigs |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetplanning.pdf]]
|!Name: |factsheetplanning |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetponds.pdf]]
|!Name: |factsheetponds |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetpoultry.pdf]]
|!Name: |factsheetpoultry |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetpreservingfood.pdf]]
|!Name: |factsheetpreservingfood |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetragrugs.pdf]]
|!Name: |factsheetragrugs |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetrawfood.pdf]]
|!Name: |factsheetrawfood |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetrealnappies.pdf]]
|!Name: |factsheetrealnappies |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetrecyclingcomputers.pdf]]
|!Name: |factsheetrecyclingcomputers |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetretainedheat.pdf]]
|!Name: |factsheetretainedheat |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetretrofitting.pdf]]
|!Name: |factsheetretrofitting |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetrocketstoves.pdf]]
|!Name: |factsheetrocketstoves |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetroofing.pdf]]
|!Name: |factsheetroofing |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetsheep.pdf]]
|!Name: |factsheetsheep |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetsmallholding.pdf]]
|!Name: |factsheetsmallholding |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetsmall.pdf]]
|!Name: |factsheetsmall |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetsoftfruit.pdf]]
|!Name: |factsheetsoftfruit |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetsoil.pdf]]
|!Name: |factsheetsoil |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetsolarelectricity.pdf]]
|!Name: |factsheetsolarelectricity |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/solar_hot_water_information_sheet.pdf]]
|!Name: |solar_hot_water_information_sheet |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetsprouting.pdf]]
|!Name: |factsheetsprouting |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetstargazing.pdf]]
|!Name: |factsheetstargazing |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheeteconomics.pdf]]
|!Name: |factsheeteconomics |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetsticks.pdf]]
|!Name: |factsheetsticks |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetstonebuilding.pdf]]
|!Name: |factsheetstonebuilding |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetsystemicchange.pdf]]
|!Name: |factsheetsystemicchange |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetthatching.pdf]]
|!Name: |factsheetthatching |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetdemocracy.pdf]]
|!Name: |factsheetdemocracy |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheettracking.pdf]]
|!Name: |factsheettracking |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheettransition.pdf]]
|!Name: |factsheettransition |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheeturbansmall-scalegardening.pdf]]
|!Name: |factsheeturbansmall-scalegardening |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetvegoilmotoring.pdf]]
|!Name: |factsheetvegoilmotoring |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetveganism.pdf]]
|!Name: |factsheetveganism |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetvegetarianism.pdf]]
|!Name: |factsheetvegetarianism |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetvermiculture.pdf]]
|!Name: |factsheetvermiculture |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetwwoof.pdf]]
|!Name: |factsheetwwoof |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetwalking.pdf]]
|!Name: |factsheetwalking |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetwattleanddaub.pdf]]
|!Name: |factsheetwattleanddaub |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetwildfood.pdf]]
|!Name: |factsheetwildfood |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetwildlifegardening.pdf]]
|!Name: |factsheetwildlifegardening |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/windgeninfosheet.pdf]]
|!Name: |Wind Generators |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetwindpumps.pdf]]
|!Name: |factsheetwindpumps |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetyurts.pdf]]
|!Name: |factsheetyurts |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/LILI/factsheetbuilding.pdf]]
|!Name: |factsheetbuilding |
|!Author: |[[LILI]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/sheltersurvey.pdf]]
|!Name: |Fallout Shelter Surveys |
|!Author: |Executive Office of the President |
|!Date: |May 1960 |
[>img[./Images/Book.png][./Documents/family_disaster_plan.pdf]]
|!Name: |Family Disaster Plan |
|!Author: |National Disaster Education Coalition |
|!Date: | |
[>img[./Images/Book.png][./Documents/FEMA/supply kit.pdf]]
|!Name: |Family Disaster Supplies Kit |
|!Author: |Federal Emergency Management Agency |
|!Date: | |
[>img[./Images/Book.png][./Documents/familyshelter-raf.pdf]]
|!Name: |Family Fallout Shelter |
|!Author: |Office of Civil Defense Mobilization |
|!Date: |Jun 1959 |
[>img[./Images/Book.png][./Documents/familyshelterdesigns-1962.pdf]]
|!Name: |Family Shelter Designs-1962 |
|!Author: |Department of Defense |
|!Date: |1962 |
[>img[./Images/Book.png][./Documents/farm blacksmithing - j. drew (1901) ww.pdf]]
|!Name: |Farm Blacksmithing |
|!Author: |J. Drew |
|!Date: |1901 |
[>img[./Images/Book.png][./Documents/general_-_blacksmithing.pdf]]
|!Name: |Farm Blacksmithing |
|!Author: |John F Friese |
|!Date: |1921 |
[>img[./Images/Book.png][./Documents/Public/farm_buildings.pdf]]
|!Name: |Farm Buildings |
|!Author: |Sanders Publishing |
|!Date: |1908 |
|ToDo: |Consider re-writing the book. Text is images yet OCR'd. |
[>img[./Images/Book.png][./Documents/ATTRA/farmstartup_checksheet.pdf]]
|!Name: |farmstartup_checksheet |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/farmbiz_structures_tipsheet.pdf]]
|!Name: |farmbiz_structures_tipsheet |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/employment_guide_2015.pdf]]
|!Name: |employment_guide_2015 |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/farmenergycalc.pdf]]
|!Name: |farmenergycalc |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/farm reservoirs0001.pdf]]
|!Name: |Farm Water Reservoirs |
|!Author: |Cement and Concrete Institute |
|!Date: |1999 |
[>img[./Images/Book.png][./Documents/ATTRA/organicgrainfarms.pdf]]
|!Name: |organicgrainfarms |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/farmershandbookvolume1.pdf]]
|!Name: |Farmer's Handbook Volume 1 |
|!Author: |Ms Hom Maya Gurung, Mr Bipin Vaidhya, Mr Laxman Rana, Mr Chris Evans |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/farmershandbookvolume2.pdf]]
|!Name: |Farmer's Handbook Volume 2 |
|!Author: |Ms Hom Maya Gurung, Mr Bipin Vaidhya, Mr Laxman Rana, Mr Chris Evans |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/farmershandbookvolume3.pdf]]
|!Name: |Farmer's Handbook Volume 3 |
|!Author: |Ms Hom Maya Gurung, Mr Bipin Vaidhya, Mr Laxman Rana, Mr Chris Evans |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/farmershandbookvolume4.pdf]]
|!Name: |Farmer's Handbook Volume 4 |
|!Author: |Ms Hom Maya Gurung, Mr Bipin Vaidhya, Mr Laxman Rana, Mr Chris Evans |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/farmershandbookvolume5.pdf]]
|!Name: |Farmer's Handbook Volume 5 |
|!Author: |Ms Hom Maya Gurung, Mr Bipin Vaidhya, Mr Laxman Rana, Mr Chris Evans |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/r7587ffriends.pdf]]
|!Name: |Farmers Friends |
|!Author: |Small Community Water Supplies |
|!Date: |Jan 2001 |


[>img[./Images/Book.png][./Documents/Public/king_farmersof40centuries.pdf]]
|!Name: |Farmers of 40 Centuries |
|!Author: |F. H. King |
|!Date: |1911 |
[>img[./Images/Book.png][./Documents/farmers_markets-actions_for_local_authorities.pdf]]
|!Name: |Farmers' markets: actions needed by local authorities |
|!Author: |Friends of the Earth |
|!Date: |Aug 2000 |

[>img[./Images/Book.png][./Documents/farming_and_gardening_for_health_or_disease_soil_and_health_1939.pdf]]
|!Name: |Farming and Gardening for Health or Disease |
|!Author: |Sir Albert Howard |
|!Date: |1939 |
[>img[./Images/Book.png][./Documents/fat of the land - veg oil food facts.pdf]]
|!Name: |fat of the land - veg oil food facts |
|!Author: |Alexis Vaughan |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/ATTRA/federal_resources.pdf]]
|!Name: |federal_resources |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/water_tanks_made_of_ferrocement.pdf]]
|!Name: |Ferrocement Water Tanks and their Construction |
|!Author: |S. B. Watt |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/uk100.pdf]]
|!Name: |Field Dressing Deer - Pocket Guide |
|!Author: | Pennsylvania State’s College of Agricultural Sciences. http://agsci.psu.edu |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/fm_21-10_mcrp_4-11_1d_field_hygiene_and.pdf]]
|!Name: |Field Hygiene and Sanitation |
|!Author: |Headquarters Departments of the Army, the Navy, and the Air Force |
|!Date: |Jun 2000 |
[>img[./Images/Book.png][./Documents/ATMRL/05-174.pdf]]
|!Name: |Fields and Pastures in Deserts |
|!Author: |Dr. Helmut Hild |
|!Date: |1974 |
/***
|''Name:''|FieldsEditorPlugin|
|''Description:''|//create//, //edit//, //view// and //delete// commands in toolbar <<toolbar fields>>.|
|''Version:''|1.0.2|
|''Date:''|Dec 21,2007|
|''Source:''|http://visualtw.ouvaton.org/VisualTW.html|
|''Author:''|Pascal Collin|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.2.0|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
!Demo:
On [[homepage|http://visualtw.ouvaton.org/VisualTW.html]], see [[FieldEditor example]]
!Installation:
*import this tiddler from [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] (tagged as systemConfig)
*save and reload
*optionnaly : add the following css text in your StyleSheet : {{{#popup tr.fieldTableRow td {padding:1px 3px 1px 3px;}}}}
!Code
***/

//{{{

config.commands.fields.handlePopup = function(popup,title) {
	var tiddler = store.fetchTiddler(title);
	if(!tiddler)
		return;
	var fields = {};
	store.forEachField(tiddler,function(tiddler,fieldName,value) {fields[fieldName] = value;},true);
	var items = [];
	for(var t in fields) {
		var editCommand = "<<untiddledCall editFieldDialog "+escape(title)+" "+escape(t)+">>";
		var deleteCommand = "<<untiddledCall deleteField "+escape(title)+" "+escape(t)+">>";
		var renameCommand = "<<untiddledCall renameField "+escape(title)+" "+escape(t)+">>";
		items.push({field: t,value: fields[t], actions: editCommand+renameCommand+deleteCommand});
	}
	items.sort(function(a,b) {return a.field < b.field ? -1 : (a.field == b.field ? 0 : +1);});
	var createNewCommand = "<<untiddledCall createField "+escape(title)+">>";
	items.push({field : "", value : "", actions:createNewCommand });
	if(items.length > 0)
		ListView.create(popup,items,this.listViewTemplate);
	else
		createTiddlyElement(popup,"div",null,null,this.emptyText);
}

config.commands.fields.listViewTemplate = {
	columns: [
		{name: 'Field', field: 'field', title: "Field", type: 'String'},
		{name: 'Actions', field: 'actions', title: "Actions", type: 'WikiText'},
		{name: 'Value', field: 'value', title: "Value", type: 'WikiText'}
	],
	rowClasses: [
			{className: 'fieldTableRow', field: 'actions'}
	],
	buttons: [	//can't use button for selected then delete, because click on checkbox will hide the popup
	]
}

config.macros.untiddledCall = {  // when called from listview, tiddler is unset, so we need to pass tiddler as parameter
	handler : function(place,macroName,params,wikifier,paramString) {
		var macroName = params.shift();
		if (macroName) var macro = config.macros[macroName];
		var title = params.shift();
		if (title) var tiddler = store.getTiddler(unescape(title));
		if (macro) macro.handler(place,macroName,params,wikifier,paramString,tiddler);
	}
}

config.macros.deleteField = {
	handler : function(place,macroName,params,wikifier,paramString,tiddler) {
		if(!readOnly && params[0]) {
			fieldName = unescape(params[0]);
			var btn = createTiddlyButton(place,"delete", "delete "+fieldName,this.onClickDeleteField);
			btn.setAttribute("title",tiddler.title);
			btn.setAttribute("fieldName", fieldName);
		}
	},
	onClickDeleteField : function() {
		var title=this.getAttribute("title");
		var fieldName=this.getAttribute("fieldName");
		var tiddler = store.getTiddler(title);
		if (tiddler && fieldName && confirm("delete field " + fieldName+" from " + title +" tiddler ?")) {
			delete tiddler.fields[fieldName];
			store.saveTiddler(tiddler.title,tiddler.title,tiddler.text,tiddler.modifier,tiddler.modified,tiddler.tags,tiddler.fields);
			story.refreshTiddler(title,"ViewTemplate",true);
		}
		return false;
	}
}

config.macros.createField = {
	handler : function(place,macroName,params,wikifier,paramString,tiddler) {
		if(!readOnly) {
			var btn = createTiddlyButton(place,"create new", "create a new field",this.onClickCreateField);
			btn.setAttribute("title",tiddler.title);
		}
	},
	onClickCreateField : function() {
		var title=this.getAttribute("title");
		var tiddler = store.getTiddler(title);
		if (tiddler) {
			var fieldName = prompt("Field name","");
			if (store.getValue(tiddler,fieldName)) {
				window.alert("This field already exists.");
			}
			else if (fieldName) {
				var v = prompt("Field value","");
				tiddler.fields[fieldName]=v;
				store.saveTiddler(tiddler.title,tiddler.title,tiddler.text,tiddler.modifier,tiddler.modified,tiddler.tags,tiddler.fields);
				story.refreshTiddler(title,"ViewTemplate",true);
			}
		}
		return false;
	}
}

config.macros.editFieldDialog = {
	handler : function(place,macroName,params,wikifier,paramString,tiddler) {
		if(!readOnly && params[0]) {
			fieldName = unescape(params[0]);
			var btn = createTiddlyButton(place,"edit", "edit this field",this.onClickEditFieldDialog);
			btn.setAttribute("title",tiddler.title);
			btn.setAttribute("fieldName", fieldName);
		}
	},
	onClickEditFieldDialog : function() {
		var title=this.getAttribute("title");
		var tiddler = store.getTiddler(title);
		var fieldName=this.getAttribute("fieldName");
		if (tiddler && fieldName) {
			var value = tiddler.fields[fieldName];
			value = value ? value : "";
			var lines = value.match(/\n/mg);
			lines = lines ? true : false;
			if (!lines || confirm("This field contains more than one line. Only the first line will be kept if you edit it here. Proceed ?")) {
				var v = prompt("Field value",value);
				tiddler.fields[fieldName]=v;
				store.saveTiddler(tiddler.title,tiddler.title,tiddler.text,tiddler.modifier,tiddler.modified,tiddler.tags,tiddler.fields);
				story.refreshTiddler(title,"ViewTemplate",true);
			}
		}
		return false;
	}
}

config.macros.renameField = {
	handler : function(place,macroName,params,wikifier,paramString,tiddler) {
		if(!readOnly && params[0]) {
			fieldName = unescape(params[0]);
			var btn = createTiddlyButton(place,"rename", "rename "+fieldName,this.onClickRenameField);
			btn.setAttribute("title",tiddler.title);
			btn.setAttribute("fieldName", fieldName);
		}
	},
	onClickRenameField : function() {
		var title=this.getAttribute("title");
		var fieldName=this.getAttribute("fieldName");
		var tiddler = store.getTiddler(title);
		if (tiddler && fieldName) {
			var newName = prompt("Rename " + fieldName + " as ?", fieldName);
			if (newName) {
				tiddler.fields[newName]=tiddler.fields[fieldName];
				delete tiddler.fields[fieldName];
				store.saveTiddler(tiddler.title,tiddler.title,tiddler.text,tiddler.modifier,tiddler.modified,tiddler.tags,tiddler.fields);
				story.refreshTiddler(title,"ViewTemplate",true);
			}
		}
		return false;
	}
}

config.shadowTiddlers.StyleSheetFieldsEditor = "/*{{{*/\n";
config.shadowTiddlers.StyleSheetFieldsEditor += ".fieldTableRow td {padding : 1px 3px}\n";
config.shadowTiddlers.StyleSheetFieldsEditor += ".fieldTableRow .button {border:0; padding : 0 0.2em}\n";
config.shadowTiddlers.StyleSheetFieldsEditor +="/*}}}*/";
store.addNotification("StyleSheetFieldsEditor", refreshStyles);

//}}}
[>img[./Images/Book.png][./Documents/fire_-_fighting_fire.pdf]]
|!Name: |Fighting Fire |
|!Author: |Department of Agriculture |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/ATTRA/financing_farmland_guide_2015.pdf]]
|!Name: |financing_farmland_guide_2015 |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/finding.pdf]]
|!Name: |finding |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/map_compass.pdf]]
|!Name: |Finding Your Way with Map and Compass |
|!Author: |United States Geological Survey |
|!Date: |Mar 2001 |

[>img[./Images/Book.png][./Documents/fire_-_fire_safety.pdf]]
|!Name: |Fire Safety and Fire Extinguishers |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_fireless_cooker.pdf]]
|!Name: |Fireless Cooker |
|!Author: |Internet Article |
|!Date: | |
First Aid is primarily about immediate care of a casuality. The immediate concerns are the 4 B's:
* Breathing
* Blood
* Burns
* Breaks
[>img[./Images/Book.png][./Documents/evaluate the casualty pl 02-002-12.pdf]]
|!Name: |First Aid Evaluation Flowchart |
|!Author: |Prepperlink |
|!Date: |2012 |
[>img[./Images/Book.png][./Documents/first aid patient chart pl 02-001-12.pdf]]
|!Name: |First Aid Evaluation Form |
|!Author: |Prepperlink |
|!Date: |2012 |
[>img[./Images/Book.png][./Documents/first-aid-guide.pdf]]
|!Name: |First Aid Guide |
|!Author: |Band Aid |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/first aid and management of minor injuries (dallimore).pdf]]
|!Name: |First Aid and Management of Minor Injuries |
|!Author: |Jon Dallimore |
|!Date: | |
[>img[./Images/Book.png][./Documents/fm2111.pdf]]
|!Name: |First Aid for Soldiers |
|!Author: |Headquarters, Department of the Army |
|!Date: |Oct 1988 |
[>img[./Images/Book.png][./Documents/first tunnels-2010-brochure.pdf]]
|!Name: |First Tunnels - 2010 brochure |
|!Author: |First Tunnels |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/first_steps_in_beekeeping-ron-brown.pdf]]
|!Name: |First steps in Beekeeping |
|!Author: |InternetArticle |
|!Date: | |

[>img[./Images/Book.png][./Documents/aquaculturewelfare.pdf]]
|!Name: |Fish Welfare |
|!Author: |Paul J. Ashley. School of Biological Sciences, University of Liverpool |
|!Date: |Sep 2006 |
[>img[./Images/Book.png][./Documents/sheet metal - five pointed star plans.pdf]]
|!Name: |Five Pointed Star Plans |
|!Author: |John Troland |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/fleabeetle.pdf]]
|!Name: |fleabeetle |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/fire_-_flint__steel_and_battery.pdf]]
|!Name: |Flint and Steel, and Battery |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/flooding_in_gardens-how_to_cope_with_excess_water_in_the_garden.pdf]]
|!Name: |Flooding in Gardens |
|!Author: |Environment Agency |
|!Date: |Feb 2002 |
 
[>img[./Images/Book.png][./Documents/food_co-ops_toolkit.pdf]]
|!Name: |Food Co-ops Toolkit |
|!Author: |Maresa Bossano and Kath Dalmeny |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0708 - food containers.pdf]]
|!Name: |MD 0708 - Food Containers |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0723 - food deterioration.pdf]]
|!Name: |MD 0723 - Food Deterioration |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/food-down_under-=caribbean.pdf]]
|!Name: |Food Down Under (Caribbean) |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_down_under-=chutnies.pdf]]
|!Name: |Food Down Under (Chutnies) |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_down_under_wild-game.pdf]]
|!Name: |Food Down Under (Wild Game) |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/food_drying.pdf]]
|!Name: |Food Drying |
|!Author: |Gordon Yaciuk |
|!Date: |Jul 1981 |
[>img[./Images/Book.png][./Documents/food forest blueprint.pdf]]
|!Name: |Food Forest Blueprint |
|!Author: |Geoff Lawton |
|!Date: |2013 |
[>img[./Images/Book.png][./Documents/food_futures_now.pdf]]
|!Name: |Food Futures Now |
|!Author: |Mae Wan Ho, The Institute of Science in Society |
|!Date: |Mar 2008 |
[>img[./Images/Book.png][./Documents/ATTRA/foodmiles.pdf]]
|!Name: |foodmiles |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/food_preservation_fish_meat_and_equipment.pdf]]
|!Name: |Food Preservation: Fish, Meat and Equipment |
|!Author: |Food and Agriculture Organization of the United Nations |
|!Date: | |

[>img[./Images/Book.png][./Documents/food_sovereignty-towards_democracy_in_localized_food_systems.pdf]]
|!Name: |Food Sovereignty - Towards democracy in localized food systems |
|!Author: |Michael Windfuhr and Jennie Jonsén |
|!Date: |2005 |

[>img[./Images/Book.png][./Documents/food storage cooking school - fn503.pdf]]
|!Name: |Food Storage Cooking School|
|!Author: |Rebecca Low, Deloy Hendricks. Utah State University Extension |
|!Date: |Jan 1999 |
[>img[./Images/Book.png][./Documents/food-and-democracy.pdf]]
|!Name: |Food and Democracy |
|!Author: |Alliance of Associations Polish Green Network |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/FEMA/arc_-_food_and_water_in_emergency.pdf]]
|!Name: |Food and Water in an Emergency |
|!Author: |Federal Emergency Management Agency |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/FEMA/f_web.pdf]]
|!Name: |Food and Water in an Emergency 2 |
|!Author: |Federal Emergency Management Agency |
|!Date: |Aug 2004 |
[>img[./Images/Book.png][./Documents/ATMRL/food_from_windmills.pdf]]
|!Name: |Food from windmills |
|!Author: |Peter Frdenkel |
|!Date: |Nov 1975 |
[>img[./Images/Book.png][./Documents/food_growing_groups.pdf]]
|!Name: |Food growing for groups |
|!Author: |Women's Environmental Network |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_miles.pdf]]
|!Name: |food_miles |
|!Author: |Sustain |
|!Date: |Oct 1999 |
[>img[./Images/Book.png][./Documents/ATMRL/food_or_fuel-new_competition_for_the_worlds_crop_land.pdf]]
|!Name: |Food or Fuel: New Competition for the worlds crop land |
|!Author: |Lester R Brown |
|!Date: |Mar 1980 |
[>img[./Images/Book.png][./Documents/PracticalAction/food_poisoning.pdf]]
|!Name: |Food poisoning and its prevention |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/food_processing_building_design.pdf]]
|!Name: |Food processing building design |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/food_processing_equipment_design.pdf]]
|!Name: |Food processing equipment design |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/food-miles_and_the_relative_climate_impacts_of_food_choices_in_us.pdf]]
|!Name: |Food-Miles and the Relative Climate Impacts of Food Choices in the United States |
|!Author: |Christopher L Webber and H. Scott Matthews |
|!Date: |Nov 2007 |
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:''
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]]  is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].

!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features:
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen)
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features:
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs:
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features:
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version

!Code
***/
//{{{


//============================================================================
//============================================================================
//		   ForEachTiddlerPlugin
//============================================================================
//============================================================================

// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {

if (!window.abego) window.abego = {};

version.extensions.ForEachTiddlerPlugin = {
	major: 1, minor: 0, revision: 8,
	date: new Date(2007,3,12),
	source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
	licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
	copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"
};

// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
	TiddlyWiki.prototype.forEachTiddler = function(callback) {
		for(var t in this.tiddlers) {
			callback.call(this,t,this.tiddlers[t]);
		}
	};
}

//============================================================================
// forEachTiddler Macro
//============================================================================

version.extensions.forEachTiddler = {
	major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};

// ---------------------------------------------------------------------------
// Configurations and constants
// ---------------------------------------------------------------------------

config.macros.forEachTiddler = {
	 // Standard Properties
	 label: "forEachTiddler",
	 prompt: "Perform actions on a (sorted) selection of tiddlers",

	 // actions
	 actions: {
		 addToList: {},
		 write: {}
	 }
};

// ---------------------------------------------------------------------------
//  The forEachTiddler Macro Handler
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.getContainingTiddler = function(e) {
	while(e && !hasClass(e,"tiddler"))
		e = e.parentNode;
	var title = e ? e.getAttribute("tiddler") : null;
	return title ? store.getTiddler(title) : null;
};

config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	// config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);

	if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
	// --- Parsing ------------------------------------------

	var i = 0; // index running over the params
	// Parse the "in" clause
	var tiddlyWikiPath = undefined;
	if ((i < params.length) && params[i] == "in") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "TiddlyWiki path expected behind 'in'.");
			return;
		}
		tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the where clause
	var whereClause ="true";
	if ((i < params.length) && params[i] == "where") {
		i++;
		whereClause = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the sort stuff
	var sortClause = null;
	var sortAscending = true;
	if ((i < params.length) && params[i] == "sortBy") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "sortClause missing behind 'sortBy'.");
			return;
		}
		sortClause = this.paramEncode(params[i]);
		i++;

		if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
			 sortAscending = params[i] == "ascending";
			 i++;
		}
	}

	// Parse the script
	var scriptText = null;
	if ((i < params.length) && params[i] == "script") {
		i++;
		scriptText = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the action.
	// When we are already at the end use the default action
	var actionName = "addToList";
	if (i < params.length) {
	   if (!config.macros.forEachTiddler.actions[params[i]]) {
			this.handleError(place, "Unknown action '"+params[i]+"'.");
			return;
		} else {
			actionName = params[i];
			i++;
		}
	}

	// Get the action parameter
	// (the parsing is done inside the individual action implementation.)
	var actionParameter = params.slice(i);


	// --- Processing ------------------------------------------
	try {
		this.performMacro({
				place: place,
				inTiddler: tiddler,
				whereClause: whereClause,
				sortClause: sortClause,
				sortAscending: sortAscending,
				actionName: actionName,
				actionParameter: actionParameter,
				scriptText: scriptText,
				tiddlyWikiPath: tiddlyWikiPath});

	} catch (e) {
		this.handleError(place, e);
	}
};

// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {

	var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);

	var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
	context["tiddlyWiki"] = tiddlyWiki;

	// Get the tiddlers, as defined by the whereClause
	var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
	context["tiddlers"] = tiddlers;

	// Sort the tiddlers, when sorting is required.
	if (parameter.sortClause) {
		this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
	}

	return {tiddlers: tiddlers, context: context};
};

// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
	return this.getTiddlersAndContext(parameter).tiddlers;
};

// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
//				  The following properties are supported:
//
//						place
//						whereClause
//						sortClause
//						sortAscending
//						actionName
//						actionParameter
//						scriptText
//						tiddlyWikiPath
//
//					All properties are optional.
//					For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
	var tiddlersAndContext = this.getTiddlersAndContext(parameter);

	// Perform the action
	var actionName = parameter.actionName ? parameter.actionName : "addToList";
	var action = config.macros.forEachTiddler.actions[actionName];
	if (!action) {
		this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
		return;
	}

	var actionHandler = action.handler;
	actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};

// ---------------------------------------------------------------------------
//  The actions
// ---------------------------------------------------------------------------

// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;

	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
		return;
	}

	// Perform the action.
	var list = document.createElement("ul");
	place.appendChild(list);
	for (var i = 0; i < tiddlers.length; i++) {
		var tiddler = tiddlers[i];
		var listItem = document.createElement("li");
		list.appendChild(listItem);
		createTiddlyLink(listItem, tiddler.title, true);
	}
};

abego.parseNamedParameter = function(name, parameter, i) {
	var beginExpression = null;
	if ((i < parameter.length) && parameter[i] == name) {
		i++;
		if (i >= parameter.length) {
			throw "Missing text behind '%0'".format([name]);
		}

		return config.macros.forEachTiddler.paramEncode(parameter[i]);
	}
	return null;
}

// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;
	if (p >= parameter.length) {
		this.handleError(place, "Missing expression behind 'write'.");
		return;
	}

	var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
	p++;

	// Parse the "begin" option
	var beginExpression = abego.parseNamedParameter("begin", parameter, p);
	if (beginExpression !== null)
		p += 2;
	var endExpression = abego.parseNamedParameter("end", parameter, p);
	if (endExpression !== null)
		p += 2;
	var noneExpression = abego.parseNamedParameter("none", parameter, p);
	if (noneExpression !== null)
		p += 2;

	// Parse the "toFile" option
	var filename = null;
	var lineSeparator = undefined;
	if ((p < parameter.length) && parameter[p] == "toFile") {
		p++;
		if (p >= parameter.length) {
			this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
			return;
		}

		filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
		p++;
		if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
			p++;
			if (p >= parameter.length) {
				this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
				return;
			}
			lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
			p++;
		}
	}

	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
		return;
	}

	// Perform the action.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
	var count = tiddlers.length;
	var text = "";
	if (count > 0 && beginExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);

	for (var i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		text += func(tiddler, context, count, i);
	}

	if (count > 0 && endExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);

	if (count == 0 && noneExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);


	if (filename) {
		if (lineSeparator !== undefined) {
			lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
			text = text.replace(/\n/mg,lineSeparator);
		}
		saveFile(filename, convertUnicodeToUTF8(text));
	} else {
		var wrapper = createTiddlyElement(place, "span");
		wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);
	}
};


// ---------------------------------------------------------------------------
//  Helpers
// ---------------------------------------------------------------------------

// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
	return {
		place : placeParam,
		whereClause : whereClauseParam,
		sortClause : sortClauseParam,
		sortAscending : sortAscendingParam,
		script : scriptText,
		actionName : actionNameParam,
		actionParameter : actionParameterParam,
		tiddlyWikiPath : tiddlyWikiPathParam,
		inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
		viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result
	};
};

// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
	if (!idPrefix) {
		idPrefix = "store";
	}
	var lenPrefix = idPrefix.length;

	// Read the content of the given file
	var content = loadFile(this.getLocalPath(path));
	if(content === null) {
		throw "TiddlyWiki '"+path+"' not found.";
	}

	var tiddlyWiki = new TiddlyWiki();

	// Starting with TW 2.2 there is a helper function to import the tiddlers
	if (tiddlyWiki.importTiddlyWiki) {
		if (!tiddlyWiki.importTiddlyWiki(content))
			throw "File '"+path+"' is not a TiddlyWiki.";
		tiddlyWiki.dirty = false;
		return tiddlyWiki;
	}

	// The legacy code, for TW < 2.2

	// Locate the storeArea div's
	var posOpeningDiv = content.indexOf(startSaveArea);
	var posClosingDiv = content.lastIndexOf(endSaveArea);
	if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
		throw "File '"+path+"' is not a TiddlyWiki.";
	}
	var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);

	// Create a "div" element that contains the storage text
	var myStorageDiv = document.createElement("div");
	myStorageDiv.innerHTML = storageText;
	myStorageDiv.normalize();

	// Create all tiddlers in a new TiddlyWiki
	// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
	var store = myStorageDiv.childNodes;
	for(var t = 0; t < store.length; t++) {
		var e = store[t];
		var title = null;
		if(e.getAttribute)
			title = e.getAttribute("tiddler");
		if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
			title = e.id.substr(lenPrefix);
		if(title && title !== "") {
			var tiddler = tiddlyWiki.createTiddler(title);
			tiddler.loadFromDiv(e,title);
		}
	}
	tiddlyWiki.dirty = false;

	return tiddlyWiki;
};



// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
//
//	 (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
	var script = context["script"];
	var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
	var fullText = (script ? script+";" : "")+functionText+";theFunction;";
	return eval(fullText);
};

// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
	var result = [];
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
	tiddlyWiki.forEachTiddler(function(title,tiddler) {
		if (func(tiddler, context, undefined, undefined)) {
			result.push(tiddler);
		}
	});
	return result;
};

// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
	var message = "Extra parameter behind '"+actionName+"':";
	for (var i = firstUnusedIndex; i < parameter.length; i++) {
		message += " "+parameter[i];
	}
	this.handleError(place, message);
};

// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {
	var result =
		(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
			? 0
			: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? -1
			   : +1;
	return result;
};

// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {
	var result =
		(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
			? 0
			: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? +1
			   : -1;
	return result;
};

// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
	// To avoid evaluating the sortClause whenever two items are compared
	// we pre-calculate the sortValue for every item in the array and store it in a
	// temporary property ("forEachTiddlerSortValue") of the tiddlers.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
	var count = tiddlers.length;
	var i;
	for (i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
	}

	// Do the sorting
	tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);

	// Delete the temporary property that holds the sortValue.
	for (i = 0; i < tiddlers.length; i++) {
		delete tiddlers[i].forEachTiddlerSortValue;
	}
};


// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
	displayMessage(message);
};

// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
	var message ="<<"+macroName;
	for (var i = 0; i < params.length; i++) {
		message += " "+params[i];
	}
	message += ">>";
	displayMessage(message);
};


// Internal.
//
// Creates an element that holds an error message
//
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
	var message = (exception.description) ? exception.description : exception.toString();
	return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};

// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception) {
	if (place) {
		this.createErrorElement(place, exception);
	} else {
		throw exception;
	}
};

// Internal.
//
// Encodes the given string.
//
// Replaces
//	 "$))" to ">>"
//	 "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
	var reGTGT = new RegExp("\\$\\)\\)","mg");
	var reGT = new RegExp("\\$\\)","mg");
	return s.replace(reGTGT, ">>").replace(reGT, ">");
};

// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
//
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
	// Remove any location part of the URL
	var hashPos = originalPath.indexOf("#");
	if(hashPos != -1)
		originalPath = originalPath.substr(0,hashPos);
	// Convert to a native file format assuming
	// "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
	// "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
	// "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
	// "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
	var localPath;
	if(originalPath.charAt(9) == ":") // pc local file
		localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file
		localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file:///") === 0) // mac/unix local file
		localPath = unescape(originalPath.substr(7));
	else if(originalPath.indexOf("file:/") === 0) // mac/unix local file
		localPath = unescape(originalPath.substr(5));
	else // pc network file
		localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");
	return localPath;
};

// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
	".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
	"forEachTiddler");

//============================================================================
// End of forEachTiddler Macro
//============================================================================


//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
	var n =  prefix.length;
	return (this.length >= n) && (this.slice(0, n) == prefix);
};



//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
	var n = suffix.length;
	return (this.length >= n) && (this.right(n) == suffix);
};


//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
	return this.indexOf(substring) >= 0;
};

//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == item) {
			return i;
		}
	}
	return -1;
};

//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false.
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
	return (this.indexOf(item) >= 0);
};

//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (this.contains(items[i])) {
			return true;
		}
	}
	return false;
};


//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
//
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null]
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (!this.contains(items[i])) {
			return false;
		}
	}
	return true;
};


} // of "install only once"

// Used Globals (for JSLint) ==============
// ... DOM
/*global 	document */
// ... TiddlyWiki Core
/*global 	convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink,
			displayMessage, endSaveArea, hasClass, loadFile, saveFile,
			startSaveArea, store, wikify */
//}}}


[>img[./Images/Book.png][./Documents/ATMRL/08-307.pdf]]
|!Name: |Forest Farming |
|!Author: |J. Sholto Douglas and Robert de J. Hart |
|!Date: |1984 |

[>img[./Images/Book.png][./Documents/forests_in_permaculture.pdf]]
|!Name: |Forests in Permaculture |
|!Author: |Bill Mollison |
|!Date: |1981 |
[>img[./Images/Book.png][./Documents/ATTRA/producerforms.pdf]]
|!Name: |producerforms |
|!Author: |[[ATTRA]] |
|!Date: | |
/%
Image:boyscouts-forty-knots.png
Thumbnail:boyscouts-forty-knots_thumbnail.jpg
%/
[img[./Images/boyscouts-forty-knots_small.jpg][./Images/boyscouts-forty-knots.png]]
[>img[./Images/Book.png][./Documents/forumorganizersguide.pdf]]
|!Name: |Forum Organisers Guide |
|!Author: |Forum Organizing Project |
|!Date: |Dec 2009 |

[>img[./Images/Book.png][./Documents/four_european_energy_futures.pdf]]
|!Name: |Four European energy futures |
|!Author: |J.J.C. Bruggink |
|!Date: |May 2005 |
[>img[./Images/Book.png][./Documents/fowl deeds - food facts.pdf]]
|!Name: |Fowl deeds - food facts |
|!Author: |Alexis Vaughan, Sustain: The alliance for better food and farming  |
|!Date: |1999 |
[>img[./Images/Book.png][./Documents/us_army_cc_en0069_frame_structures.pdf]]
|!Name: |Frame Structures |
|!Author: |US Army Corp of Engineers |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/freeze.pdf]]
|!Name: |freeze |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_freezer_bag_meals.pdf]]
|!Name: |Freezer Bag Meals |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0714 - fresh fruits & vegetables.pdf]]
|!Name: |MD 0714 - Fresh Fruits & Vegetables |
|!Author: |US Army Medical Department |
|!Date: | |
/%
Image:frozen-food-recommended-storage-times.png
Thumbnail:frozen-food-recommended-storage-times_thumbnail.jpg
%/
[img[./Images/frozen-food-recommended-storage-times_small.jpg][./Images/frozen-food-recommended-storage-times.png]]

[>img[./Images/Book.png][./Documents/PracticalAction/fruit_leathers.pdf]]
|!Name: |Fruit Leathers |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/ozarksfruit.pdf]]
|!Name: |ozarksfruit |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/fruit_waste_utilisation.pdf]]
|!Name: |Fruit Waste Utilisation |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc5.pdf]]
|!Name: |Fruit growing in the tropics |
|!Author: |Ed Verheij. Agromisa Foundation |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/PracticalAction/fruit_juice_processing.pdf]]
|!Name: |Fruit juice processing |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/19-417.pdf]]
|!Name: |Fuel from Farms - A Guide to Small Scale Ethanol Production |
|!Author: |Solar Energy Research Institute |
|!Date: |Feb 1980 |
[>img[./Images/Book.png][./Documents/fundamentals_of_organic_agriculture.pdf]]
|!Name: |Fundamentals of Organic Agriculture |
|!Author: |Iowa State University |
|!Date: |May 2003 |
[>img[./Images/Book.png][./Documents/furriers_friend_-_tanning_hides.pdf]]
|!Name: |Furriers Friend - Tanning Hides |
|!Author: |Gottfried F Ott |
|!Date: |1922 |
[>img[./Images/Book.png][./Documents/future_of_mobility.pdf]]
|!Name: |Future of Mobility Roadmap |
|!Author: |University of Oxford |
|!Date: |Jul 2009 |
[>img[./Images/Book.png][./Documents/CAT/gmos-why-all-the-fuss-about-genetically-modified-organisms.pdf]]
|!Name: |GMOs...why all the fuss about genetically modified organisms? |
|!Author: |[[CAT]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/gaia.pdf]]
|!Name: |Gaia's Garden |
|!Author: |Toby Hemenway |
|!Date: |2009 |
 
[>img[./Images/Book.png][./Documents/garden_bumblebees.pdf]]
|!Name: |Garden Bumblebees |
|!Author: |Bumblebee Conservation Trust http://bumblebeeconservation.org |
|!Date: | |
[>img[./Images/Book.png][./Documents/Public/garden_farming.pdf]]
|!Name: |Garden Farming |
|!Author: |Lee Cleaveland Corbett |
|!Date: |1913 |
[>img[./Images/Book.png][./Documents/garden_planning_worksheet.pdf]]
|!Name: |Garden Planning Worksheet |
|!Author: |City Mouse Gardens |
|!Date: | |
[>img[./Images/Book.png][./Documents/gardens_and_health.pdf]]
|!Name: |Gardens and health |
|!Author: |David Buck |
|!Date: |May 2016 |
Geese are the asshole teenagers of the animal world.

They strut around in groups, shit over everything, slowly walk in front of your car like they own the place, and run away squawking when confronted.
[>img[./Images/Book.png][./Documents/USAMD/md 0803 - general chemistry.pdf]]
|!Name: |MD 0803 - General Chemistry |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0510 - general duties of the dental specialist.pdf]]
|!Name: |MD 0510 - General Duties of the Dental Specialist |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/general_principles_for_patios.pdf]]
|!Name: |General Principles for Patios |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/general_principles_for_plots.pdf]]
|!Name: |General Principles for Plots |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/general_-_shelter.pdf]]
|!Name: |General Shelters |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/general_-_general_supplies.pdf]]
|!Name: |General Supplies |
|!Author: |Anonymous |
|!Date: | |
[>img[./Images/Book.png][./Documents/generatorfaq.pdf]]
|!Name: |Generator FAQ |
|!Author: |Steve Dunlop, misc.survivalism |
|!Date: |2001 |
|!Name: |Generator Wattages Guide |
|!Author: |Internet Article |
|!Date: | |

|>|!Household Items |!Running Watts |!Starting Watts |
|>|Automatic Washer | 1,150 | 2,300 |
|Clothes Dryer |Gas | 700 | 1,800 |
|~|Electric | 5,750 | 1,800 |
|>|Coffee Maker | 1,750 | 0  |
|>|Dehumidifier | 650 | 800 |
|Dishwasher |Cool Dry | 700 | 1,400 |
|~|Hot Dry | 1,450 | 1,400 |
|>|Electric Blanket | 400 | 0 |
|>|Electric Fry Pan | 1300 | 0 |
|Electric Range |6-inch element | 1,500 | 0 |
|~|8-inch element | 2,100 | 0 |
|Furnace Fan, gas or fuel |1/8 HP | 300 | 500 |
|~|1/6 HP | 500 | 750 |
|~|1/4 HP | 600 | 1,000 |
|~|1/3 HP | 700 | 1,400 |
|~|1/2 HP | 875 | 2,350 |
|Garage Door Opener |1/4 HP | 300 | 1,000 |
|~|1/3 HP | 725 | 1400 |
|Microwave Oven |625 watts | 625 | 800 |
|>|Refrigerator or Freezer | 700 | 2,200 |
|Toaster |2-slice | 1,050 | 0 |
|~|4-slice | 1,650 | 0 |

|>|!Power Tool Needs |!Running Watts |!Starting Watts |
|Air Compressor |1/2 HP | 1,000 | 2,000 |
|~|1 HP | 1,500 | 4,500 |
|~|1 1/2 HP | 2,200 | 6,000 |
|~|2 HP | 2,800 | 7,700 |
|Bench Grinder |6 inches | 720 | 1,000 |
|~|8 inches | 1,400 | 2,500 |
|~|10 inches | 1,600 | 3,600 |
|Electric Cultivator |1/3 HP | 7,000 | 1,400 |
|Electric Hedge Trimmer |18 inches | 400 | 0 |
|Electric Line Trimmer |Standard, 9 inches | 350 | 0 |
|~|Heavy-duty, 12 inches | 500 | 0 |
|>|Drum Mixer, 55 gallons 1/4 HP | 700 | 1,200 |
|Flood Lights |HID, Metal Halide, Mercury Vapour<br>or Sodium Vapour (Watts per bulb) | 250 | 63 |
|~|~| 400 | 100 |
|~|~| 1,000 | 250 |
|Floor Polisher |16 inches, 3/4 HP | 1,400 | 3,100 |
|~|20 inches, 1 HP | 1,600 | 4,500 |
|Hand Drill |1/4 inch | 350 | 0 |
|~|3/8 inch | 400 | 0 |
|~|1/2 inch | 600 | 0 |
|~|5/8 HP | 900 | 2,700 |
|~|1 HP | 1,200 | 3,600 |
|~|1 1/2 HP | 1,450 | 4,300 |
|High-pressure Washer |3 HP | 3,125 | 9,300 |
|Submersible Pump |400 gph | 200 | 400 |
|Centrifugal Type |900 gph | 500 | 400 |
|Wet and Dry Vac |1.7 HP | 900 | 0 |
|~|2 1/2 HP | 1,300 | 0 |
|Skill Saws, Worm Drive |7 1/4 inches | 1,800 | 2,600 |
|Band Saw |14 inch | 1,100 | 1,400 |
|Circular Saw, Heavy-duty |6 1/2 inches | 800 | 1,200 |
|~|7 1/4 inches | 1,400 | 2,300 |
|~|8 1/4 inches | 1,800 | 3,000 |
|Electric Chainsaw |12 inches, 1/2 HP | 900 | 0 |
|~|14 inches, 2 HP | 1,100 | 0 |
|Table Saws |9 inches | 1,500 | 3,000 |
|~|10 inches | 1,800 | 4,500 |
|Miter Saw |10 amp | 1,100 | 2,000 |
|~|15 amp | 1,650 | 3,000 |
|>|Sawzall | 750 | 1,400 |
|Drills |1/4 inch 3 amps | 300 | 400 |
|~|3/8 inch 4 amps | 440 | 600 |
|~|1/2 inch 5.4 amps | 600 | 900 |

|>|!Motors in General |!Running Watts |!Starting Watts |
|Split Phase |1/8 HP | 300 | 500 |
|~|1/6 HP | 500 | 725 |
|~|1/4 HP | 600 | 1,000 |
|~|1/3 HP | 700 | 1,400 |
|~|1/2 HP | 875 | 2,300 |
|Capacitor Start Induction Run |1/3 HP | 720 | 1,300 |
|~|1/2 HP | 975 | 2,100 |
|~|3/4 HP | 1,400 | 3,100 |
|~|1 HP | 1,600 | 4,500 |
|~|1 1/2 HP | 2,200 | 6,000 |
|~|2 HP | 2,850 | 7,700 |
|~|3 HP | 3,900 | 12,000 |
|~|5 HP | 6,800 | 16,500 |
|Fan Duty |1/8 HP | 400 | 600 |
|~|1/6 HP | 550 | 850 |
|~|1/4 HP | 650 | 1,200 |
|~|1/3 HP | 800 | 1,600 |
|~|1/2 HP | 1,100 | 2,400 |
[>img[./Images/Book.png][./Documents/business_plan_for_a_new_uk_building_material_reuse_centre.pdf]]
|!Name: |Generic Business Plan for a new UK Building Material Reuse Centre |
|!Author: |~BioRegional |
|!Date: |Apr 2008 |
[>img[./Images/Book.png][./Documents/eere pv guide35297.pdf]]
|!Name: |Get your Power from the Sun |
|!Author: |U.S. Department of Energy |
|!Date: |Dec 2003 |
Many of these documents are in the [[Public Domain]]. Either as copyright expired works, or documents that have been publicly released by people and organisations. However quite a few are digital scans of books that I have bought. Whilst technically these should not be scanned, I find that digital versions offer a way of finding and correlating information far easier than simply having them on a bookshelf to skim through. Because I have brought all these many varied works together into a full indexed library, it is very hard to split them up afterwards, though I have made an attempt at flagging the [[Public Domain]] documents. So, whilst the index is made public, the books themselves are not. You are of course, free to hunt around the web for any digital versions that you can find.

Because of the amount of time and effort I have spent in organising this information, I am not simply giving it away. Nor am I selling it. But I am willing to trade access to various parts in return for your help in classifying and categorising the information further.

To take part in this you must have ~DropBox installed. If you do not have it then please [[download and install|https://db.tt/Pxcp90tN]] it. If you install it from this link, it should grant you an additional 500Mb of storage... and should also give me an additional 500Mb too.

Once you have ~DropBox setup, you finally need to fill in the [[form|https://docs.google.com/forms/d/1uo9v7vVgNz1CcFWqnzDAscblWPEJAH0cgiEgGsES8UA]]. After that... expect an email from me.

NB. If your installation does grant me the extra storage space then I shall immediately give you access to all the Public Domain documents in the archive. These will be copied into the shared folder that will be setup. You must remove them from that folder into your own storage (either on-line or off-line) because you cannot receive everything until you do so.

If you do not grant me the extra storage, then you will still receive all of the public documents... but at a rate of one a day.

Instructions for assessing the library documents and thereby gaining access to more of the library will be included within the shared folder.
[>img[./Images/Book.png][./Documents/getting_started_on_your_allotment.pdf]]
|!Name: |Getting started on your allotment |
|!Author: |Westcliff Land Cultivation Society |
|!Date: | |
[>img[./Images/Book.png][./Documents/geyelins_poultry_breeding.pdf]]
|!Name: |Geyelin's Poultry Breeding |
|!Author: |Kennedy Geyelin |
|!Date: |1867 |
[>img[./Images/Book.png][./Documents/PracticalAction/ginger.pdf]]
|!Name: |Ginger |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/ginsgold.pdf]]
|!Name: |ginsgold |
|!Author: |[[ATTRA]] |
|!Date: | |
A collection of acronyms and terms used in this Library as well as the principle suppliers of information.
[>img[./Images/Book.png][./Documents/glutenfreesurvivalguide.pdf]]
|!Name: |Gluten Free Guide |
|!Author: |St. Louis Area Survival Guide |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc7.pdf]]
|!Name: |Goat keeping in the tropics |
|!Author: |Carl Jansen, Kees van den Burg. Agromisa Foundation |
|!Date: |2004 |

[>img[./Images/Book.png][./Documents/ATTRA/goatoverview.pdf]]
|!Name: |goatoverview |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/17-393.pdf]]
|!Name: |Goodbye to the Flush Toilet |
|!Author: |Carol Hupping Stoner |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/ATTRA/grainpro.pdf]]
|!Name: |grainpro |
|!Author: |[[ATTRA]] |
|!Date: | |

[>img[./Images/Book.png][./Documents/grains_education_pack.pdf]]
|!Name: |Grains Education Pack |
|!Author: |Federation of City Farms and Community Gardens |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_grains_and_legumes.pdf]]
|!Name: |Grains and Legumes |
|!Author: |Revelar, Inc. |
|!Date: |9th December 2002 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc25.pdf]]
|!Name: |Granaries |
|!Author: |Martien Hoogland, Peter Holen. Agromisa Foundation |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/PracticalAction/grape_wine.pdf]]
|!Name: |Grape wine |
|!Author: |Intermediate Technology Development Group |
|!Date: | |

[>img[./Images/Book.png][./Documents/ATTRA/grasshopper.pdf]]
|!Name: |grasshopper |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/grasshoppers-tip-sheet.pdf]]
|!Name: |grasshoppers-tip-sheet |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/gravity_flow_water_systems.pdf]]
|!Name: |Gravity Flow Water Systems |
|!Author: |A. Scott Faiia |
|!Date: |1982 |
[>img[./Images/Book.png][./Documents/graywater_design_manual.pdf]]
|!Name: |Graywater Design Manual |
|!Author: |San Francisco Public Utilities Commission |
|!Date: |Jun 2012 |
[>img[./Images/Book.png][./Documents/ATTRA/grazingcontracts.pdf]]
|!Name: |grazingcontracts |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/grazingnetworks.pdf]]
|!Name: |grazingnetworks |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/ghthrips.pdf]]
|!Name: |ghthrips |
|!Author: |[[ATTRA]] |
|!Date: | |
/%
Image:green-building-infographic.jpg
Thumbnail:green-building-infographic_thumbnail.jpg
%/
[img[./Images/green-building-infographic_small.jpg][./Images/green-building-infographic.jpg]]
[>img[./Images/Book.png][./Documents/greeninfrastructure.pdf]]
|!Name: |Green Infrastructure |
|!Author: |Mark A. Benedict, Edward T. ~McMahon |
|!Date: |Oct 2000 |
[>img[./Images/Book.png][./Documents/training_manual_v3-copy.pdf]]
|!Name: |Green Infrastructure Training Manual |
|!Author: |European Centre for Nature Conservation |
|!Date: |2014 |
[>img[./Images/Book.png][./Documents/green_office_guide.pdf]]
|!Name: |Green Office Guide |
|!Author: |City of Portland, Office of Sustainable Development |
|!Date: |Nov 2001 |
[>img[./Images/Book.png][./Documents/green-from-the-ground-up-sustainable-healthy-and-energy-efficient-home-construction.pdf]]
|!Name: |Green from the ground up |
|!Author: |David Johnston & Scott Gibson |
|!Date: |2008 |

[>img[./Images/Book.png][./Documents/ATTRA/ghwhitefly.pdf]]
|!Name: |ghwhitefly |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/gh-aphid.pdf]]
|!Name: |gh-aphid |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/grid_connection.pdf]]
|!Name: |Grid connection |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/groundnut_processing.pdf]]
|!Name: |Groundnut processing |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/grow_a_grocery-guide_to_starting_and_growing_a_wholefood_co-operative.pdf]]
|!Name: |Grow a Grocery - Guide to starting and growing a wholefood co-operative |
|!Author: |Unicorn Grocery Worker Co-operative |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/organicgrowingguide.pdf]]
|!Name: |Grow your own organic food |
|!Author: |Women's Environment Network |
|!Date: |Mar 2006 |
[>img[./Images/Book.png][./Documents/growing_community_food_systems-post_carbon_reader.pdf]]
|!Name: |Growing Community Food Systems |
|!Author: |Erika Allen |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/growing_gourmet_and_medicinal_mushrooms.pdf]]
|!Name: |Growing Gourmet and Medicinal Mushrooms |
|!Author: |Paul Stamets |
|!Date: |1993 |
[>img[./Images/Book.png][./Documents/growing_gourmet_and_medicinal_mushrooms-photos.pdf]]
|!Name: |Growing Gourmet and Medicinal Mushrooms - Photos |
|!Author: |Paul Stamets |
|!Date: |1993 |
[>img[./Images/Book.png][./Documents/grapes - growing grapes in the home fruit planting, hyg-1423-98.pdf]]
|!Name: |Growing Grapes in the Home Fruit Planting |
|!Author: |Gary Gao, Ohio State University |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/growingguide.pdf]]
|!Name: |Growing Guide |
|!Author: |Mark Gatter, First Tunnels |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/food_production_on_housing_estates.pdf]]
|!Name: |Growing Round the Houses: Food production on housing estates |
|!Author: |Sustain www.sustainweb.org |
|!Date: |Jun 2008 |
[>img[./Images/Book.png][./Documents/urban-salad-tipsheet.pdf]]
|!Name: |Growing Salad Leaves: Top Tips for Urban Gardeners |
|!Author: |City Leaf http://www.cityleaf.co.uk |
|!Date: | |
[>img[./Images/Book.png][./Documents/growing vegetable transplants for home gardens (sp291-a).pdf]]
|!Name: |Growing Vegetable Transplants for Home Gardens |
|!Author: |David W. Sams, The University of Tennessee |
|!Date: |1995 |
[>img[./Images/Book.png][./Documents/ATTRA/poultrytoolbox.pdf]]
|!Name: |poultrytoolbox |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_growing_and_harvesting_wheat_by_hand.pdf]]
|!Name: |Growing and Harvesting Wheat by Hand |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/growing_food_in_cities.pdf]]
|!Name: |Growing food in cities |
|!Author: |Tara Garnett, National Food Alliance and the SAFE Alliance |
|!Date: |Jun 1996 |
[>img[./Images/Book.png][./Documents/CAT/growing-year-round.pdf]]
|!Name: |Growing year-round |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/ATTRA/nop_cropguide.pdf]]
|!Name: |nop_cropguide |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/nop_livestockguide.pdf]]
|!Name: |nop_livestockguide |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/nop_processorsguide.pdf]]
|!Name: |nop_processorsguide |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/organicpubs.pdf]]
|!Name: |organicpubs |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/guide_to_bees_and_honey.pdf]]
|!Name: |Guide to Bees and Honey |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/sol1_guide_v9.9.pdf]]
|!Name: |Guide to Building a Solar Concentrator |
|!Author: |Go Sol |
|!Date: |2015 |
[>img[./Images/Book.png][./Documents/guide to spring-planted, cool-season vegetables.pdf]]
|!Name: |Guide to Spring Planted, Cool Season Vegetables |
|!Author: |David W. Sams, The University of Tennessee Institute of Agriculture, |
|!Date: |1996 |
[>img[./Images/Book.png][./Documents/guide to symptoms of plant nutrient deficiencies.pdf]]
|!Name: |Guide to Symptoms of Plant Nutrient Deficiencies |
|!Author: |Shanyn Hosier, University of Arizona |
|!Date: |May 1999 |
[>img[./Images/Book.png][./Documents/guide_to_the_installation_of_pv_systems_2nd_edition.pdf]]
|!Name: |Guide to the installation of PV systems 2nd Edition |
|!Author: |BRE, EA Technology, Halcrow Group, ~SunDog Energy |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/ATMRL/guidlines_for_watershed_managment.pdf]]
|!Name: |Guidelines for Watershed Management |
|!Author: |Food and Agriculture Organization of the United Nations |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/PracticalAction/gundruk.pdf]]
|!Name: |Gundruk (pickled leafy vegetable) |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/handbookoncuttinglamb.pdf]]
|!Name: |Handbook On Cutting Lamb |
|!Author: |National Livestock and Meat Board |
|!Date: | |
[>img[./Images/Book.png][./Documents/3022.pdf]]
|!Name: |Handbook of Biomass Downdraft Gasifier Engine Systems |
|!Author: |Solar Energy Research Institute |
|!Date: |Mar 1988 |
[>img[./Images/Book.png][./Documents/ATMRL/handbook_of_gravity-flow_water_systems.pdf]]
|!Name: |Handbook of Gravity-flow Water Systems |
|!Author: |Thomas Jordan |
|!Date: |Sep 1980 |
[>img[./Images/Book.png][./Documents/handbook of herbs and spices, volume 1 (2001).pdf]]
|!Name: |Handbook of Herbs and Spices, Volume 1 (2001) |
|!Author: |K. V. Peter |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/handbook of herbs and spices, volume 2 (2001).pdf]]
|!Name: |Handbook of Herbs and Spices, Volume 2 (2001) |
|!Author: |K. V. Peter |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/handbook of knots and splices - c. gibson (1963) ww.pdf]]
|!Name: |Handbook of Knots and Splices |
|!Author: |Charles E Gibson |
|!Date: |1963 |
[>img[./Images/Book.png][./Documents/handbook-sustainability-literacy-sample.pdf]]
|!Name: |Handbook of Sustainability Literacy - sample |
|!Author: |Arran Stibbe, Heather Luna |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/storage_of_food_grains_in_the_tropics.pdf]]
|!Name: |Handling and Storage of Food Grains in Tropical and Subtropical Areas |
|!Author: |D.W.Hall |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/33-778.pdf]]
|!Name: |Handloom Construction |
|!Author: |Joan Koster |
|!Date: |1979 |
[>img[./Images/Book.png][./Documents/Public/handyfarmdevices.pdf]]
|!Name: |Handy Farm Devices |
|!Author: |Rolfe Cobleigh |
|!Date: |1912 |
|!Author: |Internet Article |
|!Date: |2002 |

| !Brinell Hardness |>|>| !Rockwell Hardness | !Steel |
| !Tungsten Carbide Ball 3000kg | !A Scale 60kg | !B Scale 100kg | !C Scale 150kg | !Tensile Strength (approx) PSI |
| - | 86 | - | 68 | - |
| - | 85 | - | 68 | - |
| - | 85 | - | 67 | - |
| 767 | 85 | - | 66 | - |
| 757 | 84 | - | 66 | - |
| 745 | 84 | - | 65 | - |
| 733 | 84 | - | 65 | - |
| 722 | 83 | - | 64 | - |
| 712 | - | - | - | - |
| 710 | 83 | - | 63 | - |
| 698 | 83 | - | 62 | - |
| 684 | 82 | - | 62 | - |
| 682 | 82 | - | 62 | - |
| 670 | 82 | - | 61 | - |
| 656 | 81 | - | 60 | - |
| 653 | 81 | - | 60 | - |
| 647 | 81 | - | 60 | - |
| 638 | 81 | - | 59 | 329,000 |
| 630 | 81 | - | 59 | 324,000 |
| 627 | 80 | - | 59 | 323,000 |
| 601 | 80 | - | 57 | 309,000 |
| 578 | 79 | - | 56 | 297,000 |
| 555 | 78 | - | 55 | 285,000 |
| 534 | 78 | - | 54 | 274,000 |
| 514 | 77 | - | 52 | 263,000 |
| 495 | 76 | - | 51 | 253,000 |
| 477 | 76 | - | 50 | 243,000 |
| 461 | 75 | - | 48 | 235,000 |
| 444 | 74 | - | 47 | 225,000 |
| 429 | 73 | - | 46 | 217,000 |
| 415 | 73 | - | 44 | 210,000 |
| 401 | 72 | - | 43 | 202,000 |
| 388 | 71 | - | 42 | 195,000 |
| 375 | 71 | - | 40 | 188,000 |
| 363 | 70 | - | 39 | 182,000 |
| 352 | 69 | - | 38 | 176,000 |
| 341 | 69 | - | 37 | 170,000 |
| 331 | 68 | - | 36 | 166,000 |
| 321 | 68 | - | 34 | 160,000 |
| 311 | 67 | - | 33 | 155,000 |
| 302 | 66 | - | 32 | 150,000 |
| 293 | 66 | - | 31 | 145,000 |
| 285 | 65 | - | 30 | 141,000 |
| 277 | 65 | - | 29 | 137,000 |
| 269 | 64 | - | 28 | 133,000 |
| 262 | 64 | - | 27 | 129,000 |
| 255 | 63 | - | 25 | 126,000 |
| 248 | 62 | - | 24 | 122,000 |
| 241 | 62 | 100 | 23 | 118,000 |
| 235 | 61 | 99 | 22 | 115,000 |
| 229 | 61 | 98 | 20 | 111,000 |
| 223 | - | 97 | 20 | - |
| 217 | - | 96 | 18 | 105,000 |
| 212 | - | 96 | 17 | 102,000 |
| 207 | - | 95 | 16 | 100,000 |
| 201 | - | 94 | 15 | 98,000 |
| 197 | - | 93 | - | 95,000 |
| 192 | - | 92 | - | 93,000 |
| 187 | - | 91 | - | 90,000 |
| 183 | - | 90 | - | 89,000 |
| 179 | - | 89 | - | 87,000 |
| 174 | - | 88 | - | 85,000 |
| 170 | - | 87 | - | 83,000 |
| 167 | - | 86 | - | 81,000 |
| 163 | - | 85 | - | 79,000 |
| 156 | - | 83 | - | 76,000 |
| 149 | - | 81 | - | 73,000 |
| 143 | - | 79 | - | 71,000 |
| 137 | - | 76 | - | 67,000 |
| 131 | - | 74 | - | 65,000 |
| 126 | - | 72 | - | 63,000 |
| 121 | - | 70 | - | 60,000 |
| 116 | - | 68 | - | 58,000 |
| 111 | - | 66 | - | 56,000 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc34.pdf]]
|!Name: |Hatching eggs by hens or in an incubator |
|!Author: |Nico van Wageningen, Johan Meinderts, Puck Bonnier, Henk Kasper. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/CAT/haybox-cookery.pdf]]
|!Name: |Haybox Cookery |
|!Author: |[[CAT]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/hhs_facts_carbohydrates.pdf]]
|!Name: |Health Facts - carbohydrates |
|!Author: |Department of Health and Human Services |
|!Date: | |
[>img[./Images/Book.png][./Documents/hhs_facts_safefood.pdf]]
|!Name: |Health Facts - food safety |
|!Author: |Department of Health and Human Services |
|!Date: | |
[>img[./Images/Book.png][./Documents/hhs_facts_sodium.pdf]]
|!Name: |Health Facts - sodium and potassium |
|!Author: |Department of Health and Human Services |
|!Date: | |
[>img[./Images/Book.png][./Documents/heatpumptrialresults.pdf]]
|!Name: |Heat Pump Trial Results |
|!Author: |Energy Saving Trust |
|!Date: |Sep 2010 |
[>img[./Images/Book.png][./Documents/CAT/heat-pumps.pdf]]
|!Name: |Heat Pumps |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/heat treating faq.pdf]]
|!Name: |Heat Treating FAQ |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/general_-_heat__light_and_power.pdf]]
|!Name: |Heat, Light and Power |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/solar_hot_water_booklet.pdf]]
|!Name: |Heating Water with the Sun |
|!Author: |Brock Dolman and Kate Lundquist, Water Institute |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0853 - hematology i.pdf]]
|!Name: |MD 0853 - Hematology I |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0857 - hematology ii.pdf]]
|!Name: |MD 0857 - Hematology II |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/herbs - harvesting and drying herbs handbook.pdf]]
|!Name: |Herbs - Harvesting And Drying Herbs Handbook |
|!Author: |Mary ~Welch-Keesey |
|!Date: | |
[>img[./Images/Book.png][./Documents/herbs and spices for the home garden h-221.pdf]]
|!Name: |Herbs and Spices for the Home Garden |
|!Author: |George W. Dickerson, New Mexico State University |
|!Date: |Aug 2009 |
[>img[./Images/Book.png][./Documents/ATTRA/gh-herb.pdf]]
|!Name: |gh-herb |
|!Author: |[[ATTRA]] |
|!Date: | |
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.2a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}

Warning: the showWhen and hideWhen macros will blindly eval paramString.
This could be used to execute harmful javascript from a tiddler.

(TODO: Make some effort to sanitize paramString. Perhaps disallow the equals sign?)
***/
//{{{

window.hideWhenLastTest = false;

window.removeElementWhen = function(test,place) {
  window.hideWhenLastTest = test;
  if (test) {
    jQuery(place).empty()
    place.parentNode.removeChild(place);
  }
};

merge(config.macros,{

  hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( eval(paramString), place );
  }},

  showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !eval(paramString), place );
  }},

  hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAll(params), place );
  }},

  showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAll(params), place );
  }},

  hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAny(params), place );
  }},

  showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAny(params), place );
  }},

  hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAll(params), place );
  }},

  showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAll(params), place );
  }},

  hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place );
  }},

  showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place );
  }},

  hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.title == params[0], place );
  }},

  showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.title != params[0], place );
  }},

  'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !window.hideWhenLastTest, place );
  }}

});

//}}}
[>img[./Images/Book.png][./Documents/ATTRA/hightunneltreefruit.pdf]]
|!Name: |hightunneltreefruit |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/hightunnelwintergrowinghrv.pdf]]
|!Name: |hightunnelwintergrowinghrv |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/hightunnelsinurbanagriculture.pdf]]
|!Name: |hightunnelsinurbanagriculture |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/hive_temperature.pdf]]
|!Name: |Hive Temperatures |
|!Author: |W. E. Dunham |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/holistic.pdf]]
|!Name: |holistic |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/homeenergy1.pdf]]
|!Name: |Home Energy Brief 1 - Lighting |
|!Author: |Rocky Mountain Institute |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/homeenergy2.pdf]]
|!Name: |Home Energy Brief 2 - Windows |
|!Author: |Rocky Mountain Institute |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/homeenergy3.pdf]]
|!Name: |Home Energy Brief 3 - Refrigerators and freezers |
|!Author: |Rocky Mountain Institute |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/homeenergy4.pdf]]
|!Name: |Home Energy Brief 4 - Water heating |
|!Author: |Rocky Mountain Institute |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/homeenergy5.pdf]]
|!Name: |Home Energy Brief 5 - Cooking appliances and dishwashers |
|!Author: |Rocky Mountain Institute |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/homeenergy6.pdf]]
|!Name: |Home Energy Brief 6 - Washers, dryers and miscellaneous appliances |
|!Author: |Rocky Mountain Institute |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/homeenergy7.pdf]]
|!Name: |Home Energy Brief 7 - Computers and Peripherals |
|!Author: |Rocky Mountain Institute |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/homeenergy8.pdf]]
|!Name: |Home Energy Brief 8 - Home Cooling |
|!Author: |Rocky Mountain Institute |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/CAT/home-energy-savings.pdf]]
|!Name: |Home Energy Savings |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/fruit - home fruit planting guide.pdf]]
|!Name: |Home Fruit Planting Guide |
|!Author: |David A. Hillock, Oklahoma State University|
|!Date: | |
[>img[./Images/Book.png][./Documents/home_grown-the_case_for_local food_in_a_global_market.pdf]]
|!Name: |home_grown-the_case_for_local food_in_a_global_market |
|!Author: |Brian Halweil |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/general_-_home_heating_in_an_emergency.pdf]]
|!Name: |Home Heating in an Emergency |
|!Author: |Unknown |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/home_honey_production.pdf]]
|!Name: |Home Honey Production |
|!Author: |W. Bielby  |
|!Date: |1977 |
Home Power Magazine is a bi-monthly product detailing the latest in small home power and off-grid energy generation.

NB. These magazines have been edited to remove full page advertising content.
<<include "HomePowerMagazine.html" hide>>
[>img[./Images/Book.png][./Documents/home prepping system - theurbanprepper.pdf]]
|!Name: |Home Prepping System |
|!Author: |The Urban Prepper |
|!Date: | |
[>img[./Images/Book.png][./Documents/home prepping system - food - t1l1.pdf]]
|!Name: |Home Prepping System - Food|
|!Author: |The Urban Prepper |
|!Date: | |
[>img[./Images/Book.png][./Documents/home prepping system - icons - theurbanprepper.pdf]]
|!Name: |Home Prepping System - Icons|
|!Author: |The Urban Prepper |
|!Date: | |
|!Name: |Home Remedies |
|!Author: |Internet Article |
|!Date: | |

!Cooling Blends
!!Recipe 1.)
*1 teaspoon crushed dried rose hips
*1 teaspoon dried peppermint leaves
*1 teaspoon dried sage leaves
*1 cup water, barely boiled
Place the herbs in a teapot. Pour the boiling water over the herbs, cover and steep 10 minutes. Strain and sweeten with honey to taste. Sip slowly while warm. The rose hips deliver a large dose of vitamin C, while peppermint and sage have a cooling effect on the system. This tea is particularly helpful with feverish colds.

!!Recipe 2.)
*1 1/2 cups water
*3 (1/4-inch) slices fresh ginger root, bruised
*1/2 of a fresh lemon
*1 teaspoon honey
*1/4 teaspoon powdered cayenne pepper
Bring water to a boil in a glass or stainless steel pan. Meanwhile, hit each ginger root slice gently with the broad side of a knife to break up the pulp a bit. Put the ginger in the boiling water and simmer uncovered 5 minutes. Meanwhile, Squeeze the juice from the lemon into a cup. Add the honey and cayenne. Strain the ginger tea in to the cup, stir and sip slowly
while hot. NOTE: You may add an ounce of brandy to your bedtime dose to help ease you into sleep.

!Coughing
!!Recipe 1.)
This is a soothing throat remedy for problems brought on by exertion
*1 lemon
*1/2 cup honey
*1 tablespoon glycerin
Cover the entire lemon with water in a small saucepan. Boil for 1 minute. Remove from heat. While still hot, slice the lemon in half and squeeze all the juice into a bowl, removing seeds. Stir in the glycerin and honey. Store the syrup in a sterilized glass bottle, tightly capped, on a shelf. If the syrup becomes too cold, warm it slowly by setting the jar in a pan of warm water. The syrup will keep for up to 2 months.

!!Recipe 2.)
*1/2 lb. flax seed (you can get this at most groceries, especially if they have a non-gluten area)
*1 c. granulated white sugar
*Juice of 6 lemons (can come from a bottle)
*1/2 lb. of honey
Put flax seed in a bag; pout over it 1 1/2 pints of water. Let simmer down to half that amount. Remove from heat and add other ingredients while still hot. Give teaspoonful as often as necessary. Yield: between 1 and 2 pints

!!Recipe 3.)
The ingredients are a combination of spices and nutrients with no unpleasant medicinal side effects -- no drowsiness, no dry mucous membranes, no cautions about using machinery or driving. It soothes an irritated throat and relieves chest congestion and phlegm. It tastes terrible but if you have a persistent cough, it's worth a try.
*1/4 teaspoon cayenne pepper
*1/4 teaspoon ground ginger
*1 Tablespoon honey
*1 Tablespoon apple cider vinegar
*2 Tablespoons water
Mix and take by the teaspoon. Take 3 teaspoons for a bad dry cough
CAUTION: Any cough persisting more than a week, accompanied by headache or fever, and any cough which is productive of thick yellow or green mucous should be evaluated by a physician. One precaution I have read is regarding the honey: Do not give honey to children under 1 year of age unless it is pasteurized or boiled for five minutes. I would not give this mixture to a young child anyway, because the taste is too strong, and a child with a cough should be seen by a pediatrician.

!Diarrhoea
Grate one ripe apple. Allow the pulp to stand at room temperature for several hours until considerably darkened before eating. The oxidized pectin present in the fruit is the same basic ingredient found in Kaopectate brand diarrhea medicine!

!Vomiting
*2 drops peppermint oil
*1/2 cup cool water
Mix and drink.

!Burns
#Soak hand (or where ever) in COLD water for a long time. If the burn is bad, for a long time –
#When the pain (hopefully) is somewhat alleviated, sprinkle or apply pure Lavender essential oil on the burn. May need to be applied several times.
#If the burn still hurts, thickly apply moist clay. Wrap up in a plastic bag or strip of old sheet. If it starts to dry out, sprinkle with water, or change for fresh clay. Bentonite, green clay, kaolin, they all work. Don't mix the clay, get powdered clay, put in a pottery or glass bowl, pour in water, cover with a dish, and let sit, the next day it's ready to use, add more water as need to make a thick slurry. If you only have powdered clay, and you have a burn to deal with, then mix some up, but it's much better to have it always on hand. The pain of burns, scrapes, and other small wounds is immediately relieved with the application of clay, and it greatly speeds healing.

!Cuts and scrapes
Sprinkle turmeric powder on the cut, and then apply a Band-Aid or strip of old sheet. Turmeric speeds healing and is antiseptic.

!Bruises
*1 cup vegetable oil, warmed
*1/2 teaspoon cayenne powder
Mix the cayenne into the oil. One day after the initial injury, (the first day apply ice), gently rub the oil onto the affected area several times a day until the bruise clears. However, make sure you do not apply this to an area with broken skin.

!Cold Remedy and Tonic
Use this regularly as a tonic for general health, or specifically to treat cold symptoms. Increase the amount of cayenne as your tolerance increases - use enough to feel the heat, but not be in pain.
*1 inch-long piece of ginger root
*1 1/4 cups very hot (not boiling) water
*1 round tablespoon lavender flower
*Frozen lemonade concentrate, to taste
*1/4 teaspoon cayenne
Mash the ginger root in a garlic press, then place the juice and pulp into a small glass bowl. Add the hot water and lavender, and steep for 3 to 5 minutes. Strain the liquid into a cup, then add the lemonade concentrate and cayenne.
Drink the entire mixture.
[>img[./Images/Book.png][./Documents/FEMA/sheltr02.pdf]]
|!Name: |Home Shelter - Above Ground Home Shelter |
|!Author: |Federal Emergency Management Agency |
|!Date: |Jun 1980 |
[>img[./Images/Book.png][./Documents/FEMA/sheltr05.pdf]]
|!Name: |Home Shelter - Concrete Block Shelter |
|!Author: |Federal Emergency Management Agency |
|!Date: |May 1980 |
[>img[./Images/Book.png][./Documents/FEMA/sheltr03.pdf]]
|!Name: |Home Shelter - Fallout Shelter |
|!Author: |Federal Emergency Management Agency |
|!Date: |Apr 1980 |
[>img[./Images/Book.png][./Documents/FEMA/sheltr07.pdf]]
|!Name: |Home Shelter - Lean-to Fallout Shelter |
|!Author: |Federal Emergency Management Agency |
|!Date: |Apr 1980 |
[>img[./Images/Book.png][./Documents/FEMA/sheltr01.pdf]]
|!Name: |Home Shelter - Outside Concrete Shelter |
|!Author: |Federal Emergency Management Agency |
|!Date: |Apr 1980 |
[>img[./Images/Book.png][./Documents/FEMA/sheltr06.pdf]]
|!Name: |Home Shelter - Tilt Up Storage Shelter |
|!Author: |Federal Emergency Management Agency |
|!Date: |Apr 1980 |
[>img[./Images/Book.png][./Documents/FEMA/fema232.pdf]]
|!Name: |Homebuilders' Guide to Earthquake Resistant Design and Construction |
|!Author: |FEMA |
|!Date: |Jun 2006 |
[>img[./Images/Book.png][./Documents/homemade fallout meter - kfm model.pdf]]
|!Name: |Homemade Fallout Meter - Kearny Fallout Meter Model |
|!Author: |Book Extract |
|!Date: | |
[>img[./Images/Book.png][./Documents/homemade_solar_cells.pdf]]
|!Name: |Homemade Solar Cells |
|!Author: |Creative Science |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/01_homemade_traps_and_snares.pdf]]
|!Name: |Homemade Traps and Snares |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/home_built_6-volt_wind_electric_plants.pdf]]
|!Name: |Homemade six-volt Wind Electric Plants |
|!Author: |H.F. ~McColly and Foster Buck  |
|!Date: |Jan 1939 |
[>img[./Images/Book.png][./Documents/honey farming.pdf]]
|!Name: |Honey Farming |
|!Author: |R.O.B. Manley |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/honey_processing.pdf]]
|!Name: |Honey processing |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/hoop house construction 01.pdf]]
|!Name: |Hoop House Construction 01 |
|!Author: |Steve Upson |
|!Date: | |
[>img[./Images/Book.png][./Documents/hoop house construction 02.pdf]]
|!Name: |Hoop House Construction 02 |
|!Author: |Steve Upson |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/hooped.pdf]]
|!Name: |hooped |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/hop.pdf]]
|!Name: |hop |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/horizontal_axis_wind_turbines.pdf]]
|!Name: |Horizontal Axis Fast Running Wind Turbines for Developing Countries |
|!Author: |W.A.M. Jansen  |
|!Date: |Jun 1976 |
[>img[./Images/Book.png][./Documents/ATMRL/06-271.pdf]]
|!Name: |Horse Drawn Farm Implements: Part 2 Preparing the Soil  |
|!Author: |John Thompson |
|!Date: |1979 |

[>img[./Images/Book.png][./Documents/CAT/hot-composting-in-converted-chest-freezers.pdf]]
|!Name: |Hot Composting in converted chest freezers |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/ATTRA/localfoods5.pdf]]
|!Name: |localfoods5 |
|!Author: |[[ATTRA]] |
|!Date: | |
 
[>img[./Images/Book.png][./Documents/howstuffworks _how sword making works_.pdf]]
|!Name: |How Sword Making Works |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/how_to_build_a_solar_crop_dryer.pdf]]
|!Name: |How To Build A Solar Crop Dryer |
|!Author: |New Mexico Solar Energy Association |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/how_to_dry_fruits_and_vegetables.pdf]]
|!Name: |How To Dry Fruits And Vegetables |
|!Author: |Action for Food Production |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/how_to_make_a_solar_cabinet_dryer_for.pdf]]
|!Name: |How To Make A Solar Cabinet Dryer For Agricultural Produce |
|!Author: |Brace Research Institute |
|!Date: |Mar 1973 |
[>img[./Images/Book.png][./Documents/ATMRL/how_to_salt_fish.pdf]]
|!Name: |How To Salt Fish |
|!Author: |R. Guillou |
|!Date: |1966 |
[>img[./Images/Book.png][./Documents/metalworking - how to use a lathe.pdf]]
|!Name: |How To Use A Lathe |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/how green are our apples - food facts.pdf]]
|!Name: |How green are our apples - food facts |
|!Author: |Rosemary Hoskins |
|!Date: |1999 |
The Web Page you are looking at is a single page web application, known as a TiddlyWiki.

Each entry is just a small piece of the whole known as a Tiddler. These tiddlers can have tags assigned to them and also link to other tiddlers. Anything in bold is a link to another tiddler. When you click it, the application with open the new tiddler and display it. Or if that tiddler is already open, then it will scroll to that location.

By using the tags, a complete hierarchy can be built up. Alongside of which there are also a selection of other useful features.
[>img[./Images/Book.png][./Documents/organic_flower_gardening.pdf]]
|!Name: |How to Booklet: Organic Flower Gardening |
|!Author: |Creative Homeowner |
|!Date: | |
[>img[./Images/Book.png][./Documents/how_to_build_a_knife.pdf]]
|!Name: |How to Build a Knife |
|!Author: |Jim Small |
|!Date: |1982 |
[>img[./Images/Book.png][./Documents/how_to_compost.pdf]]
|!Name: |How to Compost |
|!Author: |Queensland Government |
|!Date: | |
[>img[./Images/Book.png][./Documents/community_visions_resource_pack.pdf]]
|!Name: |How to Design a Community Vision |
|!Author: |Centre for Community Visions |
|!Date: | |
[>img[./Images/Book.png][./Documents/how to hide anything - michael connor -.pdf]]
|!Name: |How to Hide Anything |
|!Author: |Michael Connor  |
|!Date: | |
[>img[./Images/Book.png][./Documents/digeste.pdf]]
|!Name: |How to Install a Polyethylene Biogas Plant |
|!Author: |Francisco X. Aguilar |
|!Date: |Jan 2011 |
[>img[./Images/Book.png][./Documents/ATMRL/28-721.pdf]]
|!Name: |How to Make Tools |
|!Author: |Per Christiansen and Bernard Zubrowski, Peace Corps |
|!Date: |Jul 1980 |
[>img[./Images/Book.png][./Documents/smallwoods-info-sheet-2.pdf]]
|!Name: |How to Measure Total Timber Volume |
|!Author: |Small Woods - Info Sheet 2 - http://www.smallwoods.org.uk |
|!Date: | |
[>img[./Images/Book.png][./Documents/how-to-plan-contract-and-build-your-own-home-malestrom.pdf]]
|!Name: |How to Plan, Contract and Build your own Home |
|!Author: |Richard M. Scutella, Dave Heberle |
|!Date: |2005 |
N.B. This mostly deals with US Building codes and planning.
[>img[./Images/Book.png][./Documents/how to prepare for any disaster.pdf]]
|!Name: |How to Prepare for Any Disaster |
|!Author: |Emergency Preparedness Center |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/food_-_how_to_render_animal_fat.pdf]]
|!Name: |How to Render Animal Fat |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/howtohousingco-op.pdf]]
|!Name: |How to Set Up a Housing Co-operative |
|!Author: |Radical Routes |
|!Date: |Apr 2010 |
/%
Image:Firewood-2.jpg
Thumbnail:Firewood-2_thumbnail.jpg
%/
[img[./Images/Firewood-2_small.jpg][./Images/Firewood-2.jpg]]
[>img[./Images/Book.png][./Documents/beekeeping_for_free.pdf]]
|!Name: |How to Start Beekeeping for Free! |
|!Author: |Philip Chandler http://www.biobees.com |
|!Date: | |
[>img[./Images/Book.png][./Documents/avoidgettinglost.pdf]]
|!Name: |How to avoid getting lost |
|!Author: |United States Army Training Support Centers |
|!Date: | |
[>img[./Images/Book.png][./Documents/organic_vegetable_gardening_how-to.pdf]]
|!Name: |How to booklet: Organic Vegetable Gardening |
|!Author: |Creative Homeowner |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/how_to_build_a_cretan_sail_wind_pump_for_low_wind_conditions.pdf]]
|!Name: |How to build a Cretan sail wind pump for low wind conditions |
|!Author: |R.D. Mann |
|!Date: | |
[>img[./Images/Book.png][./Documents/how-to-build-a-top-bar-hive.pdf]]
|!Name: |How to build a Top Bar Hive |
|!Author: |P J Chandler |
|!Date: |2013 |

http://www.biobees.com
http://www.naturalbeekeeping.org
[>img[./Images/Book.png][./Documents/how to build a blast shelter.pdf]]
|!Name: |How to build a bomb shelter |
|!Author: |Plans for Dummies |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/wormery_tyre.pdf]]
|!Name: |How to build a wormery using tyres  |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/how_to-reservoir_system_window_farm.pdf]]
|!Name: |How to build your own Window Farm |
|!Author: |windowfarms.org |
|!Date: | |
[>img[./Images/Book.png][./Documents/how_to-three-plant_air_lift_window_farm.pdf]]
|!Name: |How to build your own Window Farm: 3-plant airlift system |
|!Author: |windowfarms.org |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/how_to_construct_a_cheap_wind_machine_for_pumping_water.pdf]]
|!Name: |How to construct a cheap wind machine for pumping water |
|!Author: |Brace Research Institute |
|!Date: |Feb 1973 |
[>img[./Images/Book.png][./Documents/how_to_find_your_way_gta_05-02-013.pdf]]
|!Name: |How to find your way |
|!Author: |Headquarters, Department of the Army |
|!Date: |Feb 2006 |
[>img[./Images/Book.png][./Documents/how to live with electricity.pdf]]
|!Name: |How to live without electricity |
|!Author: |Anita Evangelista |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/how_to_make_a_keyhole_garden_east_african_style.pdf]]
|!Name: |How to make a Keyhole Garden: East African Style |
|!Author: |www.sendacowgifts.org.uk  |
|!Date: | |
[>img[./Images/Book.png][./Documents/how_to_make_a_keyhole_garden_lesotho_style.pdf]]
|!Name: |How to make a Keyhole Garden: Lesotho Style  |
|!Author: |www.sendacowgifts.org.uk |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/how_to_make_a_solar_still__plastic_covered_.pdf]]
|!Name: |How to make a Solar Still (Plastic Covered) |
|!Author: |Brace Research Institute |
|!Date: |Feb 1973 |
[>img[./Images/Book.png][./Documents/CAT/how-to-make-a-tipi.pdf]]
|!Name: |How to make a tipi |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/smallwoods-info-sheet-3.pdf]]
|!Name: |How to mark and measure trees and timber volume for thinning |
|!Author: |Small Woods - Info Sheet 3 - http://www.smallwoods.org.uk |
|!Date: | |
[>img[./Images/Book.png][./Documents/smallwoods-info-sheet-1.pdf]]
|!Name: |How to measure a single broad leaved tree |
|!Author: |Small Woods - Info Sheet 1 - http://www.smallwoods.org.uk |
|!Date: | |
[>img[./Images/Book.png][./Documents/setupaworkerscoop-lowres.pdf]]
|!Name: |How to set up a Workers’ Co-op |
|!Author: |Radical Routes Ltd. |
|!Date: |2012 |
[>img[./Images/Book.png][./Documents/how_to_write_a_business_plan.pdf]]
|!Name: |How to write a Business Plan |
|!Author: |Sunday Times, Brian Finch |
|!Date: | |
[>img[./Images/Book.png][./Documents/business_plans.pdf]]
|!Name: |How to write a Business Plan |
|!Author: |Somerset Co-operative Services CIC |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/human_water_lifters.pdf]]
|!Name: |Human Powered Water Lifters |
|!Author: |[[ITDG]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/Public/humanure_handbook_third_edition.pdf]]
|!Name:|The Humanure Handbook|
|!Author: |Joseph Jenkins |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/humanure_instruction_manual.pdf]]
|!Name: |Humanure instruction manual |
|!Author: |Joseph Jenkins |
|!Date: | |
[>img[./Images/Book.png][./Documents/Public/waksman_humus.pdf]]
|!Name: |Humus |
|!Author: |Selman A Waksman |
|!Date: |1936 |
[>img[./Images/Book.png][./Documents/PracticalAction/4f6c7d31-6c44-4e45-8a05-29530ae4f5bb.pdf]]
|!Name: |Hydraulic Lime |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/530486a3-9e94-4122-bf5b-0a200a000075.pdf]]
|!Name: |Hydraulic Ram Pumps |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/CAT/hydraulic-ram.pdf]]
|!Name: |Hydraulic ram |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/PracticalAction/hydraulic_ram_pumps.pdf]]
|!Name: |Hydraulic ram pumps |
|!Author: |Intermediate Technology Development Group |
|!Date: | |

[>img[./Images/Book.png][./Documents/ATMRL/hydropower.pdf]]
|!Name: |Hydropower |
|!Author: |Andrew ~MacKillop  |
|!Date: |1983 |
[>img[./Images/Book.png][./Documents/medical_-_hypochorites.pdf]]
|!Name: |Hypochlorites |
|!Author: |Book Extract |
|!Date: | |
[>img[./Images/Book.png][./Documents/us army - iet soldier's handbook tp 600-4.pdf]]
|!Name: |IET Soldier's Handbook |
|!Author: |US Army |
|!Date: |Oct 2003 |
[>img[./Images/Book.png][./Documents/isi-501-e.pdf]]
|!Name: |~ISI-501 Series Off Grid Solar Inverter User Manual |
|!Author: |Mean Well |
|!Date: |Mar 2014 |
The Intermediate Technology Development Group was founded, in 1966 by radical economist EF Schumacher and a group of like-minded colleagues. This later came to be renamed as [[Practical Action]] in 2005.
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc28.pdf]]
|!Name: |Identification of Crop Damage |
|!Author: |Joep van Lidth de Jeude. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/us marine corps - imagery intelligence (imint) mcwp 2-15.4.pdf]]
|!Name: |Imagery Intelligence |
|!Author: |US Marine Corps |
|!Date: |Sep 2002 |
[>img[./Images/Book.png][./Documents/USAMD/md 0587 - immunizations & environmental injuries.pdf]]
|!Name: |MD 0587 - Immunizations & Environmental Injuries |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0846 - immunohematology & blood banking ii.pdf]]
|!Name: |MD 0846 - Immunohematology & Blood Banking II |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/51-improving_lowland_rice_cultivation.pdf]]
|!Name: |Improving lowland rice cultivation |
|!Author: |Bert Meertens, Michiel de Vries |
|!Date: |2014 |
[>img[./Images/Book.png][./Documents/food_-_improvised_grain_mill.pdf]]
|!Name: |Improvised Grain Mill |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/improvised munitions handbook.pdf]]
|!Name: |Improvised Munitions Handbook |
|!Author: |Internet Article |
|!Date: | |
<<include "reference.html" noRefresh>>
[>img[./Images/Book.png][./Documents/increasing_collaboration_between_farmers_and_local_communities.pdf]]
|!Name: |Increasing collaboration between farmers and local communities |
|!Author: |SPA Future Thinking |
|!Date: |Jul 2012 |

[>img[./Images/Book.png][./Documents/united_states_marine_mcrp_3-02e_-_17_november.pdf]]
|!Name: |Individual's Guide for Understanding and Surviving Terrorism |
|!Author: |United States Marine Corps |
|!Date: |Nov 1999 |

[>img[./Images/Book.png][./Documents/infinisolar-2kw3kw-manual.pdf]]
|!Name: |Infini Solar - Hybrid PV Inverter |
|!Author: |Infini Solar |
|!Date: | |
<<forEachTiddler
where
	'tiddler.tags.contains("Infographic")'
sortBy
	'tiddler.title'
write
	'"|[["+tiddler.title+
		"]]|[img[./Images/" + store.getTiddlerSlice(tiddler.title,"Thumbnail") +
		"][./Images/" + store.getTiddlerSlice(tiddler.title,"Image") +
		"]]|\n" '
	begin
		'"|!Title|!Link|\n"'
>>
[>img[./Images/Book.png][./Documents/strawbaleguide.pdf]]
|!Name: |Information Guide to Straw Bale Building |
|!Author: |Amazon Nails |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/artech house information hiding techniques.pdf]]
|!Name: |Information Hiding Techniques for Steganography and Digital Watermarking|
|!Author: |Stefan Katzenbeisser and Fabien A. P. Petitcolas |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/injurious plants gta 08-05-055.pdf]]
|!Name: |Injurious Plants |
|!Author: |Headquarters, Department of the Army|
|!Date: |Feb 1994 |
[>img[./Images/Book.png][./Documents/USAMD/md 0811 - inpatient dispensing.pdf]]
|!Name: |MD 0811 - Inpatient Dispensing |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/insect_pest_management_for_organic_crops.pdf]]
|!Name: |Insect Pest Management for Organic Crops |
|!Author: |Vegetable Research and Information Centre, University of California |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/insects and related pests of house plants (pb1157).pdf]]
|!Name: |Insects and Related Pests of House Plants |
|!Author: |Frank A. Hale, The University of Tennessee |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/laminate installation guide.pdf]]
|!Name: |Installing ~Uni-Solar laminate solar panels |
|!Author: |Midsummer Energy |
|!Date: | |
/***
|Name:|InstantTimestampPlugin|
|Description:|A handy way to insert timestamps in your tiddler content|
|Version:|1.0.10a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#InstantTimestampPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
If you enter {ts} in your tiddler content (without the spaces) it will be replaced with a timestamp when you save the tiddler. Full list of formats:
* {ts} or {t} -> timestamp
* {ds} or {d} -> datestamp
* !ts or !t at start of line -> !!timestamp
* !ds or !d at start of line -> !!datestamp
(I added the extra ! since that's how I like it. Remove it from translations below if required)
!!Notes
* Change the timeFormat and dateFormat below to suit your preference.
* See also http://mptw2.tiddlyspot.com/#AutoCorrectPlugin
* You could invent other translations and add them to the translations array below.
***/
//{{{

config.InstantTimestamp = {

  // adjust to suit
  timeFormat: 'DD/0MM/YY 0hh:0mm',
  dateFormat: 'DD/0MM/YY',

  translations: [
    [/^!ts?$/img,  "'!!{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
    [/^!ds?$/img,  "'!!{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"],

    // thanks Adapted Cat
    [/\{ts?\}(?!\}\})/ig,"'{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
    [/\{ds?\}(?!\}\})/ig,"'{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"]

  ],

  excludeTags: [
    "noAutoCorrect",
    "noTimestamp",
    "html",
    "CSS",
    "css",
    "systemConfig",
    "systemConfigDisabled",
    "zsystemConfig",
    "Plugins",
    "Plugin",
    "plugins",
    "plugin",
    "javascript",
    "code",
    "systemTheme",
    "systemPalette"
  ],

  excludeTiddlers: [
    "StyleSheet",
    "StyleSheetLayout",
    "StyleSheetColors",
    "StyleSheetPrint"
    // more?
  ]

};

TiddlyWiki.prototype.saveTiddler_mptw_instanttimestamp = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {

  tags = tags ? tags : []; // just in case tags is null
  tags = (typeof(tags) == "string") ? tags.readBracketedList() : tags;
  var conf = config.InstantTimestamp;

  if ( !tags.containsAny(conf.excludeTags) && !conf.excludeTiddlers.contains(newTitle) ) {

    var now = new Date();
    var trans = conf.translations;
    for (var i=0;i<trans.length;i++) {
      newBody = newBody.replace(trans[i][0], eval(trans[i][1]));
    }
  }

  // TODO: use apply() instead of naming all args?
  return this.saveTiddler_mptw_instanttimestamp(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
}

// you can override these in StyleSheet
setStylesheet(".ts,.ds { font-style:italic; }","instantTimestampStyles");

//}}}
[>img[./Images/Book.png][./Documents/CAT/insulation.pdf]]
|!Name: |Insulation |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/03-012.pdf]]
|!Name: |Integrated ~Agri-Aquaculture Systems |
|!Author: |G. J. Gooley and F. M. Gavine, Rural Industries Research and Development Corporation |
|!Date: |Feb 2003 |
[>img[./Images/Book.png][./Documents/ATTRA/greenhouseipm.pdf]]
|!Name: |greenhouseipm |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/integrating_livestock.pdf]]
|!Name: |integrating_livestock |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0575 - integumentary system.pdf]]
|!Name: |MD 0575 - Integumentary System |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/interest-and-inflation-free-money.pdf]]
|!Name: |Interest and Inflation Free Money |
|!Author: |Margrit Kennedy |
|!Date: |1995 |
Entries tagged as InternetArticle have no verifiable source. They are simply copied from various web pages, often without any verifiable author. They may also be good candidates for having the document content taken out of the PDF and inserted directly into the Library.
[>img[./Images/Book.png][./Documents/USAMD/md 0553 - intravenous infusions & related tasks.pdf]]
|!Name: |MD 0553 - Intravenous Infusions & Related Tasks |
|!Author: |US Army Medical Department |
|!Date: | |
!Welcome to the Document Library.

Having an off-line <<tag Library>> of useful documentation is a good resource for anybody to have. Although there are numerous "libraries" around the 'Net on prepper and permaculture websites, none seem comprehensive enough to cover all aspects of the off-grid life.

This <<tag Library>> comprises of about 2,400 documents totalling nearly 10Gb of space, covering a wide range of subjects relating to off-grid living, animal husbandry, self-sustainability, medicine, permaculture, prepping and small holding. The documents come from many different sources around the web, some are digital copies of books that I personally own. Some are simple image scans of documents (MicroFiche) whilst others are [[Internet Articles|InternetArticle]] lifted directly from web pages. Some are from [[Military]] sources.

Because this library has a large index, some entries may take a while to open as it computes the document hierarchy. If the browser appears to stop with an error saying that an action is taking a long time, please just accept that it's doing a lot of work and be patient.

@@color:#ff0000;Just to be clear... this is the Public Index to the articles. No actual documents are accessible.@@ See about [[Getting Access to the Library]].

!Categories

The <<tag Library>> is broken up into hierarchical sections. Some of the more popular sections are listed directly in the Header above. Here is a full list.
|>| <<tiddler ./Animals>> |>| <<tiddler ./Business>> |>| <<tiddler ./Crafts>> |
|>| <<tiddler ./Energy>> |>| <<tiddler ./Food>> |>| <<tiddler ./House>> |
|>| <<tiddler ./LandManagement>> |>| <<tiddler ./Medical>> |>| <<tiddler ./Survival>> |
|>|>| <<tiddler ./Transport>> |>|>| <<tiddler ./Water>> |

<<forEachTiddler
    where
        'tiddler.tags.contains("Unsorted")'
    write
        '(index < 10) ? "|"+(index+1)+"|[["+tiddler.title+"]]|\n" : ""'
        begin '"\n"+count+" [[Unsorted]] entries found in the database.\n|!#|!Title|\n"'
        end ''
        none ''
>>
Useful links:
*[[How this system works]]
*[[Infographic]]
*[[Glossary]]
*[[Tiddlywiki Reference]]
*[[ForExport]]


<part Animals hidden>[img[./Images/icons-animals.jpg][Animals]]
[[Animals]]</part>
<part Business hidden>[img[./Images/icons-business.jpg][Business]]
[[Business]]</part>
<part Crafts hidden>[img[./Images/icons-crafts.jpg][Crafts]]
[[Crafts]]</part>
<part Energy hidden>[img[./Images/icons-energy.jpg][Energy]]
[[Energy]]</part>
<part Food hidden>[img[./Images/icons-food.jpg][Food]]
[[Food]]</part>
<part House hidden>[img[./Images/icons-house.jpg][House]]
[[House]]</part>
<part LandManagement hidden>[img[./Images/icons-landmanagement.jpg][Land Management]]
[[Land Management]]</part>
<part Medical hidden>[img[./Images/icons-medical.jpg][Medical]]
[[Medical]]</part>
<part Survival hidden>[img[./Images/icons-survival.jpg][Survival]]
[[Survival]]</part>
<part Transport hidden>[img[./Images/icons-transport.jpg][Transport]]
[[Transport]]</part>
<part Water hidden>[img[./Images/icons-water.jpg][Water]]
[[Water]]</part>
[>img[./Images/Book.png][./Documents/remotepowerintro.pdf]]
|!Name: |Introduction To Remote (~Off-Grid) Power Systems |
|!Author: |Solar Wind Works |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0809 - introduction to compounding.pdf]]
|!Name: |MD 0809 - Introduction to Compounding |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/introduction_to_goat_keeping.pdf]]
|!Name: |Introduction to Goat Keeping |
|!Author: |Animal Welfare Foundation http://www.bva-awf.org.uk |
|!Date: |Dec 2012 |
[>img[./Images/Book.png][./Documents/introduction to iv administration pl 02-005-13.pdf]]
|!Name: |Introduction to IV Administration |
|!Author: |Prepper Link |
|!Date: |2013 |
[>img[./Images/Book.png][./Documents/introduction to medical kits.pdf]]
|!Name: |Introduction to Medical Kits |
|!Author: |Prepperlink |
|!Date: |2012 |
[>img[./Images/Book.png][./Documents/USAMD/md 0008 - introduction to military preventive medicine.pdf]]
|!Name: |MD 0008 - Introduction to Military Preventive Medicine |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/introduction_to_permaculture-mollison.pdf]]
|!Name: |Introduction to Permaculture |
|!Author: |Bill Mollison |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/USAMD/md 0910 - introduction to practical nursing.pdf]]
|!Name: |MD 0910 - Introduction to Practical Nursing |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0064 - introduction to radiography.pdf]]
|!Name: |MD 0064 - Introduction to Radiography |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0923 - introduction to the operating room.pdf]]
|!Name: |MD 0923 - Introduction to The Operating Room |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/blacksmith - iron melting cupola furnaces - for the small foundry (2000) - stephen chastain.pdf]]
|!Name: |Iron Melting Cupola Furnaces - For The Small Foundry |
|!Author: |Stephen Chastain |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/ATTRA/irrigpasturestipsheet.pdf]]
|!Name: |irrigpasturestipsheet |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/medical_-_isolation_planning.pdf]]
|!Name: |Isolation Planning |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/israeli protected space shelters.pdf]]
|!Name: |Israeli Protected Space shelters |
|!Author: |Israel Defence Force |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/jams_jellies_marmalades.pdf]]
|!Name: |Jams, jellies and marmalade |
|!Author: |Intermediate Technology Development Group |
|!Date: | |

[>img[./Images/Book.png][./Documents/japanese katana terminology.pdf]]
|!Name: |Japanese Katana Terminology |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/jean-pain-design-guide-3.pdf]]
|!Name: |Jean Pain Design Guide |
|!Author: |The Compost Power Network |
|!Date: | |
The following list describes some potential types of steel used for common junkyard items. This information was compiled from several sources, Machinery's Handbook, Country Blacksmith, Blacksmith's Journal and Carpenter Technology Corp. Machinery's Handbook is an excellent source for heat treatment of these steels.
|!APPLICATION | !Number | !Letter |
|Agricultural steel | 1080 ||
|Axels | 1040 ||
|Ball Bearing Balls | 52100 ||
|Ball Bearing Races | 52100 ||
|Band Saw Blades  ||  L-6  |
|Bits, Router  ||  M2  |
|Bolts, anchor | 1040 ||
|Bolts, heat treated | 2330 | |
|Bolts, heavy duty | 4815 |  |
|Brake Lever | 1030  | |
|Cams  ||  A6, 57  |
|Chisels  ||  O2, O6, L6  |
|Clutch disk | 1070 ||
|Clutch Springs | 1060  ||
|Coil Springs, auto | 4063   ||
|Coil Springs, truck | 5160  ||
|Cold-rolled steel | 1070   ||
|Connecting Rods | 1040  ||
|Crankshafts | 1045  ||
|Cutters, Bolt ||   S2, S7  |
|Drifts  ||  L6, S2, S7  |
|Drills ||   M2  |
|End Mills ||   M2  |
|Fan Blades | 1020  ||
|Files || W-2  |
|Gear shift levers | 1030   ||
|Gears, transmission | 3115   ||
|Hammers ||   L6  |
|Harrow Disk | 1080 ||
|Hay Rake Teeth | 1095   ||
|Jackhammer Bits  || S-5 |
|Knives, machine ||  M2 |
|Knives, woodworking ||  O2 |
|Leaf Springs | 1085, 5160 ||
|Lock Washer | 1060 ||
|Mauls ||  L6, S2 |
|Mower knives | 1085 ||
|Music Wire | 1085 ||
|Nail Sets  || L6 |
|Plow Beams  | 1070 ||
|Plow Disk | 1080  ||
|Plow Shares | 1080 ||
|Pneumatic Tools ||  L6, A6, S7 |
|Punches - Cold ||  A2, O2 |
|Reamers ||  M2, O2, A2 |
|Roller Bearings | 4815 ||
|Screw Drivers  ||  L6, S2 |
|Snap Rings | 1060 ||
|Spring Clips | 1060 ||
|Spring Steel, clock | 1095 ||
|Steering Arm Bolts | 3130 ||
|Steering Arms | 4042 ||
|Taps ||  M2, 02 |
|Transmission Shafts | 4140 ||
|Tubing | 1040 ||
|Universal Joints | 1145 ||
|Valve Springs | 1060 ||
|Wrenches || L6, S2 |
This information was complied by the North Texas Blacksmiths Association. ABANA chapters may freely use it in their publications. Please credit NTBA, http://www.ntxba.org
[>img[./Images/Book.png][./Documents/homeenergy_20-1_feature.pdf]]
|!Name: |Just How Big Is a 2kW Photovoltaic System? |
|!Author: |Kurt Scheuermann (Extract from Home Energy Magazine) |
|!Date: |Feb 2003 |
[>img[./Images/Book.png][./Documents/ATMRL/02-60.pdf]]
|!Name: |Kampungan - a collection of indigenous Indonesian Technologies |
|!Author: |Craig Thorburn |
|!Date: |Jun 1982 |
[>img[./Images/Book.png][./Documents/food_-_keeping_food_safe_during_an_emergency.pdf]]
|!Name: |Keeping Food Safe During an Emergency |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/free-keeping-goats-quick-start-guide.pdf]]
|!Name: |Keeping Goats - Quick Start Guide |
|!Author: |http://www.raisinggoatsguide.com |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_raising_rabbits.pdf]]
|!Name: |Keeping Rabbits |
|!Author: |National Department of Agriculture |
|!Date: |1998 |

[>img[./Images/Book.png][./Documents/keylinearticle.pdf]]
|!Name: |Keyline Design (Mark IV) |
|!Author: |Abe Collins, Darren J. Doherty |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/keystosuccess.pdf]]
|!Name: |keystosuccess |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/knife-makers-vise.pdf]]
|!Name: |Knife Makers Vice |
|!Author: |Steve Bloom |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/general_-_knife_sharpening.pdf]]
|!Name: |Knife Sharpening |
|!Author: |Internet Article |
|!Date: | |

[>img[./Images/Book.png][./Documents/knots by andrew adamides.pdf]]
|!Name: |Knots - an illustrated practical guide |
|!Author: |Andrew Adamides  |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/ATMRL/knots_for_mountaineering__camping__climbing_.pdf]]
|!Name: |Knots for Mountaineering, Camping, Climbing, Utility and Rescue |
|!Author: |Phil D. Smith |
|!Date: |1983 |
[>img[./Images/Book.png][./Documents/5155.pdf]]
|!Name: |Kyocera Solar Photovoltaic Power Modules |
|!Author: |Kyocera Corporation |
|!Date: | |
[>img[./Images/Book.png][./Documents/la_fire_department_emergency_preparedness.pdf]]
|!Name: |LA Fire Department Emergency Preparedness |
|!Author: |Los Angeles Fire Department |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/led lighting project (pl 05-001-13).pdf]]
|!Name: |LED Lighting Project |
|!Author: |Prepper link |
|!Date: |2013 |
Low Impact Living Initiative.
http://www.lowimpact.org
[>img[./Images/Book.png][./Documents/ATTRA/labelrouge.pdf]]
|!Name: |labelrouge |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0368 - laboratory centrifuge.pdf]]
|!Name: |MD 0368 - Laboratory Centrifuge |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/lambcutguide.pdf]]
|!Name: |lambcutguide |
|!Author: |[[ATTRA]] |
|!Date: | |

[>img[./Images/Book.png][./Documents/landscape design & planting (us army tm 5-803-13).pdf]]
|!Name: |Landscape Design & Planting |
|!Author: |Departments of the Army and Air Force |
|!Date: |Aug 1988 |
[>img[./Images/Book.png][./Documents/landscape plants that attract birds.pdf]]
|!Name: |Landscape Plants That Attract Birds |
|!Author: |Scott R Craven, University of Wisconsin |
|!Date: | |
[>img[./Images/Book.png][./Documents/large mobile solar power system 05-003-13.pdf]]
|!Name: |Large Mobile Solar Power System |
|!Author: |Prepper Link |
|!Date: |2013 |
[>img[./Images/Book.png][./Documents/general_-_last_minute_preparations.pdf]]
|!Name: |Last Minute Preparations |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/lavender.pdf]]
|!Name: |lavender |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/leaf-miners-tip-sheet.pdf]]
|!Name: |leaf-miners-tip-sheet |
|!Author: |[[ATTRA]] |
|!Date: | |
/%
Image:leafshapes.jpg
Thumbnail:leafshapes_thumbnail.jpg
%/
[img[./Images/leafshapes_small.jpg][./Images/leafshapes.jpg]]
[>img[./Images/Book.png][./Documents/ATTRA/legal_guide_on_farm_events.pdf]]
|!Name: |legal_guide_on_farm_events |
|!Author: |[[ATTRA]] |
|!Date: | |
/***
|Name:|LessBackupsPlugin|
|Description:|Intelligently limit the number of backup files you create|
|Version:|3.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
|Author:|Simon Baird|
|Email:|simon.baird@gmail.com|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Description
You end up with just backup one per year, per month, per weekday, per hour, minute, and second.  So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array
!!Notes
Works in IE and Firefox only.  Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.
***/
//{{{

var MINS  = 60 * 1000;
var HOURS = 60 * MINS;
var DAYS  = 24 * HOURS;

if (!config.lessBackups) {
  config.lessBackups = {
    // comment out the ones you don't want or set config.lessBackups.modes in your 'tweaks' plugin
    modes: [
      //["YYYY",  365*DAYS], // one per year for ever
      //["MMM",   31*DAYS],  // one per month
      //["ddd",   7*DAYS],   // one per weekday
      //["d0DD",  1*DAYS],   // one per day of month
      //["h0hh",  24*HOURS], // one per hour
      //["m0mm",  1*HOURS],  // one per minute
      //["s0ss",  1*MINS],   // one per second
      ["latest",0]         // always keep last version. (leave this).
    ]
  };
}

window.getSpecialBackupPath = function(backupPath) {

  var now = new Date();

  var modes = config.lessBackups.modes;

  for (var i=0;i<modes.length;i++) {

    // the filename we will try
    var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
        '$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')

    // open the file
    try {
      if (config.browser.isIE) {
        var fsobject = new ActiveXObject("Scripting.FileSystemObject")
        var fileExists  = fsobject.FileExists(specialBackupPath);
        if (fileExists) {
          var fileObject = fsobject.GetFile(specialBackupPath);
          var modDate = new Date(fileObject.DateLastModified).valueOf();
        }
      }
      else {
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        file.initWithPath(specialBackupPath);
        var fileExists = file.exists();
        if (fileExists) {
          var modDate = file.lastModifiedTime;
        }
      }
    }
    catch(e) {
      // give up
      return backupPath;
    }

    // expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
    // June file on disk that's more than an month old then it must be stale so overwrite
    // note that "latest" should be always written because the expiration period is zero (see above)
    var expiry = new Date(modDate + modes[i][1]);
    if (!fileExists || now > expiry)
      return specialBackupPath;
  }
}

// hijack the core function
window.getBackupPath_mptw_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
  return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));
}

//}}}

[>img[./Images/Book.png][./Documents/ATTRA/life_cycle_assessment.pdf]]
|!Name: |life_cycle_assessment |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/4f76e68f-0c14-4488-92be-1d6b0ae4f5bb.pdf]]
|!Name: |Lime - An introduction |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/4f76d41b-4840-4f6a-b0c9-79c00ae4f5bb.pdf]]
|!Name: |Lime Kiln Designs |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/lime_marmalade.pdf]]
|!Name: |Lime Marmalade |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/lime_cordial.pdf]]
|!Name: |Lime juice clear cordial |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/lime_juice.pdf]]
|!Name: |Lime juice small-scale production |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/lime_oil_and_juice.pdf]]
|!Name: |Lime oil and juice |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/limits-to-growth-digital-scan-version_1.pdf]]
|!Name: |Limits to Growth |
|!Author: |Donella H. Meadows, Dennis L. Meadows, Jorgen Randers, William W. Behrens Ill |
|!Date: |1972 |
[>img[./Images/Book.png][./Documents/food_-_food-borne_illnesses.pdf]]
|!Name: |List of Food Borne Illnesses |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/local_food-benefits_obstacles_and_opportunities.pdf]]
|!Name: |Local Food; benefits, obstacles and opportunities |
|!Author: |Sustain www.sustainweb.org |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/9712201589_content.pdf]]
|!Name: |Local Tradition meets Modern Know-How |
|!Author: |Joyce Gorsuch, International Rice Research Institute |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/ATMRL/local_experience_of_micro_hydro_tech.pdf]]
|!Name: |Local experience of micro hydro technology |
|!Author: |Ueli Meier |
|!Date: |1981 |
[>img[./Images/Book.png][./Documents/ATTRA/localenergyfacilities.pdf]]
|!Name: |localenergyfacilities |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/london_community_compost_strategy.pdf]]
|!Name: |London Community Compost Strategy |
|!Author: |London Community Recycling Network |
|!Date: |May 2005 |
[>img[./Images/Book.png][./Documents/ATMRL/low_cost_wind_turbine_for_developing_nations.pdf]]
|!Name: |Low cost wind turbine for developing nations |
|!Author: |Harmut Bossel |
|!Date: |1976 |
[>img[./Images/Book.png][./Documents/ATMRL/pour-flush_water-seal_latrines_in_india.pdf]]
|!Name: |Low-Cost Pour-Flush Waterseal Latrines in India |
|!Author: |A.K. Roy |
|!Date: |1984 |
[>img[./Images/Book.png][./Documents/ATMRL/low-cost_passive_solar_greenhouses.pdf]]
|!Name: |Low-cost Passive Solar Greenhouses |
|!Author: |Ron Alward and Andy Shapiro, ed. by Jon Sesso  |
|!Date: |1980 |
[>img[./Images/Book.png][./Documents/low-cost plastic-tube biogas digesters.pdf]]
|!Name: |Low-cost Plastic-tube Biogas Digesters |
|!Author: |John Furze |
|!Date: |1997 |
[[Home|Introduction]]
[[House]]
[[Energy]]
[[Land Management]]
[[Food]]
[[Medical]]
[[Survival]]
[>img[./Images/Book.png][./Documents/ATTRA/maintaining_pumps.pdf]]
|!Name: |maintaining_pumps |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/fire_-_making_charcoal.pdf]]
|!Name: |Making Charcoal |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/fire_-_by_can.pdf]]
|!Name: |Making Fire with a can |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/making_links-a_toolkit_for_local_food_projects.pdf]]
|!Name: |Making Links - A toolkit for local food projects |
|!Author: |Jacqui Webster and Tim Lobstein, Sustain |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/making_local_food_work-influencing_consumer_buying_behaviour.pdf]]
|!Name: |Making Local Food Work |
|!Author: |Making Local Food Work |
|!Date: |Dec 2010 |
[>img[./Images/Book.png][./Documents/general_-_making_soap.pdf]]
|!Name: |Making Soap |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/CAT/making-use-of-grey-water-in-the-garden.pdf]]
|!Name: |Making Use of Greywater in the Garden |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/making_western_agriculture_more_sustainable.pdf]]
|!Name: |Making Western Agriculture more Sustainable |
|!Author: |Folke Günther |
|!Date: | |
[>img[./Images/Book.png][./Documents/how_to_self-watering_container.pdf]]
|!Name: |Making a self watering container or Earthbox |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/32-769.pdf]]
|!Name: |Making and using a Solar Wax Melter |
|!Author: |Robert Parsons |
|!Date: |Nov 1975 |
[>img[./Images/Book.png][./Documents/making and using solar food dryer.pdf]]
|!Name: |Making and using solar food dryer |
|!Author: |[[Home Power Magazine]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/making_the_best_of_basics.pdf]]
|!Name: |Making the best of basics |
|!Author: |James Talmage Stevens |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/ATTRA/managedgraze.pdf]]
|!Name: |managedgraze |
|!Author: |[[ATTRA]] |
|!Date: |Jun 2003 |
[>img[./Images/Book.png][./Documents/management_of_asthma.pdf]]
|!Name: |Management of Asthma |
|!Author: |Federal Bureau of Prisons |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/USAMD/md 0542 - management of patients with respiratory dysfunctions.pdf]]
|!Name: |MD 0542 - Management of Patients with Respiratory Dysfunctions |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/managing_internal_parasites.pdf]]
|!Name: |managing_internal_parasites |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/parasite_success_stories.pdf]]
|!Name: |parasite_success_stories |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/insurance_guide_2015.pdf]]
|!Name: |insurance_guide_2015 |
|!Author: |Farm Commons |
|!Date: |Jun 2015 |
[>img[./Images/Book.png][./Documents/ATMRL/manual_for_rural_water_supply.pdf]]
|!Name: |Manual for Rural Water Supply |
|!Author: |Swiss Center for Appropriate Technology  |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/manual_for_water_systems_and_pipe_works.pdf]]
|!Name: |manual_for_water_systems_and_pipe_works |
|!Author: |Andreas Bachmann and Nirman Joshi |
|!Date: |Jun 1980 |
[>img[./Images/Book.png][./Documents/Public/solar_box_cookers.pdf]]
|!Name: |Manual for solar box cookers |
|!Author: |Technology For Life, Finland |
|!Date: |1998 |
[>img[./Images/Book.png][./Documents/map-reading-and-navigation-us-army-fm-21-26.pdf]]
|!Name: |Map Reading and Land Navigation |
|!Author: |Headquarters, Department of the Army |
|!Date: |Jul 2001 |
[>img[./Images/Book.png][./Documents/usmc_water_survival_course.pdf]]
|!Name: |Marine Combat Water Survival |
|!Author: |[[United States Marine Corps]] |
|!Date: |January 2003 |
[>img[./Images/Book.png][./Documents/ATTRA/manuremarketing.pdf]]
|!Name: |manuremarketing |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc26.pdf]]
|!Name: |Marketing for small-scale producers |
|!Author: |Ad de veld. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/PracticalAction/marshmallows.pdf]]
|!Name: |Marshmallows |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/us marine corps - martial arts mcrp 3-02b.pdf]]
|!Name: |Martial Arts |
|!Author: |US Marine Corps |
|!Date: |Feb 1999 |
[>img[./Images/Book.png][./Documents/masonry_stove_plans.pdf]]
|!Name: |Masonry Stove |
|!Author: |Missouri Department of Natural Resources |
|!Date: | |
[>img[./Images/Book.png][./Documents/general_-_mass_casualty_planning_and_burial.pdf]]
|!Name: |Mass Casualty Planning and Burial |
|!Author: |Cremation Association of North America |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/matching_of_wind_motors_to_low_power_electric_generators.pdf]]
|!Name: |Matching of wind motors to low power electric generators |
|!Author: |H.J. Hengeve, E.H. Lysen, and L.M.M. Paulissen |
|!Date: |Dec 1978 |
[>img[./Images/Book.png][./Documents/smallwoods-info-sheet-4.pdf]]
|!Name: |Measuring Felled Timber and Estimating Value |
|!Author: |Small Woods - Info Sheet 4 - http://www.smallwoods.org.uk|
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/irrigation_water.pdf]]
|!Name: |irrigation_water |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/meatgoat.pdf]]
|!Name: |meatgoat |
|!Author: |[[ATTRA]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/ATTRA/meatplants.pdf]]
|!Name: |meatplants |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/sheet metal - mechanics of sheet metal forming.pdf]]
|!Name: |Mechanics of Sheet Metal Forming |
|!Author: |Z. Marciniak, J.L. Duncan, S.J. Hu |
|!Date: |1992 |
For immediate medical attention, see [[First Aid]].

[>img[./Images/Book.png][./Documents/medical clinic (pl 02-004-12).pdf]]
|!Name: |Medical Clinic |
|!Author: |Prepper Link |
|!Date: |2012 |
[>img[./Images/Book.png][./Documents/medical_-_medical_emergencies.pdf]]
|!Name: |Medical Emergencies |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/medfaq.pdf]]
|!Name: |Medical Frequently Asked Questions |
|!Author: |Internet Article |
|!Date: |Sep 1997 |
[>img[./Images/Book.png][./Documents/medicinal plants in folktradition -  an ethnobotany of britain and ireland.pdf]]
|!Name: |Medicinal Plants in Folk Tradition -  An Ethnobotany of Britain and Ireland |
|!Author: |David E. Allen |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/medicinal plants of the world, vol 3 (humana, 2005.pdf]]
|!Name: |Medicinal Plants of the World, vol 3 |
|!Author: |Ivan A Ross |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/sheetmetal - mensuration for the sheet metal worker (1912).pdf]]
|!Name: |Mensuration for the Sheet Metal Worker |
|!Author: |William Nuebecker |
|!Date: |1912 |
[>img[./Images/Book.png][./Documents/USAMD/md 0586 - mental health.pdf]]
|!Name: |MD 0586 - Mental Health |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/sheetmetal - metal spinning tutorial.pdf]]
|!Name: |Metal Spinning Tutorial |
|!Author: |Peter Rubin Fletter |
|!Date: |Oct 1995 |
[>img[./Images/Book.png][./Documents/PracticalAction/4f770c70-13cc-47cc-9efe-40380ae4f5bb.pdf]]
|!Name: |Methods for testing Lime in the field |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/TinyHousePlans/micro-gambrel-v1-.pdf]]
|!Name: |Micro Gambrel v1 |
|!Author: |Tinyhousedesign.com |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/micro_hydro-civil_engeneering_aspects.pdf]]
|!Name: |Micro Hydro: civil engineering aspects |
|!Author: |D. Mansell, G. Atkins, and S. Kiek |
|!Date: |Sep 1975 |
[>img[./Images/Book.png][./Documents/ATMRL/micro_hydro_elecric_power.pdf]]
|!Name: |Micro hydro electric power |
|!Author: |Ray Holland |
|!Date: |1983 |
[>img[./Images/Book.png][./Documents/micro_hydro_power.pdf]]
|!Name: |Micro hydro power |
|!Author: |termediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/micro_hydro_power-reviewing_an_old_concept.pdf]]
|!Name: |Micro hydro power - reviewing an old concept |
|!Author: |Ron Alward, Sherry Eisenbart, and John Volkman |
|!Date: |1979 |
[>img[./Images/Book.png][./Documents/ATMRL/micro_hydro_power_scheems_in_nepal.pdf]]
|!Name: |Micro hydro power schemes in Nepal |
|!Author: |Allen Inversin  |
|!Date: |Oct 1982 |
[>img[./Images/Book.png][./Documents/ATMRL/micro_hydro_power_scheems_in_pakistan.pdf]]
|!Name: |Micro hydropower schemes in Pakistan |
|!Author: |Allen Inversin |
|!Date: |Dec 1981 |
[>img[./Images/Book.png][./Documents/ATMRL/micro_hydropower_source_book.pdf]]
|!Name: |Micro hydropower source book |
|!Author: |Allen R. Inversin |
|!Date: |1986 |
[>img[./Images/Book.png][./Documents/ATTRA/biogas.pdf]]
|!Name: |biogas |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/microhydropower_handbook_1.pdf]]
|!Name: |Microhydropower handbook 1 |
|!Author: |EG&G Idaho for the U.S. Dept. of Energy  |
|!Date: |Jan 1983 |
Documents flagged as MicroFiche means that the contents of said documents are probably images rather than text. Either they have been taken from true MicroFiche archives, or they are books which have been scanned. Such documents cannot be searched textually. Ideally in the future these documents could be transcribed and made searchable, but this would need a lot of man power.
[>img[./Images/Book.png][./Documents/ATMRL/microhydropower_handbook_2.pdf]]
|!Name: |microhydropower_handbook_2 |
|!Author: |EG&G Idaho for the U.S. Dept. of Energy |
|!Date: |Jan 1983 |
[>img[./Images/Book.png][./Documents/midwives_full_book.pdf]]
|!Name: |Midwives |
|!Author: |Susan Klein, Suellen Miller, and Fiona Thomson |
|!Date: |2010 |
[>img[./Images/Book.png][./Documents/migraine-2005-0323.pdf]]
|!Name: |Migraines |
|!Author: |Grand Rounds Presentation, The University of Texas Medical Branch, Dept. of Otolaryngology |
|!Date: |Mar 2005 |
Entries which are tagged [[Military]] are document which have been issued to the Armed Forces of various Nations. Most notably the United States and United Kingdom.
[>img[./Images/book.png][./Documents/USAMD/md 0160 - military water supply.pdf]]
|!Name: |MD 0160 - Military Water Supply |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/micro_hydro_power_stations.pdf]]
|!Name: |Mini hydro power stations |
|!Author: |The Unido Technology Programme  |
|!Date: |1981 |
[>img[./Images/Book.png][./Documents/PracticalAction/mixed_fruit_juice.pdf]]
|!Name: |Mixed fruit juice - ~Small-Scale Manufacture |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/final-report-aepc.pdf]]
|!Name: |Model Biogas Plant |
|!Author: |Model Biogas Plant, Nepal |
|!Date: |Sep 2013 |
[>img[./Images/Book.png][./Documents/model chicken manual.pdf]]
|!Name: |Model Chicken manual |
|!Author: |Lohmann GB Ltd. |
|!Date: | |
[>img[./Images/Book.png][./Documents/weaponscaching.pdf]]
|!Name: |Modern Weapons Caching |
|!Author: |Ragnar Benson |
|!Date: |1990 |
[>img[./Images/Book.png][./Documents/Public/modern_women_of_america_cookbook.pdf]]
|!Name: |Modern women of America cook book |
|!Author: |Anna Clair Vangalder |
|!Date: |1913 |
[>img[./Images/Book.png][./Documents/ATMRL/more_water_for_arid_lands.pdf]]
|!Name: |More Water for Arid Lands |
|!Author: |Advisory Committee on Technology Innovation |
|!Date: |1974 |
[>img[./Images/Book.png][./Documents/Public/mostforyourmoney00browrich.pdf]]
|!Name: |Most for your money cook book |
|!Author: |Cora, Rose and Bob Brown |
|!Date: |1938 |
/%
Image:ultimate-guide-to-mould-removal.jpg
Thumbnail:ultimate-guide-to-mould-removal_thumbnail.jpg
%/
[img[./Images/ultimate-guide-to-mould-removal_small.jpg][./Images/ultimate-guide-to-mould-removal.jpg]]
[>img[./Images/Book.png][./Documents/us_army_cc_in0494_mountaineering_techniques_.pdf]]
|!Name: |Mountaineering Techniques (Advanced) |
|!Author: |United States Army Infantry School |
|!Date: | |
[>img[./Images/Book.png][./Documents/us_army_cc_in0486_mountaineering_techniques_.pdf]]
|!Name: |Mountaineering Techniques (Basic) |
|!Author: |United States Army Infantry School |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/cashcropping.pdf]]
|!Name: |cashcropping |
|!Author: |[[ATTRA]] |
|!Date: | |
Name: MptwBlue
Background: #fff
Foreground: #000
PrimaryPale: #cdf
PrimaryLight: #57c
PrimaryMid: #114
PrimaryDark: #012
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

//{{{
// Pretty sure this is incomplete and experimental
// TODO: Fix it or remove it.

(function($){

merge(config.macros,{
  mptwCollapse: {
    handler: function(place,macroName,params) {
      createTiddlyButton(place, params[0] == '+' ? '\u25AD' : '\u25AC', 'collapse/uncollapse', function(){
        $(story.findContainingTiddler(place)).toggleClass('collapsed');
      });
    }
  }
});

/* this doesn't work unless you have a modified ViewTempate */
config.shadowTiddlers["MptwCollapsePluginStyles"] = ""
  +".collapsed .uncollapsedView { display:none;       }"
  +".collapsedView              { display:none;       }"
  +".collapsed .collapsedView   { display:block;      }"
  +".tiddler.collapsed          { padding-bottom:1em; }"
  +".tiddler.collapsed .title   { font-size:100%;     }"
;

store.addNotification("MptwCollapsePluginStyles",refreshStyles);

})(jQuery);

//}}}
/***
|Name:|MptwConfigPlugin|
|Description:|Miscellaneous tweaks used by MPTW|
|Version:|1.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
!!Note: instead of editing this you should put overrides in MptwUserConfigPlugin
***/
//{{{
var originalReadOnly = readOnly;
var originalShowBackstage = showBackstage;

config.options.chkHttpReadOnly = true;  // means web visitors can experiment with your site by clicking edit
readOnly = false;                        // needed because the above doesn't work any more post 2.1 (??)
showBackstage = true;                    // show backstage for same reason

config.options.chkInsertTabs = true;     // tab inserts a tab when editing a tiddler
config.views.wikified.defaultText = "";  // don't need message when a tiddler doesn't exist
config.views.editor.defaultText = "";    // don't need message when creating a new tiddler

config.options.chkSaveBackups = true;         // do save backups
config.options.txtBackupFolder = 'twbackup';  // put backups in a backups folder

config.options.chkAutoSave = (window.location.protocol == "file:"); // do autosave if we're in local file

config.mptwVersion = "2.7.3";

config.macros.mptwVersion={handler:function(place){wikify(config.mptwVersion,place);}};

if (config.options.txtTheme == '')
  config.options.txtTheme = 'MptwTheme';

// add to default GettingStarted
config.shadowTiddlers.GettingStarted += "\n\nSee also [[MPTW]].";

// add select theme and palette controls in default OptionsPanel
config.shadowTiddlers.OptionsPanel = config.shadowTiddlers.OptionsPanel.replace(/(\n\-\-\-\-\nAlso see \[\[AdvancedOptions\]\])/, "{{select{<<selectTheme>>\n<<selectPalette>>}}}$1");

// these are used by ViewTemplate
config.mptwDateFormat = 'DD/MM/YY';
config.mptwJournalFormat = 'Journal DD/MM/YY';

//}}}
Name: MptwSmoke
Background: #fff
Foreground: #000
PrimaryPale: #aaa
PrimaryLight: #777
PrimaryMid: #111
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

|Name|~MptwStandard|
|Description|Mptw Theme with the default ~TiddlyWiki PageLayout and Styles|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|Name|MptwTheme|
|Description|Mptw Theme including custom PageLayout|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|

http://mptw.tiddlyspot.com/#MptwTheme ($Rev: 1829 $)

!PageTemplate
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
	<div class='headerShadow'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
	<div class='headerForeground'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
</div>
<!-- horizontal MainMenu -->
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
<!-- original MainMenu menu -->
<!-- <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> -->
<div id='sidebar'>
	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->

!ViewTemplate
<!--{{{-->
<div class="uncollapsedView">
[[MptwTheme##ViewTemplateToolbar]]

<div class="tagglyTagged" macro="tags"></div>

<div class='titleContainer'>
	<span class='title' macro='view title'></span>
	<span macro="miniTag"></span>
</div>

<div class='subtitle'>
	(updated <span macro='view modified date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>
	by <span macro='view modifier link'></span>)
	<!--
	(<span macro='message views.wikified.createdPrompt'></span>
	<span macro='view created date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>)
	-->
</div>

<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
	<div class='viewer'><pre macro='view text'></pre></div>
</div>
<div macro="else">
	<div class='viewer' macro='view text wikified'></div>
</div>

<div class="tagglyTagging" macro="tagglyTagging"></div>
</div>
<div class="collapsedView">
	<span class='toolbar'>
		<span macro='toolbar closeTiddler'></span>
		<span macro='mptwCollapse +'></span>
	</span>
	<span class='title' macro='view title'></span>
</div>

<!--}}}-->

!ViewTemplateToolbar
<!--{{{-->
<div class='toolbar'>
	<span macro="showWhenTagged systemConfig">
		<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>
	</span>
	<span macro="showWhenTagged systemTheme"><span macro="applyTheme"></span></span>
	<span macro="showWhenTagged systemPalette"><span macro="applyPalette"></span></span>
	<span macro="showWhen tiddler.tags.contains('css') || tiddler.title == 'StyleSheet'"><span macro="refreshAll"></span></span>
	<span style="padding:1em;"></span>
	<span macro='toolbar closeTiddler closeOthers +editTiddler deleteTiddler > fields syncing permalink references jump'></span>
	<!--span macro='mptwCollapse -'></span-->
</div>
<!--}}}-->

!EditTemplate
<!--{{{-->
<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler closeOthers -cancelTiddler cancelCloseTiddler deleteTiddler"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div macro='annotations'></div>
<div class="editLabel">Content</div><div class="editor" macro="edit text"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>
<!--}}}-->

!StyleSheet
/*{{{*/

/* a contrasting background so I can see where one tiddler ends and the other begins */
body {
	background: [[ColorPalette::TertiaryLight]];
}

/* sexy colours and font for the header */
.headerForeground {
	color: [[ColorPalette::PrimaryPale]];
}
.headerShadow, .headerShadow a {
	color: [[ColorPalette::PrimaryMid]];
}

/* separate the top menu parts */
.headerForeground, .headerShadow {
	padding: 1em 1em 0;
}

.headerForeground, .headerShadow {
	font-family: 'Trebuchet MS', sans-serif;
	font-weight:bold;
}
.headerForeground .siteSubtitle {
	color: [[ColorPalette::PrimaryLight]];
}
.headerShadow .siteSubtitle {
	color: [[ColorPalette::PrimaryMid]];
}

/* make shadow go and down right instead of up and left */
.headerShadow {
	left: 1px;
	top: 1px;
}

/* prefer monospace for editing */
.editor textarea, .editor input {
	font-family: 'Consolas', monospace;
	background-color:[[ColorPalette::TertiaryPale]];
}


/* sexy tiddler titles */
.title {
	font-size: 250%;
	color: [[ColorPalette::PrimaryLight]];
	font-family: 'Trebuchet MS', sans-serif;
}

/* more subtle tiddler subtitle */
.subtitle {
	padding:0px;
	margin:0px;
	padding-left:1em;
	font-size: 90%;
	color: [[ColorPalette::TertiaryMid]];
}
.subtitle .tiddlyLink {
	color: [[ColorPalette::TertiaryMid]];
}

/* a little bit of extra whitespace */
.viewer {
	padding-bottom:3px;
}

/* don't want any background color for headings */
h1,h2,h3,h4,h5,h6 {
	background-color: transparent;
	color: [[ColorPalette::Foreground]];
}

/* give tiddlers 3d style border and explicit background */
.tiddler {
	background: [[ColorPalette::Background]];
	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
	margin-bottom: 1em;
	padding:1em 2em 2em 1.5em;
}

/* make options slider look nicer */
#sidebarOptions .sliderPanel {
	border:solid 1px [[ColorPalette::PrimaryLight]];
}

/* the borders look wrong with the body background */
#sidebar .button {
	border-style: none;
}

/* this means you can put line breaks in SidebarOptions for readability */
#sidebarOptions br {
	display:none;
}
/* undo the above in OptionsPanel */
#sidebarOptions .sliderPanel br {
	display:inline;
}

/* horizontal main menu stuff */
#displayArea {
	margin: 1em 15.7em 0em 1em; /* use the freed up space */
}
#topMenu br {
	display: none;
}
#topMenu {
	background: [[ColorPalette::PrimaryMid]];
	color:[[ColorPalette::PrimaryPale]];
}
#topMenu {
	padding:2px;
}
#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
	margin-left: 0.5em;
	margin-right: 0.5em;
	padding-left: 3px;
	padding-right: 3px;
	color: [[ColorPalette::PrimaryPale]];
	font-size: 115%;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover {
	background: [[ColorPalette::PrimaryDark]];
}

/* make 2.2 act like 2.1 with the invisible buttons */
.toolbar {
	visibility:hidden;
}
.selected .toolbar {
	visibility:visible;
}

/* experimental. this is a little borked in IE7 with the button
 * borders but worth it I think for the extra screen realestate */
.toolbar { float:right; }

/* fix for TaggerPlugin. from sb56637. improved by FND */
.popup li .tagger a {
   display:inline;
}

/* makes theme selector look a little better */
#sidebarOptions .sliderPanel .select .button {
  padding:0.5em;
  display:block;
}
#sidebarOptions .sliderPanel .select br {
	display:none;
}

/* make it print a little cleaner */
@media print {
	#topMenu {
		display: none ! important;
	}
	/* not sure if we need all the importants */
	.tiddler {
		border-style: none ! important;
		margin:0px ! important;
		padding:0px ! important;
		padding-bottom:2em ! important;
	}
	.tagglyTagging .button, .tagglyTagging .hidebutton {
		display: none ! important;
	}
	.headerShadow {
		visibility: hidden ! important;
	}
	.tagglyTagged .quickopentag, .tagged .quickopentag {
		border-style: none ! important;
	}
	.quickopentag a.button, .miniTag {
		display: none ! important;
	}
}

/* get user styles specified in StyleSheet */
[[StyleSheet]]

/*}}}*/

/***
|Description:|A place to put your config tweaks so they aren't overwritten when you upgrade MPTW|
See http://www.tiddlywiki.org/wiki/Configuration_Options for other options you can set. In some cases where there are clashes with other plugins it might help to rename this to zzMptwUserConfigPlugin so it gets executed last.
***/
//{{{

// example: set your preferred date format
//config.mptwDateFormat = 'MM/0DD/YY';
//config.mptwJournalFormat = 'Journal MM/0DD/YY';

// example: set the theme you want to start with
//config.options.txtTheme = 'MptwRoundTheme';

// example: switch off autosave, switch on backups and set a backup folder
//config.options.chkSaveBackups = true;
//config.options.chkAutoSave = false;
//config.options.txtBackupFolder = 'backups';

// uncomment to disable 'new means new' functionality for the new journal macro
//config.newMeansNewForJournalsToo = false;

//}}}
[>img[./Images/Book.png][./Documents/PracticalAction/4f7855e6-3618-4081-97e9-056c1661b3dc.pdf]]
|!Name: |Mud as a Mortar |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/5110df27-5b44-4243-920e-37c50a310b36.pdf]]
|!Name: |Mud plasters and renders |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/multispecies.pdf]]
|!Name: |multispecies |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/muscovy_ducks.pdf]]
|!Name: |Muscovy Ducks |
|!Author: |F. Bauer |
|!Date: |1983 |
[>img[./Images/Book.png][./Documents/music_festival_composting_toliets.pdf]]
|!Name: |Music Festival Composting Toliets |
|!Author: |Joe Jenkins |
|!Date: |Jul 2008 |
[>img[./Images/Book.png][./Documents/mycelium_running.pdf]]
|!Name: |Mycelium Running |
|!Author: |Paul Stamets |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/USAMD/md 0859 - mycology.pdf]]
|!Name: |MD 0859 - Mycology |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_mylar_bag_sealing_methods.pdf]]
|!Name: |Mylar Bag Sealing Methods |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/nasa - alternative fuels and their potential impact on aviation.pdf]]
|!Name: |NASA - alternative fuels and their potential impact on aviation |
|!Author: |NASA |
|!Date: |Oct 2006 |
[>img[./Images/Book.png][./Documents/ATTRA/all_marketing_tip_sheets.pdf]]
|!Name: |all_marketing_tip_sheets |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/national_gardening_leave.pdf]]
|!Name: |National Gardening Leave |
|!Author: |Andrew Simms & Molly Conisbee |
|!Date: |Oct 2012 |
[>img[./Images/Book.png][./Documents/ATTRA/compliance.pdf]]
|!Name: |compliance |
|!Author: |[[ATTRA]] |
|!Date: |June 2003 |
[>img[./Images/Book.png][./Documents/ATTRA/organic_handlers.pdf]]
|!Name: |organic_handlers |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/nat_ag_winter_wheat_in_n_europe_by_marc_bonfils.pdf]]
|!Name: |Natural Agriculture: Winter Wheat in Northern Europe According to the Fukuoka-Bonifils Method |
|!Author: |Marc Bonfils |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/livestock_feasibility.pdf]]
|!Name: |livestock_feasibility |
|!Author: |Jeff Schahczenski, [[ATTRA]] |
|!Date: |Feb 2009 |
[>img[./Images/Book.png][./Documents/ATMRL/17-395.pdf]]
|!Name: |Natural Sewage Recycling Systems |
|!Author: |Maxwell M Small |
|!Date: |Jan 1977 |
[>img[./Images/Book.png][./Documents/natural_cell_size.pdf]]
|!Name: |Natural cell size |
|!Author: |Eric Zeissloff (Translated by David Heaf) |
|!Date: | |
[>img[./Images/Book.png][./Documents/diaci_nature_based_forestry.pdf]]
|!Name: |Nature Based Forestry in Central Europe |
|!Author: |Jurij Diaci |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/ki0215162enn_002.pdf]]
|!Name: |~Nature-Based Solutions and ~Re-Naturing Cities |
|!Author: |European Commission |
|!Date: |2015 |

[>img[./Images/Book.png][./Documents/ATTRA/nematode.pdf]]
|!Name: |nematode |
|!Author: |[[ATTRA]] |
|!Date: | |

[>img[./Images/Book.png][./Documents/biogas-construction-manual.pdf]]
|!Name: |Nepal Biogas Plant - Construction Manual |
|!Author: |Sundar Bajgain |
|!Date: |Sep 1994 |
[>img[./Images/Book.png][./Documents/ATTRA/new_markets.pdf]]
|!Name: |new_markets |
|!Author: |[[ATTRA]] |
|!Date: | |
/***
|Name:|NewHerePlugin|
|Description:|Creates the new here and new journal macros|
|Version:|3.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.macros, {
  newHere: {
    handler: function(place,macroName,params,wikifier,paramString,tiddler) {
      wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
    }
  },
  newJournalHere: {
    handler: function(place,macroName,params,wikifier,paramString,tiddler) {
      wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
    }
  }
});

//}}}
/***
|Name:|NewMeansNewPlugin|
|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Version:|1.1.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/empty.html#NewMeansNewPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Note: I think this should be in the core
***/
//{{{

// change this or set config.newMeansNewForJournalsToo it in MptwUuserConfigPlugin
if (config.newMeansNewForJournalsToo == undefined) config.newMeansNewForJournalsToo = true;

String.prototype.getNextFreeName = function() {
  numberRegExp = / \(([0-9]+)\)$/;
  var match = numberRegExp.exec(this);
  if (match) {
  var num = parseInt(match[1]) + 1;
    return this.replace(numberRegExp," ("+num+")");
  }
  else {
    return this + " (1)";
  }
}

config.macros.newTiddler.checkForUnsaved = function(newName) {
  var r = false;
  story.forEachTiddler(function(title,element) {
    if (title == newName)
      r = true;
  });
  return r;
}

config.macros.newTiddler.getName = function(newName) {
  while (store.getTiddler(newName) || config.macros.newTiddler.checkForUnsaved(newName))
    newName = newName.getNextFreeName();
  return newName;
}


config.macros.newTiddler.onClickNewTiddler = function()
{
  var title = this.getAttribute("newTitle");
  if(this.getAttribute("isJournal") == "true") {
    title = new Date().formatString(title.trim());
  }

  // ---- these three lines should be the only difference between this and the core onClickNewTiddler
  if (config.newMeansNewForJournalsToo || this.getAttribute("isJournal") != "true")
    title = config.macros.newTiddler.getName(title);

  var params = this.getAttribute("params");
  var tags = params ? params.split("|") : [];
  var focus = this.getAttribute("newFocus");
  var template = this.getAttribute("newTemplate");
  var customFields = this.getAttribute("customFields");
  if(!customFields && !store.isShadowTiddler(title))
    customFields = String.encodeHashMap(config.defaultCustomFields);
  story.displayTiddler(null,title,template,false,null,null);
  var tiddlerElem = story.getTiddler(title);
  if(customFields)
    story.addCustomFields(tiddlerElem,customFields);
  var text = this.getAttribute("newText");
  if(typeof text == "string")
    story.getTiddlerField(title,"text").value = text.format([title]);
  for(var t=0;t<tags.length;t++)
    story.setTiddlerTag(title,tags[t],+1);
  story.focusTiddler(title,focus);
  return false;
};

//}}}
[>img[./Images/Book.png][./Documents/nine_meals_from_anarchy.pdf]]
|!Name: |Nine Meals from Anarchy |
|!Author: |New Economics Foundation |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/ATTRA/bauer_no_till.pdf]]
|!Name: |bauer_no_till |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/brown_ranch_casestudy.pdf]]
|!Name: |brown_ranch_casestudy |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/miller_no_till.pdf]]
|!Name: |miller_no_till |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/richter_no_till.pdf]]
|!Name: |richter_no_till |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/nongmodairytransition.pdf]]
|!Name: |nongmodairytransition |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc30.pdf]]
|!Name: |Non-chemical crop protection |
|!Author: |Piet Scheepens, Rik Hoevers. Agromisa Foundation |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc39.pdf]]
|!Name: |Non-timber forest products |
|!Author: |Tinde van Andel. Agromisa Foundation |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/af article2.pdf]]
|!Name: |Not Seeing the Forest for the Trees |
|!Author: |Chris Evans |
|!Date: | |

[>img[./Images/Book.png][./Documents/nuclear_power-climate_fix_or_folly.pdf]]
|!Name: |Nuclear Power: Climate Fix or Folly? |
|!Author: |Amory B. Lovins, Imran Sheikh, and Alex Markevich |
|!Date: |2008 |

[>img[./Images/Book.png][./Documents/USAMD/md 0917 - nursing care related to the cardiovascular & respiratory systems.pdf]]
|!Name: |MD 0917 - Nursing Care Related to the Cardiovascular & Respiratory Systems |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0918 - nursing care related to the gastrointestinal & urinary systems.pdf]]
|!Name: |MD 0918 - Nursing Care Related to the Gastrointestinal & Urinary Systems |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0916 - nursing care related to the musculoskeletal system.pdf]]
|!Name: |MD 0916 - Nursing Care Related to the Musculoskeletal System |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0919 - nursing care related to the sensory & neurological systems.pdf]]
|!Name: |MD 0919 - Nursing Care Related to the Sensory & Neurological Systems |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0915 - nursing care of the surgical patient.pdf]]
|!Name: |MD 0915 - Nursing Care of the Surgical Patient |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0905 - nursing fundamentals i.pdf]]
|!Name: |MD 0905 - Nursing Fundamentals I |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0906 - nursing fundamentals ii.pdf]]
|!Name: |MD 0906 - Nursing Fundamentals II |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/nutmeg_mace.pdf]]
|!Name: |Nutmeg and Mace |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/nutrientcycling.pdf]]
|!Name: |nutrientcycling |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/nutrient_mgmt.pdf]]
|!Name: |nutrient_mgmt |
|!Author: |[[ATTRA]] |
|!Date: |Jan 2014 |
[>img[./Images/Book.png][./Documents/USAMD/md 0921 - obstetric & newborn care i.pdf]]
|!Name: |MD 0921 - Obstetric & Newborn Care I |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0922 - obstetric & newborn care ii.pdf]]
|!Name: |MD 0922 - Obstetric & Newborn Care II |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0584 - obstetrics & pediatrics.pdf]]
|!Name: |MD 0584 - Obstetrics & Pediatrics |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/8_offgrid_designguidelines.pdf]]
|!Name: |Off Grid PV Power Systems Design Guidelines |
|!Author: |Sustainable Energy Industry Association of the Pacific Islands |
|!Date: |Sep 2012 |
[>img[./Images/Book.png][./Documents/10_offgrid_installguidelines.pdf]]
|!Name: |Off Grid PV Power Systems Install Guidelines |
|!Author: |Sustainable Energy Industry Association of the Pacific Islands |
|!Date: |Sep 2012 |
[>img[./Images/Book.png][./Documents/ch14-off-grid-power.pdf]]
|!Name: |Off grid power |
|!Author: |(Book Extract) |
|!Date: | |
[>img[./Images/Book.png][./Documents/off-grid-is-en-32w.pdf]]
|!Name: |~Off-Grid Systems |
|!Author: |SMA Solar Technology |
|!Date: |2015 |
[>img[./Images/Book.png][./Documents/brochure-off-grid,-back-up-and-island-systems-en_web.pdf]]
|!Name: |Off-grid, back-up and island systems |
|!Author: |Victron Energy |
|!Date: | |
[>img[./Images/Book.png][./Documents/offgrid-popular_mechanics_self-reliance_issue.pdf]]
|!Name: |Offgrid Popular Mechanics - Self-reliance issue |
|!Author: |Popular Mechanics |
|!Date: |Oct 2009 |
[>img[./Images/Book.png][./Documents/ATMRL/06-298.pdf]]
|!Name: |Oil Extraction |
|!Author: |Unifem |
|!Date: |1987 |
[>img[./Images/Book.png][./Documents/oil depletion- the crucial factor in transport planning.pdf]]
|!Name: |Oil depletion: the crucial factor in transport planning |
|!Author: |Sustainable Transport Coalition, Bicycle Institute of South Australia   |
|!Date: |Oct 2004 |
[>img[./Images/Book.png][./Documents/ATTRA/oilseed.pdf]]
|!Name: |oilseed |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/06-250.pdf]]
|!Name: |Old Farm Tools and Machinery |
|!Author: |Percy Blanford |
|!Date: |1976 |
[>img[./Images/Book.png][./Documents/old fashioned soap recipes (all natural soap).pdf]]
|!Name: |Old Fashioned Soap Recipes |
|!Author: |All Natural Soap http://www.allnaturalsoap.com |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc21.pdf]]
|!Name: |On-farm fish culture |
|!Author: |Aldin Hilbrands, Carl Yzerman. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/one_planet_agriculture-the_case_for_action.pdf]]
|!Name: |One Planet Agriculture - the case for action |
|!Author: |Rob Hopkins and Patrick Holden, Soil Association |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/one_planet_dining.pdf]]
|!Name: |One Planet Dining |
|!Author: |Kath Dalmeny and Ben Reynolds, Sustain |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/food_-_one_year_emergency_food_supply_for_one.pdf]]
|!Name: |One Year Emergency Food Supply For One |
|!Author: |Internet Article |
|!Date: |Jan 2010 |
[>img[./Images/Book.png][./Documents/USAMD/md 0370 - operating room table.pdf]]
|!Name: |MD 0370 - Operating Room Table |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/operating_and_maintaining_compost_toilets.pdf]]
|!Name: |Operating and maintaining compost toilets |
|!Author: |Water for the World |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0718 - operational_rations_i.pdf]]
|!Name: |MD 0718 - Operational Rations I |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/a_sailwing_windmill_rotor.pdf]]
|!Name: |Optimisation and Characteristics of a Sailwing Windmill Rotor |
|!Author: |M.D. Maughmer |
|!Date: |Mar 1976 |
[>img[./Images/Book.png][./Documents/ATTRA/organiccrop.pdf]]
|!Name: |organiccrop |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/localfoods4.pdf]]
|!Name: |localfoods4 |
|!Author: |[[ATTRA]] |
|!Date: | |

[>img[./Images/Book.png][./Documents/ATTRA/nop_organiccertification.pdf]]
|!Name: |nop_organiccertification |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/alfalfa.pdf]]
|!Name: |alfalfa |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/allium.pdf]]
|!Name: |allium |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/lateblight.pdf]]
|!Name: |lateblight |
|!Author: |[[ATTRA]] |
|!Date: |Mar 2004 |
[>img[./Images/Book.png][./Documents/ATTRA/organic_blueberry_production.pdf]]
|!Name: |Organic Blueberry Production |
|!Author: |[[ATTRA]] |
|!Date: |Feb 2000 |
[>img[./Images/Book.png][./Documents/ATTRA/organic_certification.pdf]]
|!Name: |organic_certification |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/whitmold.pdf]]
|!Name: |whitmold |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/cotton.pdf]]
|!Name: |cotton |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/tx_organic_farmers.pdf]]
|!Name: |tx_organic_farmers |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/organic_fruit_growing.pdf]]
|!Name: |Organic Fruit Growing |
|!Author: |K. Lind, G. Lafer, K. Schloffer, G. Innerhofer and H. Meister |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/organic101.pdf]]
|!Name: |Organic Gardening |
|!Author: |Ray Schutte |
|!Date: | |
[>img[./Images/Book.png][./Documents/organic_gardening_for_dummies.pdf]]
|!Name: |Organic Gardening for Dummies |
|!Author: |Ann Whitman and Suzanne ~DeJohn |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/ATTRA/ghveg.pdf]]
|!Name: |ghveg |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/ipm_full.pdf]]
|!Name: |ipm_full |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/marketforms.pdf]]
|!Name: |marketforms |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/markres.pdf]]
|!Name: |markres |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/organicmaterials.pdf]]
|!Name: |organicmaterials |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/orchardforms.pdf]]
|!Name: |orchardforms |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/natural_pool_manual_free_version.pdf]]
|!Name: |Organic Pools DIY Manual |
|!Author: |David Pagan Butler |
|!Date: |2013 |
[>img[./Images/Book.png][./Documents/ATTRA/methionine.pdf]]
|!Name: |methionine |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/pumpkin.pdf]]
|!Name: |pumpkin |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/rice.pdf]]
|!Name: |rice |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/organic_specialty_crop_texas.pdf]]
|!Name: |organic_specialty_crop_texas |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/nopstandard_crops.pdf]]
|!Name: |nopstandard_crops |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/nopstandard_handling.pdf]]
|!Name: |nopstandard_handling |
|!Author: |[[ATTRA]] |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/ATTRA/nopstandard_livestock.pdf]]
|!Name: |nopstandard_livestock |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/osptemplates_crop-livestock.pdf]]
|!Name: |osptemplates_crop-livestock |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/cropsfarmplan.pdf]]
|!Name: |cropsfarmplan |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/livestockfarmplan.pdf]]
|!Name: |livestockfarmplan |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/marketfarmplan.pdf]]
|!Name: |marketfarmplan |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/tobacco.pdf]]
|!Name: |tobacco |
|!Author: |[[ATTRA]] |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/organic_vegetable_gardening-12pp.pdf]]
|!Name: |Organic Vegetable Gardening - 1 |
|!Author: |James M Stephens, University of Florida Extension |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/organic_vegetable_gardening-24pp.pdf]]
|!Name: |Organic Vegetable Gardening - 2 |
|!Author: |University of Tennessee Extension |
|!Date: | |
[>img[./Images/Book.png][./Documents/organising_successful_meetings.pdf]]
|!Name: |Organising successful meetings |
|!Author: |Seeds for Change |
|!Date: | |
[>img[./Images/Book.png][./Documents/relocalizenow_walkingschoolbus_dec06.pdf]]
|!Name: |Organizing a  "Walking School Bus" |
|!Author: |relocalization.network http://www.relocalize.net |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/us army - orienteering - how to find your way (2006 edition) gta05-02-013.pdf]]
|!Name: |Orienteering - How to Find Your Way  |
|!Author: |US Army |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/outgrowing_the_earth.pdf]]
|!Name: |Outgrowing the Earth |
|!Author: |Lester R Brown |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/pvc hand pumps.08.pdf]]
|!Name: |PVC Hand Pumps |
|!Author: |Charlie Forst |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/PracticalAction/packaging_materials.pdf]]
|!Name: |Packaging Materials |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/packaging_food_in_glass.pdf]]
|!Name: |Packaging foods in glass |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/50-packaging_of_agriculture_products.pdf]]
|!Name: |Packaging of Agriculture Products |
|!Author: |Peter Fellows |
|!Date: |2011 |

[>img[./Images/Book.png][./Documents/general_-_pandemic_flu_citizens_guide.pdf]]
|!Name: |Pandemic Flu Citizens Guide |
|!Author: |~Mid-Peninsula Citizen’s Preparedness Committee |
|!Date: |Nov 2007 |
[>img[./Images/Book.png][./Documents/food_-_pantry_pests.pdf]]
|!Name: |Pantry Pests |
|!Author: |University of California |
|!Date: |September 2002 |
[>img[./Images/Book.png][./Documents/PracticalAction/papain.pdf]]
|!Name: |Papain Production |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/blackhead.pdf]]
|!Name: |blackhead |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/coccidiosis.pdf]]
|!Name: |coccidiosis |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0841 - parasitology i.pdf]]
|!Name: |MD 0841 - Parasitology I |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0842 - parasitology ii.pdf]]
|!Name: |MD 0842 - Parasitology II |
|!Author: |US Army Medical Department |
|!Date: | |
/***
|<html><a name="Top"/></html>''Name:''|PartTiddlerPlugin|
|''Version:''|1.0.10 (2011-05-23)|
|''Source:''|http://tiddlywiki.abego-software.de/#PartTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.3|
|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
!Table of Content<html><a name="TOC"/></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Description',null, event)">Description, Syntax</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Applications',null, event)">Applications</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('LongTiddler',null, event)">Refering to Paragraphs of a Longer Tiddler</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Citation',null, event)">Citation Index</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('TableCells',null, event)">Creating "multi-line" Table Cells</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Tabs',null, event)">Creating Tabs</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Sliders',null, event)">Using Sliders</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Revisions',null, event)">Revision History</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Code',null, event)">Code</a></html>
!Description<html><a name="Description"/></html>
With the {{{<part aPartName> ... </part>}}} feature you can structure your tiddler text into separate (named) parts.
Each part can be referenced as a "normal" tiddler, using the "//tiddlerName//''/''//partName//" syntax (e.g. "About/Features").  E.g. you may create links to the parts (e.g. {{{[[Quotes/BAX95]]}}} or {{{[[Hobbies|AboutMe/Hobbies]]}}}), use it in {{{<<tiddler...>>}}} or {{{<<tabs...>>}}} macros etc.


''Syntax:''
|>|''<part'' //partName// [''hidden''] ''>'' //any tiddler content// ''</part>''|
|//partName//|The name of the part. You may reference a part tiddler with the combined tiddler name "//nameOfContainerTidder//''/''//partName//. <<br>>If you use a partName containing spaces you need to quote it (e.g. {{{"Major Overview"}}} or {{{[[Shortcut List]]}}}).|
|''hidden''|When defined the content of the part is not displayed in the container tiddler. But when the part is explicitly referenced (e.g. in a {{{<<tiddler...>>}}} macro or in a link) the part's content is displayed.|
|<html><i>any&nbsp;tiddler&nbsp;content</i></html>|<html>The content of the part.<br>A part can have any content that a "normal" tiddler may have, e.g. you may use all the formattings and macros defined.</html>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!Applications<html><a name="Applications"/></html>
!!Refering to Paragraphs of a Longer Tiddler<html><a name="LongTiddler"/></html>
Assume you have written a long description in a tiddler and now you want to refer to the content of a certain paragraph in that tiddler (e.g. some definition.) Just wrap the text with a ''part'' block, give it a nice name, create a "pretty link" (like {{{[[Discussion Groups|Introduction/DiscussionGroups]]}}}) and you are done.

Notice this complements the approach to first writing a lot of small tiddlers and combine these tiddlers to one larger tiddler in a second step (e.g. using the {{{<<tiddler...>>}}} macro). Using the ''part'' feature you can first write a "classic" (longer) text that can be read "from top to bottom" and later "reuse" parts of this text for some more "non-linear" reading.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Citation Index<html><a name="Citation"/></html>
Create a tiddler "Citations" that contains your "citations".
Wrap every citation with a part and a proper name.

''Example''
{{{
<part BAX98>Baxter, Ira D. et al: //Clone Detection Using Abstract Syntax Trees.//
in //Proc. ICSM//, 1998.</part>

<part BEL02>Bellon, Stefan: //Vergleich von Techniken zur Erkennung duplizierten Quellcodes.//
Thesis, Uni Stuttgart, 2002.</part>

<part DUC99>Ducasse, St�fane et al: //A Language Independent Approach for Detecting Duplicated Code.//
in //Proc. ICSM//, 1999.</part>
}}}

You may now "cite" them just by using a pretty link like {{{[[Citations/BAX98]]}}} or even more pretty, like this {{{[[BAX98|Citations/BAX98]]}}}.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Creating "multi-line" Table Cells<html><a name="TableCells"/></html>
You may have noticed that it is hard to create table cells with "multi-line" content. E.g. if you want to create a bullet list inside a table cell you cannot just write the bullet list
{{{
* Item 1
* Item 2
* Item 3
}}}
into a table cell (i.e. between the | ... | bars) because every bullet item must start in a new line but all cells of a table row must be in one line.

Using the ''part'' feature this problem can be solved. Just create a hidden part that contains the cells content and use a {{{<<tiddler >>}}} macro to include its content in the table's cell.

''Example''
{{{
|!Subject|!Items|
|subject1|<<tiddler ./Cell1>>|
|subject2|<<tiddler ./Cell2>>|

<part Cell1 hidden>
* Item 1
* Item 2
* Item 3
</part>
...
}}}

Notice that inside the {{{<<tiddler ...>>}}} macro you may refer to the "current tiddler" using the ".".

BTW: The same approach can be used to create bullet lists with items that contain more than one line.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Creating Tabs<html><a name="Tabs"/></html>
The build-in {{{<<tabs ...>>}}} macro requires that you defined an additional tiddler for every tab it displays. When you want to have "nested" tabs you need to define a tiddler for the "main tab" and one for every tab it contains. I.e. the definition of a set of tabs that is visually displayed at one place is distributed across multiple tiddlers.

With the ''part'' feature you can put the complete definition in one tiddler, making it easier to keep an overview and maintain the tab sets.

''Example''
The standard tabs at the sidebar are defined by the following eight tiddlers:
* SideBarTabs
* TabAll
* TabMore
* TabMoreMissing
* TabMoreOrphans
* TabMoreShadowed
* TabTags
* TabTimeline

Instead of these eight tiddlers one could define the following SideBarTabs tiddler that uses the ''part'' feature:
{{{
<<tabs txtMainTab
    Timeline Timeline SideBarTabs/Timeline
    All 'All tiddlers' SideBarTabs/All
    Tags 'All tags' SideBarTabs/Tags
    More 'More lists' SideBarTabs/More>>
<part Timeline hidden><<timeline>></part>
<part All hidden><<list all>></part>
<part Tags hidden><<allTags>></part>
<part More hidden><<tabs txtMoreTab
    Missing 'Missing tiddlers' SideBarTabs/Missing
    Orphans 'Orphaned tiddlers' SideBarTabs/Orphans
    Shadowed 'Shadowed tiddlers' SideBarTabs/Shadowed>></part>
<part Missing hidden><<list missing>></part>
<part Orphans hidden><<list orphans>></part>
<part Shadowed hidden><<list shadowed>></part>
}}}

Notice that you can easily "overwrite" individual parts in separate tiddlers that have the full name of the part.

E.g. if you don't like the classic timeline tab but only want to see the 100 most recent tiddlers you could create a tiddler "~SideBarTabs/Timeline" with the following content:
{{{
<<forEachTiddler
		sortBy 'tiddler.modified' descending
		write '(index < 100) ? "* [["+tiddler.title+"]]\n":""'>>
}}}
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Using Sliders<html><a name="Sliders"/></html>
Very similar to the build-in {{{<<tabs ...>>}}} macro (see above) the {{{<<slider ...>>}}} macro requires that you defined an additional tiddler that holds the content "to be slid". You can avoid creating this extra tiddler by using the ''part'' feature

''Example''
In a tiddler "About" we may use the slider to show some details that are documented in the tiddler's "Details" part.
{{{
...
<<slider chkAboutDetails About/Details details "Click here to see more details">>
<part Details hidden>
To give you a better overview ...
</part>
...
}}}

Notice that putting the content of the slider into the slider's tiddler also has an extra benefit: When you decide you need to edit the content of the slider you can just doubleclick the content, the tiddler opens for editing and you can directly start editing the content (in the part section). In the "old" approach you would doubleclick the tiddler, see that the slider is using tiddler X, have to look for the tiddler X and can finally open it for editing. So using the ''part'' approach results in a much short workflow.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!Revision history<html><a name="Revisions"/></html>
* v1.0.10 (2011-05-23)
** Adapt to TW 2.6.2 default behaviour when existing tiddlers are opened (don't select text) and fixed Firefox 4 issue. Thanks to dave for reporting the issue.
* v1.0.9 (2007-07-14)
** Bugfix: Error when using the SideBarTabs example and switching between "More" and "Shadow". Thanks to cmari for reporting the issue.
* v1.0.8 (2007-06-16)
** Speeding up display of tiddlers containing multiple pard definitions. Thanks to Paco Rivi�re for reporting the issue.
** Support "./partName" syntax inside {{{<<tabs ...>>}}} macro
* v1.0.7 (2007-03-07)
** Bugfix: <<tiddler "./partName">> does not always render correctly after a refresh (e.g. like it happens when using the "Include" plugin). Thanks to Morris Gray for reporting the bug.
* v1.0.6 (2006-11-07)
** Bugfix: cannot edit tiddler when UploadPlugin by Bidix is installed. Thanks to Jos� Luis Gonz�lez Castro for reporting the bug.
* v1.0.5 (2006-03-02)
** Bugfix: Example with multi-line table cells does not work in IE6. Thanks to Paulo Soares for reporting the bug.
* v1.0.4 (2006-02-28)
** Bugfix: Shadow tiddlers cannot be edited (in TW 2.0.6). Thanks to Torsten Vanek for reporting the bug.
* v1.0.3 (2006-02-26)
** Adapt code to newly introduced Tiddler.prototype.isReadOnly() function (in TW 2.0.6). Thanks to Paulo Soares for reporting the problem.
* v1.0.2 (2006-02-05)
** Also allow other macros than the "tiddler" macro use the "." in the part reference (to refer to "this" tiddler)
* v1.0.1 (2006-01-27)
** Added Table of Content for plugin documentation. Thanks to RichCarrillo for suggesting.
** Bugfix: newReminder plugin does not work when PartTiddler is installed. Thanks to PauloSoares for reporting.
* v1.0.0 (2006-01-25)
** initial version
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!Code<html><a name="Code"/></html>
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
***/
//{{{
//============================================================================
//                           PartTiddlerPlugin

// Ensure that the PartTiddler Plugin is only installed once.
//
if (!version.extensions.PartTiddlerPlugin) {



version.extensions.PartTiddlerPlugin = {
    major: 1, minor: 0, revision: 10,
    date: new Date(2011, 4, 23),
    type: 'plugin',
    source: "http://tiddlywiki.abego-software.de/#PartTiddlerPlugin"
};

if (!window.abego) window.abego = {};
if (version.major < 2) alertAndThrow("PartTiddlerPlugin requires TiddlyWiki 2.0 or newer.");

//============================================================================
// Common Helpers

// Looks for the next newline, starting at the index-th char of text.
//
// If there are only whitespaces between index and the newline
// the index behind the newline is returned,
// otherwise (or when no newline is found) index is returned.
//
var skipEmptyEndOfLine = function(text, index) {
	var re = /(\n|[^\s])/g;
	re.lastIndex = index;
	var result = re.exec(text);
	return (result && text.charAt(result.index) == '\n')
			? result.index+1
			: index;
}


//============================================================================
// Constants

var partEndOrStartTagRE = /(<\/part>)|(<part(?:\s+)((?:[^>])+)>)/mg;
var partEndTagREString = "<\\/part>";
var partEndTagString = "</part>";

//============================================================================
// Plugin Specific Helpers

// Parse the parameters inside a <part ...> tag and return the result.
//
// @return [may be null] {partName: ..., isHidden: ...}
//
var parseStartTagParams = function(paramText) {
	var params = paramText.readMacroParams();
	if (params.length == 0 || params[0].length == 0) return null;

	var name = params[0];
	var paramsIndex = 1;
	var hidden = false;
	if (paramsIndex < params.length) {
		hidden = params[paramsIndex] == "hidden";
		paramsIndex++;
	}

	return {
		partName: name,
		isHidden: hidden
	};
}

// Returns the match to the next (end or start) part tag in the text,
// starting the search at startIndex.
//
// When no such tag is found null is returned, otherwise a "Match" is returned:
// [0]: full match
// [1]: matched "end" tag (or null when no end tag match)
// [2]: matched "start" tag (or null when no start tag match)
// [3]: content of start tag (or null if no start tag match)
//
var findNextPartEndOrStartTagMatch = function(text, startIndex) {
	var re = new RegExp(partEndOrStartTagRE);
	re.lastIndex = startIndex;
	var match = re.exec(text);
	return match;
}

//============================================================================
// Formatter

// Process the <part ...> ... </part> starting at (w.source, w.matchStart) for formatting.
//
// @return true if a complete part section (including the end tag) could be processed, false otherwise.
//
var handlePartSection = function(w) {
	var tagMatch = findNextPartEndOrStartTagMatch(w.source, w.matchStart);
	if (!tagMatch) return false;
	if (tagMatch.index != w.matchStart || !tagMatch[2]) return false;

	// Parse the start tag parameters
	var arguments = parseStartTagParams(tagMatch[3]);
	if (!arguments) return false;

	// Continue processing
	var startTagEndIndex = skipEmptyEndOfLine(w.source, tagMatch.index + tagMatch[0].length);
	var endMatch = findNextPartEndOrStartTagMatch(w.source, startTagEndIndex);
	if (endMatch && endMatch[1]) {
		if (!arguments.isHidden) {
			w.nextMatch = startTagEndIndex;
			w.subWikify(w.output,partEndTagREString);
		}
		w.nextMatch = skipEmptyEndOfLine(w.source, endMatch.index + endMatch[0].length);

		return true;
	}
	return false;
}

config.formatters.push( {
    name: "part",
    match: "<part\\s+[^>]+>",

	handler: function(w) {
		if (!handlePartSection(w)) {
			w.outputText(w.output,w.matchStart,w.matchStart+w.matchLength);
		}
	}
} )

//============================================================================
// Extend "fetchTiddler" functionality to also recognize "part"s of tiddlers
// as tiddlers.

var currentParent = null; // used for the "." parent (e.g. in the "tiddler" macro)

// Return the match to the first <part ...> tag of the text that has the
// requrest partName.
//
// @return [may be null]
//
var findPartStartTagByName = function(text, partName) {
	var i = 0;

	while (true) {
		var tagMatch = findNextPartEndOrStartTagMatch(text, i);
		if (!tagMatch) return null;

		if (tagMatch[2]) {
			// Is start tag

			// Check the name
			var arguments = parseStartTagParams(tagMatch[3]);
			if (arguments && arguments.partName == partName) {
				return tagMatch;
			}
		}
		i = tagMatch.index+tagMatch[0].length;
	}
}

// Return the part "partName" of the given parentTiddler as a "readOnly" Tiddler
// object, using fullName as the Tiddler's title.
//
// All remaining properties of the new Tiddler (tags etc.) are inherited from
// the parentTiddler.
//
// @return [may be null]
//
var getPart = function(parentTiddler, partName, fullName) {
	var text = parentTiddler.text;
	var startTag = findPartStartTagByName(text, partName);
	if (!startTag) return null;

	var endIndexOfStartTag = skipEmptyEndOfLine(text, startTag.index+startTag[0].length);
	var indexOfEndTag = text.indexOf(partEndTagString, endIndexOfStartTag);

	if (indexOfEndTag >= 0) {
		var partTiddlerText = text.substring(endIndexOfStartTag,indexOfEndTag);
		var partTiddler = new Tiddler();
		partTiddler.set(
						fullName,
						partTiddlerText,
						parentTiddler.modifier,
						parentTiddler.modified,
						parentTiddler.tags,
						parentTiddler.created);
		partTiddler.abegoIsPartTiddler = true;
		return partTiddler;
	}

	return null;
}

// Hijack the store.fetchTiddler to recognize the "part" addresses.
//
var hijackFetchTiddler = function() {
	var oldFetchTiddler = store.fetchTiddler ;
	store.fetchTiddler = function(title) {
		var result = oldFetchTiddler.apply(this, arguments);
		if (!result && title) {
			var i = title.lastIndexOf('/');
			if (i > 0) {
				var parentName = title.substring(0, i);
				var partName = title.substring(i+1);
				var parent = (parentName == ".")
						? store.resolveTiddler(currentParent)
						: oldFetchTiddler.apply(this, [parentName]);
				if (parent) {
					return getPart(parent, partName, parent.title+"/"+partName);
				}
			}
		}
		return result;
	};
};

// for debugging the plugin is not loaded through the systemConfig mechanism but via a script tag.
// At that point in the "store" is not yet defined. In that case hijackFetchTiddler through the restart function.
// Otherwise hijack now.
if (!store) {
	var oldRestartFunc = restart;
	window.restart = function() {
		hijackFetchTiddler();
		oldRestartFunc.apply(this,arguments);
	};
} else
	hijackFetchTiddler();




// The user must not edit a readOnly/partTiddler
//

config.commands.editTiddler.oldIsReadOnlyFunction = Tiddler.prototype.isReadOnly;

Tiddler.prototype.isReadOnly = function() {
	// Tiddler.isReadOnly was introduced with TW 2.0.6.
	// For older version we explicitly check the global readOnly flag
	if (config.commands.editTiddler.oldIsReadOnlyFunction) {
		if (config.commands.editTiddler.oldIsReadOnlyFunction.apply(this, arguments)) return true;
	} else {
		if (readOnly) return true;
	}

	return this.abegoIsPartTiddler;
}

config.commands.editTiddler.handler_PartTiddlerPlugin = config.commands.editTiddler.handler;

config.commands.editTiddler.handler = function(event,src,title)
{
	var t = store.getTiddler(title);
	// Edit the tiddler if it either is not a tiddler (but a shadowTiddler)
	// or the tiddler is not readOnly
	if(!t || !t.abegoIsPartTiddler)
		{
		return config.commands.editTiddler.handler_PartTiddlerPlugin(event,src,title);
		}
	return false;
}

// To allow the "./partName" syntax in macros we need to hijack
// the invokeMacro to define the "currentParent" while it is running.
//
var oldInvokeMacro = window.invokeMacro;
function myInvokeMacro(place,macro,params,wikifier,tiddler) {
	var oldCurrentParent = currentParent;
	if (tiddler) currentParent = tiddler;
	try {
		oldInvokeMacro.apply(this, arguments);
	} finally {
		currentParent = oldCurrentParent;
	}
}
window.invokeMacro = myInvokeMacro;

// To correctly support the "./partName" syntax while refreshing we need to hijack
// the config.refreshers.tiddlers to define the "currentParent" while it is running.
//
(function() {
	var oldTiddlerRefresher= config.refreshers.tiddler;
	config.refreshers.tiddler = function(e,changeList) {
		var oldCurrentParent = currentParent;
		try {
			currentParent = e.getAttribute("tiddler");
			return oldTiddlerRefresher.apply(this,arguments);
		} finally {
			currentParent = oldCurrentParent;
		}
	};
})();

// Support "./partName" syntax inside <<tabs ...>> macro
(function() {
	var extendRelativeNames = function(e, title) {
		var nodes = e.getElementsByTagName("a");
		for(var i=0; i<nodes.length; i++) {
			var node = nodes[i];
			var s = node.getAttribute("content");
			if (s && s.indexOf("./") == 0)
				node.setAttribute("content",title+s.substr(1));
		}
	};
	var oldHandler = config.macros.tabs.handler;
	config.macros.tabs.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
		var result = oldHandler.apply(this,arguments);
		if (tiddler)
			extendRelativeNames(place, tiddler.title);
		return result;
	};
})();

// Scroll the anchor anchorName in the viewer of the given tiddler visible.
// When no tiddler is defined use the tiddler of the target given event is used.
window.scrollAnchorVisible = function(anchorName, tiddler, evt) {
	var tiddlerElem = null;
	if (tiddler) {
		tiddlerElem = document.getElementById(story.idPrefix + tiddler);
	}
	if (!tiddlerElem && evt) {
		var target = resolveTarget(evt);
		tiddlerElem = story.findContainingTiddler(target);
	}
	if (!tiddlerElem) return;

	var children = tiddlerElem.getElementsByTagName("a");
	for (var i = 0; i < children.length; i++) {
		var child = children[i];
		var name = child.getAttribute("name");
		if (name == anchorName) {
			var y = findPosY(child);
			window.scrollTo(0,y);
			return;
		}
	}
}

} // of "install only once"
//}}}

/***
<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2011 ([[www.abego-software.de|http://www.abego-software.de]])

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.

<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
***/
[>img[./Images/Book.png][./Documents/participation_works.pdf]]
|!Name: |Participation Works |
|!Author: |New Economics Foundation |
|!Date: |1998 |
[>img[./Images/Book.png][./Documents/lr-ceum_brochure_urba_parti_ang.pdf]]
|!Name: |Participatory Urban Planning |
|!Author: |Montréal Urban Ecology Centre |
|!Date: |2015 |
[>img[./Images/Book.png][./Documents/PracticalAction/participatory-urban-planning-toolkit-kitale.pdf]]
|!Name: |Participatory Urban Planning Toolkit |
|!Author: |Practical Action |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/PracticalAction/passion_fruit_juice.pdf]]
|!Name: |Passion Fruit Juice Small Scale Manufacture |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/passion_fruit_jam.pdf]]
|!Name: |Passion fruit jam small scale production |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
|!Name: |Passive Solar House |
|!Author: |Build it Solar |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar water heater.pdf]]
|!Name: |Passive Solar Water Heater |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house -  chapter 01.pdf]]
|!Name: |Passive Solar house -  Chapter 01 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house -  chapter 02.pdf]]
|!Name: |Passive Solar house -  Chapter 02 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house -  chapter 03.pdf]]
|!Name: |Passive Solar house -  Chapter 03 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house -  chapter 04.pdf]]
|!Name: |Passive Solar house -  Chapter 04 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house -  chapter 05.pdf]]
|!Name: |Passive Solar house -  Chapter 05 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house -  chapter 06.pdf]]
|!Name: |Passive Solar house -  Chapter 06 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house -  chapter 07.pdf]]
|!Name: |Passive Solar house -  Chapter 07 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house -  chapter 08.pdf]]
|!Name: |Passive Solar house -  Chapter 08 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house -  chapter 09.pdf]]
|!Name: |Passive Solar house -  Chapter 09 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house -  chapter 10.pdf]]
|!Name: |Passive Solar house -  Chapter 10 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house -  construction.pdf]]
|!Name: |Passive Solar house -  Construction |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house - appendix 1.pdf]]
|!Name: |Passive Solar house - Appendix 1 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house - appendix 2.pdf]]
|!Name: |Passive Solar house - Appendix 2 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house - appendix 3.pdf]]
|!Name: |Passive Solar house - Appendix 3 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house - appendix 4.pdf]]
|!Name: |Passive Solar house - Appendix 4 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house - appendix 5.pdf]]
|!Name: |Passive Solar house - Appendix 5 |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/passive solar house - appendix 6.pdf]]
|!Name: |Passive Solar house - Appendix 6 |
|!Author: | |
|!Date: | |

/%
Image:pasta.png
Thumbnail:pasta_thumbnail.png
%/
[img[./Images/pasta_small.png][./Images/pasta.png]]
[>img[./Images/Book.png][./Documents/ATTRA/pasturerule.pdf]]
|!Name: |pasturerule |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/past_range_graze.pdf]]
|!Name: |past_range_graze |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/pasturedpoultry.pdf]]
|!Name: |pasturedpoultry |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/pasturedpoultrybudgets.pdf]]
|!Name: |pasturedpoultrybudgets |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/pasturedpoultrynutrition.pdf]]
|!Name: |pasturedpoultrynutrition |
|!Author: |[[ATTRA]] |
|!Date: |Aug 2013 |
[>img[./Images/Book.png][./Documents/ATTRA/pastured_poultry_egg_production.pdf]]
|!Name: |Pastured Poultry: Egg Production |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/chnutritionhpinew.pdf]]
|!Name: |chnutritionhpinew |
|!Author: |Jeff Mattocks  |
|!Date: |Nov 2002 |
[>img[./Images/Book.png][./Documents/a3529.pdf]]
|!Name: |Pastures for profit: A guide to rotational grazing |
|!Author: |Dan Undersander, Beth Albert, Dennis Cosgrove, Dennis Johnson, Paul Peterson |
|!Date: 2014| |
[>img[./Images/Book.png][./Documents/ATTRA/pastures_organic.pdf]]
|!Name: |pastures_organic |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/sustpast.pdf]]
|!Name: |sustpast |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/pawpaw.pdf]]
|!Name: |pawpaw |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/peach_diseases_diagnostic_key.pdf]]
|!Name: |peach_diseases_diagnostic_key |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/peach_insects_diagnostic_key.pdf]]
|!Name: |peach_insects_diagnostic_key |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/peanuts.pdf]]
|!Name: |peanuts |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/pear_diseases_diagnostic_key.pdf]]
|!Name: |pear_diseases_diagnostic_key |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/pear_insect_diagnostic_key.pdf]]
|!Name: |pear_insect_diagnostic_key |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/peckham_community_property_trust-busines_plan.pdf]]
|!Name: |Peckham Community Property Trust - Business Plan |
|!Author: | |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/ATMRL/foot_power.pdf]]
|!Name: |Pedal Power Electrical Generation |
|!Author: | |
|!Date: |1965 |
[>img[./Images/Book.png][./Documents/ATMRL/peddle_operated_grain_mill.pdf]]
|!Name: |Peddle Operated Grain Mill |
|!Author: |G.S. Pinson |
|!Date: |1979 |
[>img[./Images/Book.png][./Documents/ATMRL/pelton_micro_hydro_prototype.pdf]]
|!Name: |Pelton micro hydro prototype |
|!Author: |Allen R. Inversin |
|!Date: |Jun 1980 |
[>img[./Images/Book.png][./Documents/ATMRL/02-76.pdf]]
|!Name: |People's Workbook |
|!Author: |Robert Berold |
|!Date: |1988 |
[>img[./Images/Book.png][./Documents/ATMRL/a_savonious_wind_mill_rotor.pdf]]
|!Name: |Performance Test of a Savonius Rotor  |
|!Author: |M.H. Simonds and A. Bodek  |
|!Date: |Jan 1964 |

[>img[./Images/Book.png][./Documents/bill_mollison-permaculture_a_designers_manual.pdf]]
|!Name: |Permaculture - a Designers Manual |
|!Author: |Bill Mollison |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/permaculture.pdf]]
|!Name: |Permaculture Design 101 |
|!Author: |Regenerative Leadership Institute |
|!Date: | |
[>img[./Images/Book.png][./Documents/handbook-robyn-francis.pdf]]
|!Name: |Permaculture Design Course Handbook |
|!Author: |Robyn Francis |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/permaculture-designer-april-2013.pdf]]
|!Name: |Permaculture Designer 01 |
|!Author: |Geoff Lawton |
|!Date: |Apr 2013 |
[>img[./Images/Book.png][./Documents/permaculture_designer_issue02.pdf]]
|!Name: |Permaculture Designer 02 |
|!Author: |Geoff Lawton |
|!Date: |Apr 2013 |
[>img[./Images/Book.png][./Documents/permaculture_designer_issue03.pdf]]
|!Name: |Permaculture Designer 03 |
|!Author: |Geoff Lawton |
|!Date: |Apr 2013 |
[>img[./Images/Book.png][./Documents/permaculture_facilitators_resource_book-training_assessment.pdf]]
|!Name: |Permaculture Facilitator's Training and Assessment Resource Book |
|!Author: |IDEP Foundation |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/pc_principles_poster.pdf]]
|!Name: |Permaculture Principles Poster |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ptm-book_compressed.pdf]]
|!Name: |Permaculture Teaching Matters |
|!Author: |Rosemary Morrow |
|!Date: |2015 |
[>img[./Images/Book.png][./Documents/bill_mollison-permaculture_two-practical_design_for_town_and_country_in_permanent_agriculture.pdf]]
|!Name: |Permaculture Two |
|!Author: |Bill Mollison |
|!Date: |1979 |
The Permaculture Magazine produced by http://www.permaculture.org.uk

[>img[./Images/Book.png][./Documents/permaculture_works_-_july_2012_1.pdf]]
|!Name: |Permaculture Works 3.11 Summer 2012 |
|!Author: |http://www.permaculture.org.uk |
|!Date: |Jul 2012 |
[>img[./Images/Book.png][./Documents/permacultureworks_autumn2013_email.pdf]]
|!Name: |Permaculture Works 3.15 Autumn 2013 |
|!Author: |http://www.permaculture.org.uk |
|!Date: |Oct 2013 |
[>img[./Images/Book.png][./Documents/pw_issue_126_web_0.pdf]]
|!Name: |Permaculture Works v126 Winter 2015 |
|!Author: |http://www.permaculture.org.uk |
|!Date: |Dec 2015 |
[>img[./Images/Book.png][./Documents/pw_issue_128_web.pdf]]
|!Name: |Permaculture Works v128 Summer 2016 |
|!Author: |https://www.permaculture.org.uk/ |
|!Date: |Jul 2016 |
[>img[./Images/Book.png][./Documents/permaculture_in_humid_landscapes.pdf]]
|!Name: |Permaculture in Humid Landscapes |
|!Author: |Bill Mollison |
|!Date: |1981 |
[>img[./Images/Book.png][./Documents/planning_and_permaculture.pdf]]
|!Name: |Permaculture: A New Approach for Rural Planning? |
|!Author: |Rob Hopkins |
|!Date: |1996 |
[>img[./Images/Book.png][./Documents/windpower.pdf]]
|!Name: |Permanent Magnet Generator Construction Manual |
|!Author: |Hugh Piggott |
|!Date: |Feb 2001 |
[>img[./Images/Book.png][./Documents/ATTRA/persimmon.pdf]]
|!Name: |persimmon |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/medical_-_wilderness_med_kit.pdf]]
|!Name: |Personal Wilderness Medical Kit |
|!Author: |Wilderness EMS Institute |
|!Date: |Jul 1999 |
[>img[./Images/Book.png][./Documents/USAMD/md 0173 - pesticides in the military.pdf]]
|!Name: |MD 0173 - Pesticides in the Military |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc29.pdf]]
|!Name: |Pesticides: compounds, use and hazards |
|!Author: |Jeroen Boland, Irene Koomen, Joep van Lidth de Jeude, Jan Oudejans. Agromisa Foundation |
|!Date: |2004 |

[>img[./Images/Book.png][./Documents/USAMD/md 0802 - pharmaceutical calculations.pdf]]
|!Name: |MD 0802 - Pharmaceutical Calculations |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0804 - pharmacology i.pdf]]
|!Name: |MD 0804 - Pharmacology I |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0805 - pharmacology ii.pdf]]
|!Name: |MD 0805 - Pharmacology II |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0806 - pharmacology iii.pdf]]
|!Name: |MD 0806 - Pharmacology III |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0807 - pharmacology iv.pdf]]
|!Name: |MD 0807 - Pharmacology IV |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0808 - pharmacology v.pdf]]
|!Name: |MD 0808 - Pharmacology V |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/photovoltaic_aquaculture.pdf]]
|!Name: |photovoltaic_aquaculture |
|!Author: |[[ATTRA]] |
|!Date: |Jun 2014 |
[>img[./Images/Book.png][./Documents/PracticalAction/pickled_cabbage.pdf]]
|!Name: |Pickled cabbage |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/pickled_cucumber.pdf]]
|!Name: |Pickled cucumber |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/pickled_dry_salted_lime.pdf]]
|!Name: |Pickled dry salted lime |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/pickled_fruits.pdf]]
|!Name: |Pickled fruits |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/pickled_papaya.pdf]]
|!Name: |Pickled papaya |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/pickled_vegetables.pdf]]
|!Name: |Pickled vegetables |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc1.pdf]]
|!Name: |Pig keeping in the tropics |
|!Author: |Dick Muys, Geert Westenbrink. Agromisa Foundation |
|!Date: |2004 |

[>img[./Images/Book.png][./Documents/PracticalAction/pineapple_jam.pdf]]
|!Name: |Pineapple jam |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/pineapple_peel_vinegar.pdf]]
|!Name: |pineapple_peel_vinegar |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/general_-_knottying.pdf]]
|!Name: |Pioneering Knots and Lashings |
|!Author: |Scout Troop 24, Kennet Square, Pennsylvania |
|!Date: | |
[>img[./Images/Book.png][./Documents/us marine corps - pistol marksmanship mcrp 3-01b.pdf]]
|!Name: |Pistol Marksmanship |
|!Author: |US Marine Corps |
|!Date: |Nov 2003 |
/%
Image:three-plait1.jpg
Thumbnail:three-plait1_thumbnail.jpg
%/
[img[./Images/three-plait1_small.jpg][./Images/three-plait1.jpg]][img[./Images/three-plait2_small.jpg][./Images/three-plait2.jpg]]
[img[./Images/three-plait3_small.jpg][./Images/three-plait3.jpg]]

[>img[./Images/Book.png][./Documents/plane_truths.pdf]]
|!Name: |Plane Truths |
|!Author: |Victoria Johnson and Martin Cottingham, New Economics Foundation |
|!Date: |Sep 2008 |
[>img[./Images/Book.png][./Documents/CAT/planning-permission.pdf]]
|!Name: |Planning |
|!Author: |[[CAT]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/planning - a guide for householders.pdf]]
|!Name: |Planning - A guide for householders |
|!Author: |Department for Communities and Local Government. |
|!Date: |2003 |

[>img[./Images/Book.png][./Documents/planning_your_garden.pdf]]
|!Name: |Planning Your Garden |
|!Author: |Leonard Barron |
|!Date: |1923 |
[>img[./Images/Book.png][./Documents/how_to_plan_a_workshop.pdf]]
|!Name: |Planning a workshop |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/planning_for_agroforestry.pdf]]
|!Name: |Planning for Agroforestry |
|!Author: |Susan Huke and June Plecan |
|!Date: |Nov 1988 |
[>img[./Images/Book.png][./Documents/metalworking - plans for hydraulic press.pdf]]
|!Name: |Plans For Hydraulic Press |
|!Author: |E. S. Harris |
|!Date: | |
[>img[./Images/Book.png][./Documents/plans_for_a_complete_beekeeping_system.pdf]]
|!Name: |Plans for a Complete Beekeeping System |
|!Author: |Garden Way Research |
|!Date: |1975 |
[>img[./Images/Book.png][./Documents/ATMRL/plans_for_a_glass_and_concrete_solar_still.pdf]]
|!Name: |Plans for a glass and concrete solar still |
|!Author: |T.A. Lawland and R. Alward |
|!Date: |Dec 1968 |
[>img[./Images/Book.png][./Documents/plant disease management for organic crops.pdf]]
|!Name: |Plant Disease Management for Organic Crops |
|!Author: |University of California |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/plant guilds ebooklet - midwest permaculture.pdf]]
|!Name: |Plant Guilds eBooklet |
|!Author: |Bryce Ruddock, Midwest Permaculture |
|!Date: |2013 |
[>img[./Images/Book.png][./Documents/food_-_plant_identification.pdf]]
|!Name: |Plant Identification |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/planting guidelins -  container trees & shrubs.pdf]]
|!Name: |Planting Guidelines -  Container Trees & Shrubs |
|!Author: |Dr. Jimmy L. Tipton, The University of Arizona |
|!Date: |1998 |
[>img[./Images/Book.png][./Documents/planting landscape trees.pdf]]
|!Name: |Planting Landscape Trees |
|!Author: |Gary W Hickman, University of California |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/ATMRL/08-323.pdf]]
|!Name: |Planting Tree Crops |
|!Author: |World Neighbors |
|!Date: | |
[>img[./Images/Book.png][./Documents/planting trees and shrubs.pdf]]
|!Name: |Planting Trees and Shrubs |
|!Author: |David Hillock, Oklahoma Cooperative Extension Service |
|!Date: | |
[>img[./Images/Book.png][./Documents/planting woody ornamentals (pb1621).pdf]]
|!Name: |Planting Woody Ornamentals |
|!Author: |Donna C. Fare, The University of Tennessee |
|!Date: |1999 |

[>img[./Images/Book.png][./Documents/plants for poolside landscapes.pdf]]
|!Name: |Plants for Poolside Landscapes |
|!Author: |Lucy Bradley, University of Arizona |
|!Date: |Aug 1998 |
[>img[./Images/Book.png][./Documents/ATTRA/plugs.pdf]]
|!Name: |plugs |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/plum_diseases_diagnostic_key.pdf]]
|!Name: |plum_diseases_diagnostic_key |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/plum_apricot_insect_diagnostic_key.pdf]]
|!Name: |plum_apricot_insect_diagnostic_key |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/fire_-_plumber_s_stove.pdf]]
|!Name: |Plumber's Stove |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/plums.pdf]]
|!Name: |plums |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/poisoning.pdf]]
|!Name: |Poisoning |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_poisonous_plants.pdf]]
|!Name: |Poisonous Plants |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/altpork.pdf]]
|!Name: |altpork |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/positive_labor.pdf]]
|!Name: |positive_labor |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/post_harvest_food_losses_in_developing_countries.pdf]]
|!Name: |Post Harvest Food Losses in Developing Countries |
|!Author: |Board on Science and Technology for International Development  |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/post-planting tree care fallacies and recommendations (sp574).pdf]]
|!Name: |Post Planting Tree Care Fallacies and Recommendations |
|!Author: |Wayne K. Clatterbuck, The University of Tennessee |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/postharvest_handling_for_organic_crops.pdf]]
|!Name: |Post-harvest Handling for Organic Crops |
|!Author: |Trevor Suslow, Vegetable Research and Information Center |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/ATTRA/potmix.pdf]]
|!Name: |potmix |
|!Author: |[[ATTRA]] |
|!Date: | |

[>img[./Images/Book.png][./Documents/poultry_appliances_and_handicraft.pdf]]
|!Name: |Poultry Appliances and Handicraft |
|!Author: |George B Fiske |
|!Date: |1906 |
[>img[./Images/Book.png][./Documents/ATTRA/poultry_basics_tip_sheet.pdf]]
|!Name: |poultry_basics_tip_sheet |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/poultryhousemanage.pdf]]
|!Name: |poultryhousemanage |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0712 - poultry i.pdf]]
|!Name: |MD 0712 - Poultry I |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0728 - poultry ii.pdf]]
|!Name: |MD 0728 - Poultry II |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/poultry_equipment.pdf]]
|!Name: |poultry_equipment |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/house boat case study-low.pdf]]
|!Name: |Power solution for house boat |
|!Author: |Off Grid Energy Ltd |
|!Date: | |
Practical Action is an international non-governmental organisation (NGO) that uses technology to challenge poverty in developing countries.
Practical Action was founded, in 1966, as the [[Intermediate Technology Development Group|ITDG]] by radical economist EF Schumacher and a group of like-minded colleagues.
http://practicalaction.org
[>img[./Images/Book.png][./Documents/ATMRL/04-114.pdf]]
|!Name: |Practical Blacksmithing |
|!Author: |M T Richardson |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/pps_complete.pdf]]
|!Name: |Practical Plastic Surgery for Nonsurgeons |
|!Author: |Nadine B. Semer, University Of Southern California School of Medicine |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/ATMRL/05-205.pdf]]
|!Name: |Practical Poultry Raising |
|!Author: |Kenneth M. French |
|!Date: |Apr 1981 |
[>img[./Images/Book.png][./Documents/ATTRA/predator.pdf]]
|!Name: |predator |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc36.pdf]]
|!Name: |Preparation of dairy products |
|!Author: |Pauline Ebing, Karin Rutgers. Agromisa Foundation |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/pets.pdf]]
|!Name: |Preparing your pets for emergencies |
|!Author: |The American Society for the Prevention of Cruelty to Animals |
|!Date: | |

[>img[./Images/Book.png][./Documents/prepping matrix ver 1.pdf]]
|!Name: |Prepping Matrix |
|!Author: |Prepper Link |
|!Date: |2013 |
[>img[./Images/Book.png][./Documents/USAMD/md 0801 - prescription interpretation.pdf]]
|!Name: |MD 0801 - Prescription Interpretation |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/43_presenting_business_plan.pdf]]
|!Name: |Presenting a Business Plan |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0703 - preservation of foods.pdf]]
|!Name: |MD 0703 - Preservation of Foods |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc12.pdf]]
|!Name: |Preservation of fish and meat |
|!Author: |Brigitte Maas-van Berkel, Brigiet van den Boogaard, Corlien Heijnen. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc3.pdf]]
|!Name: |Preservation of fruit and vegetables |
|!Author: |Ife Fitz James, Bas Kuipers. Agromisa Foundation |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/ATMRL/preserving_food_by_drying.pdf]]
|!Name: |Preserving Food by Drying |
|!Author: |Cynthia Fahy, with Carl Vogel and Per Christianson  |
|!Date: |Jul 1980 |
[>img[./Images/Book.png][./Documents/Public/preserving_vegetables_by_salting__drying__and.pdf]]
|!Name: |Preserving vegetables by salting, drying and storing |
|!Author: |United States Food Administration |
|!Date: |1918 |
/***
|Name:|PrettyDatesPlugin|
|Description:|Provides a new date format ('pppp') that displays times such as '2 days ago'|
|Version:|1.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#PrettyDatesPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Notes
* If you want to you can rename this plugin. :) Some suggestions: LastUpdatedPlugin, RelativeDatesPlugin, SmartDatesPlugin, SexyDatesPlugin.
* Inspired by http://ejohn.org/files/pretty.js
***/
//{{{
Date.prototype.prettyDate = function() {
  var diff = (((new Date()).getTime() - this.getTime()) / 1000);
  var day_diff = Math.floor(diff / 86400);

  if (isNaN(day_diff))      return "";
  else if (diff < 0)        return "in the future";
  else if (diff < 60)       return "just now";
  else if (diff < 120)      return "1 minute ago";
  else if (diff < 3600)     return Math.floor(diff/60) + " minutes ago";
  else if (diff < 7200)     return "1 hour ago";
  else if (diff < 86400)    return Math.floor(diff/3600) + " hours ago";
  else if (day_diff == 1)   return "Yesterday";
  else if (day_diff < 7)    return day_diff + " days ago";
  else if (day_diff < 14)   return  "a week ago";
  else if (day_diff < 31)   return Math.ceil(day_diff/7) + " weeks ago";
  else if (day_diff < 62)   return "a month ago";
  else if (day_diff < 365)  return "about " + Math.ceil(day_diff/31) + " months ago";
  else if (day_diff < 730)  return "a year ago";
  else                      return Math.ceil(day_diff/365) + " years ago";
}

Date.prototype.formatString_orig_mptw = Date.prototype.formatString;

Date.prototype.formatString = function(template) {
  return this.formatString_orig_mptw(template).replace(/pppp/,this.prettyDate());
}

// for MPTW. otherwise edit your ViewTemplate as required.
config.mptwDateFormat = 'pppp (DD/MM/YY)';
// config.mptwDateFormat = 'pppp';

//}}}
[>img[./Images/Book.png][./Documents/preventing tree planting injuries.pdf]]
|!Name: |Preventing Tree Planting Injuries |
|!Author: |Workers’ Compensation Board of British Columbia |
|!Date: |1996  |
[>img[./Images/Book.png][./Documents/USAMD/md 0513 - preventive dentistry.pdf]]
|!Name: |MD 0513 - Preventive Dentistry |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/wfrp_factsheet.pdf]]
|!Name: |wfrp_factsheet |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/water_-_priming_the_berkey_filter.pdf]]
|!Name: |Priming the Berkey Water Filter |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/oil_extraction.pdf]]
|!Name: |Principles of Oil Extraction |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/Public/waksman_principles-of-soil.pdf]]
|!Name: |Principles of Soil Microbiology |
|!Author: |Selman A Waksman |
|!Date: |1927 |
[>img[./Images/Book.png][./Documents/USAMD/md 0151 - principles of epidemiology & microbiology.pdf]]
|!Name: |MD 0151 - Principles of epidemiology & Microbiology |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/investing_for_an_uncertain_future-priorities_for_uk_energy_and_climate_security.pdf]]
|!Name: |Priorities for UK Energy and Climate Security |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/conference_on_energy_conserving_passive_solar_greenhouses.pdf]]
|!Name: |Proceedings of the Conference on Energy Conserving Solar Heated Greenhouses |
|!Author: |John Bayas and Drew Gillett |
|!Date: |Nov 1977 |
[>img[./Images/Book.png][./Documents/PracticalAction/pepper.pdf]]
|!Name: |Processing of Pepper |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/turmeric.pdf]]
|!Name: |Processing of Turmeric |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/cardomom.pdf]]
|!Name: |Processing of cardomom |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/producing_forest-based_food_products_in_permaculture_systems.pdf]]
|!Name: |Producing Forest-Based Food Products in Permaculture Systems |
|!Author: |Mark L Shepard |
|!Date: | |
Book Extract
[>img[./Images/Book.png][./Documents/producing transplants at home.pdf]]
|!Name: |Producing Transplants at Home |
|!Author: |R ~McNeilan, Oregon State University |
|!Date: |Jan 2000 |
[>img[./Images/Book.png][./Documents/fresh water prawns (production).pdf]]
|!Name: |Production of Freshwater Prawns in Ponds |
|!Author: |Louis R. D’Abramo and Martin W. Brunson |
|!Date: |Jul 1996 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc19.pdf]]
|!Name: |Propagating and planting trees |
|!Author: |Ed Verheij. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/uk071.pdf]]
|!Name: |Proper Field Dressing and Handling of Wild Game and Fish |
|!Author: |Pennsylvania State’s College of Agricultural Sciences. http://agsci.psu.edu |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc23.pdf]]
|!Name: |Protected cultivation |
|!Author: |Ernst van Heurn, Kees van der Post. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/protecting gardens and landscape plantings from rabbits.pdf]]
|!Name: |Protecting Gardens and Landscape Plantings from Rabbits |
|!Author: |Scott R Craven, University of Wisconsin |
|!Date: |1996 |
[>img[./Images/Book.png][./Documents/ATTRA/riparian.pdf]]
|!Name: |riparian |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc18.pdf]]
|!Name: |Protection of stored grains and pulses |
|!Author: |Inge de Groot. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/survival psychology.pdf]]
|!Name: |Psychology of Survival |
|!Author: |Book Extract |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0549 - psychosocial issues.pdf]]
|!Name: |MD 0549 - Psychosocial Issues |
|!Author: |US Army Medical Department |
|!Date: | |

Some of the items in this Library are in the Public Domain. Below is a list of entries that are positively known to be public. There may be others in the Library that are public but have not yet been flagged..
[>img[./Images/Book.png][./Documents/public_procurement_of_sustainable_food.pdf]]
|!Name: |Public Procurement of Sustainable Food |
|!Author: |Sustain http://www.sustainweb.org |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/water_supply_from_a_public_standpost_paper_14.pdf]]
|!Name: |Public Standpost Water Supplies |
|!Author: |World Health Organisation |
|!Date: |Dec 1979 |
[>img[./Images/Book.png][./Documents/pumpkin_cultivation_and_post_harvest_handling.pdf]]
|!Name: |Pumpkin Cultivation and Post Harvest Handling |
|!Author: |Internet Article |
|!Date: | |
[>img[images/book.png][./Documents/ATMRL/purification_of_water_on_a_small_scale.pdf]]
|!Name: |Purification of Water on a Small Scale |
|!Author: |International Reference Centre for Community Water Supply |
|!Date: |Mar 1973 |
[>img[./Images/Book.png][./Documents/ATTRA/consertill_organic.pdf]]
|!Name: |consertill_organic |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/finish_lamb_tip_sheet.pdf]]
|!Name: |finish_lamb_tip_sheet |
|!Author: |[[ATTRA]] |
|!Date: | |
/***
|Name:|QuickOpenTagPlugin|
|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
config.quickOpenTag = {

  dropdownChar: (document.all ? "\u25bc" : "\u25be"), // the little one doesn't work in IE?

  createTagButton: function(place,tag,excludeTiddler) {
    // little hack so we can do this: <<tag PrettyTagName|RealTagName>>
    var splitTag = tag.split("|");
    var pretty = tag;
    if (splitTag.length == 2) {
      tag = splitTag[1];
      pretty = splitTag[0];
    }

    var sp = createTiddlyElement(place,"span",null,"quickopentag");
    createTiddlyText(createTiddlyLink(sp,tag,false),pretty);

    var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
                        config.views.wikified.tag.tooltip.format([tag]),onClickTag);
    theTag.setAttribute("tag",tag);
    if (excludeTiddler)
      theTag.setAttribute("tiddler",excludeTiddler);
        return(theTag);
  },

  miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
    var tagged = store.getTaggedTiddlers(tiddler.title);
    if (tagged.length > 0) {
      var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
                          config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
      theTag.setAttribute("tag",tiddler.title);
      theTag.className = "miniTag";
    }
  },

  allTagsHandler: function(place,macroName,params) {
    var tags = store.getTags(params[0]);
    var filter = params[1]; // new feature
    var ul = createTiddlyElement(place,"ul");
    if(tags.length == 0)
      createTiddlyElement(ul,"li",null,"listTitle",this.noTags);
    for(var t=0; t<tags.length; t++) {
      var title = tags[t][0];
      if (!filter || (title.match(new RegExp('^'+filter)))) {
        var info = getTiddlyLinkInfo(title);
        var theListItem =createTiddlyElement(ul,"li");
        var theLink = createTiddlyLink(theListItem,tags[t][0],true);
        var theCount = " (" + tags[t][1] + ")";
        theLink.appendChild(document.createTextNode(theCount));
        var theDropDownBtn = createTiddlyButton(theListItem," " +
          config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
        theDropDownBtn.setAttribute("tag",tags[t][0]);
      }
    }
  },

  // todo fix these up a bit
  styles: [
"/*{{{*/",
"/* created by QuickOpenTagPlugin */",
".tagglyTagged .quickopentag, .tagged .quickopentag ",
" { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }",
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",
"/* extra specificity to make it work right */",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink ",
" { border:0px solid black; }",
"#displayArea .viewer .quickopentag a.button, ",
"#mainMenu .quickopentag a.button ",
" { margin-left:0px; padding-left:2px; }",
"#displayArea .viewer .quickopentag a.tiddlyLink, ",
"#mainMenu .quickopentag a.tiddlyLink ",
" { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",
"a.miniTag {font-size:150%;} ",
"#mainMenu .quickopentag a.button ",
" /* looks better in right justified main menus */",
" { margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }",
"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",
"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",
"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",
"/*}}}*/",
    ""].join("\n"),

  init: function() {
    // we fully replace these builtins. can't hijack them easily
    window.createTagButton = this.createTagButton;
    config.macros.allTags.handler = this.allTagsHandler;
    config.macros.miniTag = { handler: this.miniTagHandler };
    config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;
    store.addNotification("QuickOpenTagStyles",refreshStyles);
  }
}

config.quickOpenTag.init();

//}}}
Royal Society for Prevention of Cruelty to Animals
[>img[./Images/Book.png][./Documents/sheep_standards.pdf]]
|!Name: |[[RSPCA]] Welfare standards for Sheep |
|!Author: |[[RSPCA]] |
|!Date: |2013 |


[>img[./Images/Book.png][./Documents/us marine corps - radio operator's handbook mcrp 3-40.3b.pdf]]
|!Name: |Radio Operator's Handbook |
|!Author: |US Marine Corps |
|!Date: |Jun 1999 |
[>img[./Images/Book.png][./Documents/uk-rain-garden-guide.pdf]]
|!Name: |Rain Garden Guide |
|!Author: |Bob Bray, Dusty Gedge, Gary Grant & Lani Leuthvilay |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/rain_water_catchment_tank_project.pdf]]
|!Name: |Rain Water Catchment Tank Project |
|!Author: |Marcus Kaufman |
|!Date: |1983 |
[>img[./Images/Book.png][./Documents/PracticalAction/rainwater_harvesting.pdf]]
|!Name: |Rainwater Harvesting |
|!Author: |[[ITDG]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc43.pdf]]
|!Name: |Rainwater harvesting for domestic use |
|!Author: |Janette Worm, Tim van Hattum |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/ATMRL/rainwater_harvesting_for_domestic_water_supply.pdf]]
|!Name: |Rainwater Harvesting for Domestic Water Supply in Developing Countries |
|!Author: |Kent Keller |
|!Date: |Jun 1982 |
[>img[./Images/Book.png][./Documents/exped.pdf]]
|!Name: |Raised Field Agriculture in the Lake Titicaca Basin |
|!Author: |Clark L. Erickson |
|!Date: |1988 |
[>img[./Images/Book.png][./Documents/raisingchickensandducks.pdf]]
|!Name: |Raising Chickens and Ducks |
|!Author: |Harlan Attfield |
|!Date: |1990 |
[>img[./Images/Book.png][./Documents/ATTRA/dairyheifer.pdf]]
|!Name: |dairyheifer |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/1804_pdf.pdf]]
|!Name: |Raising Geese |
|!Author: |Irénée Modeste Bidima |
|!Date: |2014 |
[>img[./Images/Book.png][./Documents/raisingrabbits.pdf]]
|!Name: |Raising Rabbits |
|!Author: |Harlan Attfield |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/a3311.pdf]]
|!Name: |Raising Waterfowl |
|!Author: |Philip J. Clauer, John L. Skinner |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/ATMRL/05-252.pdf]]
|!Name: |Raising the Home Duck Flock |
|!Author: |Dave Holderread |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/ATTRA/ratite.pdf]]
|!Name: |ratite |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/greener_curry.pdf]]
|!Name: |Recipe for a Greener Curry |
|!Author: |Zeenat Anjari, Sustain |
|!Date: |2007 |


[>img[./Images/Book.png][./Documents/recycling_organic_waste.pdf]]
|!Name: |Recycling Organic Waste |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/recycling_plastics.pdf]]
|!Name: |Recycling Plastics |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/recycling_rubber.pdf]]
|!Name: |Recycling Rubber |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/CAT/recycling-in-the-home.pdf]]
|!Name: |Recycling in the Home |
|!Author: |[[CAT]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/md 0710 - red meats.pdf]]
|!Name: |MD 0710 - Red Meats |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/reduced oil dependence through transport electrification.pdf]]
|!Name: |Reduced oil dependence through transport electrification |
|!Author: |Alan S. Drake |
|!Date: |May 2006 |
[>img[./Images/Book.png][./Documents/CAT/constructed-wetlands-and-reed-beds.pdf]]
|!Name: |Reed Beds and Constructed Wetlands |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/whitepaper.pdf]]
|!Name: |Regenerative Organic Agriculture and Climate Change |
|!Author: |Rodale Institute |
|!Date: | |
[>img[./Images/Book.png][./Documents/us marine corps - remote sensor operations mcrp 2-24b.pdf]]
|!Name: |Remote Sensor Operations |
|!Author: |US Marine Corps |
|!Date: |Apr 1997 |
/***
|Name:|RenameTagsPlugin|
|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Version:|3.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
***/
//{{{
config.renameTags = {

  prompts: {
    rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
    remove: "Remove the tag '%0' from %1 tidder%2?"
  },

  removeTag: function(tag,tiddlers) {
    store.suspendNotifications();
    for (var i=0;i<tiddlers.length;i++) {
      store.setTiddlerTag(tiddlers[i].title,false,tag);
    }
    store.resumeNotifications();
    store.notifyAll();
  },

  renameTag: function(oldTag,newTag,tiddlers) {
    store.suspendNotifications();
    for (var i=0;i<tiddlers.length;i++) {
      store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old
      store.setTiddlerTag(tiddlers[i].title,true,newTag);  // add new
    }
    store.resumeNotifications();
    store.notifyAll();
  },

  storeMethods: {

    saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,

    saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created,creator) {
      if (title != newTitle) {
        var tagged = this.getTaggedTiddlers(title);
        if (tagged.length > 0) {
          // then we are renaming a tag
          if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))
            config.renameTags.renameTag(title,newTitle,tagged);

          if (!this.tiddlerExists(title) && newBody == "")
            // dont create unwanted tiddler
            return null;
        }
      }
      return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created,creator);
    },

    removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,

    removeTiddler: function(title) {
      var tagged = this.getTaggedTiddlers(title);
      if (tagged.length > 0)
        if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
          config.renameTags.removeTag(title,tagged);
      return this.removeTiddler_orig_renameTags(title);
    }

  },

  init: function() {
    merge(TiddlyWiki.prototype,this.storeMethods);
  }
}

config.renameTags.init();

//}}}
[>img[./Images/Book.png][./Documents/renewble energy glossary.pdf]]
|!Name: |Renewable Energy Glossary |
|!Author: |Renew Magazine |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/energyopp.pdf]]
|!Name: |energyopp |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/sheet metal - repousse work.pdf]]
|!Name: |Repousse Work |
|!Author: |Book Extract |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/vegetable-guide.pdf]]
|!Name: |vegetable-guide |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0568 - respiratory diseases & disorders.pdf]]
|!Name: |MD 0568 - Respiratory Diseases & Disorders |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/184182284-restoring-the-balance-in-bee-keeping.pdf]]
|!Name: |Restoring the Balance in Bee Keeping |
|!Author: |Phil Chandler |
|!Date: |Nov 2003 |
[>img[./Images/Book.png][./Documents/rethinking_britains_food_security.pdf]]
|!Name: |Rethinking Britain’s Food Security |
|!Author: |David Barling, Rosalind Sharpe, Tim Lang |
|!Date: |Nov 2008 |
[>img[./Images/Book.png][./Documents/ATTRA/energyinvestments.pdf]]
|!Name: |energyinvestments |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/25-657.pdf]]
|!Name: |Rice Husk Ash Cement |
|!Author: |Ray Smith |
|!Date: |1984 |
[>img[./Images/Book.png][./Documents/us marine corps - rifle marksmanship mcrp 3-01a.pdf]]
|!Name: |Rifle Marksmanship |
|!Author: |US Marine Corps |
|!Date: | |
[>img[./Images/Book.png][./Documents/Public/riverside_recipe_book___.pdf]]
|!Name: |Riverside Recipe Book |
|!Author: | |
|!Date: |1890 |
[>img[./Images/Book.png][./Documents/rocket_baking_oven_manual_november_2008.pdf]]
|!Name: |Rocket Baking Oven |
|!Author: |Leonard Mugerwa and Joseph Kirule |
|!Date: |Nov 2008 |
[>img[./Images/Book.png][./Documents/rocketmassheater-annex6-letter.pdf]]
|!Name: |Rocket Mass Heater: 6inch Diameter |
|!Author: |Erica and Ernie Wisner |
|!Date: | |
[>img[./Images/Book.png][./Documents/rmh-owners-manual-mobile.pdf]]
|!Name: |Rocket Mass Heaters Owners Manual |
|!Author: |Erica and Ernie Wisner |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_rocket_stove.pdf]]
|!Name: |Rocket Stove |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0172 - rodent biology, survey & control.pdf]]
|!Name: |MD 0172 - Rodent Biology, Survey & Control |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/rooftop_&_urban_gardening.pdf]]
|!Name: |Rooftop and Urban Gardening |
|!Author: |Dr. Martin L. Price |
|!Date: |1996 |
[>img[./Images/Book.png][./Documents/roofwater_harvesting_-_a_handbook_for_practitioner_-_th_thomas_and_db_martinson.pdf]]
|!Name: |Roofwater Harvesting |
|!Author: |TH Thomas and DB Martinson |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/ATTRA/rotgraze.pdf]]
|!Name: |rotgraze |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/rotor_design_for_horizontal_axis_windmills.pdf]]
|!Name: |Rotor design for horizontal axis windmills |
|!Author: |W.A.M. Jansen and P.T. Smulders |
|!Date: |May 1977 |
[>img[./Images/Book.png][./Documents/USAMD/md 0935 - routine procedures for an operation.pdf]]
|!Name: |MD 0935 - Routine Procedures for an Operation |
|!Author: |US Army Medical Department |
|!Date: | |

[>img[./Images/Book.png][./Documents/ATTRA/ruminant.pdf]]
|!Name: |ruminant |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/rural_water_supply_in_china.pdf]]
|!Name: |Rural Water Supply in China |
|!Author: |International Development Research Centre |
|!Date: |1981 |
[>img[./Images/Book.png][./Documents/ATMRL/rural_water_supply_in_developing_countries.pdf]]
|!Name: |Rural Water Supply in Developing Countries |
|!Author: |International Development Research Centre |
|!Date: |Aug 1980 |
[>img[./Images/Book.png][./Documents/ATMRL/rural_water_supply_in_nepal-hydrology_watercycle_course.pdf]]
|!Name: |Rural Water Supply in Nepal: 1 - Hydrology Watercycle Course |
|!Author: |Remote Area and Local Development Department, Government of Nepal |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/ATMRL/rural_water_supply_in_nepal-stone_masonry_course.pdf]]
|!Name: |Rural Water Supply in Nepal: Stone Masonry Course |
|!Author: |Remote Area and Local Development Department, Government of Nepal |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/ATMRL/rural_water_supply_in_nepal-concrete_course.pdf]]
|!Name: |Rural Water Supply in Nepal: Concrete Course |
|!Author: |Remote Area and Local Development Department, Government of Nepal |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/ATMRL/rural_water_supply_in_nepal-pipe_and_fitting_course.pdf]]
|!Name: |Rural Water Supply in Nepal: Pipe and Fitting Course |
|!Author: |Remote Area and Local Development Department, Government of Nepal |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/ATMRL/rural_water_supply_in_nepal-construction_design_course.pdf]]
|!Name: |Rural Water Supply in Nepal: Construction Design Course |
|!Author: |Remote Area and Local Development Department, Government of Nepal |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/rural_and_urban_permaculture_in_the_context_of_danish_society.pdf]]
|!Name: |Rural and Urban Permaculture in the Context of Danish Society |
|!Author: |Marie-Ève Lépine, Jessica Scott, Eileen Leung, Benno Hansen |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/sas.survival.handbook.2nd.edition.pdf]]
|!Name: |SAS Survival Handbook 2nd Edition |
|!Author: |John Wiseman |
|!Date: |2009 |
config.macros.SVG =
 { handler: function (place, macroName, params, wikifier, paramString,
tiddler)
   { var svg = params[0] ;
     var svgObject = document.createElement('object');
     svgObject.setAttribute('type', 'image/svg+xml');
     svgObject.setAttribute('data', 'data:image/svg+xml,'+ '<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg"  xmlns:xlink="http://www.w3.org/1999/xlink">'+
     svg +'</svg>' );
     jQuery(place).append(svgObject);
   }
 }; 
[>img[./Images/Book.png][./Documents/medical_-_safeburialpractices.pdf]]
|!Name: |Safe Burial Practices |
|!Author: |Book Extract |
|!Date: | |
/%
Image:SaladDressing.jpg
Thumbnail:SaladDressing_thumbnail.jpg
%/
[img[./Images/SaladDressing_small.jpg][./Images/SaladDressing.jpg]]
[>img[./Images/Book.png][./Documents/salad days - food facts.pdf]]
|!Name: |Salad days - food facts |
|!Author: |Alexis Vaughan |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/sample_farm_manual.pdf]]
|!Name: |sample_farm_manual |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/17-397.pdf]]
|!Name: |Sanitation without Water |
|!Author: |Uno Winblad and Wen Kitama |
|!Date: |1985 |
/***
|Name:|SaveCloseTiddlerPlugin|
|Description:|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|
|Version:|3.0a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#SaveCloseTiddlerPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
To use these add them to the commands in ToolbarCommands under EditToolbar,
or in the MptwTheme tiddler under EditTemplate.
***/
//{{{
merge(config.commands,{

  saveCloseTiddler: {
    text: 'done/close',
    tooltip: 'Save changes to this tiddler and close it',
    handler: function(ev,src,title) {
      var closeTitle = title;
      var newTitle = story.saveTiddler(title,ev.shiftKey);
      if (newTitle)
        closeTitle = newTitle;
      return config.commands.closeTiddler.handler(ev,src,closeTitle);
    }
  },

  cancelCloseTiddler: {
    text: 'cancel/close',
    tooltip: 'Undo changes to this tiddler and close it',
    handler: function(ev,src,title) {
      // the same as closeTiddler now actually
      return config.commands.closeTiddler.handler(ev,src,title);
    }
  }

});

//}}}
[>img[./Images/Book.png][./Documents/ATMRL/savonius_rotor_design_for_a_vertical_windmill_oil_drum_design.pdf]]
|!Name: |Savonius rotor construction: Verticle axis wind machines from oil drums |
|!Author: |Jozef A. Kozlowski |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/ATMRL/sawdust_burning_space_heater_stove.pdf]]
|!Name: |Sawdust Burning Space Heater Stove |
|!Author: |Daniel A. Huntington |
|!Date: |Apr 1975 |
[>img[./Images/Book.png][./Documents/ATTRA/scalingup.pdf]]
|!Name: |scalingup |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/scaling_up_midwest_case_studies.pdf]]
|!Name: |scaling_up_midwest_case_studies |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/continuousharvest.pdf]]
|!Name: |continuousharvest |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/school_composting.pdf]]
|!Name: |School Composting |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/scoraig_wind_turbine-hugh_piggot.pdf]]
|!Name: |scoraig_wind_turbine-hugh_piggot |
|!Author: |Hugh Piggot |
|!Date: |May 2002 |
[>img[./Images/Book.png][./Documents/md 0933 - scrub, gown & glove procedures.pdf]]
|!Name: |MD 0933 - Scrub, Gown & Glove Procedures |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/seasonext.pdf]]
|!Name: |seasonext |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/seaweed cultivation.pdf]]
|!Name: |Seaweed Cultivation Pilot Trials |
|!Author: |Dr Pia Winberg, Dr Danielle Skropeta & Ms Alex Ullrich. Rural Industries Research and Development Corporation, Australia |
|!Date: |Jan 2011 |
[>img[./Images/Book.png][./Documents/Public/second_parish_cookbook.pdf]]
|!Name: |Second Parish Cook Book |
|!Author: |Mrs P A Brooks (and others) |
|!Date: |1896 |
[>img[./Images/Book.png][./Documents/secret hiding places.pdf]]
|!Name: |Secret Hiding Places |
|!Author: |Charles Robinson |
|!Date: |1981 |

[>img[./Images/Book.png][./Documents/security storage containers.pdf]]
|!Name: |Security Storage Containers |
|!Author: |R A Johnson |
|!Date: |Oct 1977 |
[>img[./Images/Book.png][./Documents/ATTRA/localfoods1.pdf]]
|!Name: |localfoods1 |
|!Author: |[[ATTRA]] |
|!Date: | |
/***
|Name:|SelectThemePlugin|
|Description:|Lets you easily switch theme and palette|
|Version:|1.0.1a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#SelectThemePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
* Borrows largely from ThemeSwitcherPlugin by Martin Budden http://www.martinswiki.com/#ThemeSwitcherPlugin
* Theme is cookie based. But set a default by setting config.options.txtTheme in MptwConfigPlugin (for example)
* Palette is not cookie based. It actually overwrites your ColorPalette tiddler when you select a palette, so beware.
!Usage
* {{{<<selectTheme>>}}} makes a dropdown selector
* {{{<<selectPalette>>}}} makes a dropdown selector
* {{{<<applyTheme>>}}} applies the current tiddler as a theme
* {{{<<applyPalette>>}}} applies the current tiddler as a palette
* {{{<<applyTheme TiddlerName>>}}} applies TiddlerName as a theme
* {{{<<applyPalette TiddlerName>>}}} applies TiddlerName as a palette
***/
//{{{

config.macros.selectTheme = {
  label: {
    selectTheme:"select theme",
    selectPalette:"select palette"
  },
  prompt: {
    selectTheme:"Select the current theme",
    selectPalette:"Select the current palette"
  },
  tags: {
    selectTheme:'systemTheme',
    selectPalette:'systemPalette'
  }
};

config.macros.selectTheme.handler = function(place,macroName)
{
  var btn = createTiddlyButton(place,this.label[macroName],this.prompt[macroName],this.onClick);
  // want to handle palettes and themes with same code. use mode attribute to distinguish
  btn.setAttribute('mode',macroName);
};

config.macros.selectTheme.onClick = function(ev)
{
  var e = ev ? ev : window.event;
  var popup = Popup.create(this);
  var mode = this.getAttribute('mode');
  var tiddlers = store.getTaggedTiddlers(config.macros.selectTheme.tags[mode]);
  // for default
  if (mode == "selectPalette") {
    var btn = createTiddlyButton(createTiddlyElement(popup,'li'),"(default)","default color palette",config.macros.selectTheme.onClickTheme);
    btn.setAttribute('theme',"(default)");
    btn.setAttribute('mode',mode);
  }
  for(var i=0; i<tiddlers.length; i++) {
    var t = tiddlers[i].title;
    var name = store.getTiddlerSlice(t,'Name');
    var desc = store.getTiddlerSlice(t,'Description');
    var btn = createTiddlyButton(createTiddlyElement(popup,'li'), name?name:t, desc?desc:config.macros.selectTheme.label['mode'], config.macros.selectTheme.onClickTheme);
    btn.setAttribute('theme',t);
    btn.setAttribute('mode',mode);
  }
  Popup.show();
  return stopEvent(e);
};

config.macros.selectTheme.onClickTheme = function(ev)
{
  var mode = this.getAttribute('mode');
  var theme = this.getAttribute('theme');
  if (mode == 'selectTheme')
    story.switchTheme(theme);
  else // selectPalette
    config.macros.selectTheme.updatePalette(theme);
  return false;
};

config.macros.selectTheme.updatePalette = function(title)
{
  if (title != "") {
    store.deleteTiddler("ColorPalette");
    if (title != "(default)")
      store.saveTiddler("ColorPalette","ColorPalette",store.getTiddlerText(title),
          config.options.txtUserName,undefined,"");
    refreshAll();
    if(config.options.chkAutoSave)
      saveChanges(true);
  }
};

config.macros.applyTheme = {
  label: "apply",
  prompt: "apply this theme or palette" // i'm lazy
};

config.macros.applyTheme.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
  var useTiddler = params[0] ? params[0] : tiddler.title;
  var btn = createTiddlyButton(place,this.label,this.prompt,config.macros.selectTheme.onClickTheme);
  btn.setAttribute('theme',useTiddler);
  btn.setAttribute('mode',macroName=="applyTheme"?"selectTheme":"selectPalette"); // a bit untidy here
}

config.macros.selectPalette = config.macros.selectTheme;
config.macros.applyPalette = config.macros.applyTheme;

config.macros.refreshAll = { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
  createTiddlyButton(place,"refresh","refresh layout and styles",function() { refreshAll(); });
}};

//}}}
[>img[./Images/Book.png][./Documents/ATMRL/selecting_water_pumping_windmills.pdf]]
|!Name: |Selecting water pumping windmills |
|!Author: |New Mexico Energy Institute |
|!Date: |Jan 1978 |
[>img[./Images/Book.png][./Documents/ATTRA/sellingtorestaurants.pdf]]
|!Name: |sellingtorestaurants |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/tomato_processing.pdf]]
|!Name: |~Semi-Processing of Tomatoes |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/17-398.pdf]]
|!Name: |Septic Tank Practices |
|!Author: |Peter Warshall |
|!Date: |1976 |
[>img[./Images/Book.png][./Documents/setting_the_table-sustainable_diet_policy_recommendations.pdf]]
|!Name: |Setting the table - Advice to Government on priority elements of sustainable diets |
|!Author: |Sustainable Development Commission |
|!Date: |Dec 2009 |
[>img[./Images/Book.png][./Documents/general_-_shelters.pdf]]
|!Name: |Seven Primitive Survival Shelters |
|!Author: |Internet Article |
|!Date: | |
/***
|''Name''|SharedTiddlersPlugin|
|''Description''|Introduces a possibility to use tiddlers from other ~TiddlyWikis (with or without importing them)|
|''Documentation''|http://yakovl.bplaced.net/TW/STP/STP.html#SharedTiddlersPluginInfo|
|''Type''|plugin|
|''Version''|2.4.0"'|
|''~CoreVersion''|2.2.6|
|''Requires''|UpToDateFiltersPlugin|
|''Requirements note''|[[UpToDateFiltersPlugin|http://yakovl.bplaced.net/TW/ExtraFilters.html#UpToDateFiltersPlugin]] is necessary only for TW below v2.6.2|
|''Source''|http://yakovl.bplaced.net/TW/STP/STP.html#SharedTiddlersPlugin|
|''Author''|Yakov Litvin|
|''Forked from''|[[IncludePlugin|http://tiddlywiki.abego-software.de/#IncludePlugin]], by Udo Borkowski|
|''Contact''|see [[docs|SharedTiddlersPluginInfo]]|
|''Copyright''|Yakov Litvin, 2013|
|''Licence''|[[BSD-like open source license|http://yakovl.bplaced.net/TW/STP/STP.html#%5B%5BYakov%20Litvin%20Public%20Licence%5D%5D]] |
|>| In this tiddler, the code is minified and hidden; the full code can be found [[here|http://yakovl.bplaced.net/TW/STP/STP.html#SharedTiddlersPluginCode]]. |
''Config:''
***/
//{{{
config.options.STP_hijackPrettyLink = true;
config.options.STP_hijackImageFormatter = false;
//}}}
// /%
config.filters.all = function(results,match) {
	if(match[3] == "with included") { // brings included tiddlers as well
		var m,matched = this.reverseLookup();
		for(m = 0; m < matched.length; m++)
			results.pushUnique(matched[m]);
	} else
		this.forEachTiddler(function(tName,tiddler){
			results.pushUnique(tiddler);
		});
	return results;
};
config.filters.includedFrom = function(results,match) {

	var url = twWeb.getStoreUrlById(match[3]);
	if(!url)
		return [];

	for(var i = 0; i < results.length; i++)
		if(results[i].getIncludeURL() != url)
			results.splice(i--,1);
	return results;
};
config.filters.external = function(results,match) {

	for(var i = 0; i < results.length; i++)
		if(!results[i].getIncludeURL())
			results.splice(i--,1);
	return results;
};
config.filters.internal = function(results,match) {

	for(var i = 0; i < results.length; i++)
		if(results[i].getIncludeURL())
			results.splice(i--,1);
	return results;
};

(function(){
//==============================================================================
// install only once stuff

// Ensure the global abego namespace is set up.
if (!window.abego) window.abego = {};

// Install only once (don't install if abego.IncludePlugin is installed as well)
if (abego.TiddlyWikiIncluder)
	return alert("Warning: abego.TiddlyWikiIncluder already exists, so probably two copies of SharedTiddlersPlugin and/or IncludePlugin are installed and activated. It is highly recommended to deactivate all but one copy. You can find those by searching 'abego.TiddlyWikiIncluder'.");

// abego.TiddlyWikiIncluder is defined near the end of the code

// Define the API namespace:
window.sharedTiddlersAPI = {};

//==============================================================================
// Helpers

// This is used instead of displayMessage, because the latter sometimes doesn't show the messages
var displayAndLogMessage = function(text,linkText) {
	displayMessage(text,linkText);
	console.log(text);
};

var invokeLater = function(func, delay, priority) {
	return setTimeout(func,delay);
};

//------------------------------------------------------------------------------
// url helpers

var isRelativeURL = function(url) {
// as Unix filesystem root is "/", urls starting with it are not considered as relative

	return (url.search(/^(?:((http(s)?)|(file)):)|(.\:\\)|(\\\\)|(\/)/) != 0);
};

var getPathFromURL = function(url) {

	return (url.lastIndexOf("/") > -1) ?
		url.substr(0, url.lastIndexOf("/") + 1) : "";
};

var resolveUrlFrom = function(urlToResolve, sourceUrl) {

	return (isRelativeURL(urlToResolve) && sourceUrl) ?
		getPathFromURL(sourceUrl) + urlToResolve : urlToResolve;
};

// limitedly turns URI (URL) reference into an absolute URI (URL) and windows paths into URL
var stp_resolveURL = function(url) {

	if (url.search(/^((http(s)?)|(file)):/) != 0) {
	// no protocol prefix..

		if (isRelativeURL(url))

			url = resolveUrlFrom(url, document.location.toString());
		else
		// "url" is an "absolute" path to a local file. Prefix it with file://

			url = "file://" + url;

		// replace every \ by a /, to cover Windows style pathes
		url = url.replace(/\\/mg,"/");
	}
	return url;
};

//------------------------------------------------------------------------------
// file/tw loading functions

// an evolution of the deprecated loadRemoteFile function with TW 2.7.0 codes
var stp_loadRemoteFile = function(url,callback,params) {
	if(version.major < 2 || version.major == 2 && version.minor < 7) {
		var httpSuccess = function(xhr) {
			try {
				return (!xhr.status && location.protocol === "file:") ||
					(xhr.status >= 200 && xhr.status < 300) ||
					xhr.status === 304 || xhr.status === 1223;
			} catch(e) {}
			return false;
		};
		var options = {
			type:"GET",
			url:url,
			processData:false,
			data:undefined, // cut off?
			cache:false,
			beforeSend: function(xhr) {;},
			complete: function(xhr,textStatus) {
				if(httpSuccess(xhr))
					callback(true,params,xhr.responseText,url,xhr);
				else
					callback(false,params,null,url,xhr);
			}
		};
		try {
			if(window.Components && window.netscape && window.netscape.security && document.location.protocol.indexOf("http") == -1)
				window.netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
		} catch (ex) {}
		return jQuery.ajax(options);
	} else
		return httpReq("GET",url,callback,params);
};

// Asynchronously load the given (local or remote) file.
//
// @param	url
// value:	either an URL or a local file path to a file
//
//	Examples:
//	* http://www.abego-software.de/index.html
//	* file:///C:/abegoWebSite-Copy/index.html
//	* C:\abegoWebSite-Copy\index.html    (for Windows machines)
//
//	Notice: backslashes in JavaScript string constants must be escaped,
//	i.e. the last example must be written as: "C:\\abegoWebSite-Copy\\index.html"
//	when "hardcoded" in JavaScript source code.
//
// @param	callback
// value:	function(content,url,params,errorMessage)
//		called at the end of the operation.
//		On success content holds the content of the loaded file.
//		On error content is undefined and errorMessage holds an error message.
//		params is the params passed into stp_LoadFile.
//
// @param	params
//		passed through to the callback function
//
var stp_LoadFile = function(url,callback,params) {

	var onLoad = function(status,params,responseText,url,xhr) {
		return status
				? callback(responseText, url, params)
				: callback(undefined, url, params, "Error loading %0".format([url]));
	};

	// Make sure the URL is a real URL, with protocol prefix etc.
	url = stp_resolveURL(url);

	stp_loadRemoteFile(url,onLoad,params);
};

// Asynchronously load the given (local or remote) TiddlyWiki store.
//
// @param	url
// value:	either an URL or a local file path to a TiddlyWiki file (absolute or relative)
//
//	Examples:
//	* http://www.abego-software.de/index.html
//	* file:///C:/abegoWebSite-Copy/index.html
//	* include/beta.html
//	* C:\abegoWebSite-Copy\index.html    (for Windows machines)
//
//	Notice: backslashes in JavaScript string constants must be escaped,
//	i.e. the last example must be written as: "C:\\abegoWebSite-Copy\\index.html"
//	when "hardcoded" in JavaScript source code.
//
// @param	callbackWithStore
// value:	function(theStore,url,params,errorMessage)
//			called at the end of the operation.
//			On success theStore holds the loaded store (a TiddlyWiki object).
//			On error theStore is undefined and errorMessage holds an error message.
//			params is the params passed into stp_loadTiddlyWikiStore
//
// @param	params
//		passed through to the callbackWithStore
//
// @param	progress	[optional]
// value:	function(message, sender, state, url, params)
//		called in various situations during the operation,
//		typically used to show "the progress" of the operation.
//		sender: the constant "stp_loadTiddlyWikiStore"
//		state: one of these: "Started", "Processing", "Done", "Failed"
//		"Processing" means the data has been received and in now processed.
//
var stp_loadTiddlyWikiStore = function(url,callbackWithStore,params,progress) {

	var sendProgress = function(message, state) {
		if (progress)
			progress(message,"stp_loadTiddlyWikiStore",state,url,params);
	};

	var sendError = function(message) {
		sendProgress("Error when loading %0".format([url]),"Failed");
		callbackWithStore(undefined, url, params, message);
		return message;
	};

	var sendStore = function(store) {
		sendProgress("Loaded %0".format([url]),"Done");
		callbackWithStore(store, url, params);
		return null;
	};


	var callback = function(content,theURL,params,errorMessage) {
		if (content === undefined) {
			sendError(errorMessage);
			return;
		};

		sendProgress("Processing %0".format([url]),"Processing");
		var invalidFileErrorMsg = "The file '%0' does not appear to be a valid TiddlyWiki file";
		try {
			// Load the content from the "content" string into a TiddlyWiki() object
			var importStore = new TiddlyWiki();
			var errorText = importStore.importTiddlyWiki(content)? null :
				"Problem with importing TiddlyWiki, probable reason is: "+
				invalidFileErrorMsg.format([url]);
			if(errorText)
				sendError(errorText);
			else
				sendStore(importStore);
		} catch (ex) {
			sendError(exceptionText(ex));
		};
	};

	sendProgress("Start loading %0".format([url]),"Started");
	stp_LoadFile(url,callback,params);
};

//------------------------------------------------------------------------------
// plugin installation helpers

var getArbitraryPluginInfo = function(tiddler) {
// getPluginInfo can't be used (for included tiddlers) because of the ugly slice handling of the core
//  (it uses {store} where it could handle the tiddler directly)
	var pInfo = {};

	var slices = {};
	var requiredInfo = ["Name","Description","Version","Requires","CoreVersion","Date","Source", "Author","License","Browsers"];
	store.slicesRE.lastIndex = 0;
	var match = store.slicesRE.exec(tiddler.text);
	while(match) {
		if(match[2])
			slices[match[2]] = match[3];
		else
			slices[match[5]] = match[6];
		match = store.slicesRE.exec(tiddler.text);
	}
	for(var i = 0; i < requiredInfo.length; i++)
		if(slices[requiredInfo[i]])
			pInfo[requiredInfo[i]] = slices[requiredInfo[i]];
	pInfo.tiddler = tiddler;
	pInfo.title = tiddler.title;
	pInfo.log = [];

	return pInfo;
}

var checkPluginInstalled = function(pluginName) {
	for(var i = 0; i < installedPlugins.length; i++)
		if(installedPlugins[i].title == pluginName || installedPlugins[i].Name == pluginName)
			return true;
	return false;
}

var installPlugin = function(tiddler,force) {

	var pluginName = getArbitraryPluginInfo(tiddler).Name || tiddler.title;
	// check if such a plugin was installed previously, return if so
	if(!force) // two layers to improve the speed in the "force == true" case
		if(checkPluginInstalled(pluginName))
			return;

	// get the plugin info
	var pluginInfo = getArbitraryPluginInfo(tiddler);
	if(tiddler.getIncludeURL())
		pluginInfo.log.push("included from "+tiddler.getIncludeURL());

	// install the plugin
	pluginInfo.executed = true;
	var startTime = new Date();

	try {
		window.eval(tiddler.text);
	} catch(ex) {
		pluginInfo.log.push(config.messages.pluginError.format([exceptionText(ex)]));
		pluginInfo.error = true;
		console.log("error evaluating " + tiddler.title, ex);
		story.displayTiddler(null,"PluginManager");
		displayMessage(config.messages.customConfigError);
	}
	pluginInfo.startupTime = String((new Date()) - startTime) + "ms";

	// register the plugin
	installedPlugins.push(pluginInfo);
}


//==============================================================================
// Shared Tiddlers Plugin

// Constants

var WAITING = "waiting";
var LOADING = "loading";

var ANI_DURATION_HIDE_STATE = 1000;

var REFRESH_PRIORITY = -200;
var ANIMATION_PRIORITY = -100;
var UPDATE_STATE_PRIORITY = -300;

// --------------------------------------------------
// Variables

var useInclude;         // this variable can be used to control include enabling by other things than cookies
var includedStores = {};  // url(String) -> TiddlyWiki or String; if not (yet) loaded a status or an error string
var pendingOnLoadURLs = []; // [] of String: a list of urls that should be passed with the next "notifyListeners"
var refreshTiddlyWikiTimerID; // for delayed refresh
var listeners = [];
var progress;

// rules pointing which stores tiddlers with conflicting names should be fetched from
function FetchPreferences() {
	var prefs = {};

	this.add = function(tiddlerName,sourceUrl,substitute,substituteShadow) {
		if(!substitute && !substituteShadow)
			return;
		if(prefs[tiddlerName] == undefined)
			prefs[tiddlerName] = {urlsSubs: [], urlsSubsSh: []};
		if(substitute)
			prefs[tiddlerName].urlsSubs.pushUnique(sourceUrl);
		if(substituteShadow)
			prefs[tiddlerName].urlsSubsSh.pushUnique(sourceUrl);
	};
/*	this.getPrefs = function(tiddlerName) {
		return jQuery.extend(true, {}, prefs[tiddlerName]);
	};
*/	this.getSubsUrl = function(tiddlerName) {
		var pref = prefs[tiddlerName];
		if(pref == null)
			return null;
		if(pref.urlsSubs.length == 0)
			return null;
		return pref.urlsSubs[0];
	};
	this.getSubsShUrl = function(tiddlerName) {
		var pref = prefs[tiddlerName];
		if(pref == null)
			return null;
		if(pref.urlsSubsSh.length == 0)
			return null;

		// check if there's a tiddler with both preferences
		var i, j;
		for(i = 0; i < pref.urlsSubs.length; i++)
			for(j = 0; i < pref.urlsSubsSh.length; j++)
				if(pref.urlsSubs[i] == pref.urlsSubsSh[j])
					return pref.urlsSubs[i];

		return pref.urlsSubsSh[0];
	};
	this.containSubsUrl = function(tName,url) {
		var pref = prefs[tName];
		if(pref == null)
			return false;
		return pref.urlsSubs.contains(url);
	};
	this.containSubsShUrl = function(tName,url) {
		var pref = prefs[tName];
		if(pref == null)
			return false;
		return pref.urlsSubsSh.contains(url);
	};
	this.removeByUrl = function(url) {  // removes all priorities of tiddlers, included from the url

		var tName, pref, i;

		for(tName in prefs) {
			pref = prefs[tName]
			for(i = 0; i < pref.urlsSubs.length; i++)
				if(pref.urlsSubs[i] == url)
					pref.urlsSubs.splice(i--,1);
			for(i = 0; i < pref.urlsSubsSh.length; i++)
				if(pref.urlsSubsSh[i] == url)
					pref.urlsSubsSh.splice(i--,1);
			// if (pref.urlsSubs.length == 0 && pref.urlsSubsSh.length == 0), not nec. to delete pref
		}
	};
};
var fetchPreferences = new FetchPreferences();

function Conflicts() {

	// hashmaps by tiddler name of potentially conflicting tiddlers with that name;
	// each element is a hashmap by url of tiddlers with such names
	var pConfs = {},  // doesn't contain info about tiddlers in the main store
	    pSConfs = {}; // for tiddlers that may conflict when substituting a shadow

	this.init = function() {
		// notify of name conflicts in the whole set of initial and included tiddlers?
		if(config.options.chkWarnOnSharedTiddlersConflicts == undefined) config.options.chkWarnOnSharedTiddlersConflicts = true;
		// use alert() for notifications?
		if(config.options.chkAlertOnSharedTiddlersConflicts == undefined) config.options.chkAlertOnSharedTiddlersConflicts = false;
	};
	// check whether a new tiddler (not included yet) may cause a conflict (now or in the future)
	this.checkNew = function(tName, url, subs, subsSh) {

		// use to add when a tiddler with such name is already present
		var addData = function(confsMap, tidParams) {

			var includeData = function(tidParams) {		// better to create a separate class
				return { subs: tidParams.substitute, warned: false };
			};
			var getSubsPriority = function(data) {
				return data.subs;
			}

			var conf = confsMap[tidParams.title];
			if(!conf) {
				conf = confsMap[tidParams.title] = {};
				conf[tidParams.url] = includeData(tidParams);
			} else {
				var confPart = conf[tidParams.url];
				if(!confPart)
					conf[tidParams.url] = includeData(tidParams);
				else {
					if(!getSubsPriority(confPart) && tidParams.substitute)
						conf[tidParams.url] = includeData(tidParams);
						// better to set subs to true and warned to false
				}
			}
		}

		// check if there's a tiddler with such a name
		var existingTid = forEachLoadedStore(function(theStore, storeUrl) {	// in included stores
			if(storeUrl != url)
				return theStore.fetchTiddler(tName);
		}) || window.sharedTiddlersAPI.orig_fetchTiddler(tName);		// or in the main one
		// if the tiddler is added to the main store after exactly one tiddler is included, no conflict is
		// detected by this algorithm; also, it doesn't account deleting the tiddler from the main store

		if(!existingTid)
			return;
		var mainStoreId = "main store",
		    existingTidUrl = existingTid.getIncludeURL();

		// check conflicts among all included tiddlers (important when no shadow with such name exists)
		if(!pConfs[tName])
			addData(pConfs, {
				title: tName,
				url: existingTidUrl || mainStoreId,
				substitute: existingTidUrl ? fetchPreferences.containSubsUrl(tName,existingTidUrl) : undefined
			});
		addData(pConfs, { title: tName, url: url, substitute: subs });

		// check conflicts among tiddlers that substitute a shadow
		if(subsSh) {
			var existingTidSubsSh = forEachLoadedStore(function(theStore, storeUrl) {
				if(storeUrl != url && fetchPreferences.containSubsShUrl(tName,storeUrl))
					return theStore.fetchTiddler(tName);
			}) || window.sharedTiddlersAPI.orig_fetchTiddler(tName);
			// same problems

			if(!existingTidSubsSh)
				return;
			var existingTidSubsShUrl = existingTidSubsSh.getIncludeURL();

			// conflicts among substituting tiddlers are important when a shadow with such name exists
			if(!pSConfs[tName])
				addData(pSConfs, {
					title: tName,
					url: existingTidSubsShUrl || mainStoreId,
					substitute: existingTidSubsShUrl ? fetchPreferences.containSubsShUrl(tName,existingTidSubsShUrl) : undefined
				});
			addData(pSConfs, { title: tName, url: url, substitute: subs });
		}
	};
	this.markNodeUnloaded = function(url) {
		var t;
		for(t in pConfs)
			if(pConfs[t][url])
				delete pConfs[t][url];
		for(t in pSConfs)
			if(pSConfs[t][url])
				delete pSConfs[t][url];
	};
	this.notify = function() {
		var msgAndLog = config.options.chkWarnOnSharedTiddlersConflicts;
		var doAlert   = config.options.chkAlertOnSharedTiddlersConflicts;
		if(!doAlert && !msgAndLog)
			return; // no conflict is marked as "warned" - this is by intent
		var tName, tUrl;

		var checkOrDisplayConflicts = function(map,msgAndLog,markWarned) {
			var msg = ""; // message to return (for alerting etc)
			var addM = function(m) { // pushes all notification messages
				msg += ("\n"+m);
				if(msgAndLog)
					displayAndLogMessage(m);
			};
			var tName, tSources, tUrl, subs, nOfConflicting, newPresent,
				subsMsg = "  (with the subsitute priority)";
				// mark conflicts among tiddlers with the substitute priority

			// find out where necessary, notify
			for(tName in map) {
				tSources = map[tName];

				// find out which priority is of interest
				subs = false;
				for(tUrl in tSources)
					if(tSources[tUrl].subs)
						subs = true;

				// if there's only one tiddler with "substitute", there's no conflict
				nOfConflicting = 0;
				for(tUrl in tSources)
					if(tSources[tUrl].subs == subs)
						nOfConflicting++;
				if(nOfConflicting < 2)
					break;

				// find out if new conflicting tiddlers are present
				newPresent = false;
				for(tUrl in tSources)
					if(tSources[tUrl].subs == subs && !tSources[tUrl].warned)
						newPresent = true;

				// start notification
				if(newPresent) {
					addM("* "+tName+" in:");
					for(tUrl in tSources)
						if(tSources[tUrl].subs == subs && !tSources[tUrl].warned) {
							addM("** "+tUrl);
							if(markWarned)
								tSources[tUrl].warned = true;
						}
					if(subs)
						addM(subsMsg);
				}
			}
			return msg;
		};

		var msg = "";
		if(checkOrDisplayConflicts(pConfs,false,false)) { // new conflicts present
			msg += "New conflicts:";
			if(msgAndLog) displayAndLogMessage(msg);
			msg += checkOrDisplayConflicts(pConfs,msgAndLog,true);
		};
		if(checkOrDisplayConflicts(pSConfs,false,false)) { // new conflicts among tiddlers substituting shadows present
			if(msg) msg += "\n";
			var m = "New conflicts among tiddlers competing for substituting shadows:";
			msg += m;
			if(msgAndLog) displayAndLogMessage(m);
			msg += checkOrDisplayConflicts(pSConfs,msgAndLog,true);
		};
		if(doAlert && msg)
			alert(msg);
	};
//	this.state = // return current state as a string (for includeState)
};
conflicts = new Conflicts();
conflicts.init();

// --------------------------------------------------
// Helper functions

var isIncludeEnabled = function() {
	if (useInclude === undefined)
		useInclude = config.options.chkUseInclude === undefined || config.options.chkUseInclude;
	return useInclude;
};

var getMissingIncludeMsg = function(url) {
	return "No include specified for %0".format([url])
};

// Called after one or more included TiddlyWikis are loaded
//
var notifyListeners = function() {
	var urls = pendingOnLoadURLs;
	pendingOnLoadURLs = [];
	if (urls.length)
		for (var i = 0; i < listeners.length; i++)
			listeners[i](urls);
};

var idleCount; // Reset to 0 when the system is "not idle", incremented inside refreshTiddlyWiki

var refreshTiddlyWiki = function() {
	// To avoid to much refreshing/flickering don't refresh immediately
	// but wait until the system was idle for a certain time.

	if (refreshTiddlyWikiTimerID !== undefined) clearInterval(refreshTiddlyWikiTimerID);

	idleCount = 0;

	var sendDone = function() {
		twWeb.sendProgress("","","Done");
	};

	refreshTiddlyWikiTimerID = setInterval(function() {
		idleCount++;
		if (idleCount <= 10)
			return;

		clearInterval(refreshTiddlyWikiTimerID);
		refreshTiddlyWikiTimerID = undefined;

		twWeb.sendProgress("Refreshing...","","");
		refreshDisplay();
		invokeLater(sendDone,0,REFRESH_PRIORITY);
	},1);
};

// Calls callback for every loaded store and returns the first non-false/null.. value returned by callback.
//
// @param	callback
// value:	function(store, url)
//
var forEachLoadedStore = function(callback) {
	var result;
	for(var url in includedStores) {
		var theStore = twWeb.getStore(url);
		if (theStore && (result = callback(theStore, url)))
			return result;
	}
};

// hijack fetchTiddler so that it works with tiddlers from included stores as well
var attachToStore = function() {
	if (!window.store)
		return invokeLater(attachToStore,100);

	var orig_fetchTiddler = store.fetchTiddler;
	window.sharedTiddlersAPI.orig_fetchTiddler = orig_fetchTiddler;
	// reserve access to the original method to be able to fetch tiddlers from main store,
	// including substituted ones

	store.fetchTiddler = function(title) {
		var t, subsUrl = fetchPreferences.getSubsUrl(title), subsShUrl;

		// first, look for the tiddler in the main store, unless there's nothing to substitute with
		if(!subsUrl) {
			t = orig_fetchTiddler.apply(this,arguments);
			if(t) return t;
		} else
			return includedStores[subsUrl].fetchTiddler(title);

		// then, look for shadowed tiddlers in main store and external ones to substitute those
		if(config.shadowTiddlers[title] !== undefined) {
			if(subsShUrl = fetchPreferences.getSubsShUrl(title))
				return includedStores[subsShUrl].fetchTiddler(title);
			else
				return undefined;
		};

		// Don't look for the "New Tiddler" tiddler in the included TiddlyWikis,
		// since returning such a tiddler (that is readonly) will make it impossible
		// in the Main TiddlyWiki to create new tiddlers via standart "new tiddler" button.
		if (title == config.macros.newTiddler.title) return undefined;

		// finally, look for an external one without "substitute" preference
		return forEachLoadedStore(function(theStore, url) {
			return theStore.fetchTiddler(title);
		});
	};

	// refresh TiddlyWiki to reflect the new included Tiddlers (if we have any).
	if(twWeb.getIncludedStoresUrls().length)
		refreshTiddlyWiki();
};

var includeFromIncludeList = function() {
	if (!window.store)
		return invokeLater(includeFromIncludeList,100);

	var includeListText = store.getTiddlerText("IncludeList");
	if (includeListText)
		wikify(includeListText,document.createElement("div"),undefined,store.fetchTiddler("IncludeList"));
};

var getFunctionUsingForReallyEachTiddler = function(func) {
	var wrapper = function() {
		var orig_forEachTiddler = store.forEachTiddler;

		var forEachTiddlerWithIncludes = function(callback) {
			var done = {};

			var callbackWrapper = function(title, tiddler) {
				// ensure every title is only processed once
				if(done[title])
					return;

				// do and set done for appropriate tiddlers
				if(!fetchPreferences.getSubsUrl(title)||
				   (fetchPreferences.getSubsUrl(title) == tiddler.getIncludeURL())) {
					done[title] = 1;
					callback.apply(this,arguments);
				};
			};

			// first, forEachTiddler over the original tiddlers
			orig_forEachTiddler.call(store, callbackWrapper);

			// add nonsubstituted shadowTiddler titles to done
			// (to avoid an included store hide a shadow tiddler)
			for (var n in config.shadowTiddlers)
				if(!fetchPreferences.getSubsShUrl(n))
					done[n] = 1;

			// add the "New Tiddler" tiddler to done
			// to avoid an included store (with such tiddler) prevent creating new tiddlers
			done[config.macros.newTiddler.title] = 1;

			// forEachTiddler over every included store
			forEachLoadedStore(function(theStore, url) {
				theStore.forEachTiddler(callbackWrapper);
			});
		};

		store.forEachTiddler = forEachTiddlerWithIncludes;
		try {
			return func.apply(this,arguments);
		} finally {
			store.forEachTiddler = orig_forEachTiddler;
		};
	};

	return wrapper;
};

var useForReallyEachTiddler = function(object,property) {
	return object[property] = getFunctionUsingForReallyEachTiddler(object[property]);
};


//================================================================================
// config.extensions.SharedTiddlersPlugin (the "includer" engine)

config.extensions.SharedTiddlersPlugin = {

	// function config.extensions.SharedTiddlersPlugin.getFunctionUsingForReallyEachTiddler(func)
	//
	// Returns a function that behaves as func, but every call to store.forEachTiddler will actually
	// be a call to forReallyEachTiddler (see below), i.e. iterate over the tiddlers of the main store
	// and of the included TiddlyWikis
	//
	// @return the patched function
	//
	getFunctionUsingForReallyEachTiddler: getFunctionUsingForReallyEachTiddler,

	// function config.extensions.SharedTiddlersPlugin.useForReallyEachTiddler(object,property)
	//
	// Patches the function hold in the given property of the object in such a way that every call
	// to store.forEachTiddler will actually be a call to forReallyEachTiddler (see below), i.e.
	// iterate over the tiddlers of the main store and of the included TiddlyWikis
	//
	// @param  object
	// @param  property the name of the property of the object containing the function to be patched.
	// @return the patched function
	//
	useForReallyEachTiddler: useForReallyEachTiddler,

	// Add a listener function to the TiddlyWikiIncluder.
	//
	// @param  listener  function(urls)
	//			urls: [] of Strings, containing the urls of the TiddlyWiki just included
	//			(see url@config.extensions.SharedTiddlersPlugin.include)
	//			called whenever one or more TiddlyWiki store are successfully included.
	//
	addListener: function(listener) {
		listeners.push(listener);
	}
};


// -------------------------------------------------------------------------------
// TiddlyWikiIncluder initialization code

config.extensions.SharedTiddlersPlugin.addListener(refreshTiddlyWiki);

config.shadowTiddlers.AdvancedOptions +=
	("\n~IncludePlugin settings:"+
	 "\n<<option chkUseInclude>> Include ~TiddlyWikis"+
	 "\n<<option chkAlertOnSharedTiddlersConflicts>> Alert on tiddler name conflicts"+
	 "\n<<option chkWarnOnSharedTiddlersConflicts>> Display messages and write log in the browser console on conflicts"+
	 "\nIncludeList | IncludeState | ImportIncluded | [[help|http://yakovl.bplaced.net/TW/SharedTiddlersPlugin.html/#SharedTiddlersPluginInfo]]"+
	 "\n^^(Reload this ~TiddlyWiki to make changes become effective)^^");
config.shadowTiddlers.IncludeState = "<<includeState>>";

// add the "importer" engine
config.shadowTiddlers.ImportIncluded =
"| the url of the document to import from | <<option txtStoreUrl>>               |\n"+
"|    the filter of tiddlers to import    | <<option txtFilterTiddlersToImport>> |\n"+
"|           the importing mode           | <<option txtImportMode>>             |\n"+
"<html><a href='javascript:;' onclick='\n"+
"	var storeUrl = config.options.txtStoreUrl,\n"+
"	    params = {\n"+
"		filterLine: config.options.txtFilterTiddlersToImport,\n"+
"		importMode: config.options.txtImportMode,\n"+
"		noRefresh: true,\n"+
"	};\n"+

"	if(!storeUrl)\n"+
"		return displayMessage(\"please specify the url to import from\");\n"+
"	if(!params.filterLine)\n"+
"		return displayMessage(\"please specify the filter of tiddlers to import\");\n"+
"	if(!sharedTiddlersAPI.getStore(storeUrl))\n"+
"		displayMessage(\"warning: no store was loaded from \"+storeUrl+\" previously, trying now\");\n"+

"	twWeb.include(storeUrl,params);\n"+
"'>import (without saving)<a/></html>";

//================================================================================
// Tiddler extension/modification

Tiddler.prototype.isIncluded = function() {
	return this.includeURL != undefined;
};

Tiddler.prototype.getIncludeURL = function() {
	return this.includeURL;
};

Tiddler.prototype.setIncludeURL = function(url) {
	this.includeURL = url;
};

Tiddler.prototype.deleteIncludeURL = function() {
	delete this.includeURL;
};

// make included tiddlers readonly
config.extensions.SharedTiddlersPlugin.orig_Tiddler_isReadOnly = Tiddler.prototype.isReadOnly;

Tiddler.prototype.isReadOnly = function() {
	return config.extensions.SharedTiddlersPlugin.orig_Tiddler_isReadOnly.apply(this,arguments) || this.isIncluded();
}

//================================================================================
// TiddlyWiki modifications

// In some TiddlyWiki functions the "forEachTiddler" should work on all tiddlers, also those from
// included store. (E.g. TiddlyWiki.prototype.getTags)
//
// But not for all (e.g. TiddlyWiki.prototype.getTiddlers is used for saving, but only the "own" tiddlers should be saved)
//
// Therefore explicitly list the functions that should be "wrapped" to use the "forReallyEachTiddler".
//
var tiddlyWikiFunctionsUsingForReallyEachTiddler = {
	getMissingLinks: 1, getOrphans: 1,
	getTags: 1, reverseLookup: 1, updateTiddlers: 1};

for (var n in tiddlyWikiFunctionsUsingForReallyEachTiddler)
	useForReallyEachTiddler(TiddlyWiki.prototype,n);

//================================================================================
// Web of TiddlyWikis

function IncludingMemorizer() { // the structure to store info about already handled include macros
	var used = {};
	this.isUsed  = function(line) { return used[line]? true : false; };
	this.setUsed = function(line) { used[line] = 1; };
	this.getUsed = function() { return jQuery.extend(true, {}, used) };
	this.markUnused = function(usedMap) {

		for(var u in usedMap)
			used[u] = undefined; // don't delete to keep the order of inclusion (for reloading)
	};
};

function TwWeb() {

	var nodes = {};			// hashmap by node name of nodes' metadata
	var nodeConflicts = {};		// hashmap by node name of arrays of conflicts
	var nodeWaitingTasks = {};	// hashmap by node name of arrays of Waiting Tasks
	var nodeDescription = function(url) { // PoG: can be turned into a separated "class"
		return { url : url };
	};
	var selfNodeName;
	var self = this;

	this.includeUsages = new IncludingMemorizer();

// ----- Nodes desctiptions part ---------------------------------------------------------------------

	// set/get the name of "main" (including) node
	this.setSelfNodeName = function(name) {
		selfNodeName = name;
	};
	this.getSelfNodeName = function() {
		return selfNodeName;
	};

	// set/get/delete node description
	this.setNodeDesc = function(nodeName, desc) {

		var existing = this.getNodeDesc(nodeName);

		// currently, doesn't change metadata on conflict
		if(existing)
			this.addConflict(nodeName, desc);
		else
			nodes[nodeName] = desc;

		this.callWaitingTasks(nodeName);
	};
	this.getNodeDesc = function(nodeName) {
		return nodes[nodeName];
	};
	this.deleteNodeDesc = function(nodeName) {
		nodes[nodeName] = null;
	};

	// "API" method to be used in the macro
	this.addNodeDesc = function(nodeName, url) {
		this.setNodeDesc(nodeName, nodeDescription(url));
	};

	// returns "better" description if one is "strictly better" than the other or "even" and null otherwise
	this.compareNodeDesc = function(desc1, desc2) {

// looks like here's a mistake: probably ": desc2" (?)
		return (desc1.url == desc2.url)? desc1 : null;
	};

	this.getNodeUrl = function(nodeName) {

		var desc = this.getNodeDesc(nodeName);
		return desc? desc.url : null;
	};

	// @param	nodeId
	//		url or "node: nodeName" id of the node
	// @return	url of the node (if it is defined) or null
	//
	this.getStoreUrlById = function(nodeId) {

		var node = self.checkNodeNotation(nodeId),
		    url  = node ? self.getNodeUrl(node) : nodeId;
		return url;
	}

	this.setNodeNotation = function(nodeName) {

		return "node: " + nodeName;
	};
	this.checkNodeNotation = function(urlParam) {

		var nodeCalcRE = /node: (.*)/,
		    nodeCalcMatch = nodeCalcRE.exec(urlParam);

		return nodeCalcMatch ? nodeCalcMatch[1] : null;
	};

	this.addConflict = function(nodeName, nodeDesciption) {

		var betterDesc = this.compareNodeDesc(nodeDesciption,this.getNodeDesc(nodeName));
		if(betterDesc) {
			this.deleteNodeDesc(nodeName);
			this.setNodeDesc(nodeName, betterDesc);
			return;
		}

		if(nodeConflicts[nodeName])
			nodeConflicts[nodeName].push(nodeDesciption);
		else
			nodeConflicts[nodeName] = [ nodeDesciption ];

		alert(  "Warning: more than one description of the "+nodeName+" node was pushed. "+
			"The earlier version is kept."  );
	};

// ----- Waiting tasks part --------------------------------------------------------------------------

	this.setWaitingTask = function(nodeName, waitingTaskFunc, waitingTaskSelf) {

		var waitingTask = { action: waitingTaskFunc, self: waitingTaskSelf };

		if(nodeWaitingTasks[nodeName])
			nodeWaitingTasks[nodeName].push(waitingTask);
		else
			nodeWaitingTasks[nodeName] = [ waitingTask ];

		if(this.getNodeUrl(nodeName))
			this.callWaitingTasks(nodeName);
	};
	this.callWaitingTasks = function(nodeName) {

		var toDo = nodeWaitingTasks[nodeName];

		if(toDo)
			for(var i = 0; i < toDo.length; i++)
				toDo[i].action.call(toDo[i].self);

		nodeWaitingTasks[nodeName] = null; // remove called Waiting Tasks
	};

// ----- Including stuff part ------------------------------------------------------------------------

	// ---- helpers ----

	this.setProgressFunction = function(func) {
		progress = func;
	};
/*	this.getProgressFunction = function() {	// is not in use
		return progress;
	};
*/	this.sendProgress = function(message, sender, state) {
		if (progress)
			progress.apply(this,arguments);
	};

	// Returns true when there are "pending" includes, i.e. TiddlyWiki that are not yet loaded.
	// A TiddlyWiki that failed loading is not pending.
	//
	this.hasPendingIncludes = function() {
		var state;
		for(var url in includedStores) {
			state = this.getState(url);
			if (state == WAITING || state == LOADING)
				return true;
		};
		return false;
	};

	// Called when an included TiddlyWiki could not be loaded.
	// By default an error message is displayed.
	//
	this.onError = function(url, errorMessage) {
		displayAndLogMessage("Error when including '%0':\n%1".format([url, errorMessage]));
	};

	// import a tiddler from an included store
	//
	// @param  tiddler - a tiddler to import
	// @param  mode: undefined or 1 - import anyway (other modes, like "don't substitute" will be supported)
	// @return the result object:
	//  .status means: -1 = error, 0 = tiddler is imported, >0 - reserved for other situations
	//  .errorText is not empty on error
	//  .tiddler is the tiddler with /the title/ which is in the store after "it is over" (may be null)
	//  .from is the url line equal to the includeURL of the imported tiddler
	//
	this.importIncluded = function(tiddler,mode) {

		if(mode == undefined)
			mode = 1;
		else
			mode = parseInt(mode);

		var t, tInMain, result = { tiddler: null };
		var doImport = function(t) {
			store.addTiddler(t);
			store.setDirty(true);
			result.status = 0;
			result.tiddler = t;
			result.from = url;
		};

		if(tiddler instanceof Tiddler) {
			// see return value, this is for the case when the import is not done
			result.tiddler = window.sharedTiddlersAPI.orig_fetchTiddler(tiddler.title);
			t = jQuery.extend(true, new Tiddler(), tiddler);
		} else {
			result.status = -1;
			result.errorText = "not a Tiddler instance";
			return result;
		};
		var url;
		if(url = t.getIncludeURL())
			t.deleteIncludeURL();

		switch(mode) {
			case 4: { // import only newer and on confirm
				tInMain = window.sharedTiddlersAPI.orig_fetchTiddler(t.title);
				if(!tInMain || tInMain.modified < t.modified)
					if(confirm("Up-to-date "+t.title+" from "+url+" is availabe, import?"))
						doImport(t);
				break
			}
			case 2: { // import only newer versions/unexisting tiddlers
				tInMain = window.sharedTiddlersAPI.orig_fetchTiddler(t.title);
				if(!tInMain || tInMain.modified < t.modified)
					doImport(t);
				break
			}
			case 3: { // import on confirm
				if(confirm(t.title+" from "+url+" is availabe, import?"))
					doImport(t);
				break
			}
			case 1: { // import anyway
				doImport(t);
				break
			}
			default: {
				result.status = -1;
				result.errorText = "unknown import mode";
			}
		};
		return result;
	};
	this.importAndLog = function(tiddler,mode) {

		var name   = tiddler.title,
		    result = twWeb.importIncluded(tiddler,mode);
		// this.importIncluded is not used to be able to pass the method to the API

		switch(result.status) {
			case 0:	 console.log("imported: "+name+" from "+result.from);
				 break
			case -1: console.log("error importing "+name+": "+result.errorText);
				 break
		}
	};

	// ---- main ----

	// Includes the (local or remote) TiddlyWiki store with the given url.
	//
	// @param url		see url@stp_loadTiddlyWikiStore
	// @param includeParams	a set of the following params for including:
	//	filterLine		a filter expression defining a set of tiddlers to include
	//	substituting		points whether an included tiddler should sustitute
	//				one in the main document if there's a conflict of names
	//	substituteShadows	points whether shadowed tiddlers of the main document with names equal to
	//				those of included ones should be substituted (in cases of conflicts);
	//				works only with (substituting == true)
	//	delayMilliSeconds	addition delay of loading
	//	noRefresh
	//	importMode
	//	evalTiddlers
	//	wikifyTiddlers
	//
	this.include = function(urlOrNodeParam, includeParams) {

		if (!isIncludeEnabled())
			return;
		var self = this;

		var includeOrHandleUrl = function(url) {

			var loadStoreCallback = function(theStore,urlInCallback,params,errorMessage) {

				if(theStore === undefined) {

					includedStores[url] = errorMessage;
					self.onError(url, errorMessage);
					return;
				} else
					includedStores[url] = theStore;

				// keep orig_store not to load tw-documents multiple times
				// because of multiple include macros:
				includedStores[url].orig_store = new TiddlyWiki();
				includedStores[url].forEachTiddler(function(tName,tiddler){
					tiddler.setIncludeURL(url);
					includedStores[url].orig_store.addTiddler(tiddler);
				});
				includedStores[url].clear();

				// include, create fetchPreferences and notify of conflicts; or import
				addFromLoadedStore();
			};

			var addFromLoadedStore = function() {
			// uses url and includeParams exploiting closure

				var substituting = includeParams.substitute,
				    substituteShadows = includeParams.substituteShadows,
				    importMode = includeParams.importMode;

				if(twWeb.getStore(url) === null)
					return invokeLater(addFromLoadedStore, 100);	// 100 milliseconds
				// new tiddlers should be added *when the store is loaded*

				// add tiddlers to included stores and check new conflicts (among non-subs. tids)
				var i, t,
				    new_tiddlers = includedStores[url].orig_store.filterTiddlers(includeParams.filterLine);

				for(i = 0; i < new_tiddlers.length; i++) {

					t = jQuery.extend(true, new Tiddler(), new_tiddlers[i]); //copy (by value)

					if(includedStores[url].orig_store.fetchTiddler(t.title)) {
					// ignore empty tiddlers created by the "tiddler" filter
					    if(importMode)
					        twWeb.importAndLog(t,importMode);
					    else {
					        // check for upcoming conflicts first
					        conflicts.checkNew(t.title, url, substituting, substituteShadows);
					        // then include
					        includedStores[url].addTiddler(t);
					    };
					    if(includeParams.evalTiddlers)
					        installPlugin(t);
					    if(includeParams.wikifyTiddlers)
					        wikify(t.text,document.createElement("div"),undefined,t);
					};
				};

				// add items to fetchPreferences if have to
				if(!importMode && (substituting || substituteShadows))
					for(i = 0; i < new_tiddlers.length; i++)
						fetchPreferences.add(new_tiddlers[i].title,url,substituting, substituteShadows);
				conflicts.notify();

				// "recalc" slices
				store.slices = {};
				// refresh things to get included stylesheets, PageTemplate and ViewTemplate applied
				if(!includeParams.noRefresh) {
					refreshAll();
					story.refreshAllTiddlers();
				}

				pendingOnLoadURLs.push(url);
				invokeLater(notifyListeners);
			};

			var loadStore = function() {
				includedStores[url] = LOADING;
				stp_loadTiddlyWikiStore(url,loadStoreCallback,null,progress);
				// {includeParams:includeParams} can be used instead of null so that
				// loadStoreCallback will have access to the includeParams
			};

			var urlIsNew = !(includedStores[url]);

			if(urlIsNew) {

				includedStores[url] = WAITING;

				if (includeParams.delayMilliSeconds)
					invokeLater(loadStore, includeParams.delayMilliSeconds);
				else
					loadStore();
			} else
				addFromLoadedStore();
		};

		var nodeName = this.checkNodeNotation(urlOrNodeParam);

		if(nodeName) {
			if(nodeName == this.getSelfNodeName()) // don't include from the main (self) TiddlyWiki
				return;
			this.setWaitingTask(nodeName,function(){
				var url = this.getNodeUrl(nodeName);
				includeOrHandleUrl(url);
			},this);
		} else
			includeOrHandleUrl(urlOrNodeParam);
	};

// ----- Methods for dealing with included stuff -----------------------------------------------------

	// @return [] of Strings, the URLs of the includes
	//
	this.getIncludedStoresUrls = function() { // in a form of an array

		var includes = [];
		for(var url in includedStores)
			includes.push(url);
		return includes;
	};
	// @return the (TiddlyWiki) store with the given URL or "node: nodeName", or null if not (yet) loaded.
	//
	this.getStore = function(nodeId) {

		var url = self.getStoreUrlById(nodeId)
		if(!url)
			return null;

		var s = includedStores[url];
		if(s && s instanceof TiddlyWiki)
			return s;
		return null;
	};
	// @return a state/error text of the store with the given URL, or null when the store is already loaded
	//
	this.getState = function(nodeId) {

		var url = self.getStoreUrlById(nodeId)
		if(!url)
			return "the node "+self.checkNodeNotation(nodeId)+" is not described yet, the address is unknown";

		var s = includedStores[url];
		if (!s)
			return getMissingIncludeMsg(url);
		return typeof s == "string" ? s : null;
	};
	// reload one included store or all of them
	// previous inclusions are done again, by default only those without eval and import
	// important: reload doesn't work correctly with <<include>> usages with multiple urls
	//
	// @param  reloadParams  an object containing some of these configuration properties:
	//	urlOrNodeList	an array of TWs' IDs (url or "node: nodeName") to reload;
	//			if undefined, all TWs are reloaded
	//	eval		points whether to redo inclusions with the "eval" parameter (undefined == false)
	//	import		same for the "import" parameter, but undefined/null -> true
	//	wikify		same for the "wikify" parameter
	this.reload = function(reloadParams) {

		// determine a TW(s) to reload (undefined => all)
		var i, twsToReload = reloadParams.urlOrNodeParam;

		// turn "IDs" into actual urls; filter out node names for which urls are not defined
		// so waiting tasks are not doubled
		if(twsToReload)
			for(i = 0; i < twsToReload.length; i++){
				nodeName = this.checkNodeNotation(twsToReload[i]);
				twsToReload[i] = nodeName ? this.getNodeUrl(nodeName) : twsToReload[i];
				if(!twsToReload[i])
					twsToReload.splice(i--,1);
			}

		if(reloadParams.import === undefined || reloadParams.import === null)
			reloadParams.import = true;
		if(reloadParams.wikify === undefined || reloadParams.wikify === null)
			reloadParams.wikify = true;

		// collect macro expressions to reload
			// may the order of including be important?
		var usage, usages = this.includeUsages.getUsed(),
		    paramString, params, pParams, urlParam, nodeName,
			dontReload, i;

		for(usage in usages) {

			// parsing copied from config.macros.include.handler (to get macro params)
			paramString = usage.substring(10,usage.length - 2);
			params = paramString.readMacroParams();
			pParams = paramString.parseParams("url",null,true,false,true);
			urlParam = pParams[0]["url"][0];
			nodeName = this.checkNodeNotation(urlParam);
			urlParam = nodeName ? this.getNodeUrl(nodeName) : urlParam;

			// keep only inclusions that contain IDs corresponding to urls from twsToReload
			dontReload = true;
			if(twsToReload) {
				for(i = 0; i < twsToReload.length; i++)
					if(urlParam == twsToReload[i])
						dontReload = false;
			} else
				dontReload = false;

			// exclude inclusions with import and eval, if necessary
			if(!reloadParams.import && getParam(pParams,"import",undefined) ||
			   !reloadParams.eval && params.contains('eval') ||
			   !reloadParams.wikify && params.contains('wikify'))
				dontReload = true;

			if(dontReload) {
				delete usages[usage];
				continue;
			}

			// clean stuff: unload included store, clear priorities, remove conflicts;
			// deleting "used" marks is outside this loop
			includedStores[urlParam] = undefined;
			fetchPreferences.removeByUrl(urlParam);
			conflicts.markNodeUnloaded(urlParam);
		}
		// delete "used" marks
		this.includeUsages.markUnused(usages);

		// include again
		for(usage in usages)
			wikify(usage,document.createElement("div"),undefined,null);
	};
};
twWeb = new TwWeb();

//================================================================================
// Default Progress Handling for config.extensions.SharedTiddlersPlugin

var showAnimated = function(e, showing, duration) {
//	if (!anim || !abego.ShowAnimation) {
		e.style.display = showing ? "block" : "none";
		return;
//	}

//	anim.startAnimating(new abego.ShowAnimation(e,showing,duration));
};

config.extensions.SharedTiddlersPlugin.getDefaultProgressFunction = function() {

	setStylesheet(
		".includeProgressState{\n"+
		"background-color:#FFCC00;\n"+
		"position:absolute;\n"+
		"right:0.2em;\n"+
		"top:0.2em;\n"+
		"width:7em;\n"+
		"padding-left:0.2em;\n"+
		"padding-right:0.2em\n"+
		"}\n",
		"stp_Include");

	var createStateElem = function() {
		var e = document.createElement("div");
		e.className = "includeProgressState";
		e.style.display = "none";
		document.body.appendChild(e);
		return e;
	};

	var stateElem = createStateElem();


	var showState = function(message) {
		removeChildren(stateElem);
		createTiddlyText(stateElem,message);
		showAnimated(stateElem,true,0);
	};

	var hideState = function() {
		// hide the state the next idle time
		invokeLater(function() {
			showAnimated(stateElem,false,ANI_DURATION_HIDE_STATE);
		},100,ANIMATION_PRIORITY);
	};

	var myProgressFunction = function(message, sender, state, url, params) {

		if (state == "Done" || state == "Failed") {
			hideState();
			return;
		}

		if (sender == "stp_loadTiddlyWikiStore") {
			idleCount = 0;
			if (state == "Processing")
				showState("Including...");
		} else {
			showState(message);
		}
	};
	return myProgressFunction;
};

twWeb.setProgressFunction(config.extensions.SharedTiddlersPlugin.getDefaultProgressFunction());


//================================================================================
// The "describeNode" macro
//
// Syntax: <<describeNode nodeName {nodeUrl|self}>>
//
config.macros.describeNode = {};
config.macros.describeNode.handler = function(place,macroName,params,wikifier,paramString,tiddler) {

	var macroTWcode = wikifier.source.substring(wikifier.matchStart, wikifier.nextMatch);
	createTiddlyText(createTiddlyElement(place,"code"),macroTWcode);

	// node description duplicates are handled when adding, so no "handle only once" here

	var includeURL = tiddler.getIncludeURL(),
	    nodeName = params[0],
	    urlParam = params[1],
	    self = (urlParam == "self");

	if(self) {
		var oldSelf = twWeb.getSelfNodeName();
		if(oldSelf && (oldSelf != nodeName))
			return alert("The \'"+oldSelf+"\' alias is already assigned as the name of the current "+
					"TiddlyWiki; the new attempt to assign \'"+nodeName+"\' is ignored.");
		twWeb.setSelfNodeName(nodeName);
		return;
	}

	var url = resolveUrlFrom(urlParam, includeURL);
	url = stp_resolveURL(url); // if no includeURL

	twWeb.addNodeDesc(nodeName,url);
};

//================================================================================
// The "include" macro
//
// Syntax:	<<include [url:]url [filters:filterLine] [substitute]
//			  [substituteShadows] [hide:hideFlag] [delay:delayDuration]>>
//
config.macros.include = {};
config.macros.include.handler = function(place,macroName,params,wikifier,paramString,tiddler) {

	var macroTWcode = wikifier.source.substring(wikifier.matchStart, wikifier.nextMatch),
	    pParams = paramString.parseParams("url",null,true,false,true); // allowEval, cascadeDefaults, names allowed

	var hide = getFlag(pParams, "hide", false) || params.contains('hide');
	if (!hide)
		createTiddlyText(createTiddlyElement(place,"code"),macroTWcode);
	if (twWeb.includeUsages.isUsed(macroTWcode))
		return;
	twWeb.includeUsages.setUsed(macroTWcode);

	var urls = pParams[0]["url"],
	    includeParams = {
		delayMilliSeconds:	parseInt(getParam(pParams,"delay","0")),
		filterLine:		getParam(pParams,"filters","[all[-]]"),
		substitute:		params.contains('substitute'),
		substituteShadows:	params.contains('substituteShadows'),
		noRefresh:		params.contains('noRefresh'),
		importMode:		getParam(pParams,"import",undefined),
		evalTiddlers:		params.contains('eval'),
		wikifyTiddlers:		params.contains('wikify')
	};

	var checkUrlAndInclude = function(url) {

		if(url == 'hide' || url == 'substituteShadows' || url == 'substitute' || url == 'eval' ||
				url == 'wikify' || url == 'noRefresh')
			return;

		twWeb.include(url,includeParams);
	};

	for (var i = 0; urls && i < urls.length; i++)
		checkUrlAndInclude(urls[i]);
};

//================================================================================
// The "reloadIncluded" macro
//
// Syntax: <<reloadIncluded [urls:urlsJSON] [reloadParams:otherReloadParamsJSON]
//		[label:labelText] [tooltip:tooltipText] [class:className]>>
// (for reloadParams, see twWeb.reload)
//
config.macros.reloadIncluded = {};
config.macros.reloadIncluded.handler = function(place,macroName,params,wikifier,paramString,tiddler) {

	// parse params
	var pParams = paramString.parseParams("url",null,true,false,true),
	    label    = getParam(pParams,"label","refresh"),
	    tooltip  = getParam(pParams,"tooltip",undefined),
	    elClass  = getParam(pParams,"class"," "), // " " overwrites the default "button" class
	    urlsText = getParam(pParams,"urls",undefined),
	    otherReloadParamsText = getParam(pParams,"reloadParams","{}"),
	    reloadParams = JSON && JSON.parse(otherReloadParamsText) || jQuery.parseJSON(otherReloadParamsText);
	reloadParams.urlOrNodeList = !urlsText ? undefined :
			(JSON && JSON.parse(urlsText) || jQuery.parseJSON(urlsText));
	if(!tooltip) {
		if(reloadParams.urlOrNodeList) {
			tooltip = "refresh '"+reloadParams.urlOrNodeList[0]+"'";
			for(var i = 1; i < reloadParams.urlOrNodeList.length; i++)
				tooltip += ", '"+reloadParams.urlOrNodeList[i]+"'";
			tooltip += (i > 0) ? " nodes" : " node";
		} else
			tooltip = "refresh all included nodes";
	}

	// create button, add handler
	createTiddlyButton(place,label,tooltip,function(){
		var returnHere = function() {
			if(twWeb.hasPendingIncludes()) {
				invokeLater(returnHere,100);
				return;
			} // wait until all the stores are loaded and the page is refreshed
			var t = tiddler.title, te = DEFAULT_VIEW_TEMPLATE;
			story.displayTiddler(this,t,story.chooseTemplateForTiddler(t,te));
		}
		twWeb.reload(reloadParams);
		invokeLater(returnHere,100); // wait a bit for the nodes to unload
	},elClass);
};

//================================================================================
// The "includeState" macro
//
// Syntax: <<includeState>>
//
config.macros.includeState = {};
config.macros.includeState.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	var getFullState = function () {
		var s = "";
		var includes = twWeb.getIncludedStoresUrls();
		if (!includes.length)
			return "{{noIncludes{\nNo TiddlyWiki is included or including is disabled (see AdvancedOptions)\n}}}\n";

		s += "|!Address|!State|\n";
		for (var i = 0; i < includes.length; i++) {
			var inc = includes[i];
			s += "|{{{"+inc+"}}}|";
			var t = twWeb.getState(inc);
			s += t ? "{{{"+t+"}}}" : "included";
			s += "|\n"
		}
		s += "|includeState|k\n";
		return s;
	};

	var updateState = function(){
		removeChildren(div);
		wikify(getFullState(),div);
		if (twWeb.hasPendingIncludes())
			invokeLater(updateState,500,UPDATE_STATE_PRIORITY);
	};

	var div = createTiddlyElement(place,"div");

	invokeLater(updateState,0,UPDATE_STATE_PRIORITY);
};

//================================================================================
// Change standart formatters

var getFormatterIndex = function(formatterName) {
	for(var i = 0; i < config.formatters.length; i++)
		if(config.formatters[i].name == formatterName)
			return i;
	return null;
}

//--------------------------------------------------------------------------------
// Change the prettyLink formatter so that it
// * recognizes [[text|target]]@nodeName and [[target]]@nodeName syntax
// * takes into account includeURL of the tiddler and propagates inclusion

if(config.options.STP_hijackPrettyLink) {
	var prettyLinkFormatterIndex = getFormatterIndex("prettyLink");
	config.extensions.SharedTiddlersPlugin.orig_prettyLinkFormatter = config.formatters[prettyLinkFormatterIndex];
	config.formatters[prettyLinkFormatterIndex] = {

		name:  "prettyLink",
		match: "\\[\\[",
		lookaheadRegExp: /\[\[(.*?)(?:\|(~)?(.*?))?\]\](?:(?:@(\w+))(?:@([\w\s\:]+)@)?)?/mg,
		handler: function(w) {

			this.lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {

				// call the formatter
				config.extensions.SharedTiddlersPlugin.orig_prettyLinkFormatter.handler(w);

				// call the include.handler, if necessary
				var node = lookaheadMatch[4]? lookaheadMatch[4] : undefined,
				    includeURL = w.tiddler? w.tiddler.getIncludeURL() : null,
				    urlParam = node? twWeb.setNodeNotation(node) : (includeURL? includeURL : undefined),
				    target = lookaheadMatch[3]? lookaheadMatch[3] : lookaheadMatch[1],
				    paramString = '"'+urlParam+'" filters:"[['+target+']]" hide noRefresh ';
				if(lookaheadMatch[5])
					paramString += lookaheadMatch[5];
				if(urlParam)
					config.macros.include.handler(w.output,"include",
						paramString.readMacroParams(true),w,paramString,w.tiddler);

				// move nextMatch according to this.lookaheadRegExp, not original prettyLink
				w.nextMatch = this.lookaheadRegExp.lastIndex;
			}
		}
	};
}

//--------------------------------------------------------------------------------
// Change the image formatter so that it
// * takes into account includeURL of the tiddler and recalcs relative urls

if(config.options.STP_hijackImageFormatter) {
	var imageFormatterIndex = getFormatterIndex("image");
	config.extensions.SharedTiddlersPlugin.orig_imageFormatterHandler = config.formatters[imageFormatterIndex].handler;
	config.formatters[imageFormatterIndex].handler = function(w) {

		var lastChildBeforeHandling = w.output.lastChild;
		config.extensions.SharedTiddlersPlugin.orig_imageFormatterHandler.apply(this,arguments);

		if(w.output.lastChild != lastChildBeforeHandling) {

			var img = w.output.lastChild,
			    includeURL = w.tiddler ? w.tiddler.getIncludeURL() : "",
			    imgSrc = jQuery(img).attr("src");

			// take includeURL into account:
			img.src = resolveUrlFrom(imgSrc, includeURL);
		}
	}
}

//================================================================================
// Add inline-management tools by hijacking .edit.handler

config.extensions.SharedTiddlersPlugin.orig_editHandler = config.macros.edit.handler;
config.macros.edit.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	var includeUrl = tiddler.getIncludeURL();
	if(params[0] == "text" && includeUrl){ // only for "text", not other fields
		var e = createTiddlyElement(null,"div");
		e.className = "manageIncludedPanel";
		createTiddlyText(e,"manage the included tiddler: ");

		// go to the source
		var sourceUrl = includeUrl + "#[["+tiddler.title+"]]";
		createExternalLink(e, sourceUrl, "open in the source TiddlyWiki");
		// view the link to the source
		createTiddlyText(e," (");
		createTiddlyButton(e,"view link","view the link to the source",function(e){
			var popup = Popup.create(this);
			createTiddlyText(popup,sourceUrl);
			Popup.show();
			var ev = e || window.event;
			ev.cancelBubble = true;
			if(ev.stopPropagation)
				ev.stopPropagation();
			return false;
		}," ");
		createTiddlyText(e,")");

		// import
		if(!readOnly) {
			createTiddlyText(e," | ");
			createTiddlyButton(e,"import","import this tiddler",function(){
				twWeb.importAndLog(tiddler,1);
			 }," ");
		}

		// reload
		createTiddlyText(e," | ");
		config.macros.reloadIncluded.handler(e,"",null,null,'urls:\'["'+includeUrl+'"]\'',tiddler);

		// other actions

		// if the read only mode is not set, display all tools otherwise ...
		place.appendChild(e);
	}
	return config.extensions.SharedTiddlersPlugin.orig_editHandler(place,macroName,params,wikifier,paramString,tiddler);
};

//================================================================================
// Perform plugin startup tasks

// add this for the "install only once" check (which also prevents conflicts with abego.IncludePlugin)
// (this is also deprecated API for backward compability)
abego.TiddlyWikiIncluder = {
	getIncludes:	twWeb.getIncludedStoresUrls,
	getState:	twWeb.getState,
	getStore:	twWeb.getStore
};
attachToStore();
invokeLater(includeFromIncludeList,100);

// add several more methods to the "API namespace"

window.sharedTiddlersAPI.getIncludes  = twWeb.getIncludedStoresUrls;
window.sharedTiddlersAPI.getState     = twWeb.getState;
window.sharedTiddlersAPI.getStore     = twWeb.getStore;
window.sharedTiddlersAPI.importAndLog = twWeb.importAndLog;

// iterates over all tiddlers of "the store" and all tiddlers of included (and loaded) stores
//
window.sharedTiddlersAPI.forReallyEachTiddler = function(callback) {
	var caller = function() {
		store.forEachTiddler(callback);
	};
	getFunctionUsingForReallyEachTiddler(caller).call(store);
};
})();
//%/ //
|''Name''|SharedTiddlersPluginInfo|
|''Source''|http://yakovl.bplaced.net/TW/STP/STP.html#SharedTiddlersPluginInfo|
|''Description''|Documentation for ~SharedTiddlersPlugin|
|''Plugin source''|http://yakovl.bplaced.net/TW/STP/STP.html#SharedTiddlersPlugin|
|''Version''|2.4.0|
|''Author''|Yakov Litvin|
|''License''|[[BSD-like open source license|http://yakovl.bplaced.net/TW/STP/STP.html#%5B%5BYakov%20Litvin%20Public%20Licence%5D%5D]]|
|''Contact''|Yakov.A.Litvin at gmail dot com (please read docs, esp. "Installation, configuring and troubleshooting" section before sending an email)|
<<tabs txtSharedTiddlersPluginInfoTab
	"Installation, configuring and troubleshooting" "" [[SharedTiddlersPluginInfo##Installation, configuring and troubleshooting]]
	"Functionality and examples" "" [[SharedTiddlersPluginInfo##Functionality and examples]]
	"Detailed reference" "" [[SharedTiddlersPluginInfo##Detailed reference]]
	"More details on possible applications" "" [[SharedTiddlersPluginInfo##More details on possible applications]]
	"API changes and coding with SharedTiddlersPlugin" "" [[SharedTiddlersPluginInfo##API changes and coding with SharedTiddlersPlugin]]
	{{"Making other plugins \"include-aware\""}} "" [[SharedTiddlersPluginInfo##Making other plugins include-aware]]
	"Versions history and quality issues" "" [[SharedTiddlersPluginInfo##Versions history and quality issues]]
>>/%
!Functionality and examples
<html><h1>Including and include macro</h1>
<h2>Simple including</h2>
</html>Including is done via the {{{include}}} macro. For instance, a ~TiddlyWiki you'd like to include from is named {{{references.html}}} and is put in the same folder that another one, {{{main.html}}}, you'd like to include to. To include all the tiddlers from {{{references.html}}}, put the following macro in {{{main.html}}}:
{{{
<<include "./references.html">>
}}}
Where exactly should you write the macro? Usually, {{{include}}} macros are written in IncludeList: all the macros in there are wikified at startup, so the secondary TW is included each time the main one is opened. Alternatively, you can put {{{include}}} macro in an arbitrary tiddler, in that case including will be done when the tiddler is displayed (wikified). If you want to avoid it being visible, write it as
{{{
<<include "./references.html" hide>>
}}}

<html><h2>Partial including</h2>
</html>There are various reasons why you may prefer to include only a subset of tiddlers from another TW. For instance, you want to include only tiddlers tagged {{{ToDo}}} to your GTD thing and don't want the timeline to get crowded by other tiddlers from outside. For that case {{{include}}} macro supports core filter engine:
{{{
<<include "./projects/myProject.html" filters:"[tag[ToDo]] [[Summary]]">>
}}}
For more details about filters, see the "Detailed reference" part of the docs.

<html><h2>Substituting tiddlers in main TiddlyWiki</h2>
</html>By default, if the including and an included TW both have a tiddler named "A", the tiddler from the main ~TiddlyWiki will be displayed/fetched in all the situations; even if in the main TW only a shadowed tiddler "A" is present. As sometimes this is not a desirable behaviour, there's {{{substitute}}} and {{{substituteShadows}}} options in the {{{include}}} macro:
{{{
<<include "./commons.html" filters:"[[PageTemplate]] [[ViewTemplate]]" substituteShadows>>
}}}
will bring PageTemplate and ViewTemplate instead of the shadowed ones; and
{{{
<<include "./commons.html" filters:"[[PageTemplate]] [[ViewTemplate]]" substituteShadows substitute>>
}}}
will do so even if custom PageTemplate or ViewTemplate are created. Note: included tiddlers are not saved in the including TW, unless the {{{import}}} option is used (see below).

<html><h2>Import and autoimport of included tiddlers</h2>
</html>For some tiddlers, you'd probably prefer importing instead of just including -- for this case a "manual" tool ImportIncluded and autoimport via the {{{include}}} macro are present:
{{{
<<include "./local_repositories/STP.html" filters:"[[SharedTiddlersPlugin]]" import:4>>
}}}
where {{{4}}} is a number of the import mode. For details, see the "Detailed reference" part.

<html><h2>Launching (wikifying) macros from included tiddlers</h2>
</html>This feature was designed primarily for centralized system of customization of ~TiddlyWikis. Imagine a TW called "commons.html" which has different parts of interface (like PageTemplate or ToolbarCommands), some evaluated transclusions etc. The idea is do changes to that TW so that they are applied in all your ~TWs. You can include all the elements in other ~TWs but the problem is you still have to make changes in all the ~IncludeLists. The solution is brought by introducing the {{{wikify}}} parameter to the {{{include}}} macro. Consider this: IncludeList in each of your ~TWs contains just
{{{
<<include "./commons.html" filters:"[[IncludeHub]]" wikify>>
}}}
and all the changes are done in the {{{IncludeHub}}} tiddler in your commons.html like these:
{{{
<<include "./commons.html" filters:"[[PageTemplate]]" substituteShadows>>
<<include "./local_repositories/STP.html" filters:"[[SharedTiddlersPlugin]]" import:4>>
 // you can remove, change or add macros in here so that they are applied in each of your TWs
}}}
The only issue is as long as you use relative addresses, you have to place all your ~TWs in the same folder as "commons.html" (how to pass around this limitation, see below).

<html><h2>Launching plugins from included TiddlyWikis</h2>
</html>Plugin launching is done on startup, so just including external plugins is "too late" and they won't actually work. To launch a plugin from an included tiddler, use {{{eval}}} parameter of the {{{include}}} macro:
{{{
<<include "./commons.html" filters:"[[RearrangeTiddlersPlugin]]" eval>>
}}}
For many plugins, most likely, you will use both {{{improt:4}}} and {{{eval}}} parameters.

<html><h2>Reloading included stuff</h2>
</html>Sometimes it's desirable to reload included tiddlers without reloading the whole TW document. For this case, the {{{reloadIncluded}}} macro is introduced. It generates a link/button which reloads tiddlers from certain ~TWs on click:
{{{
<<reloadIncluded urls:'["node: node1", "included test nodes/node 2.html"]' reloadParams:'{"import":false}'>>
}}}
Also, this link can be found in the toolbar of included tiddlers (in the edit mode).

<html><h2>Avoiding excessive refreshing</h2>
</html>After including, the {{{include}}} macro refreshes your TW -- this is done for things like ~StyleSheets or ~ViewTemplate to get applied. However, multiple refreshing on startup can take a second or more, so it can be desirable to avoid refreshing. It is recommended to use the corresponding {{{noRefresh}}} parameter with all {{{include}}} macros that don't need it (usually those including content tiddlers, but not elements of themes, like ~ViewTemplate):
{{{
<<include "./references/holy writ.html" filters:"[[contents]] [tag[chapter]] [tag[verse]]" noRefresh>>
<<include "./references/Feuerbach.html" filters:"[[list of publications]] [tag[publication]]" noRefresh>>
<<include "./commons.html" filters:"[tag[theme parts]]" substitute substituteShadows>>
}}}

<html><h1>TwWeb</h1>
</html>Sometimes it is desirable to rename or move ~TiddlyWikis, and such changes can break many links/includes. Also, using relative paths in {{{include}}} macros can cause errors in the path calculation when the macro itself is contained in an tiddler included from "path/A.html", where "path" is not ".". To avoid these pesky issues and to enable further "merging" of ~TWs, ~TwWeb system was introduced.

<html><h2>Describing a node</h2>
</html>The idea is to describe "nodes" -- ~TWs with certain addresses and then use node names instead of addresses. The {{{describeNode}}} does the first part of the job:
{{{
<<describeNode "commons" "./commons.html">>
}}}
where the first argument is the name of the node and the second one is its address. It is recommended to give your nodes names without spaces (for compability with future features). Note that you can use {{{include}}} macro with {{{wikify}}} parameter to take node descriptions from another TW. This means that you can create a central TW with all node descriptions, include it, and use in all other ~TWs node names instead of addresses. After that, renaming a TW should be backed up by only changing the description in the central node.

<html><h2>Support of node names</h2>
</html>Node names are supported in the following mechanisms:
# {{{include}}} macro can get a special form of the url parameter:{{jD{
{{{
<<include "node: node_name" ...>>
<<include "node: commons" filters:"[tag[theme parts]]" substitute substituteShadows>>
}}}
}}} If the macro is wikified before the node was described, it "waits" for the description to appear.
# ImportIncluded allows this "form of url" too
# the {{{includedFrom}}} filter supports the {{{[includedFrom[node: nodeName]]}}} notation
# extended prettyLinks now work in the following syntaxes:
## {{{[[link text|target tiddler]]@nodeName}}} -- which includes the {{{target tiddler}}} and creates an ordinary {{{[[link text|target tiddler]]}}} prettyLink
## {{{[[link text|target tiddler]]@nodeName@options line@}}} which does the same but uses options from the {{{options line}}} as well: for instance, to substitute an existing tiddler {{{target tiddler}}}, just add the options line {{{substitute}}}.
** if the included TW is large so you're delayed waiting when the link get enabled, it can be an option to include the node with an empty filter ({{{filters:""}}}) using IncludeList (may be with the delay option, too)
* @@font-size:smaller;In the future versions of STP, some other engines may be supported: for instance, {{{<<tiddler [[tiddler name]]@nodeName>>}}}.@@

<html><h2>Describing self</h2>
</html>To avoid different side effects of transitive inclusion (like including a tiddler by TW "A" from the same TW "A" with substituting which makes it impossible to edit the tiddler) you can mark one nodeName as "self":
{{{
<<describeNode nodeName self>>
}}}
This prevents from including from {{{nodeName}}} at all; such self-description should be put into the IncludeList.

<html><h2>Propagation</h2>
</html>As included tiddlers can contain links, images, transclusions etc, STP takes care of those so that they are not broken (to some extent). See details in the "Detailed reference" section.

<html><h2>Inline management of included tiddlers</h2>
</html>In the edit mode an included (but not imported) tiddler has an additional panel with a link to its "original" in the included TW, a link which imports it and a refresh link that reloads the included TW. This is added by default, no changes to EditTemplate are needed.

!Detailed reference
<html><h2>IncludeList tiddler</h2>
</html>Special tiddler IncludeList is used to wikify macros within it on the startup of ~TiddlyWiki: it's implied that you write {{{<<include>>}}} and {{{<<describeNode>>}}} macros that you need to lauch (each time) there. For instance, if you write
{{{
<<include "./common TW elements.html" filters:"[[PageTemplate]]" substituteShadows>>
}}}
in there, the including will be done each time the TW is opened.

<html><h2>The "include" macro</h2>
</html>The {{{<<include>>}}} macro has the following syntax (@@font-size:smaller;[...] parts are optional@@):
{{{
<<include [url:]url [filters:filterLine] [substitute] [substituteShadows]
  [import:importMode] [eval] [wikify] [noRefresh] [hide[:hideFlag]] [delay:delayDuration]>>
}}}
|The parameters of the {{{<<include>>}}} macro|c
| name			 | demanded?	 | value | effect | comments |h
| ''url''			 | demanded	 | a url line in quotes | defines the path to the ~TiddlyWiki from which stuff is included | by "url line" a relative path, an absolute local file path, or a "file:" URL is meant |
| ''filters''		 | optional	 | a line of TW filters in quotes | defines the set of tiddlers included from the TW;<br>if omitted, means "include all" | see "Filters" below |
| ''substitute''		 | optional	 | none | adds "substitute" priority to the included tiddlers | see "Name conflicts and priorities" below |
| ''substituteShadows''	 | optional	 | none | adds "substituteShadows" priority to the included tiddlers |~|
| ''import''		 | optional	 | an id of an import mode to use | tiddlers are imported instead of including | see "Import tools" below |
| ''eval''			 | optional	 | none | treats tiddlers as plugins | see "Evaluating tiddlers" below |
| ''wikify''		 | optional	 | none | wikifies tiddlers after loading/importing | can be used to wikify {{{include}}} and other macros;<br>may also be useful with evaluated transclusions |
| ''noRefresh''		 | optional	 | none | prevents refreshing of TW after tiddlers are loaded | refreshing is used to apply included style sheets, elements of interface etc, but multiple refreshing can slow down the startup time; to avoid such effects, this option is to be used in macros that include only content (not parts of the interface) |
| ''hide''			 | optional	 | boulean | by default the macro is displayed as written; when {{{hideFlag}}} is {{{true}}}, it's hidden | can be useful when the macro is used outside ~IncludeList |
| ''delay''		 | optional	 | number (integer) | defines the number of milliseconds (thousands of a second) to wait before actually including the ~TiddlyWiki ||
Some examples of how the ''url'' line can be written:
{{{
<<include "C:\TiddlyWiki\shared\TiddlyWikiHelp.html" hide:true>>
<<include "file://C:/Private/journals/2006-12.html" delay:8000>>
<<include "../tests/STP/sample33.html" hide>>
<<include "tests/main_sample.html">>
}}}
__Note__: some browsers forbid including from outside the folder where the including TW is placed. See details in the "Installation, configuring and troubleshooting" section.

<html><h2>Filters</h2>
</html>See main documentation [[at tiddlywiki.org|http://tiddlywiki.org/#Filters]]. Note: when the {{{tiddler}}} filter is used, if tiddler with {{{tiddlerName}}} doesn't exist, the filter creates a new empty tiddler and adds it to the set. To avoid problems like blank ~PageTemplate etc, tiddlers which don't exist are not included (or imported) even if the {{{tiddler}}} filter would cause otherwise.

STP introduces 3 new filters:
* {{{all}}} (mostly for inner purposes) which brings all the tiddlers of a store. Usage:
** {{{[all[with included]]}}} fetches ordinary and included tiddlers (with regard to "substituting")
** {{{[all[-]]}}} (with any non-empty argument other than "with included") fetches only ordinary tiddlers (without regard to "substituting")
** Example: {{{[all[-]] [sort[modified]]}}}.
* {{{includedFrom}}} which retains only tiddlers from a certain included store. Examples: {{{[tag[ToDo]] [includedFrom[project.html]], [tag[ToDo]] [includedFrom[node: project]]}}}.
* {{{internal}}} which filters out included tiddlers. Example: {{{[tag[ToDo]] [internal[-]]}}}.
* {{{external}}} which leaves only included tiddlers. Example: {{{[all[with included]] [external[-]]}}}.

Example of usage with the {{{include}}} macro:
{{{
<<include "./biology.html" filters:"[tag[Mammals]] [[Mammals]]">>
}}}

<html><h2>Name conflicts and priorities</h2>
</html>Sometimes there are tiddlers with a common name in the main and an included or multiple included ~TiddlyWikis -- this may occur "accidentally" or because one needs to substitute a tiddler in the main ~TiddlyWiki by an included one (like shared ~PageTemplate). In such cases the following rules work:

* each tiddler in each store has or doesn't have some priorities which is defined when the tiddler is included
* shadowed tiddlers are substituted only by tiddlers with the "substituteShadows" priority
* tiddlers inside the main ~TiddlyWiki substitute those in included ones, unless those have "substitute" priority, in which case it is otherwise
* ({{{sh ambiguity}}}) if there are multiple tiddlers with "substituteShadows" and the shadow presents, there's no specific rule that defines which one would be fetched instead of the shadow; if the shadow with such name doesn't exist, those are treated as included tiddlers without "substituteShadows"
* ({{{s ambiguity}}}) if there are multiple tiddlers with "substitute", the same thing applies: a "random" one is chosen (this actually depends on the order of the handling of {{{<<include>>}}} macros)
* ({{{ambiguity}}}) the same is true for tiddlers included with no added priorities

For tracking conflicts, a notification system is present:

* notifications appear if at least one of these parameters is set to {{{true}}} (see the "tweak" panel in the sidebar):
** {{{chkWarnOnSharedTiddlersConflicts}}} -- displays messages (this is usually interrupted by refreshing engines) and writes them to the browser console
** {{{chkAlertOnSharedTiddlersConflicts}}} -- alerts (in contrast to displaying messages, you won't lose this ones, but you have to click "ok" after each one, so this is to be used when setting up)
* for some reason (probably some page-refreshing called from out of the plugin) notifications are not displayed each time conflicts appear, or are removed too fast (when displaying fails logs and alerts can help)
* notifications are displayed in each case: {{{sh ambiguity}}}, {{{s ambiguity}}}, {{{ambiguity}}} and when there's a tiddler T in the main store and one tiddler with the same name in an included store without the "substitute" priority (in the last two cases the tiddler in the main store is also described as "conflicting" for the ease of understanding what's going on, despite the fact it is fetched for sure, not any included one)
* it is implied that shadows are not added after {{{<<include>>}}} macros are handled (otherwise some notifications will appear as in the {{{ambiguity}}} case while after a shadow is added it can become the {{{sh ambiguity}}})

<html><h2>The "reloadIncluded" macro and reloading</h2>
</html>The {{{reloadIncluded}}} macro creates a "link" which causes reloading of the corresponding ~TWs: the content is unloaded and then previously wikified {{{include}}} macros are handled again. Syntax:
{{{
<<reloadIncluded [urls:urlsJSON] [reloadParams:otherReloadParamsJSON]
		[label:labelText] [tooltip:tooltipText] [class:className]>>
}}}
The {{{label}}}, {{{tooltip}}} and {{{class}}} parameters are sefl-explaining; it's worth mentioning the {{{button}}} class which is used in macros like {{{tag}}} and {{{slider}}}. The other two parameters should be in the JSON format, like this (note the double quotes, esp. around {{{import}}}):
{{{
urls:'["node: node1", "included test nodes/node 2.html"]' reloadParams:'{"import":false}'
}}}
The {{{urls}}} defines the ~TWs to reload (if not present, means "reload all"). The {{{reloadParams}}} part defines whether to wikify again {{{include}}} macros with the {{{import}}}/{{{wikify}}}/{{{eval}}} params, by default only {{{eval}}} is set to false to avoid repeated evaluation of shared plugins (and in this example {{{import}}} is set to {{{false}}} as well).

<html><h2>The "includeState" macro</h2>
</html>The {{{<<includeState>>}}} macro can be used to see the progress of inclusion of ~TiddlyWikis (e.g. "included" for those already loaded, or a text of an error for others etc). There's a shadow IncludeState where you can see it in work.

<html><h2>Import tools</h2>
</html>As some plugins and other things should present inside each tw-document rather than be "shared" (like [[NestedSlidersPlugin|http://www.TiddlyTools.com/#NestedSlidersPlugin]], without which some content will be "spoiled"), tools to import/autoimport tiddlers from other ~TiddlyWikis are introduced.

Importing can be done in different __import modes__, currently the following are available:
* {{{1}}} means "import anyway, even if a tiddler with such name is present" (useful, for instance, as "silent mode for plugins")
* {{{2}}} means "skip import if a version of this tiddler in the main store has 'modified' date no less than that of importing one"
* {{{3}}} means "import on confirm of the user"
* {{{4}}} combines the requirements of the modes {{{2}}} and {{{3}}} for import to happen (useful as "totally controlled" import, say for autoupdating plugins from a central TW)
The results of import are currently only logged in a browser's console.

There are 2 ways to import:
* autoimport via the {{{include}}} macro (with the {{{import:importMode}}} argument, import is done instead of including)
* manual import via the tool in the ImportIncluded shadow (using a url, a filter and a mode; the default is the {{{1}}} mode)
Don't forget to save your TW if this is needed (STP sets the usual TW reminder of unsaved changes, but only for browsers which support it)

An example:
{{{
<<include "./commons/plugins.html" filter:"[tag[commonInPlacePlugins]]" import:4>>
}}}

<html><h2>Evaluating tiddlers</h2>
</html>The {{{eval}}} parameter of the {{{<<include>>}}} macro allows to use plugins included from other ~TWs. For instance,
{{{
<<include "commonPlugins.html" filters:"[[CollapseTiddlersPlugin]] [[RearrangeTiddlersPlugin]]" eval>>
}}}
will load two plugins and evaluate them as ~JavaScript (they can be without {{{systemConfig}}} tag). In current implementation, some differences from the conventional way to launch plugins are present: plugins are not registered (no entries in the backstage), no dedicated reaction on errors; also, there's no check preventing some plugin to launch twice or more. Note: if evaluated, tiddlers still will be included or imported.

<html><h2>"include" macros outside the IncludeList and transitive inclusion</h2>
</html>While {{{<<include>>}}} macros inside the ~IncludeList tiddler are handled at the startup, one can also place them in other tiddlers so that new parts are included when the tiddlers are displayed (the ''hide'' option can be useful here). This can save some time at startup; {{{<<include>>}}} macros outside ~IncludeList also provide the possibility of transitive inclusion (see below). However, sometimes opening a tiddler with an {{{<<include>>}}} macro can take several (mili)seconds.

When ~TiddlyWiki B is included to ~TiddlyWiki A, even if ~IncludeList is included with substitution, this won't bring tiddlers included to B in A, because the startup action is already done (see {{{wikifyIncluded}}} macro, though). However, it's possible to get "transitive inclusion" in the following meaning: add some tiddler with {{{<<include>>}}} in B (for instance, a tiddler "Fruits" with the follwing content:
{{{
All fruits: <<include "./food.html" filters:"[tag[Fruit]]" hide>>
<<tag [[Fruit]]>>
}}}
where "./food.html" is a third ~TiddlyWiki), then if you include this tiddler to A, you will get all the "Fruit"-tagged tiddlers included in A and the tiddler "Fruits" will be displayed as in B (*if* A and B are in the same directory -- otherwise the "./food.html" path will be incorrect in A).

<html><h2>Including remote TiddlyWikis</h2>
</html>Although the documentation of the ~IncludePlugin sais that it's possible to include some remote ~TiddlyWikis into a local one, in modern browsers this seemingly no longer works (tested in IP 1.0.1 and STP 1.3 + Opera 12.0-16.0 and ~FireFox 13.0.1). On the other hand, when running a ~TiddlyWiki on a webserver, one can include ~TWs from the same domain, but can't include any TW from a different website (because of so-called "~Cross-Site Scripting" security issue). @@font-size:smaller;Including remote ~TiddlyWikis into a local one may be reintroduced in the future, but this requires changing the load engine which means some extensive search. Any feedback or ideas regarding this issue are particularly appreciated.@@

<html><h2>Making secondary TiddlyWikis smaller</h2>
</html>In some cases included ~TWs can be supposed not to get changed (like archived pieces of journal or news) and be desired to be smaller (especially when placed at a web-site) at the same time. In such cases included ~TiddlyWikis can be reduced to the [[PureStore|http://yakovl.bplaced.net/TW/STP/STP.html#PureStore]] format.

<html><h2>The TwWeb and the describeNode macro</h2>
</html>The {{{describeNode}}} macro addes a description of a node (a ~TiddlyWiki) to the ~TwWeb. Minimal description consists of the name of the node and its address:
{{{
<<describeNode "nodeName" "path to the node/file.html">>
}}}
Once a node is described, its name can be used instead of its url. This is supported in the {{{include}}} macro:
{{{
<<include "node: nodeName" ...>>
}}}
If such macro is wikified before the node was described, it "waits" for the description to appear. This syntax also can be used in the ImportIncluded.

Also, this is supported in the extended form of prettyLinks:
{{{
[[link text|target tiddler]]@nodeName
}}}
where {{{nodeName}}} contains alphanumeric symbols (latin letters, numbers and {{{_}}} symbols), is equivalent to
{{{
<<include "node: nodeName" filters:"[[target tiddler]]" hide noRefresh>>
[[link text|target tiddler]]
}}}
(except no linebreak is added) and
{{{
[[link text|target tiddler]]@nodeName@param string@
}}}
is equivalent to
{{{
<<include "node: nodeName" filters:"[[target tiddler]]" hide noRefresh param string>>
[[link text|target tiddler]]
}}}
where {{{param string}}} is copied "as is" (to get {{{import:4}}} option of the macro, write param string {{{import:4}}} etc). There's a limitation: {{{param string}}} is only recognized when consists of alphanumeric symbols, space symbols and {{{:}}} (so evaluated parameters are not allowed).

There's another function of the {{{describeNode}}} macro: when used like this
{{{
<<describeNode nodeName self>>
}}}
it sets the name {{{nodeName}}} as the name of the main ~TiddlyWiki. Any including from the node {{{nodeName}}} (which may be caused by an included tiddler) won't work. This only works once meaning that the following markup
{{{
<<describeNode nodeName1 self>>
<<describeNode nodeName2 self>>
}}}
will result in setting {{{nodeName1}}} as the name of the main TW and the second macro will alert about itseft but do nothing else.
----
By ~TwWeb a system that handles all the nodes stuff is meant (not to confuse with ~TiddlyWeb). ~TwWeb is a part of STP.

<html><h2>Propagation</h2>
</html>STP prevents some parts of included tiddlers to get broken because they are in the context of the including TW, not the included one. What currently STP does:

* pretty links without {{{@nodeName}}} in included tiddlers, when displayed, cause including of corresponding tiddlers (so links are not broken). This is another part of the hijacking the "prettyLink" formatter and is optional (see "Installation, configuring and troubleshooting" section)
* image formatter ({{{[img[path][link]]}}} syntax) now takes care of relative links ({{{path}}} part is recalced from the including path). This is also optional, "Installation, configuring and troubleshooting" section.

What is not currently implemented:

* no macros are taken care of -- even a transclusion won't work if the corresponding tiddler is not explicitly included (and, of course, more complex macros like {{{tag}}} or {{{list}}})
* name conflicts are not handled: pretty links just cause including, and if there's a tiddler with the same name inside including TW, the priority system applies (deciding which one will be displayed on click)
* (auto)import doesn't account any of these things, including pretty links

Within these docs, such mechanisms are called "propagation" (of links, images etc).

<html><h2>Inline management of included tiddlers</h2>
</html>In the edit mode an included tiddler has an additional panel to manage it. This is implemented by hijacking the {{{edit}}} macro, no changes to EditTemplate are needed. The panel has {{{manageIncludedPanel}}} that can be used for style settings.

!Installation, configuring and troubleshooting
<html><h2>Installation</h2>
</html>First, put the plugin inside your ~TiddlyWiki. This is done as always: import the SharedTiddlersPlugin tiddler (using ImportTiddlers or another engine) or copy it (don't forget the {{{systemConfig}}} tag). You'll need to restart your ~TiddlyWiki (refresh the page) to get it working -- then you may check if it's installed properly in the PluginManager. You can also import or copy this documentation to have it at hand when needed.

Second, add {{{<<include>>}}} macros to IncludeList and wherever you need them. As IncludeList is wikified when you view it, you don't need to restart the "main" ~TiddlyWiki, despite the fact that IncludeList is processed on startup. Add links, transclusions and other "connections" with included tiddlers, if necessary. Search, timeline, {{{<<tag>>}}} and other macros can be used as well.

Now you're ready to go. Remember that included tiddlers are readonly in the "main" ~TiddlyWiki, so you have to go to "original" ~TiddlyWikis to edit them.

<html><h2>Settings</h2>
</html>You may need to change one of these settings:
* <<option chkUseInclude>> {{{chkUseInclude}}} option -- uncheck this and reload your ~TiddlyWiki to stop all inclusions
* <<option chkWarnOnSharedTiddlersConflicts>> {{{chkWarnOnSharedTiddlersConflicts}}} option -- defines whether notifications of conflicts should be displayed and logged
* <<option chkAlertOnSharedTiddlersConflicts>> {{{chkAlertOnSharedTiddlersConflicts}}} option -- defines whether alerting shoud be used for notifying about conflicts
* extending prettyLinks is optional, too; because the hijacking is done at startup, the option is hardcoded: to change it, go to SharedTiddlersPlugin and in the {{{config.options.STP_hijackPrettyLink = true;}}} set {{{false}}} instead
* such is extending of the image formatter ({{{[img[path][link]]}}}): it's governed by the {{{config.options.STP_hijackImageFormatter = ...}}} line in SharedTiddlersPlugin
These along with links to IncludeList, IncludeState and these documentation in the web can be found in AdvancedOptions.

<html><h2>Troubleshooting</h2>
</html>If something goes wrong, you should check:
* core version of your TW: it must be no less than the ~CoreVersion value in the [[SharedTiddlersPlugin]]'s header. You can check it using the {{{<<version>>}}} macro. Also, if [[UpToDateFiltersPlugin|http://yakovl.bplaced.net/TW/ExtraFilters.html#UpToDateFiltersPlugin]] is not installed, it must be 2.6.2 or greater
* the PluginManager -- ~SharedTiddlersPlugin should be present there, be not Disabled, have no error log (if all of these is true, than the plugin is installed correctly); also, only one copy of ~SharedTiddlersPlugin or ~IncludePlugin should be installed
* if the plugin is installed correctly, inspect the {{{chkUseInclude}}} option -- should be checked for the plugin to work
* if the problem is not because of {{{chkUseInclude}}}, go to the IncludeState and see if any problems are reported there
** in some browsers there are additional security settings which can forbid loading other ~TWs, see [[Known Problems with Importing in TiddlyWiki|http://tiddlywiki.com/#%5B%5BTiddlyWiki%20Browser%20Compatibility%5D%5D]] section at tiddlywiki.com (it is about importing, but applies to "including" as well). Problems with ~FireFox seem to be solved by either updating to STP v1.5.0+ or TW v2.7.0+
* some browsers forbid including from outside the folder where the including TW is placed. According to tests, addresses containing ".." (container folder) work in Opera (12.15), Safari (5.0.3), IE (10.0) and don't work in ~FireFox (20.0), Chrome (26.0). In ~FireFox, this can be "fixed" by changing a security option: to do this, in the address bar type {{{about:config}}}, press enter, search for the {{{security.fileuri.strict_origin_policy}}} option and set it to {{{false}}} (fortunately, this works even in Android).
If the problem remains, you can search or post your issue in the [[community newsgroup|http://groups.google.com/group/tiddlywiki]] and if it's not solved, you can also notify the maintainer by email (don't forget to add the link to the thread).

!More details on possible applications
In general, ~SharedTiddlersPlugin can help with the following:
* reducing sizes of ~TiddlyWikis which can speed up saving TW and loading from the web, when used as a web-page/site
** examples: old journal/news tiddlers can "archived" into a separate TW monthly so that your diary/blog/site remains approximately the same size but old entries are easily accessible
* using common content in several ~TiddlyWikis
** like some glossary, or help texts about ~TiddlyWiki or some plugins (like ~SharedTiddlersPlugin which has this extensive documentation)
** in this case it's usually easy to avoid name conflicts -- just try to make sure that in the shared document tiddler names are specific enough
* using common interface
** ~PageTemplate, style sheets and other parts of ~TiddlyWiki theme can be shared (don't forget "substitute"/"substituteShadows" priorities, depending on what is present in a document you include those into)
*** all ~PageTemplate, ~StyleSheet, ~ViewTemplate, ~EditTemplate and ~ToolbarCommands are applied as expected; however, it is done by extra refreshing which causes already displayed messages to disappear (on handling of the {{{<<include>>}}} macro)
** included elements can also be used as parts of a custom theme (instead of substituting the default ones); style sheets can be included in the StyleSheet tiddler as well (by adding lines like {{{[[IncludedStyleSheet]]}}} into it)
** evaluated transclusions can be shared as well (and other stuff which is rendered as it shows, like {{{<html>}}}-insertions)
** finally, included plugins can be evaluated (see the "Detailed reference" part of this docs)
*** keep in mind that for some plugins it's more suitable to import them rather than include and evaluate
* aggregating content from other ~TWs
** ~SharedTiddlersPlugin can be used to get all tiddlers with "~ToDo" tag from all ~TiddlyWikis in a separate TW and other things like that
** usually this wouldn't require extra efforts, but if you expect name conflicts and need to get access to all the tiddlers (including different ones with the same name), check "API changes and coding with ~SharedTiddlersPlugin" section for details
** @@font-size:smaller;[currently unavailable, see "Detailed reference" section for details]@@ it's also can be useful to aggregate tiddlers from web (from online ~TiddlyWikis, like http://www.tiddlywiki.com/index.html), which can bring you news from tiddly world or just from people you know who use ~TiddlyWiki; but remember the cross-site restriction
* finally, ~SharedTiddlersPlugin can be used to "merge" content of several ~TWs
** for instance, if you have a TW dedicated to science you're doing and a TW created for learning (at university or anyhow else), there definitely can appear some topics that belong to both wikis; it's rather weird thing to create new ~TiddlyWikis for each such topic, so you can keep tiddlers in one of them and include them to another for smoother workflow
** however, because included tiddlers are read-only, "default" workflow is not absolutely smooth as you'll need to go to the wiki containing tiddlers "originally" to change them

!API changes and coding with SharedTiddlersPlugin
<html><h2>Accessing stores</h2>
</html>Each included ~TiddlyWiki is represented as a {{{TiddlyWiki}}} object, like the main one is. While for main ~TiddlyWiki it's the global {{{store}}} instance of {{{TiddlyWiki}}}, included ones can be accessed as following:
{{{
  var includedStore = window.sharedTiddlersAPI.getStore(tiddyWikiURL);
}}}
@@font-size:smaller;For backward compability, there's still {{{abego.TiddlyWikiIncluder.getStore(tiddyWikiURL)}}} method which is not recomended to use (see below).@@
Those included stores have only those tiddlers which are included (taking account of the ''filter'' parameters of {{{<<include>>}}} macros). Each of them has an additional property,
{{{
  var fullStore = includedStore.orig_store;
}}}
which is another {{{TiddlyWiki}}} that contains ''all'' the tiddlers of the included TW document.

The list of urls of all included ~TiddlyWikis can be accessed using the
{{{
  window.sharedTiddlersAPI.getIncludes()
}}}
method (it returns an array of strings – urls). Currently, this array contains urls exactly as they were written in {{{<<include>>}}} macros and, for instance, two macros with "example included.html" and "example%20included.html" urls create two different included stores.
@@font-size:smaller;For backward compability, there's also {{{abego.TiddlyWikiIncluder.getIncludes()}}} method which is not recomended to use (see below).@@

To get the state of a {{{store}}} (loaded, or some error occured when loading, etc), the
{{{
  window.sharedTiddlersAPI.getState(tiddyWikiURL)
}}}
method can be used. It returns {{{null}}} when the store is already loaded or a a state/error text otherwise.
@@font-size:smaller;For backward compability, there's also {{{abego.TiddlyWikiIncluder.getState(tiddyWikiURL)}}} method which is not recomended to use (see below).@@

<html><h2>Accessing tiddlers</h2>
</html>As {{{TiddlyWiki}}} instances, both {{{includedStore}}} and {{{fullStore}}} in these examples have corresponding methods, like {{{fetchTiddler}}} etc.

Normally, however, one wouldn't use these direct methods. Instead, there's hijacked
{{{
  store.fetchTiddler(title)
}}}
which fetches a tiddler from the set of "original" and "included" ones taking into account the "substituting". There's also
{{{
  window.sharedTiddlersAPI.forReallyEachTiddler(callback)
}}}
method which does the same thing as {{{store.forEachTiddler}}}, but "iterates" all the tiddlers taking into account the "substituting". Main {{{store}}} methods {{{reverseLookup}}}, {{{updateTiddlers}}}, {{{getTags}}}, {{{getMissingLinks}}}, {{{getOrphans}}} are hijacked in the same way. Finally, already existing functions that use {{{store.forEachTiddler}}} can be modified so that it works as {{{sharedTiddlersAPI.forReallyEachTiddler}}} (see the "Making other plugins "include-aware"" section of these docs).

All original tiddlers from the main store can be accessed via the
{{{
  window.sharedTiddlersAPI.orig_fetchTiddler(title)
}}}
and the original (not hijacked)
{{{
  store.forEachTiddler(callback)
}}}

Notes:
* normally, the {{{window.}}} prefix can be omitted
* methods of {{{abego.TiddlyWikiIncluder}}} are retained so that users of ~IncludePlugin don't need to change their scripts if moving to ~SharedTiddlersPlugin. However, it is recomended that those methods are substituted with those from the {{{sharedTiddlersAPI}}} "namespace".

<html><h2>Included tiddlers</h2>
</html>With SharedTiddlersPlugin, tiddlers get a new property, the url of the store they were included from. It can be got by the {{{getIncludeURL()}}} method of the {{{Tiddler}}} object: it returns the url if the tiddler was included and {{{null}}} otherwise (if it's from the main {{{store}}}).

<html><h2>Importing included tiddlers</h2>
</html>To easily import included tiddlers, the following function can be used:
{{{
  window.sharedTiddlersAPI.importAndLog(tiddler,mode)
}}}
It strips {{{includeURL}}} from the {{{tiddler}}}, imports it in the corresponding {{{mode}}} and logs the results in the browser console. The {{{mode}}} argument is optional, mode numbers can be used either as {{{1}}} or {{{"1"}}}; for the list of modes see "Import tools" in "Detailed reference".

<html><h2>Examples</h2>
</html>(require "example included.html" ~TiddlyWiki included):
<html><a href="javascript:;" onclick='
	url = "example included.html";
	var twStore = sharedTiddlersAPI.getStore(url);
	if(!twStore) {
		displayMessage("The store is not loaded");
		return;
	}

	displayMessage("Tiddlers:");
	twStore.forEachTiddler(function(title,tiddler) {
		usedTiddler = store.fetchTiddler(title);
		if(usedTiddler.getIncludeURL() == url)
	        	displayMessage("- "+title);
	});
'>Show all tiddlers included from the "example included.html" store (with regard to priorities)</a></html>
{{{
<html><a href="javascript:;" onclick='
	url = "example included.html";
	var twStore = sharedTiddlersAPI.getStore(url);
	if(!twStore) {
		displayMessage("The store is not loaded");
		return;
	}

	displayMessage("Tiddlers:");
	twStore.forEachTiddler(function(title,tiddler) {
		usedTiddler = store.fetchTiddler(title);
		if(usedTiddler.getIncludeURL() == url)
	        	displayMessage("- "+title);
	});
'>Show all tiddlers included from the "example included.html" store (with regard to priorities)</a></html>
}}}

<html><a href="javascript:;" onclick='
	var twStore = sharedTiddlersAPI.getStore("example included.html");
	if(!twStore) {
		displayMessage("The store is not loaded");
		return;
	}
	displayMessage("Tiddlers:");
	twStore.forEachTiddler(function(title,tiddler) {
		displayMessage("- "+title);
	});
'>Show all tiddlers included from the "example included.html" store, without regard to priorities</a></html>
{{{
<html><a href="javascript:;" onclick='
	var twStore = sharedTiddlersAPI.getStore("example included.html");
	if(!twStore) {
		displayMessage("The store is not loaded");
		return;
	}
	displayMessage("Tiddlers:");
	twStore.forEachTiddler(function(title,tiddler) {
		displayMessage("- "+title);
	});
'>Show all tiddlers included from the "example included.html" store, without regard to priorities</a></html>
}}}

<html><a href="javascript:;" onclick='
	var includedStore = sharedTiddlersAPI.getStore("example included.html");
	if(!includedStore) {
		displayMessage("The store is not loaded");
		return;
	}
	var realStore = includedStore.orig_store;
	var list = [];
	realStore.forEachTiddler(function(title,tiddler) {
		if(tiddler.modified > new Date("July 1, 2007"))
        		list.push(title);
	});
	if(list.length > 0) {
		displayMessage("Tiddlers:");
		for(var i = 0; i < list.length; i++)
			displayMessage("- "+list[i]);
	} else
		displayMessage("No tiddlers changed after July 1st, 2007 were found");
'>Show all tiddlers in the "example included.html" store changed after July 1st, 2007</a></html>
{{{
<html><a href="javascript:;" onclick='
	var includedStore = sharedTiddlersAPI.getStore("example included.html");
	if(!includedStore) {
		displayMessage("The store is not loaded");
		return;
	}
	var realStore = includedStore.orig_store;
	var list = [];
	realStore.forEachTiddler(function(title,tiddler) {
		if(tiddler.modified > new Date("July 1, 2007"))
        		list.push(title);
	});
	if(list.length > 0) {
		displayMessage("Tiddlers:");
		for(var i = 0; i < list.length; i++)
			displayMessage("- "+list[i]);
	} else
		displayMessage("No tiddlers changed after July 1st, 2007 were found");
'>Show all tiddlers in the "example included.html" store changed after July 1st, 2007</a></html>
}}}

<html><a href="javascript:;" onclick='
	displayMessage("Tiddlers:");
	store.forEachTiddler(function(title,tiddler) {
		displayMessage("- "+title);
	});
'>Show all tiddlers in the main store (including substituted ones)</a></html>
{{{
<html><a href="javascript:;" onclick='
	displayMessage("Tiddlers:");
	store.forEachTiddler(function(title,tiddler) {
		displayMessage("- "+title);
	});
'>Show all tiddlers in the main store (including substituted ones)</a></html>
}}}

[[Check an included tiddler|Example of a tiddler in the included tw-document]], <html><a href="javascript:;" onclick='
	var mode = 4,
	    tiddler = store.fetchTiddler("Example of a tiddler in the included tw-document");
	// the tiddler is supposed to be included already
	sharedTiddlersAPI.importAndLog(tiddler,mode);
'>import it</a></html>, then check it again.
{{{
<html><a href="javascript:;" onclick='
	var mode = 4,
	    tiddler = store.fetchTiddler("Example of a tiddler in the included tw-document");
	// the tiddler is supposed to be included already
	sharedTiddlersAPI.importAndLog(tiddler,mode);
'>import it</a></html>
}}}
See also ImportIncluded tiddler for another example of "importing" included tiddlers.

!Making other plugins include-aware
To make external tiddlers usable, ~SharedTiddlersPlugin basically does 3 things:

* hijackes the {{{fetchTiddler}}} method of the main {{{store}}} object
* "recalcs" slices by deleting them
* makes some core functions see {{{store.forEachTiddler}}} as thought as it were hijacked (so that it iterates all the tiddlers that {{{fetchTiddler}}} gets)

If you want a plugin to act with regard to including and it uses {{{store.forEachTiddler}}}, you need to do this "partial hijacking" of it. This can be done in several ways, but probably the best one is the following:

* for ~SomePlugin using functions {{{func1}}}, {{{func2}}}, ..., {{{funcN}}} and objects with methods {{{obj1.met1}}}, ... {{{objM.metL}}} utilizing {{{store.forEachTiddler}}} form a piece of "hijacking code" that will make them "include-aware" – lines like:{{justDiv{
{{{
func1 = config.extensions.SharedTiddlersPlugin.getFunctionUsingForReallyEachTiddler(func1);
}}}
}}}For objects, there's an analogue which is used like this:{{justDiv{
{{{
config.extensions.SharedTiddlersPlugin.useForReallyEachTiddler(obj1,met1);
}}}
}}}
** current implementation makes "double hijacking" to work as an ordinary one, so even if {{{func1}}} calls {{{func2}}} and both are hijacked, {{{func2}}} will work correctly; but in some such cases it's not necessary to hijack all the functions and methods
** be careful with functions which modify ~TiddlyWiki store: by hijacking everything you can get external tiddlers saved in the main TW
* make sure that ~SharedTiddlersPlugin tiddler contains the "Name" slice. In the end of ~SomePlugin add this code (put the "hijacking code" where pointed):{{justDiv{
{{{
var isSharedTiddlersPluginEnabled = function() {
	for(var i = 0; i < installedPlugins.length; i++)
		if(installedPlugins[i].Name == "SharedTiddlersPlugin" && isPluginEnabled(installedPlugins[i]))
			return true;
	return false;
};
var makeInclusionAware = function() {
	var now = false;
	if(config.extensions.SharedTiddlersPlugin)
		if(config.extensions.SharedTiddlersPlugin.useForReallyEachTiddler)
			now = true;
	if(now) {
		// "hijacking code" goes here
	} else
		setTimeout(makeInclusionAware,100);
};
if(isSharedTiddlersPluginEnabled())
	makeInclusionAware();
}}}
}}}
* restart to apply this "patch"

<html><h2>Examples</h2>
</html>Previously, other abego plugins were made "include-aware" right in the ~IncludePlugin/~SharedTiddlersPlugin code:
{{{
//================================================================================
// Make IntelliTagger "Include-aware"

var patchIntelliTagger = function() {
	if (abego.IntelliTagger)
		useForReallyEachTiddler(abego.IntelliTagger,"assistTagging");
};

//================================================================================
// Make ForEachTiddler "Include-aware"

var patchForEachTiddler = function() {
	if (config.macros.forEachTiddler)
		// Note: this will not patch the TiddlyWiki passed to findTiddlers but the "global" store
		// This is by intent
		useForReallyEachTiddler(config.macros.forEachTiddler,"findTiddlers");
};

...

invokeLater(patchIntelliTagger,100);
invokeLater(patchForEachTiddler,100);
}}}
This pieces of code are removed from ~SharedTiddlersPlugin; to make ~ForEachTiddler "see" included tiddlers, add the following to the end of the ~ForEachTiddlerPlugin code:
{{{
var isSharedTiddlersPluginEnabled = function() {
	for(var i = 0; i < installedPlugins.length; i++)
		if(installedPlugins[i].Name == "SharedTiddlersPlugin" && isPluginEnabled(installedPlugins[i]))
			return true;
	return false;
};
var makeInclusionAware = function() {
	var now = false;
	if(config.extensions.SharedTiddlersPlugin)
		if(config.extensions.SharedTiddlersPlugin.useForReallyEachTiddler)
			now = true;
	if(now) {
		// the place for hijacks
		config.extensions.SharedTiddlersPlugin.useForReallyEachTiddler(config.macros.forEachTiddler,"findTiddlers");
	} else
		setTimeout(makeInclusionAware,100);
};
if(isSharedTiddlersPluginEnabled())
	makeInclusionAware();
}}}
Then (after restarting), you can try its work by creating a table of included tiddlers:
{{{
<<forEachTiddler
	where
		'tiddler.includeURL'
	write
		'"|[[" +tiddler.title+"]]|"+tiddler.includeURL+"|\n"'
	    begin
		    '"| name | came from |h\n"'
>>
}}}

!Versions history and quality issues
<html><h2>Version history</h2></html>
* 2.4.0 (10.09.2013)
** introduced the {{{reloadIncluded}}} macro
** filters: added {{{external}}}, added {{{node: nodeName}}} syntax support to {{{includedFrom}}}, fixed a bug in {{{includedFrom}}} and {{{internal}}}
** fixed {{{hijackImageFormatter}}} for cases when the image is not inside a tiddler
** some code refactoring, including "internal" interfaces
** some minor quality issues in the conflict notification system are introduced (like doubling messages in rare cases), to be fixed in the next versions
** {{{wikifyIncluded}}} macro is ''completely removed'' (no notifications are now provided)
* 2.3.0 (15.06.2013)
** implemented new modes of import (2, 3)
** ImportIncluded now supports modes, "node: nodeName" syntax and got several fixes
** propagation of including is introduced for pretty links and images
** managing included tiddlers panel got the "import" button (link)
* 2.2.0 (30.05.2013)
** implemented the {{{<<describeNode nodeName self>>}}} syntax and ban of including from the node marked self
** added a panel for managing inluded tiddlers inside their edit mode (now contains a link to the tiddler in its "source" ~TiddlyWiki)
* 2.1.0 (13.05.2013)
** introduced the support of {{{[[text|tiddler]]@node}}} links
** removed functionality from the {{{wikifyIncluded}}} macro (only a notification remains)
** extended the {{{all}}} filter so that {{{[all[with included]]}}} filter brings all tiddlers accounting included ones
** fixed 'a.fetchTiddler is not a function' bug which appeared in FF, in TW 2.6.5, when a TW from outside the current folder (../some path) was tried to include (now {{{.getStore}}} method works correctly in such cases as well)
* 2.0.0 (1.05.2013)
** introduced ~TwWeb, {{{describeNode}}} macro, added support of node names to the {{{include}}} macro
** added {{{wikify}}} parameter to the {{{include}}} macro; deprecated {{{wikifyIncluded}}} macro and added a notification that pops when it is used
** some minor fixes and improvements
** major documentation update, added simplified "Functionality and examples" section, changed the structure of sections
* the 2.x.x series are dedicated to content managing and interaction, to ~TwWeb
* 1.6.1 (8.03.2013)
** added {{{noRefresh}}} parameter to the {{{include}}} macro
** added {{{internal}}} filter
** fixed a bug preventing ImportIncluded engine to work
** documentation improvements, added description of the {{{window.sharedTiddlersAPI.importAndLog(tiddler,mode)}}} method
* 1.6.0 (13.02.2013)
** added evaluation of tiddlers via the {{{include}}} macro with the new {{{eval}}} parameter
** added filters {{{all}}} and {{{includedFrom}}}; now in TW 2.6.1 or elder STP requires [[UpToDateFiltersPlugin|http://yakovl.bplaced.net/TW/ExtraFilters.html#UpToDateFiltersPlugin]]
** {{{allTiddlersAreLoaded}}} parameter is no longer added to stores, no need to check it (but old {{{if(allTiddlersAreLoaded)}}} code pieces to get all tiddlers should work)
** {{{hide}}} parameter of the {{{include}}} macro now can be used without trailing {{{:true}}}
** some fixes and code improvements, better API documentation
* 1.5.0 (11.01.2013)
** solved problems in ~FireFox, now including works in TW 2.6.0
** added autoimport via the {{{include}}} macro
** added import modes and setting the {{{store}}} as {{{dirty}}} on import
** added "protection" from including non-existing tiddlers (caused by the {{{tiddler}}} filter)
** some fixes, code improvments
* 1.4.4 (6.12.2012)
** slices are now "recalced", substituted ~ToolbarCommands is now applied as expected
** the {{{include}}} macro is now launched only once (per session) with each used exact "wording", so no loop because of refreshing is now possible
** substituted ~ViewTemplate is now refreshed on including
** {{{wikifyIncluded}}} now doesn't make infinite loops, control parameters are added
** making some abego plugins "include-aware" is removed from the code; howTo make any plugin "include-aware" is added to docs
** some minor fixes/enhancements, documentation improvments, added minified version of the plugin
* 1.4.3 (21.11.2012)
** alerting on conflicts controled by {{{chkAlertOnSharedTiddlersConflicts}}} parameter is introduced
** many improvments of code and update of documentation (including corrections in the "Name conflicts and priorities" section) are done
* 1.4.2 (wasn't published)
** introduced the {{{wikifyIncluded}}} macro
** introduced the "importing" engine (ImportIncluded)
* 1.4.1 (wasn't published)
** included ~PageTemplate is now applied
** the issue with the "orphans" list is fixed, the issue with the "missing" list is partially fixed
** {{{window.sharedTiddlersAPI.orig_forEachTiddler}}} is removed as the {{{store.forEachTiddler}}} is not actually hijacked
** documentation is updated
* 1.4.0 (29.09.2012)
** removed the {{{abego}}} namespace where possible, added {{{window.sharedTiddlersAPI}}} object and moved all (but some deprecated) API there, reduced the scope of some internal functions
* 1.3.0 (wasn't published)
** notifications of conflicts were added
** theme is refreshed when an inclusion is done so that included style sheets and templates are applied right away
* 1.2.0 (wasn't published)
** substitute and substituteShadows possibilities were added
* 1.1.0 (wasn't published)
** filtering was added
* forked from [[IncludePlugin|http://tiddlywiki.abego-software.de/#IncludePlugin]] v1.0.1, by Udo Borkowski
<html><h2>Current quality issues</h2></html>
* some tiddlers in the main store, referenced in included tiddlers, appear in the "missing" list
!%/<<tiddler {{setStylesheet('div[tiddler="SharedTiddlersPluginInfo"] .tabContents { background-color:'+store.getTiddlerText('ColorPalette::Background')+'; }', 'STPInfoCSS');'';}}>>

[>img[./Images/Book.png][./Documents/ATTRA/sheep.pdf]]
|!Name: |sheep |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/sheet metal - metal joining.pdf]]
|!Name: |Sheet Metal - Pipelines |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/sheetmetal - spinning methods and tools.pdf]]
|!Name: |Sheet Metal Spinning Methods and Spinning Tools |
|!Author: |Book Extract |
|!Date: | |

[>img[./Images/Book.png][./Documents/USAMD/md 0713 - shell eggs.pdf]]
|!Name: |MD 0713 - Shell Eggs |
|!Author: |US Army Medical Department |
|!Date: | |

[>img[./Images/Book.png][./Documents/shelter design info.pdf]]
|!Name: |Shelter Design Considerations |
|!Author: |Book Extract |
|!Date: |1991 |
[>img[./Images/Book.png][./Documents/shelterdoors.pdf]]
|!Name: |Shelter Doors |
|!Author: |Swiss Federal Office of Civil Defence |
|!Date: |2001 |
[>img[./Images/Book.png][./Documents/shelter_ops_and_forms.pdf]]
|!Name: |Shelter Ops and Forms |
|!Author: |Bell System Practices ( United States Government ) |
|!Date: |Mar 1971 |
[>img[./Images/Book.png][./Documents/shelter & making camp.pdf]]
|!Name: |Shelter and Making Camp |
|!Author: |USENET Article |
|!Date: |Jun 1995 |
[>img[./Images/Book.png][./Documents/shelter in place.pdf]]
|!Name: |Shelter in Place |
|!Author: |National Institute for Chemical Studies |
|!Date: |Jun 2001 |
[>img[./Images/Book.png][./Documents/shelteringfacts.pdf]]
|!Name: |Sheltering facts |
|!Author: |Centers for Disease Control and Prevention |
|!Date: | |
[>img[./Images/Book.png][./Documents/shelterinnewhomes.pdf]]
|!Name: |Shelters In New Homes |
|!Author: |United States Government Printing Office |
|!Date: |1969 |
[>img[./Images/Book.png][./Documents/Public/beardd2825528255-8.pdf]]
|!Name: |Shelters, Shacks and Shanties |
|!Author: |D. C. Beard |
|!Date: |1921 |
Obtained from https://www.gov.uk/government/publications/the-ship-captains-medical-guide

This information is in the Public Domain.
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap1.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 1 - Principles of First Aid |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap2.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 2 - Toxins and Poisons |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap3.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 3 - General Nursing |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap4.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 4 - Care of the injured |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap5.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 5 - Causes and prevention of disease|
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap6.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 6 - Communicable diseases |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap6.1.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 6.1 - Sexually transmitted diseases |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap7.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 7 - Other diseases and medical problems |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap8.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 8 - Diseases of Fishermen |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap9.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 9 - Female disorders and pregnancy |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap10.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 10 - Childbirth |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap11.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 11 - Survivors |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap12.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 12 - The dying and the dead |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_chap13.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter 13 - External assistance |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/mcga-shs_capt_guide_annex.pdf]]
|!Name: |Ship's Captain's Medical Guide - Chapter Annex |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/msn1768.pdf]]
|!Name: |Ship's Captain's Medical Guide - Medical Stores |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/SCMG/msn1768corr.pdf]]
|!Name: |Ship's Captain's Medical Guide - Medical Stores (Addendum) |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/08-301.pdf]]
|!Name: |Short Rotation Forestry |
|!Author: |Geoffrey Stanford |
|!Date: |Jun 1976 |
[>img[./Images/Book.png][./Documents/swguide.pdf]]
|!Name: |Short Wave Radio Frequency Band Guide |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/general_-_shortwave_radio_101.pdf]]
|!Name: |Shortwave Radio 101 |
|!Author: |Grundig Radio |
|!Date: | |
/%
!info
|Name|ShowTiddlerStatistics|
|Source|http://www.TiddlyTools.com/#ShowTiddlerStatistics|
|Version|1.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion |
|Description|display document summary / tiddler stats (newest, oldest, largest, smallest, etc.)|
Usage
<<<
{{{
<<tiddler ShowTiddlerStatistics>>
}}}
!end
!show
{{nowrap{
$1
}}}
!end
!summary
{{fine{There are ''%0 tiddlers'', including: ''%1 systemConfig'' + ''%2 Plugins'' (%3 total bytes)}}}
!end
!table
|borderless|k
| last change:&nbsp;|[[%0]] {{fine{(updated %1)}}}|
| newest:&nbsp;|[[%2]] {{fine{(created %3)}}}|
| oldest:&nbsp;|[[%4]] {{fine{(created %5)}}}|
| smallest:&nbsp;|[[%6]] {{fine{(%7 bytes)}}}|
| largest:&nbsp;|[[%8]] {{fine{(%9 bytes)}}}|
!end
%/<<tiddler ShowTiddlerStatistics##show with: {{
	var tiddlers=store.getTiddlers("modified","excludeLists");
	var last=tiddlers[tiddlers.length-1];
	var total=oldest=newest=smallest=largest=0;
	for (var i=0; i<tiddlers.length; i++) {
		total+=tiddlers[i].text.length;
		if (!oldest || tiddlers[i].created<oldest)
			{ var oldest=tiddlers[i].created; var oldtid=tiddlers[i]; }
		if (!newest || tiddlers[i].created>newest)
			{ var newest=tiddlers[i].created; var newtid=tiddlers[i]; }
		if (!smallest || tiddlers[i].text.length<smallest)
			{ var smallest=tiddlers[i].text.length; var smalltid=tiddlers[i]; }
		if (!largest || tiddlers[i].text.length>largest)
			 { var largest=tiddlers[i].text.length; var largetid=tiddlers[i]; }
	}
	var out=store.getTiddlerText("ShowTiddlerStatistics##summary").format([
		tiddlers.length,
		store.getTaggedTiddlers("systemConfig").length,
		store.getTaggedTiddlers("Plugins").length,
		total]);
	out+='\n'+store.getTiddlerText("ShowTiddlerStatistics##table").format([
		last.title, last.modified.formatString("MMM DDth YYYY, 0hh:0mm"),
		newtid.title, newtid.created.formatString("MMM DDth YYYY, 0hh:0mm"),
		oldtid.title, oldtid.created.formatString("MMM DDth YYYY, 0hh:0mm"),
		smalltid.title, smalltid.text.length,
		largetid.title, largetid.text.length]);
	out;
}}>>
<<search>><<closeAll>><<permaview>><<newTiddler "New Library" label:"New Entry" text:"
[>img[./Images/Book.png][./Documents/]]
|!Name: | |
|!Author: | |
|!Date: | |" focus:title>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
[>img[./Images/Book.png][./Documents/general_-_signaling_and_direction_finding.pdf]]
|!Name: |Signaling and Direction Finding |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/simple_solar_still_for_the_production_of.pdf]]
|!Name: |Simple Solar Still for the Production of Distilled Water |
|!Author: |Brace Research Institute |
|!Date: |Oct 1963 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc6.pdf]]
|!Name: |Simple construction surveying for rural applications |
|!Author: |Jan H. Loedeman |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/simplified-manual.pdf]]
|!Name: |Simplified Aquaponics Manual |
|!Author: |Drs. Paul & Bonnie Range |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/simplified_wind_power_systems_for_experimenters.pdf]]
|!Name: |Simplified wind power systems for experimenters |
|!Author: |Jack Park |
|!Date: |1975 |

Document Library
[>img[./Images/Book.png][./Documents/skin_protection_practical_applications_in_the_occupational_setting.pdf]]
|!Name: |Skin Protection Practical Applications in the Occupational Setting |
|!Author: |S. Schliemann, P. Elsner |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/water_-_slow_sand_filters.pdf]]
|!Name: |Slow Sand Filters |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/CAT/slowsandfilter.pdf]]
|!Name: |Slow Sand Filters |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/ssf9241540370.pdf]]
|!Name: |Slow Sand Filtration |
|!Author: |L Huisman |
|!Date: |1974 |
[>img[./Images/Book.png][./Documents/ATMRL/slow_sand_filtration_for_community_water_supply.pdf]]
|!Name: |Slow Sand Filtration for Community Water Supply |
|!Author: |J.T. Visscher, R. Paramasivan, A. Raman, and H.A. Heijnen |
|!Date: |Jun 1987 |
[>img[./Images/Book.png][./Documents/CAT/slugs-what-can-you-do-about-them.pdf]]
|!Name: |Slugs: What can you do about them? |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/bankturbine.pdf]]
|!Name: |Small Banki Turbine |
|!Author: |Volunteers in Technical Assistance |
|!Date: |1980 |
[>img[./Images/Book.png][./Documents/ATMRL/small_community_water_supplies.pdf]]
|!Name: |Small Community Water Supplies |
|!Author: |E.H. Hofkes  |
|!Date: |Aug 1981 |
[>img[./Images/Book.png][./Documents/Public/smet-2002-small_tp40.pdf]]
|!Name: |Small Community Water Supplies |
|!Author: |Jo Smet and Christine van Wijk |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/h4264e.pdf]]
|!Name: |Small Engine Information |
|!Author: |Thai German Teaching Centre |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/06-290.pdf]]
|!Name: |Small Farm Equipment for Developing Countries |
|!Author: |Internationa Rice Research Institute |
|!Date: |Sep 1985 |
[>img[./Images/Book.png][./Documents/ATMRL/small_hydropower_for_rural_asia.pdf]]
|!Name: |Small Hydropower for Asian Rural Development |
|!Author: |Colin R Elliott |
|!Date: |Jun 1981 |
[>img[./Images/Book.png][./Documents/small_plastic_greenhouses.pdf]]
|!Name: |Small Plastic Greenhouses |
|!Author: |James F Thompson, Division of Agricultural Sciences, University of California |
|!Date: |Oct 1980 |
[>img[./Images/Book.png][./Documents/metalworking - portable-arc-furnace.pdf]]
|!Name: |Small Portable Arc Furnace |
|!Author: |Book Extract |
|!Date: |1937 |
[>img[./Images/Book.png][./Documents/ATTRA/quickstart.pdf]]
|!Name: |quickstart |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/ruminantresources.pdf]]
|!Name: |ruminantresources |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/ruminantcheck.pdf]]
|!Name: |ruminantcheck |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/small_scale_beekeeping.pdf]]
|!Name: |Small Scale Beekeeping |
|!Author: |Curtis Gentry  |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/small_scale_hydropower_tech.pdf]]
|!Name: |Small Scale Hydropower Technologies  |
|!Author: |J.J. Tiemersma and N.A. Heeren |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/poultryprocess.pdf]]
|!Name: |poultryprocess |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/small-unit-aquaponics-paul-range.pdf]]
|!Name: |Small Unit Aquaponics |
|!Author: |Drs. Paul & Bonnie Range  |
|!Date: | |
[>img[./Images/Book.png][./Documents/windpower1.pdf]]
|!Name: |Small Wind Systems for Battery Charging |
|!Author: |Simon Dunnett, Smail Khennas and Hugh Piggott |
|!Date: |Jul 2001 |
[>img[./Images/Book.png][./Documents/ATMRL/small_hydro_electric_plants.pdf]]
|!Name: |Small hydro electric plants |
|!Author: |National Rural Electric Cooperative Association |
|!Date: | |
In Spanish and English
[>img[./Images/Book.png][./Documents/small_is_beautiful_evidence_of_inverse_size_yield_relationship.pdf]]
|!Name: |Small is Beautiful: Evidence of inverse size yield relationship in Rural Turkey |
|!Author: |Fatma Gül Ünal |
|!Date: |Oct 2006 |
[>img[./Images/Book.png][./Documents/small_is_successful.pdf]]
|!Name: |Small is Successful |
|!Author: |The Ecological Land Co-operative |
|!Date: |2011  |
[>img[./Images/Book.png][./Documents/PracticalAction/coffee.pdf]]
|!Name: |Small scale Coffee processing |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/butter_making.pdf]]
|!Name: |Small scale butter making |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/solar-powered_irrigation_pumping_systems.pdf]]
|!Name: |solar-powered_irrigation_pumping_systems |
|!Author: |Sir William Halcrow and partners in association with [[ITDG]] |
|!Date: |Sep 1981 |
[>img[./Images/Book.png][./Documents/PracticalAction/spice_processing.pdf]]
|!Name: |~Small-Scale Spice Processing |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/rabbitproduction.pdf]]
|!Name: |rabbitproduction |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/smallscalewindenergy.pdf]]
|!Name: |smallscalewindenergy |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/i4021e.pdf]]
|!Name: |Small-scale aquaponic food production |
|!Author: |Christopher Somerville (Food and Agriculture Organization of the United Nations) |
|!Date: |2014 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc4.pdf]]
|!Name: |Small-scale chicken production |
|!Author: |N. van Eekeren, A. Maas, H.W. Saatkamp, M. Verschuur. Agromisa Foundation |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc15.pdf]]
|!Name: |Small-scale freshwater fish farming |
|!Author: |Eira Carballo, Assiah van Eer, Ton van Schie, Aldin Hilbrands. Agromisa Foundation |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc40.pdf]]
|!Name: |Small-scale mushroom cultivation |
|!Author: |Peter Oei. Agromisa Foundation |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc41.pdf]]
|!Name: |Small-scale mushroom cultivation - 2 |
|!Author: |Bram van Nieuwenhuijzen. Agromisa Foundation |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc22.pdf]]
|!Name: |Small-scale production of weaning foods |
|!Author: |Saskia van Gastel, Annoek van den Wijngaart |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc37.pdf]]
|!Name: |Small-scale seed production |
|!Author: |Harry van den Burg. Agromisa Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/smallholder_tree_growing_for_rural_development_and_environmental_services-lessons_from_asia.pdf]]
|!Name: |Smallholder Tree Growing for Rural Development and Environmental Services |
|!Author: |Denyse J. Snelder, Rodel D. Lasco |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/sneak it through - smuggling made easier -.pdf]]
|!Name: |Sneak it Through - Smuggling Made Easier |
|!Author: |Michael Connor |
|!Date: |1984 |
[>img[./Images/Book.png][./Documents/fieldmanual-chapt11snowshelters.pdf]]
|!Name: |Snow Shelters |
|!Author: |Field Manual for the U.S. Antarctic Program |
|!Date: | |
Full documents of the Antarctic Program manual can be found at http://www.usap.gov/travelAndDeployment/contentHandler.cfm?id=540
[>img[./Images/Book.png][./Documents/so_you_want_to_keep_bees.pdf]]
|!Name: |So You Want To Keep Bees? |
|!Author: |InternetArticle |
|!Date: | |

[>img[./Images/Book.png][./Documents/general_-_social_distancing_and_pandemic.pdf]]
|!Name: |Social Distancing for Pandemic Distancing |
|!Author: |Colorado Department of Public Health |
|!Date: |Mar 2008 |
[>img[./Images/Book.png][./Documents/sebusinessplanoutline.pdf]]
|!Name: |Social Enterprise London - Buisness Plan Outline |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/socialenterpriseplanning.pdf]]
|!Name: |Social Enterprise Planning |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/CAT/6._society_for_environmental_improvement_ltd.pdf]]
|!Name: |Society for Environmental Improvement |
|!Author: |Centre for Alternative Technology |
|!Date: |Nov 1973 |

[>img[./Images/Book.png][./Documents/soil_biology_primer_elaine_ingham_pdf.pdf]]
|!Name: |Soil Biology Primer |
|!Author: |Elaine Ingham |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/soil_health_resources.pdf]]
|!Name: |Soil Health and Livestock: ATTRA Resources |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/Public/king_soilmanagement.pdf]]
|!Name: |Soil Management |
|!Author: |F H King |
|!Date: |1914 |
[>img[./Images/Book.png][./Documents/ATTRA/organic_soil.pdf]]
|!Name: |organic_soil |
|!Author: |[[ATTRA]] |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/ATTRA/soil_moisture.pdf]]
|!Name: |soil_moisture |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/soil_quality_in_organic_agricultural_systems.pdf]]
|!Name: |Soil Quality in Organic Agricultural Systems |
|!Author: |Iowa State University |
|!Date: |Aug 2003 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc2.pdf]]
|!Name: |Soil fertility management |
|!Author: |Laura van Schöll, Rienke Nieuwenhuis. Agromisa Foundation |
|!Date: |2004 |

[>img[./Images/Book.png][./Documents/PracticalAction/solar_pv_waterpumps.pdf]]
|!Name: |Solar (Photovoltaic) Water Pumping |
|!Author: |[[ITDG]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/solar_adobe_sundwellings.pdf]]
|!Name: |Solar Adobe Sundwellings |
|!Author: |John Timothy Mackey |
|!Date: |Jan 1980 |
[>img[./Images/Book.png][./Documents/solaraqua.pdf]]
|!Name: |Solar Aquaculture |
|!Author: |Earle Barnhart |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/solar_beeswax_extractor.pdf]]
|!Name: |Solar Beeswax Extractor |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_solar_cooking_2.pdf]]
|!Name: |Solar Cooking |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/solar_disinfection_of_water.pdf]]
|!Name: |Solar Disinfection of Drinking Water and Oral Rehydration Solutions |
|!Author: |Aftim Acra, Zeina Raffoul, and Yester Karahagopian |
|!Date: |1984 |
[>img[./Images/Book.png][./Documents/PracticalAction/solar_distillation.pdf]]
|!Name: |Solar Distillation |
|!Author: |[[ITDG]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/solar_distillation_for_small-scale_water_demands.pdf]]
|!Name: |Solar Distillation as a means of meeting small-scale water demands |
|!Author: |United Nations |
|!Date: |1970 |
[>img[./Images/Book.png][./Documents/PracticalAction/solar_drying (1).pdf]]
|!Name: |Solar Drying |
|!Author: |[[ITDG]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_solar_food_drying.pdf]]
|!Name: |Solar Drying Technology for Food Preservation |
|!Author: |Matthew G. Green |
|!Date: |Aug 2001 |
[>img[./Images/Book.png][./Documents/ATMRL/solar_drying.pdf]]
|!Name: |Solar Drying: Practical Methods of Food Preservation |
|!Author: |C.I. Speirs and H.C. Coote  |
|!Date: |1986 |
[>img[./Images/Book.png][./Documents/ATMRL/solar_dwelling_design_concepts.pdf]]
|!Name: |Solar Dwelling Design Concepts |
|!Author: |The American Institute of Architects Research Corporation |
|!Date: |May 1976 |
[>img[./Images/Book.png][./Documents/solar_energy_engineering-processes_and_systems.pdf]]
|!Name: |Solar Energy Engineering - Processes and Systems |
|!Author: |Elsevier Inc. |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/solar_energy_projects_for_the_evil_genius.pdf]]
|!Name: |Solar Energy Projects for the Evil Genius |
|!Author: |Gavin Harper |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/ATMRL/solar_grain_drying.pdf]]
|!Name: |Solar Grain Drying: Progress and Potential |
|!Author: |George Foster and Robert Peart |
|!Date: |Nov 1976 |
[>img[./Images/Book.png][./Documents/us_dod-solar_heating_of_buildings_and_domestic_hot_water.pdf]]
|!Name: |us_dod-solar_heating_of_buildings_and_domestic_hot_water |
|!Author: |US Department of Defense |
|!Date: |Jan 2004 |
[>img[./Images/Book.png][./Documents/solar_house-a_guide_for_the_solar_designer.pdf]]
|!Name: |Solar House - A Guide for the Solar Designer |
|!Author: |Terry Galloway |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/solar-oven-manual-english1.pdf]]
|!Name: |SOS Solar |
|!Author: |Solar Oven Society http://www.solarovens.org |
|!Date: |December 2004 |
[>img[./Images/Book.png][./Documents/guyana_solar_pv_systems_maintenance_guide.pdf]]
|!Name: |Solar PV Systems Maintenance Guide |
|!Author: |United States Agency for International Development |
|!Date: |Apr 2013 |
[>img[./Images/Book.png][./Documents/solarpvforbuildersoct2009.pdf]]
|!Name: |Solar PV for Builders |
|!Author: |Washington State University Extension Energy Program |
|!Date: |Oct 2009 |
[>img[./Images/Book.png][./Documents/solar panel technical information guidelines.pdf]]
|!Name: |Solar Panel Technical Information Guidelines |
|!Author: |Solarflex, South Africa |
|!Date: | |
[>img[./Images/Book.png][./Documents/PracticalAction/solar_pv_energy.pdf]]
|!Name: |Solar Photovoltaic Energy |
|!Author: |[[ITDG]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/solar_photovoltaic_products.pdf]]
|!Name: |Solar Photovoltaic Products |
|!Author: |Anthony Derrick, Catherine Francis, & Varis Bokalders |
|!Date: |1991 |
[>img[./Images/Book.png][./Documents/PracticalAction/solar_refrigeration_vaccines.pdf]]
|!Name: |Solar Photovoltaic Refrigeration of Vaccines |
|!Author: |[[ITDG]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/133249e.pdf]]
|!Name: |Solar Photovoltaic Systems Technical Training Manual |
|!Author: |Herbert A Wade |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/ATMRL/solar_photovotaics_for_irrigation_water.pdf]]
|!Name: |Solar Photovoltaics for Irrigation Water |
|!Author: |Urs Rentsch |
|!Date: |1982 |
[>img[./Images/Book.png][./Documents/solar power-101.pdf]]
|!Name: |Solar Power 101 |
|!Author: |Vince Lombardi |
|!Date: |Aug 2012 |
[>img[./Images/Book.png][./Documents/solar_power_qa.pdf]]
|!Name: |Solar Power Questions Answered |
|!Author: |Richard A Stubbs |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/solar_inst,op,maint_manual_reva_465162.pdf]]
|!Name: |Solar Power Systems Installation, Operation and Maintenance Guide |
|!Author: |Ventev Innovations |
|!Date: |Jan 2006 |
[>img[./Images/Book.png][./Documents/solar_power_in_building_design.pdf]]
|!Name: |Solar Power in Building Design |
|!Author: |Peter Gevorkian |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/solar_power_your_home_for_dummies.pdf]]
|!Name: |Solar Power your Home for Dummies |
|!Author: |Rik ~DeGunther |
|!Date: |2008 |
[>img[./Images/Book.png][./Documents/ATMRL/solar_powered_electricity_a_survey.pdf]]
|!Name: |Solar Powered Electricity |
|!Author: |Bernard McNelis, Antholly Derrick and Michael Starr |
|!Date: |1988 |
[>img[./Images/Book.png][./Documents/solar_technologies_for_buildings.pdf]]
|!Name: |Solar Technologies for Buildings |
|!Author: |Ursula Eicker |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/PracticalAction/solar_thermal_energy.pdf]]
|!Name: |Solar Thermal Energy |
|!Author: |[[ITDG]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/solar_water_heaters_in_nepal.pdf]]
|!Name: |Solar Water Heaters in Nepal |
|!Author: |Mechanical Training Centre, Balaju, Kathmandu, Nepal) |
|!Date: |1979 |
[>img[./Images/Book.png][./Documents/PracticalAction/solar_water_heating.pdf]]
|!Name: |Solar Water Heating |
|!Author: |[[ITDG]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/solar_water_pumping_a_handbook.pdf]]
|!Name: |Solar Water Pumping: A Handbook |
|!Author: |Jeff Kenna & Bill Gillett |
|!Date: |1984 |
|!Name: |Solar-powering your geek gear - Slides|
|!Author: |Michael "script" A. |
|!Date: |27th December 2008 |
Article:
[img[./Images/Book.png][./Documents/1196_solar_powering_paper.pdf]]

Slides:
[img[./Images/Book.png][./Documents/1210_solar_powering_slides.pdf]]
[>img[./Images/Book.png][./Documents/solarbox.pdf]]
|!Name: |Solarbox Cookers |
|!Author: |Internet Article |
|!Date: |1998 |
[>img[./Images/Book.png][./Documents/us army - soldier's handbook for individual operations and survival in cold-weather areas tc 21-3.pdf]]
|!Name: |Soldier's Handbook for Individual Operations and Survival in Cold Weather Areas |
|!Author: |US Army |
|!Date: |Mar 1986 |
[>img[./Images/Book.png][./Documents/USAMD/md 0162 - solid waste disposal.pdf]]
|!Name: |MD 0162 - Solid Waste Disposal |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/soya the ubiquitous bean - food facts.pdf]]
|!Name: |Soya the ubiquitous bean |
|!Author: |Kerry Rankine, SAFE Alliance |
|!Date: |1999 |
[>img[./Images/Book.png][./Documents/ATTRA/soyfoods.pdf]]
|!Name: |soyfoods |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/sf caching techniques.pdf]]
|!Name: |Special Forces Caching Techniques |
|!Author: |Desert Publication |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0927 - special surgical procedures i.pdf]]
|!Name: |MD 0927 - Special Surgical Procedures I |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/book.png][./Documents/USAMD/md 0928 - special surgical procedures ii.pdf]]
|!Name: |MD 0928 - Special Surgical Procedures II |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/specialtymelon.pdf]]
|!Name: |specialtymelon |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/spider-mites-tip-sheet.pdf]]
|!Name: |spider-mites-tip-sheet |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/tp40_8_spring_water_tapping.pdf]]
|!Name: |Spring Water Tapping |
|!Author: |Andrew Tayong |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/squash_pest.pdf]]
|!Name: |squash_pest |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/relocalizenow_carsharingcoop_dec06.pdf]]
|!Name: |Start a Car-sharing Cooperative |
|!Author: |relocalization.network http://www.relocalize.net |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/ATTRA/farmcity.pdf]]
|!Name: |farmcity |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc38.pdf]]
|!Name: |Starting a co-operative |
|!Author: |Reitse Koopmans. Agromisa Foundation |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/is_keep_geese.pdf]]
|!Name: |Starting to keep domestic Geese |
|!Author: |British Waterfowl Association |
|!Date: | |
[>img[./Images/Book.png][./Documents/sheetmetal - steel squares and their uses (1890).pdf]]
|!Name: |Steel Squares and Their Uses |
|!Author: |Fred T. Hodgson |
|!Date: |1890 |
[>img[./Images/book.png][./Documents/USAMD/md 0540 - sterile procedures.pdf]]
|!Name: |MD 0540 - Sterile Procedures |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/yield_nutrient_density_final.pdf]]
|!Name: |yield_nutrient_density_final |
|!Author: |Brian Halweil |
|!Date: |Sep 2007 |
[>img[./Images/Book.png][./Documents/ATTRA/stink-bugs-tip-sheet.pdf]]
|!Name: |stink-bugs-tip-sheet |
|!Author: |[[ATTRA]] |
|!Date: | |
/%
Image:stir-frying.jpg
Thumbnail:stir-frying_thumbnail.jpg
%/
[img[./Images/stir-frying_small.jpg][./Images/stir-frying.jpg]]
[>img[./Images/Book.png][./Documents/stock-up checklist.pdf]]
|!Name: |Stock-up Checklist |
|!Author: |Prepper Link |
|!Date: |2012 |
[>img[./Images/Book.png][./Documents/food_-_stocking_food.pdf]]
|!Name: |Stocking Food |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/07-292.pdf]]
|!Name: |Stocking Up: How to Preserve the Foods You Grow Naturally |
|!Author: |Carol Hupping Stoner |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/food_-_stocking_for_small_spaces_and_budgets.pdf]]
|!Name: |Stocking for Small Spaces and Budgets |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/52754283-3e94-42c1-a7c2-17ff0a000075.pdf]]
|!Name: |Stone arch bridges |
|!Author: |Kasese District Local Government |
|!Date: |2013 |
[>img[./Images/Book.png][./Documents/USAMD/md 0717 - storage & sanitation.pdf]]
|!Name: |MD 0717 - Storage & Sanitation |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/food_-_storage_and_rodents.pdf]]
|!Name: |Storage and Rodents |
|!Author: |Dr. Charlotte P. Brennand, Utah State University |
|!Date: |Aug 2002 |
[>img[./Images/Book.png][./Documents/food_-_storage_in_the_home.pdf]]
|!Name: |Storage in the Home |
|!Author: |Utah State University (Charlotte P. Brennand, and Deloy G. Hendricks; Department of Nutrition & Food Sciences) |
|!Date: |July 1995 |
[>img[./Images/Book.png][./Documents/ATMRL/storage_of_food_grains.pdf]]
|!Name: |Storage of Foodgrain |
|!Author: |Abdel Hamid |
|!Date: |1975 |
[>img[./Images/Book.png][./Documents/food_-_storage_of_wheat.pdf]]
|!Name: |Storage of Wheat |
|!Author: |Ralph E. Whitesides, Utah State University |
|!Date: |Jun 1995 |
[>img[./Images/Book.png][./Documents/storey's illustrated guide to poultry breeds complete.pdf]]
|!Name: |Storey's Illustrated Guide to Poultry Breeds |
|!Author: |Carol Ekarius |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/stories_from_our_food_garden.pdf]]
|!Name: |Stories From Our Food Garden |
|!Author: |Melveen Jackson |
|!Date: |2012 |
[>img[./Images/Book.png][./Documents/sheetmetal - strain studies in sheet metal stampings.pdf]]
|!Name: |Strain Studies In Sheet Metal Stampings |
|!Author: |Amit Mukund Joshi |
|!Date: | |
[>img[./Images/Book.png][./Documents/strategies_for_sustainable_architecture.pdf]]
|!Name: |Strategies for Sustainable Architecture |
|!Author: |Paola Sassi |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/drip_irrigation_guide.pdf]]
|!Name: |Successful Drip Irrigation for Landscape Professionals |
|!Author: |Environmental Programs Division of the City of Santa Monica |
|!Date: |Mar 2006 |
[>img[./Images/Book.png][./Documents/successful_gardening_vol_1.pdf]]
|!Name: |Successful Gardening |
|!Author: |Lynn Gillespie, Glen Mentgen |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/successfully transplanting established trees (sp571).pdf]]
|!Name: |Successfully Transplanting Established Trees |
|!Author: |Wayne K. Clatterbuck, The University of Tennessee Institute of Agriculture |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/PracticalAction/sugar_production_from_cane.pdf]]
|!Name: |Sugar production from Suger Cane |
|!Author: |Intermediate Technology Development Group |
|!Date: | |
[>img[./Images/Book.png][./Documents/CAT/a_brief_summary_of_energy_usage_at_the_centre_for_alternative_technology.pdf]]
|!Name: |A brief summary of Energy Usage at the Centre for Alternative Technology |
|!Author: |Centre for Alternative Energy |
|!Date: |1981 |
[>img[./Images/Book.png][./Documents/solar-heating-article.pdf]]
|!Name: |solar-heating-article |
|!Author: |Andy Wilson |
|!Date: | |
[>img[./Images/Book.png][./Documents/encyclopedia of knots (illus) ww.pdf]]
|!Name: |Surgeon's Encyclopedia of Knots |
|!Author: |Internet Article |
|!Date: | |

[>img[./Images/Book.png][./Documents/USAMD/md 0354 - surgical dressing sterilizer.pdf]]
|!Name: |MD 0354 - Surgical Dressing Sterilizer |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0574 - surgical methods.pdf]]
|!Name: |MD 0574 - Surgical Methods |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/solar_agricultural_dryers.pdf]]
|!Name: |Survey of Solar Agricultural Dryers |
|!Author: |Brace Research Institute |
|!Date: |Dec 1975 |
[>img[./Images/Book.png][./Documents/a survival scenario.pdf]]
|!Name: |Survivability |
|!Author: |Headquarters, Department of the Army |
|!Date: |Jun 1985 |

[>img[./Images/Book.png][./Documents/threatassess.pdf]]
|!Name: |Survival FAQ - the Threat Analysis |
|!Author: |Internet Article - Richard A. De Castro |
|!Date: |1996 |
[>img[./Images/Book.png][./Documents/united_states_marine_mwtc_summer_-_6_february.pdf]]
|!Name: |Survival Manual |
|!Author: |United States Marine Corps |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/united_states_marine_mwtc_winter_-_6_february.pdf]]
|!Name: |Survival Manual - Winter |
|!Author: |United States Marine Corps |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/survival notes.pdf]]
|!Name: |Survival Notes |
|!Author: |Internet Article |
|!Date: |Jun 1996 |
[>img[./Images/Book.png][./Documents/am final 2.pdf]]
|!Name: |Survival and Austere Medicine |
|!Author: |The Remote, Austere, Wilderness and Third World Medicine Discussion Board Moderators |
|!Date: |Apr 2005 |
[>img[./Images/Book.png][./Documents/survival in various situations.pdf]]
|!Name: |Survival in Various Situations |
|!Author: |Eduardo |
|!Date: |May 1998 |
[>img[./Images/Book.png][./Documents/survival evasion and recovery - mcrp 3-02h.pdf]]
|!Name: |Survival, Evasion and Recovery |
|!Author: |Air Land Sea Application Center |
|!Date: |Jun 1999 |
[>img[./Images/Book.png][./Documents/general_-_surviving_in_the_city.pdf]]
|!Name: |Surviving in the City |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/survivingnwo_full.pdf]]
|!Name: |Surviving the New World Order |
|!Author: |B A Brooks |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/sustainability-and-ecology-at-zegg.pdf]]
|!Name: |Sustainability and Ecology at the ~ZEGG Community |
|!Author: |Achim Ecker |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/sustainable_agriculture.pdf]]
|!Name: |Sustainable Agriculture |
|!Author: |John Mason |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/ATTRA/sustagintro.pdf]]
|!Name: |sustagintro |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ecofys-2014-sustaingas_handbook.pdf]]
|!Name: |Sustainable Biogas Production |
|!Author: |Florian Gerlach, Beatrice Grieb, Uli Zerger (~FiBL) |
|!Date: |Nov 2013 |
[>img[./Images/Book.png][./Documents/ATTRA/sustcotnsouth.pdf]]
|!Name: |sustcotnsouth |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/sustainable_energy_by_design.pdf]]
|!Name: |Sustainable Energy by Design |
|!Author: |The Town and Country Planning Association |
|!Date: |Jan 2006 |
[>img[./Images/Book.png][./Documents/without-the-hot-air.pdf]]
|!Name: |Sustainable Energy — without the hot air |
|!Author: |David JC ~MacKay |
|!Date: |Nov 2008 |
[>img[./Images/Book.png][./Documents/ATTRA/fireant.pdf]]
|!Name: |fireant |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/sustainable_food_system_for_sustainable_development.pdf]]
|!Name: |Sustainable Food System for Sustainable Development   |
|!Author: |Mae-Wan Ho |
|!Date: | |
[>img[./Images/Book.png][./Documents/slm_in_practice_e_final_low.pdf]]
|!Name: |Sustainable Land Management in Practice |
|!Author: |Hanspeter Liniger, Rima Mekdaschi Studer, Christine Hauert, Mats Gurtner |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/ATTRA/soilborne.pdf]]
|!Name: |soilborne |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/foodmiles08_web.pdf]]
|!Name: |Sustainable Sustenance: Food transport and the environment |
|!Author: |Women's Environmental Network |
|!Date: |Jan 2008 |
[>img[./Images/Book.png][./Documents/ATTRA/turfcare.pdf]]
|!Name: |turfcare |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/sustainable_weed_management.pdf]]
|!Name: |sustainable_weed_management |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/sustainable_sanitation_manual_and_construction_guidelines_for_composting_toilet.pdf]]
|!Name: |Sustainable sanitation manual and construction guidelines for a waterless composting toilet |
|!Author: |Leonie Crennan |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/sweet and sour - food facts.pdf]]
|!Name: |Sweet and sour - food facts |
|!Author: |Karen Frances, Vicki Hird, Tim Lobstein, Louise Stayte and Alexis Vaughan |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/sweetcorn.pdf]]
|!Name: |sweetcorn |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/sweetpotato.pdf]]
|!Name: |sweetpotato |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATTRA/switchgrass.pdf]]
|!Name: |switchgrass |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/sword making _ for beginners (article).pdf]]
|!Name: |Sword Making For Beginners |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/irrigation_with_windmills_sylabus.pdf]]
|!Name: |Syllabus for Irrigation with Windmills: Technical Aspects |
|!Author: |Willem Nijhoff  |
|!Date: |Jan 1982 |
[>img[./Images/Book.png][./Documents/ATTRA/symphylans.pdf]]
|!Name: |symphylans |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/symtechsolaroffgrid.pdf]]
|!Name: |Symtech Renewable Energy Systems |
|!Author: |Symtech Solar Co., Ltd |
|!Date: | |
/***
|''Name:''|SyncFileTiddlerPlugin|
|''Summary:''|Automatically synchronizes the text of a tiddler with the content of an associated text file.|
|''Version:''|1.0.0 (2012-04-16)|
|''Source:''|http://tiddlywiki.abego-software.de/#SyncFileTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2012 [[abego Software|http://www.abego-software.de]]|
!About SyncFileTiddler
SyncFileTiddler automatically synchronizes the text of a tiddler with the content of an associated text file.

The tiddlers to be synched are specified in a table in the tiddler SyncFileTiddlers. A table entry looks like this:
{{{
|SomeTiddler|path/To/File.txt|readonly|
}}}
This will be rendered as:
|SomeTiddler|path/To/File.txt|readonly|
When the "readonly" parameter is missing the tiddler is editable. Changes to the tiddler's text will be written to the associated file.
When "readonly" is specified the tiddler is not editable in the TiddlyWiki, but changes in the associated file will also change the tiddler's text accordingly.
The file is regularily read ("polled") to verify if its text has changed.

The tags of the tiddler can only be specified in the TiddlyWiki. The file will not affect the tags.
!Revision history
* SyncFileTiddlerPlugin 1.0.0 (2012-04-16)
** initial version
!Source Code
***/
//{{{
var abego = abego || {};

(function(namespace) {
	var entries = {};

	var errorMsg = function(s) {
		throw "SyncFileTiddler: " + s;
	};

	var save = function(filepath, s) {
		var b = saveFile(filepath, s);
		if (!b) {
			throw errorMsg("file could not be saved: " + filepath);
		}
		return s;
	};

	var createTiddler = function(title, text) {
		var t = store.createTiddler(title);
		t.text = text;
		return text;
	};

	var getTiddlerText = function(title) {
		return store.getTiddlerText(title, null);
	};

	var setTiddlerText = function(title, text) {
		var t = store.fetchTiddler(title);
		store.saveTiddler(title, title, text, "SyncFileTiddler ("
				+ config.options.txtUserName + ")", new Date(), t.fields.tags);
		return text;
	};

	/**
	 * FIXME: also implement the "delete" case, i.e. delete the "Slave" when the
	 * "Master" is missing (need a deleteFile method first). (? What about
	 * losing tags when deleting the tiddler after a file delete?)
	 *
	 * @param oldFileContent
	 *            [nullable] when not null it holds the content of the file as
	 *            it was loaded "some time ago". Before the method overwrites
	 *            the file it checks if the file still has the oldFileContent.
	 *            If the file's current content differs from the oldFileContent,
	 *            the file was modified "from the outside". Then we have a sync
	 *            conflict and the method fails.
	 * @param fileIsMaster
	 *            when true the file is the Master, i.e. the tiddler should get
	 *            the file's content. When false the file should get the
	 *            tiddler's content. When undefined the function should try to
	 *            find out what is the Master.
	 * @return [nullable] the text/content of the Tiddler/File, or null if
	 *         neither Tiddler nor File exists
	 */
	var syncTiddlerAndFile = function(tiddler, filepath, oldFileContent,
			fileIsMaster) {
		var tiddlerContent = getTiddlerText(tiddler);
		var fileContent = loadFile(filepath);

		if (fileContent) {
			fileContent = fileContent.replace(/\r\n/g,'\n');

			if (tiddlerContent) {
				// both file and tiddler exist.

				if (fileContent == tiddlerContent) {
					// both file and tiddler are equal
					return fileContent;

				} else {
					// file and tiddler differ.
					if (fileIsMaster === undefined) {
						// No Master is explicitly defined.
						throw errorMsg("tiddler and file have different content (delete the 'old' one to fix this):\n"
								+ tiddler + "\n" + filepath);

					} else if (fileIsMaster) {
						// the file is the master, i.e. the tiddler gets the
						// file's content
						return setTiddlerText(tiddler, fileContent);

					} else {
						// the tiddler is the master, i.e. the file gets the
						// tiddler's text

						// But first check if the file was not modified in the
						// meantime
						if (oldFileContent && oldFileContent != fileContent) {
							throw errorMsg("The file was modified externally: "
									+ filepath);
						}
						return save(filepath, tiddlerContent);
					}
				}
			} else {
				// file exists, but no tiddler.

				// Create a new tiddler with the fileContent
				return createTiddler(tiddler, fileContent);
			}
		} else {
			if (tiddlerContent) {
				// tiddler exists, but no file.

				// create a file with the tiddler's content
				return save(filepath, tiddlerContent);
			} else {
				// Neither tiddler nor file exists.

				// do nothing
				return null;
			}
		}
	};

	var syncEntry = function(entry, fileIsMaster, ignoreOldFileContent) {
		if (entry.readonly && !fileIsMaster) {
			return false;
		}

		entry.oldFileContent = syncTiddlerAndFile(entry.tiddler,
				entry.filepath, ignoreOldFileContent ? null
						: entry.oldFileContent, fileIsMaster);
		return true;
	};

	var saveAsFile = function(tiddler) {
		var e = entries[tiddler];
		if (e) {
			var s = getTiddlerText(tiddler);
			save(e.filepath, s);
			e.oldFileContent = s;
		}
	};

	// When a tiddler is saved and it is a "SyncFileTiddler" the corresponding
	// file is updated.
	var oldSaveTiddler = TiddlyWiki.prototype.saveTiddler;
	TiddlyWiki.prototype.saveTiddler = function(title, newTitle) {
		var result = oldSaveTiddler.apply(this, arguments);

		try {
			// "Sync" the tiddler with its file, with the tiddler being the
			// Master.
			// (Will do nothing if the tiddler is not a "SyncFileTiddler")
			SyncFileTiddler.syncTiddler(newTitle, false);
		} catch (e) {
			if (confirm("The file to sync with was modified externally.\n\n"
					+ "Press OK to overwrite anyway.\n"
					+ "Press Cancel to keep file unchanged.")) {
				saveAsFile(newTitle);
			} else if (confirm("Use the file's content as the tiddler text?")) {
				syncEntry(entries[newTitle], true);
			}
		}
		return result;
	};

	// The tiddler must be readonly when its "sync" entry is readonly
	var oldIsReadOnly = Tiddler.prototype.isReadOnly;

	Tiddler.prototype.isReadOnly = function() {
		if (oldIsReadOnly.apply(this, arguments)) {
			return true;
		}
		var e = entries[this.title];
		return e && e.readonly;
	}

	var pauseBetweenFilePolls = 2000;
	var polling = false;
	var pollFileChanges = function() {
		if (polling) {
			SyncFileTiddler.syncAll(true);

			// schedule the next time to poll for file changes
			setTimeout(pollFileChanges, pauseBetweenFilePolls);
		}
	};

	var SyncFileTiddler = {

		/**
		 * The tiddler is registered to be "synched" with the file.
		 *
		 * If a tiddler is added more than once the last file specified is used.
		 *
		 * @param tiddler
		 *            title of the tiddler to register
		 * @param filepath
		 *            path to the file to associate with the tiddler.
		 */
		add : function(tiddler, filepath, readonly) {
			if (!filepath.startsWith("/")) {
				// a path relative to the document
				var docPath = document.URL;
				if (!docPath.startsWith("file://"))
					return;
				var p = docPath.substring(7, docPath.lastIndexOf("/") + 1);
				filepath = p + filepath;
			}

			entries[tiddler] = {
				tiddler : tiddler,
				filepath : filepath,
				readonly : readonly,
				oldFileContent : syncTiddlerAndFile(tiddler, filepath, null,
						true),
			};
		},

		/**
		 * "Syncs" the tiddler with its file.
		 *
		 * Will do nothing when the tiddler is not a "FileSyncTiddler" (i.e. was
		 * not registered using add)
		 */
		syncTiddler : function(tiddler, fileIsMaster) {
			var e = entries[tiddler];
			if (e) {
				syncEntry(e, fileIsMaster);
				autoSaveChanges(true);
				return true;
			} else {
				return false;
			}
		},

		syncAll : function(fileIsMaster) {
			for ( var e in entries) {
				syncEntry(entries[e], fileIsMaster);
			}
			autoSaveChanges(true);
		},

		setPolling : function(b) {
			if (b == polling)
				return;

			polling = b;
			if (polling) {
				// start polling
				pollFileChanges();
			}
		},

		isPolling : function() {
			return polling;
		},

		setPauseBetweenFilePolls : function(millis) {
			pauseBetweenFilePolls = millis;
		},

		getPauseBetweenFilePolls : function() {
			return pauseBetweenFilePolls;
		},

		addSyncFileTiddlers : function() {
			var s = store.getTiddlerText("SyncFileTiddlers");
			if (!s)
				return;

			var lines = s.split("\n");
			for ( var i = 0; i < lines.length; i++) {
				var line = lines[i];
				var a = line.split('\|');
				if (a.length >= 3) {
					var tiddler = a[1];
					var filepath = a[2];
					var readonly = a.length >= 4 && a[3]=="readonly";
					SyncFileTiddler.add(tiddler, filepath,readonly);
				}
			}
		}
	};

	namespace.SyncFileTiddler = SyncFileTiddler;

})(abego);

setTimeout(function() {
	abego.SyncFileTiddler.addSyncFileTiddlers();
	abego.SyncFileTiddler.setPolling(true);
},1);
//}}}

<<timeline modified 50>>
/***
|''Name:''|TableSortingPlugin|
|''Description:''|Dynamically sort tables by clicking on column headers|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#TableSortingPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.02|
|''Date:''|25-01-2008|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Usage:
* Make sure your table has a header row
** {{{|Name|Phone Number|Address|h}}}<br> Note the /h/ that denote a header row
* Give the table a class of 'sortable'
** {{{
|sortable|k
|Name|Phone Number|Address|h
}}}<br>Note the /k/ that denotes a class name being assigned to the table.
* To disallow sorting by a column, place {{{<<nosort>>}}} in it's header
* To automatically sort a table by a column, place {{{<<autosort>>}}} in the header for that column
** Or to sort automatically but in reverse order, use {{{<<autosort reverse>>}}}

!!Example:
|sortable|k
|Name |Salary |Extension |Performance |File Size |Start date |h
|ZBloggs, Fred |$12000.00 |1353 |+1.2 |74.2Kb |Aug 19, 2003 21:34:00 |
|ABloggs, Fred |$12000.00 |1353 |1.2 |3350b |09/18/2003 |
|CBloggs, Fred |$12000 |1353 |1.200 |55.2Kb |August 18, 2003 |
|DBloggs, Fred |$12000.00 |1353 |1.2 |2100b |07/18/2003 |
|Bloggs, Fred |$12000.00 |1353 |01.20 |6.156Mb |08/17/2003 05:43 |
|Turvey, Kevin |$191200.00 |2342 |-33 |1b |02/05/1979 |
|Mbogo, Arnold |$32010.12 |2755 |-21.673 |1.2Gb |09/08/1998 |
|Shakespeare, Bill |£122000.00|3211 |6 |33.22Gb |12/11/1961 |
|Shakespeare, Hamlet |£9000 |9005 |-8 |3Gb |01/01/2002 |
|Fitz, Marvin |€3300.30 |5554 |+5 |4Kb |05/22/1995 |

***/
// /%
//!BEGIN-PLUGIN-CODE
config.tableSorting = {

	darrow: "\u2193",

	uarrow: "\u2191",

	getText : function (o) {
		var p = o.cells[SORT_INDEX];
		return p.innerText || p.textContent || '';
	},

	sortTable : function (o,rev) {
		SORT_INDEX = o.getAttribute("index");
		var c = config.tableSorting;
		var T = findRelated(o.parentNode,"TABLE");
		if(T.tBodies[0].rows.length<=1)
			return;
		var itm = "";
		var i = 0;
		while (itm == "" && i < T.tBodies[0].rows.length) {
			itm = c.getText(T.tBodies[0].rows[i]).trim();
			i++;
		}
		if (itm == "")
			return;
		var r = [];
		var S = o.getElementsByTagName("span")[0];
		c.fn = c.sortAlpha;
		if(!isNaN(Date.parse(itm)))
			c.fn = c.sortDate;
		else if(itm.match(/^[$|£|€|\+|\-]{0,1}\d*\.{0,1}\d+$/))
			c.fn = c.sortNumber;
		else if(itm.match(/^\d*\.{0,1}\d+[K|M|G]{0,1}b$/))
			c.fn = c.sortFile;
		for(i=0; i<T.tBodies[0].rows.length; i++) {
			 r[i]=T.tBodies[0].rows[i];
		}
		r.sort(c.reSort);
		if(S.firstChild.nodeValue==c.darrow || rev) {
			r.reverse();
			S.firstChild.nodeValue=c.uarrow;
		}
		else
			S.firstChild.nodeValue=c.darrow;
		var thead = T.getElementsByTagName('thead')[0];
		var headers = thead.rows[thead.rows.length-1].cells;
		for(var k=0; k<headers.length; k++) {
			if(!hasClass(headers[k],"nosort"))
				addClass(headers[k].getElementsByTagName("span")[0],"hidden");
		}
		removeClass(S,"hidden");
		for(i=0; i<r.length; i++) {
			T.tBodies[0].appendChild(r[i]);
			c.stripe(r[i],i);
			for(var j=0; j<r[i].cells.length;j++){
				removeClass(r[i].cells[j],"sortedCol");
			}
			addClass(r[i].cells[SORT_INDEX],"sortedCol");
		}
	},

	stripe : function (e,i){
		var cl = ["oddRow","evenRow"];
		i&1? cl.reverse() : cl;
		removeClass(e,cl[1]);
		addClass(e,cl[0]);
	},

	sortNumber : function(v) {
		var x = parseFloat(this.getText(v).replace(/[^0-9.-]/g,''));
		return isNaN(x)? 0: x;
	},

	sortDate : function(v) {
		return Date.parse(this.getText(v));
	},

	sortAlpha : function(v) {
		return this.getText(v).toLowerCase();
	},

	sortFile : function(v) {
		var j, q = config.messages.sizeTemplates, s = this.getText(v);
		for (var i=0; i<q.length; i++) {
			if ((j = s.toLowerCase().indexOf(q[i].template.replace("%0\u00a0","").toLowerCase())) != -1)
				return q[i].unit * s.substr(0,j);
		}
		return parseFloat(s);
	},

	reSort : function(a,b){
		var c = config.tableSorting;
		var aa = c.fn(a);
		var bb = c.fn(b);
		return ((aa==bb)? 0 : ((aa<bb)? -1:1));
	}
};

Story.prototype.tSort_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template,force,customFields,defaultText){
	var elem = this.tSort_refreshTiddler.apply(this,arguments);
	if(elem){
		var tables = elem.getElementsByTagName("TABLE");
		var c = config.tableSorting;
		for(var i=0; i<tables.length; i++){
			if(hasClass(tables[i],"sortable")){
				var x = null, rev, table = tables[i], thead = table.getElementsByTagName('thead')[0], headers = thead.rows[thead.rows.length-1].cells;
				for (var j=0; j<headers.length; j++){
					var h = headers[j];
					if (hasClass(h,"nosort"))
						continue;
					h.setAttribute("index",j);
					h.onclick = function(){c.sortTable(this); return false;};
					h.ondblclick = stopEvent;
					if(h.getElementsByTagName("span").length == 0)
						createTiddlyElement(h,"span",null,"hidden",c.uarrow);
					if(!x && hasClass(h,"autosort")) {
						x = j;
						rev = hasClass(h,"reverse");
					}
				}
				if(x)
					c.sortTable(headers[x],rev);
			}
		}
	}
	return elem;
};

setStylesheet("table.sortable span.hidden {visibility:hidden;}\n"+
	"table.sortable thead {cursor:pointer;}\n"+
	"table.sortable .nosort {cursor:default;}\n"+
	"table.sortable td.sortedCol {background:#ffc;}","TableSortingPluginStyles");

function stopEvent(e){
	var ev = e? e : window.event;
	ev.cancelBubble = true;
	if (ev.stopPropagation) ev.stopPropagation();
	return false;
}

config.macros.nosort={
	handler : function(place){
		addClass(place,"nosort");
	}
};

config.macros.autosort={
	handler : function(place,m,p,w,pS){
		addClass(place,"autosort"+" "+pS);
	}
};
//!END-PLUGIN-CODE
// %/
[>img[./Images/Book.png][./Documents/USAMD/md 0554 - tactical combat casualty care & wound treatment.pdf]]
|!Name: |MD 0554 - Tactical Combat Casualty Care & Wound Treatment |
|!Author: |US Army Medical Department |
|!Date: | |
/***
|Name:|TagglyTaggingPlugin|
|Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
|Version:|3.3.2a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{

merge(String.prototype,{

  parseTagExpr: function(debug) {

    if (this.trim() == "")
      return "(true)";

    var anyLogicOp = /(!|&&|\|\||\(|\))/g;
    var singleLogicOp = /^(!|&&|\|\||\(|\))$/;

    var spaced = this.
      // because square brackets in templates are no good
      // this means you can use [(With Spaces)] instead of [[With Spaces]]
      replace(/\[\(/g," [[").
      replace(/\)\]/g,"]] ").
      // space things out so we can use readBracketedList. tricky eh?
      replace(anyLogicOp," $1 ");

    var expr = "";

    var tokens = spaced.readBracketedList(false); // false means don't uniq the list. nice one JR!

    for (var i=0;i<tokens.length;i++)
      if (tokens[i].match(singleLogicOp))
        expr += tokens[i];
      else
        expr += "tiddler.tags.contains('%0')".format([tokens[i].replace(/'/,"\\'")]); // fix single quote bug. still have round bracket bug i think

    if (debug)
      alert(expr);

    return '('+expr+')';
  }

});

merge(TiddlyWiki.prototype,{
  getTiddlersByTagExpr: function(tagExpr,sortField) {

    var result = [];

    var expr = tagExpr.parseTagExpr();

    store.forEachTiddler(function(title,tiddler) {
      if (eval(expr))
        result.push(tiddler);
    });

    if(!sortField)
      sortField = "title";

    result.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});

    return result;
  }
});

config.taggly = {

  // for translations
  lingo: {
    labels: {
      asc:        "\u2191", // down arrow
      desc:       "\u2193", // up arrow
      title:      "title",
      modified:   "modified",
      created:    "created",
      show:       "+",
      hide:       "-",
      normal:     "normal",
      group:      "group",
      commas:     "commas",
      sitemap:    "sitemap",
      numCols:    "cols\u00b1", // plus minus sign
      label:      "Tagged as '%0':",
      exprLabel:  "Matching tag expression '%0':",
      excerpts:   "excerpts",
      descr:      "descr",
      slices:     "slices",
      contents:   "contents",
      sliders:    "sliders",
      noexcerpts: "title only",
      noneFound:  "(none)"
    },

    tooltips: {
      title:      "Click to sort by title",
      modified:   "Click to sort by modified date",
      created:    "Click to sort by created date",
      show:       "Click to show tagging list",
      hide:       "Click to hide tagging list",
      normal:     "Click to show a normal ungrouped list",
      group:      "Click to show list grouped by tag",
      sitemap:    "Click to show a sitemap style list",
      commas:     "Click to show a comma separated list",
      numCols:    "Click to change number of columns",
      excerpts:   "Click to show excerpts",
      descr:      "Click to show the description slice",
      slices:     "Click to show all slices",
      contents:   "Click to show entire tiddler contents",
      sliders:    "Click to show tiddler contents in sliders",
      noexcerpts: "Click to show entire title only"
    },

    tooDeepMessage: "* //sitemap too deep...//"
  },

  config: {
    showTaggingCounts: true,
    listOpts: {
      // the first one will be the default
      sortBy:     ["title","modified","created"],
      sortOrder:  ["asc","desc"],
      hideState:  ["show","hide"],
      listMode:   ["normal","group","sitemap","commas"],
      numCols:    ["1","2","3","4","5","6"],
      excerpts:   ["noexcerpts","excerpts","descr","slices","contents","sliders"]
    },
    valuePrefix: "taggly.",
    excludeTags: ["excludeLists","excludeTagging"],
    excerptSize: 50,
    excerptMarker: "/%"+"%/",
    siteMapDepthLimit: 25
  },

  getTagglyOpt: function(title,opt) {
    var val = store.getValue(title,this.config.valuePrefix+opt);
    return val ? val : this.config.listOpts[opt][0];
  },

  setTagglyOpt: function(title,opt,value) {
    // create it silently if it doesn't exist
    if (!store.tiddlerExists(title)) {
      store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),"");

      // <<tagglyTagging expr:"...">> creates a tiddler to store its display settings
      // Make those tiddlers less noticeable by tagging as excludeSearch and excludeLists
      // Because we don't want to hide real tags, check that they aren't actually tags before doing so
      // Also tag them as tagglyExpression for manageability
      // (contributed by RA)
      if (!store.getTaggedTiddlers(title).length) {
        store.setTiddlerTag(title,true,"excludeSearch");
        store.setTiddlerTag(title,true,"excludeLists");
        store.setTiddlerTag(title,true,"tagglyExpression");
      }
    }

    // if value is default then remove it to save space
    return store.setValue(title, this.config.valuePrefix+opt, value == this.config.listOpts[opt][0] ? null : value);
  },

  getNextValue: function(title,opt) {
    var current = this.getTagglyOpt(title,opt);
    var pos = this.config.listOpts[opt].indexOf(current);
    // supposed to automagically don't let cols cycle up past the number of items
    // currently broken in some situations, eg when using an expression
    // lets fix it later when we rewrite for jquery
    // the columns thing should be jquery table manipulation probably
    var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);
    var newPos = (pos + 1) % limit;
    return this.config.listOpts[opt][newPos];
  },

  toggleTagglyOpt: function(title,opt) {
    var newVal = this.getNextValue(title,opt);
    this.setTagglyOpt(title,opt,newVal);
  },

  createListControl: function(place,title,type) {
    var lingo = config.taggly.lingo;
    var label;
    var tooltip;
    var onclick;

    if ((type == "title" || type == "modified" || type == "created")) {
      // "special" controls. a little tricky. derived from sortOrder and sortBy
      label = lingo.labels[type];
      tooltip = lingo.tooltips[type];

      if (this.getTagglyOpt(title,"sortBy") == type) {
        label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
        onclick = function() {
          config.taggly.toggleTagglyOpt(title,"sortOrder");
          return false;
        }
      }
      else {
        onclick = function() {
          config.taggly.setTagglyOpt(title,"sortBy",type);
          config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
          return false;
        }
      }
    }
    else {
      // "regular" controls, nice and simple
      label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
      tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
      onclick = function() {
        config.taggly.toggleTagglyOpt(title,type);
        return false;
      }
    }

    // hide button because commas don't have columns
    if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
      createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
  },

  makeColumns: function(orig,numCols) {
    var maxLength = orig.join('').split('[[').length-1;
    var maxColLength = Math.floor((maxLength+numCols-1)/(numCols));

    var output = [];
    var c = 0;
    var tot=0;
    for (var j=0;j<numCols;j++){
      var singleCol = [];
      var colTotal = 0;

      for(;colTotal<maxColLength;){
        singleCol.push(orig[c]);
        colTotal += orig[c++].split('[[').length - 1;
      }
      tot+=colTotal;
      maxColLength = (j == numCols-1) ? maxLength-tot : Math.floor((maxLength-tot)/(numCols-j-1));
      output.push(singleCol);
    }

//    var listSize = orig.length;
//    var colSize = listSize/numCols;
//    var remainder = listSize % numCols;
//
//    var upperColsize = colSize;
//    var lowerColsize = colSize;
//
//    if (colSize != Math.floor(colSize)) {
//      // it's not an exact fit so..
//      upperColsize = Math.floor(colSize) + 1;
//      lowerColsize = Math.floor(colSize);
//    }
//
//    var output = [];
//    var c = 0;
//    for (var j=0;j<numCols;j++) {
//      var singleCol = [];
//      var thisSize = j < remainder ? upperColsize : lowerColsize;
//      for (var i=0;i<thisSize;i++)
//        singleCol.push(orig[c++]);
//      output.push(singleCol);
//    }

    return output;
  },

  drawTable: function(place,columns,theClass) {
    var newTable = createTiddlyElement(place,"table",null,theClass);
    var newTbody = createTiddlyElement(newTable,"tbody");
    var newTr = createTiddlyElement(newTbody,"tr");
    for (var j=0;j<columns.length;j++) {
      var colOutput = "";
      for (var i=0;i<columns[j].length;i++)
        colOutput += columns[j][i];
      var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
      wikify(colOutput,newTd);
    }
    return newTable;
  },

  createTagglyList: function(place,title,isTagExpr) {
    switch(this.getTagglyOpt(title,"listMode")) {
      case "group":  return this.createTagglyListGrouped(place,title,isTagExpr); break;
      case "normal": return this.createTagglyListNormal(place,title,false,isTagExpr); break;
      case "commas": return this.createTagglyListNormal(place,title,true,isTagExpr); break;
      case "sitemap":return this.createTagglyListSiteMap(place,title,isTagExpr); break;
    }
  },

  getTaggingCount: function(title,isTagExpr) {
    // thanks to Doug Edmunds
    if (this.config.showTaggingCounts) {
      var tagCount = config.taggly.getTiddlers(title,'title',isTagExpr).length;
      if (tagCount > 0)
        return " ("+tagCount+")";
    }
    return "";
  },

  getTiddlers: function(titleOrExpr,sortBy,isTagExpr) {
    return isTagExpr ? store.getTiddlersByTagExpr(titleOrExpr,sortBy) : store.getTaggedTiddlers(titleOrExpr,sortBy);
  },

  getExcerpt: function(inTiddlerTitle,title,indent) {
    if (!indent)
      indent = 1;

    var displayMode = this.getTagglyOpt(inTiddlerTitle,"excerpts");
    var t = store.getTiddler(title);

    if (t && displayMode == "excerpts") {
      var text = t.text.replace(/\n/," ");
      var marker = text.indexOf(this.config.excerptMarker);
      if (marker != -1) {
        return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
      }
      else if (text.length < this.config.excerptSize) {
        return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
      }
      else {
        return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
      }
    }
    else if (t && displayMode == "contents") {
      return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
    }
    else if (t && displayMode == "sliders") {
      return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
    }
    else if (t && displayMode == "descr") {
      var descr = store.getTiddlerSlice(title,'Description');
      return descr ? " {{excerpt{" + descr  + "}}}" : "";
    }
    else if (t && displayMode == "slices") {
      var result = "";
      var slices = store.calcAllSlices(title);
      for (var s in slices)
        result += "|%0|<nowiki>%1</nowiki>|\n".format([s,slices[s]]);
      return result ? "\n{{excerpt excerptIndent{\n" + result  + "}}}" : "";
    }
    return "";
  },

  notHidden: function(t,inTiddler) {
    if (typeof t == "string")
      t = store.getTiddler(t);
    return (!t || !t.tags.containsAny(this.config.excludeTags) ||
        (inTiddler && this.config.excludeTags.contains(inTiddler)));
  },

  // this is for normal and commas mode
  createTagglyListNormal: function(place,title,useCommas,isTagExpr) {

    var list = config.taggly.getTiddlers(title,this.getTagglyOpt(title,"sortBy"),isTagExpr);

    if (this.getTagglyOpt(title,"sortOrder") == "desc")
      list = list.reverse();

    var output = [];
    var first = true;
    for (var i=0;i<list.length;i++) {
      if (this.notHidden(list[i],title)) {
        var countString = this.getTaggingCount(list[i].title);
        var excerpt = this.getExcerpt(title,list[i].title);
        if (useCommas)
          output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
        else
          output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");

        first = false;
      }
    }

    return this.drawTable(place,
      this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
      useCommas ? "commas" : "normal");
  },

  // this is for the "grouped" mode
  createTagglyListGrouped: function(place,title,isTagExpr) {
    var sortBy = this.getTagglyOpt(title,"sortBy");
    var sortOrder = this.getTagglyOpt(title,"sortOrder");

    var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

    if (sortOrder == "desc")
      list = list.reverse();

    var leftOvers = []
    for (var i=0;i<list.length;i++)
      leftOvers.push(list[i].title);

    var allTagsHolder = {};
    for (var i=0;i<list.length;i++) {
      for (var j=0;j<list[i].tags.length;j++) {

        if (list[i].tags[j] != title) { // not this tiddler

          if (this.notHidden(list[i].tags[j],title)) {

            if (!allTagsHolder[list[i].tags[j]])
              allTagsHolder[list[i].tags[j]] = "";

            if (this.notHidden(list[i],title)) {
              allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
                    + this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";

              leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers

            }
          }
        }
      }
    }

    var allTags = [];
    for (var t in allTagsHolder)
      allTags.push(t);

    var sortHelper = function(a,b) {
      if (a == b) return 0;
      if (a < b) return -1;
      return 1;
    };

    allTags.sort(function(a,b) {
      var tidA = store.getTiddler(a);
      var tidB = store.getTiddler(b);
      if (sortBy == "title") return sortHelper(a,b);
      else if (!tidA && !tidB) return 0;
      else if (!tidA) return -1;
      else if (!tidB) return +1;
      else return sortHelper(tidA[sortBy],tidB[sortBy]);
    });

    var leftOverOutput = "";
    for (var i=0;i<leftOvers.length;i++)
      if (this.notHidden(leftOvers[i],title))
        leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";

    var output = [];

    if (sortOrder == "desc")
      allTags.reverse();
    else if (leftOverOutput != "")
      // leftovers first...
      output.push(leftOverOutput);

    for (var i=0;i<allTags.length;i++)
      if (allTagsHolder[allTags[i]] != "")
        output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);

    if (sortOrder == "desc" && leftOverOutput != "")
      // leftovers last...
      output.push(leftOverOutput);

    return this.drawTable(place,
        this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
        "grouped");

  },

  // used to build site map
  treeTraverse: function(title,depth,sortBy,sortOrder,isTagExpr) {

    var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

    if (sortOrder == "desc")
      list.reverse();

    var indent = "";
    for (var j=0;j<depth;j++)
      indent += "*"

    var childOutput = "";

    if (depth > this.config.siteMapDepthLimit)
      childOutput += indent + this.lingo.tooDeepMessage + "\n";
    else
      for (var i=0;i<list.length;i++)
        if (list[i].title != title)
          if (this.notHidden(list[i].title,this.config.inTiddler))
            childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder,false);

    if (depth == 0)
      return childOutput;
    else
      return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;
  },

  // this if for the site map mode
  createTagglyListSiteMap: function(place,title,isTagExpr) {
    this.config.inTiddler = title; // nasty. should pass it in to traverse probably
    var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"),isTagExpr);
    return this.drawTable(place,
        this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
        "sitemap"
        );
  },

  macros: {
    tagglyTagging: {
      handler: function (place,macroName,params,wikifier,paramString,tiddler) {
        var parsedParams = paramString.parseParams("tag",null,true);
        var refreshContainer = createTiddlyElement(place,"div");

        // do some refresh magic to make it keep the list fresh - thanks Saq
        refreshContainer.setAttribute("refresh","macro");
        refreshContainer.setAttribute("macroName",macroName);

        var tag = getParam(parsedParams,"tag");
        var expr = getParam(parsedParams,"expr");

        if (expr) {
          refreshContainer.setAttribute("isTagExpr","true");
          refreshContainer.setAttribute("title",expr);
          refreshContainer.setAttribute("showEmpty","true");
        }
        else {
          refreshContainer.setAttribute("isTagExpr","false");
          if (tag) {
                refreshContainer.setAttribute("title",tag);
            refreshContainer.setAttribute("showEmpty","true");
          }
          else {
                refreshContainer.setAttribute("title",tiddler.title);
            refreshContainer.setAttribute("showEmpty","false");
          }
        }
        this.refresh(refreshContainer);
      },

      refresh: function(place) {
        var title = place.getAttribute("title");
        var isTagExpr = place.getAttribute("isTagExpr") == "true";
        var showEmpty = place.getAttribute("showEmpty") == "true";
        jQuery(place).empty()
        addClass(place,"tagglyTagging");
        var countFound = config.taggly.getTiddlers(title,'title',isTagExpr).length
        if (countFound > 0 || showEmpty) {
          var lingo = config.taggly.lingo;
          config.taggly.createListControl(place,title,"hideState");
          if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
            createTiddlyElement(place,"span",null,"tagglyLabel",
                isTagExpr ? lingo.labels.exprLabel.format([title]) : lingo.labels.label.format([title]));
            config.taggly.createListControl(place,title,"title");
            config.taggly.createListControl(place,title,"modified");
            config.taggly.createListControl(place,title,"created");
            config.taggly.createListControl(place,title,"listMode");
            config.taggly.createListControl(place,title,"excerpts");
            config.taggly.createListControl(place,title,"numCols");
            config.taggly.createTagglyList(place,title,isTagExpr);
            if (countFound == 0 && showEmpty)
              createTiddlyElement(place,"div",null,"tagglyNoneFound",lingo.labels.noneFound);
          }
        }
      }
    }
  },

  // todo fix these up a bit
  styles: [
"/*{{{*/",
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
" margin-top:0px; padding-top:0.5em; padding-left:2em;",
" margin-bottom:0px; padding-bottom:0px;",
"}",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
" color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
" border:0px; padding-left:0.3em;padding-right:0.3em;",
"}",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active  {",
" border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
"}",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
".excerptIndent { margin-left:4em; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
"td.tagglyTagging",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
"  margin-bottom:0.5em; }",
".tagglyTagging .indent1  { margin-left:3em;  }",
".tagglyTagging .indent2  { margin-left:4em;  }",
".tagglyTagging .indent3  { margin-left:5em;  }",
".tagglyTagging .indent4  { margin-left:6em;  }",
".tagglyTagging .indent5  { margin-left:7em;  }",
".tagglyTagging .indent6  { margin-left:8em;  }",
".tagglyTagging .indent7  { margin-left:9em;  }",
".tagglyTagging .indent8  { margin-left:10em; }",
".tagglyTagging .indent9  { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
".tagglyNoneFound { margin-left:2em; color:[[ColorPalette::TertiaryMid]]; font-size:90%; font-style:italic; }",
"/*}}}*/",
    ""].join("\n"),

  init: function() {
    merge(config.macros,this.macros);
    config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
    store.addNotification("TagglyTaggingStyles",refreshStyles);
  }
};

config.taggly.init();

//}}}

/***
InlineSlidersPlugin
By Saq Imtiaz
http://tw.lewcid.org/sandbox/#InlineSlidersPlugin

// syntax adjusted to not clash with NestedSlidersPlugin
// added + syntax to start open instead of closed

***/
//{{{
config.formatters.unshift( {
  name: "inlinesliders",
  // match: "\\+\\+\\+\\+|\\<slider",
  match: "\\<slider",
  // lookaheadRegExp: /(?:\+\+\+\+|<slider) (.*?)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
  lookaheadRegExp: /(?:<slider)(\+?) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
  handler: function(w) {
    this.lookaheadRegExp.lastIndex = w.matchStart;
    var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
    if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
      var btn = createTiddlyButton(w.output,lookaheadMatch[2] + " "+"\u00BB",lookaheadMatch[2],this.onClickSlider,"button sliderButton");
      var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
      panel.style.display = (lookaheadMatch[1] == '+' ? "block" : "none");
      wikify(lookaheadMatch[3],panel);
      w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
    }
   },
   onClickSlider : function(e) {
    if(!e) var e = window.event;
    var n = this.nextSibling;
    n.style.display = (n.style.display=="none") ? "block" : "none";
    return false;
  }
});

//}}}
[>img[./Images/Book.png][./Documents/FEMA/takingshelter.pdf]]
|!Name: |Taking Shelter from the Storm |
|!Author: |Federal Emergency Management Agency |
|!Date: |Oct 1998 |
[>img[./Images/Book.png][./Documents/USAMD/md 0531 - taking vital signs.pdf]]
|!Name: |MD 0531 - Taking Vital Signs |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/taking the pith - orange juice food facts.pdf]]
|!Name: |Taking the pith - orange juice food facts |
|!Author: |Louise Stayte and Alexis Vaughan |
|!Date: |2000 |

[>img[./Images/Book.png][./Documents/l-103.pdf]]
|!Name: |Tanning Deer Hides and Small Fur Skins |
|!Author: |Jon Boren, Terrell T. “Red” Baker, Brian J. Hurd, and Glenn Mason. Mexico State University - College of Agriculture and Home Economics |
|!Date: |October 2004 |
[>img[./Images/Book.png][./Documents/taste_of_a_better_future-evaluation.pdf]]
|!Name: |Taste of a Better Future |
|!Author: |Vinciane Rycroft |
|!Date: |Dec 2000 |
[>img[./Images/Book.png][./Documents/taxus.pdf]]
|!Name: |Taxus - Medicinal and Aromatic Plants |
|!Author: |Hideji Itokawa, ~Kuo-Hsiung Lee |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/ATMRL/solar_energy_utilization_tech.pdf]]
|!Name: |Technology for Solar Energy Utilization |
|!Author: |Development and Transfer of Techndogy Series No. 5  |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/ATMRL/test_the_soil_first.pdf]]
|!Name: |Test the Soil First |
|!Author: |John B Mullen. Practical Mechanics |
|!Date: |Mar 1957 |
[>img[./Images/Book.png][./Documents/ATMRL/testing_timber_for_moisture_content.pdf]]
|!Name: |Testing Timber for Moisture Content |
|!Author: |Division of Building Research Special Report, Commonwealth Scientific and Industrial Research Organization  |
|!Date: |1974 |

[>img[./Images/Book.png][./Documents/the__50_and_up_underground_house_book.pdf]]
|!Name: |The $50 and up underground house book |
|!Author: |Mike Oehler |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/the_40_per_cent_house_project.pdf]]
|!Name: |The 40% House Project |
|!Author: |Brenda Boardman, Sarah Darby, Gavin Killip, Mark Hinnells, Christian N. Jardine, Jane Palmer and Graham Sinden |
|!Date: |Feb 2005 |
[>img[./Images/Book.png][./Documents/ATMRL/encyclopedia_of_bee_culture.pdf]]
|!Name: |The ABC and XYZ of Bee Culture |
|!Author: |A. I. Root |
|!Date: |1980 |
[>img[./Images/Book.png][./Documents/cableg1940819408-8.pdf]]
|!Name: |The Amateur Garden |
|!Author: |George W. Cable |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/PracticalAction/anagi_tray_dryer.pdf]]
|!Name: |The Anagi Tray Dryer |
|!Author: |Practical Action |
|!Date: | |
[>img[./Images/Book.png][./Documents/backyard_composting.pdf]]
|!Name: |Backyard Composting |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/theaquaponicsgreenhouse.pdf]]
|!Name: |The Aquaponics Greenhouse |
|!Author: |Aquaponics UK |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/the_art_of_rapid_transition.pdf]]
|!Name: |The Art of Rapid Transition |
|!Author: |New Economics Foundation |
|!Date: |May 2010 |
[>img[./Images/Book.png][./Documents/artofwar.pdf]]
|!Description |The classic book of Tactics and Strategy. |
|!Author |Sun Tzu |
|!Date | |
[>img[./Images/Book.png][./Documents/ATMRL/33-773.pdf]]
|!Name: |The Backyard Dairy Book |
|!Author: |Len Street and Andrew Singer |
|!Date: |1975 |
[>img[./Images/Book.png][./Documents/the-backyard-homestead.pdf]]
|!Name: |The Backyard Homestead |
|!Author: |Carleen Madigan |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/the_baja_box_urine-diverting_composting_toilet.pdf]]
|!Name: |The Baja Box ~Urine-Diverting Composting Toilet |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/the basics of solar power for producing electricity.pdf]]
|!Name: |The Basics of Solar Power for Producing Electricity |
|!Author: |InternetArticle |
|!Date: | |
[>img[./Images/Book.png][./Documents/Public/the_belgian_cook_book.pdf]]
|!Name: |The Belgian Cook Book |
|!Author: |Mrs Brian Luck |
|!Date: |1915 |
[>img[./Images/Book.png][./Documents/the blacksmith's craft.pdf]]
|!Name: |The Blacksmith's Craft |
|!Author: |Rural Development Commission |
|!Date: |1952 |
[>img[./Images/Book.png][./Documents/vices - the blacksmiths leg vice.pdf]]
|!Name: |The Blacksmiths Leg Vice |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/the book of geese.pdf]]
|!Name: |The Book of Geese |
|!Author: |Dave Holderread |
|!Date: |1981 |
[>img[./Images/Book.png][./Documents/Public/b21506061.pdf]]
|!Name: |The Book of Ices |
|!Author: |A B Marshall |
|!Date: |1883 |
[>img[./Images/Book.png][./Documents/Public/bookfarmvol1.pdf]]
|!Name: |The Book of the Farm - Vol I |
|!Author: |Henry Stephens |
|!Date: |1844 |
[>img[./Images/Book.png][./Documents/Public/bookfarmvol2.pdf]]
|!Name: |The Book of the Farm - Vol II |
|!Author: |Henry Stephens |
|!Date: |1844 |
[>img[./Images/Book.png][./Documents/Public/bookfarmvol3.pdf]]
|!Name: |The Book of the Farm - Vol III |
|!Author: |Henry Stephens |
|!Date: |1844 |
[>img[./Images/Book.png][./Documents/the_business_plan_workbook.pdf]]
|!Name: |The Business Plan Workbook |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0572 - the central nervous system.pdf]]
|!Name: |MD 0572 - The Central Nervous System |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/the chicken health handbook complete.pdf]]
|!Name: |The Chicken Health Handbook |
|!Author: |Gail Damerow |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/Public/cloudcitycookboo00nash.pdf]]
|!Name: |The Cloud City Cook Book |
|!Author: | |
|!Date: |1889 |
[>img[./Images/Book.png][./Documents/the complete bladesmith - forging your way to perfection - j. hrisoulas (paladin, 1987) ww.pdf]]
|!Name: |The Complete Bladesmith - Forging Your way to Perfection |
|!Author: |J. Hrisoulas |
|!Date: |1987 |
[>img[./Images/Book.png][./Documents/the-complete-book-of-self-sufficiency-john-seymour.pdf]]
|!Name: |The Complete Book of Self Sufficiency |
|!Author: |John Seymour |
|!Date: | |
[>img[./Images/Book.png][./Documents/the_complete_idiots_guide_to_green_building_and_remodeling.pdf]]
|!Name: |The Complete Idiots Guide to Green Building and Remodeling |
|!Author: |John Barrows and Lisa Iannucci  |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/the complete outdoorsman's handbook - a guide to outdoor living and wilderness survival.pdf]]
|!Name: |The Complete Outdoorsman's Handbook - A Guide To Outdoor Living And Wilderness Survival |
|!Author: |Jerome J. Knap |
|!Date: |1976 |
[>img[./Images/Book.png][./Documents/the construction of secret hiding.pdf]]
|!Name: |The Construction of Secret Hiding Places |
|!Author: |Charles Robinson |
|!Date: |1981 |
[>img[./Images/Book.png][./Documents/yurtp.pdf]]
|!Name: |The Construction of a Yurt |
|!Author: |Monica Cellio |
|!Date: |1995 |
[>img[./Images/Book.png][./Documents/diy offgrid guide to solar.pdf]]
|!Name: |The DIY Guide to Off Grid Solar Electricity |
|!Author: |Steve Spence |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/the_design_and_development_of_a_solar_powered_fridge.pdf]]
|!Name: |The Design and Development of a Solar Powered Fridge |
|!Author: |R.H.L. Exoll, Sommai Kornsakoo, and D.G.D.C. Wijeratna  |
|!Date: |Feb 1976 |
[>img[./Images/Book.png][./Documents/ATMRL/26-691.pdf]]
|!Name: |The Design and Manufacture of Animal Drawn Carts |
|!Author: |Internation Labour Office |
|!Date: |1986 |
[>img[./Images/Book.png][./Documents/ATMRL/dhading_micro_hydro-powerplant.pdf]]
|!Name: |The Dhading ~Micro-Hydropower Plant |
|!Author: |Ueli Meier  |
|!Date: |1983 |
[>img[./Images/Book.png][./Documents/general_-_disaster_handbook.pdf]]
|!Name: |The Disaster Handbook |
|!Author: |University Of Wisconsin Extension |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/06-240.pdf]]
|!Name: |The Draft Horse Primer |
|!Author: |Maurice Telleen |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/the_earth_sheltered_solar_greenhouse_book.pdf]]
|!Name: |The Earth Sheltered Solar Greenhouse Book |
|!Author: |Mike Oehler |
|!Date: |2007 |
[>img[./Images/Book.png][./Documents/ATTRA/ecodairy.pdf]]
|!Name: |ecodairy |
|!Author: |[[ATTRA]] |
|!Date: | |
[>img[./Images/Book.png][./Documents/charlesdowdingtheeconomicsoforganicgrowingbyhand_0.pdf]]
|!Name: |The Economics of Organic Growing by Hand |
|!Author: |Charles Dowding |
|!Date: | |
[>img[./Images/Book.png][./Documents/the_economist_guide_to_business_planning.pdf]]
|!Name: |The Economist Guide to Business Planning |
|!Author: |The Economist, Graham Friend and Stefan Zehle |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/the encyclopedia of country living.pdf]]
|!Name: |The Encyclopedia of Country Living |
|!Author: |Carla Emery |
|!Date: |1994 |
[>img[./Images/Book.png][./Documents/USAMD/md 0583 - the endocrine system.pdf]]
|!Name: |MD 0583 - The Endocrine System |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/buildings_and_co2-the_energy_impact_of_our_buildings.pdf]]
|!Name: |The Energy Impact of Our Buildings |
|!Author: |The Community Solution |
|!Date: |Jan 2007 |
[>img[./Images/Book.png][./Documents/essential underground handbook (p m l.pdf]]
|!Name: |The Essential Underground Handbook |
|!Author: |P M L Publishing Inc |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/the-everything-guide-to-living-off-the-grid.pdf]]
|!Name: |The Everything Guide to Living off the Grid |
|!Author: |Terri Reid |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/fstbooklet.pdf]]
|!Name: |The Farming Systems Trial |
|!Author: |Rodale Institute |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/fast-wild-food-cookbook.pdf]]
|!Name: |The Fast Wild Food Cook Book |
|!Author: |Johnny Jumbalaya |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/david_holmgren-the_flywire_house.pdf]]
|!Name: |The Flywire House |
|!Author: |David Holmgren |
|!Date: |Feb 2009 |
[>img[./Images/Book.png][./Documents/pci-food-and-farming-transition.pdf]]
|!Name: |The Food & Farming Transition |
|!Author: |Richard Heinberg. Post Carbon Institute |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/food-producing-neighbourhood.pdf]]
|!Name: |The Food Producing Neighbourhood |
|!Author: |Rob Hopkins |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/the_food_and_heat_producing_solar_greenhouse.pdf]]
|!Name: |The Food and Heat Producing Solar Greenhouse |
|!Author: |Rick Fisher and Bill Yanda |
|!Date: |1976 |
[>img[./Images/Book.png][./Documents/ATMRL/fuel_savers_a_kit_of_solar_ideas_for_existing_homes.pdf]]
|!Name: |The Fuel Savers: A kit of solar ideas for existing homes |
|!Author: |Dan Scully, Don Prowler and Bruce Anderson |
|!Date: |1976 |
[>img[./Images/Book.png][./Documents/USAMD/md 0581 - the gastrointestinal system.pdf]]
|!Name: |MD 0581 - The Gastrointestinal System |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/a_sailwing_windmill.pdf]]
|!Name: |The Gaudgaon Village Sailwing Windmill |
|!Author: |William W. Smith III  |
|!Date: |1982 |
[>img[./Images/Book.png][./Documents/Public/geneseevalleycoo00mumf.pdf]]
|!Name: |The Genesee Valley Cook Book |
|!Author: |Miss Mumford |
|!Date: |1903 |
[>img[./Images/Book.png][./Documents/USAMD/md 0579 - the genitourinary system i.pdf]]
|!Name: |MD 0579 - The Genitourinary System I |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/USAMD/md 0580 - the genitourinary system ii.pdf]]
|!Name: |MD 0580 - The Genitourinary System II |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/the_golden_insect-a_handbook_for_beginner_beekeepers.pdf]]
|!Name: |The Golden Insect - a handbook for beginner beekeepers |
|!Author: |Stephen Adjare |
|!Date: |1984 |
[>img[./Images/Book.png][./Documents/good_practice_guide_cg.pdf]]
|!Name: |The Good Practice Guide for Community Gardens |
|!Author: |Cultivating Community |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/the granddaddy of all underground storage.pdf]]
|!Name: |The Granddaddy Of All Underground Storage Areas |
|!Author: |Internet Article |
|!Date: | |
[>img[./Images/Book.png][./Documents/112862253-the-green-pharmacy-james-a-duke-1.pdf]]
|!Name: |The Green Pharmacy |
|!Author: |James A Duke |
|!Date: |1997 |
[>img[./Images/Book.png][./Documents/guide_for_beginning_farmers.pdf]]
|!Name: |The Greenhorns Guide for Beginning Farmers |
|!Author: |Greenhorns www.thegreenhorns.net |
|!Date: | |
[>img[./Images/Book.png][./Documents/guide-to-homes-5mb.pdf]]
|!Name: |The Guide to Sustainable Homes |
|!Author: |Blue and Green Tomorrow (Magazine) |
|!Date: |Oct 2013 |
[>img[./Images/Book.png][./Documents/duke - handbook of medicinal herbs 2e.pdf]]
|!Name: |The Handbook of Medicinal Herbs |
|!Author: |James A Duke |
|!Date: |2002 |
[>img[./Images/Book.png][./Documents/ATMRL/06-269.pdf]]
|!Name: |The Handcart Handbook |
|!Author: |David Tresemer |
|!Date: |1985 |
[>img[./Images/Book.png][./Documents/ATMRL/19-419.pdf]]
|!Name: |The Haybox |
|!Author: |Low Energy Systems |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/the_home_built_windmills_of_nebraska.pdf]]
|!Name: |The Homemade Windmills of Nebraska  |
|!Author: |Erwin Hinckley Barbour  |
|!Date: |1899 |
[>img[./Images/Book.png][./Documents/the-homeowners-energy-handbook-your-guide-to-getting-off-the-grid-paperback.pdf]]
|!Name: |The Homeowners Energy Handbook |
|!Author: |Paul Scheckel |
|!Date: |2013 |
[>img[./Images/Book.png][./Documents/the_homeowners_guide_to_renewable_energy-achieving_energy_independence_through_solar_wind_biomass_and_hydropower.pdf]]
|!Name: |The Homeowners Guide to Renewable Energy |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/05-261.pdf]]
|!Name: |The Homesteaders's Handbook to Raising Small Livestock |
|!Author: |Jerome Belanger |
|!Date: |1974 |
[>img[./Images/Book.png][./Documents/ibcofaquaponics1.pdf]]
|!Name: |The IBC of Aquaponics |
|!Author: |Backyard Aquaponics |
|!Date: |2011 |
[>img[./Images/Book.png][./Documents/Public/kentoncookbook00kent.pdf]]
|!Name: |The Kenton Cook Book |
|!Author: |Kenton Cook Book Company, Kenton, Ohio |
|!Date: |1888 |
[>img[./Images/Book.png][./Documents/Public/the_kirmess_cook_book.pdf]]
|!Name: |The Kirmess Cook Book |
|!Author: |Boston Womens Educational and Industrial Union |
|!Date: |1887 |
[>img[./Images/Book.png][./Documents/the klutz book of knots.pdf]]
|!Name: |The Klutz Book of Knots |
|!Author: |John Cassidy |
|!Date: |1985 |
[>img[./Images/Book.png][./Documents/another_kind_of_garden-the_methods_of_jean_pain.pdf]]
|!Name: |The Methods of Jean Pain |
|!Author: | |
|!Date: | |
[>img[./Images/Book.png][./Documents/ATMRL/04-108.pdf]]
|!Name: |The Modern Blacksmith |
|!Author: |Alexander G. Weygerg |
|!Date: |1974 |
[>img[./Images/Book.png][./Documents/USAMD/md 0577 - the musculoskeletal system.pdf]]
|!Name: |MD 0577 - The Musculoskeletal System |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/mushroom_cultivator-a_practical_guide_to_growing_mushrooms_at_home.pdf]]
|!Name: |The Mushroom Cultivator - A Practical Guide to Growing Mushrooms at Home |
|!Author: |Paul Stamets |
|!Date: |1983 |
[>img[./Images/Book.png][./Documents/the_natural_way_of_farming.pdf]]
|!Name: |The Natural Way of Farming |
|!Author: |Masanobu Fukuoka |
|!Date: |1985 |
[>img[./Images/Book.png][./Documents/the_new_business_road_test.pdf]]
|!Name: |The New Business Road Test |
|!Author: |John Mullins |
|!Date: | |
[>img[./Images/Book.png][./Documents/the_new_micro_eco-farmers.pdf]]
|!Name: |The New Micro Eco-Farmers |
|!Author: |Barbara Berst Adam |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/ATMRL/new_solar_home_book.pdf]]
|!Name: |The New Solar Home Book |
|!Author: |Bruce Anderson with Michael Riordan  |
|!Date: |1987 |
[>img[./Images/Book.png][./Documents/nuts_and_bolts_of_business_plans.pdf]]
|!Name: |The Nuts and Bolts of Business Plans |
|!Author: |Syracuse University |
|!Date: | |
[>img[./Images/Book.png][./Documents/michael_pollan-the_omnivores_dilemma.pdf]]
|!Name: |The Omnivores Dilemma |
|!Author: |Michael Pollan |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/the-one-straw-revolution.pdf]]
|!Name: |The One Straw Revolution |
|!Author: |Masanobu Fukuoka |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/the_organic_gardener.pdf]]
|!Name: |The Organic Gardener |
|!Author: |Christine and Michael Lavelle |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/organic_gardeners_handbook_of_natural_insect_and_disease_control.pdf]]
|!Name: |The Organic Gardeners Handbook of Natural Insect and Disease Control |
|!Author: |Barbara W Ellis and Fern Marshall Bradley |
|!Date: |1996 |
[>img[./Images/Book.png][./Documents/the_organic_way_to_mulching.pdf]]
|!Name: |The Organic way to mulching |
|!Author: |Editors of Organic Gardening and Farming |
|!Date: |1972 |
[>img[./Images/Book.png][./Documents/ATMRL/the_owner_built_homestead.pdf]]
|!Name: |The Owner Built Homestead |
|!Author: |Ken Kern |
|!Date: |1975 |
[>img[./Images/Book.png][./Documents/ATMRL/the_passive_solar_energy_book.pdf]]
|!Name: |The Passive Solar Energy Book |
|!Author: |Edward Mazria |
|!Date: |1979 |
[>img[./Images/Book.png][./Documents/ATMRL/performance_and_economic_feasability_of_solar_grain_drying_systems.pdf]]
|!Name: |performance_and_economic_feasability_of_solar_grain_drying_systems |
|!Author: |Walter G. Heid |
|!Date: |Feb 1978 |
[>img[./Images/Book.png][./Documents/Public/the_pleasantville_cook_book.pdf]]
|!Name: |The Pleasantville Cook Book |
|!Author: |Bertha M Robbins, J H Griffin, Lewis O. Clark. Pleasantville, New York. |
|!Date: |1894 |
[>img[./Images/Book.png][./Documents/ATMRL/pakistans_potential_for_solar_powered_irrigation.pdf]]
|!Name: |The Potential for Small Scale Solar Powered Irrigation in Pakistan  |
|!Author: |Michael Howes  |
|!Date: |Dec 1982 |
[>img[./Images/Book.png][./Documents/updatedplough06112012.pdf]]
|!Name: |The Power of the Plough |
|!Author: |David Walker |
|!Date: |May 2012 |

[>img[./Images/Book.png][./Documents/tpr1-fall 2012.pdf]]
|!Name: |The Preparedness Review - Fall 2012 |
|!Author: | |
|!Date: |Fall 2012 |
[>img[./Images/Book.png][./Documents/tpr2-spring 2013.pdf]]
|!Name: |The Preparedness Review - Spring 2013 |
|!Author: | |
|!Date: |Spring 2013 |
[>img[./Images/Book.png][./Documents/tpr3-fall 2013.pdf]]
|!Name: |The Preparedness Review - Fall 2013 |
|!Author: | |
|!Date: |Fall 2013 |
[>img[./Images/Book.png][./Documents/tpr4-spring 2014.pdf]]
|!Name: |The Preparedness Review - Spring 2014 |
|!Author: | |
|!Date: |Spring 2014 |
[>img[./Images/Book.png][./Documents/tpr5-winter 2014.pdf]]
|!Name: |The Preparedness Review - Winter 2014 |
|!Author: | |
|!Date: |Winter 2014 |
[>img[./Images/Book.png][./Documents/profitable farmers toolkit 1.1.pdf]]
|!Name: |profitable farmers toolkit 1.1 |
|!Author: |In the Field Consultants www.inthefieldconsultants.com |
|!Date: | |
[>img[./Images/Book.png][./Documents/collinsaetext04thrdm10.pdf]]
|!Name: |The Radio Amateur's Handbook |
|!Author: |A Frederick Collins |
|!Date: |Nov 2004 |
[>img[./Images/Book.png][./Documents/the_road_back_to_nature-masanobu_fukuoka.pdf]]
|!Name: |the_road_back_to_nature-masanobu_fukuoka |
|!Author: |Masanobu Fukuoka |
|!Date: |1987 |
[>img[./Images/Book.png][./Documents/AgroDoc/49-the_rural_finance_landscape.pdf]]
|!Name: |The Rural Finance Landscape |
|!Author: |Ton de Klerk. Agromisa Foundation |
|!Date: |2008 |
/%
Image:baking.png
Thumbnail:baking_thumbnail.jpg
%/
[img[./Images/baking_small.jpg][./Images/baking.png]]
[>img[./Images/Book.png][./Documents/ATMRL/06-273.pdf]]
|!Name: |The Scythe Book |
|!Author: |David Tresemer |
|!Date: |1982 |
[>img[./Images/Book.png][./Documents/USAMD/md 0582 - the sensory system.pdf]]
|!Name: |MD 0582 - The Sensory System |
|!Author: |US Army Medical Department |
|!Date: | |
[>img[./Images/Book.png][./Documents/Public/king_thesoil.pdf]]
|!Name: |The Soil |
|!Author: |F H King|
|!Date: |1913 |
[>img[./Images/Book.png][./Documents/Public/waksman_the-soil-and-the-mi.pdf]]
|!Name: |The Soil and the Microbe |
|!Author: |Selman A Waksman |
|!Date: |1931 |
[>img[./Images/Book.png][./Documents/ATMRL/the_solar_cookery_book.pdf]]
|!Name: |The Solar Cookery Book: Everythinq Under the Sun |
|!Author: |Beth and Dan Halacy |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/ATMRL/solar_energy_timetable.pdf]]
|!Name: |The Solar Energy Timetable   |
|!Author: |Denis Hayes |
|!Date: |Apr 1978 |
[>img[./Images/Book.png][./Documents/ATMRL/the_solar_greenhouse_book.pdf]]
|!Name: |The Solar Greenhouse Book |
|!Author: |James C. McCullagh |
|!Date: |1978 |
[>img[./Images/Book.png][./Documents/ATMRL/solar_survey.pdf]]
|!Name: |The Solar Survey |
|!Author: |The National Center for Appropriate Technology  |
|!Date: |1979 |
[>img[./Images/Book.png][./Documents/the_steel_square_1.pdf]]
|!Name: |The Steel Square |
|!Author: |Fred T. Hodgson |
|!Date: |1913 |
[>img[./Images/Book.png][./Documents/thesurvivalhandbook-raymears.pdf]]
|!Name: |The Survival Handbook |
|!Author: |Ray Mears |
|!Date: |1990 |
[>img[./Images/Book.png][./Documents/water_-_rainwater_harvesting.pdf]]
|!Name: |The Texas Manual of Rainwater Harvesting |
|!Author: |Texas Water Development Board |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/ATMRL/the_timber_framing_book.pdf]]
|!Name: |The Timber Framing Book|
|!Author: |Stewart Elliott, Eugenie Wallas |
|!Date: |1977 |
[>img[./Images/Book.png][./Documents/defra_food_miles_report.pdf]]
|!Name: |defra_food_miles_report |
|!Author: |Defra |
|!Date: |Jul 2005 |
[>img[./Images/Book.png][./Documents/the_vegan_sourcebook.pdf]]
|!Name: |The Vegan Sourcebook |
|!Author: |Joanne Stepaniak |
|!Date: |2000 |
[>img[./Images/Book.png][./Documents/Public/vegetariancookbo00fult.pdf]]
|!Name: |The Vegetarian Cook Book |
|!Author: |E G Fulton |
|!Date: |1910 |
[>img[./Images/Book.png][./Documents/the_vegetarian_myth.pdf]]
|!Name: |The Vegetarian Myth |
|!Author: |Lierre Keith |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/2009_05_15_warren_common.pdf]]
|!Name: |The Warren Common |
|!Author: |Whole Systems Design |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/westminster_cook_book.pdf]]
|!Name: |The Westminster Cook Book |
|!Author: | |
|!Date: |1876 |
[>img[./Images/Book.png][./Documents/ATMRL/the_wind_power_book.pdf]]
|!Name: |The wind power book |
|!Author: |Jack Park |
|!Date: |1981 |
[>img[./Images/Book.png][./Documents/the-winning-of-the-carbon-war-march-2016.pdf]]
|!Name: |The Winning of the Carbon War |
|!Author: |Jeremy Leggett |
|!Date: |Mar 2016 |
[>img[./Images/Book.png][./Documents/the_worm_book.pdf]]
|!Name: |The Worm Book |
|!Author: |Loren Nancarrow and Janet Hogan Taylor |
|!Date: |1998 |
[>img[./Images/Book.png][./Documents/the_characterization_of_willow_salix_l_varieties_f.pdf]]
|!Name: |The characterization of willow |
|!Author: |Yulia A. Kuzovkinaa, Timothy A. Volkb |
|!Date: |Mar 2009 |
[>img[./Images/Book.png][./Documents/benefits_of_farmers_markets.pdf]]
|!Name: |The economic benefits of farmers' markets |
|!Author: |Firends of the earth |
|!Date: |Sep 2000 |
[>img[./Images/Book.png][./Documents/ATMRL/the_home_built_wind_powered_electricity_hand_book.pdf]]
|!Name: |The home built wind powered electricity hand book |
|!Author: |Michael Hackleman  |
|!Date: |1975 |
[>img[./Images/Book.png][./Documents/the joy of keeping chickens complete opt.pdf]]
|!Name: |The joy of keeping chickens |
|!Author: |Jennifer Megyesi |
|!Date: |2009 |
[>img[./Images/Book.png][./Documents/economic_impact_of street_produce_and_farmers_markets.pdf]]
|!Name: |The local economic impact of street produce and farmers' markets |
|!Author: |John Taylor, Matina Madrick and Sam Collin |
|!Date: |Nov 2005 |
[>img[./Images/Book.png][./Documents/the pear essentials - food facts.pdf]]
|!Name: |The pear essentials - food facts |
|!Author: |Rosemary Hoskins |
|!Date: |1998 |
[>img[./Images/Book.png][./Documents/the perfect pinta - milk food facts.pdf]]
|!Name: |The perfect pinta - milk food facts |
|!Author: |Rosemary Hoskins |
|!Date: |1998 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc8.pdf]]
|!Name: |The preparation and use of compost  |
|!Author: |Madeleine Inckel, Peter de Smet, Tim Tersmette, Tom Veldkamp. Agromisa Foundation |
|!Date: |2005 |
[>img[./Images/Book.png][./Documents/price_of_power.pdf]]
|!Name: |The price of power |
|!Author: |New Economics Foundation |
|!Date: |2004 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc31.pdf]]
|!Name: |The storage of tropical agricultural products  |
|!Author: |Jelle Hayma. Agromisa Foundation |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/AgroDoc/agrodoc9.pdf]]
|!Name: |The vegetable garden in the tropics |
|!Author: |Henk Waaijenberg. Agromisa Foundation |
|!Date: |2003 |
[>img[./Images/Book.png][./Documents/thermophillic-composting-in-haiti.pdf]]
|!Name: |thermophillic-composting-in-haiti |
|!Author: |S. Kramer, N. Preneta and A. Kilbride, Haiti |
|!Date: |2013 |
|!Name: |Thermos Bottle Cooking |

There are three kinds of thermos bottles but only one is practical. Forget the cheap, plastic ones lined with Styrofoam. These might cook oatmeal and white rice but do not have the heat holding power you need. Silvered glass thermoses are fine, but a bump will break them. Also, since you are going to do actual cooking and will use a fork to remove the contents, they will not hold up. The only practical cooking thermos is the Aladdin Stanley. It is lined with stainless steel, is well insulated and will keep steaming hot for up to 24 hours and holds a quart. It is also unbreakable, with a lifetime warranty. It costs $22.00 at ~Wal-Mart or can be ordered through any sporting goods store. It would save you its price in a few days. If you have a family, get two or three.

Most foods cook at 180 degrees or more. We are used to boiling, which is 212 degrees, and foods do cook faster, the higher the temperature. But if time is not important, cooking at a lower temperature is even better as most vitamins are not broken down. Thus, if you cook at a minimum heat, you save nutrition. A great factor in thermos cooking is the saving in the cost of energy. Whereas it would take about two hours to cook whole-grain wheat or nearly an hour to cook brown rice.

Thermos cookery takes only five minutes to cook anything. So it is indeed possible to save as much in energy as you spend on the food. You can imagine the convenience of thermos cookery in camping, which would save on wood, weight of food carried, and no food odors to alert bears or enemies. Thermos cookery is also an advantage to anyone living where he is not allowed to cook. There are no cooking odors to tip off the landlord. First, you need the thermos. Then you need a heat source. If you are in a non-cooking room, buy a cheap, one burner hot plate from your local ~Wal-Mart, Target, Sears etc. You will need a one quart saucepan. You will also need a special funnel to quickly pour the pan's contents into the thermos, plus a spoon or fork to help the last of the food into the funnel. To make the funnel, cut off the bottom four inches from a gallon plastic milk container. If you do not buy milk or cannot find an empty container, go to your nearest laundromat. You will find in the trash receptacle, an empty gallon bleach bottle. Use that the same as the milk container but wash it until there is no more bleach odor.

The first step in thermos cookery is to fill the thermos with water up to the point reached by the stopper. Empty the water into the saucepan and make a scratch or other indelible mark at the water's surface inside the saucepan. This will allow you to put just enough water in the saucepan, as too much will leave food out and too little will give you less cooking water. Just to test how the cooker works, start with four ounces of wheat. You do not need to buy 60 pounds. You can buy two pounds from your health food store for about $.80 This would give you eight meals at 10 cents each. In the evening, put four ounces in your saucepan, plus a half-teaspoon of salt to prevent flatness, even if you intend to sweeten it. Fill to the mark with water. (If you have hot water, let the tap run until it is hottest. Tests have shown that less energy is used in using hot tap water than in boiling from cold.) Bring the contents to a rolling boil, stirring all the while. This will take from three to five minutes. Then quickly, but carefully, swirl and pour the contents into the funnel and help any lagging matter from the pan to the funnel and into the thermos. Cap firmly but not tightly, shake and lay the thermos on its side, to keep the contents even. Next morning open the thermos and pour its contents into the saucepan. With four ounces of dry wheat, you will now have at least 3/4 pound of cooked wheat and about a pint of vitamin and mineral enriched water. It has a pleasant taste. Drink it. You can now put milk and sweetener on it or margarine, salt and pepper, etc. If you can eat the whole 3/4 of a pound, you will be surprised at how energetic you feel for the next several hours. An added bonus is its high fiber content. Having tried the four ounce portion, you might next use eight ounces. This will absorb most of the water. It is unlikely that you could eat a pound and a half of cooked whole grain wheat. You can either divide it and eat the other half for supper or if you are a family man, make it the family breakfast food to replace the expensive brand.

For lunch, prepare a few ounces of hamburger or other meat chopped finely, plus chopped potatoes and other vegetables the night before. After breakfast, put these and the right amount of water in the saucepan and prepare as usual. At lunchtime you will have a quart of really delicious stew. Since nothing leaves the thermos in cooking, as contrasted to the flavor leaving stew cooking on the stove, you can understand the better tasting, higher vitamin content of thermos stew. Lunch and possibly supper should not cost you more than 25 cents if you study the article on the dehydrator. Jerky and dried vegetable stew is good and costs little. The brown rice dishes could also be either a main course or desert. Brown rice has a much greater swelling factor than wheat so four ounces of rice will pretty much fill the thermos.

You can put vegetables and meat in it to cook or try a favorite of mine. It is four ounces of brown rice, 9 cents; one ounce of powdered milk, 10 cents in a large box; two ounces of raisins, 22 cents; one teaspoon of salt; some cinnamon and four saccharine tablets. Cook overnight. This is 46 cents for 1 1/2 pounds of desert. With some experimenting, you can become an expert in thermos cookery. If you are single and live alone, you could, conceivably, eat nothing except what you cooked in a thermos. But if you are married, and especially if you have children, don't push it. Even with the economy of this system, it's not worth alienating your family. If your wife doesn't like it, challenge her to make the food tastier and think up some thermos recipes. You might also tell her the advantages of thermos cookery. For one thing, she would spend much less time in the kitchen. What with the expected brownouts, she could do all the cooking in five, ten, fifteen minutes, depending on how many thermos bottles she used. Another important factor is that, especially during the heat waves, the home would not suffer the added heat from the kitchen. This would also cut down on the air conditioning costs. A tip you may not have known is that the pilot light in a gas stove not only raises the temperature in the kitchen but also accounts for a fourth of all the gas burned in the stove. Matches are much cheaper. Turn the pilot light off.
[>img[./Images/Book.png][./Documents/CAT/think-local-food.pdf]]
|!Name: |Think Local |
|!Author: |[[CAT]] |
|!Date: |2006 |
[>img[./Images/Book.png][./Documents/compostbinconstructionplan-threebin.pdf]]
|!Name: |Three Bin Compost Bin Construction Plans |
|!Author: |Greater Vancouver Regional District |
|!Date: |Feb 2002 |
[>img[./Images/Book.png][./Documents/ATTRA/thrips.pdf]]
|!Name: |thrips |
|!Author: |[[ATTRA]] |
|!Date: | |
/***
|''Name:''|TiddlerListMacro|
|''Version:''|2.3 (8-Jan-2008)|
|''Source''|http://jackparke.googlepages.com/jtw.html#TiddlerListMacro ([[del.icio.us|http://del.icio.us/post?url=http://jackparke.googlepages.com/jtw.html%23TiddlerListMacro]])|
|''Author:''|Jack|
|''Type:''|Macro|
|''Documentation:''|http://jackparke.googlepages.com/jtw.html#TiddlerListMacroDoc|
!Usage
{{{<<tiddlerList parameter1:"value1" parameter2:"value2" ...>>}}}
See [[TiddlerListMacroDocumentation]] and [[TiddlerListMacroExamples]]
!Code
***/
//{{{
version.extensions.tiddlerList = {major: 2, minor: 3, revision: 0, date: new Date("Jan 08, 2008")};
// template = [header, item, separator, group, footer]
config.macros.tiddlerList={
 formats : {list:true, nlist:true, span:true, stack:true, csv:true, table:true},
 templates : {
 list : [ "%0\n", "* %0\n", "", "%group\n", "%0\n"],
 nlist : [ "%0", "# %0\n", "", "%group\n", "%0\n"],
 span : [ "%0", "%0", " ", "%group", "%0"],
 stack : [ "%0", "%0", "\n", "%group", "%0"],
 csv : [ "%0", "%0", ", ", "%0", "%0\n"],
 table : ["|!%0|\n", "|%0|\n", "", "|%group|\n", "|%0|\n"]
 },
 dateFormat : "DD MMM YYYY"
}

if (typeof gCurrentTiddler == 'undefined')
 var gCurrentTiddler;

config.macros.tiddlerList.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
 // Some globals
 var count=0, groupCount=0, theGroup="", lastGroup="", firstInGroup = false;
 var currentTiddler = tiddler;
 gCurrentTiddler = tiddler;
 var listWikiText="";
 var formats = this.formats;

 // SQL-Like parameters
 var parameters = paramString.parseParams("name",null,true);
 var pTags = parameters[0]["tags"]?parameters[0]["tags"][0].split(','):[];
 var pOrder = parameters[0]["order"]?parameters[0]["order"][0]:"title";
 var pTop = parameters[0]["top"]?parameters[0]["top"][0]:-1;
 var pText = parameters[0]["text"]?parameters[0]["text"][0]:"";
 var pTitle = parameters[0]["title"]?parameters[0]["title"][0]:"";
 var pSearch = parameters[0]["search"]?parameters[0]["search"][0]:"";
 var pFilter = parameters[0]["filter"]?parameters[0]["filter"][0]:"";
 var pHeader = parameters[0]["header"]?paramFormat(parameters[0]["header"][0]):"";
 var pFooter = parameters[0]["footer"]?paramFormat(parameters[0]["footer"][0]):"";
 var pGroup = parameters[0]["group"]?parameters[0]["group"][0]:"";
 var pDateFormat = parameters[0]["dateFormat"]?parameters[0]["dateFormat"][0]:this.dateFormat;
 var pCustomParameter = parameters[0]["customParameter"]?parameters[0]["customParameter"][0]:"";
 var pFormat = parameters[0]["format"]?parameters[0]["format"][0]:"list";
 pFormat = formats[pFormat]?pFormat:"list"

 // Separator
 var pSeparator = parameters[0]["separator"]?paramFormat(parameters[0]["separator"][0]):(parameters[0]["seperator"]?paramFormat(parameters[0]["seperator"][0]):this.templates[pFormat][2])

 // Template for group
 var pGroupTemplate = this.templates[pFormat][3];
 if (parameters[0]["groupTemplate"])
 pGroupTemplate = paramFormat(parameters[0]["groupTemplate"][0])
 pGroupTemplate = pGroupTemplate.replace(/\$\)\)/g, ">>")

 // Template for group footer
 var pGroupFooterTemplate = "";
 if (parameters[0]["groupFooterTemplate"])
 pGroupFooterTemplate = paramFormat(parameters[0]["groupFooterTemplate"][0]);
 pGroupFooterTemplate = pGroupFooterTemplate.replace(/\$\)\)/g, ">>");

 // Template for item
 var pItemTemplate = this.templates[pFormat][1];
 if (parameters[0]["itemTemplate"])
 pItemTemplate = paramFormat(parameters[0]["itemTemplate"][0])
 pItemTemplate = pItemTemplate.replace(/\$\)\)/g, ">>").replace(/%link/g, "%0").replace(/%item/g, "%1").replace(/%abstract/g, "%2").replace(/%text/g, "%3").replace(/%created/g, "%4").replace(/%modified/g, "%5").replace(/%modifier/g, "%6").replace(/%group/g, "%7").replace(/%title/g, "%8").replace(/%tags/g, "%9").replace(/%nolink/g, "%10").replace(/%custom/g, "%11")
 // Template for footer
 var pFooterTemplate = this.templates[pFormat][4].replace(/%count/g, "%1")

 // Get all tiddlers
 var tiddlers = store.reverseLookup("tags","",false);

 // Sorting
 if(!pOrder)
 pOrder = "title";
 if (pOrder.match(/^\-/i)) {
 pOrder = pOrder.substr(1)
 var sortDesc = true;
 }
 // Sorting on a standard field
 if (pOrder.match(/(title)|(text)|(modifier)|(modified)|(created)|(tags)/))
  if (sortDesc)
   tiddlers.sort(function (a,b) {if(a[pOrder] == b[pOrder]) return(0); else return (a[pOrder] > b[pOrder]) ? -1 : +1; });
  else
  tiddlers.sort(function (a,b) {if(a[pOrder] == b[pOrder]) return(0); else return (a[pOrder] < b[pOrder]) ? -1 : +1; });
 else
  if (sortDesc)
   tiddlers.sort(function (a,b) {if(a.fields[pOrder] == b.fields[pOrder]) return(0); else return (a.fields[pOrder] > b.fields[pOrder]) ? -1 : +1; });
  else
   tiddlers.sort(function (a,b) {if(a.fields[pOrder] == b.fields[pOrder]) return(0); else return (a.fields[pOrder] < b.fields[pOrder]) ? -1 : +1; });

 // Header
 if (pHeader)
 listWikiText += formatItem(this.templates[pFormat][0], [pHeader], pFormat)

 for(var t=0; t<tiddlers.length; t++) {
 tiddler = tiddlers[t];
 if (pText!="" && tiddler.text=="") tiddler.text=store.getValue(tiddler, 'text')
 if (pTop==-1 || count<pTop) {
 if (pText=="" || tiddler.text.match(pText)) {
 if (pTitle=="" || tiddler.title.match(pTitle)) {
 if (pSearch=="" || (tiddler.title.match(pSearch) || tiddler.text.match(pSearch))) {
 if (pFilter=="" || eval(pFilter)) {
 if (pTags.length==0 || compareArrays(tiddler.tags, pTags, "all")) {
 count++;
 if (tiddler.text=="") tiddler.text=store.getValue(t