<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

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

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

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

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

	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]];}

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

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

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

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

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

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

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

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

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

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.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:0px; top:0px;}

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

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

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin: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:0px 3px 0px 3px;}

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

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

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

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

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

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#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 where print preview displays the noscript content */
<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 class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<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 id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div class='toolbar' 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>
<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>>
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]]
[[img |]]

<span class="skype_pnh_print_container"><span class="skype_pnh_print_container">0680 20 41 55 4</span><span tabindex="-1" dir="ltr" class="skype_pnh_container"><span class="skype_pnh_mark"> begin_of_the_skype_highlighting</span>&nbsp;<span dir="ltr" title="Rufen Sie diese Telefonnummer in Österreich mit Skype an: +436802041554" class="skype_pnh_highlighting_inactive_common"><span skypeaction="skype_dropdown" class="skype_pnh_left_span">&nbsp;&nbsp;</span><span skypeaction="skype_dropdown" title="Skype-Aktionen" class="skype_pnh_dropart_span"><span skypeaction="skype_dropdown" style="background-position: -337px 1px ! important;" class="skype_pnh_dropart_flag_span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;</span><span class="skype_pnh_textarea_span"><span class="skype_pnh_text_span">0680 20 41 55 4</span></span><span class="skype_pnh_right_span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span>&nbsp;<span class="skype_pnh_mark">end_of_the_skype_highlighting</span></span></span><span tabindex="-1" dir="ltr" class="skype_pnh_container"><span class="skype_pnh_mark"> begin_of_the_skype_highlighting</span>&nbsp;<span dir="ltr" title="Rufen Sie diese Telefonnummer in Österreich mit Skype an: +436802041554" class="skype_pnh_highlighting_inactive_common"><span skypeaction="skype_dropdown" class="skype_pnh_left_span">&nbsp;&nbsp;</span><span skypeaction="skype_dropdown" title="Skype-Aktionen" class="skype_pnh_dropart_span"><span skypeaction="skype_dropdown" style="background-position: -337px 1px ! important;" class="skype_pnh_dropart_flag_span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;</span><span class="skype_pnh_textarea_span"><span class="skype_pnh_text_span">0680 20 41 55 4</span></span><span class="skype_pnh_right_span">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span>&nbsp;<span class="skype_pnh_mark">end_of_the_skype_highlighting</span></span>
|Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|

	handler_mptw_orig_closeUnsaved: config.commands.cancelTiddler.handler,

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





Gruppe: Leni, Joanna, Valentin, Jakob, Alex

Aufarbeitung des Plakats:


- Waschmittel
- Kochen, Einmachen, Veredeln
- Brot backen
- Stricken
- Tanzen, Yoga
- Genderworkshop
- ...

- Zimmerpflanzenableger
- Kleidung, Bücher
- KostNixLaden

- vokü
- Guerilla Gardening
- Selbsterntefelder
- Speisereise, Höfe besuchen und davon berichten
- 	Dumpsterkollektiv
- Familienaktionen
- Raves, Straßenfest
- Ressourcenpool (biete, suche gewisse Kenntnisse)
- Lesezirkel
- autonome Bildungskollektive
- Diskussionskreis
- Squatting
-. Kreativ/Musik/Aktionsplattform
- Alternative Finanzsysteme

- Selbsterntefelder
- Gestaltung des Raums (Kinder, Hunde, Spiel u. Spaß)
- Freiraum schaffen
- 'Wohnzimmerfeeling'
- Projektraum, Nachbarschaftszentrum
- Lager untervermieten? / Zur Verfügung stellen?

Zeitfrage - Zeitrahmen festlegen? (Effizienz)
Wer trägt Verantwortung?
Integration unterschiedlicher Gruppen (Familien, Senioren,...)

Ideen sind v.a. für 'später', wenn Basis schon läuft. Wer allerding gerne früher schon aktiv werden will, kann das auf eigene Faust tun.

|Description:|Adds a New tiddler button in the tag drop down|
|Version:|3.2 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|

window.onClickTag_mptw_orig = window.onClickTag;
window.onClickTag = function(e) {
	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;
	wikify("<<newTiddler label:'New tiddler' tag:'"+tag+"'>>",createTiddlyElement(popup,"li"));
	return false;


Szenarien für das Konsensierungsverfahren

#''Mobiler Raum''
#''Kein Raum'' 
##geringe fixe Kosten, alle  kommen zum Zeitpunkt der Lieferung egal bei welchem Wetter und welche Verspätung der Lieferant hat.
#''Mitbenützung eines Raumes'' 
##periodische Nutzung, Lieferung, Selbstabholung, geringe Fixkosten
# ''Keller als Lager 20-30qm''
##Feuchtigkeit, keine Infrastruktur, wenig Repräsentation nach Aussen  (schwierig für Erweiterung, Förderung, Wachstum)
# ''Kleines Geschäftslokal 20-30qm''
##Lager ohne Küche, Eingang von der Strasse, wenig Infrastruktur (ev. Wasser und WC, keine Heizung), bessere ##Repräsentationsmöglichkeit
# ''Mittlerer Raum ca. 50qm''
##Eingang von der Strasse, Lager, Küche, WC, Wasser, kl. Fläche für soziale Interaktion (Cafe tischchen)
# ''Mittlerer Raum ca. 50qm''
##wie Punkt 5 + Möglichkeit für kleinen Markt
# ''Grosser Raum''
##ganze Infrastruktur, Küche und Gemeinschaftsraum, Platz für Projekte, Workshops, Markt oder andere Erweiterungen
# ''Ergänzung?''
@@(anmerkung clemens: represantation könnte auch über die ware erfolgen > is vor allem für die ersten varianten wichtig da es keine interaktion und representationsräumlichkeiten gibt; kann aber natürlich auch für alle anderen varianten von vorteil sein( als beispiel wäre das adamah kisterl zu nennen))

# ''Wer unterschreibt die Verträge (Miete, Versicherungen, Rechtsschutz, Internet)?''
##Verein (alternative Privat, GsmbH, …)
# ''Arbeitsaufteilung''
##Freiwillige Basis (kontra Raddienst)
# ''Arbeitsaufteilung''
## Rotierende Tätigkeiten (kontra freie Zuteilung in Form von Arbeitsgruppen laufend anfallende Arbeiten)

[[Grundsätze SK]]
Themen mit Diskussionspotential?
Anzudenken sind hierzu Diskussionstermine und –gruppen für Interessierte und/oder Diskussionen im Plenum

*Zeit und Geld
**Sich mit einbringen (können)
**Alternative für Leute mit wenig Zeit: z.B. Ersatzperson hinschicken und diese dafür mal bekochen. 
**Aber nicht als Zwang, jedeR so viel wie möglich
**10 Stunden pro Monat 
**10 Stunden pro Monat pro Person zu viel?
**Zeit statt Geld hergeben
**Bezug von Lebensmitteln auch für Leute, die sich zeitlich nicht einbringen können um die Vorteile des Projekts nicht nur unserer Gruppe vorzubehalten
**jedeR gibt, was er/sie kann; freier Mitgliedsbeitrag (freie Preise)
*Monatsplenum, ohne unentschuldigtes Fehlen zumindest bei Wiederholungstäter*innen?? (Widerspruch zu Antishierarchisch)
*Wie gehen wir mit Verstößen gegen Grundsätze um?
**Diskutieren, erstmal ansprechen 
**Braucht anwesende Coopies (wenn jemand nicht kommt, kann man nicht mit ihm/ihr reden)
*Müssen Grundsätze kanonmäßig niedergeschrieben werden?
*Offen für alle Menschen
**Raus aus dem Studi-Umfeld
**Offenheit für möglichst viele versch. Gruppen
*Fair und regional vor bio?
**Bio nicht unbedingt nach Zertifikat
**Nicht von Großkonzernen!
*Kein Gott, kein Staat, kein Fleischsalat?!
**Vielleicht 1 mal pro Monat Bestellung?
**Vl nicht in unserem Lager, aber über unsere Foodcoop organisierbar?
**Lieber Bio als Massentierhaltung
**Gesundes Fleisch ist ok?
**Bitte nur in Maßen 
**Keine Lagerung
*Produkte aus Übersee?
**Auch in Übersee gute Projekte unterstützen 
***Auch in Übersee haben’s Bauern schwer.  Bio aus Übersee schließt oft aus  Fairtrade? (was ist gemeint?)
***Produkte die es bei uns nicht gibt, die bei uns nicht angebaut werden
***Wertschöpfung sollte vor Ort bleiben (so viele Schritte wie möglich bei Produzent*innen)
**Avocados, Kokosnüsse?
***Libertad? Cooles Kollektiv aus Mexiko
***EZA – Fair Trade
''Antis/Distanzierungen (in Workshops definieren/verdichten?)''
*Nicht-diskriminierendes Verhalten
*Nicht hierarchisch
*Anti-kapitalistisch (was heißt das?)
**Konsummonopole sprengen
**Nicht gewinnorientiert

|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
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>}}}

window.hideWhenLastTest = false;

window.removeElementWhen = function(test,place) {
	window.hideWhenLastTest = test;
	if (test) {


	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);



//Plakat// http://werk-wien.at/stuff/foodcoop/Infrastruktur%20IMG_6031.jpg
[[Fragestellungen für SK]]

|Description:|A handy way to insert timestamps in your tiddler content|
|Version:|1.0.10 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
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)
* 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

	excludeTags: [

	excludeTiddlers: [
		// 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");


''Das Konsensverfahren ist Teil der Bemühungen sich basisdemokratisch zu organisieren.''

Dadurch sind wir natürlich nicht davor geschützt, dass einzelne ihre Meinung ändern, um Harmonie und Übereinstimmung zu erreichen oder von der Gruppe akzeptiert zu werden! Konsens erfordert also von allen die Bereitschaft, verantwortungsbewusst mit den eigenen Bedürfnissen umzugehen, und die der anderen zu akzeptieren. Konsens ist keine Wundermethode. In Situationen, die besonders kontrovers sind, oder in denen es schnell gehen muss, ist besonders viel Übung und Konzentration nötig. Deshalb ist es wichtig, dass wir es auch als Lernraum begreifen, wenn wir uns mal ein bisschen Zeit lassen können mit einer Entscheidung.

Das "Stimmungsbarometer". Achtet auf die Atmosphäre und Stimmung in der Gruppe und greift ein, wenn z.B. Müdigkeit, Aggressivität oder Überlastung zu spüren sind. Ist diese Rolle nicht besetzt, sollten alle verstärkt darauf achten.
Wer etwas sagen möchte und sich selbst nicht traut, kann zum "Mund" gehen, der dann für eineN spricht, einen Punkt einbringt. Hinsichtlich der Redeliste ist es auch möglich, z.B. hinsichtlich versch. Kategorien (Geschlecht, Personen aus Städten, die nicht so stark vertreten sind, etc) abzuwechseln, oder, damit nicht immer dieselben reden, die Personen, die noch gar nichts gesagt haben, in der Redeliste vorzuziehen.

Vorteile von Handzeichen
Machen Diskussion interaktiver, ermöglichen mehr Beteiligung
Unterstützen / erleichtern Kommunikation und Entscheidungsfindung.
Unterstützen / ergänzen die Moderation.
Stören nicht so wie Dazwischenreden, sind eine anderer Ebene als Sprache, können nebenher wahrgenommen werden.
Sind einfacher auszuführen als Wortmeldung bzw. Dazwischenrufen.

*''Stille'' //(Alle Fingerspitzen berühren sich)//: Die erste Person die Stille möchte macht dieses Zeichen, jede die es sieht greift es auf, bis alle still sind. Bitte alle ruhig sein!
*''Meldung'' //(Mit einer Hand melden)//: Ich möchte auf die RednerInnenliste. Ich will was sagen.
*''Direct Point'' //(Mit beiden Zeigefingern melden)//: Ich möchte direkt zu dem aktuellen RednerInnenbeitrag was sagen. Nicht mehr als zwei Sätze! "Ich kann das schnell klären ..."
*''Twinkeln'' //(Mit beiden Händen wedeln)//: Zustimmung. Sehe ich ganz genauso!
*''Technical Point'' //(Mit Händen ein "T" bilden)//: Technische Bemerkung, die nichts mit dem Inhalt der Diskussion zu tun hat, aber sofort drankommen soll. Das Dach stürzt ein! / Essen ist fertig!
*''Proposal / Process'' //(Mit den Fingern ein "P" bilden)//: Konkreter Vorschlag, inhaltlich oder zur Vorgehensweise. Ich hab ne Idee was wir jetzt machen!
*''Disagree'' //(Fingerflächen beider Hände voreinandergelegt mit ausgestreckten Armen)//: Ablehnung. Das sehe ich nicht so.
*''Lauter'' //(Mit beiden Händen die Handflächen nach oben zeigen)//: RednerIn redet zu leise, ich verstehe nichts. Bitte lauter reden!
*''Langsamer'' //(Mit beiden Händen mit Handflächen nach unten zeigen)//: RednerIn redet zu schnell, ich komme nicht mit.	Bitte langsamer reden!
*''Veto'' //(Erhobene Faust)//: Ganz starke Ablehnung. Damit kann ich absolut nicht leben.
*''Wiederholung'' //(Hände umeinander kreisen lassen)//: Die RednerIn wiederholt sich. Komm zum Punkt!
*''Hä?/Verwirrung'' //(Die Fingerspitzen einer Hand in Richtung des eigenen Gesichts zeigen und bewegen)//: Ich verstehe nicht was du meinst. Bitte Erklärung!
*''Language'' //(„L“ aus Zeigefinger und Daumen bilden)//: Ich verstehe etwas sprachlich nicht. Bitte Übersetzung!

Beim Entscheiden über einen Vorschlag meldet sich jede Person bei einer der folgenden Konsensstufen und bezieht so Stellung zu dem Problem. Letztlich sind die Stufen natürlich auch nur irgendwo gezogen – ob es jetzt drei, vier oder fünf sind: es geht darum meine Position dazu zu finden, und zu entscheiden wie wichtig sie mir ist im Vergleich zur Gruppenmeinung.
#''Zustimmung:'' „Ich stimme dem Lösungsvorschlag zu.“ Ja auf der ganzen Linie, meine Bedürfnisse werden voll berücksichtigt.
#''Zustimmung mit Einschränkungen:'' „Ich stimme dem Lösungsvorschlag mit Vorbehalten zu.“ Ich finde die Lösung nicht optimal, sie steht aber meinen Bedürfnissen nicht im Weg und ich kann sie deshalb mittragen.
#''Ablehnung / Stand Aside:'' „Ich stimme nicht zu, kann den Vorschlag aber tolerieren.“ Ich bin gegen den Vorschlag, finde es aber okay wenn die anderen das so machen, wenn sie wollen. Ich werde dann unter Umständen nicht mitmachen.
#''Veto:'' „Ich bin so sehr gegen den Vorschlag, dass die Gruppe ihn nicht umsetzen darf.“ Es ist kein Konsens erzielt worden. Der Vorschlag ist entweder blockiert, oder die Gruppe muss sich trennen. Mit dem Veto übt eine einzelne Person eine große Macht aus, deshalb sollte jedeR damit verantwortungsvoll umgehen.
Ein Konsens ist hergestellt, wenn kein Veto eingelegt wird, und sich ausreichend viele Leute bei Stufe eins oder zwei melden. Denn - auch wenn es zwar kein Veto gibt, aber auch niemand so richtig für den Vorschlag ist, steht die Gruppe nicht wirklich dahinter.

Für die Konsensmethode gibt es folgende schematische Vorgehensweise, die allerdings mehr als Orientierung dient, und streng durchgezogen v.a. in turbulenten Entscheidungsprozessen weiterhelfen kann:
#''Problemklärung'': Verständigen über Situation und Einschätzen der Lage. Das Problem und alle dazugehörigen Informationen werden dargestellt, im Normalfall von der Person, die den Punkt auf die Tagesordnung gesetzt hat. Es gibt Nachfragen, damit alle Beteiligten auf dem gleichen Stand sind.
#''Entscheidungsfrage formulieren'': Wichtig ist es genau zu klären, über welche Frage ein Entscheid ansteht, um Missverständnisse zu vermeiden. Unklare Fragestellungen führen zu unklaren Lösungen. Gibt es mehrere Sachen zu entscheiden: eins nach dem anderen.
#''Jede Person äußert ihr Bedürfnis zu der formulierten Frage'': Jede Person äußert sich zu ihren Ängsten und Wünschen. Es wird noch nicht diskutiert. Reicht die Zeit, ist hierfür eine Runde gut. Muss es schnell gehen, nimmt die Moderation einige Wortmeldungen dran. Sie hält die Beiträge kurz und achtet darauf, dass viele etwas sagen können.
#''Ideenfindung:'' Es werden verschiedene Lösungsideen gesammelt und kurz vorgestellt. Wichtig: exakt formulieren. Bewertet werden die Vorschläge noch nicht, so kommen oft die ungewöhnlichsten Lösungsvorschläge zur Sprache.
#''Vorschläge diskutieren:'' Jetzt werden alle Vorschläge auf Vor- und Nachteile hin überprüft. Gebrauch von Handzeichen machen! Ist die Zeit sehr knapp, fallen Punkt 4 und 5 zusammen.
#''Konsensvorschlag herausarbeiten:'' Jetzt wird ein möglicher Konsens formuliert (oder mehrere, s.u.). Aus der Diskussion wird die Lösungsidee zusammengefasst, die den Bedürfnissen von allen möglichst nahe kommt. Einwände werden mit eingebaut.
#''Entscheiden:'' Jede Person bewertet den Vorschlag nach den oben beschriebenen Konsensstufen. Wenn es zu einem Konsens kommt, geht es mit Punkt 8 weiter. Wenn nicht, zurück zu Punkt 4.
#''Der Konsens wird umgesetzt:'' Das Ergebnis wird noch einmal genau genannt. Verantwortlichkeiten werden festgelegt (Wer macht was wann?)
#''Überprüfen:'' Nach einer festgelegten Zeit (beim nächsten Plenum, bei der Auswertung,...) sollte die Lösung noch einmal überprüft werden. Gab es Probleme, war die Lösung umsetzbar?

''Mehrere Konsensvorschläge:''
Idealerweise ergibt sich in Phase 6 ein Konsensvorschlag, der alle Bedürfnisse mit einbezieht. Oft stehen aber mehrere Vorschläge unvereinbar nebeneinander (z.B.: Nennen wir das Netzwerk so oder so?). In diesem Fall ist der Ablauf folgendermaßen: - Wiederholen der Vorschläge (vielleicht kann man sie ja auf zwei oder drei reduzieren ...) - Gibt es Vetos gegen einen der Vorschläge? Wenn ja, wird dieser hinten angestellt. - Stimmungsbild, welcher der (übrigen) Vorschläge zuerst abgefragt wird. - Mit Vorschlag 1 geht’s dann weiter durchs Modell. - Wenn ein Konsens zustande kommt, super. Wenn nicht, durchs Modell mit Vorschlag 2.

Eine Möglichkeit, mit den Vorschlägen aus den Kleingruppen einen Konsens zu entwickeln, wäre der klassische ''„SprecherInnenrat“'', in dem Informationen aus allen Gruppen zusammengetragen und Vorschläge für die Entscheidungsfindung gemacht werden, wobei diese dann (ggf. mehrfach) an die Kleingruppen zurückgegeben werden, die abschließend entscheiden. Für unsere großen Treffen halten wir dieses Verfahren erst mal nicht für notwendig. Ggf. könnte darauf aber zurückgegriffen werden (wobei die Kleingruppen dann einzelne politische Zusammenhänge, Städtegruppen, etc. wären).

In den meisten Fällen wird das Modell zum Konsens führen – vorausgesetzt, wir wollen wirklich eine Entscheidung treffen. Es kann aber auch Fälle geben, in denen eine oder mehrere Personen ganz anderer Meinung sind als der Rest der Gruppe und keine Lösung in Sicht ist. Hier einige Möglichkeiten, damit umzugehen. Die ersten beiden, Ablehnung und Stand Aside (Konsensstufe 3), erlauben, Vorbehalte zu äußern und die Gruppe mit der Entscheidung weitermachen zu lassen.
* ''Ablehnung'': „Finde ich nicht gut, aber ich kann damit leben und werde es auch mittragen“.
* ''Stand Aside'': „Ich persönlich mache das nicht mit. Aber ich werde andere nicht davon abhalten“. Ich bin dann nicht für die Konsequenzen verantwortlich. Das sollte im Protokoll festgehalten werden.
* ''Veto / Großer Einwand:'' Blockiert den Vorschlag. Du sagst nicht „Ich finds echt nicht gut“ oder „Ich fand den anderen Vorschlag besser“ - du sagst „Ich kann mit dem Vorschlag nicht leben, und hier ist warum...!“ Die Gruppe kann das Veto entweder akzeptieren, dann ist der Vorschlag vom Tisch. Das kann auch gut sein, um eine Diskussion zu beenden, die sich schon ewig im Kreis dreht. Oder sie kann entscheiden, dass sie es trotzdem machen will, und wenn sich der Vorschlag nicht so ändern lässt, dass das Veto zu einem Stand Aside wird, muss sich die Gruppe teilen.
*''Agree to disagree:'' Entscheidung, dass eine Entscheidung jetzt nicht getroffen werden kann. Wenn es doch sein muss, sind die Möglichkeiten: Würfeln, eine Person entscheiden lassen, Rollentausch, Vorschlag aufsplitten, Grundsatzdiskussion, Mediation, Mehrheitsentscheidung.
*''Gruppe verlassen:'' Wenn eine Person oder Teilgruppe ständig anderer Meinung ist als der Rest der Gruppe, macht es Sinn sich zu trennen – für kurz, den Rest der Aktion, für länger oder für immer. Unter freien, gleichen Menschen mit unterschiedlichen Positionen kommt so was vor, das ist nicht schlimm. Spannend ist jetzt, wie die Ressourcen verteilt werden, und die Trennung respektvoll geschieht.

|Description:|Intelligently limit the number of backup files you create|
|Version:|3.0.1 ($Rev: 2320 $)|
|Date:|$Date: 2007-06-18 22:37:46 +1000 (Mon, 18 Jun 2007) $|
|Author:|Simon Baird|
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
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)$/,

		// 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 {
				var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
				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));


Konsens [[wiki|http://de.wikipedia.org/wiki/Konsens#Konsens_in_der_politischen_Theorie]]
[[Widerstands Stimmen Rechner|http://www.sk-prinzip.net/konsensieren/]]
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Date:''|mar 17, 2007|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 return bidix.core.loadRemoteFile(url,callback,params);
MPTW is a distribution or edition of TiddlyWiki that includes a standard TiddlyWiki core packaged with some plugins designed to improve usability and provide a better way to organise your information. For more information see http://mptw.tiddlyspot.com/.
[[hallo]] [[Themen |Plakate/ Themen/ Arbeitsgruppen]] [[Protokolle|protokoll]] [[Beteiligte |leute]]
Name: MptwBlack
Background: #000
Foreground: #fff
PrimaryPale: #333
PrimaryLight: #555
PrimaryMid: #888
PrimaryDark: #aaa
SecondaryPale: #111
SecondaryLight: #222
SecondaryMid: #555
SecondaryDark: #888
TertiaryPale: #222
TertiaryLight: #666
TertiaryMid: #888
TertiaryDark: #aaa
Error: #300

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


	mptwCollapse: {
		handler: function(place,macroName,params) {
			createTiddlyButton(place, params[0] == '+' ? '\u25AD' : '\u25AC', 'collapse/uncollapse', function(){

/* 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%;     }"


|Description:|Miscellaneous tweaks used by MPTW|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
!!Note: instead of editing this you should put overrides in MptwUserConfigPlugin
var originalReadOnly = readOnly;
var originalShowBackstage = showBackstage;

config.options.chkHttpReadOnly = false; 		// 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.5.3";


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: MptwGreen
Background: #fff
Foreground: #000
PrimaryPale: #9b9
PrimaryLight: #385
PrimaryMid: #031
PrimaryDark: #020
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

Name: MptwRed
Background: #fff
Foreground: #000
PrimaryPale: #eaa
PrimaryLight: #c55
PrimaryMid: #711
PrimaryDark: #500
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

|Description|Mptw Theme with some rounded corners (Firefox only)|



{ -moz-border-radius: 1em; }

.tab {
	-moz-border-radius-topleft: 0.5em;
	-moz-border-radius-topright: 0.5em;
#topMenu {
	-moz-border-radius-bottomleft: 2em;
	-moz-border-radius-bottomright: 2em;


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

|Description|Mptw Theme with the default TiddlyWiki PageLayout and Styles|
Name: MptwTeal
Background: #fff
Foreground: #000
PrimaryPale: #B5D1DF
PrimaryLight: #618FA9
PrimaryMid: #1a3844
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #f8f8f8
TertiaryLight: #bbb
TertiaryMid: #999
TertiaryDark: #888
Error: #f88
|Description|Mptw Theme including custom PageLayout|

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

<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 class='headerForeground'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<!-- 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 id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>

<div class="uncollapsedView">

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

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

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

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


<div class='toolbar'>
	<span macro="showWhenTagged systemConfig">
		<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></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='newHere label:"new here"'></span>
	<span macro='newJournalHere {{config.mptwJournalFormat?config.mptwJournalFormat:"MM/0DD/YY"}}'></span>
	<!--span macro='mptwCollapse -'></span-->

<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>


/* 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;
.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;

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

/* more subtle tiddler subtitle */
.subtitle {
	font-size: 90%;
	color: [[ColorPalette::TertiaryMid]];
.subtitle .tiddlyLink {
	color: [[ColorPalette::TertiaryMid]];

/* a little bit of extra whitespace */
.viewer {

/* 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 {
/* undo the above in OptionsPanel */
#sidebarOptions .sliderPanel br {

/* horizontal main menu stuff */
#displayArea {
	margin: 1em 15.7em 0em 1em; /* use the freed up space */
#topMenu br {
	display: none;
#topMenu {
	background: [[ColorPalette::PrimaryMid]];
#topMenu {
#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 {
.selected .toolbar {

/* 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 {

/* makes theme selector look a little better */
#sidebarOptions .sliderPanel .select .button {
#sidebarOptions .sliderPanel .select br {

/* 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 */


|Description|Mptw Theme with a reduced header to increase useful space|


<!-- horizontal MainMenu -->
<div id='topMenu' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<span refresh='content' tiddler='SiteTitle' style="padding-left:1em;font-weight:bold;"></span>:
<span refresh='content' tiddler='MainMenu'></span>
<div id='sidebar'>
	<div id='sidebarOptions'>
		<div refresh='content' tiddler='SideBarOptions'></div>
		<div style="margin-left:0.1em;"
			macro='slider chkTabSliderPanel SideBarTabs {{"tabs \u00bb"}} "Show Timeline, All, Tags, etc"'></div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>

For upgrading. See [[ImportTiddlers]].
URL: http://mptw.tiddlyspot.com/upgrade.html
|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;

|Description:|Creates the new here and new journal macros|
|Version:|3.0 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
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);


|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Version:|1.1.1 ($Rev: 2263 $)|
|Date:|$Date: 2007-06-13 04:22:32 +1000 (Wed, 13 Jun 2007) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
!!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);
	var tiddlerElem = story.getTiddler(title);
	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++)
	return false;


<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 class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<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 id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Date:''|Apr 19, 2007|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			// checkbox linked with this password "save this password on this computer"
			// text savePasswordCheckboxLabel
		onChange: config.macros.option.genericOnChange

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
		return config.options[name] ? "true" : "false";

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
		set: function(name,value) {config.options[name] = decodeCookie(value);}

// need to reload options to load passwordOptions

if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

		pasPassword: "Test password"
Offene Grundsätze-Wunschliste

''Soziale Grundsätze''
*Soziales/Solidarisches Miteinander
*Offen für Kritik 
*Aus Fehlern lernen können; nicht einfahren auf ein gutes System, immer reflektieren, veränderbar bleiben
*Keine Meinungen aufzwingen 
*Offen für alle Menschen
**Raus aus dem Studi-Umfeld
**Offenheit für möglichst viele versch. Gruppen
*Hilfe und Vernetzung (mehr als nur Essen, auch gegenseitige Hilfe)
*Soziale Wärme
*Respekt (lieb sein miteinander)
*Sharing is caring!

*Her mit dem schönen Leben!
*Every heart is a revolutionary cell
*Grenzen sprengen
*Zuhören, abwarten und Tee trinken und weitergehen
*Paradigmenwechsel jetzt!
*Sharing is caring!

*Nicht-diskriminierendes Verhalten
*Nicht hierarchisch
*Anti-kapitalistisch (was heißt das?)
**Konsummonopole sprengen
**Nicht gewinnorientiert

*Nicht hierarchisch
*Direkt und unabhängig
*Freie Räume schaffen
* „Diktatur des Proletariats“: wer arbeitet hat gewisse Entscheidungsfreiheit, sonst muss mensch bei jedem Handgriff das nächste Plenum abwarten
*Organisch (Funktionen verändern sich, können zu einem best. Grad unabhängig funktionieren) – adaptiv (anpassungsfähig, veränderbar) – wachsend (Größe)
*Monatsplenum, ohne unentschuldigtes Fehlen zumindest bei Wiederholungstäter*innen?? (Widerspruch zu Antishierarchisch)
*Zeit und Geld
**jedeR gibt, was er/sie kann; freier Mitgliedsbeitrag (freie Preise)
**Sich mit einbringen (können)
**Alternative für Leute mit wenig Zeit: z.B. Ersatzperson hinschicken und diese dafür mal bekochen. 
**Aber nicht als Zwang, jedeR so viel wie möglich
**10 Stunden pro Monat 
**10 Stunden pro Monat pro Person zu viel?
**Zeit statt Geld hergeben
**Bezug von Lebensmitteln auch für Leute, die sich zeitlich nicht einbringen können um die Vorteile des Projekts nicht nur unserer Gruppe vorzubehalten

*Fair und regional vor bio 
*Energiebedarf minimieren bei Lieferung, Heizung und Strom (e.g. Lastenfahrrad)

*Entfremdete Erzeuger*innen/Verbraucher*innen-Beziehung aufbrechen
*Direkte Verbindung Erzeuger/Konsument*in

''Produkte aus Übersee?''
*Auch in Übersee gute Projekte unterstützen 
*Auch in Übersee haben’s Bauern schwer.  Bio aus Übersee schließt oft aus  Fairtrade? (was ist gemeint?)
*Produkte die es bei uns nicht gibt, die bei uns nicht angebaut werden
*Wertschöpfung sollte vor Ort bleiben (so viele Schritte wie möglich bei Produzent*innen)
*Avocados, Kokosnüsse?
**Libertad? Cooles Kollektiv aus Mexiko
**EZA – Fair Trade

''Wie gehen wir mit Verstößen gegen Grundsätze um?''
*Diskutieren, erstmal ansprechen 
*Braucht anwesende Coopies (wenn jemand nicht kommt, kann man nicht mit ihm/ihr reden)
*Müssen Grundsätze kanonmäßig niedergeschrieben werden?

''Kein Gott, kein Staat, kein Fleischsalat?!''
*Vielleicht 1 mal pro Monat Bestellung?
*Vl nicht in unserem Lager, aber über unsere Foodcoop organisierbar?
*Lieber Bio als Massentierhaltung
*Gesundes Fleisch ist ok?
*Bitte nur in Maßen 
*Keine Lagerung

''Andere Baustellen:''
PR, Werbung, Medien?
Sabine, Andrej, Clemens, Christoph, Resi, Elias//

**Lieferung (wenn möglich) vs Abholung (auf  Märkten)
**wenn möglich ohne Autos (bei welchen Mengen?)
*''Raum/ Location''
**Art der Raumaneignung
***Mieten, Kaufen, squaten, Zwischennutzen,
***MA 42????
***Wer unterschreibt den Vertrag

*''Konkrete Objekte''
**Czernipassage 47mq 350€ U1 Nestroyplatz
**Ladys Bar zirkusgasse 37
**Ecke Zirkusgasse Novaragasse
**Bei unseren Hausverwaltungen fragen
**über den 2. Bezirk (zb. 20.) hinaus
**[[Das Dorf]] beim Kanal 3. Bez.
**kleine mohrengasse - versteigerung
**der Keller im WERK, keine miete, etwas arbeit und vermutlich trocken

**Platz vor dem Laden
**Zusatzraum für mehr als Nahrung
**gross genug für gemeinsame Treffen
**Luftfeuchtigkeit → Schimmel

*''Einrichtung / Gestaltung''
**Kühler für Lager
**2nd Hand Einrichtung
**Arbeit auf freiwilliger Basis (nicht jeder hat Zeit)
**organisierte Arbeitsaufteilung (Arbeitsgruppen,..)
**Wohlfühlen (freiwillig)
**kontinuität soll bestehen
**jeder übernimmt mal was
**Verpflichtungen vermeiden	

**Wie organisiert (Verein, AG's, Plenum)
**mitarbeit auf den Bauernhöfen
**routierende Arbeitaufteilung
**Preis vs freiwillige Spende
**professionelles Auftreten um Interessierte aus allen Gesellschaftsschichten anzusprechen
**Online ja/ nein
**Logistik, Steuern

**mit anderen Coops kooperieren
**online abstimmen
**Ideen zu nachhaltigem Lebensstil

*[[Wie Entscheidungen treffen, kommunizieren]]

|Description:|Provides a new date format ('pppp') that displays times such as '2 days ago'|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
* 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'; 


|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
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");
		var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
		if (excludeTiddler)

	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,
			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)
		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] + ")";
				var theDropDownBtn = createTiddlyButton(theListItem," " +

	// 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; }",

	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;



|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Version:|3.0 ($Rev: 5501 $)|
|Date:|$Date: 2008-06-10 23:11:55 +1000 (Tue, 10 Jun 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
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) {
		for (var i=0;i<tiddlers.length;i++) {

	renameTag: function(oldTag,newTag,tiddlers) {
		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

	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":""])))

					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":""])))
			return this.removeTiddler_orig_renameTags(title);


	init: function() {



|Description:|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|
|Version:|3.0 ($Rev: 5502 $)|
|Date:|$Date: 2008-06-10 23:31:39 +1000 (Tue, 10 Jun 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
To use these you must add them to the tool bar in your EditTemplate

	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);



|Description:|Lets you easily switch theme and palette|
|Version:|1.0.1 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
* 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. 
* {{{<<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: {

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

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);
	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);
	return stopEvent(e);

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

config.macros.selectTheme.updatePalette = function(title)
	if (title != "") {
		if (title != "(default)")

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('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(); });


wiki für interne notizen
foodcoop leopoldstadt
foodcoop treffen 23. märz 2011
zeit: 20:45-23:00


Stille diskussion/brainstorming
fragen auf plakaten (30 mins)
gedanken zu plakaten notieren; fragen stellen, ergänzen; nicht sprechen nur schreiben; markierungen mit färbiges klebeband (ev. später)

plakate gestalten

besprechung in der großen runde:
filtern der plakatideen bis 23 uhr:
Wie wollen wir Entscheidungen treffen? Wie kommunizieren?

Varianten: quantifizieren des Widerstandes 1-10 Punkte; kleinste gemeinsame Vielfache; Veto einlegen gegen Varianten; Varianten abändern → Einwand fallen lassen oder Variante wird gestrichen; zweitgereihte Variante hat Vorzug; 
per e-mail abstimmen wenn man verhindert ist bei plenum; 
zwei Varianten mit relativ wenig widerstand → mind. 1 punkt unterschied zwischen varianten;
vetorecht: blockierung durch einen? Konsensfindung, ausdiskutieren, bis jeder mit der lösung zufrieden ist; erfahrungswerte: funktioniert!
Diskussionen nur bei großen themen; lösung duch diskutieren; wunsch: methode dass jeder gleich gehört werden kann; durch zahlen objektivieren; unterschiedliche abstimmungsverfahren für verschieden komplexe themen; im vorfeld per e-mail die diskussionspunkte angeben → entscheidung ob man zum plenum geht oder nicht;

systemisches konsensieren
Abstimmung mit unterschiedlichen Gewichtungen

Ideen: Arbeitsgruppen zur Analyse von Plakaten; wichtige Themen herausfiltern; verschieden Tools zwischen Klein- und Großgruppen; 
Plakate nehmen, nochmal alle Themen aufschreiben, zusammenfassen, nicht werten!
Nächstes Treffen: bis dorthin in Arbeitsgruppen an Plakatthemen arbeiten; im Plenum weiterdiskutieren; 
die die an Idee arbeiten bekommen gewisses Recht;

arbeitsgruppen konsensual mit themen beschäftigen; varianten ausarbeiten; varianten mit SK (systemisches konsensuieren) im plenum entschieden und „abgeschickt“ werden;
simple abstimmung funktioniert in vielen fällen; funktionert nur wenn es keine gegenstimme gibt; im vorfeld diskussion; sobald es eine gegenstimme gibt → andere konsensfindung;
plakate überarbeiten in kleingruppen, ev. Schon bewerten; schauen ob konsens funkt.;
abstimmungen geht gar nicht (meinung); lässt gewisse stimmen komplett ausser acht;
fokus auf plakat!!!
stimmungsbild: zustimmung, veto, enthaltung, gegenstimmen; danach ev. Weiter diskutieren;
zeichen in plenas:
hände heben + schütteln oben	zustimmung
hände heben + schütteln mitte	mittelmässig
hände heben + schütteln unten 	dagegen

wann stimmungsbild? Einführen oder nicht?
Moderation für plenum? Rednerinnenliste!
Aufarbeitung der themen für nächstes plenum; 
heute: versuch der konsensfindung?
Aufteilen der Plakatthemen in Kleingruppen (5-6 leute); jeder hat andere Interessen; gemeinsame Abstimmung in plenum; 
Methode des systemischen konsensieren anwenden und prüfen obs funktioniert;
heutige einigung auf systemisches konsensieren; entscheidungen wie wir uns entscheiden!
Ausprobieren; später näher bearbeiten;
entscheidungsschritt heute; konkrete entscheidung nächstes plenum;
SK bei großen entscheidungen
konsens klar, immer
abstimmung fällt raus
stimmungsbild ok

freiraum zu abänderung soll bleiben; nicht fix bestimmen, laufende abänderungen sind möglich; 

gruppeneinteilung zu plakaten:
liste per mail, damit sich leute dazuschreiben können die nicht anwesend waren; 
fotos von plakaten an mail hängen; 
kommunikationsansprechpartner pro plakatthema
entscheidungsfragen bei punkten wie zb brot backen? Widerstandspunkte vergeben; 
informationsaustausch; es müssen nicht immer entscheidungen gefunden werden;
kleingruppen: widersprüche herausfiltern; fragen zu stichworten überlegen; vorbereiten; präsentieren; in plenum ausdiskutieren mit SK; bzw. alleine vorbereiten? Gruppe ist wichtig; zusammenreden wer wieviel machen möchte; beginnen zu recherchieren; 
ca. 30 leute; 5 personen/gruppe; möglichkeit für treffen;
nächstes datum, doodle, wer macht was
einzelne punkte von plakat aufteilen, clustern, eigene gruppen daraus bilden;
plakat strukturieren, am computer erfassen; digital bearbeiten; präsentation wird gruppen überlassen; treffen von allen gruppen gemeinsam; zuerst gruppenarbeit, danach disussion in der großgruppe; 
nächstes treffen: namenspickerl; 

termin für nächstes treffen: in 2 wochen
liste von e-mail adressen; protokoll + foto herumschicken; 
e-mail verteiler machen; e-mail liste machen; (andrej)
doodle für terminfindung (christoph)
*Wir beginnen mit Thema „Entscheidungen finden und Kommunizieren“

Frage: Wann Stimmungsbild einsetzen?    
Konsens: Als schnelleres Entscheidungsmittel , z.B. vor SK

Frage: Moderation Ja/Nein?
	Vorschlag:  Ja, Mit rotierendem System
	 	Ergänzung: Aber spontan entscheidbar, ob derjenige Moderieren möchte oder 					nicht, keine Verpflichtungen.
		Ergänzung: Mods übernehmen Rednerinnenliste.
	Vorschlag: 2 Mods, außer bei sehr kleiner Gruppe
Stimmungsbild: JA, alle Vorschläge und Ergänzungen angenommen

Frage: Handzeichen Ja/Nein?
	Vorschlag: Wir einigen uns auf ein paar davon.	
		Ergänzung: Aber grundsätzlich alle HZ verwendbar.
Konsens: Wir machen uns noch keine HZ aus, die über „normales Aufzeigen“ hinausgehen,  
	   „Ad Hoc“ Override der Rednerinnenliste ist aber sowohl mit dem entsprechenden HZ als auch 	      	   durch Verteilung des Mod nach eigenem Ermessen möglich. 
		Ergänzung: Das funktioniert nur wenn mit dem Handzeichen verantwortungsvoll 				        umgegangen wird, bzw. die Mod das „Ad Hoc“ Wort  gerecht verteilt.

Frage: Wiki – offen/geschlossen?
	Vorschlag: Wiki bzw. Tiddly wird geführt, aber alle Infos müssen auch offline, in den 				      Besprechungen präsent sein.
Stimmungsbild: JA

-------------------------Anaité, Christoph, Nora bilden „AG Wiki“----------------------------------------------------------

Frage: Vernetzung mit anderen FoodCoop über gemeinsame Internet Platform?
	Vorschlag: Thema erst behandeln, wenn wir unsere „eigene Linie“ herausgearbeitet haben.
Konsens: Vernetzung derweil höchstens über gemeinsames Portal.

Frage: Softwarebasierte Lösung für Bestellungsabläufe? (Foodsoft)
Konsens: JA, Das ist besser als e-mail basierte Bestellung.
	Ergänzung: Evtl „grüner“ Server verfügbar (Nora)

Frage: Konzepte der „Gewaltfreien Kommunikation“ offiziell in unsere Besprechungen aufnehmen?
Stimmungsbild: Konzepte der GK werden nicht „offiziell“ in unsere Kommunikationsstruktur eingebaut. 			Wir versuchen es „so“, und greifen bei Bedarf darauf zurück.
	Ergänzung: Es besteht die Möglichkeit Kurse für GK-Techniken zu buchen.

Frage: Alternative Kommunikations- u. Diskussionsformen wie „Theatermethode“, Dramatische Spiele,   	oder „Stille Diskussion“ als Alternative bzw. Ergänzung zu klassischer Plenum-Struktur?
Stimmungsbild: JA

Frage: Nicht-organisiertes Kennenlernen innerhalb der Gruppe, in einem „natürlichen“ Rahmen, wie 	Konzert, Party etc..   anstatt „Kennenlern-Spiele“.          (z.B. Aktionstag der IE)
Stimmungsbild: JA
		Ergänzung: Non-FoodCoop-Veranstaltungen auch bekannt geben, um persönliches 				        Kennenlernen zu fördern.
			Kommentar: Bitte nicht Verteiler dafür verwenden.
					Vorschlag: Verteiler verwenden, aber in Betreffzeile: [Party]
					Vorschlag: Seperater Verteiler für Veranstaltungen
					Vorschlag: Wiki für Veranstaltungen
					Vorschlag: Eigenen Veranstaltungskalender online einrichten

''• Auflockerungs- bzw. Kennenlernspiele:''
AG Interaktion erstellt Pool an Spielen, auf das zurückgegriffen werden kann.
Spiele sollen nicht 'steif' wirken oder künstlich, sondern die Kommunikation zwischen den FC Mitgliedern fördern, eine Auflockerung zwischendurch sein, um besser arbeiten zu können, bzw. auch eine Alternative zu klassischen Arbeitsmethoden bieten (wie z.B. Brainstorming mittels 'stiller Diskussion')

Kurze Spiele könnten auch am Plenumsbeginn stehen - z.B. mit Namen, Befindlichkeit,... Ist auch Möglich-keit, neue Leute kurz vorzustellen und in die Gruppe einzuführen (nicht näher, das machen 'Buddies' -> siehe unten)

AG Interaktion stellt auch Liste möglicher Handzeichen während Diskussion zusammen

Momentan bei AG Interaktion: Lena, Sabine, Tete, Alex

''• Externe Interessierte''
Momentan (während Beginnphase der FC) sollten sie auf alle Fälle zum Plenum kommen.

Für später Umsteigen auf Buddysystem (funktioniert auch jetzt schon): wenn Neulinge keine direkte Kon-taktperson in der FC haben, bekommen sie einen Buddy (freiwillig, wer gerade Zeit hat), der sie informiert und erste Kontaktperson darstellt.

Frage der FC Maximalmitgliedszahl auf. -> wird bei Grundsätze besprochen

''• WIKI - offen oder geschlossen''
Soll für Externe einsehbar sein (wichtige Infos zum Orientieren, Kennenlernen,...)
Aber nur für Interne bearbeitbar (schützt auch vor Manipulation)
Persönliche Daten nur für Interne - werden geschützt
Anfänglich bleibt ganzes Wiki geschlossen, was genau veröffentlicht wird, wird im Laufe der nächsten Plena noch beschlossen (Unterstützung durch AG Wiki)

''• Entscheidungsfindung''
Ungefährer Leitfaden (kann an Situation angepasst werden):
Stimmungsbild (um zu sehen, ob weitere Diskussion nötig) - wenn Gegenstimmen dann:
Weitere Diskussion bzw.
Systemisches Konsensieren (auch 'Nichts'/keine Aktion soll als Option vorhanden sein)
Dadurch: entweder klare Entscheidung, oder Einschränkung auf Favoriten

Ev. reflektieren, wie das funktioniert in 2-3 Monaten, um Mögliche Schwachstellen zu finden, falls sie z.B. Leute übergangen fühlen etc.

Entscheidungen bei geringer Zahl an Anwesenden:
Anwesende müssen einschätzen, ob Entscheidung sinnvoll oder nicht (wenn es nur eine kleine Gruppe be-trifft ok, bei größeren Entscheidungen sollte eine Vertagung auf nächstes Plenum in Betracht gezogen wer-den)
Nach Plena, bzw. wenn Entscheidungen gefällt werden müssen alle informiert werden worum es ging, wie entschieden wurde - bis zum nächsten Plenum ist Zeit Einspruch zu erheben. Dann gilt es als akzeptiert.
Vetos: sind mit Argumentation immer möglich. (nicht einfach 'Nein, das will ich nicht, weiß aber nicht wa-rum'.)

Es kann alles immer wieder umgeworfen und hinterfragt bzw. neu durchdiskutiert werden.

''• Plenumsvorbereitung''
Themen werden schon über Wiki im Vorhinein gesammelt (jeder kann Ideen, Wünsche dazuschreiben) - man hat in Etwas Überblick, um was es gehen wird.
Überlegungen, ob es ein Prioritätensystem geben soll (muss noch diskutiert/ausprobiert werden)

Postkasten / Meckerbox, wo Beschwerden und Ähnliches deponiert werden kann (eines mit Tagesordnung oder extra?!)

Es gibt eine Person (Sammla, Ombudsmann,...wie auch immer genannt), der Verantwortung dafür trägt, die Liste in irgendeiner Form zum Plenum mitzubringen.

Vor dem Plenum wird bisherige Liste vorgelesen und kann noch ergänzt werde (wichtig für Personen die keinen Zugang zu Internet haben)

AG Wiki kümmert sich um Erstellung (ev. Vorbereitung diverser Möglichkeiten) dieser Tagesordnung-Sammelbox. Übernimmt auch die Sammlafunktion für nächstes Plenum.

''• Abschlussrunde''
Christoph übernimmt Doodle für nächstes Plenum.

#Vorstellung [[SK-Grundlagen|Systemisches Konsensieren]]
#Prioritätenreihenfolge festlegen?
#Termin nächstes Plenum

''SK-Grundlagen'' (http://www.sk-prinzip.net)
Die Gruppe entwickelt möglichst viele Vorschläge und wählt dann jenen aus, der dem Konsens und damit dem Interessenausgleich am nächsten kommt.
Das ist jener Vorschlag, der in der gesamten Gruppe die geringste Ablehnung und daher auch das geringste Konfliktpotenzial erzeugt. Es ist daher unter den vorhandenen Vorschlägen gleichzeitig derjenige, der den besten Interessenausgleich unter den Beteiligten erzielt.
In vielen Fällen müssen außer dem konsensierten Vorschlag noch weitere konsensnahe Vorschläge in die Entscheidungsfindung mit einbezogen werden. Daher lautet die allgemeinste Formulierung des SK-Prinzips:
Die Gruppe entwickelt möglichst viele Vorschläge und ordnet diese sodann hinsichtlich ihrer Nähe zum Konsens.
Diese Reihung der Vorschläge ergibt sich beim "Konsensieren" von selbst.

''Systemisches Konsensieren''
#'' Möglichst viele Vorschläge werden entwickelt'' (wenn möglich wird auch eine Nulllösung mit einbezogen: z.B. "Alles soll so bleiben, wie es ist")
#''Die Vorschläge werden von allen Beteiligten bewertet''
**Beim Konsensieren hat jeder Gelegenheit, seinen Widerstand auszudrücken 
**Beim Bewerten kann jedes Gruppenmitglied seine subjektive Ablehnung, Unzufriedenheit, Widerstände, Ängste, Bedürfnisse und Nöte gegenüber jedem einzelnen Vorschlag durch Widerstandstimmen (W-Stimmen) ausdrücken:
***//0 W-Stimmen bedeutet:// Ich habe keinen Einwand gegen diesen Vorschlag.
***//10 W-Stimmen bedeuten:// Dieser Vorschlag ist für mich unannehmbar.
***//Zwischenwerte werden nach Gefühl vergeben.//
#'' Der Gruppenwiderstand wird errechnet.'' Für jeden Vorschlag werden die W-Stimmen zusammengezählt, die er von allen Beteiligten erhalten hat. Dies ist sein Gruppenwiderstand.
#''Der Vorschlag mit dem geringsten Gruppenwiderstand kommt dem Konsens am nächsten.'' Er erzeugt in der Gruppe das geringste Konfliktpotential und gilt als „konsensiert". In komplexen, sensiblen oder besonders wichtigen Fällen ist es notwendig, nicht nur den konsensierten Vorschlag zu betrachten, sondern auch alle, deren Gruppenwiderstand sich nur wenig von dem konsensierten Vorschlag unterscheidet 
#'' Das Verfahren macht keinerlei Voraussetzungen über den guten Willen der Beteiligten.'' Da es stets einen Vorschlag mit geringstem Gruppenwiderstand gibt, ist Konsensieren nicht blockierbar, sondern liefert stets eine Lösung. Falls mehrere Vorschläge den gleichen geringsten Gruppenwiderstand erhalten, können unter diesen andere Kriterien eingesetzt werden, um zu einem eindeutigen Entscheid zu kommen.

Vier freunde Beispiel auf der http://www.sk-prinzip.net/ueber-das-sk-prinzip/ein-beispiel.html?view=article&article=161">SK Webseite 

|!Konsensfragen |!Person1|!Person2|!Person3|!Person4|!ERGEBNIS|
|Roggenmischbrot mit Schrotanteil|1|3|5|0|9|

Was meiner Meinung nach vom Ergebniss ablesbar sein sollte:
*Das Mitglied steht hinter der Entscheidung und trägt sie vollinhaltlich mit.
*Das Mitglied trägt die Entscheidung mit, äußert aber Bedenken dazu (welche zumeist protokolliert werden müssen).
*Das Mitglied enthält sich, es überlässt den anderen die Entscheidung und trägt sie mit.
*Das Mitglied kann die Entscheidung nicht mittragen, äußert schwere Bedenken (die zumeist protokolliert werden müssen), verzichtet aber auf einen formalen Einspruch, um die Entscheidungsfähigkeit der Gruppe nicht zu behindern.
*Das Mitglied steht beiseite. Es kann den Vorschlag weder zustimmen noch mittragen. Es möchte jedoch nicht blockieren und stellt sich deswegen auf die Seite.
*Das Mitglied erhebt formalen Einspruch gegen den Entscheid (vgl. Veto). Bereits wenn dieser Fall für nur ein einziges Gruppenmitglied zutrifft, gibt es keinen Konsens in der Gruppe. In der Praxis wird die Schranke für Dissens zuweilen höher gesetzt, so beträgt sie bei Attac 10 Prozent der Gruppenmitglieder; unter 10% Dissens ergibt sich als Gesamteindruck Gruppenkonsens.
<<allTags excludeLists>>
<<tabs txtMoreTab "Tags" "All Tags" TabAllTags "Miss" "Missing tiddlers" TabMoreMissing "Orph" "Orphaned tiddlers" TabMoreOrphans "Shad" "Shadowed tiddlers" TabMoreShadowed>>
<<allTags excludeLists [a-z]>>
|Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
|Version:|3.3.1 ($Rev: 9828 $)|
|Date:|$Date: 2009-06-03 21:38:41 +1000 (Wed, 03 Jun 2009) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
See http://mptw.tiddlyspot.com/#TagglyTagging


	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];
				expr += "tiddler.tags.contains('%0')".format([tokens[i].replace(/'/,"\\'")]); // fix single quote bug. still have round bracket bug i think

		if (debug)

		return '('+expr+')';


	getTiddlersByTagExpr: function(tagExpr,sortField) {

		var result = [];

		var expr = tagExpr.parseTagExpr();

		store.forEachTiddler(function(title,tiddler) {
			if (eval(expr))

			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) {

		// 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);

	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() {
					return false;
			else {
				onclick = function() {
					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() {
				return false;

		// hide button because commas don't have columns
		if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
			createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");

	makeColumns: function(orig,numCols) {
		var listSize = orig.length;
		var colSize = listSize/numCols;
		var remainder = listSize % numCols;

		var upperColsize = colSize;
		var lowerColsize = colSize;

		if (colSize != Math.floor(colSize)) {
			// it's not an exact fit so..
			upperColsize = Math.floor(colSize) + 1;
			lowerColsize = Math.floor(colSize);

		var output = [];
		var c = 0;
		for (var j=0;j<numCols;j++) {
			var singleCol = [];
			var thisSize = j < remainder ? upperColsize : lowerColsize;
			for (var i=0;i<thisSize;i++) 

		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
		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);
					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++)

		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)

		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")
		else if (leftOverOutput != "")
			// leftovers first...

		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...

		return this.drawTable(place,


	// used to build site map
	treeTraverse: function(title,depth,sortBy,sortOrder,isTagExpr) {

		var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

		if (sortOrder == "desc")

		var indent = "";
		for (var j=0;j<depth;j++)
			indent += "*"

		var childOutput = "";

		if (depth > this.config.siteMapDepthLimit)
			childOutput += indent + this.lingo.tooDeepMessage + "\n";
			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;
			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

	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

				var tag = getParam(parsedParams,"tag");
				var expr = getParam(parsedParams,"expr");

				if (expr) {
				else {
					if (tag) {
					else {

			refresh: function(place) {
				var title = place.getAttribute("title");
				var isTagExpr = place.getAttribute("isTagExpr") == "true";
				var showEmpty = place.getAttribute("showEmpty") == "true";
				var countFound = config.taggly.getTiddlers(title,'title',isTagExpr).length
				if (countFound > 0 || showEmpty) {
					var lingo = config.taggly.lingo;
					if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
								isTagExpr ? lingo.labels.exprLabel.format([title]) : lingo.labels.label.format([title]));
						if (countFound == 0 && showEmpty)

	// 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,",
" {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; }",

	init: function() {
		config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;



By Saq Imtiaz

// 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");
			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;


|Description:|Makes a checkbox which toggles a tag in a tiddler|
|Version:|3.1.0 ($Rev: 4907 $)|
|Date:|$Date: 2008-05-13 03:15:46 +1000 (Tue, 13 May 2008) $|
|Author:|Simon Baird <simon.baird@gmail.com>|
{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}
* TagName - the tag to be toggled, default value "checked"
* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler
* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'
(If a parameter is '.' then the default will be used)
* TouchMod flag - if non empty then touch the tiddlers mod date. Note, can set config.toggleTagAlwaysTouchModDate to always touch mod date
|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|
|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|
|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|
|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|
|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|
* If TiddlerName doesn't exist it will be silently created
* Set label to '-' to specify no label
* See also http://mgtd-alpha.tiddlyspot.com/#ToggleTag2
!!Known issues
* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing
* Should convert to use named params

if (config.toggleTagAlwaysTouchModDate == undefined) config.toggleTagAlwaysTouchModDate = false;


	toggleTag: {

		createIfRequired: true,
		shortLabel: "[[%0]]",
		longLabel: "[[%0]] [[%1]]",

		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			var tiddlerTitle = tiddler ? tiddler.title : '';
			var tag   = (params[0] && params[0] != '.') ? params[0] : "checked";
			var title = (params[1] && params[1] != '.') ? params[1] : tiddlerTitle;
			var defaultLabel = (title == tiddlerTitle ? this.shortLabel : this.longLabel);
			var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;
			var touchMod = (params[3] && params[3] != '.') ? params[3] : "";
			label = (label == '-' ? '' : label); // dash means no label
			var theTiddler = (title == tiddlerTitle ? tiddler : store.getTiddler(title));
			var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {
				if (!store.tiddlerExists(title)) {
					if (config.macros.toggleTag.createIfRequired) {
						var content = store.getTiddlerText(title); // just in case it's a shadow
						store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);
						return false;
				if ((touchMod != "" || config.toggleTagAlwaysTouchModDate) && theTiddler)
						theTiddler.modified = new Date();
				return true;


[[Systemisches Konsensieren]]
[[Abstimmung mit unerschidlichen Gewichtungen]]
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'foodcoop';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");

// create some shadow tiddler content

 "tiddlyspot password:",
 "<<option pasUploadPassword>>",

 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"

 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."

 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"

| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 07/04/2011 12:25:45 | Alex | [[/|http://foodcoop.tiddlyspot.com/]] | [[store.cgi|http://foodcoop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://foodcoop.tiddlyspot.com/index.html]] | . | ok |
| 07/04/2011 12:33:41 | Alex | [[/|http://foodcoop.tiddlyspot.com/]] | [[store.cgi|http://foodcoop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://foodcoop.tiddlyspot.com/index.html]] | . | ok |
| 07/04/2011 12:50:16 | Alex | [[/|http://foodcoop.tiddlyspot.com/]] | [[store.cgi|http://foodcoop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://foodcoop.tiddlyspot.com/index.html]] | . | ok |
| 07/04/2011 12:53:48 | Alex | [[/|http://foodcoop.tiddlyspot.com/]] | [[store.cgi|http://foodcoop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://foodcoop.tiddlyspot.com/index.html]] | . | ok |
| 07/04/2011 12:55:26 | Alex | [[/|http://foodcoop.tiddlyspot.com/]] | [[store.cgi|http://foodcoop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://foodcoop.tiddlyspot.com/index.html]] | . | ok |
| 07/04/2011 12:56:54 | Alex | [[/|http://foodcoop.tiddlyspot.com/]] | [[store.cgi|http://foodcoop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://foodcoop.tiddlyspot.com/index.html]] | . | ok |
| 07/04/2011 12:58:39 | Alex | [[/|http://foodcoop.tiddlyspot.com/]] | [[store.cgi|http://foodcoop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://foodcoop.tiddlyspot.com/index.html]] | . |
| 07/04/2011 13:00:22 | Alex | [[/|http://foodcoop.tiddlyspot.com/]] | [[store.cgi|http://foodcoop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://foodcoop.tiddlyspot.com/index.html]] | . |
| 07/04/2011 13:02:19 | Alex | [[/|http://foodcoop.tiddlyspot.com/]] | [[store.cgi|http://foodcoop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://foodcoop.tiddlyspot.com/index.html]] | . |
| 16/04/2011 19:01:55 | Sarah | [[/|http://foodcoop.tiddlyspot.com/]] | [[store.cgi|http://foodcoop.tiddlyspot.com/store.cgi]] | . | [[index.html | http://foodcoop.tiddlyspot.com/index.html]] | . |
|''Description:''|Save to web a TiddlyWiki|
|''Date:''|Feb 24, 2008|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'

// Environment

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
// Upload Macro

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);

config.macros.upload.action = function(params)
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			return false;
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			return false;
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;

// uploadOptions Macro

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
			uploadCaption = config.macros.upload.label.uploadLabel;
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
	options: [
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
	onCancel: function(e)
		return false;
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 

// upload functions

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
		if (bidix.debugMode) 
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
	if(onlyIfDirty && !store.isDirty())
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
	return r;

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
		} else {
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
	} else {

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
		} else {
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == 404)
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
		if (responseText.charAt(0) != '0')
			status = null;
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
	return r;

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;

// UploadLog
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
	return this;

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			this.tiddler.text = textArray.join('\n');		
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	// refresh and notifiy for immediate update
	store.notify(this.tiddler.title, true);

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
	this.addText(" "+status+" |");

// Utilities

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"

bidix.dirname = function(filePath) {
	if (!filePath) 
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));

bidix.basename = function(filePath) {
	if (!filePath) 
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;

// Initializations

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"

// Options Initializations

// Backstage
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}


<div class='toolbar' 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>
Bei der Beschreibung der Grundlagen des SK-Prinzips wird davon ausgegangen, dass jeder Vorschlag von jedem bewertenden Gruppenmitglied anhand einer zehnteiligen Ablehnungs-Skala von Widerstandsstimmen (W-Stimmen) bewertet wird.  Diese Skala ist  nicht bindend, auch andere Skalen sind möglich. Alle Skalen sollten jedoch bei 0 W-Stimmen beginnen und bis zu einer festen, positiven W-Stimmen-Obergrenze gehen.

Dabei bedeuten:
''0 W-Stimmen: Ich habe nichts gegen diesen Vorschlag einzuwenden.''
''W-Stimmen-Obergrenze: Ich lehne diesen Vorschlag entschieden ab.''
Zwischenwerte werden nach Gefühl vergeben. Jeder Wert kann mehrmals vergeben werden.

Manche Menschen haben einen Widerwillen gegen Zahlen. In solchen Fällen sollte man //sprechende Skalen// verwenden. Der Widerstand der Beteiligten wird dann in der sprechenden Skala ausgedrückt und erst zum Zwecke der Auswertung in Zahlenwerte umgewandelt. 
Bewährt hat sich die Skala:
*Kein Widerstand / keine Einwände (entspricht 0 W-Stimmen)
*Leichte Bedenken (entspricht 1 W-Stimme)
*Mittlere Bedenken (entspricht 2 W-Stimmen)
*Schwere Bedenken (entspricht 3 W-Stimmen)
*An der Grenze des Zumutbaren (entspricht 4 W-Stimmen)
*Auf gar keinen Fall (entspricht 5 W-Stimmen als W-Stimmen-Obergrenze)
Welche Skala auch immer man wählt, jeder Vorschlag sollte von jedem Beteiligten gemäß der gewählten Skala bewertet werden.
//sabine, gerhard, daniel, nora//

*Moderation (zwei Leute moderieren?)
*ProtokollantInnen (direkt ins Wiki schreiben)
*gewaltfreie Kommunikation (eventuell Fachinput)
**Forum Input Theater - Theater der Unterdrückten (Brasilien), Konflikte werden durchgespielt, Zuschauer können Lösungsvorschläge zurufen	
*Anfang des Plenums Vorstellungsrunde mit Namen und Erweiterung (Kundtun des Wohlbefindens und eigene Interessen, Ausbildung, Studienrichtung - Kennenlernen)

*''Externe Interessierte''
**woher bekommen Interessierte ihre Informationen?
**AG Ladendienst informiert
**Buddy (Vertrauensperson)
**Informationen auf der Webseite mit Kontaktmöglichkeit
*in Arbeitsgruppen Argumente ausarbeiten, dann die einzelnen Argumente im Plenum vorstellen
*dezentrales Kommunizieren - wiki/mailverteiler
*einfache Entscheidungen mit Stimmungsbild 
*komplexere Entscheidungen mit [[Systemisches Konsensieren]] (http://sk-prinzip.net/)
*Rätesystem - sind ja eigentlich Arbeitsgruppen
*Entscheidungsfindung wird im Wiki dokumentiert
** Dokumentation mit Passwort, also nur für Interne
** Dokumentation öffentlich, alle externe können mit einsehen 
*Wie entscheiden wir wenn nur 5 Leute im Plenum sind?
**es können nur Entscheidung getroffen werden, die nur die 5 Personen angehen - alle sind in z.B. in einer Arbeitsgruppe @@zumindest jene arbeitsgruppen vertreten die betroffen sind??@@
**Entscheidungen die alle etwas angehen werden
***Argumente werden im Wiki gesammelt, Entscheidung wird aufs nächste Plenum vertagt
***Entscheidungsfindung wird dokumentiert und ist für Nichtanwesende nach dem Plenum im Wiki Mail einsehbar. Sollten Einwände oder Unklarheiten auftauchen, können diese im Wiki konstruktiv formuliert und das Thema beim nächsten Plenum wieder aufgegriffen werden, bis eine Lösung gefunden wird
*sind Vetos möglich? 
**Vetos nur mit konstruktiven Lösungsvorschlägen?
**Vetos solange diskutieren bis Einigung gefunden wird
**einfache Entscheidung mit Stimmungsbild
**komplexere Entscheidungen mittels des systemischen Konsensieren
*Auswertung des systemischen Konsensierens mittels
**Widerstandsrechner http://www.sk-prinzip.net/wir-unterstuetzen-sie.html?view=article&article=143 - leider ist momentan noch nicht möglich die Entscheidungen online zu speichern - wird noch entwickelt
**google doc - tabelle anlegen - pro auch Abwesende können online teilnehmen, Ergebnis wird am Anfang des nächsten Plenums besprochen
**Excel Liste während des Plenums - sofortige Auswertung im Plenum

[[Tools zur Entscheidungsfindung]]

{{{schreibt einfach zwei eckige klammern [[ vor dem titel eines tiddlers der verlinkt werden soll und am ende ]] (auf mac zu finden mit "alt"+"5" für [[ oder "alt" + "6" für ]]}}}

das würde dann wie folgt aussehen: [[neuer test tiddler]] falls er dünn und kursiv geschrieben ist gibt es ihn noch nicht, kann aber erstllt werden in dem man einfach drauf klickt (bitte probieren) wenn es ihn gibt ist er dick geschrieben und eine verknüpfung.

*für hilfe könnt ihr [[hier|http://www.blogjones.com/TiddlyWikiTutorial.html#Welcome]] nachsehen. da gibt es informationen was tiddlywiki ist und wie text [[formatiert|http://www.blogjones.com/TiddlyWikiTutorial.html#HowToFormatText]] werden kann

z.b. ''dick'' __unterstrichen__ //kursiv// @@gemarkert@@
#auf "options" rechts das ''Passwort'' leopoldstadt eintragen
#ebenfalls auf "options" einen ''Namen'' eintragen, der zur Signierung dient
#wenn ''Änderungen'' gemacht werden unbedingt "save to web" klicken um diese auch hoch zu laden
#mit dem befehl "new tiddler" kann ein ''neuer datensatz'' erstellt werden (auch rechts im menü)
#jeder kann alles editieren (rechts im eck jeder weissen box) und tags (labels) zuweisen
#um die einzelnen datensätze (tiddlers) miteinander zu verlinken kann [[folgendes gemacht werden]]
#don't forget to "''save to web''"!
#um genau die seite die gerade geöffnet ist zu ''verlinken'': rechts im menü gibt es "permaview" damit kreiert sich in der adresszeile genau die url die man dann kopieren kann.

"; a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": "pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); //]]>