arquitecturas colectivas se está cargando ...

optimizado para firefox, requiere Javascript.
arquitecturas colectivas | arquitectures col·lectives | collective architectures - v 0.2 : paraderos + conectores | paradors + conectors | whereabouts + connectors
<!--{{{-->
<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]];}

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

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

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}
	
.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which 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 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[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'></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
<<importTiddlers>>
|''Type:''|file|
|''URL:''|www.nsa.gatech.edu|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://www.TiddlyTools.com/#DatePlugin|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://devpad.tiddlyspot.com|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|	http://tiddlywiki.abego-software.de/|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://tiddlywiki.bidix.info/|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://tw.lewcid.org|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
//Macro: allTagsExcept
//Author: Clint Checketts
//Version: 1.0 Sept 8, 2005

version.extensions.allTagsExcept = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};
config.macros.allTagsExcept = {tooltip: "Show tiddlers tagged with '%0'",noTags: "There are no tags to display"};

//usage: < < allTagsExcept systemConfig systemTiddlers > > This will show all tags but those listed (e.g. systemConfig and systemTiddlers

config.macros.allTagsExcept.handler = function(place,macroName,params)
{
	var tags = store.getTags();
	var theTagList = createTiddlyElement(place,"ul",null,null,null);
	if(tags.length == 0)
		createTiddlyElement(theTagList,"li",null,"listTitle",this.noTags);
	for (var t=0; t<tags.length; t++) {
            var includeTag = true;
            for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) includeTag = false;
            if (includeTag){
		var theListItem =createTiddlyElement(theTagList,"li",null,null,null);
		var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);
		theTag.setAttribute("tag",tags[t][0]);
           }
	}
}
[[alg-a]] + [[aptitude fm]] + [[atomos y bits]] + [[aulaabierta]] + [[bioforum]] + [[caldo de cultivo]] + [[coloco]] + [[célula cero]] + [[esta es una plaza]] + [[esto no es un solar]] + [[democracia]] + [[forum ribera besós / bisaucii. colectivo urbano]] + [[fábrica de sombreros]] + [[grup de participació]] + [[guillermo cruz]] + [[hackitectura]] + [[horteres]] + [[infoespai / moviments.net / altercoms sccl]] + [[ingràvid]] + [[judith albors]] + [[la casa invisible]] + [[la fundició]] + [[la matraka cultural]] + [[lur paisajistak]] + [[m-etxea]] + [[nautarquia]] + [[oscar guayabero]] + [[patio maravillas]] + [[pista digital]] + [[proyecta]] + [[ramón parramón / idensitat]] + [[recetas urbanas]] + [[re:farm the city]] + [[sostre cívic]] + [[straddle3]] + [[todo por la praxis]] + [[v de vivienda]] + [[vi·bok]] + [[wikiplaza]] + [[xarxa pel decreixement / col.lectiu crisi]]
/***
''Name:'' CalendarPlugin
''Version:'' <<getversion calendar>> (<<getversiondate calendar "DD MMM YYYY">>)
''Author:'' SteveRumsby

''Configuration:''

|''First day of week:''|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|
|''First day of weekend:''|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|

''Syntax:'' 
|{{{<<calendar>>}}}|Produce a full-year calendar for the current year|
|{{{<<calendar year>>}}}|Produce a full-year calendar for the given year|
|{{{<<calendar year month>>}}}|Produce a one-month calendar for the given month and year|
|{{{<<calendar thismonth>>}}}|Produce a one-month calendar for the current month|
|{{{<<calendar lastmonth>>}}}|Produce a one-month calendar for last month|
|{{{<<calendar nextmonth>>}}}|Produce a one-month calendar for next month|

***/
// //Modify this section to change the text displayed for the month and day names, to a different language for example. You can also change the format of the tiddler names linked to from each date, and the colours used.

// // ''[[Changes]] by ELS 2005.10.30:''
// // config.macros.calendar.handler()
// // ^^use "tbody" element for IE compatibility^^
// // ^^IE returns 2005 for current year, FF returns 105... fix year adjustment accordingly^^
// // createCalendarDays()
// // ^^use showDate() function (if defined) to render autostyled date with linked popup^^
// // calendar stylesheet definition
// // ^^use .calendar class-specific selectors, add text centering and margin settings^^

//{{{
config.macros.calendar = {};

config.macros.calendar.monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
config.macros.calendar.daynames = ["M", "T", "W", "T", "F", "S", "S"];

config.macros.calendar.weekendbg = "#c0c0c0";
config.macros.calendar.monthbg = "#e0e0e0";
config.macros.calendar.holidaybg = "#ffc0c0";

//}}}
// //''Code section:''
// (you should not need to alter anything below here)//
//{{{
if(config.options.txtCalFirstDay == undefined)
  config.options.txtCalFirstDay = 0;
if(config.options.txtCalStartOfWeekend == undefined)
  config.options.txtCalStartOfWeekend = 5;

config.macros.calendar.tiddlerformat = "0DD/0MM/YYYY";  // This used to be changeable - for now, it isn't// <<smiley :-(>> 

version.extensions.calendar = { major: 0, minor: 6, revision: 0, date: new Date(2006, 1, 22)};
config.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

config.macros.calendar.holidays = [ ]; // Not sure this is required anymore - use reminders instead
//}}}

// //Is the given date a holiday?
//{{{
function calendarIsHoliday(date)
{
 var longHoliday = date.formatString("0DD/0MM/YYYY");
 var shortHoliday = date.formatString("0DD/0MM");

 for(var i = 0; i < config.macros.calendar.holidays.length; i++) {
   if(config.macros.calendar.holidays[i] == longHoliday || config.macros.calendar.holidays[i] == shortHoliday) {
     return true;
   }
 }
 return false;
}
//}}}

// //The main entry point - the macro handler.
// //Decide what sort of calendar we are creating (month or year, and which month or year)
// // Create the main calendar container and pass that to sub-ordinate functions to create the structure.
// ELS 2005.10.30: added creation and use of "tbody" for IE compatibility and fixup for year >1900//
// ELS 2005.10.30: fix year calculation for IE's getYear() function (which returns '2005' instead of '105')//
//{{{
config.macros.calendar.handler = function(place,macroName,params)
{
   var calendar = createTiddlyElement(place, "table", null, "calendar", null);
   var tbody = createTiddlyElement(calendar, "tbody", null, null, null);
   var today = new Date();
   var year = today.getYear();
   if (year<1900) year+=1900;
   if (params[0] == "thismonth")
  {
      cacheReminders(new Date(year, today.getMonth(), 1, 0, 0), 31);
      createCalendarOneMonth(tbody, year, today.getMonth());
  } 
  else if (params[0] == "lastmonth") {
      var month = today.getMonth()-1; if (month==-1) { month=11; year--; }
      cacheReminders(new Date(year, month, 1, 0, 0), 31);
      createCalendarOneMonth(tbody, year, month);
   }
   else if (params[0] == "nextmonth") {
      var month = today.getMonth()+1; if (month>11) { month=0; year++; }
      cacheReminders(new Date(year, month, 1, 0, 0), 31);
      createCalendarOneMonth(tbody, year, month);
   }
   else {
      if (params[0]) year = params[0];
      if(params[1])
      {
         cacheReminders(new Date(year, params[1]-1, 1, 0, 0), 31);
         createCalendarOneMonth(tbody, year, params[1]-1);
      }
      else
      {
         cacheReminders(new Date(year, 0, 1, 0, 0), 366);
         createCalendarYear(tbody, year);
      }
   }
  window.reminderCacheForCalendar = null;
}
//}}}
//{{{
//This global variable is used to store reminders that have been cached
//while the calendar is being rendered.  It will be renulled after the calendar is fully rendered.
window.reminderCacheForCalendar = null;
//}}}
//{{{
function cacheReminders(date, leadtime)
{
  if (window.findTiddlersWithReminders == null)
    return;
  window.reminderCacheForCalendar = {};
  var leadtimeHash = [];
  leadtimeHash [0] = 0;
  leadtimeHash [1] = leadtime;
  var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);
  for(var i = 0; i < t.length; i++) {
    //just tag it in the cache, so that when we're drawing days, we can bold this one.
     window.reminderCacheForCalendar[t[i]["matchedDate"]] = "reminder:" + t[i]["params"]["title"]; 
  }
}
//}}}
//{{{
function createCalendarOneMonth(calendar, year, mon)
{
  var row = createTiddlyElement(calendar, "tr", null, null, null);
  createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);
  row = createTiddlyElement(calendar, "tr", null, null, null);
  createCalendarDayHeader(row, 1);
  createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}

//{{{
function createCalendarMonth(calendar, year, mon)
{
  var row = createTiddlyElement(calendar, "tr", null, null, null);
  createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);
  row = createTiddlyElement(calendar, "tr", null, null, null);
  createCalendarDayHeader(row, 1);
  createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}

//{{{
function createCalendarYear(calendar, year)
{
  var row;
  row = createTiddlyElement(calendar, "tr", null, null, null);
  var back = createTiddlyElement(row, "td", null, null, null);
  var backHandler = function() {
      removeChildren(calendar);
      createCalendarYear(calendar, year-1);
    };
  createTiddlyButton(back, "<", "Previous year", backHandler);
  back.align = "center";

  var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);
  yearHeader.align = "center";
  yearHeader.setAttribute("colSpan", 19);

  var fwd = createTiddlyElement(row, "td", null, null, null);
  var fwdHandler = function() {
    removeChildren(calendar);
    createCalendarYear(calendar, year+1);
  };
  createTiddlyButton(fwd, ">", "Next year", fwdHandler);
  fwd.align = "center";

  createCalendarMonthRow(calendar, year, 0);
  createCalendarMonthRow(calendar, year, 3);
  createCalendarMonthRow(calendar, year, 6);
  createCalendarMonthRow(calendar, year, 9);
}
//}}}

//{{{
function createCalendarMonthRow(cal, year, mon)
{
  var row = createTiddlyElement(cal, "tr", null, null, null);
  createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);
  createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);
  createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);
  row = createTiddlyElement(cal, "tr", null, null, null);
  createCalendarDayHeader(row, 3);
  createCalendarDayRows(cal, year, mon);
}
//}}}

//{{{
function createCalendarMonthHeader(cal, row, name, nav, year, mon)
{
  var month;
  if(nav) {
    var back = createTiddlyElement(row, "td", null, null, null);
    back.align = "center";
    back.style.background = config.macros.calendar.monthbg;

/*
    back.setAttribute("colSpan", 2);

    var backYearHandler = function() {
      var newyear = year-1;
      removeChildren(cal);
      cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);
      createCalendarOneMonth(cal, newyear, mon);
    };
    createTiddlyButton(back, "<<", "Previous year", backYearHandler);
*/
    var backMonHandler = function() {
      var newyear = year;
      var newmon = mon-1;
      if(newmon == -1) { newmon = 11; newyear = newyear-1;}
      removeChildren(cal);
      cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
      createCalendarOneMonth(cal, newyear, newmon);
    };
    createTiddlyButton(back, "<", "Previous month", backMonHandler);


    month = createTiddlyElement(row, "td", null, "calendarMonthname", name)
//    month.setAttribute("colSpan", 3);
    month.setAttribute("colSpan", 5);

    var fwd = createTiddlyElement(row, "td", null, null, null);
    fwd.align = "center";
    fwd.style.background = config.macros.calendar.monthbg; 

//    fwd.setAttribute("colSpan", 2);
    var fwdMonHandler = function() {
      var newyear = year;
      var newmon = mon+1;
      if(newmon == 12) { newmon = 0; newyear = newyear+1;}
      removeChildren(cal);
      cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
      createCalendarOneMonth(cal, newyear, newmon);
    };
    createTiddlyButton(fwd, ">", "Next month", fwdMonHandler);
/*
    var fwdYear = createTiddlyElement(row, "td", null, null, null);
    var fwdYearHandler = function() {
      var newyear = year+1;
      removeChildren(cal);
      cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);
      createCalendarOneMonth(cal, newyear, mon);
    };
    createTiddlyButton(fwd, ">>", "Next year", fwdYearHandler);
*/
  } else {
    month = createTiddlyElement(row, "td", null, "calendarMonthname", name)
    month.setAttribute("colSpan", 7);
  }
  month.align = "center";
  month.style.background = config.macros.calendar.monthbg;
}
//}}}

//{{{
function createCalendarDayHeader(row, num)
{
  var cell;
  for(var i = 0; i < num; i++) {
    for(var j = 0; j < 7; j++) {
      var d = j + (config.options.txtCalFirstDay - 0);
      if(d > 6) d = d - 7;
      cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);

      if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))
        cell.style.background = config.macros.calendar.weekendbg;
    }
  }
}
//}}}

//{{{
function createCalendarDays(row, col, first, max, year, mon)
{
  var i;
  for(i = 0; i < col; i++) {
    createTiddlyElement(row, "td", null, null, null);
  }
  var day = first;
  for(i = col; i < 7; i++) {
    var d = i + (config.options.txtCalFirstDay - 0);
    if(d > 6) d = d - 7;
    var daycell = createTiddlyElement(row, "td", null, null, null);
    var isaWeekend = ((d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))? true:false);

    if(day > 0 && day <= max) {
      var celldate = new Date(year, mon, day);
      // ELS 2005.10.30: use <<date>> macro's showDate() function to create popup
      if (window.showDate) {
        showDate(daycell,celldate,"popup","DD","DD-MMM-YYYY",true, isaWeekend); 
      } else {
        if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;
        var title = celldate.formatString(config.macros.calendar.tiddlerformat);
        if(calendarIsHoliday(celldate)) {
          daycell.style.background = config.macros.calendar.holidaybg;
        }
        if(window.findTiddlersWithReminders == null) {
          var link = createTiddlyLink(daycell, title, false);
          link.appendChild(document.createTextNode(day));
        } else {
          var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);
        }
      }
    }
    day++;
  }
}
//}}}

// //We've clicked on a day in a calendar - create a suitable pop-up of options.
// //The pop-up should contain:
// // * a link to create a new entry for that date
// // * a link to create a new reminder for that date
// // * an <hr>
// // * the list of reminders for that date
//{{{
function onClickCalendarDate(e)
{
  var button = this;
  var date = button.getAttribute("title");
  var dat = new Date(date.substr(6,4), date.substr(3,2)-1, date.substr(0, 2));

  date = dat.formatString(config.macros.calendar.tiddlerformat);
  var popup = createTiddlerPopup(this);
  popup.appendChild(document.createTextNode(date));
  var newReminder = function() {
    var t = store.getTiddlers(date);
    displayTiddler(null, date, 2, null, null, false, false);
    if(t) {
      document.getElementById("editorBody" + date).value += "\n<<reminder day:" + dat.getDate() +
                                                                                         " month:" + (dat.getMonth()+1) +
                                                                                         " year:" + (dat.getYear()+1900) + " title: >>";
    } else {
      document.getElementById("editorBody" + date).value = "<<reminder day:" + dat.getDate() +
                                                                                       " month:" + (dat.getMonth()+1) +
                                                                                       " year:" + (dat.getYear()+1900) + " title: >>";
    }
  };
  var link = createTiddlyButton(popup, "New reminder", null, newReminder); 
  popup.appendChild(document.createElement("hr"));

  var t = findTiddlersWithReminders(dat, [0,14], null, 1);
  for(var i = 0; i < t.length; i++) {
    link = createTiddlyLink(popup, t[i].tiddler, false);
    link.appendChild(document.createTextNode(t[i].tiddler));
  }
}
//}}}

//{{{
function calendarMaxDays(year, mon)
{
 var max = config.macros.calendar.monthdays[mon];
 if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) {
 max++;
 }
 return max;
}
//}}}

//{{{
function createCalendarDayRows(cal, year, mon)
{
 var row = createTiddlyElement(cal, "tr", null, null, null);

 var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first1 < 0) first1 = first1 + 7;
 var day1 = -first1 + 1;
 var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first2 < 0) first2 = first2 + 7;
 var day2 = -first2 + 1;
 var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first3 < 0) first3 = first3 + 7;
 var day3 = -first3 + 1;

 var max1 = calendarMaxDays(year, mon);
 var max2 = calendarMaxDays(year, mon+1);
 var max3 = calendarMaxDays(year, mon+2);

 while(day1 <= max1 || day2 <= max2 || day3 <= max3) {
 row = createTiddlyElement(cal, "tr", null, null, null);
 createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
 createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;
 createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;
 }
}
//}}}

//{{{
function createCalendarDayRowsSingle(cal, year, mon)
{
 var row = createTiddlyElement(cal, "tr", null, null, null);

 var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first1 < 0) first1 = first1+ 7;
 var day1 = -first1 + 1;
 var max1 = calendarMaxDays(year, mon);

 while(day1 <= max1) {
 row = createTiddlyElement(cal, "tr", null, null, null);
 createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
 }
}
//}}}

// //ELS 2005.10.30: added styles
//{{{
setStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { font-size:10pt; text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }", "calendarStyles");
//}}}
/***
|Name|DatePlugin|
|Source|http://www.TiddlyTools.com/#DatePlugin|
|Documentation|http://www.TiddlyTools.com/#DatePluginInfo|
|Version|2.7.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|formatted dates plus popup menu with 'journal' link, changes and (optional) reminders|
There are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW.  While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier.  This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.
!!!!!Documentation
>see [[DatePluginInfo]]
!!!!!Configuration
<<<
<<option chkDatePopupHideCreated>> omit 'created' section from date popups
<<option chkDatePopupHideChanged>> omit 'changed' section from date popups
<<option chkDatePopupHideTagged>> omit 'tagged' section from date popups
<<option chkDatePopupHideReminders>> omit 'reminders' section from date popups
<<option chkShowJulianDate>> display Julian day number (1-365) below current date

see [[DatePluginConfig]] for additional configuration settings, for use in calendar displays, including:
*date formats
*color-coded backgrounds
*annual fixed-date holidays
*weekends
<<<
!!!!!Revisions
<<<
2008.03.08 [2.7.0] in addModifiedsToPopup(), if a tiddler was created on the specified date, don't list it in the 'changed' section of the popup.  Based on a request from Kashgarinn.
|please see [[DatePluginInfo]] for additional revision details|
2005.10.30 [0.9.0] pre-release
<<<
!!!!!Code
***/
//{{{
version.extensions.DatePlugin= {major: 2, minor: 7, revision: 0, date: new Date(2008,3,8)};

config.macros.date = {
	format: "YYYY.0MM.0DD", // default date display format
	linkformat: "YYYY.0MM.0DD", // 'dated tiddler' link format
	linkedbg: "#babb1e", // "babble"
	todaybg: "#ffab1e", // "fable"
	weekendbg: "#c0c0c0", // "cocoa"
	holidaybg: "#ffaace", // "face"
	createdbg: "#bbeeff", // "beef"
	modifiedsbg: "#bbeeff", // "beef"
	remindersbg: "#c0ffee", // "coffee"
	holidays: [ "01/01", "07/04", "07/24", "11/24" ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)
	weekend: [ 1,0,0,0,0,0,1 ] // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ]
};

config.macros.date.handler = function(place,macroName,params)
{
	// do we want to see a link, a popup, or just a formatted date?
	var mode="display";
	if (params[0]=="display") { mode=params[0]; params.shift(); }
	if (params[0]=="popup") { mode=params[0]; params.shift(); }
	if (params[0]=="link") { mode=params[0]; params.shift(); }
	// get the date
	var now = new Date();
	var date = now;
	if (!params[0] || params[0]=="today")
		{ params.shift(); }
	else if (params[0]=="filedate")
		{ date=new Date(document.lastModified); params.shift(); }
	else if (params[0]=="tiddler")
		{ date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }
	else if (params[0].substr(0,8)=="tiddler:")
		{ var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }
	else {
		var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));
		var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));
		var d = eval(params.shift().replace(/D/ig,now.getDate()+0));
		date = new Date(y,m-1,d);
	}
	// date format with optional custom override
	var format=this.format; if (params[0]) format=params.shift();
	var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();
	showDate(place,date,mode,format,linkformat);
}

window.showDate=showDate;
function showDate(place,date,mode,format,linkformat,autostyle,weekend)
{
	if (!mode) mode="display";
	if (!format) format=config.macros.date.format;
	if (!linkformat) linkformat=config.macros.date.linkformat;
	if (!autostyle) autostyle=false;

	// format the date output
	var title = date.formatString(format);
	var linkto = date.formatString(linkformat);

	// just show the formatted output
	if (mode=="display") { place.appendChild(document.createTextNode(title)); return; }

	// link to a 'dated tiddler'
	var link = createTiddlyLink(place, linkto, false);
	link.appendChild(document.createTextNode(title));
	link.title = linkto;
	link.date = date;
	link.format = format;
	link.linkformat = linkformat;

	// if using a popup menu, replace click handler for dated tiddler link
	// with handler for popup and make link text non-italic (i.e., an 'existing link' look)
	if (mode=="popup") {
		link.onclick = onClickDatePopup;
		link.style.fontStyle="normal";
	}
	// format the popup link to show what kind of info it contains (for use with calendar generators)
	if (autostyle) setDateStyle(place,link,weekend);
}
//}}}

//{{{
// NOTE: This function provides default logic for setting the date style when displayed in a calendar
// To customize the date style logic, please see[[DatePluginConfig]]
function setDateStyle(place,link,weekend) {
	// alias variable names for code readability
	var date=link.date;
	var fmt=link.linkformat;
	var linkto=date.formatString(fmt);
	var cmd=config.macros.date;

	if ((weekend!==undefined?weekend:isWeekend(date))&&(cmd.weekendbg!=""))
		{ place.style.background = cmd.weekendbg; }
	if (hasModifieds(date)||hasCreateds(date)||hasTagged(date,fmt))
		{ link.style.fontStyle="normal"; link.style.fontWeight="bold"; }
	if (hasReminders(date))
		{ link.style.textDecoration="underline"; }
	if (isToday(date))
		{ link.style.border="1px solid black"; }
	if (isHoliday(date)&&(cmd.holidaybg!=""))
		{ place.style.background = cmd.holidaybg; }
	if (hasCreateds(date)&&(cmd.createdbg!=""))
		{ place.style.background = cmd.createdbg; }
	if (hasModifieds(date)&&(cmd.modifiedsbg!=""))
		{ place.style.background = cmd.modifiedsbg; }
	if ((hasTagged(date,fmt)||store.tiddlerExists(linkto))&&(cmd.linkedbg!=""))
		{ place.style.background = cmd.linkedbg; }
	if (hasReminders(date)&&(cmd.remindersbg!=""))
		{ place.style.background = cmd.remindersbg; }
	if (isToday(date)&&(cmd.todaybg!=""))
		{ place.style.background = cmd.todaybg; }
	if (config.options.chkShowJulianDate) { // optional display of Julian date numbers
		var m=[0,31,59,90,120,151,181,212,243,273,304,334];
		var d=date.getDate()+m[date.getMonth()];
		var y=date.getFullYear();
		if (date.getMonth()>1 && (y%4==0 && y%100!=0) || y%400==0)
			d++; // after February in a leap year
		wikify("@@font-size:80%;<br>"+d+"@@",place);
	}

}
//}}}

//{{{
function isToday(date) // returns true if date is today
	{ var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }

function isWeekend(date) // returns true if date is a weekend
	{ return (config.macros.date.weekend[date.getDay()]); }

function isHoliday(date) // returns true if date is a holiday
{
	var longHoliday = date.formatString("0MM/0DD/YYYY");
	var shortHoliday = date.formatString("0MM/0DD");
	for(var i = 0; i < config.macros.date.holidays.length; i++) {
		var holiday=config.macros.date.holidays[i];
		if (holiday==longHoliday||holiday==shortHoliday) return true;
	}
	return false;
}
//}}}

//{{{
// Event handler for clicking on a day popup
function onClickDatePopup(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	var popup = Popup.create(this);
	if(popup) {
		// always show dated tiddler link (or just date, if readOnly) at the top...
		if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))
			createTiddlyLink(popup,this.date.formatString(this.linkformat),true);
		else
			createTiddlyText(popup,this.date.formatString(this.linkformat));
		if (!config.options.chkDatePopupHideCreated)
			addCreatedsToPopup(popup,this.date,this.format);
		if (!config.options.chkDatePopupHideChanged)
			addModifiedsToPopup(popup,this.date,this.format);
		if (!config.options.chkDatePopupHideTagged)
			addTaggedToPopup(popup,this.date,this.linkformat);
		if (!config.options.chkDatePopupHideReminders)
			addRemindersToPopup(popup,this.date,this.linkformat);
	}
	Popup.show(popup,false);
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);
}
//}}}

//{{{
function indexCreateds() // build list of tiddlers, hash indexed by creation date
{
	var createds= { };
	var tiddlers = store.getTiddlers("title","excludeLists");
	for (var t = 0; t < tiddlers.length; t++) {
		var date = tiddlers[t].created.formatString("YYYY0MM0DD")
		if (!createds[date])
			createds[date]=new Array();
		createds[date].push(tiddlers[t].title);
	}
	return createds;
}
function hasCreateds(date) // returns true if date has created tiddlers
{
	if (!config.macros.date.createds) config.macros.date.createds=indexCreateds();
	return (config.macros.date.createds[date.formatString("YYYY0MM0DD")]!=undefined);
}

function addCreatedsToPopup(popup,when,format)
{
	var force=(store.isDirty() && when.formatString("YYYY0MM0DD")==new Date().formatString("YYYY0MM0DD"));
	if (force || !config.macros.date.createds) config.macros.date.createds=indexCreateds();
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	var createds = config.macros.date.createds[when.formatString("YYYY0MM0DD")];
	if (createds) {
		createds.sort();
		var e=createTiddlyElement(popup,"div",null,null,"created ("+createds.length+")");
		for(var t=0; t<createds.length; t++) {
			var link=createTiddlyLink(popup,createds[t],false);
			link.appendChild(document.createTextNode(indent+createds[t]));
			createTiddlyElement(popup,"br",null,null,null);
		}
	}
}
//}}}

//{{{
function indexModifieds() // build list of tiddlers, hash indexed by modification date
{
	var modifieds= { };
	var tiddlers = store.getTiddlers("title","excludeLists");
	for (var t = 0; t < tiddlers.length; t++) {
		var date = tiddlers[t].modified.formatString("YYYY0MM0DD")
		if (!modifieds[date])
			modifieds[date]=new Array();
		modifieds[date].push(tiddlers[t].title);
	}
	return modifieds;
}
function hasModifieds(date) // returns true if date has modified tiddlers
{
	if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();
	return (config.macros.date.modifieds[date.formatString("YYYY0MM0DD")]!=undefined);
}

function addModifiedsToPopup(popup,when,format)
{
	var date=when.formatString("YYYY0MM0DD");
	var force=(store.isDirty() && date==new Date().formatString("YYYY0MM0DD"));
	if (force || !config.macros.date.modifieds) config.macros.date.modifieds=indexModifieds();
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	var mods = config.macros.date.modifieds[date];
	if (mods) {
		// if a tiddler was created on this date, don't list it in the 'changed' section
		if (config.macros.date.createds && config.macros.date.createds[date]) {
			var temp=[];
			for(var t=0; t<mods.length; t++)
				if (!config.macros.date.createds[date].contains(mods[t]))
					temp.push(mods[t]);
			mods=temp;
		}
		mods.sort();
		var e=createTiddlyElement(popup,"div",null,null,"changed ("+mods.length+")");
		for(var t=0; t<mods.length; t++) {
			var link=createTiddlyLink(popup,mods[t],false);
			link.appendChild(document.createTextNode(indent+mods[t]));
			createTiddlyElement(popup,"br",null,null,null);
		}
	}
}
//}}}

//{{{
function hasTagged(date,format) // returns true if date is tagging other tiddlers
{
	return store.getTaggedTiddlers(date.formatString(format)).length>0;
}

function addTaggedToPopup(popup,when,format)
{
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	var tagged=store.getTaggedTiddlers(when.formatString(format));
	if (tagged.length) var e=createTiddlyElement(popup,"div",null,null,"tagged ("+tagged.length+")");
	for(var t=0; t<tagged.length; t++) {
		var link=createTiddlyLink(popup,tagged[t].title,false);
		link.appendChild(document.createTextNode(indent+tagged[t].title));
		createTiddlyElement(popup,"br",null,null,null);
	}
}
//}}}

//{{{
function indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date
{
	var reminders = { };
	if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed
		// DEBUG var starttime=new Date();
		var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);
		for(var i=0; i<t.length; i++) reminders[t[i].matchedDate]=true;
		// DEBUG var out="Found "+t.length+" reminders in "+((new Date())-starttime+1)+"ms\n";
		// DEBUG out+="startdate: "+date.toLocaleDateString()+"\n"+"leadtime: "+leadtime+" days\n\n";
		// DEBUG for(var i=0; i<t.length; i++) { out+=t[i].matchedDate.toLocaleDateString()+" "+t[i].params.title+"\n"; }
		// DEBUG alert(out);
	}
	return reminders;
}

function hasReminders(date) // returns true if date has reminders
{
	if (window.reminderCacheForCalendar)
		return window.reminderCacheForCalendar[date]; // use calendar cache
	if (!config.macros.date.reminders)
		config.macros.date.reminders = indexReminders(date,90); // create a 90-day leadtime reminder cache
	return (config.macros.date.reminders[date]);
}

function addRemindersToPopup(popup,when,format)
{
	if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed

	var indent = String.fromCharCode(160)+String.fromCharCode(160);
	var reminders=findTiddlersWithReminders(when, [0,31],null,null,1);
	createTiddlyElement(popup,"div",null,null,"reminders ("+(reminders.length||"none")+")");
	for(var t=0; t<reminders.length; t++) {
		link = createTiddlyLink(popup,reminders[t].tiddler,false);
		var diff=reminders[t].diff;
		diff=(diff<1)?"Today":((diff==1)?"Tomorrow":diff+" days");
		var txt=(reminders[t].params["title"])?reminders[t].params["title"]:reminders[t].tiddler;
		link.appendChild(document.createTextNode(indent+diff+" - "+txt));
		createTiddlyElement(popup,"br",null,null,null);
	}
	if (readOnly) return;	// omit "new reminder..." link
	var link = createTiddlyLink(popup,indent+"new reminder...",true); createTiddlyElement(popup,"br");
	var title = when.formatString(format);
	link.title="add a reminder to '"+title+"'";
	link.onclick = function() {
		// show tiddler editor
		story.displayTiddler(null, title, 2, null, null, false, false);
		// find body 'textarea'
		var c =document.getElementById("tiddler" + title).getElementsByTagName("*");
		for (var i=0; i<c.length; i++) if ((c[i].tagName.toLowerCase()=="textarea") && (c[i].getAttribute("edit")=="text")) break;
		// append reminder macro to tiddler content
		if (i<c.length) {
			if (store.tiddlerExists(title)) c[i].value+="\n"; else c[i].value="";
			c[i].value += "<<reminder";
			c[i].value += " day:"+when.getDate();
			c[i].value += " month:"+(when.getMonth()+1);
			c[i].value += " year:"+when.getFullYear();
			c[i].value += ' title:"Enter a title" >>';
		}
	};
}
//}}}
/***
|Name|DatePluginConfig|
|Source|http://www.TiddlyTools.com/#DatePluginConfig|
|Documentation|http://www.TiddlyTools.com/#DatePluginInfo|
|Version|2.6.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|formats, background colors and other optional settings for DatePlugin|
***/
// // Default popup content display options (can be overridden by cookies)
//{{{
if (config.options.chkDatePopupHideCreated===undefined)
	config.options.chkDatePopupHideCreated=false;
if (config.options.chkDatePopupHideChanged===undefined)
	config.options.chkDatePopupHideChanged=false;
if (config.options.chkDatePopupHideTagged===undefined)
	config.options.chkDatePopupHideTagged=false;
if (config.options.chkDatePopupHideReminders===undefined)
	config.options.chkDatePopupHideReminders=false;
//}}}

// // show Julian date number below regular date
//{{{
if (config.options.chkShowJulianDate===undefined)
	config.options.chkShowJulianDate=false;
//}}}

// // fixed-date annual holidays
//{{{
config.macros.date.holidays=[
	"01/01", // NewYearsDay, 
	"07/04", // US Independence Day
	"07/24"  // Eric's Birthday (hooray!)
];
//}}}

// // weekend map (1=weekend, 0=weekday)
//{{{
config.macros.date.weekend=[ 1,0,0,0,0,0,1 ]; // day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6
//}}}

// // date display/link formats
//{{{
config.macros.date.format="YYYY.0MM.0DD"; // default date display format
config.macros.date.linkformat="YYYY.0MM.0DD"; // 'dated tiddler' link format
//}}}

// // When displaying a calendar (see [[CalendarPlugin]]), you can customize the colors/styles that are applied to the calendar dates by modifying the values and/or functions below:
//{{{
// default calendar colors
config.macros.date.weekendbg="#c0c0c0";
config.macros.date.holidaybg="#ffaace";
config.macros.date.createdbg="#bbeeff";
config.macros.date.modifiedsbg="#bbeeff";
config.macros.date.linkedbg="#babb1e";
config.macros.date.remindersbg="#c0ffee";

// apply calendar styles
function setDateStyle(place,link,weekend) {
	// alias variable names for code readability
	var date=link.date;
	var fmt=link.linkformat;
	var linkto=date.formatString(fmt);
	var cmd=config.macros.date;

	if ((weekend!==undefined?weekend:isWeekend(date))&&(cmd.weekendbg!=""))
		{ place.style.background = cmd.weekendbg; }
	if (hasModifieds(date)||hasCreateds(date)||hasTagged(date,fmt))
		{ link.style.fontStyle="normal"; link.style.fontWeight="bold"; }
	if (hasReminders(date))
		{ link.style.textDecoration="underline"; }
	if (isToday(date))
		{ link.style.border="1px solid black"; }
	if (isHoliday(date)&&(cmd.holidaybg!=""))
		{ place.style.background = cmd.holidaybg; }
	if (hasCreateds(date)&&(cmd.createdbg!=""))
		{ place.style.background = cmd.createdbg; }
	if (hasModifieds(date)&&(cmd.modifiedsbg!=""))
		{ place.style.background = cmd.modifiedsbg; }
	if ((hasTagged(date,fmt)||store.tiddlerExists(linkto))&&(cmd.linkedbg!=""))
		{ place.style.background = cmd.linkedbg; }
	if (hasReminders(date)&&(cmd.remindersbg!=""))
		{ place.style.background = cmd.remindersbg; }
	if (isToday(date)&&(cmd.todaybg!=""))
		{ place.style.background = cmd.todaybg; }
	if (config.options.chkShowJulianDate) {
		var m=[0,31,59,90,120,151,181,212,243,273,304,334];
		var d=date.getDate()+m[date.getMonth()];
		var y=date.getFullYear();
		if (date.getMonth()>1 && (y%4==0 && y%100!=0) || y%400==0) d++; // after February in a leap year
		wikify("@@font-size:80%;<br>"+d+"@@",place);
	}
}
//}}}
|Name|DatePluginInfo|
|Source|http://www.TiddlyTools.com/#DatePlugin|
|Documentation|http://www.TiddlyTools.com/#DatePluginInfo|
|Version|2.7.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for DatePlugin|
There are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW.  While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier.  This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.
!!!!!Usage
<<<
This plugin display formatted dates, for the specified year, month, day using number values or mathematical expressions such as (Y+1) or (D+30).  Optionally, you can create a link from the formatted output to a 'dated tiddler' for quick blogging or create a popup menu that includes the dated tiddler link plus links to tiddlers that were created/changed on that date, or are tagged with that date, as well as links to any pending reminders for the coming 31 days (if the RemindersPlugin is installed).  This plugin also provides a public API for easily incorporating formatted date output (with or without the links/popups) into other plugins, such as calendar generators, etc.

This plugin defines a macro: {{{<<date [mode] [date] [format] [linkformat]>>}}}.  All of the macro parameters are optional and, in it's simplest form, {{{<<date>>}}}, it is equivalent to the ~TiddlyWiki core macro, {{{<<today>>}}}.

However, where {{{<<today>>}}} simply inserts the current date/time in a predefined format (or custom format, using {{{<<today [format]>>}}}), the {{{<<date>>}}} macro's parameters take it much further than that:
* [mode] is either ''display'', ''link'' or ''popup''.  If omitted, it defaults to ''display''.  This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.
* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively.  You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters.  Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler.  You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values.  
* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax.  The default is "YYYY.0MM.0DD"
>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^
>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^
>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^
>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^
* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format

In addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:

''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}'' 

Note that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:
* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status:  'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.
* [weekend] - true indicates a weekend, false indicates a weekday.  When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.
<<<
!!!!!Examples
<<<
The current date: <<date>>
The current time: <<date today "0hh:0mm:0ss">>
Today's blog: <<date link today "DDD, MMM DDth, YYYY">>
Recent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>
The first day of next month will be a <<date Y M+1 1 "DDD">>
This tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>
The SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>
This document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>
<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>
<<<
!!!!!Revisions
<<<
2008.03.08 [2.7.0] in addModifiedsToPopup(), if a tiddler was created on the specified date, don't list it in the 'changed' section of the popup.  Based on a request from Kashgarinn
2008.01.31 [2.6.0] refactored date style logic into separate setDateStyle() function so it can be overridden by a custom definition.  See [[DatePluginConfig]].
2008.01.11 [2.5.0] added options to selectively suppress created/changes/tagged/reminders popup content 
2008.01.08 [*.*.*] plugin size reduction: documentation moved to DatePluginInfo
2007.11.21 [2.4.0] added hasTagged() and addTaggedToPopup() to list any tiddlers that has been tagged using the title of the dated journal tiddler asa tag value (i.e., the tiddlers that will be listed in the standard "tagging" display when viewing the journal tiddler itself).  Based on a request from Coby.
2007.06.20 [2.3.1] in onClickDatePopup(), use Popup.show() instead of deprecated ScrollToTiddlerPopup().  Fixes fatal error that prevents popups from being properly displayed
2007.05.31 [2.3.0] list "created" tiddlers in date popup.  Also, force re-cache of created/modified indices when displaying current date and store.isDirty(), so that popup is kept in sync with tiddler changes.
2006.05.09 [2.2.1] added "todaybg" handling to set background color of current date.  Also, honor excludeLists tag when getting lists of tiddlers.  Based on suggestions by Mark Hulme.
2006.05.05 [2.2.0] added "linkedbg" handling to set background color when a 'dated tiddler' exists.  Based on a suggestion by Mark Hulme.
2006.03.08 [2.1.2] add 'override leadtime' flag param in call to findTiddlersWithReminders(), and add "Enter a title" default text to new reminder handler.  Thanks to Jeremy Sheeley for these additional tweaks.
2006.03.06 [2.1.0] hasReminders() nows uses window.reminderCacheForCalendar[] when present.  If calendar cache is not present, indexReminders() now uses findTiddlersWithReminders() with a 90-day look ahead to check for reminders.  Also, switched default background colors for autostyled dates: reminders are now greenish ("c0ffee") and holidays are now reddish ("ffaace").
2006.02.14 [2.0.5] when readOnly is set (by TW core), omit "new reminders..." popup menu item and, if a "dated tiddler" does not already exist, display the date as simple text instead of a link.
2006.02.05 [2.0.4] added var to variables that were unintentionally global.  Avoids FireFox 1.5.0.1 crash bug when referencing global variables
2006.01.18 [2.0.3] In 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content.  With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned.  To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit") equals "text", and then append the new reminder to the contents of that control.
2006.01.11 [2.0.2] correct 'weekend' override detection logic in showDate()
2006.01.10 [2.0.1] allow custom-defined weekend days (default defined in config.macros.date.weekend[] array)
added flag param to showDate() API to override internal weekend[] array
2005.12.27 [2.0.0] Update for TW2.0
Added parameter handling for 'linkformat'
2005.12.21 [1.2.2] FF's date.getYear() function returns 105 (for the current year, 2005).  When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number.  But IE's date.getYear() already returns 2005.  As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005).  Adding +1900 is now conditional so the values will be correct on both browsers.
2005.11.07 [1.2.1] added support for "tiddler" dynamic date parameter
2005.11.06 [1.2.0] added support for "tiddler:title" dynamic date parameter
2005.11.03 [1.1.2] when a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu.  Based on a suggestion from BenjaminKudria.
2005.11.03 [1.1.1] Temporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache.  While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed.  This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).
2005.11.01 [1.1.0] corrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended.  This should hopefully speed up calendar generators and other plugins that render multiple dates...
2005.10.31 [1.0.1] documentation and code cleanup
2005.10.31 [1.0.0] initial public release
2005.10.30 [0.9.0] pre-release
<<<
[[paraderos + conectores]]
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description

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

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

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

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

!Code
***/
//{{{

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	// Parse the "toFile" option
	var filename = null;
	var lineSeparator = undefined;
	if ((p < parameter.length) && parameter[p] == "toFile") {
		p++;
		if (p >= parameter.length) {
			this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
			return;
		}
		
		filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
		p++;
		if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
			p++;
			if (p >= parameter.length) {
				this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
				return;
			}
			lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
			p++;
		}
	}
	
	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
		return;
	}

	// Perform the action.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
	var count = tiddlers.length;
	var text = "";
	if (count > 0 && beginExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
	
	for (var i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		text += func(tiddler, context, count, i);
	}
	
	if (count > 0 && endExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);

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

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


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

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

// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of 
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
	if (!idPrefix) {
		idPrefix = "store";
	}
	var lenPrefix = idPrefix.length;
	
	// Read the content of the given file
	var content = loadFile(this.getLocalPath(path));
	if(content === null) {
		throw "TiddlyWiki '"+path+"' not found.";
	}
	
	var tiddlyWiki = new TiddlyWiki();

	// Starting with TW 2.2 there is a helper function to import the tiddlers
	if (tiddlyWiki.importTiddlyWiki) {
		if (!tiddlyWiki.importTiddlyWiki(content))
			throw "File '"+path+"' is not a TiddlyWiki.";
		tiddlyWiki.dirty = false;
		return tiddlyWiki;
	}
	
	// The legacy code, for TW < 2.2
	
	// Locate the storeArea div's
	var posOpeningDiv = content.indexOf(startSaveArea);
	var posClosingDiv = content.lastIndexOf(endSaveArea);
	if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
		throw "File '"+path+"' is not a TiddlyWiki.";
	}
	var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
	
	// Create a "div" element that contains the storage text
	var myStorageDiv = document.createElement("div");
	myStorageDiv.innerHTML = storageText;
	myStorageDiv.normalize();
	
	// Create all tiddlers in a new TiddlyWiki
	// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
	var store = myStorageDiv.childNodes;
	for(var t = 0; t < store.length; t++) {
		var e = store[t];
		var title = null;
		if(e.getAttribute)
			title = e.getAttribute("tiddler");
		if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
			title = e.id.substr(lenPrefix);
		if(title && title !== "") {
			var tiddler = tiddlyWiki.createTiddler(title);
			tiddler.loadFromDiv(e,title);
		}
	}
	tiddlyWiki.dirty = false;

	return tiddlyWiki;
};


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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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


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



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


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

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

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

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


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


} // of "install only once"

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


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

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

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

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

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

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

/***
|Name|FramedLinksPlugin|
|Source|http://www.TiddlyTools.com/#FramedLinksPlugin|
|Version|1.1.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|createExternalLink|
|Options|##Configuration|
|Description|clicking an external link opens an IFRAME following the link instead of opening a new tab/window|
This plugin causes clicks on external links to be rendered as inline frames (~IFRAMEs) instead of opening new browser tabs/windows.
!!!!!Usage
<<<
Use standard TiddlyWiki external link syntax into your tiddler content. If {{{chkFramedLinks}}} is enabled or the tiddler is tagged with 'framedLinks' (see Configuration), then whenever you click the external link an IFRAME will be dynamically added to the content.  Clicking on the link again removes the IFRAME.  Hold down any modifier (shift, control, or alt) while clicking a link ''temporarily'' bypasses the IFRAME handling and use the standard link handling behavior.
<<<
!!!!!Configuration
<<<
<<option chkFramedLinks>> display inline frames for all external links
&nbsp; &nbsp; {{{<<option chkFramedLinks>>}}}
<<option chkFramedLinksTag>> display inline frames for external links in tiddlers tagged with: <<option txtFramedLinksTag>> 
&nbsp; &nbsp; {{{<<option chkFramedLinksTag>> <<option txtFramedLinksTag>>}}}
IFRAME size (CSS units: %, em, px, cm, in) - width: <<option txtFrameWidth>> height: <<option txtFrameHeight>>
&nbsp; &nbsp; {{{<<option txtFrameWidth>> <<option txtFrameHeight>>}}}
<<<
!!!!!Examples
<<<
Try these links:
*http://www.TiddlyWiki.com
*http://www.TiddlyTools.com
*http://groups.google.com/group/TiddlyWiki/topics
<<<
!!!!!Revisions
<<<
2008.11.14 [1.1.1] fixed handling for external links embedded in //shadow// tiddlers
2008.09.13 [1.1.0] added support to selectively enable embedded IFRAMEs if the containing tiddler is tagged with 'framedLinks'
2007.11.29 [1.0.5] added slider animation and improved CSS handling for IFRAME height/width to maximize display area
2007.11.29 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.FramedLinksPlugin= {major: 1, minor: 1, revision: 1, date: new Date(2008,11,14)};

var co=config.options; // abbreviation
if (co.chkFramedLinks==undefined) co.chkFramedLinks=false;
if (co.chkFramedLinksTag==undefined) co.chkFramedLinksTag=true;
if (co.txtFramedLinksTag==undefined) co.txtFramedLinksTag="framedLinks";
if (co.txtFrameWidth==undefined) co.txtFrameWidth="100%";
if (co.txtFrameHeight==undefined) co.txtFrameHeight="80%";

window.framedLinks_createExternalLink=createExternalLink;
window.createExternalLink=function(place,url)
{
	var link=this.framedLinks_createExternalLink.apply(this,arguments);
	link.onclick=function(ev) { var e=ev?ev:window.event;
		var co=config.options; // abbreviation
		var here=story.findContainingTiddler(this);
		if (here) var tid=store.getTiddler(here.getAttribute("tiddler"));
		var enabled=co.chkFramedLinks || co.chkFramedLinksTag && tid && tid.isTagged(co.txtFramedLinksTag);
		if (!enabled || e.ctrlKey || e.shiftKey || e.altKey) return; // BYPASS
		var p=this.parentNode; 
		var f=this.nextSibling?this.nextSibling.firstChild:null; // get the IFRAME... maybe...
		var w=co.txtFrameWidth; if (!w || !w.length) w="100%";
		var h=co.txtFrameHeight; if (!h || !h.length) h="80%";
		if (h.indexOf("%")) h=(findWindowHeight()*h.replace(/%/,"")/100)+"px"; // calc height as % of window
		var showing=f && f.nodeName.toUpperCase()=="IFRAME"; // does IFRAME really exist?
		var stretchCell=p.nodeName.toUpperCase()=="TD" && w.indexOf("%")!=-1 && w.replace(/%/,"")>=100;
		if (!showing) { // create an iframe
			link.style.display="block"; // force IFRAME onto line following link
			if (stretchCell) { p.setAttribute("savedWidth",p.style.width); p.style.width="100%"; } // adjust TD so IFRAME stretches
			var wrapper=createTiddlyElement(null,"span"); // wrapper for slider animation
			wrapper.setAttribute("url",this.href); // for async loading of frame after animation completes
			var f=createTiddlyElement(wrapper,"iframe"); // create IFRAME
			f.style.backgroundColor="#fff"; f.style.width=w; f.style.height=h;
			p.insertBefore(wrapper,this.nextSibling);
			function loadURL(wrapper) { var f=wrapper.firstChild; var url=wrapper.getAttribute("url");
				var d=f.contentDocument?f.contentDocument:(f.contentWindow?f.contentWindow.document:f.document);
				d.open(); d.writeln("<html>connecting to "+url+"</html>"); d.close();
				try { f.src=url; } // if the iframe can't handle the href
				catch(e) { alert(e.description?e.description:e.toString()); } // ... then report the error
				window.scrollTo(0,ensureVisible(wrapper));
			}
			if (!co.chkAnimate) loadURL(wrapper);
			else {
				var morph=new Slider(wrapper,true);
				morph.callback=loadURL;
				morph.properties.push({style: 'width', start: 0, end: 100, template: '%0%'});
				anim.startAnimating(morph);
			}
		} else { // remove iframe
			link.style.display="inline"; // restore link style
			if (stretchCell) p.style.width=p.getAttribute("savedWidth"); // restore previous width of TD
			if (!co.chkAnimate) p.removeChild(f.parentNode);
			else {
				var morph=new Slider(f.parentNode,false,false,"all");
				morph.properties.push({style: 'width', start: 100, end: 0, template: '%0%'});
				anim.startAnimating(morph);
			}
		}
		e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); return false;
	}
	return link;
}
//}}}
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>>
!arquitecturas colectivas _v 0.2 : paraderos + conectores
23 - 26 de septiembre de 2009 
Sant Pere de Torelló - Sevilla 
Vigo - Madrid - Asunción - Montevideo - Figueres – México DF

Organizado por [[recetas urbanas]] y [[straddle3]]
con la colaboración de [[pista digital]] y [[nautarquia]] 

[[ver texto en pdf|http://straddle3.net/arquitecturascolectivas/memoria.pdf]]

!!ANTECEDENTES: 

Estas jornadas forman parte fundamental de un proceso dilatado en el tiempo y que involucra a diversos agentes. En la actualidad se está trabajando en paralelo en una película documental de Guillermo Cruz, una exposición de Recetas Urbanas en Iniciarte y en un libro editado por Paula Álvarez que, mediante diferentes formatos, pretenden difundir y profundizar en las experiencias que hasta ahora se han desarrollado en este sentido y apuntar caminos para el futuro. 

Se puede decir que este proceso comenzó el 1 de marzo del 2007, cuando desde Recetas Urbanas se redactó y envió un mailing ofreciendo a diferentes colectivos y asociaciones la posibilidad de cesión de una o dos viviendas prefabricadas, en forma de tres módulos-contenedor, como sede residencial y centro de trabajo. Los módulos de vivienda habían prestado servicio como asentamiento provisional en la ciudad de Zaragoza, donde la población que los habitaba había sido alojada ya en viviendas de protección oficial, dejando sin uso dichos módulos. El transporte de los mismos, instalación y gestión, correría de parte de los grupos que se responsabilizaran de los mismos, la coordinación y modificación de los mismos se ha realizado en colaboración con recetas urbanas y otros colectivos de la red. 

[img[imago/mapa_contenedores_junio09_s.jpg][imago/mapa_contenedores_junio09.jpg]]<<imagebox 'mapa contenedores junio 2009'>>


Del 17 al 21 de septiembre de 2007 tuvo lugar en Córdoba la primera edición de Arquitecturas Colectivas. El encuentro se produjo dentro del marco de Eutopía 07 y fue coordinado por Santiago Cirugeda. Las jornadas se plantearon como reunión productiva de colectivos, asociaciones y agentes públicos, que desarrollasen actividades de índole artística, cultural, social y política. Una parte importante de los grupos convocados participan de alguna forma en la recuperación y re-uso de los módulos de vivienda de Zaragoza. 

Usando la arquitectura como excusa, este encuentro se comenzaron a trabajar protocolos de gestión, financiación, objetivos, mecanismos de ocupación y revitalización de solares o edificios y maneras de funcionar como colectivos, asociaciones y cooperativas, que sirva de ejemplo e incentivo a grupos de ciudadanos que quieren participar colectivamente en la gestión cultural y social de su ciudad. Con 3 exposiciones diarias por parte de los distintos participantes, sesiones críticas, y elaboración de encuestas y protocolos de trabajo, se trabajó una documentación del proceso que recogía gran parte del debate realizado. 

Participaron en las jornadas de Córdoba: Cooperativa CIT - Arte (Sevilla), Colectivo ALGA (Pontevedra), Asociación PROYECTA (Castellón), Asociación Aula Abierta (Granada), Asociación Trincharte (Málaga), La Casa Invisible (Málaga), Asociación Jovenes De Castuera (Badajoz), Straddle3 (Barcelona), La Fundició (Esplugues), V de Vivienda, La Prospe, Patio Maravillas (Madrid), ASA (Asociación Sostenibilidad y Arquitectura, Córdoba), Poliposeídas (Córdoba). El trabajo de documentación audiovisual corrió a cargo de Guillermo Cruz. 

El encuentro propició o potenció diversas dinámicas de colaboración entre varios de los colectivos participantes. A modo de ejemplo podemos citar algunas de ellas: taller de customización del módulo Espaider3, organizado por La Fundició y Catarqsis, con la colaboración de Recetas Urbanas y Straddle3; talleres Aulagarden, organizados por Aula Abierta, con la participación de Lur Paisajistak, Catarqsis y otros (Granada); jornadas sobre Cultura Libre organizadas por el Patio Maravillas presencia de Poliposeídas, Recetas Urbanas y Straddle3, entre otros (Madrid, marzo 2008); Taller de Customización de los módulos del colectivo Alga, con la participación de Recetas Urbanas y Straddle3 (Vigo, abril 2008); jornadas sobre Espacio Público celebradas en Castellón, organizadas por la Asociación Proyecta y con la presencia de varios colectivos (Castellón, julio 2008) ; película Espanish Dream, de Guillermo Cruz y Santiago Cirugeda, con la intervención de V de Vivienda; participación o colaboración de varios de los colectivos en el Festival d'Arts No Convencionals (Arbúcies, Girona, agosto 2008). 


!!OBJETIVOS 

Se trata de un encuentro de colectivos y agentes sociales de diversa procedencia, en el que el arte y la arquitectura se utilizan como excusa para pensar y debatir sobre la construcción y gestión participativa del entorno urbano (derecho a ciudad, 'común', innovación política, cultura como herramienta, reciclaje, redes sociales, etc). los colectivos participantes proceden, entre otros, de los campos del asociacionismo urbano, educación, arte, ecología, pensamiento crítico, arquitectura, agitación cultural, cooperativismo, vivienda, hacktivismo y derecho. 

La edición de este año se subtitula 'Lo que hay entre', haciendo referencia a las conexiones entre los distintos elementos de la red y a su relación con el medio social y el entorno urbano. Los intereses comunes, las coincidencias estratégicas y tácticas, la similitud de procedimientos operativos, la complementariedad, el mutualismo, las herramientas de cooperación, los límites, la permeabilidad, las interficies, las sinergias, etc. serán conceptos tratados y debatidos en presentaciones, mesas de trabajo y talleres.


!!METODOLOGÍA 

Con el formato básico de encuentro múltiple, los procedimientos de comunicación a emplear forman dos categorías: 
* la primaria comprende charlas de presentación, reuniones con formato de asamblea y talleres teóricos y prácticos por grupos de trabajo. 
* la secundaria se entiende como complementaria y comprende documentación escrita, visitas y documentos audiovisuales. 

Para esta edición del encuentro Arquitecturas Colectivas se experimentará con un formato poliédrico, con dos sedes principales y varios nodos auxiliares. Este formato pretende permitir la máxima accesibilidad al evento y ser consecuente con la naturaleza colaborativa del mismo. 

Las dos sedes principales son Nautarquía (Sant Pere de Torelló, Barcelona) y Pista Digital (Sevilla). 

Los nodos auxiliares son Alga (Vigo), Los Apartados (Montevideo, Uruguay), Ecocultura TV (Asunción, Paraguay), Patio Maravillas (Madrid), Wikiplaza (Ingràvid, Figueres). Están siendo considerados otros nodos auxiliares. 

En Pista Digital (Sevilla) las sesiones se desarrollarán de lunes 21 a jueves 24 de septiembre. 
El lunes por la mañana se comenzará con la reunión inaugural, en conexión vía internet entre las sedes del encuentro. De 12.00 a 14.00h se desarrollarán presentaciones de colectivos. De las 16.00 a las 20.00 se desarrollarán los talleres temáticos. 
Martes y miércoles se organizarán en presentaciones matinales, de 10.00 a 14.00h y talleres por la tarde, de 16.00 a 20.00h. 
El jueves por la mañana se realizarán las últimas presentaciones, con el horario habitual. Por la tarde se cerrarán los talleres de 16.00 a 17.30 y a las 18.00 se conectará vía internet con los otros nodos para la presentación de conclusiones. 
Las presentaciones celebradas en Pista Digital serán retransmitidas vía web y proyectadas en el resto de nodos. 

En Nautarquía (Sant Pere de Torelló, Barcelona) las sesiones se desarrollarán de martes 22 a sábado 26 de septiembre. 
El martes por la mañana se comenzará con el acto inaugural, en conexión via internet entre las sedes del encuentro. De 12.00 a 14.00h se desarrollarán presentaciones de colectivos. De las 16.00 a las 20.00h se desarrollarán los talleres temáticos. 
El miércoles se darán presentaciones por la mañana, de 10.00 a 14.00h y talleres por la tarde, de 16.00 a 18.00h. A las 18.00h se conectará con las otras sedes para compartir la presentación de conclusiones del nodo de Sevilla. 
El jueves se celebrará la jornada nómada, con visitas y presentaciones en Arbúcies, Girona y Figueres, con salida a las 10.30 y llegada a las 23.00h.
El viernes se celebrarán presentaciones por la mañana, de 10.00 a 14.00h y talleres por la tarde, de 16.00 a 20.00h. 
El sábado de 10.00 a 14.00 horas se continuarán los talleres y mesas de debate, de 16.30 a 19.00 se celebrará la asamblea de cierre con la presentación del resumen de resultados de las mesas de trabajo de Nautarquía, en conexión con los demás nodos. Por la noche, de 20.00h en adelante sesión de despedida con actuaciones en vivo y presentaciones multimedia. 

La mayor parte de las presentaciones celebradas en Nautarquía serán retransmitidas vía web y proyectadas en el resto de nodos. 

De martes a viernes, y en horario nocturno, de 22.00h a 24.00h se transmitirán y proyectarán en todas las sedes documentos audiovisuales relacionados con los temas tratados, varios de estos documentos están producidos por personas o colectivos participantes. 

participantes ya confirmados:
- alga (vigo) - http://www.alg-a.org 
- aptitudefm (barcelona) - http://aptitudefm.contrabanda.org 
- átomos y bits (sevilla) - http://atomosybits.org 
- aula abierta (granada) - http://aulabierta.info 
- bioforum (francia-barcelona) - http://ascasodurruti.info/
- caldo de cultivo (tarragona) - http://www.caldodecultivo.com/
- casa invisible (málaga) - http://www.lainvisible.net 
- célula cero (valladolid) - http://celulacero.blogspot.com 
- coloco (paris) - http://www.coloco.org 
- xarxa pel decreixement / col.lectiu crisi (catalunya) - http://decreixement.org 
- democracia (madrid) - http://www.democracia.com.es 
- esta es una plaza (madrid) - http://estaesunaplaza.blogspot.com/
- esto no es un solar (zaragoza)- http://estonoesunsolar.wordpress.com/
- fábrica de sombreros (sevilla) - http://www.fabricadesombreros.org 
- fòrum ribera besòs (sant adrià del besòs) - http://www.forumriberabesos.net
- grup de participació (barcelona) - http://straddle3.net/participacio 
- guillermo cruz (barcelona) 
- hackitectura (sevilla) - http://hackitectura.net 
- horteres de gràcia - (barcelona) - http://horteres.org/
- infoespai (barcelona) - http://www.infoespai.org 
- judith albors (barcelona) 
- la fundició (barcelona) - http://lafundicio.net 
- la matraka cultural (sevilla) - http://lamatrakacultural.wordpress.com 
- lur paisajistak (oiartzun) - http://www.lurpaisajistak.com 
- m-etxea (donosti) - http://m-etxea.blogspot.com/
- oscar guayabero (barcelona) - http://guayabero.net 
- patio maravillas (madrid) - http://www.patiomaravillas.net 
- proyecta (castellón) - http://proyecta.org.es 
- ramón parramón (barcelona) - http://www.idensitat.org 
- re:farm the city (barcelona) - http://www.timtimxtimtim.org/refarm/ 
- sostre cívic (barcelona) - http://www.sostrecivic.org 
- todo por la praxis (madrid) - http://www.todoporlapraxis.es 
- v de vivienda (madrid, barcelona) - http://www.vdevivienda.net 
- vi·bok (sevilla) - http://wyslist.net/


participantes por confirmar:
- asociación de jóvenes de castuera (badajoz) 
- bajo el asfalto está la huerta (madrid) - http://bah.ourproject.org 
- can masdeu (barcelona) - http://www.canmasdeu.net 
- catarqsis (granada) - http://catarqsis.blogspot.com 
- cobijo (madrid) 
- cooperativa de consumo (osona) 
- guifi.net (catalunya) - http://guifi.net 
- la prospe (madrid) - http://laprospeaudiovisual.blogspot.com 
- poliposeídas (córdoba) - http://www.poliposeidas.com 
- ricard vergés (barcelona-sevilla) - http://www.ricardoverges.com/ 
- mietshäuser syndikat (berlin) - http://www.syndikat.org 
- urban catalysts (berlin) - http://www.urbancatalyst.net 




!!PLAZO DE REALIZACIÓN DE LA ACTIVIDAD

ver [[PROGRAMA]]

Sede Pista Digital (Sevilla): del 21 al 24 de septiembre de 2009 
Sede Nautarquía (Sant Pere de Torelló, Barcelona): del 22 al 26 de septiembre de 2009 
En internet: del 21 al 26 de septiembre de 2009 
/***
|Name|ImageMapPlugin|
|Source|http://www.TiddlyTools.com/#ImageMapPlugin|
|Documentation|http://www.TiddlyTools.com/#ImageMapPluginInfo|
|Version|1.2.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|apply image maps ('hotspots') with links to tiddlers|
!!!!!Documentation
>see [[ImageMapPluginInfo]]
!!!!!Revisions
<<<
2009.05.14 [1.2.1] added cursor changes
see [[ImageMapPluginInfo]] for additional revision details
2009.05.09 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageMapPlugin= {major: 1, minor: 2, revision: 1, date: new Date(2009,5,14)};
//}}}
//{{{
config.macros.imageMap = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		// image element must immediately precede macro
		var img=place.lastChild; if (!img||img.nodeName!='IMG') return;
		var map=params[0]; var items=store.getTiddlerText(map,'').split('\n----\n'); if (!items) return;
		var out=['<MAP NAME="'+map+'">'];
		var fmt='<AREA SHAPE="POLY" TIDDLER="%0" COORDS="%1" TITLE="%2" ALT="%2" ONCLICK="%3" STYLE="%4">';
		var click="story.displayTiddler(story.findContainingTiddler(this),this.getAttribute('tiddler'));";
		var style='cursor:pointer';
		for (var i=0; i<items.length; i++) {
			var lines=items[i].split('\n'); var tid=lines.shift(); var coords=lines.join('');
			var tip=store.tiddlerExists(tid)?store.getTiddler(tid).getSubtitle():tid;
			out.push(fmt.format([tid,coords,tip,click,style]));
		}
		out.push('</MAP>');
		createTiddlyElement(place,'span').innerHTML=out.join('');
		img.setAttribute('isMap',true);
		img.setAttribute('useMap','#'+map);
		img.style.border='1px solid #999';
	}
}
//}}}
//{{{
config.macros.mapMaker= {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var img=place.lastChild; // image element must immediately precede macro
		if (!img||img.nodeName!='IMG') return;
		img.onmousemove=function(ev){ ev=ev||window.event;
			var mX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var mY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var ta=this.nextSibling.getElementsByTagName('textarea')[0];
			var lines=ta.value.split('\n'); var last=lines.length?lines.length-1:0;
			var vals=lines[last].split(','); vals.pop(); vals.pop(); lines[last]=vals.join(',');
			lines[last]+=(lines[last].length?',':'')+(mX-findPosX(this))+','+(mY-findPosY(this));
			ta.value=lines.join('\n'); ta.scrollTop=ta.scrollHeight-ta.offsetHeight; ta.focus();
		};
		img.onmouseout=function(ev){ ev=ev||window.event;
			var ta=this.nextSibling.getElementsByTagName('textarea')[0];
			var lines=ta.value.split('\n'); var last=lines.length?lines.length-1:0;
			var vals=lines[last].split(','); vals.pop(); vals.pop(); lines[last]=vals.join(',');
			ta.value=lines.join('\n'); ta.scrollTop=ta.scrollHeight-ta.offsetHeight;
		};
		img.onmouseover=img.onclick=function(ev) { ev=ev||window.event;
			var mX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var mY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var ta=this.nextSibling.getElementsByTagName('textarea')[0];
			ta.value+=(ta.value.length?',':'')+(mX-findPosX(this))+','+(mY-findPosY(this));
			ta.scrollTop=ta.scrollHeight-ta.offsetHeight; ta.focus();
		}
		img.style.border='1px solid #999';
		img.style.cursor='crosshair';
		var s=createTiddlyElement(place,'div');
		s.innerHTML+='<div class="toolbar">'
			+'<a href="javascript:;" '
			+'onclick="config.macros.mapMaker.load(this.parentNode.nextSibling)">load map</a>'
			+'<a href="javascript:;" '
			+'onclick="config.macros.mapMaker.save(this.parentNode.nextSibling)">save map</a>'
			+'</div>'
			+'<textarea rows="5" style="display:block;clear:both;width:100%;"></textarea>';
	},
	load: function(ta) {
		var tid=prompt('Enter a tiddler title:',ta.getAttribute('tiddler')||'');
		if (!tid||!tid.length) return; // cancelled by user
		ta.value=store.getTiddlerText(tid,''); ta.setAttribute('tiddler',tid);
		return false;
	},
	save: function(ta) {
		var tid=prompt('Enter a tiddler title:',ta.getAttribute('tiddler')||'NewImageMap');
		while (tid && tid.length && store.tiddlerExists(tid)) {
			if(confirm(config.messages.overwriteWarning.format([tid]))) break;
			var tid=prompt('Enter a different tiddler title:',tid);
		}
		if (!tid||!tid.length) return; // cancelled by user
		store.saveTiddler(tid,tid,ta.value,config.options.txtUserName,new Date(),['imageMap'],{});
		story.displayTiddler(null,tid);
		displayMessage('image map saved to: '+tid);
		ta.setAttribute('tiddler',tid);
		return false;
	}
}
//}}}
/***
|''Name:''|abego.IncludePlugin|
|''Version:''|1.0.1 (2007-04-30)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#IncludePlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IncludePlugin Documentation|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]]|
|''Community:''|([[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23IncludePlugin]]) ([[Support|http://groups.google.com/group/TiddlyWiki]])|
|''Copyright:''|&copy; 2007 [[abego Software|http://www.abego-software.de]]|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''~CoreVersion:''|2.1.3|
|''Browser:''|Firefox 1.5.0.9 or better; Internet Explorer 6.0|
***/
/***
This plugin's source code is compressed (and hidden). Use this [[link|http://tiddlywiki.abego-software.de/archive/IncludePlugin/Plugin-Include-src.1.0.0.js]] to get the readable source code.
***/
///%
if(!window.abego){window.abego={};}var invokeLater=function(_1,_2,_3){return abego.invokeLater?abego.invokeLater(_1,_2,_3):setTimeout(_1,_2);};abego.loadFile=function(_4,_5,_6){var _7=function(_8,_9,_a,_b,_c){return _8?_5(_a,_b,_9):_5(undefined,_b,_9,"Error loading %0".format([_b]));};if(_4.search(/^((http(s)?)|(file)):/)!=0){if(_4.search(/^((.\:\\)|(\\\\)|(\/))/)==0){_4="file://"+_4;}else{var _d=document.location.toString();var i=_d.lastIndexOf("/");_4=_d.substr(0,i+1)+_4;}_4=_4.replace(/\\/mg,"/");}loadRemoteFile(_4,_7,_6);};abego.loadTiddlyWikiStore=function(_f,_10,_11,_12){var _13=function(_14,_15){if(_12){_12(_14,"abego.loadTiddlyWikiStore",_15,_f,_11);}};var _16=function(_17,_18){var _19=_18.indexOf(startSaveArea);var _1a=_18.indexOf("<!--POST-BODY-END--"+">");var _1b=_18.lastIndexOf(endSaveArea,_1a==-1?_18.length:_1a);if((_19==-1)||(_1b==-1)){return config.messages.invalidFileError.format([_f]);}var _1c="<html><body>"+_18.substring(_19,_1b+endSaveArea.length)+"</body></html>";var _1d=document.createElement("iframe");_1d.style.display="none";document.body.appendChild(_1d);var doc=_1d.document;if(_1d.contentDocument){doc=_1d.contentDocument;}else{if(_1d.contentWindow){doc=_1d.contentWindow.document;}}doc.open();doc.writeln(_1c);doc.close();var _1f=doc.getElementById("storeArea");_17.loadFromDiv(_1f,"store");_1d.parentNode.removeChild(_1d);return null;};var _20=function(_21){_13("Error when loading %0".format([_f]),"Failed");_10(undefined,_f,_11,_21);return _21;};var _22=function(_23){_13("Loaded %0".format([_f]),"Done");_10(_23,_f,_11);return null;};var _24=function(_25,_26,_27,_28){if(_25===undefined){_20(_28);return;}_13("Processing %0".format([_f]),"Processing");var _29=config.messages.invalidFileError;config.messages.invalidFileError="The file '%0' does not appear to be a valid TiddlyWiki file";try{var _2a=new TiddlyWiki();var _2b=_16(_2a,_25);if(_2b){_20(_2b);}else{_22(_2a);}}catch(ex){_20(exceptionText(ex));}finally{config.messages.invalidFileError=_29;}};_13("Start loading %0".format([_f]),"Started");abego.loadFile(_f,_24,_11);};(function(){if(abego.TiddlyWikiIncluder){return;}var _2c="waiting";var _2d="loading";var _2e=1000;var _2f=-200;var _30=-100;var _31=-300;var _32;var _33=[];var _34={};var _35=[];var _36;var _37=[];var _38;var _39=function(){if(_32===undefined){_32=config.options.chkUseInclude===undefined||config.options.chkUseInclude;}return _32;};var _3a=function(url){return "No include specified for %0".format([url]);};var _3c=function(){var _3d=_35;_35=[];if(_3d.length){for(var i=0;i<_37.length;i++){_37[i](_3d);}}};var _3f;var _40=function(){if(_36!==undefined){clearInterval(_36);}_3f=0;var _41=function(){abego.TiddlyWikiIncluder.sendProgress("","","Done");};_36=setInterval(function(){_3f++;if(_3f<=10){return;}clearInterval(_36);_36=undefined;abego.TiddlyWikiIncluder.sendProgress("Refreshing...","","");refreshDisplay();invokeLater(_41,0,_2f);},1);};var _42=function(_43){var _44;for(var i=0;i<_33.length;i++){var _46=abego.TiddlyWikiIncluder.getStore(_33[i]);if(_46&&(_44=_43(_46,_33[i]))){return _44;}}};var _47=function(){if(!window.store){return invokeLater(_47,100);}var _48=store.fetchTiddler;store.fetchTiddler=function(_49){var t=_48.apply(this,arguments);if(t){return t;}if(config.shadowTiddlers[_49]!==undefined){return undefined;}if(_49==config.macros.newTiddler.title){return undefined;}return _42(function(_4b,url){var t=_4b.fetchTiddler(_49);if(t){t.includeURL=url;}return t;});};if(_33.length){_40();}};var _4e=function(){if(!window.store){return invokeLater(_4e,100);}var _4f=store.getTiddlerText("IncludeList");if(_4f){wikify(_4f,document.createElement("div"));}};var _50=function(_51){var _52=function(){var _53=store.forEachTiddler;var _54=function(_55){var _56={};var _57;var _58=function(_59,_5a){if(_56[_59]){return;}_56[_59]=1;if(_57){_5a.includeURL=_57;}_55.apply(this,arguments);};_53.call(store,_58);for(var n in config.shadowTiddlers){_56[n]=1;}_56[config.macros.newTiddler.title]=1;_42(function(_5c,url){_57=url;_5c.forEachTiddler(_58);});};store.forEachTiddler=_54;try{return _51.apply(this,arguments);}finally{store.forEachTiddler=_53;}};return _52;};var _5e=function(_5f,_60){return _5f[_60]=_50(_5f[_60]);};abego.TiddlyWikiIncluder={};abego.TiddlyWikiIncluder.setProgressFunction=function(_61){_38=_61;};abego.TiddlyWikiIncluder.getProgressFunction=function(_62){return _38;};abego.TiddlyWikiIncluder.sendProgress=function(_63,_64,_65){if(_38){_38.apply(this,arguments);}};abego.TiddlyWikiIncluder.onError=function(url,_67){displayMessage("Error when including '%0':\n%1".format([url,_67]));};abego.TiddlyWikiIncluder.hasPendingIncludes=function(){for(var i=0;i<_33.length;i++){var _69=abego.TiddlyWikiIncluder.getState(_33[i]);if(_69==_2c||_69==_2d){return true;}}return false;};abego.TiddlyWikiIncluder.getIncludes=function(){return _33.slice();};abego.TiddlyWikiIncluder.getState=function(url){var s=_34[url];if(!s){return _3a(url);}return typeof s=="string"?s:null;};abego.TiddlyWikiIncluder.getStore=function(url){var s=_34[url];if(!s){return _3a(url);}return s instanceof TiddlyWiki?s:null;};abego.TiddlyWikiIncluder.include=function(url,_6f){if(!_39()||_34[url]){return;}var _70=this;_33.push(url);_34[url]=_2c;var _71=function(_72,_73,_74,_75){if(_72===undefined){_34[url]=_75;_70.onError(url,_75);return;}_34[url]=_72;_35.push(url);invokeLater(_3c);};var _76=function(){_34[url]=_2d;abego.loadTiddlyWikiStore(url,_71,null,_38);};if(_6f){invokeLater(_76,_6f);}else{_76();}};abego.TiddlyWikiIncluder.forReallyEachTiddler=function(_77){var _78=function(){store.forEachTiddler(_77);};_50(_78).call(store);};abego.TiddlyWikiIncluder.getFunctionUsingForReallyEachTiddler=_50;abego.TiddlyWikiIncluder.useForReallyEachTiddler=_5e;abego.TiddlyWikiIncluder.addListener=function(_79){_37.push(_79);};abego.TiddlyWikiIncluder.addListener(_40);if(config.options.chkUseInclude===undefined){config.options.chkUseInclude=true;}config.shadowTiddlers.AdvancedOptions+="\n<<option chkUseInclude>> Include ~TiddlyWikis (IncludeList | IncludeState | [[help|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]])\n^^(Reload this ~TiddlyWiki to make changes become effective)^^";config.shadowTiddlers.IncludeState="<<includeState>>";var _7a=function(e,_7c,_7d){if(!anim||!abego.ShowAnimation){e.style.display=_7c?"block":"none";return;}anim.startAnimating(new abego.ShowAnimation(e,_7c,_7d));};abego.TiddlyWikiIncluder.getDefaultProgressFunction=function(){setStylesheet(".includeProgressState{\n"+"background-color:#FFCC00;\n"+"position:absolute;\n"+"right:0.2em;\n"+"top:0.2em;\n"+"width:7em;\n"+"padding-left:0.2em;\n"+"padding-right:0.2em\n"+"}\n","abegoInclude");var _7e=function(){var e=document.createElement("div");e.className="includeProgressState";e.style.display="none";document.body.appendChild(e);return e;};var _80=_7e();var _81=function(_82){removeChildren(_80);createTiddlyText(_80,_82);_7a(_80,true,0);};var _83=function(){invokeLater(function(){_7a(_80,false,_2e);},100,_30);};var _84=function(_85,_86,_87,url,_89){if(_87=="Done"||_87=="Failed"){_83();return;}if(_86=="abego.loadTiddlyWikiStore"){_3f=0;if(_87=="Processing"){_81("Including...");}}else{_81(_85);}};return _84;};abego.TiddlyWikiIncluder.setProgressFunction(abego.TiddlyWikiIncluder.getDefaultProgressFunction());config.macros.include={};config.macros.include.handler=function(_8a,_8b,_8c,_8d,_8e,_8f){_8c=_8e.parseParams("url",null,true,false,true);var _90=parseInt(getParam(_8c,"delay","0"));var _91=_8c[0]["url"];var _92=getFlag(_8c,"hide",false);if(!_92){createTiddlyText(createTiddlyElement(_8a,"code"),_8d.source.substring(_8d.matchStart,_8d.nextMatch));}for(var i=0;_91&&i<_91.length;i++){abego.TiddlyWikiIncluder.include(_91[i],_90);}};config.macros.includeState={};config.macros.includeState.handler=function(_94,_95,_96,_97,_98,_99){var _9a=function(){var s="";var _9c=abego.TiddlyWikiIncluder.getIncludes();if(!_9c.length){return "{{noIncludes{\nNo includes or 'include' is disabled (see AdvancedOptions)\n}}}\n";}s+="|!Address|!State|\n";for(var i=0;i<_9c.length;i++){var inc=_9c[i];s+="|{{{"+inc+"}}}|";var t=abego.TiddlyWikiIncluder.getState(inc);s+=t?"{{{"+t+"}}}":"included";s+="|\n";}s+="|includeState|k\n";return s;};var _a0=function(){removeChildren(div);wikify(_9a(),div);if(abego.TiddlyWikiIncluder.hasPendingIncludes()){invokeLater(_a0,500,_31);}};var div=createTiddlyElement(_94,"div");invokeLater(_a0,0,_31);};var _a2=Tiddler.prototype.isReadOnly;Tiddler.prototype.isReadOnly=function(){return _a2.apply(this,arguments)||this.isIncluded();};Tiddler.prototype.isIncluded=function(){return this.includeURL!=undefined;};Tiddler.prototype.getIncludeURL=function(){return this.includeURL;};var _a3={getMissingLinks:1,getOrphans:1,getTags:1,reverseLookup:1,updateTiddlers:1};for(var n in _a3){_5e(TiddlyWiki.prototype,n);}var _a5=function(){if(abego.IntelliTagger){_5e(abego.IntelliTagger,"assistTagging");}};var _a6=function(){if(config.macros.forEachTiddler){_5e(config.macros.forEachTiddler,"findTiddlers");}};_47();invokeLater(_4e,100);invokeLater(_a5,100);invokeLater(_a6,100);})();
//%/
!About the ~IncludePlugin
Include other ~TiddlyWikis in your (main) TiddlyWiki, link to included tiddlers, view them in your (main) TiddlyWiki, without opening another TiddlyWiki. Even „search“ looks for included tiddlers. 

A great way to share tiddlers, to speed up "save changes" and to keep your ~TiddlyWikis small.
!Smaller ~TiddlyWikis
Other than „imported“ tiddlers, included tiddlers are not copied into your main ~TiddlyWiki. This keeps your individual ~TiddlyWikis small. 

Since your TiddlyWikis will become smaller (if you reorganize your TiddlyWikis using the IncludePlugin) also "save changes" becomes faster. You may even consider switching on "AutoSave" or "SaveBackups" again.

See also: [[Including even smaller TiddlyWiki Files]]

!Sharing ~TiddlyWikis
You may include one ~TiddlyWiki in several other ~TiddlyWikis. Changes you make to this shared ~TiddlyWiki are automatically reflected the next time you open the other ~TiddlyWikis, without any extra „import“ step or so.

''Examples''
* you may want to have a single „~TiddlyWikiHelp“ ~TiddlyWiki that you include in all your ~TiddlyWikis. So you can quickly find help information without looking into other files, and without blowing up your ~TiddlyWikis.
* You "archive" your old journal tiddlers into an extra TiddlyWiki (e.g. one per month) and just include the archived journals in you "current month diary/blog". This way you still have access to the old information (e.g. to reference historic information) but you avoid your diary/blog will get to large.
* ...

See also:
* [[How to use the IncludePlugin]]
* [[How Tiddlers are found]]
* [[IncludePlugin Options]]
* [[The "include" Macro]]
* [[The "includeState" Macro]]
* [[Programming with the IncludePlugin]]
* [[Troubleshooting the IncludePlugin]]
Using the AdvancedOptions page you have an easy way to configure the IncludePlugin options. 

You will find a section like this:
{{optionsBlock{
<<option chkUseInclude>> Include ~TiddlyWikis (IncludeList | IncludeState | [[help|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]])
^^(Reload this ~TiddlyWiki to make changes become effective)^^
}}}
* By default the IncludePlugin is enabled. If you uncheck the checkbox external TiddlyWikis are not included.
* The IncludeList is the preferred place for your {{{<<include ...>>}}} lines.
* The IncludeState page gives you can an overview what TiddlyWikis are included etc.
* The help directs you to the online documentation of the Include Plugin.
/***
|''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. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''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|
***/
//{{{
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);
}
//}}}
[[INTRO (es)]]
[[]]
[[]]
[[PROGRAMA]]
[[CONNECTORS]]
[[TAGS]]
[[]]
[[]]
[[sede nautarquia]]
[[sede pista digital]]
[[sede wikiplaza|sede wikiplaza ingràvid]]
[[]]
[[]]

<html><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/es/deed.ca" target="_blank" ><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/3.0/es/88x31.png" /></a><br /></html>

<<toggleSideBar sb "hide right side" hide>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->

<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 30px; color:#000; font-size: 15px; font-family:Tahoma; background-color:#eee;"><b>arquitecturas colectivas</b> se está cargando<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">optimizado para firefox, requiere Javascript.</span></div>
<<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
es un encuentro, para presentarnos y conocernos los paraderos
escuchar y debatir pensamientos, experiencias y propuestas
reflexionar sobre las posibilidades de conexión y cooperación
seguir explorando estrategias para intervenir y buscar el sentido perdido de la palabra civismo
diversas pequeñas presentaciones y mucho diálogo

este programa es sólo un borrador

!!miércoles 23 septiembre, 2009

mañana ([[sede nautarquia]]):
* presentación del encuentro. 
* diálogos: sobre la organización del encuentro
* [[esto no es un solar]]
* [[re:farm the city]]
* [[nautarquia]]

tarde ([[sede nautarquia]]):
* camiones, contenedores, colectivos
* paula álvarez, [[vi·bok]]
* [[grup de participació]] 
* [[bioforum]]
* [[la fundició]]
* diálogos: colectivos, redes y encuentros en el tercer paisaje

noche ([[sede nautarquia]]):
*proyección de 'spanish dream' de [[guillermo cruz]] 

!!jueves 24 septiembre, 2009

mañana  ([[sede nautarquia]] + bòlit girona):
* salida hacia girona
* [[recetas urbanas]]: el niu
* [[alg-a]]
* diálogos: en lugar de cultura

tarde ([[sede wikiplaza ingràvid]]):
* [[aulaabierta]], iñigo segurola, santi cirugeda, sobre aulagarden
* [[coloco]]: jardín en parís
* [[esta es una plaza]]
* diálogos: recuperando el espacio colectivo
* presentación [[wikiplaza]]
* presentación [[ingràvid]]

noche ([[sede wikiplaza ingràvid]]):
* proyección de 'el taxista ful'
* retorno a sant pere de torelló

!!viernes 25 septiembre, 2009

mañana ([[sede nautarquia]]):
* josé milara
* [[sostre cívic]]
* [[m-etxea]]
* [[v de vivienda]]
* diálogos: qué pasa con la casa?

tarde ([[sede nautarquia]]+[[sede pista digital]]):
* [[caldo de cultivo]], künstainer
* [[forum ribera besós / bisaucii. colectivo urbano]]
* [[la matraka cultural]]
* [[todo por la praxis]]
* conexión con montevideo
* diálogos: … y que pasa con el barrio?

noche ([[sede nautarquia]]):
* conexión con asunción
* audiovisuales a concretar

!!sábado 26 septiembre, 2009

mañana ([[sede nautarquia]]):
* [[coloco]]: momento-monumento
* [[horteres]]: hort comunitari de gràcia
* caja de herramientas
* [[patio maravillas]]
* presentación a concretar
* diálogos: recuperación del patrimonio inmueble

tarde ([[sede nautarquia]]+[[sede pista digital]]):
* [[atomos y bits]]
* [[fábrica de sombreros]]
* colectivo crisis andalucía y [[xarxa pel decreixement / col.lectiu crisi]] catalunya 
* [[pista digital]]
* presentación a concretar
* diálogos: qué, a dónde vamos?

noche ([[sede nautarquia]]):
* poliposeídas (vivo)
* perrocker (vivo)
* dj's jam







<!--{{{-->
<div id='header' class='header'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='searchBar' macro='search'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>

</div>
<div id='mainMenu'>
<span refresh='content' tiddler='MainMenu'></span>
<span id='noticeBoard' refresh='content' tiddler='NoticeBoard'></span>

</div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='MochaSideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<div id='contentFooter' refresh='content' tiddler='contentFooter'></div>
<!--}}}-->
/***
|''Name:''|RSSReaderPlugin|
|''Description:''|This plugin provides a RSSReader for TiddlyWiki|
|''Version:''|1.1.2|
|''Date:''|2008-09-02|
|''Source:''|http://tiddlywiki.bidix.info/#RSSReaderPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#RSSReaderPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''Credit:''|BramChen for RssNewsMacro|
|''[[License]]:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''OptionalRequires:''|http://www.tiddlytools.com/#NestedSlidersPlugin|
***/
//{{{
version.extensions.RSSReaderPlugin = {
	major: 1, minor: 1, revision: 2,
	date: new Date("2008-09-02"),
	source: "http://TiddlyWiki.bidix.info/#RSSReaderPlugin",
	author: "BidiX",
	coreVersion: '2.2.0'
};

config.macros.rssReader = {
	dateFormat: "DDD, DD MMM YYYY",
	itemStyle: "display: block;border: 1px solid black;padding: 5px;margin: 5px;", //useed  '@@'+itemStyle+itemText+'@@'
	msg:{
		permissionDenied: "Permission to read preferences was denied.",
		noRSSFeed: "No RSS Feed at this address %0",
		urlNotAccessible: " Access to %0 is not allowed"
	},
	cache: [], 	// url => XMLHttpRequest.responseXML
	desc: "noDesc",
	
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var desc = params[0];
		var feedURL = params[1];
		var toFilter = (params[2] ? true : false);
		var filterString = (toFilter?(params[2].substr(0,1) == ' '? tiddler.title:params[2]):'');
		var place = createTiddlyElement(place, "div", "RSSReader");
		wikify("^^<<rssFeedUpdate "+feedURL+" [[" + tiddler.title + "]]>>^^\n",place);
		if (this.cache[feedURL]) {
			this.displayRssFeed(this.cache[feedURL], feedURL, place, desc, toFilter, filterString);
		}
		else {
			var r = loadRemoteFile(feedURL,config.macros.rssReader.processResponse, [place, desc, toFilter, filterString]);
			if (typeof r == "string")
				displayMessage(r);
		}
		
	},

	// callback for loadRemoteFile 
	// params : [place, desc, toFilter, filterString]
	processResponse: function(status, params, responseText, url, xhr) { // feedURL, place, desc, toFilter, filterString) {	
		if (window.netscape){
			try {
				if (document.location.protocol.indexOf("http") == -1) {
					netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
				}
			}
			catch (e) { displayMessage(e.description?e.description:e.toString()); }
		}
		if (xhr.status == 404)
		 {
			displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
			return;
		}
		if (!status)
		 {
			displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
			return;
		}
		if (xhr.responseXML) {
			// response is interpreted as XML
			config.macros.rssReader.cache[url] = xhr.responseXML;
			config.macros.rssReader.displayRssFeed(xhr.responseXML, params[0], url, params[1], params[2], params[3]);
		}
		else {
			if (responseText.substr(0,5) == "<?xml") {
				// response exists but not return as XML -> try to parse it 
				var dom = (new DOMParser()).parseFromString(responseText, "text/xml"); 
				if (dom) {
					// parsing successful so use it
					config.macros.rssReader.cache[url] = dom;
					config.macros.rssReader.displayRssFeed(dom, params[0], url, params[1], params[2], params[3]);
					return;
				}
			}
			// no XML display as html 
			wikify("<html>" + responseText + "</html>", params[0]);
			displayMessage(config.macros.rssReader.msg.noRSSFeed.format([url]));
		}
	},

	// explore down the DOM tree
	displayRssFeed: function(xml, place, feedURL, desc, toFilter, filterString){
		// Channel
		var chanelNode = xml.getElementsByTagName('channel').item(0);
		var chanelTitleElement = (chanelNode ? chanelNode.getElementsByTagName('title').item(0) : null);
		var chanelTitle = "";
		if ((chanelTitleElement) && (chanelTitleElement.firstChild)) 
			chanelTitle = chanelTitleElement.firstChild.nodeValue;
		var chanelLinkElement = (chanelNode ? chanelNode.getElementsByTagName('link').item(0) : null);
		var chanelLink = "";
		if (chanelLinkElement) 
			chanelLink = chanelLinkElement.firstChild.nodeValue;
		var titleTxt = "!![["+chanelTitle+"|"+chanelLink+"]]\n";
		var title = createTiddlyElement(place,"div",null,"ChanelTitle",null);
		wikify(titleTxt,title);
		// ItemList
		var itemList = xml.getElementsByTagName('item');
		var article = createTiddlyElement(place,"ul",null,null,null);
		var lastDate;
		var re;
		if (toFilter) 
			re = new RegExp(filterString.escapeRegExp());
		for (var i=0; i<itemList.length; i++){
			var titleElm = itemList[i].getElementsByTagName('title').item(0);
			var titleText = (titleElm ? titleElm.firstChild.nodeValue : '');
			if (toFilter && ! titleText.match(re)) {
				continue;
			}
			var descText = '';
			descElem = itemList[i].getElementsByTagName('description').item(0);
			if (descElem){
				try{
					for (var ii=0; ii<descElem.childNodes.length; ii++) {
						descText += descElem.childNodes[ii].nodeValue;
					}
				}
				catch(e){}
				descText = descText.replace(/<br \/>/g,'\n');
				if (desc == "asHtml")
					descText = "<html>"+descText+"</html>";
			}
			var linkElm = itemList[i].getElementsByTagName("link").item(0);
			var linkURL = linkElm.firstChild.nodeValue;
			var pubElm = itemList[i].getElementsByTagName('pubDate').item(0);
			var pubDate;
			if (!pubElm) {
				pubElm = itemList[i].getElementsByTagName('date').item(0); // for del.icio.us
				if (pubElm) {
					pubDate = pubElm.firstChild.nodeValue;
					pubDate = this.formatDateString(this.dateFormat, pubDate);
					}
					else {
						pubDate = '0';
					}
				}
			else {
				pubDate = (pubElm ? pubElm.firstChild.nodeValue : 0);
				pubDate = this.formatDate(this.dateFormat, pubDate);
			}
			titleText = titleText.replace(/\[|\]/g,'');
			var rssText = '*'+'[[' + titleText + '|' + linkURL + ']]' + '' ;
			if ((desc != "noDesc") && descText){
				rssText = rssText.replace(/\n/g,' ');
				descText = '@@'+this.itemStyle+descText + '@@\n';				
				if (version.extensions.nestedSliders){
					descText = '+++[...]' + descText + '===';
				}
				rssText = rssText + descText;
			}
			var story;
			if ((lastDate != pubDate) && ( pubDate != '0')) {
				story = createTiddlyElement(article,"li",null,"RSSItem",pubDate);
				lastDate = pubDate;
			}
			else {
				lastDate = pubDate;
			}
			story = createTiddlyElement(article,"div",null,"RSSItem",null);
			wikify(rssText,story);
		}
	},
	
	formatDate: function(template, date){
		var dateString = new Date(date);
		// template = template.replace(/hh|mm|ss/g,'');
		return dateString.formatString(template);
	},
	
	formatDateString: function(template, date){
		var dateString = new Date(date.substr(0,4), date.substr(5,2) - 1, date.substr(8,2)
			);
		return dateString.formatString(template);
	}
	
};

config.macros.rssFeedUpdate = {
	label: "Update",
	prompt: "Clear the cache and redisplay this RssFeed",
	handler: function(place,macroName,params) {
		var feedURL = params[0];
		var tiddlerTitle = params[1];
		createTiddlyButton(place, this.label, this.prompt, 
			function () {
				if (config.macros.rssReader.cache[feedURL]) {
					config.macros.rssReader.cache[feedURL] = null; 
			}
			story.refreshTiddler(tiddlerTitle,null, true);
		return false;});
	}
};

//}}}
<<showUpdates onlyTag:RecentUpdates maxEntries:8>>
{{{<<showUpdates onlyTag:RecentUpdates maxEntries:8>>}}}

----

<<showUpdates onlyTag:RecentUpdates write:'(index==0? countLine + "\n{{blog{\n":"")+(index<8?"!!![["+tiddler.title+"]]@@color:#999;font-size:70%;" +tiddler.modified.formatString(" - DD/MM/YY")+"@@\n" +"{{excerpt{\n"+tiddler.text.substr(0,100)+"...\n[[read more...|"+tiddler.title+"]]\n}}}\n":"")+(index==count-1?"}}}":"")' >>

{{{
<<showUpdates
onlyTag:RecentUpdates
write:
'(index==0? countLine + "\n{{blog{\n":"")+
(index<8?"!!![["+tiddler.title+"]]@@color:#999;font-size:70%;" +tiddler.modified.formatString(" - DD/MM/YY")+"@@\n" +"{{excerpt{\n"+tiddler.text.substr(0,100)+"...\n[[read more...|"+tiddler.title+"]]\n}}}\n":"")+
(index==count-1?"}}}":"")' 
>>
}}}

this one requires the following css in your StyleSheet:
//{{{
.blog h2, .blog h3, .blog h4{
  margin:0;
  padding:0;
  border-bottom:none;
}
.blog {margin-left:1.5em;}  

.blog .excerpt {
  margin:0;
  margin-top:0.3em;
  padding: 0;
  margin-left:1em;
  padding-left:1em;
  font-size:90%;
  border-left:1px solid #ddd;
}
//}}}
/***
|Name|ShowUpdatesPlugin|
|Created by|SaqImtiaz|
|Version|0.2 |
|Requires|~TW2.x|
!!!Description:
Allows you to list tiddlers that have changed since the users last visit. You can list only all changed tiddlers, or filter them to only show tiddlers that have or do not have a specific tag. By default a simple list of the titles of changed tiddlers is created. However, using an extremely versatile syntax you can provide a custom template for the generated text.

!!!Examples: 
[[ShowUpdatesDocs]]

!!!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.

!!!Syntax:
{{{<<showUpdates>>}}}
additional optional params:
{{{<showUpdates excludeTag:TagToExclude onlyTag:TagToList maxEntries:10 write:CustomWriteParameter >>}}}
excludeTag: ~TagToExclude
onlyTag: ~TagToList
maxEntries: max number of entries displayed when there are no updates. (default is 10, which can be changed in the config.macros.showUpdates.settings part of the code)
write: if a write parameter is not provided, an un-numbered list of the updates is generated. Alternatively, you can specify a custom 'template' for the text generated. The syntax for the write parameter is identical to that of the forEachTiddler macro. Additonal documentation on this syntax will be provided soon.
Some of the variables available in the write parameter are 'index', 'count' and 'lastVisit' where lastVisit is the date of the last visit in the format YYYYMMDDHHMM. Also areUpdates is a boolean that is true if there are new updates since the users last visit.

!!!To Do:
*refactor code to facilitate translations
*a streamlined version without the custom write parameter


!!!Code
***/
//{{{
window.lewcidLastVisit = '';
window.old_lewcid_whatsnew_restart = window.restart;
window.restart = function()
{
        if(config.options.txtLastVisit)
                 lewcidLastVisit= config.options.txtLastVisit;
        config.options.txtLastVisit = (new Date()).convertToYYYYMMDDHHMM();
        saveOptionCookie('txtLastVisit');
        window.old_lewcid_whatsnew_restart();
}

TiddlyWiki.prototype.lewcidGetTiddlers = function(field,excludeTag,includeTag,updatesOnly)
{
              var results = [];
              this.forEachTiddler(function(title,tiddler)
                      {
                      if(excludeTag == undefined || !tiddler.isTagged(excludeTag))
                                    if(includeTag == undefined ||  tiddler.isTagged(includeTag))
                                            if ( updatesOnly == false || tiddler.modified.convertToYYYYMMDDHHMM()>lewcidLastVisit)
                                                  results.push(tiddler);
                      });
              if(field)
                  results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
              return results;
}

config.macros.showUpdates={};
config.macros.showUpdates.settings =
{
         maxEntries: 10  //max items to show, if there are no updates since last visit
}

config.macros.showUpdates.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
          var args = paramString.parseParams("list",null,true);
          var write = getParam(args, "write", undefined);
          var onlyTag = getParam(args, "onlyTag", undefined);
          var excludeTag = getParam(args, "excludeTag", undefined);
          var sortBy = "modified";
          var maxEntries = getParam(args,"maxEntries",this.settings.maxEntries);

          if (lewcidLastVisit) 
                {var tiddlers = store.lewcidGetTiddlers(sortBy,excludeTag,onlyTag,true);
                 var areUpdates = tiddlers.length>0? true:false;}

          if (!lewcidLastVisit)
               {var countLine = "!!Recent Updates:";
               var tiddlers = store.lewcidGetTiddlers(sortBy,excludeTag,onlyTag,false);
               var areUpdates = false;}
          else if (tiddlers.length == 0)
               {var countLine = "!!@@color:red;No new updates@@ since your last visit. @@color:#999;font-size:70%;" + (Date.convertFromYYYYMMDDHHMM(lewcidLastVisit)).formatString(" (DD/MM/YY)") + "@@\n!!Recent Updates:";
               var tiddlers = store.lewcidGetTiddlers(sortBy,excludeTag,onlyTag,false);}
          else
               {var countLine ="!!@@color:red;"+ tiddlers.length + "@@ new " + (tiddlers.length==1?"update":"updates") + " since your last visit: @@color:#999;font-size:70%;" + (Date.convertFromYYYYMMDDHHMM(lewcidLastVisit)).formatString(" (DD/MM/YY)") + "@@";}

          tiddlers = tiddlers.reverse();
          var lastVisit = lewcidLastVisit? lewcidLastVisit:undefined;
          var count = areUpdates == true? tiddlers.length : maxEntries;
          var sp = createTiddlyElement(place,"span","showUpdates");
          if (write==undefined)
                 {
                  wikify(countLine,sp);
                  var list = createTiddlyElement(sp,"ul");
                  for (var i = 0; i < count; i++)
                          {
                           var tiddler = tiddlers[i];
                           createTiddlyLink(createTiddlyElement(list,"li"), tiddler.title, true);
                          }
                 }
          else
                {
                 var list = '';
                 for (var index = 0; index < count; index++) {
                 var tiddler = tiddlers[index];
                 list += eval(write); }
                 wikify(list, sp);
                }
}
//}}}
/***
|''Name''|SimpleSearchPlugin|
|''Description''|displays search results as a simple list of matching tiddlers|
|''Authors''|FND|
|''Version''|0.4.0|
|''Status''|stable|
|''Source''|http://devpad.tiddlyspot.com/#SimpleSearchPlugin|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/plugins/SimpleSearchPlugin.js|
|''License''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''Keywords''|search|
!Revision History
!!v0.2.0 (2008-08-18)
* initial release
!!v0.3.0 (2008-08-19)
* added Open All button (renders Classic Search option obsolete)
* sorting by relevance (title matches before content matches)
!!v0.4.0 (2008-08-26)
* added tag matching
!To Do
* tag matching optional
* animations for container creation and removal
* when clicking on search results, do not scroll to the respective tiddler (optional)
* use template for search results
!Code
***/
//{{{
if(!version.extensions.SimpleSearchPlugin) { //# ensure that the plugin is only installed once
version.extensions.SimpleSearchPlugin = { installed: true };

if(!plugins) { var plugins = {}; }
plugins.SimpleSearchPlugin = {
	heading: "Search Results",
	containerId: "searchResults",
	btnCloseLabel: "close",
	btnCloseTooltip: "dismiss search results",
	btnCloseId: "search_close",
	btnOpenLabel: "Open all",
	btnOpenTooltip: "open all search results",
	btnOpenId: "search_open",
	
	displayResults: function(matches, query) {
		story.refreshAllTiddlers(true); // update highlighting within story tiddlers
		var el = document.getElementById(this.containerId);
		query = '"""' + query + '"""'; // prevent WikiLinks
		if(el) {
			removeChildren(el);
		} else { //# fallback: use displayArea as parent
			var container = document.getElementById("displayArea");
			el = document.createElement("div");
			el.setAttribute("id", this.containerId);
			el = container.insertBefore(el, container.firstChild);
		}
		var msg = "!" + this.heading + "\n";
		if(matches.length > 0) {
			msg += "''" + config.macros.search.successMsg.format([matches.length.toString(), query]) + ":''\n";
			this.results = [];
			for(var i = 0 ; i < matches.length; i++) {
				this.results.push(matches[i].title);
				msg += "* [[" + matches[i].title + "]]\n";
			}
		} else {
			msg += "''" + config.macros.search.failureMsg.format([query]) + "''"; // XXX: do not use bold here!?
		}
		createTiddlyButton(el, this.btnCloseLabel, this.btnCloseTooltip, plugins.SimpleSearchPlugin.closeResults, "button", this.btnCloseId);
		wikify(msg, el);
		if(matches.length > 0) { // XXX: redundant!?
			createTiddlyButton(el, this.btnOpenLabel, this.btnOpenTooltip, plugins.SimpleSearchPlugin.openAll, "button", this.btnOpenId);
		}
	},

	closeResults: function() {
		var el = document.getElementById(plugins.SimpleSearchPlugin.containerId);
		removeNode(el);
		plugins.SimpleSearchPlugin.results = null;
		highlightHack = null;
	},

	openAll: function(ev) {
		story.displayTiddlers(null, plugins.SimpleSearchPlugin.results);
		return false;
	}
};

config.shadowTiddlers.StyleSheetSimpleSearch = "/*{{{*/\n" +
	"#" + plugins.SimpleSearchPlugin.containerId + " {\n" +
	"\toverflow: auto;\n" +
	"\tpadding: 5px 1em 10px;\n" +
	"\tbackground-color: [[ColorPalette::TertiaryPale]];\n" +
	"}\n\n" +
	"#" + plugins.SimpleSearchPlugin.containerId + " h1 {\n" +
	"\tmargin-top: 0;\n" +
	"\tborder: none;\n" +
	"}\n\n" +
	"#" + plugins.SimpleSearchPlugin.containerId + " ul {\n" +
	"\tmargin: 0.5em;\n" +
	"\tpadding-left: 1.5em;\n" +
	"}\n\n" +
	"#" + plugins.SimpleSearchPlugin.containerId + " .button {\n" +
	"\tdisplay: block;\n" +
	"\tborder-color: [[ColorPalette::TertiaryDark]];\n" +
	"\tpadding: 5px;\n" +
	"\tbackground-color: [[ColorPalette::TertiaryLight]];\n" +
	"}\n\n" +
	"#" + plugins.SimpleSearchPlugin.containerId + " .button:hover {\n" +
	"\tborder-color: [[ColorPalette::SecondaryMid]];\n" +
	"\tbackground-color: [[ColorPalette::SecondaryLight]];\n" +
	"}\n\n" +
	"#" + plugins.SimpleSearchPlugin.btnCloseId + " {\n" +
	"\tfloat: right;\n" +
	"\tmargin: -5px -1em 5px 5px;\n" +
	"}\n\n" +
	"#" + plugins.SimpleSearchPlugin.btnOpenId + " {\n" +
	"\tfloat: left;\n" +
	"\tmargin-top: 5px;\n" +
	"}\n" +
	"/*}}}*/";
store.addNotification("StyleSheetSimpleSearch", refreshStyles);

// override Story.search()
Story.prototype.search = function(text, useCaseSensitive, useRegExp) {
	highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(), useCaseSensitive ? "mg" : "img");
	var matches = store.search(highlightHack, null, "excludeSearch");
	var q = useRegExp ? "/" : "'";
	plugins.SimpleSearchPlugin.displayResults(matches, q + text + q);
};

// override TiddlyWiki.search() to sort by relevance
TiddlyWiki.prototype.search = function(searchRegExp, sortField, excludeTag, match) {
	var candidates = this.reverseLookup("tags", excludeTag, !!match);
	var primary = [];
	var secondary = [];
	var tertiary = [];
	for(var t = 0; t < candidates.length; t++) {
		if(candidates[t].title.search(searchRegExp) != -1) {
			primary.push(candidates[t]);
		} else if(candidates[t].tags.join(" ").search(searchRegExp) != -1) {
			secondary.push(candidates[t]);
		} else if(candidates[t].text.search(searchRegExp) != -1) {
			tertiary.push(candidates[t]);
		}
	}
	var results = primary.concat(secondary).concat(tertiary);
	if(sortField) {
		results.sort(function(a, b) {
			return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);
		});
	}
	return results;
};

} //# end of "install only once"
//}}}
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.displayTiddler(), Story.prototype.displayTiddlers()|
|Options|##Configuration|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.10.17 [2.9.6] changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 [1.0.0] Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 6, date: new Date(2008,10,17)};
//}}}
//{{{
config.paramifiers.SPM = { onstart: function(v) {
	config.options.chkSinglePageMode=eval(v);
	if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
		config.lastURL = window.location.hash;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
} };
//}}}
//{{{
if (config.options.chkSinglePageMode==undefined)
	config.options.chkSinglePageMode=false;
if (config.options.chkSinglePagePermalink==undefined)
	config.options.chkSinglePagePermalink=true;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
	config.options.chkSinglePageKeepFoldedTiddlers=false;
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
	config.options.chkSinglePageKeepEditedTiddlers=false;
if (config.options.chkTopOfPageMode==undefined)
	config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined)
	config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined)
	config.options.chkSinglePageAutoScroll=false;
//}}}
//{{{
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
	if (!config.options.chkSinglePageMode)
		{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
	if (config.lastURL == window.location.hash) return; // no change in hash
	var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
	if (tids.length==1) // permalink (single tiddler in URL)
		story.displayTiddler(null,tids[0]);
	else { // restore permaview or default view
		config.lastURL = window.location.hash;
		if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
		story.closeAllTiddlers();
		story.displayTiddlers(null,tids);
	}
}


if (Story.prototype.SPM_coreDisplayTiddler==undefined)
	Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var tiddlerElem=document.getElementById(story.idPrefix+title); // ==null unless tiddler is already displayed
	var opt=config.options;
	var single=opt.chkSinglePageMode && !startingUp;
	var top=opt.chkTopOfPageMode && !startingUp;
	var bottom=opt.chkBottomOfPageMode && !startingUp;
	if (single) {
		story.forEachTiddler(function(tid,elem) {
			// skip current tiddler and, optionally, tiddlers that are folded.
			if (	tid==title
				|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
				return;
			// if a tiddler is being edited, ask before closing
			if (elem.getAttribute("dirty")=="true") {
				if (opt.chkSinglePageKeepEditedTiddlers) return;
				// if tiddler to be displayed is already shown, then leave active tiddler editor as is
				// (occurs when switching between view and edit modes)
				if (tiddlerElem) return;
				// otherwise, ask for permission
				var msg="'"+tid+"' is currently being edited.\n\n";
				msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
				if (!confirm(msg)) return; else story.saveTiddler(tid);
			}
			story.closeTiddler(tid);
		});
	}
	else if (top)
		arguments[0]=null;
	else if (bottom)
		arguments[0]="bottom";
	if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
		window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
		config.lastURL = window.location.hash;
		document.title = wikifyPlain("SiteTitle") + " - " + title;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
	if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (!isTopTiddler && (single || top))
			tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
		else if (bottom)
			tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
		else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	} else
		this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	var tiddlerElem=document.getElementById(story.idPrefix+title);
	if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
		// scroll to top of page or top of tiddler
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
		// if animating, defer scroll until after animation completes
		var delay=opt.chkAnimate?config.animDuration+10:0;
		setTimeout("window.scrollTo(0,"+yPos+")",delay); 
	}
}

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
	Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
	this.SPM_coreDisplayTiddlers.apply(this,arguments);
	opt.chkBottomOfPageMode=saveBPM;
	opt.chkTopOfPageMode=saveTPM;
	opt.chkSinglePageMode=saveSPM;
}
//}}}
v 0.2 : [[paraderos + conectores]] | paradors + conectors | whereabouts + connectors
arquitecturas colectivas | arquitectures col·lectives | collective architectures
/***

''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''

|Name|SplashScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#SplashScreenPlugin|
|Version|0.21 |
|Requires|~TW2.08+|
!Description:
Provides a simple splash screen that is visible while the TW is loading.

!Installation
Copy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.

!Customizing
Once the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.

!History
* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.
* 26-06-06 : version 0.2, first release

!Code
***/
//{{{
window.old_lewcid_splash_restart=window.restart;

window.restart = function()
{   if (document.getElementById("SplashScreen"))
        document.getElementById("SplashScreen").style.display = "none";
      if (document.getElementById("contentWrapper"))
        document.getElementById("contentWrapper").style.display = "block";
    
    window.old_lewcid_splash_restart();
   
    if (splashScreenInstall)
       {if(config.options.chkAutoSave)
			{saveChanges();}
        displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");
        }
}


var oldText = store.getTiddlerText("MarkupPreHead");
if (oldText.indexOf("SplashScreen")==-1)
   {var siteTitle = store.getTiddlerText("SiteTitle");
   var splasher='\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 30px; color:#000; font-size: 15px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Optimized for firefox, requires Javascript.</span></div>';
   if (! store.tiddlerExists("MarkupPreHead"))
       {var myTiddler = store.createTiddler("MarkupPreHead");}
   else
      {var myTiddler = store.getTiddler("MarkupPreHead");}
      myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);
      store.setDirty(true);
      var splashScreenInstall = true;
}
//}}}
/***
Keep just two tiddlers open a time, the one you clicked on and the one containing the link you just clicked.
***/
//{{{
version.extensions.StepWiseNavigation = { major: 1, minor: 0, revision: 1,
    date: new Date(2006,4,27),
    source: "http://simonbaird.com/mptw/#StepWiseNavigation"
};

if (config.options.chkStepWiseNavigationOn == undefined)
    config.options.chkStepWiseNavigationOn = true;

config.shadowTiddlers.AdvancedOptions +=
        "\n<<option chkStepWiseNavigationOn>> StepWiseNavigation";

Story.prototype.displayTiddler_orig_stepwise=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,title,template,animate,slowly) {
    if (config.options.chkStepWiseNavigationOn && srcElement && this.findContainingTiddler(srcElement))
        this.closeAllTiddlers(this.findContainingTiddler(srcElement).getAttribute("tiddler"));
    this.displayTiddler_orig_stepwise(srcElement,title,template,animate,slowly)
}

//}}}
div[tags~="blog"].tiddler .viewer {
background-color: #FFFF00;
}
div[tags~="update"].tiddler .viewer {
background-color: #C0C0C0;
}

.twocolumns {
   display:block;
   -moz-column-count:2;
   -moz-column-gap:1em;
   -moz-column-width:50%;

} 

.threecolumns {
   display:block;
   -moz-column-count:3;
   -moz-column-gap:1em;
   -moz-column-width:50%;

} 
.fourcolumns {
   display:block;
   -moz-column-count:4;
   -moz-column-gap:1em;
   -moz-column-width:50%;

} 



/*{{{*/
/*Mocha TiddlyWiki Theme*/
/*Version 1.0*/
/*Design and CSS originally by Anthonyy, ported to TiddlyWiki by Saq Imtiaz.*/
/*}}}*/
/*{{{*/

#contentWrapper{
	margin: 0 3em;
	font-family: Lucida Grande, Tahoma, Arial, Helvetica, sans-serif; /* Lucida Grande for the Macs, Tahoma for the PCs */
	font-size: 11px;
	line-height: 1.5em;
	color: #666;
}

.header {
	background: #fff; 
	padding-top: 1px;
	clear: both;
	width:100%;
	border-bottom: 1px solid #948979;
}

.headerShadow {
	padding: 1.5em 0em 0.5em 0em; 
}

.siteTitle {
	font-family: 'Trebuchet MS' sans-serif;
	font-weight: bold;
	font-size: 24px;
	color: #CC6633;
	margin-bottom: 30px;
	background-color: #FFF;
}

.siteTitle a{
	color:#CC6633; 
	border-bottom:1px dotted #cc6633;
}

.siteSubtitle {
	font-size: 1em;
        display: block;
        margin: .5em .2em; color: #999999;
}

#mainMenu {
	position:relative;
	float:left;
	margin-bottom:1em;
	display:inline;
	text-align:left;
	padding: 2em 0.5em 0.5em 0em;
	width:13em;
	font-size:1em;
}

#sidebar{
	position:relative;
	float:right;
	margin-bottom:1em;
	padding-top:2em;
	display:inline;
}

#displayArea {
	margin: 0em 15em 0em 15em;
}

.tagClear {
	clear:none;
}

#contentFooter {
	background:#575352; color:#BFB6B3; clear: both; padding: 0.5em 1em;
}

		
#contentFooter a {
	color: #BFB6B3;
	border-bottom: 1px dotted #BFB6B3;
}
		
#contentFooter a:hover {
	color: #FFFFFF;
	background-color:#575352;
}

a,#sidebarOptions .sliderPanel a{
	color:#CC6714;
	text-decoration: none;
}

a:hover,#sidebarOptions .sliderPanel a:hover {
	color:#CC6714;
	background-color: #F5F5F5; 
}

.viewer .button, .editorFooter .button{
	color: #666;
	border: 1px solid #CC6714;
}

.viewer .button:hover, 
.editorFooter .button:hover{
	color: #fff;
	background: #CC6714;
	border-color: #CC6714;
}

.viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{
	color:#fff; 
	background:#575352;
	border-color:#575352;
}

#mainMenu a {
	display: block;
	padding: 5px;
	border-bottom: 1px solid #CCC;
}

#mainMenu a:link, #navlist a:visited {
	color:#CC6714;
	text-decoration: none;
}
		
#mainMenu a:hover {
	background: #000000 url(arrow.gif) 96% 50% no-repeat;
	background-color: #F5F5F5;
	color:#CC6714;
}
		
#mainMenu a:hover, #mainMenu a:active, #mainMenu .highlight, #mainMenu .marked {
	background: #000000 url(arrow.gif) 96% 50% no-repeat;
	background-color: #F5F5F5;
	color:#CC6714;
}

#mainMenu span {
	position:relative;
}

#mainMenu br {
	display:none;
}

#sidebarOptions a {
	color:#999;
	text-decoration: none;
}

#sidebarOptions	a:hover {
	color:#4F4B45;
	background-color: #F5F5F5;border:1px solid #fff;
}

#sidebarOptions {
	line-height:1.4em;
}

.tiddler {
	padding-bottom: 5px;
	border-bottom: 1px solid #DDDDDD; 
}

.title {
	color:#CC6633;
}
.subtitle, .subtitle a { 
	color: #999999; 
	font-size: 1.0em;
	margin:0.2em;
}

.shadow .title {
	color:#948979;
}

.selected .toolbar a {
	color:#999999;
}
.selected .toolbar a:hover {
	color:#4F4B45; 
	background:transparent;
	border:1px solid #fff;
}

.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{
	color:#4F4B45; 
	background:transparent;
	border:1px solid #fff;
}

 .listLink,#sidebarTabs .tabContents {
	line-height:1.5em;
}
 .listTitle {
	color:#888;
}

#sidebarTabs .tabContents {background:#fff;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#999;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#4F4B45;background:#fff}

#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#4F4B45;background:#fff}

.tabSelected{color:#fff; background:#948979;}

.tabUnselected {
 background: #ccc;
}

 .tabSelected, .tabSelected:hover {
 color: #fff;
 background: #948979;
 border: solid 1px #948979;
padding-bottom:1px;
}

 .tabUnselected {
 color: #999;
 background: #eee;
 border: solid 1px #ccc;
padding-bottom:1px;
}

#sidebarTabs .tabUnselected { border-bottom: none;padding-bottom:3px;}
#sidebarTabs .tabSelected{padding-bottom:3px;}


#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#4F4B45}

#sidebarOptions .sliderPanel {
	background: #fff; border:none;
	font-size: .9em;
}
#sidebarOptions .sliderPanel a {font-weight:normal;}
#sidebarOptions .sliderPanel input {border:1px solid #999;}

.viewer blockquote {
	border-left: 3px solid #948979;
}

.viewer table {
	border: 2px solid [[ColorPalette::TertiaryDark]];
}

.viewer th, thead td {
	background: #948979;
	border: 1px solid #948979;
	color: #fff;
}
.viewer pre {
	border: 1px solid #948979;
	background: #f5f5f5;
}

.viewer code {
	color: #2F2A29;
}

.viewer hr {
	border-top: dashed 1px #948979;
}

.editor input {
	border: 1px solid #948979;
}

.editor textarea {
	border: 1px solid #948979;
}

.popup {
	background: #948979;
	border: 1px solid #948979;
}

.popup li.disabled {
	color: #000;
}

.popup li a, .popup li a:visited {
	color: #eee;
	border: none;
}

.popup li a:hover {
	background: #575352;
	color: #fff;
	border: none;
}

.tagging, .tagged {
	border: 1px solid #eee;
	background-color: #F7F7F7;
}

.selected .tagging, .selected .tagged {
	background-color: #eee;
	border: 1px solid #BFBAB3;
}

 .tagging .listTitle, .tagged .listTitle {
	color: #bbb;
}

.selected .tagging .listTitle, .selected .tagged .listTitle {
	color: #CC6633;
	font-size: 1.2em;
	font-weight: bold;
}

.tagging .button, .tagged .button {
		color:#aaa;
}
.selected .tagging .button, .selected .tagged .button {
		color:#4F4B45;
}

.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}

.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {
		border: none; background:transparent; text-decoration:underline; color:#000;
}

h1,h2,h3,h4,h5 { color: #666; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}

#messageArea {
	border: 4px solid #948979;
	background: #f5f5f5;
	color: #999;
        font-size:90%;
}

#messageArea a:hover { background:#f5f5f5;}

#messageArea .button{
	color: #666;
	border: 1px solid #CC6714;
}

#messageArea .button:hover {
	color: #fff;
	background: #948979;
	border-color: #948979;
}


* html .viewer pre {
	margin-left: 0em;
}

* html .editor textarea, * html .editor input {
	width: 98%;
}

.searchBar {float:right;font-size: 1.0em;}
.searchBar .button {color:#999;display:block;}
.searchBar .button:hover {border:1px solid #fff;color:#4F4B45;}
.searchBar input {			
                        background-color: #FFF;
			color: #999999;
			border: 1px solid #CCC;		margin-right:3px;
}

#sidebarOptions .button:active, #sidebarOptions .highlight {background:#F5F5F5;}

*html #contentFooter { padding:0.25em 1em 0.5em 1em;}

#noticeBoard {font-size: 0.9em; color:#999; position:relative;display:block;background:#fff; clear: both; margin-right:0.5em; margin-top:60px; padding:5px; border-bottom: 1px dotted #CCC; border-top: 1px dotted #CCC;}
#mainMenu #noticeBoard a,#mainMenu #noticeBoard .tiddlyLink {display:inline;border:none;padding:5px 2px;color:#DF9153 }
#noticeBoard a:hover {border:none;}	

#noticeBoard br {display:inline;}

#mainMenu #noticeBoard  .button{
	color: #666;
	border: 1px solid #DF9153;padding:2px;
}

#mainMenu #noticeBoard  .button:hover{
	color: #fff;
	background: #DF9153;
	border-color: #DF9153;
}

.searchbar {position:relative; width:11em;}
.searchbar .button{margin:0; width:11em;}
#header {display:inline-block;}
/*}}}*/


{{fourcolumns{
<<allTagsExcept admin DiscoveryPackage Documentation ForEachTiddlerMacro ForEachTiddlerProject ImportExportPackage IncludePlugin lewcidExtension MochaTheme NavigationPackage NewsWiki Plugin pluginInfo plugins ProxyService RecentUpdates RSSFeed settings systemConfig systemServer UdoBorkowski CONNECTOR sede>>
}}}

<<tagCloud   admin DiscoveryPackage Documentation ForEachTiddlerMacro ForEachTiddlerProject ImportExportPackage IncludePlugin lewcidExtension MochaTheme NavigationPackage NewsWiki Plugin pluginInfo plugins ProxyService RecentUpdates RSSFeed settings systemConfig systemServer UdoBorkowski CONNECTOR sede>>

/***
|Name|TagCloudPlugin|
|Source|http://www.TiddlyTools.com/#TagCloudPlugin|
|Version|1.3.0|
|Author|Eric Shulman|
|Original Author|Clint Checketts|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|present a 'cloud' of tags using proportional font display|
!Usage
<<<
{{{<<tagCloud>>}}}
> show all tags in the document
{{{<<tagCloud tag tag tag...>>}}}
> show all tags except those listed as parameters
{{{<<tagCloud +TiddlerName>>}}}
> show all tags listed within {{{TiddlerName}}} (using a space-separated, bracketed list)
{{{<<tagCloud =tagvalue>>}}}
> show only tags that are themselves tagged with the indicated tag value (i.e., ~TagglyTagging usage)
<<<
!Examples
<<<
{{{<<tagCloud>>}}} - //show all tags//
<<tagCloud>>
----
{{{<<tagCloud +FavoriteTags>>}}} - //show tags listed in// [[FavoriteTags]]
<<tagCloud +FavoriteTags>>
----
{{{<<tagCloud =package>>}}} - //show tags tagged with 'package'//
<<tagCloud =package>>
<<<
!Revisions
<<<
2008.11.15 [1.3.0] ELS: added {{{+TiddlerName}}} parameter to include only tags that are listed in the indicated tiddler
2008.09.05 [1.2.0] ELS: added '=tagname' parameter to include only tags that are themselves tagged with the specified value (i.e., ~TagglyTagging usage)
2008.07.03 [1.1.0] ELS: added 'segments' property to macro object.  Extensive code cleanup
<<<
!Code
***/
//{{{
version.extensions.TagCloudPlugin= {major: 1, minor: 3 , revision: 0, date: new Date(2008,11,15)};
//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman

config.shadowTiddlers.TagCloud="<<tagCloud>>";

setStylesheet("\
	.tagCloud span{height: 3.5em;margin: 3px;}\
	.tagCloud1{font-size: 80%;}\
	.tagCloud2{font-size: 100%;}\
	.tagCloud3{font-size: 120%;}\
	.tagCloud4{font-size: 150%;}\
	.tagCloud5{font-size: 180%;}\
	.tagCloud6{font-size: 200%;}\
	",
	"tagCloudsStyles");

config.macros.tagCloud = {
	noTags: "No tag cloud created because there are no tags.",
	tooltip: "%1 tiddlers tagged with '%0'",
	segments: 5,
	handler: function(place,macroName,params) {

		var inc=[]; var ex=[];
		if (params.length) {
			if (params[0].substr(0,1)=="+") { // get tag list from tiddler
				var inc=store.getTiddlerText(params[0].substr(1),'').readBracketedList();
			} else if (params[0].substr(0,1)=="=") { // get tag list using tagged tags
				var tagged=store.getTaggedTiddlers(params[0].substr(1));
				for (var t=0; t<tagged.length; t++) inc.push(tagged[t].title);
			} else ex=params; // exclude params
		}

		var tags=store.getTags(); // get all tags
		for (var t=0; t<tags.length; t++) { // include/exclude specific tags
			if (inc.length && !inc.contains(tags[t][0])) tags[t][0]="";
			if (ex.length && ex.contains(tags[t][0])) tags[t][0]="";
		}

		// get maximum number of tags to calculate tagCloud segment sizes
		var mostTags=0;
		for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0)
			if (tags[t][1]>mostTags) mostTags=tags[t][1];
		var tagSegment=mostTags/config.macros.tagCloud.segments;

		// output
		var tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);
		if(!tags.length)
			createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);
		else for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
			tagCloudWrapper.appendChild(document.createTextNode(" "));
			var theTag = createTiddlyButton(tagCloudWrapper,
				tags[t][0],this.tooltip.format(tags[t]),onClickTag,
				"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));
			theTag.setAttribute("tag",tags[t][0]);
		}
	}
};
//}}}
/***
|''Name:''|TiddlyLightBox|
|''Date:''|Jan 1, 2006|
|''Version:''|1.0 beta|
|''Author:''|Saq Imtiaz|
|''Location:''|http://tw.lewcid.org/#TiddlyLightBoxPlugin|
|''Documentation:''|http://tw.lewcid.org/#TiddlyLightBoxDocs|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''Based on:''|DC3.LightBox<br>Light Box Gone Wild <br>Ibox|

!!Code
***/
//{{{
config.macros.imagebox ={};
config.macros.imagebox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
    var e = place.lastChild;
    e.onclick = function(){TiddlyLightBox.initBox('image',this,params[1],params[2],params[0]);return false;};
}

config.macros.divbox ={};
config.macros.divbox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
    if (params[0]!=".")
        createTiddlyButton(place,params[0],params[0],function(){TiddlyLightBox.initBox('html',params[1],params[3],params[4],params[2]);return false;});
    else
        {
        var e = place.lastChild;
        e.onclick = function(){TiddlyLightBox.initBox('html',params[1],params[3],params[4],params[2]);return false;};
        }
}

config.macros.tiddlerbox ={}
config.macros.tiddlerbox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
    config.macros.divbox.handler(place,macroName,[params[0],"tiddler:"+params[1],params[2],params[3],params[4]]);
    return false;
}

store.addNotification("TiddlyLightBoxStyles",refreshStyles);

if (!window.TiddlyLightBox)
    window.TiddlyLightBox = {};
    var loadingImage = "indicator.gif";
    window.TiddlyLightBox =
    {
    _curBox: null, // [sentinel]

    lightBoxHtml : '<div id="lightBoxOverlay" onclick="TiddlyLightBox.hideBox()" style="display:none"></div><div id="lightboxprogress" style="display:none;"><img src=\''+loadingImage+'\' alt=\'loading\' style="width:128px;height:128px;"></div><div class="lightBox" id="lightBox" style="display:none"><div id="lightBoxContent"></div><div id="lightBoxTitle">This is a title</div><div id="lightBoxClose"><a href:"#" onclick="TiddlyLightBox.hideBox();return false;">Click to close</a></div></div>',

    createBoxWrapper : function()
        {
        var wrapper = createTiddlyElement(document.getElementsByTagName("body")[0],"div","tiddlyLightBoxWrapper");
        wrapper.innerHTML = this.lightBoxHtml;
        },

    initBox : function(contentType,url,w,h,text)
        {
        if (this._curBox)
            return;
        this.showProgress();
        this.hideSelects("hidden");
        this.showBg();
        this._curBox = true;
        this.sizeTheBox(contentType,w,h);
        if (contentType == 'image')
            this.showImage(url,text);
        else if (contentType == 'html')
            this.showHtml(url,text);
        return false;
        },
        
    sizeTheBox : function(contentType,w,h)
        {
        var box = document.getElementById("lightBoxContent");
        if (w && isNaN(parseInt(w)))
            {
            addClass(box,w);
            }
        else if (w ||h || contentType == 'html')
            {
            box.style.width = w? w+ "px" : "450px";
            box.style.height = h? h+ "px" : "280px";
            if (contentType=='image')
                setStylesheet("#lightBoxContent img{height:100%;width:100%;}","lightBoxImageSizeHack");
            }
        },

    showProgress : function()
        {
        var progress = document.getElementById("lightboxprogress");
        progress.style.display='';
        this._center(progress);
        },
    
    hideProgress: function()
        {
        var progress = document.getElementById("lightboxprogress");
        progress.style.display='none';
        },

    //this function lifted from Lightbox Gone Wild
    hideSelects: function(visibility)
        {
        var selects = document.getElementsByTagName('select');
        for(i = 0; i < selects.length; i++)
            {
            selects[i].style.visibility = visibility;
            }
        },

    showBg: function()
        {
        var overlay = document.getElementById('lightBoxOverlay');
        if (config.browser.isIE)
            {
            overlay.style.height = Math.max(document.documentElement.scrollHeight,document.documentElement.offsetHeight);
            overlay.style.width = document.documentElement.scrollWidth;
            }
        overlay.style.display = 'block';
        },

    showImage: function (url,text)
        {
        imgPreloader = new Image();
        imgPreloader.onload = function ()
            {
            var lb = document.getElementById("lightBoxContent");
            lb.innerHTML = "<img src="+url+">";
            lb.onclick = function(){TiddlyLightBox.hideBox();return false;};
            TiddlyLightBox.posBox(text);
            };
        imgPreloader.src = url;
        },
        
    showHtml : function(theID,text)
        {
        var lb = document.getElementById("lightBoxContent");
        if (theID.indexOf("tiddler:")==-1)
             lb.innerHTML = document.getElementById(theID).innerHTML;
        else
            { 
             wikify(store.getTiddlerText(theID.replace("tiddler:","")),lb);
             lb.className='tiddler';
            }
        lb.style.overflow = "auto";
        this.posBox(text);
        },

    posBox: function(text)
       {
       this.setTitle(text);
       this.hideProgress();
       var lb = document.getElementById("lightBox");
       lb.style.display = "";
       lb.style.visibilty = "hidden";
       lb.style.position = "absolute";
       this._center(lb);
       if(!TiddlyLightBox._curBox) return;
       lb.style.visibility = "visible";
       lb.style.display = "block";
       },

     setTitle: function(text)
        {
        document.getElementById("lightBoxTitle").innerHTML=  (text==undefined)? '': text;
        },

    _center: function(lb)
       {
       var lbSize = new TiddlyLightBox.getElementSize(lb);
       lb.style.left = (Math.round(findWindowWidth()/2) - (lbSize.width /2) + findScrollX())+'px';
       lb.style.top = (Math.round(findWindowHeight()/2) - (lbSize.height /2) + findScrollY())+'px';
       },

    //this function lifted from Ibox
    getElementSize : function(elem)
       {
       this.width = elem.offsetWidth || elem.style.pixelWidth;
       this.height = elem.offsetHeight || elem.style.pixelHeight;
       },

     hideBox: function()
         {
         if(!this._curBox)
             return;
         document.getElementById("tiddlyLightBoxWrapper").innerHTML= this.lightBoxHtml;
         setStylesheet("","lightBoxImageSizeHack");
         this._curBox = null;
         return false;
         }
}

TiddlyLightBox.createBoxWrapper();

Story.prototype.findContainingTiddler = function(e)
{
    while(e && (!hasClass(e,"tiddler") || !e.getAttribute("tiddler")))
        e = e.parentNode;
    return(e);
}

config.shadowTiddlers.TiddlyLightBoxStyles="/*{{{*/\n#lightBoxOverlay {\n position:absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 90; \n background-color: #000;\n -moz-opacity: 0.75;\n opacity: .75;\n filter: alpha(opacity=75);\n}\n#lightBoxOverlay[id]{ \n position: fixed;\n}\n\n#lightboxprogress { \n margin:0;padding:0;\n position: absolute;\n z-index:95;\n}\n\ndiv.lightBox {\n background: #fff;\n color: #fff;\n border: 4px solid #525252;\npadding:20px 20px 25px 20px; position:absolute; z-index:99;\n}\n\n#lightBoxClose {text-align:right; color:#000; font-size:1.0em; position:absolute; bottom:6px; right:20px;}\n#lightBoxClose a{color:#666; border-bottom:1px solid #666;cursor:pointer;}\n#lightBoxClose a:hover {color:#111; border-bottom:1px solid #666; cursor:pointer; background:transparent;}\n\n#lightBoxContent {border:1px solid #525252;color:#000; background:#fff;}\n#lightBox .tiddler {background:#fff;}\n\n#lightBoxContent img {border:0;margin:0;padding:0;display:block;cursor:pointer;}\n\n#lightBoxTitle {padding:0px; font-weight:bold; position:absolute; left:20px;bottom:6px; font-size:1.1em; color:#000;}\n\n/*}}}*/";
//}}}
/***

|Name|ToggleSideBarMacro|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#ToggleSideBarMacro|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Provides a button for toggling visibility of the SideBar. You can choose whether the SideBar should initially be hidden or displayed.

!Demo
<<toggleSideBar "Toggle Sidebar">>

!Usage:
{{{<<toggleSideBar>>}}} <<toggleSideBar>>
additional options:
{{{<<toggleSideBar label tooltip show/hide>>}}} where:
label = custom label for the button,
tooltip = custom tooltip for the button,
show/hide = use one or the other, determines whether the sidebar is shown at first or not.
(default is to show the sidebar)

You can add it to your tiddler toolbar, your MainMenu, or where you like really.
If you are using a horizontal MainMenu and want the button to be right aligned, put the following in your StyleSheet:
{{{ .HideSideBarButton {float:right;} }}}

!History
*23-07-06: version 1.0: completely rewritten, now works with custom stylesheets too, and easier to customize start behaviour. 
*20-07-06: version 0.11
*27-04-06: version 0.1: working.

!Code
***/
//{{{
config.macros.toggleSideBar={};

config.macros.toggleSideBar.settings={
         styleHide :  "#sidebar { display: none;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
         styleShow : " ",
         arrow1: "«",
         arrow2: "»"
};

config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
{
          var tooltip= params[1]||'toggle sidebar';
          var mode = (params[2] && params[2]=="hide")? "hide":"show";
          var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
          var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;
          var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
          if (mode == "hide")
             { 
             (document.getElementById("sidebar")).setAttribute("toggle","hide");
              setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");
             }
};

config.macros.toggleSideBar.onToggleSideBar = function(){
          var sidebar = document.getElementById("sidebar");
          var settings = config.macros.toggleSideBar.settings;
          if (sidebar.getAttribute("toggle")=='hide')
             {
              setStylesheet(settings.styleShow,"ToggleSideBarStyles");
              sidebar.setAttribute("toggle","show");
              this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
              }
          else
              {    
               setStylesheet(settings.styleHide,"ToggleSideBarStyles");
               sidebar.setAttribute("toggle","hide");
               this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);
              }

     return false;
}

setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");

//}}}
ToggleSideBarMacro has been completely rewritten. Now works flawlessly with custom stylesheets too, and is easier to customize. You can specify whether the sidebar is hidden or displayed to start off with.
/***
|''Name:''|UploadPlugin|
|''Type:''|Plugin|
|''Version:''|3.3.1 (30/03/2006)|
|''Source:''|[[TiddlyWiki.BidiX.info/#UploadPlugin|http://tiddlywiki.BidiX.info/#UploadPlugin]]|
|''Documentation:''|[[TiddlyWiki.BidiX.info/#UploadPluginDoc|http://tiddlywiki.BidiX.info/#UploadPluginDoc]]|
|''Author:''|BidiX[at]BidiX.info |
|''Required:''| TW 2.0.6 or better, PHP 4.4 (perhaps less  but not working on 4.1.2) |

!Description
UploadPlugin, with [[store.php]], provides @@upload@@ and @@save to web@@ functions. See HowToUpload ([[HowToUpload|http://TiddlyWiki.bidix.info/#HowToUpload]]).
UploadPlugin uses Username and Password from UploadOptions stored in cookies to authenticate itself to [[store.php]].
French translation available as a separate tiddler UploadPluginMsgFR

!!UploadPlugin
*If the TiddlyWiki is viewed from @@local disk@@ :
**{{{<<saveChanges>>}}} 
***display as ''save to disk''
***work as usual
**{{{<<upload>>}}}
***display as ''upload''
***after saving to disk, upload in the storeUrl directory.
*If the TiddlyWiki is viewed from @@website@@ and is @@readOnly@@ (in core TiddlyWiki since 2.0.6) :
**{{{<<saveChanges>>}}} 
***print nothing
***has been disabled
**{{{<<upload>>}}}
***display as '''save to web''
***save in the uploadDir directory.
*If GenerateAnRssFeed in AdvancedOptions is set :
**generate the content of the RSSFeed 
**upload the RssFile in uploadDir directory
**Caution : use the SiteUrl tiddler to specify the right url of the TiddlyWiki in the generated RssFile
*DisplayMessage
*Log upload action in UploadLog
hint : if UploadLog is the first tiddler in the Timeline Tab, no tiddler has been updated since last upload.

!![[store.php]]
*UserVariables to set :
//{{{
$AUTHENTICATE_USER = true; // true | false
$USERS = array(
 'UserName1'=>'Password1', 
 'UserName2'=>'Password2', 
 'UserName3'=>'Password3'); // set usernames and strong passwords
$DEBUG = false; // true | false
//}}}
*method GET
**display an information page
*method POST
**if $~AUTHENTICATE_USER is ''true''
***presence and value of user and password are checked with $USER and $PASSWORD 
**if toFilename already exists and backDir parameter specified
***rename toFilename to backupDir/toFilename.AAAAMMDD.HHSS.html
**copy temporaryUploadedFile to toFilename
** return status

!Usage : 
{{{
<<upload>>
 uses UploadOptions saved in cookies :
 txtUploadUserName: username
 pasUploadPassword : password
 txtUploadStoreUrl : store script
 txtUploadDir : relative path for upload directory
 txtUploadFilename : upload filename
 txtUploadBackupDir : relative path for backup directory

<<upload [storeUrl [toFilename [backupDir [uploadDir [username]]]]]>>
 optional positional parameters can be passed to overwrite UploadOptions in this order. 
}}}

Install the {{{<<upload ... >>}}} macro in SideBarOptions just below {{{<<saveChanges>>}}} macro.


!User manual
See HowToUpload

!Installation :
*Install the UploadPlugin as usual
*Upload the [[store.php]] file on your php aware webserver in your TiddlyWiki directory
*Protect your server against malicious upload. Two approaches :
**set $~AUTHENTICATE_USER to true in the [[store.php]] script
***configure $USER and $PASSWORD in the [[store.php]] script on your webserver
***set UploadOptions in conformity with [[store.php]]
**Use server protection :
***for Apache web server ([[for detail see Apache documentation|http://httpd.apache.org/docs/1.3/howto/htaccess.html]]) : 
****configure and upload the [[.htaccess]] [[.passwd]]
***for other web servers see the appropriate documentation
*Configure an upload button, for example in the SideBarOptions
!Suppported Browser
*Firefox : tested Ok
*Internet Explorer : tested Ok
*Safari : reported ok on OS X
*Others : Not tested, please report status.

!Revisions
*V 3.3.1 (30/03/2006)
**bug in backup folder when uploading rssfile fixed
*V 3.3.0 (12/03/2006)
**Code refactoring
**suppress saveChanges hijacking
*V3.2.2 (25/02/2006)
**Use PasswordTweak 1.0.1
**uploaddir is a relative path
**backupdir is a relative path
+++[previous revisions]
*V3.2.1 (13/02/2006)
**name and password added to open.request (Thanks to TedPavlic)
*V3.2.0 (14/02/2006)
**Use PassworDTweak (http://tiddlyWiki.bidix.info/#PasswordTweak) for password
*V3.1.0 (12/02/2006)
**UploadOptions in Cookies
**Username and password from UploadOptions pass to store.php script for authentification check
*V3.0.3 (03/02/2006)
**Firefox 1.5.0.1 crashes due to global var fixed
*V3.0.2 (25-Jan-2006)
**HTTPS compatible
*V3.0.1 (18-Jan-2006)
**UTF8toUnicode conversion problem in Firefox
*V3.0.0 (15-Jan-2006)
**Asynchronous upload
**Synchronous upload before unload of the page
**All strings extracted in macro config
**Compatibility checked with TW 2.0.2 & TW 1.2.39 for both FF 1.5 and IE 6
*V2.0.2 (8-Jan-2006)
**conversion of SiteTitle and SiteSubtitle in web page Title
*V2.0.1 (8-Jan-2006)
**Compatibilty with TiddlyWiki 2.0.1
*V2.0.0 (3-Jan-2006)
**Save to web
**Compatibilty with TiddlyWiki 1.2.39 and TiddlyWiki 2.0.0 Beta 6
*v1.1.0 (27-Dec-2005)
**Upload RSS File
*v1.0.3 (26-Dec-2005)
**UploadLog tiddler
*v1.0.2 (24-Dec-2005)
**Optional parameter toFilename
**Optional parameter backupDir
*v1.0.1 (23-Dec-2005)
**reformatting code
* v1.0.0 (17-Dec-2005)
** first public working version
===

comunidad de arte y acción libre
vigo - http://www.alg-a.org/
[img[imago/connectors/alg-a_s.jpg][imago/connectors/alg-a.jpg]]<<imagebox 'alg-a'>>
----
''¿Que é alg-a? (manifesto-faq)''
Alg-a é uha [*comunidade*] de arte e acción [*libre.*]
Alg-a é unha Asociación Cultural.

''¿Que significa que sexa libre?''
Que sexa libre, significa que a esta comunidade só se pode chamar polo nome de alg-a, xa que é a única palabra que a define e coa que a comunidade se sinte identificada, a súa propia acción é a que a define.

Que sexa libre significa que non representa a nada máis que á súa propia acción, non atende a estilos, marcas, pautas nin xeracións, nin a nada que sirva para clasificar, xa que somos puro movemento, pura acción, e esta inmersa no presente contínuo. Xa non se trata de que estea inmersa no tempo real, senón que non ten tempo, nas esquinas dunha liña recta.

Que sexa libre, significa que empregamos licencias que nos permiten ter un "control" sobre todo aquelo que facemos público. Tódalas publicacións que se fan en alg-a, todo o que aparece na túa pantalla que foi posto por alg-a para que o vexas ten unhas licencias libres Creative Commons.

''¿Qué significa que sexa unha comunmidade?''
Alg-a naceu por unha necesidade de crear unha comunidade virtual que permitise o contacto entre os membros desta sin que estiveran que estar nun mesmo lugar físico. É como si dixeramos que alg-a é unha tropa de amigos, como moitas tropas de amigos que hai en calqueira sitio. Esta comunidade vai collendo unha identidade propia a medida que van interrelacionándose entre eles. Alg-a non é un medio de información, aínda que a través da extructura de novas poidera parecelo, non é algo que emite para que alguén o reciba, senón que é algo que emite e recibe ó mesmo tempo e muta dependendo de quen se relacione con ela. Polo tanto sempre terá unha identidade propia, que dependerá dos organismos-xente que entren en relación.

Como comunidade funciona a dous niveis, na rede e nun espacio físico.

Ó mesmo tempo alg-a é unha asociación cultural, polo que se trata dunha comunidade aberta, donde calqueira pode ser membro de alg-a, e aportar a través do sistema de socios.

''¿De donde vén o nome de alg-a?''
O nome de alg-a, fai referencia ó contexto no que naceu a comunidade, e ó contexto no que habita. A toda unha masa de vida que existe baixo a superficie visible. Menospreciada e gostada só por unhas poucas/poucos.

Como anécdota diremos que a idea da comunidade alg-a xurdiu durante unha manifestación en contra da fábrica de ENCE en Pontevedra, que entre outras cousas contamina a ria de Pontevedra e impide a vida de alg-as. Digamos que alg-a naceu para loitar contra a morte.

''¿Quen é alg-a?''
Alg-a é unha comunidade, e como tal ten un número indeterminado de membros.
Podes saber qué seres vivos son alg-as indo á sección de quen somos.

''¿Cales son os campos de acción de alg-a?''
Os campos de acción, ou que é o que fai alg-a, son:
* O laboratorio alg-a: O laboratoiro é un lugar donde levamos a cabo diversas actividades de compoñente físico, é decir: un espacio donde levamos a cabo obradoiros, actuacións, estudios para creadores, intercambios, mediateca e convivencia.
* O netlabel,a galería alg-a é o Videolabel: son tres espacios de publicación de traballos sonoros, visuais e audiovisuais na rede, baixo licencias libres que permiten a súa distribución e copia. e que compilan o facer de artistas de diversos.
* Os textos alg-a: son unha mediateca na rede, donde recompilamos textos (entrevistas, pensamento, poemas, etc...) de xente ligada a alg-a ou de referencia e de interés comunitario.
* As novas alg-a; son unha colección de novas que se actualizan diaramente, donde informamos a través da nosa páxina web de todas aquelas cousas de interés en relación coa cultura libre.
* Os fluxos alg-a: son unha rede cos chamados amigos de alg-a; donde podemos consultar as últimas novedades das accións da xente ligada a alg-a.
* Artistas alg-a: trátase dunha base de datos dos artistas ligados ou non ó proxecto alg-a, pero dun interés notable.

''¿Que é o que pensa alg-a?''
Algúns pensamentos están implicitos xa nalgunhas das respostas neste manifesto-faq, pero hai máis:
* Alg-a pensa que a xeración de cultura é a forma de creacción maior, e que esta debe de ser colectiva en todo momento. Do que se deduce que toda persoa creadora debe darse dende a colectividade, xa que si só se da individualmente non está intervindo na cultura, e polo tanto non está creando.
* Alg-a pensa que a identidade cultural é básica para construír dende a orixinalidade e para romper coa imitación de superficialidades globales.

''+info''
http://www.alg-a.org/Que-e-alg-a
/***
Macro: allTagsExcept
Author: Clint Checketts
Version: 1.0 Sept 8, 2005

usage: {{{<< allTagsExcept systemConfig systemTiddlers >>}}} This will show all tags but those listed (e.g. systemConfig and systemTiddlers

<<allTagsExcept systemConfig systemTiddlers >>
***/
//{{{
version.extensions.allTagsExcept = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};
config.macros.allTagsExcept = {tooltip: "Show tiddlers tagged with '%0'",noTags: "There are no tags to display"};

config.macros.allTagsExcept.handler = function(place,macroName,params)
{
	var tags = store.getTags();
	var theTagList = createTiddlyElement(place,"ul",null,null,null);
	if(tags.length == 0)
		createTiddlyElement(theTagList,"li",null,"listTitle",this.noTags);
	for (var t=0; t<tags.length; t++) {
            var includeTag = true;
            for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) includeTag = false;
            if (includeTag){
		var theListItem =createTiddlyElement(theTagList,"li",null,null,null);
		var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);
		theTag.setAttribute("tag",tags[t][0]);
           }
	}
}
//}}}
programa de radio de cultura digital lliure. parla sobre gnu/linux,copyleft, xarxes obertes..., defensant, dins del programari, les llibertats de copiar, d'usar i de conèixer
- http://aptitudefm.contrabanda.org

[img[imago/connectors/aptitudefm_s.png][imago/connectors/aptitudefm.png]]<<imagebox 'aptitude fm'>>
----
''Aptitude FM''
febrer 2008

Aptitude FM es un programa dominical que habla sobre sistemas operativos libres (gnu/linux), redes de comunicaciones libres (guifi.limpio), licencias de obras artísticas libres (ojo! copyleft no tiene xq ser = a gratis), conspiranoia, veuip... se irá upgradejant.

Uno de los objetivos del programa es sacar de esta oscuridad -se le podría decir analfabetismo digital- a toda esta gente que está "obligada" a vivir en este mundo tan tecnológico, donde se están comiendo el pastel los tres más espabilados de la clase, y que deberían empezar a "espabilar" sino quieren que continuen tomandoles el pelo.

Son los 3 mismos sinvergüenzas que han fumigado todo el planeta con virus gigante con gas mostaza, que lo que hace es desactivar el bit del auto-aprendizaje, que por defecto viene activado, pero ya cuando empiezas la escuela convencional te lo deshabilitan medio bluetooth.

Son los 3 mismos espabilados que sin gastarse nada en formación han llenado de ordenadores las empresas y no han rebajado ni un minuto la jornada laboral debido al aumento de productividad que supone un ordenador (aunque no sepas utilizarlo) y que en los años que llevan utilizando un ordenador sólo han aprendido a "haceptar o canzelar".

Para los wikipedistas, el nombre de Aptitude FM viene del griego. La historia es que cuando Platón estaba en la caverna, no estaba haciendo lo que nos dijeron en Filosofía de 3º de BUP. Estaba todo el día compilando y compilando sobre una plataforma 2002. Je, je es broma. Aptitude FM viene de aptitude y de FM.

aptitude: la madre de todas las madres. El programa de Debian&daughters que si tienes internet (básico a gnu/linux), te instala todo lo que quieras con una sola línea de cpmando (también se puede hacer gráficamente, synaptic, pero son 5 clicks ;)).

FM: Es obvio. De todas formas, llamarse Aptitude FM nos evita ambigüedades y mejor SEO.

''+info:''
http://www.contrabanda.org/contrabanda/index.php?option=com_content&task=view&id=132&Itemid=119

web: http://aptitudefm.contrabanda.org
Feed: http://aptitude.contrabanda.org/feed/
asociación de artistas, arquitect*s e investigador*s digitales de Andalucía
andalucía - http://atomosybits.org 
[img[imago/connectors/atomosybits_s.jpg][imago/connectors/atomosybits.jpg]]<<imagebox 'átomos y bits'>>
----
Átomos y Bits quiere ser una asociación abierta, implicada en la cultura libre, que promueva la investigación, la producción, el intercambio y la creación de redes en el campo de la cultura digital en Andalucía y más allá.

Comenzamos a trabajar a finales de 2008 y nos constituimos formalmente en asamblea fundacional el 14 de febrero de 2009 en Goles 41, Sevilla.

''Fines''
De los Estatutos de la asociación, Artº 6º.
Los fines de la Asociación serán los siguientes:

1/ Constituir una red de colectivos e individuos implicados en la cultura digital, la cultura libre, el FLOSS (Free/Libre Open Source Software), el desarrollo sostenible y la innovación social y política; fomentando la construcción del común, la cooperación y el intercambio de recursos materiales e inmateriales; colaborando en red con iniciativas similares, nacionales e internacionales.

2/ Fomentar, desarrollar y difundir investigaciones y creaciones tecnológicas, culturales, artísticas, sociales y educativas, experimentando con nuevas formas de autonomía, organización y producción y poniendo en práctica iniciativas y haciendo recomendaciones sobre políticas tecnológicas, culturales, sociales y educativas.

3/ Promover la inclusión digital y la inclusión social haciendo un uso creativo y critico de las tecnologías de la información y la comunicación, impulsando la creación de infraestructuras sociotécnicas comunitarias y ciudadanas (medialabs ciudadanos, espacios de autoformación y producción, redes libres, software/hardware libre).

Y para su consecución desarrollará las siguientes actividades: organización de eventos, exposiciones, debates y cursos; edición de publicaciones (analógicas y digitales), y gestión de proyectos, espacios e infraestructuras.

''+info:
http://atomosybits.org/?page_id=13
experiencia de diseño y construcción de una comunidad de aprendizaje autogestionada, dentro de la Universidad de Granada, por sus propios estudiantes. un espacio, consecuentemente abierto, que trata de constituirse en una comunidad activa en la investigación y producción de conocimiento, retomando el carácter social de éste como algo colectivamente construido.
granada - http://www.aaabierta.org/ - http://aulabierta.info/
[img[imago/connectors/aulabierta_s.png][imago/connectors/aulabierta.png]]<<imagebox 'aulabierta'>>
----
<html><img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNTM*Njg2NDgzNDMmcHQ9MTI1MzQ2ODY1Mjc5NiZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJm89YmExNjEyZDNhZDAxNDA5Mjg5YTY*OTJkNWIxMDJlODcmb2Y9MA==.gif" /><div style="width:425px;text-align:left" id="__ss_218415"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentacion-aulabierta-proyecto-de-autoconstruccin-119944711969345-4&stripped_title=presentacion-aulabierta-proyecto-de-autoconstruccin" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentacion-aulabierta-proyecto-de-autoconstruccin-119944711969345-4&stripped_title=presentacion-aulabierta-proyecto-de-autoconstruccin" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><a href="http://www.slideshare.net/aaabierta/presentacion-aulabierta-proyecto-de-autoconstruccin" title="Presentacion Aulabierta. Proyecto de autoconstrucción." target="_blank" >Presentacion Aulabierta. Proyecto de autoconstrucción.</a></div></html>
''+info:''
http://aulabierta.info/faq
propuestas sobre la oportunidad de foros ecológicos y sociales descentralizados y efímeros. frente a la crisis económica, creemos el urbaruralismo
francia/barcelona - http://ascasodurruti.info/hexagone/hexa.html

[img[imago/connectors/bioforum_s.png][imago/connectors/bioforum.png]]<<imagebox 'bioforum - del urbanismo policíaco y capitalista al urbaruralismo ecológico y solidario'>>
----
''Presentación del bioforum
Del urbanismo policíaco y capitalista al urbaruralismo ecológico y solidario. ''
Le Chabian, 1 y 2 de noviembre 2008.

«El urbanismo es esa toma de posesión del entorno natural y humano por el capitalismo que, desarrollándose lógicamente en dominación absoluta, puede y debe ahora rehacer la totalidad del espacio cómo su proprio decorado.» El ordenamiento de Barcelona fue planeado  por el arquitecto Indefenso Cerdà. Tenía como objetivo, como lo hizo Haussmann en París, impedir la revolución social permitiendo que el ejercito pudiera disparar a lo largo de las avenidas rectilíneas. Esto no impidió la victoria en la calle del pueblo catalán, bajo el impulso mayoritario de los anarco-sindicalistas contra el levantamiento militar del 19 de julio de 1936. En España, se jugó la libertad del mundo: la libertad libre y no la libertad vigilada.

No obstante sabemos hoy que los que llevaban el porvenir están fuera de los conflictos principales, salen del consenso antagónico y tienen otra intencionalidad.

Históricamente las miles de revueltas de emancipación campesina contra los amos acabaron con el establecimiento de los burgueses que se apoderaron de la economía mercantil. En cuanto a las 10 tentativas más famosas para establecer el poder de los trabajadores, nacidas de la revolución industrial, fueron todas ahogadas, aplastadas en sangre y en lágrimas (la comuna de París 1871, los consejos obreros de 1905 en San Petersburgo, los consejos obreros en Alemania 1919-1923, de Turín en 1923, de Berlín en 1953, de Hungría en 1956, de la España revolucionaria 1936-39 con la socialización de la economía y la colectivización de las empresas y la supresión del dinero en diversos lugares, de mayo 1968 en Francia, de Checoslovaquia, etc. ).
Recordemos que nuestra especie vive dos conflictos en permanencia: explotadores-explotados, dominantes-dominados y se sobrepone a ello destruyendo otras especies animales y vegetales. 

Insistimos en que la forma de lucha es el consenso antagónico. La idea ya no debe ser la de afrontar directamente las fuerzas de las multinacionales y de los estados, sino la de no participar más, dejar de colaborar y utilizar otros modos de intercambio que el dinero porque vamos ya por la novena crisis financiera desde 1971 y nada ha cambiado fundamentalmente en el sistema. Desarrollemos la autonomía sobre todos los planos utilizando el dinero con la finalidad del dinero.

La mayor dificultad del desarrollo de los recursos naturales es que los individuos están formados para este tipo de economía de dependencia tanto a nivel escolar como a nivel del trabajo.

Lo que vamos a proponer no es más que el principio de un proceso para dejar de depender de las crisis financieras solucionando la crisis social y ecológica.

Nuestra propuesta estratégica consiste en introducir lo vivo de las demás especies en la ciudad, ya que es el lugar del despliegue de la mercancía y de la contaminación; en la ciudad faltan la vida vegetal y la animal.

[img[imago/connectors/bioforum_plano_s.jpg][imago/connectors/bioforum_plano.jpg]]<<imagebox 'bioforum - del urbanismo policíaco y capitalista al urbaruralismo ecológico y solidario'>>

''¿Qué vemos si miramos la ocupación del espacio actual de la ciudad?''

Las calles invadidas por la mercancía piloto que son los coches con la contaminación inherente, hombres mercancía que van a su empleo, comercios y bancos diversos y variados, turistas que son el producto del ocio-mercancía que se pasean y consumen, árboles plantados pero impropios para alimentarse, plantas no comestibles en las plazas y demás lugares, bajo los edificios se encuentran las diversas ocupaciones burocráticas (seguros, poder administrativo, etc.).

Os proponemos utilizar las terrazas para crear otro posible: creando huertas, recuperando y tratando las aguas residuales, produciendo energía y alojamientos desmontables y ecológicos... Todo eso para responder a las necesidades vitales de alojarse, curarse, alimentarse, no contaminar, querer, quererse y desplazarse lo más ecológicamente posible.

Si en el 2004 hubo un movimiento contra el //fórum de las culturas// financiado por 30 multinacionales, hoy en el 2008 la estrategia es la de presentar soluciones individuales y colectivas autonomizantes sobre las terrazas, de federarlas en una página web que repercutirá, si es  posible, sobre la totalidad de la ciudad, e irá más allá contribuyendo a la caída de lo urbano: es el urbaruralismo.

''Concretamente:''
* Sobre las colinas de Barcelona nos proponemos realizar una centena de lagos pequeños y pequeños anfiteatros.
* En el bosque, hacer talas selectivas y no rasas, para mostrar cómo potenciar el bosque mediterráneo.
* Crear y utilizar espacios gratuitos para iniciativas de todo tipo: culturales, sociales, debatir al aire libre...

El objetivo es crear una zona piloto para salvar el bosque contra el cambio climático.

Los círculos verdes representan los barrios populares que resisten al mobbing, puede que en otros lados se puedan tomar otras iniciativas de colectivos de vecinos o a nivel individual.

Propondremos alternativas a las 30 multinacionales que jugaremos como un billar ecológico y social. ¿Cómo hacerlas caer para liberar a la humanidad, ya que hacen pasar hambre a millones de personas?

Hemos pasado de 800 a 925 millones de personas que pasan hambre y de éstas, 30 millones se mueren de hambre.
Por esa razón, nos proponemos cultivar entre otras cosas 3000 hectáreas de espirulina (sobre las 12600 ha), lo que permitiría dar una ración a cada humano y evitaría la malnutrición. La idea es actuar localmente con la conciencia práctica global.

El primer derecho del ser humano es el derecho a no morirse de hambre. Como Barcelona es cosmopolita, esta técnica y este cultivo podría difundirse con más facilidad a  través del mundo.

Expondremos un ejemplo de huerta sobre un bloque de edificios/inmuebles de 125m x 125m. Sabemos que para alimentar a un ser humano hacen falta 25m2 superficie para realizar una huerta.

Mostraremos cómo concebir viviendas temporales individuales y nutritivas. Hay que saber qué revestimiento de una casa es suficiente para su energía.

Podrán instalarse cilindros parabólicos, pues autoconstruir las fotopilas está aún fuera de nuestro alcance. En cambio, podremos construir bioreactores que producen biocarburante con aguas residuales, la emisión de gases que produce permitirá purificar el aire, y equiparemos vehículos con asistencia hidrogénica por electrolisis para así ahorrar.

Vemos en este plano que hemos trazado líneas naranjas. Son transportes aéreos, solares o no, que permiten desplazarse de un inmueble a otro (19m). Imaginamos bicicletas suspendidas de 2 cables. Tendrían forma de mariposa, de flores, o de pájaros, simbolizando las especies que desaparecen a cada hora (con las 750000 hectáreas que son deterioradas por el hormigón, la grava o el asfalto, y la destrucción de los bosques, desaparecen 3 especies por hora, 30000 por año). Recordemos la destrucción del Amazonas, o de Borneo por la explotación de la madera y del Paraguay por el cultivo de soja, etc.

La idea de este desplazamiento podría hacer llegar hasta Barcelona mi amor.

''La nueva ciudad autónoma sobre el mar''

Se trata de construir pequeños archipiélagos en forma de conchas enfrente del barrio de La Barceloneta, donde han expulsado a pobres y pescadores para hacer una zona de turismo de playa para europeos, aprovechando los juegos olímpicos de 1992.

''Respecto al agua:''

Mostraremos que no necesitamos un Agbar que capitalice el agua. La idea es disponer en altitud cilindros parabólicos que, gracias al sol, pueden realizar 6 cosas:
* Potabilizar el agua térmicamente, dado que alcanzan una temperatura de 250°. Podemos tomar el agua del puerto, en lugar de ir a recogerla en el Ródano, contaminado por la radiactividad de las centrales nucleares.
* Desalinizar el agua.
* Producir electricidad con el vapor de las turbinas Tesla (lo que ayudaría a los compañeros que luchan contra el paso de una línea de Muy Alta Tensión en los Pirineos (MAT) que está sirviendo para transportar y vender la sobreproducción de corriente eléctrica de las centrales nucleares francesas.
* Producir agua caliente.
* Producir calefacción.
* Aire comprimido para almacenar energía solar.

Presentamos igualmente la utilización de aseos sobre humus que ahorran el 40% de agua y que son un buen fertilizante para los árboles frutales, en lugar de continuar con plantaciones estériles propias de los servicios estatales.

Mostraremos sobre la Zona Franca cómo se puede desarrollar el cultivo del alga de carburante. El Botryococcus Braunii se encuentra en estado natural en Huelva en España. Los americanos en Massachussets producen 20 megawatios, en Chaput (Argentina) hacen funcionar un barco. Este alga produce más aceite que el girasol por hectárea (136900 litros por ha), lo que permitiría autonomizar Barcelona en relación con el petróleo. Además se nutre de agua sucia.

En la Zona Franca tenemos el centro de internamiento que es una vergüenza. Nos proponemos reemplazarlo por Universidades Populares de Autonomía para aprender a formarse sobre las técnicas autonomizantes, a autoorganizarse, a no desear más ser una mercancía asalariada porque todo es posible cuando rechazamos el sistema salarial.

Considerando que esta sociedad no es nuestra sociedad, ya que no crea más que estrés, violencia, dependencia... nos urge actuar creando otro mundo posible a nivel energético, de las materias primas y sobre todo con una nueva información autonomizante que recoja teoría y práctica.

Por esa razón proponemos a nivel simbólico sustituir la estatua de Cristóbal Colón (1494-2008), que señala a América, por el símbolo de la alianza de pueblos ecológicos como los amerindios, cuyo líder Pelletier sigue todavía en la cárcel. 


''+info:''
http://ascasodurruti.info/hexagone/hexa.html
publicación experimental de arte y pensamiento contemporáneo. participan en ella creadores gráficos y literarios, siempre intentando conseguir una simbiosis armónica
entre imagen y texto en cada una de sus páginas. cada número parte de un tema monográfico al que los colaboradores se ciñen de manera más o menos abierta para aportar un particular reflejo de la sociedad y el tiempo en el que está inserta a través de la visión y el arte de un conjunto heterogéneo de creadores representativos de la escena actual, tanto a nivel gráfico como literario.
tarragona - http://www.caldodecultivo.com/
----
<html><object width="400" height="320"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5996019&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5996019&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="320"></embed></object><br><a href="http://vimeo.com/5996019" target="_blank" >mientras se quemaba Künstainer...</a> from <a href="http://vimeo.com/user2139223" target="_blank" >CALDODECULTIVO MGZ</a>.</html>
exploradores de la diversidad urbana por medio arquitecturas, paisajes, películas e instalaciones 
parís - http://www.coloco.org/

[img[imago/connectors/coloco_s.jpg][imago/connectors/coloco.jpg]]<<imagebox 'coloco - récolte et procession dans les jardins partagés '>>
----
''MANIFESTE''

COLOCO se constituyó como equipo de trabajo a través de exploraciones y proyectos donde forjamos nuestras convicciones. Viviremos un tiempo en que la disminución de los recursos y el aumento de la población nos obligarán a elegir entre la guerra o la división.
Partidarios declarados de la segunda opción, deberemos aprender a ahorrar lo que no es renovable y a reciclar todo lo que puede serlo. El tiempo será un componente esencial de nuestro trabajo: tendremos que administrar la duración de vida. A partir de hoy, tenemos el deber de reversibilidad de las adaptaciones para no capturar recursos sin uso y crear dificultades suplementarias que estrechen las elecciones futuras. Profesionales de la adaptación, tenemos una responsabilidad de invención.

La belleza no es vana, y militamos por un hedonismo duradero.
Los reflejos de protección y patrimonialización son una reacción al miedo de la catástrofe. Pero los santuarios no serán suficientes ante lo que está en juego que es preservar la habitabilidad del planeta. La naturaleza no es un estado ideal, sino una fuerza de renovación.
Es el placer de incluir, y de hacer, que hace crecer el respeto. Esta es la razón por la que prestamos una gran atención a la transmisión al público, a la pedagogía y a la enseñanza. Ya que es cambiando de mirada que se cambiará de prácticas.
El futuro se hará de mestizajes naturales, culturales y tecnológicos imprevisibles.
Contemporáneos, deberemos reconsiderar el lugar de la raza humana para reinventar un humanismo.

Jardineros que practican, nosotros no reconocemos en los corporativismos que delimitan campos de competencias. Al contrario nos convertimos en una estructura simbiótica que asocia las competencias en función de los proyectos. Una estructura viva evoluciona en respuesta al medio. Es lo que nos permite dialogar con un gran abanico de interlocutores, del consejo al control de obra a las preocupaciones domésticas diarias de los clientes privados.
A cada situación sus respuestas concretas y contratadas.

''+info:''
http://www.coloco.org/index.php?cat=manifeste
straddle3.net/arquitecturascolectivas
Unidad fundamental de los organismos vivos, generalmente de tamaño microscópico, capaz de reproducción independiente y formada por un citoplasma y un núcleo rodeados por una membrana. Grupo reducido de personas que funciona de modo independiente dentro de una organización política, religiosa, etc. Pequeña celda, cavidad o seno.
valladolid - http://celulacero.blogspot.com

[img[imago/connectors/celulacero_s.png][imago/connectors/celulacero.png]]<<imagebox 'célula 0'>>
----
''MITOSIS''
septiembre 2007

célula 0 surge con el propósito de fomentar las experiencias colectivas con un objetivo común, generando un debate en el seno de la escuela que tenga como fundamento una actitud crítica y libre de prejuicios, valorando y cuestionando todo lo relacionado con el urbanismo y la arquitectura. Su principal objetivo es sobrepasar la formación exclusivamente teórica, llegando a la ejecución práctica de lo proyectado.

Para ello se propone la creación de un espacio que nace de la necesidad de expansión dentro de la Escuela de Arquitectura, generando un ámbito colectivo de relación y trabajo, llegando a la autoconstrucción de algo que los alumnos sientan como propio y dónde se puedan realizar multitud de actividades. Utilizando para ello los recursos que tenemos a nuestro alcance, incluyendo los conceptos de reciclaje, reutilización y sostenibilidad.

''+info:''
http://celulacero.blogspot.com/2007_09_01_archive.html
<<rssReader asText http://del.icio.us/rss/tiddlywikiplugin>>
un equipo de trabajo
madrid - http://www.democracia.com.es 

[img[imago/connectors/democracia_s.png][imago/connectors/democracia.png]]<<imagebox 'democracia'>>
----
La opción del trabajo en grupo responde a la intención de abordar una práctica artística centrada en la discusión y el enfrentamiento de ideas y formas de acción. El mismo hecho de trabajar en grupo fija un interés de intervención en el ámbito de lo social, a través de planteamientos comprometidos con lo real. Los proyectos responden a una preocupación sobre la progresiva escenificación de los ámbitos de convivencia; visible, no sólo en la importancia, cada vez mayor, de la imagen, sino también en la paulatina incorporación del simulacro a diversos campos de la vida cotidiana, tales como la política, la tecnología o la cultura.

''+info:''
http://www.democracia.com.es/about-us/
proyecto experimental de reutilización de un espacio público.
madrid - http://estaesunaplaza.blogspot.com/

[img[imago/connectors/estaesunaplaza_s.jpg][imago/connectors/estaesunaplaza.jpg]]<<imagebox 'esta es una plaza'>>

----
''La elocuencia del poder''
junio 2009

Yo, Operario del Espacio Público, proyecto que comparto con otros diez o quince compañero y con todos los que han ayudado y puesto su esfuerzo en Esta es una Plaza, estoy orgulloso de comprobar como la gran mayoría mantiene su implicación y ganas, aunque sea, otra vez, en el interminable mundo del papeleo.

También me siento orgulloso por haber contenido esa rabia que te invade cuando destruyen un mundo imaginado mejor, para dar cabida a unas casetillas de obra y unos aparcamientos, que por deseo de la autoridad, de una pobre ignorancia o de la gracia divina, súbitamente pareció mas conveniente. Templanza y perseverancia ha sido nuestra posición y yo estoy orgulloso de ello.

Pero, hay otros días en que, al revés, sientes que tanta moderación, sobriedad y continencia, te convierten más bien en el ‘tontito’ de la historia.

Eso me ocurrió ayer. Pasé por el solar que un día fue una plaza con gente, flores y teatro, un solar en el que, decían, se iban a poner casetas, obras, y no sé cuantas cosas más. Pero, a día de ayer, el solar seguía vacío, vacío, vacío...vacío como en estuvo 30 años

Pero, sorpresa, sorpresa, ¡la puerta había sido soldada! y eso me hace comprender que la razón fundamental que llevó a su cierre, fue que simplemente ¡la querían cerrada! si no, ¿por qué razón se suelda una puerta, si no es para impedir el acceso a todas las partes?.

Ojalá alguien nos lo explique.

''Hablando de La Plaza''
diciembre 2008

Para intentar explicar un poco las cosas en La Plaza, hemos redactado una especie de nota de prensa, que esperamos pueda clarificar algo los antecedentes del proyecto y en lo que nos gustaría que se convirtiera.

Esta Es Una Plaza. Proyecto experimental de reutilización de un espacio público.

15 personas de distintas nacionalidades, procedentes de áreas como la arquitectura, el arte, el diseño, la biología o el medio ambiente y con una común inquietud por la reutilización de espacios públicos en desuso, nos reunimos en un taller de intervenciones urbanas organizado por la Casa Encendida, durante la semana de 1 al 5 de diciembre.

De la mano del colectivo Urbanaccion, especialistas en estas intervenciones y dirigidos, en la práctica, por un resolutivo grupo de acción urbana, Esterni, procedente de Italia, la Junta Municipal de Distrito, nos ofrece la posibilidad de intervenir, un abandonado solar urbano, situado en la calle Doctor Fourquet nº 24, del barrio de Lavapiés, en Madrid.

El primer paso, para decidir qué queríamos llevar a cabo, fue informarnos de las preferencia y necesidades de los vecinos del barrio. Mediante entrevistas a pie de calle, detectamos que las demandas más populares eran: un lugar de encuentro vecinal donde hacer deporte, jugar, organizar eventos culturales, estar en contacto con la naturaleza, intercambiar tiempo y objetos, ver arte y por supuesto conocer a otras personas.

Por las grandes dimensiones y características especiales del solar, comprobamos que era factible llevar a cabo, un tipo de intervención de bajo presupuesto, que brindara a los vecinos, ese espacio que tanto se necesita, en una zona donde los espacios verdes han desaparecido, sustituidos por duras e inhóspitas plazas.

Contamos con un día para planificar la estrategia y conseguir materiales y otros dos para limpiar y adecuar el espacio hasta dotarlo de toda la infraestructura que nos solicitaron.

Construimos entre todos, un huerto, una zona de deporte (campo de fútbol, petanca y bádminton), un mercado (trueque y banco de tiempo) y un teatro al aire libre. Y, como en todo parque que se precie, senderos, zonas verdes y de descanso.

Todo esto, fabricado artesanalmente, con estructuras temporales y desmontables, tratando de utilizar el material encontrado en el solar, reciclando de la calle y gestionando donaciones altruistas. Además, contamos con el trabajo desinteresado de muchas manos vecinales.

Fue entonces cuando empezamos a sentir la necesidad de dar una continuidad a todo lo empezado y coincidió con el momento, en que se hizo patente la participación de personas ajenas al taller, que se ofrecieron voluntarias para trabajar en el solar y que enseguida consideraron el proyecto como algo que les pertenecía.

El taller concluyó con la fiesta de apertura de “Esta Es Una Plaza”, el 5 de diciembre de 2008, desde las 18h a las 23h., a la que asistieron, no sólo vecinos, sino ciudadanos interesados en la posibilidad de continuar con proyectos similares en otros lugares.

Hubo diversión para todos, los niños por fin pudieron jugar al aire libre, sin pisar cemento, se organizaron partidos simultáneos en los que se mezclaron las edades, hubo participación espontánea en la plantación del huerto, degustación de alimentos caseros, actuaciones musicales y de teatro, proyección de dibujos hechos en directo sobre los muros, música silenciosa y sobre todo, mucha comunicación entre los asistentes.

En este momento, se está solicitando la cesión temporal del espacio al ayuntamiento para llevar a cabo los diversos proyectos planteados por asociaciones y vecinos, con el fin de disponer de un espacio público autogestionado, en la línea de iniciativas similares que han surgido por todo el planeta.

Queremos que se permita el uso temporal de ese lugar abandonado durante décadas, para que se convierta en lugar de encuentro e intercambio, lo que nos parece una buena forma de dar vida a recursos muertos de la ciudad y poder albergar y dar cobijo a iniciativas que no caben en otros lugares. Y así formar una comunidad que se responsabilice de la gestión de esos lugares, para entre todos crear una ciudad más sostenible.

Fdo. Operarios del Espacio Público. 

''+info:''
http://estaesunaplaza.blogspot.com/2009/06/la-elocuencia-del-poder.html
http://estaesunaplaza.blogspot.com/2008/12/hablando-de-la-plaza.html
programa de intervención en solares en el centro histórico de zaragoza
zaragoza - http://estonoesunsolar.wordpress.com/

[img[imago/connectors/estonoesunsolar_s.jpg][imago/connectors/estonoesunsolar.jpg]]<<imagebox 'estonoesunsolar'>>

[[10 ideas sobre el programa “estonoesunsolar”|imago/connectors/estonoesunsolar_10 ideas.pdf]] (pdf)
----
''100% Utilizable''
junio 2009

El programa de intervenciones en solares es fruto de un plan de empleo y de una encomienda de gestión por parte del ayuntamiento a Zaragoza Vivienda.

El importe del plan de empleo es de 1.000.000 euros que se desglosarán en 700.000 euros para contratación de personal y 300.000 para obras y material. Este plan de empleo ha sido promovido por la Junta Municipal del Casco Histórico que ha transferido la gestión del mismo  a la Sociedad Municipal  Zaragoza Vivienda.

Gracias a este plan de empleo ha sido posible contratar a un total de 41 personas. La selección se ha efectuado vía INAEM, aplicando unos baremos cuya puntuación variaba según el tiempo de desempleo, el nº de personas en paro en el núcleo familiar, la experiencia y la formación.

El programa viene dirigido por la arquitecta Patrizia Di Monte que nos comenta “es la primera vez que se plantea un programa de este tipo en el ámbito nacional. Su enfoque será experimental y tendrá una importante vertiente de investigación urbanístico-sociológica, involucrando muchas asociaciones vecinales. El mismo nombre que he dado al programa indica una voluntad de cambiar la identidad de estos espacios mas allá de su realidad”.

El programa prevé la realización de las siguientes tareas:
* Limpieza y vallado
* Adecuación de medianeras.
* Adecuación de  solares (cuyos propietarios lo consienten) para un uso público transitorio.

Nuestros Actores/Intérpretes:

Son los 38 trabajadores, que ya forman parte del paisaje urbano del Centro Histórico, que se emplean en limpiar y acondicionar cuantos mas solares sea posible,  con el “leit motiv” de pasar de una condición de solar a una condición de espacio publico de uso transitorio. O sea: pasar de “estoesunsolar” a “estonoesunsolar”.

Conforman un equipo pluridisciplinar que distribuye su asignación de tareas en función de las necesidades de cada lugar, por lo que sus estancias son tan transitorias y efímeras como los propios espacios que están creando: Uso Público Transitorio/100% Utilizables.

¡COMENZAMOS!

''¿Uso Público Transitorio?''
julio 2009

Así es (siempre que los propietarios lo permitan). Estos espacios se están acondicionando para uso deportivo, lúdico, infantil, recreativo, educativo, etc. y serán de libre acceso, gratis y para tódos los publicos, de manera que sus únicas obligaciónes serán las de disfrutar y cuidarlos.

Este tipo de actuaciones se han transformado en una práctica habitual en muchas ciudades europeas y en Zaragoza algunas Asociaciones Vecinales ya vienen utilizando solares del Centro Histórico para llevar a cabo diversas actividades lúdicas (muchas de carácter infantil).

Otros ejemplos de este tipo de intervenciones son las que se llevaron a cabo en 2006 con el programa de intervenciones en solares del Casco Histórico de Zaragoza “los Vacíos Cotidianos” durante el cual  se acondicionó el solar de Armas-Casta Álvarez para un campo de fútbol y se derribó la tapia del histórico solar de la calle Estebanes, para acoger las intervenciones artistícas de Pedro G. Romero, Martín Ruiz de Azúa y Droogdesign.

Por lo general son mecanismos sencillos que permiten añadir a la trama urbana consolidada espacios libres y multifuncionales, tras establecer convenios de cesión de usufructo con los titulares. Estos espacios irán apareciendo y desapareciendo del mapa de forma rotacional otorgando cierto dinamismo a las calles de la trama histórica.

Todos los espacios que quedarán acondicionados se podrán usar hasta que los propietarios de los solares consigan las licencias de edificación pertinentes. Las intervenciones serán low-cost  y se utilizarán principalmente materiales reciclados.

''+info:''
http://estonoesunsolar.wordpress.com
http://estonoesunsolar.wordpress.com/2009/06/30/hello-world/
http://estonoesunsolar.wordpress.com/2009/07/31/%C2%BFuso-publico-transitorio/

//{{{
//This ensures that the footer sticks to the bottom of the screen when there are no tiddlers open. If that is not desirable, it can be deleted.
function setFooter() {
         if (document.getElementById && document.getElementById("contentFooter") ) {
            var windowHeight=findWindowHeight();
         if (windowHeight>0) {
            var contentHeight= document.getElementById('mainMenu').offsetHeight + document.getElementById("header").offsetHeight + document.getElementById("contentFooter").offsetHeight;
            var menu= document.getElementById('mainMenu');
            if (windowHeight-(contentHeight)>=0) {
               menu.style.position='relative';
               menu.style.marginBottom=(windowHeight-(contentHeight))+'px';
               }
            else {
                 menu.style.position='';
                 menu.style.marginBottom='';
                 }
            }
         }
}
window.onresize = function() {
  setFooter();
}

Story.prototype.refreshTiddler_footerhack=Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function (title,template,force)
{    
var theTiddler = Story.prototype.refreshTiddler_footerhack.apply(this,arguments);
setFooter();
   return theTiddler;}

//}}}
por un plan alternativo, social y urbanístico, entre la Ciutadella y la ribera del Besós. el forum de la ribera del besòs es un espacio de encuentro, debates y acuerdos, abierto a todas las entidades y personas que tengan a bien asistir.
barcelona - http://www.forumriberabesos.net

[img[imago/connectors/besos_1958_s.jpg][imago/connectors/besos_1958.jpg]]<<imagebox 'besós 1958'>>
----
''Bisaucii.Colectivo urbano''
Bisaucii es un colectivo sin ánimo de lucro cuya finalidad es la de ser un órgano de defensa y de gestión de los derechos e intereses de los ciudadanos afectados en materia de vivienda, urbanismo, relaciones comunitarias y todo lo referente al tejido comunitario. En su origen Bisaucii está ligado al apoyo y asesoramiento técnico y de participación ciudadana dado movimientos vecinales del margen derecho de rio Besòs (Area Metropolitana Barcelona). De una manera especial a los movimientos vecinales de reinvindicación y participación ciudadana de los barrios de La Mina-Sant Adrià y a diferentes núcleos de población de los barrios del Besòs-Barcelona: Sudoeste de Besòs, Maresme, Diagonal-Mar, Verneda, ...

''Carta abierta a los políticos en apoyo a los vecinos “resistentes” de Bon Pastor. Barcelona''
septiembre 2007

Estimados señores, como entidad Bisaucii. Colectivo urbano, interesada en la salvaguarda de la diversidad humana y de la cultura popular, manifestamos nuestra preocupación al conocer la situación de indefensión que están sufriendo algunas familias del barrio de Casas Baratas de Bon Pastor (distrito de Sant Andreu) delante de las crecientes presiones para abandonar sus viviendas y trasladarse a pisos de nueva construcción.

El derribo integral del barrio de casas baratas nos recuerda soluciones igualmente drásticas que en otros momentos históricos, otros tipos de gobierno han tenido que adoptar para eludir sus
responsabilidades hacia los sectores menos favorecidos de la sociedad.

Nos dirigimos a las autoridades de una ciudad que en más de una ocasión ha declarado apostar por un desarrollo basado en valores cuales la sostenibilidad humana y el respeto por el patrimonio cultural. El patrimonio histórico que las casas baratas implican para la memoria de
las clases populares de Barcelona, es un elemento digno de respeto y conservación.

Por lo tanto, expresamos todo nuestro apoyo a los vecinos y vecinas afectadas, y pedimos a las autoridades competentes de elaborar una solución que respete no sólo los derechos básicos de los habitantes del barrio, sino también el valor inqüestionable, arquitectónico y
social, que las casas baratas representan en sí mismas.


Bisaucii, es uno de los fundadores del forum ribera besós

''+info:'
http://www.forumriberabesos.net/blog/2007/09/09/bisauciicolectivo-urbano-en-apoyo-a-los-vecinos-resistentes-de-bon-pastor-barcelona/
centro social okupado autogestionado. un centro de movidas políticas, sociales y culturales, espacios y tiempos abiertos a actividades de resistencia creativa que no tienen cabida en otros, para culturas libres y antagonistas. un centro de desintoxicación del capitalismo, donde probamos construir colectivamente y horizontalmente, donde somos consecuentes con nuestra ideas y las llevamos a la práctica, donde nos cuidamos y tejemos relaciones que no se basan en poder y dinero. un centro centrifugador de luchas, caja de resonancia y catalizador, que se enreda en las dinámicas emancipadoras que ocurren en nuestro contexto. un centro de movimiento vecinal, para la lucha contra la especulación y contra un modelo de ciudad privatizada en el que los espacios públicos se convierten en centros comerciales.
sevilla - http://www.fabricadesombreros.org 
[img[imago/connectors/fabricasombreros_s.png][imago/connectors/fabricasombreros.jpg]]<<imagebox 'csoa fábrica de sombreros'>>
----
''Comunicado de la asamblea del CSOA Fábrica de Sombreros
Un tartazo a la izquierda institucional''
junio 2009

El pasado martes 2 de junio la policía desalojó el Centro Social Okupado y Autogestionado Fábrica de Sombreros tras un año de intensa actividad y donde construimos con nuestras manos un espacio para la creación colectiva, la autoorganización ciudadana y la cooperación social.

El mismo martes en torno a las 10.30h y mientras nos concentrábamos con rabia y dignidad, estampamos un tartazo de crema en la cara de Luciniano Rodríguez, director del Distrito Centro y miembro de Izquierda Unida, partido que gobierna la ciudad de Sevilla junto al PSOE.

Ese tartazo simboliza nuestro rechazo frontal al papel desempeñado por Izquierda Unida en Sevilla, donde se ha demostrado su absoluta incapacidad de ponerse al servicio de los movimientos vivos de la ciudad y ha sido un claro cómplice tanto de la aplicación de medidas neoliberales cómo de las normativas y disposiciones legales que han supuesto un claro recorte de derechos para lxs ciudadanxs.

Ese tartazo no es contra Luciniano Rodríguez sino contra la dirección local de Izquierda Unida y todas las personas del partido que están ejerciendo cargos administrativos en el Ayuntamiento de Sevilla.

Ese tartazo demuestra que la paciencia de nuestros movimientos está agotada y que a partir de ahora no vamos a tolerar promesas, gestos y palabras vacías sino que exigimos medidas y políticas concretas que de forma clara defiendan los derechos urbanos, sociales y laborales por los que luchamos los movimientos vivos de esta ciudad.

Ese tartazo es una condena a una posición política tibia y camaleónica que hace que por cálculos electoralistas (mal hechos, porque así les va) sean incapaces de hablar claro y alto contra los abusos laborales, la especulación urbanística, la brutalidad policial, la privatización del espacio público y en general el profundo proceso de precarización que nos atraviesa a jóvenes, trabajadorxs, precarixs, migrantes y demás sujetos que habitan y construyen esta ciudad.

Ese tartazo es nuestra respuesta ante el inmovilismo, holgazanería y conservadursimo que hace que IU no haya sido capaz, en los años que lleva cogobernando esta ciudad, de emprender las obras en la Casa Palacio y ceder la gestión del Centro Vecinal Pumarejo, de retirar la ordenanza cívica aún sabiendo que es absolutamente reaccionaria, de haber impedido el desalojo del CSOA Casas Viejas, de no dar el paso para garantizar la continuidad y la gestión ciudadana del Huerto del Rey Moro, de no impedir los abusos policiales permanentes contra la población – y especialmente con lxs migrantes-… sólo por citar conflictos situados en el barrio de San Luis, la lista sería enorme.

Ese tartazo resume la opinión que tenemos de un partido que se ha mostrado absolutamente incapaz de comprender la importancia de contar con Centros Sociales Autogestionados como espacios fundamentales para la participación política y la autoorganización ciudadana de los sectores juveniles en particular y de lxs ciudadanxs y vecinxs en general. Un tartazo tras un año de okupación en el que no hemos recibido apoyo, interés ni siquiera información respecto a la situación de la Fábrica de Sombreros por parte de este partido ni de las entidades administrativas en las que participa.

Ese tartazo es un llamamiento a que respeten y tengan en cuenta al potente, masivo y creativo movimiento social que existe en el barrio de San Luis (y mucho más allá) y que pese a todas las dificultades se ha mantenido vivo y coleando construyendo espacios de autonomía, redes y formas de organización. Este movimiento ha plantado cara sin ningún apoyo a todas las injusticias que han golpeado la zona y ha sido protagonista de los principales conflictos en la defensa de los derechos.Todo esto mientras la izquierda institucional se encerraba en los despachos, pactaba con el PSOE y miraban para otro lado.

Ese tartazo es para decir que Izquierda Unida en esta ciudad se merece el papel de comparsa que desempeña y el enorme caudal de votos que han ido perdiendo, año tras año, en los últimos tiempos.

Ese tartazo, en definitiva, os lo habéis merecido.
Y volveremos a hacerlo.

''+info:''
http://www.fabricadesombreros.org/un-tartazo-a-la-izquierda-institucional/
grupo de vecinos y técnicos inquietos por el tema de la participación vecinal en barcelona
barcelona - http://straddle3.net/participacio 

<html><div><object style="width:700px;height:540px" ><param name="movie" value="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf?mode=embed&amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;showFlipBtn=true&amp;documentId=090623062709-8c301bc6ea284a2f92bad70dff2a1919&amp;docName=la_participacio_canta_0.2&amp;username=imagektor&amp;loadingInfoText=La%20Participacio%20Canta%200.2&amp;et=1245738876067&amp;er=81" /><param name="allowfullscreen" value="true"/><param name="menu" value="false"/><embed src="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf" type="application/x-shockwave-flash" allowfullscreen="true" menu="false" style="width:700px;height:540px" flashvars="mode=embed&amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;showFlipBtn=true&amp;documentId=090623062709-8c301bc6ea284a2f92bad70dff2a1919&amp;docName=la_participacio_canta_0.2&amp;username=imagektor&amp;loadingInfoText=La%20Participacio%20Canta%200.2&amp;et=1245738876067&amp;er=81" /></object></div></html>
----
''a Barcelona la participació canta!''
febrer 2008

Canta en el sentit que, cada vegada que llegim aquesta paraula impresa en algun dels fulletons de l’Ajuntament, de la Generalitat o de la Diputació, ens volen fer pensar que per una vegada es prendran de debò les nostres opinions i necessitats, encara que sospitem que ens estan amagant alguna cosa, o pitjor, que darrere no hi ha res! Només la malícia d’utilitzar necessitats reals emmascarant objectius especulatius o de control social.

Hem vist inundar els nostres barris de fulletons setinats, plens de colors, anunciant “processos participatius” que han acompanyat importants decisions urbanístiques i socials. Però pocs dels nostres veïns i veïnes han realment decidit res. La majoria no hem estat ni tan sols consultats; les decisions sobre els barris ens han caigut a sobre des de dalt, com sempre.

La ciutat està canviant a un ritme vertiginós, i sempre cap a la direcció que convé als interessos del mercat immobiliari i la necessitat d’exhibir-se dels polítics. Hem vist trinxar barris sencers, rebentar teixits històrics, substituir els edificis i la població de zones de la ciutat que d’un any per l’altre s’ha fet irreconeixibles als seus propis habitants; hi ha hagut gent expulsada de les seves cases, tallers o centre socials, i a canvi hi ha edificis d’oficines encara sense estrenar o solars buits. I les administracions continuen parlant de “democràcia participativa” i de “participació ciutadana”. 

El material que presentem aquí és fruit d’un llarg treball col·lectiu en el qual s’hi ha implicat diferents persones, la majoria procedents de les lluites veïnals contra l’especulació del 2000-2006. Durant anys hem hagut de lluitar en contra de decisions municipals i empresarials a barris del Poble Nou, Santa Caterina, Bon Pastor, el Raval, la Barceloneta i molts altres territoris metropolitans. Hem experimentat en pròpia carn que al dia a dia no es promou la participació, més aviat al contrari, si es dóna (doncs no sempre es així), és exclusivament per motius de justificació d’un planejament ja decidit, on els veïns i veïnes afectats no hi tenen res a dir, o per desmobilitzar i silenciar la crítica i apropiar-se després de les seves propostes per convertir-les en discurs buit. Ens preguntem, per exemple, perquè l’administració fa sempre un procés paral·lel al que ja existeix al barri, ignorant la feina feta per molts veïns i veïnes, creant enfrontaments entre col·lectius i no dóna les eines perquè es produeixin espais de trobada on, realment, analitzar i debatre amb tota la documentació necessària el què es vol fer?

Poc a poc hem construït una visió comuna del què està passant a Barcelona, i un dels temes centrals del nostre discurs gira al voltant de les mentides de les nostres administracions en el tema de la participació ciutadana.
Com moltes altres paraules - “cooperació”, “solidaritat”, “sostenibilitat” -  la paraula “participació” ha estat monopolitzada, engolida i buidada de contingut per les institucions (dins de les quals ara hi ha moltes persones que temps ha havien estat implicades en lluites veïnals). El Fòrum de les Cultures 2004 ha estat l’apoteosi del procés de perversió mediàtica de paraules (i persones) que procedien del poble i que han estat irremediablement captades pel poder. 

Ens costa dir, fins i tot, que a l’elaboració d’aquest material hi ha “participat” moltes persones diferents, per la por que aquesta participació - real, dins d’un procés d’elaboració col·lectiva, horitzontal i consensuada - es confongui amb la paraula buida que utilitza l’Ajuntament de Barcelona per emmascarar les seves actuacions elitistes, verticals i impopulars.

A partir del treball fet, ens agradaria imaginar la possibilitat que aquesta paraula torni a tenir el sentit que li pertoca. Ja sabem que quan un mot és capturat pel poder, és difícil que torni a tenir senzillesa i claredat. Mai més podrem parlar de “solidaritat” sense que el fantasma de les ONG’s embruti un concepte que havia estat revolucionari. La mateixa tergiversació succeeix en el cas de  “participació ciutadana”. Però aprofitem-nos d’aquesta perversió per estudiar què significaria per nosaltres que la població (que no és la “ciutadania”) pogués decidir sobre el futur de la seva ciutat; de forma col·lectiva, horitzontal i consensuada, d’una forma que es pogués comparar – salvant les distàncies – amb la manera en què nosaltres hem treballat per elaborar el material que presentem aquí. La forma i el contingut han de reflectir l’un a l’altre: un procés participatiu no pot sorgir d’un fulletó setinat que costi tants diners imprimir, doncs, si des del començament del procés ja es marca la distància entre qui té aquests diners i qui no els té, tot el procés serà influenciat per aquest allunyament. Per això, no ens hem atrevit ni a fer un llibre, que, encara que ens agradi, és un objecte tancat i no encaixa amb la nostra voluntat d’anar millorant, ampliant, corregint i compartint la informació. Hem elaborat senzillament una sèrie de materials perquè se’n faci l’ús que se’n vulgui fer. Volem compartir el que hem après i aprendre amb vosaltres. Potser entre tots podrem ajudar que les iniciatives populars no caiguin sempre en els mateixos paranys.

Per últim voldríem dir que participar és prendre part, i prendre part inclou el poder de decidir. Una participació que no impliqui la presa de decisions conjunta, es podrà dir de moltes maneres (se’ns n’acudeixen vàries: manipulació, consulta d’opinió, engany), però no serà mai participació. 

El material recopilat pretén ser una eina per aconseguir donar significat a la paraula participació, des de l’experiència pròpia i la valoració de la mobilització veïnal, així com ajudar a rebatre la manipulació darrera la propaganda participativa dels poders públics i econòmics amb finalitats especulatives. 

No hi ha camins per a la participació, 
la participació es fa caminant.

''+info:''
http://straddle3.net/participacio 
video documentalista
barcelona

<html><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/XZOUS9A5R4Q&color1=0xb1b1b1&color2=0xcfcfcf&hl=es&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/XZOUS9A5R4Q&color1=0xb1b1b1&color2=0xcfcfcf&hl=es&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="480" height="295"></embed></object></html>
arquitectos y programadores que investigan los territorios emergentes en que se encuentran la arquitectura, los flujos electrónicos y las redes sociales, esto es, el territorio cíborg.
sevilla - http://hackitectura.net 

[img[imago/connectors/hackitectura_s.png][imago/connectors/hackitectura.png]]<<imagebox 'hackitectura qr code'>>
----
''Arquitectura algorítmica y sistemas colaborativos''
Sergio Moreno .2006

''Medio y mainstream''

En una primera mirada a las transformaciones del mundo contemporáneo observamos una inevitable tendencia, en virtud de la cual, todas las actividades de la vida humana se trasladan al campo de operaciones de la infoeconomía, en el que encontramos un enjambre de máquinas, mentes trabajadoras, redes e infocapital organizados en torno a una miríada de microprocesos.

En base a este nuevo paradigma de las redes de información se está construyendo, desde la mirada del poder, lo que podríamos llamar un nuevo espacio subjetivo, un construct efímero de bits y átomos; de información y deseo orgánico controlado: una meta-realidad vibrante y mayormente sumisa.

En el mundo conectado, los bucles retroactivos de la teoría general de sistemas se funden con la lógica dinámica de la biogenética en una visión posthumana de la producción digital. La mente y la carne humana podrán integrarse con el circuito digital gracias a interfaces de aceleración y simplificación.
Nace así un modelo de producción bioinfo que produce artefactos semióticos con las capacidades de autorreplicación de los sistemas vivos según las leyes de funcionamiento económico del capitalismo.<1>

Como primera hipótesis se plantea aqui la existencia de un nuevo medio en el que se desarrollaría la comunicación, producción y transfomación de información, deseos y entorno, que constaría de una serie de elementos primeros fuertemente relacionados, que mostramos aquí en forma de secuencia cíclica:
    * Deseos -- transformación neuronal-mecánica
    * Interfaces -- transformación mecánico-electrónico
    * Impulsos electromagnéticos -- vehículos electromagnéticos
    * Demoduladores -- transformación de ondas en datos
    * Aplicaciones -- transformación de datos
    * Bases_de_datos -- almacenamiento de datos
    * Redes digitales -- transformación de la ubicación de datos
    * Reguladores espacio/tiempo -- control de la ubicuidad de la información
    * Conversores hertzianos -- conversión datos a ondas (luz / sonido)
    * Materia -- soporte reflejo de luz y sonido / flujos naturales
    * Sentidos -- percepción medio material
    * Biochips -- procesadores de la percepción
    * Neuronas -- conciencia 

Estos elementos esenciales se podrían clasificar en tres grandes categorías: códigos, circuitos de transformación y soportes; y podríamos reconocerlos como la base de una nueva gramática global.

Para el mainstream esta gramática surge como una fuente inagotable de producción, aunque el uso que suele hacer de ella es jerarquizado, cerrado y unidireccional.
Mediante la construcción de compartimentos estancos desarrolla un
lenguaje rígido que parece no tener otro objetivo que el de provocar un estímulo neuronal unívoco en el agente pasivo que actúa en el extremo de cualquier proceso combinado: el individuo.

''Multiplicidad y algoritmos''

Como siempre, este vector imparable de la historia se acompaña de una serie de campos de fuerza residuales y minoritarios, que después de desvelar el nuevo medio objetivo, vienen a desarrollar propuestas y sobre el mismo, subviertiendo los mecanismos de transformación y la propia idea del agente y objetivo único.

Por un lado, diversas experiencias individuo-máquina experimentan desde hace algún tiempo en este nuevo medio natural dotándolo de nuevas herramientas de organización y producción, permitiendo a los individuos situarse en cualquier punto intermedio del flujo para pasar a jugar un papel más activo.

Por otro lado, vemos cómo surge una nueva múltiplicidad en la que los individuos activos y pasivos operan sobre los elementos en una relación abierta, dinámica y desjerarquizada dibujándose un escenario de infinitas líneas de procesos que se entrecruzan generando una geometría variable conformadora de nuevos espacios de comunicación multidireccional no dirigida.

El cibionte, hombre simbiótico del futuro, fruto del biólogo Joël de Rosnay, director de la propspectiva de La Villete de París, nos parece una metáfora adecuada para expresar algunas de estas nueva relación entre el hombre y las máquinas a escala macro, incluidas dentro del fenómeno global de autoorganización planetaria o superorganismo constituido por las redes de comunicación.
En el nuevo espacio de las redes, el homo nooferensis, el cibionte es capaz de aprovechar la sinergia de textos, imágenes, datos..., para ser receptor y generador de información como individuo y para generar socialmente un feed-back de participación horizontal desconocido en la historia.<2>

Como resultado, aparece un nuevo territorio, fértil para un cuerpo social organizado horizontalmente, que tiene como referente la validez de los sistemas dinamicos autorregulados más recientes erigidos como nuevos paradigmas de la ciencia.

Aplicados a nuestro caso, este sistema territorial tendría como matriz principal la inteligencia colectiva y como catalizadores un amplio repertorio de entidades digitales y físicas, siendo la múltiple y reiterada acción de los agentes la que produce la diversidad, en contraposición a los sistemas dirigidos en los que la diversidad se confecciona a piori para luego ser recibida intacta por el elemento final de la cadena de procesos.

En nuestro trabajo nos referimos a los algoritmos territoriales para designar este tipo de secuencias múltiples de acciones individuales iterativas y complejas que, actuando sobre los elementos y respetando un repertorio mínimo de reglas básicas, tienen la virtud de transformar el espacio, el modo de habitar y la comunicación en sí misma.

''Cooperación''

En la inteligencia colectiva residen los códigos de la comunicación, los derechos ciudadanos en constante renovación y una creatividad palpitante que resuena y se sostiene por los lazos que establece la cooperación múltiple que subyace en los algoritmos territoriales.

El territorio procesual de los flujos de información permite a cada individuo emisor-creador situarse en cualquier punto intersticial provocando en primera instancia una transformación inmediata de su entorno, que inicia, a la vez un viaje algorítmico de infinitas resonancias, que por contacto exponencial termina por transformar el entorno global.
En cada contacto se produce un lapso en el que la información o experiencia, antes de volver a ser transmitida, conserva momentáneamente su estado original o bien sufre una mutación o adaptación.

Sobre el territorio de los flujos la información curva la relación espacio / tiempo

Este juego de transformaciones constituye el palpitar de un sentir atemporal en el que se contraponen a los conceptos de pasado y futuro los de reciclaje y colapso. Asi, mientras el reciclaje sería una atomización última de cualquier acción o información, el colapso vendría a ser una singularidad en los procesos. Una meta transformación, un coctel de información dispersa que condensa en nuevas ideas, que transforma el espacio generando un grado más de entropía, un nuevo campo de complejidad y libertad.

''Territorio''

En este magma de mentes, materia, información, ideas, procesos y lugares se entreveen tres escalas de abstracción del territorio: paisaje, espacio público y ciudad global.

El paisaje sería, por un lado, la infraestructura básica del territorio, y, por otro lado, la información global en estado bruto. La naturaleza que contemplamos y sobre la que reflexionamos. En este paisaje veríamos cómo las redes culturales, sociales, productivas y tecnológicas alimentan el paisaje de la información de forma permanente.

Los espacios públicos vendría a ser aquellos en los que un mínimo grado de tratamiento de información transforman el paisaje en un lugar de encuentro, trabajo y expresión como fruto de una relación intencional entre individuos y máquinas.
En los espacios públicos se producirían los procesos complejos de transformación y expresión de la vida cotidiana.

Por último, estaría la ciudad global, allí donde condensa el conocimiento colectivo y se toma conciencia del territorio. Es la ciudad en permanente colapso, el espacio de comunicación libre global.

''Código''

Según entendemos, los algoritmos territoriales activados por las multitudes en los distintos niveles de abstracción del territorio funcionarían con códigos de comunicación y producción libres y abiertos cuyas cualidades residen en la virtud que tienen de ser accesibles para cualquiera, encontrarse en permanente reformulación, respetar la diversidad y proteger la libertad de su uso y modificación.

En el campo de la informática surge el open source software y el free software para designar al código que presenta estas características.
Desde cualquier máquina es posible acceder al mismo, modificarlo, ampliarlo, variarlo y redistribuirlo. Se encuentra en constante evolución, testeo y perfeccionamiento a través de las múltiples aportaciones de cada programador o usuario.

El software que abre su código y evoluciona mediante este sistema colaborativo es siempre el que más se ajusta a las necesidades y el de mayor consenso. El OSS/FS colapsa cada cierto tiempo produciendo una versión estable del mismo.

Aqui queremos comentar algunas de las características que presenta y la íntima relación que el OSS/FS tiene con la arquitectura del territorio de los flujos:
- Se genera mediante algorítmos: cada emisor-receptor opera ciertas funciones. Tras ciertos lapsos de transformación se produce un colapso y surge una versión estable.
- Autosuficiente: su relación con el entorno se decide en el momento de su uso. En ese instante vuelve a sufrir nuevas modificaciones adaptativas.
- Portable: funciona en cualquier plataforma. el trabajo colaborativo del que nace le da un caracter universal.
- Hay un coordinador de proyecto que sustituye las teareas de mando por las de organización de los múltiples agentes que intervienen en el proceso.
- Se encuentra en constante mutación y, simultáneamente, acabada: siempre hay una o varias versiones estables y una o varias versiones en proceso.
- Se optimiza constantemente: la naturaleza de la herramienta impide cauces degenerativos. O avanza o se estanca, entonces se recicla.
- Transportable: se descarga y se instala facilmente; su manual de uso se encuentra implícito.
- Desmontable: la virtud de los sistemas algorítmicos es que pueden hacerse y deshacerse. Los caminos de ida y vuelta se vuelven transparentes.
- Económica: no se encuentra sujeta al flujo del mercado, sino más bien a un fuerte equilibrio entre intencionalidades y recursos.
- Digital-material: su relación con el entorno se realiza mediante redes digitales-físicas. allí donde nace.

''Interfaz''

Siguiendo este camino de inmersión en el territorio, queremos destacar el papel que juegan los interfaces como piezas claves del medio en esta nueva concecpión del territorio.
Podríamos decir que los elementos del medio físico y digital convergen en los interfaces. éstos actúan como mediadores entre ambas realidades y se encuentran implicados fundamentalmente en dos fenómenos: la conversión digital-hertziano, y la conversión neuronal-mecánico.

Los interfaces nos permiten una comunicación interactiva en tiempo real a través del mundo digital con una multiplicidad de individuos. Pero a su vez actúan como ventanas de conexión permanente entre la mente y la globalidad, entre el espacio local y el espacio global, entre bits y átomos. Por ello entendemos que estos dispositivos no son sólo meras herramientas de la comunicación digital, sino los propios mecanismos articuladores del territorio.

De un espacio a otro y a través de los interfaces, los distintos códigos adquieren cierta universalidad ya que deben ser capaz de sufrir conversiones múltiples en infinidad de situaciones, escalas y lugares sin desvirtuarse.
De esta universalidad del lenguaje surge de manera natural una nueva espacialización: un concepto nuevo y coherente del espacio.

Sobre el landscape o paisaje de información volcada por la cooperación mediática se hacen crecer estos mecanismos que nos permiten recorrerlo, articularlo, transformarlo e isomorfosearlo con la naturaleza física consiguiéndose el híbrido territorial entre la realidad física y la digital infinitamente conectadas.

No soy el hombre vitruviano, inscrito en un único cículo perfecto, desde el que miro al mundo con una perspectiva personal, que a la vez proporciona la medida de todas las cosas. Tampoco soy el ente fenomenológico, autónomo, autosuficiente y encarnado biológicamente, que encuentra, objetifica y responde a su medio inmediato. El nuevo yo, construye y es construido, en un proceso recursivo que implica continuamente sus límites fluidos y permeables y sus redes inacabables de extensiones. Soy un cíborg espacialmente extendido.<3>


''Arquitecturas ligeras''

Desde nuestro punto de vista, el desarrollo y uso de Free Software por redes de comunidades colaborativas constituiría una nueva forma de generación de territorio ya que elaboraría sus elementos básicos, el flujo de información que fluye por el mismo, la estructura organizativa que lo sostiene y la secuencia algorítmica recombinante del espacio de la comunicación.

Podriamos llamar a ésta una arquitectura ligera por su caracter eminentemente digital y porque se desarrola relativamente desligada de los procesos de comunicación inmediata y de relación con el entorno físico.
En esta arquitectura se producirían feedbacks o circuitos de retroalimentación de baja latencia donde la relación que predomina es entre lo singular y lo global: individuos <-> interfaz <-> aplicaciones <-> redes <-> www <-> bases_de_datos.

De estas arquitecturas habría que destacar el uso y desarrollo de herramientas colaborativas textuales generadoras de espacios colectivos de trabajo, análisis, estudio y creación.
Entre ellas encontramos la wikipedia, la enciclopedia libre que crece en la red en decenas de idiomas y se escribe de forma colaborativa por voluntarios, permitiendo que la gran mayoría de los artículos sean modificados por cualquier persona con acceso mediante un navegador web.<4>
En este apartado se podría citar también el proyecto sourceforge, un sitio web que hospeda gratuitamente más de 100.000 proyectos de software de código abierto, suministrando a desarrolladores y usuarios una gran variadad de servicios para el desarrollo de proyectos de software.
Y por último, el fenómeno de la blogosfera, que es el término bajo el cual se agrupa la totalidad de weblogs, o bitácoras personales y colectivas. Mientras que los blogs por sí mismos son sólo un formato en la web, la interconexión de estos es un fenómeno social: al verlos como un todo se pueden determinar claramente tendencias, gustos, popularidad de sitios, objetos, productos, música, películas, libros, como si fuera un ente colectivo.<5>

De manera transversal a éstas y otras herramientas surge un fenómeno relacionado con la clasificación de la información que nos parece interesante destacar: las folksonomías, un esfuerzo colaborativo en el que los usuarios, en lugar de clasificar la información de manera jerárquica, asignan etiquetas y palabras claves a los textos, imágenes, videos y lugares de forma que el conocimiento se obtiene a través de la comparación entre lo que hemos clasificado y cómo, y las clasificaciones de elementos o categorías similares realizadas por miembros de la misma comunidad. Los metadatos así obtenidos reflejan no solo la naturaleza de lo clasificado, sino ayuda a los miembros de la comunidad a 'encontrar', que no buscar, recursos acorde a sus gustos de una manera automática.<6>

''Arquitectura intensiva''

En segundo lugar, encontraríamos una arquitectura más ligada a los procesos de la inmediatez y al intercambio de información en tiempo real. En esta arquitectura el interfaz juega un papel más intensivo y sobre él recae gran parte de la carga, ya que si bien en las arquitecturas ligeras, el interfaz es mero mediador de la interactividad, en este caso el interfaz actúa además como soporte de representación de la información generada y transformada en tiempo real. El otro factor cualitativamente distinto está relacionado con las redes de comunicación, que en estas arquitecturas dejan de ser un medio de transporte de información pasivo para ser objeto de reivindicación, desarrollo y búsqueda de alternativas como infraestructuras libres.

En una clasificación sencilla, hablaríamos de dos tipos de feedbacks:
Uno de media latencia en el que se daría una relación espacial y comunicativa entre dos singularidades alejadas físicamente, y otro de alta latencia en el que las relaciones se darían de forma cruzada entre distintas singularidades: individuo <-> interfaz <-> p2p <-> redes <-> p2p <-> interfaz <-> individuos; y individuo <-> interfaz <-> netcasting <-> redes <-> netcasting <-> interfaz <-> individuos, respectivamente.

Entre otras cosas, nuestro trabajo se ha centrado en los últimos años en el desarrollo experimental de arquitecturas de alta latencia.

En esta investigación hemos tratado de subvertir el concepto clásico del espacio de la comunicación tomando como punto de partida las hipótesis comentadas anteriormente: medio, multitudes, algoritmos, colaboración, códigos libres e interfaces.

Para ello, además de usar herramientas p2p, se ha desarrollado un sistema lógico de comunicación, al-jwarizmi, una red infraestructural y humana de soporte, GISS y un portal en el que visualizar en tiempo real flujos de datos, conexiones y contenidos, r23.cc.<7>
Un conjunto de multitudes, código, piezas de software, sistemas, codecs, servidores, cartografías dinámicas, redes, etc, que nos ha permitido adentrarnos en el medio de las redes a través de nuevos interfaces para desplegar un lenguaje de comunicación que operase sobre una gramática abierta, distribuida y accesible.

De esta forma, distintas multitudes de distintos lugares del mundo se han conectado en tiempo real mediante flujos de texto, audio y video para transmitir contenidos diversos relacionados entre otros con la libertad de movimiento, los códigos libres en la comunicación digital y los nuevos procesos autoorganizativos.
Estos cóntenidos han sido proyectados en distintos espacios físicos y digitales, y se han vuelto a samplear digitalmente para volver a ser lanzados a la red.
A través de este proceso recursivo y distribuido nos ha parecido que la comunicación adquiría nuevas cualidades. el tiempo y el espacio clásico se transformaban en nubes borrosas transmisoras de deseos, bits y materia que en última instancia conseguían estabilizarse para generar otro territorio: un juego excitante al que podríamos llamar scratching the reality, que implicaba a todos los elementos en un gesto de libertad.

Para nosotros, esta serie de experiencias tienen especial valor porque han tenido la capacidad de aunar esfuerzos de distintas naturalezas a lo largo del ciclo de trabajo que venimos desarrollando.

Desde la Pure Data Beta Rave, desplegada en Sevilla en enero de 2003, hasta Fadaiat:Borderline Academy, en Tarifa/Jun 05, pasando entre otros por Okupa: Ciudad Disidente, en Corvera/Asturias/Abr 03, Reunión03, en La Rábida/Huelva/Sept 03, y Fadaiat:Transacciones, en Tarifa/Jun 04, distintas redes sociales, tecnológicas y culturales han venido trabajando en el desarrollo de software, en la implementación de redes, en la elaboración de contenidos digitales, en la creación de modelos de trabajo horizontal, en la puesta en marcha de medios de comunicación distribuidos, etc, consiguiendo generar la masa crítica necesaria para la consecución de este proyecto algorítmico territorial. Ya que si bien, las máximas intensidades se han alcanzado de manera puntual en el espacio/tiempo, el valle y la meseta siguen siendo el espacio público de trabajo del dia a dia en el que sigue resonando la palabra, la imágen, la voz, y los procesos de conversión del espacio.


Notas:
1.- Bifo / 2003 / La Fábrica de la infelicidad
2.- Antonio de la Vega / 2002 / Cibionte / Proyecto Nous
3.- William Mitchel / 2003 / M++. The Cyborg Self and the Networked City
4.- wipipedia.org
5.- wikipedia.org
6.- EWS / 2005 / Clasificación cooperativa a través de metadatos compartidos / Publicado en suburbia.sindominio.net
7.- Ver aljwarizmi.sourceforge.net, giss.hackitectura.net, r23.cc

''+info:''
http://mcs.hackitectura.net/tiki-index.php?page=Arquitectura%20algor%C3%ADtmica%20y%20sistemas%20colaborativos
hort comunitari de gràcia. l'hort comunitari del Carrer Banyoles va néixer d'un estudi sobre la manca d'equipaments al barri versus espais buits i infrautilitzats, realitzat per un nombrós grup de persones, entitats i col·lectius de la Vila de Gràcia. la conclusió d'aquest estudi va ser que degut a a motius diversos (especulació, manca de voluntat política de les administracions i deixadesa administrativa) hi havia una clara realitat de manca d'espais d'us social i comunitari un excés d'espais amb signes clars d'abandonament. 
gràcia / barcelona - http://horteres.org/

[img[imago/connectors/horteres_s.jpg][imago/connectors/horteres.jpg]]<<imagebox 'hort comunitari de gràcia'>>

----
''Qi som?''
juliol 2008

1. LA PROPOSTA

Des de fa ara uns 4 anys l’Observatori de Gràcia ha estat treballant contra una transformació elitista del barri on es fa patent la manca d’espais públics i d’ús social, la desaparició de petits comerços i tallers artesanals, l’expulsió del veïnat econòmicament més vulnerable, per afavorir l’arribada de nous habitants i consumidors amb un elevat poder adquisitiu. Va ser dins d’aquest treball que l’Observatori va elaborar un mapa de la Vila detectant l’existència de nombrosos solars buits en estat d’abandó des de fa anys i de nombroses cases tancades i tapiades.

La inacceptable contradicció entre aquest espais abandonats i el cada cop més abusiu preu del lloguer així com la manca d’espais d’ús social és d’on va sorgir la idea de fer una acció de denúncia creant un nou espai i forjant amb ell un punt de trobada i d’integració. Desprès de plantejar-se diferents opcions d’ús (pista de petanca, pista de basquet, rocòdrom o senzillament adequar-lo i convertir-lo en un punt de trobada) es va optar finalment per la creació d’un hort comunitari perquè, de totes les propostes és la que va semblar més integradora. En ella hi poden participar persones de totes les edats: des de les més grans a les més petites passant per les escoles i els esplais, i que permet retrobar-nos amb la terra i a reconèixer i valorar els seus productes des de la proximitat. L’objectiu és obrir un espai comú, i això vol dir que és obert a tothom i que es fa entre tots i totes.

2. L’OBERTURA DE L’ESPAI

La entrada a l’Hort Comunitari es va fer de manera pública el dia 25 d’Octubre de 2008, al final d’un cercavila en el qual van participar un centenar de persones amb la presencia activa de diferents col·lectius i associacions del barri. La continuació del projecte va ser però represa pels veïns més propers que en un primer moment van dedicar els seus esforços fonamentalment a la adequació de l’espai com a jardí i hort comunitari i, poc a poc, van anar incorporant-se els diferents projectes que van trobar a l’Hort Comunitari del carrer Banyoles, l’espai adient per a les seves activitats: la Tribu, bicipOp, ~XIC-Gràcia, esplais, caus, etc. Potser l’Hort continua sent l’activitat més aglutinadora d’aquest espai, però ja no és l’únic projecte que s’hi desenvolupa.

3. l’HORT COMUNITARI: UN PROJECTE QUE TOT JUST COMENÇA

L’Hort Comunitari porta poc més de 6 mesos caminats i ja pateix una denúncia presentada per les propietàries legals del solar dos mesos desprès de l’entrada a l’espai i malgrat la llarga durada d’anys en que l’espai ha estat sense ús (feta excepció de l’ús per habitatge de l’antic edifici pel CSO “El monstre de Banyoles”.

Només 6 mesos desprès però els usos de l’espai van agafant ritme i periodicitat. Ja són habituals usuaris els nens i nenes del grup de criança La Tribu, el grup de ~Qi-Gong dels dissabtes, els hortelans urbans, els ~BiciPopers, els cinefòrums, etc. Però l’Hort Comunitari no vol quedar-se aquí sinó que vol convertir-se en un centre de formació i informació per afavorir l’horticultura urbana mitjançant la distribució/intercanvi gratuït de llavors així com donant idees adients per balcons, terrats i terrasses i donant suport i informació mitjançant no només l’intercanvi d’informació sinó també obrint una petita biblioteca especialitzada en temes d’horticultura i jardineria ecològiques. Està adequant poc a poc l’espai infantil constituint-se com un jardí a la part baixa de Gràcia. Ha iniciat algunes visites guiades a l’Hort (al Casal d’Avis de Siracusa, al taller d’Hort urbà del Centre Cívic de la Sedeta) i vol renforçar el seu interès com a projecte de Educació Ambiental.

Per aquesta raó defensem un projecte que està molt viu i que té molt per oferir al barri i creiem de manera ferma en la seva legitimitat moral per davant de la seva situació legal donada la trajectòria d’un espai que ha patit tots els símptomes evidents bé d’una incapacitat per part dels seus propietaris per a un ús particular pertinent o bé directament una descarada especulació i doncs d’una agressió directe al seu potencial ús públic.

el local de plaza del sol 19-20 bajos a Gracia gestionado por la asamblea de la Asociación Infoespai. el objetivo principal de este espacio es desarrollar herramientas, recursos y conocimientos para la transformación social. moviments.net es el espacio virtual de trabajo colaborativo que facilita el intercambio de información y actividades entre colectivos y personas que forman parte de los nuevos movimientos sociales.
barcelona - http://www.infoespai.org - http://www.moviments.net

[img[imago/connectors/infoespai_s.jpg][imago/connectors/infoespai.jpg]]<<imagebox 'infoespai>>
----
''Altercoms SCCL: aprenent i comunicant en xarxa.''

Qui som? Altercoms SCCL, cooperativa de treball i consum. El gener del 2004 va ser constituïda Infoespai SCCL amb una forma jurídica que permet donar una base legal a les figures de treballadors/es i usuàri/es o consumidors/es , el més d'acord possible amb els principis polítics de l'infoespai. A la tardor del 2005, la cooperativa va passar a anomenar-se Altercoms SCCL diferenciant-se de l'infoespai com a lloc físic que actua com a node de suport a la xarxa difusa dels moviments socials. !!! Des d'on actuem? Ens ubiquem físicament a l'Infoespai la vila de Gràcia i virtualment a http://www.moviments.net Més informació sobre on som aquí !!! Què fem? Oferim una sèrie de recursos i serveis que faciliten l'aprenentatge, comunicació i difusió dels col·lectius i persones dels moviments socials. En concret, són actualment, la xarxa sense fils cooperativa, la impremta, duplica, cursos de programari lliure i els serveis telemàtics de moviments.net Tots aquests serveis són oferts prioritàriament als socis de la cooperativa, siguin persones o col·lectius. Tot això us ho expliquem amb detall en aquest fulletó. !!! Per què actuem? Ens motiva la transformació social cap a la construcció d'una societat igualitària, lliure i diversa. Comunicació, economia alternativa i educació, són els pilars que des d'Altercoms posem en el centre de la nostra estratègia perquè són necessitats transversals a qualsevol iniciativa de transformació que es vulgui convertir en una realitat. Volem oferir eines i recursos als moviments socials per a beneficiar la seva activitat quotidiana en l'àmbit de la transformació social. Volem contribuir a bastir una xarxa d'economia solidària , en la qual els productors i els consumidors s'apropin i fins i tot es confonguin; on la col.laboració substitueixi la imposició i el lucre com a element activador de la compra-venda. L'objectiu d'aquesta xarxa seria convertir-se en un veritable mercat social és a dir en una xarxa de producció, distribució, i consum de bens i serveis que funcioni amb criteris democràtics, ecològics i solidaris, i que estigui constituïda, tant per empreses socials o productors individuals; com per consumidors individuals i col·lectius. !!! ¿Cóm ho fem? Percebem que les xarxes són una manera vàlida d'organitzar-se en societat i en diem cultura de xarxa. Les xarxes són formes d'organització descentralitzades i horitzontals, que estan formades per nodes que actuen amb llibertat i autonomia, però en constant comunicació entre elles. Ens autoabastim de mitjans de producció, relacionats amb la comunicació i així contribuïm a fer més independents dels poders fàctics els mecanisme de difusió dels moviments socials. Fem circular la informació amb elements transformadors per augmentar la capacitat de colectius i activistes per interconnectar-se. !!!


''+info:''
http://www.moviments.net
http://www.infoespai.org 
festival de cultura contemporània de l'empordà
figueres - [[veure localització ingràvid|sede wikiplaza ingràvid]] - http://www.festivalingravid.com

[img[imago/connectors/ingravid_s.jpg][imago/connectors/ingravid.jpg]]<<imagebox 'ingràvid'>>
----
L'estat ingràvid és impossible al planeta terra, excepte per als mamífers al ventre matern. De fet és un estat que somiem sovint, sobretot quan volem relaxar-nos i evadir-nos. Ja des de la infantesa experimentem en la recerca d'aquest estat: piscines, a la vora del mar, llits elàstics, gronxadors,... Per altra banda ingravidesa i buit són conceptes propers, un es dóna en l'altre, i l'altre remet al un. L'ésser humà, que viu de l'etern retorn cap al ventre matern amb la mort com a únic horitzó, tracta d’omplir incansablement aquest buit. En aquest esdevenir per trobar sentit, per omplir el buit, ens fem moltes preguntes i per al cas, la més coherent: Què omple l'art?
arquitecta y urbanista
barcelona
centro social y cultural de gestión ciudadana. un espacio destinado a fomentar la auto-organización ciudadana, el pensamiento crítico y la creación colectiva.
málaga - http://www.lainvisible.net 

[img[imago/connectors/lacasainvisible.gif][imago/connectors/lacasainvisible.jpg]]<<imagebox 'la casa invisible se queda'>>http://www.lainvisible.net/?q=es/node/17125
----
''DEFENDAMOS LA INVISIBLE - POR EL DERECHO A LA CIUDAD''
15 Julio 2009

Queridos-as Compañeros-as:

El Ayuntamiento de Málaga ha anunciado su intención de desalojar la Casa Invisible . Desde marzo de 2007, cuando el edifico de la calle Nosquera fue ocupado por un amplio grupo de ciudan@s y creador@s, este centro social y cultural de gestión ciudadana se ha convertido en un verdadero pulmón de creatividad y autoorganización ciudadana. Durante todo este tiempo La Invisible ha recibido un enorme respaldo de la ciudadanía, de importantes personalidades y una amplia Red de Amig@s e incluso de instituciones de la talla del Museo Nacional Centro de Arte Reina Sofía (MNCARS) ó la misma Diputación Provincial de Málaga.

Durante estos dos años, la Casa Invisible y el Ayuntamiento de la ciudad, propietario legal del inmueble, han mantenido un proceso negociador, cuyo primer tramo iba a finalizar en las próximas fechas con la firma de un Protocolo de Intenciones. No obstante, y pese a que se cumplen todas y cada una de las condiciones previstas para la firma de este documento, el Ayuntamiento ha roto de manera repentina y unilateral las negociaciones para anunciar que desalojará el edificio.

Una vez más, el gobierno de la ciudad de Málaga se muestra incapaz de respetar y atender a las demandas de la ciudadanía y su capacidad de autoorganización. La Casa Invisible es un modelo de una democracia intensa que experimenta formas de gestión ciudadana de los bienes comunes creando a su vez formas de producción cultural surgida desde los propios creadores locales desde los principios de la cración libre y cooperativa. Ante esta red ciudadana y sus demandas, el Ayuntamiento ha optado por continuar con su política urbanística y cultural destinada a favorecer los beneficios del sector privado.

La Casa Invisible te necesita, quizás más que nunca, porque estamos segur@s de que también podemos ganar esta batalla entre tod@s. En los próximos días te iremos anunciando cada una de nuestras iniciativas para conseguir que este proyecto siga dotando a nuestra ciudad de esa vida cultural y ese protagonismo ciudadano del que, hasta hace dos años, tanto carecía.

DEFENDAMOS LA CASA INVISIBLE - POR EL DERECHO A LA CIUDAD
LA BATALLA ENTRE LO COMÚN Y LO PRIVADO AÚN TIENE RESULTADO ABIERTO. JUNTOS PODEMOS CONSEGUIR LA CONTINUIDAD DE LA CASA INVISIBLE. CONTAMOS CONTIGO.

''+info:''
http://www.lainvisible.net/?q=es/node/17125
----
''Manifiesto de la Red de Amigos-as de La Casa Invisible''

El  10 de Marzo de 2007 una red formada por vecin@s, ciudadan@s y creador@s locales decidimos poner en marcha un Centro Social y Cultural de Gestión Ciudadana que llamamos La Casa Invisible.
Se trata de una apuesta por abrir un espacio destinado a fomentar la auto-organización ciudadana, el pensamiento crítico y la creación colectiva.

Creemos firmemente en la necesidad y el deseo de poner en marcha en nuestra ciudad espacios públicos que no estén condicionados por regulaciones estatales o mercantiles, sino que puedan abrirse a la creatividad y capacidad organizativa que nace de las redes sociales que habitan y modelan nuestra ciudad. Se trata de un espacio experimental para que creador@s locales, movimientos sociales y culturales, vecin@s y ciudadan@s puedan desarrollar sus iniciativas y proyectos así como disfrutar de una amplia oferta cultural con entera libertad.

Necesitamos espacios y el acceso para todos a los medios de producción cultural (locales de ensayo, salas de teatro y cine abiertas, zonas verdes, espacios públicos, centros sociales y culturales de gestión ciudadana, etc.), pero mientras reclamamos estos derechos nos imprimimos la licencia para producir, en cada solar y espacio abandonado, un espacio-tiempo para la creación libre y colectiva.

La gente que participamos en la gestión del espacio a su vez estamos muy interesados en ir articulando procesos de encuentro y organización para construir movimientos sociales capaces de oponerse y producir alternativas ante este modelo neoliberal basado en la especulación, la precariedad , la privatización de lo público y la uniformización del pensamiento impuesto por aquell@s que detentan el poder político y económico. Sobre La Casa Invisible pesa una orden de expulsión por parte del propietario del inmueble, el ayuntamiento de la ciudad, a pesar de estar embarcado en la promoción de Málaga como teórica capital 2016 de la cultura europea, una supuesta candidatura que consume millones de las antiguas pesetas en costosas campañas promocionales dirigidas en realidad al consumo interno.

El proyecto de La Casa Invisible ha obtenido importantes apoyos del mundo de la cultura y las organizaciones sociales, entre las que destacan figuras como el premio nóbel Dario Fo, cineastas como Fernando León ó Javier Corcuera, escritores de la talla de Naomi Klein o Antonio Negri y más de un centenar de profesores de la Universidad de Málaga.

Somos miles de islas, hagamos archipiélagos.
La Casa Invisible
c/nosquera nº 9 y 11. MALAGA

''+info:
http://www.lainvisible.net/?q=es/quienessomos
cooperativa cuyo trabajo se sitúa en el cruce de la práctica artística y la educación, entendidas como actividades controversiales. actualmente sus principales líneas de actuación son la provisión de servicios educativos a organizaciones y la producción de proyectos colaborativos de continuidad con distintos colectivos e instituciones.
barcelona - http://lafundicio.net - http://www.lafundicio.net/wordpress/

[img[imago/connectors/lafundicio_s.gif][imago/connectors/lafundicio.jpg]]<<imagebox 'la fundicio - projecte spider3'>>
----
La Fundició es una cooperativa de servicios educativos y producción cultural formada por un grupo de personas que veníamos trabajando desde 1999 de manera precaria dentro de este campo. La Fundició es pues, una herramienta para regularizar nuestra situación como trabajadores culturales, a la vez que nos permite iniciar y tener el control de proyectos con los que poner en práctica nuestra concepción de la educación:

Entendemos que el carácter disciplinario de la educación y su función reproductiva de los discursos establecidos deben ser superados en favor de procesos transversales y horizontales de construcción de conocimiento, que potencien la capacidad de agencia de todos los individuos implicados. Esto responde también al interés por repensar y redistribuir la manera y los lugares en los que se elaboran y se transmiten los saberes, y se basa en el análisis y la concienciación de las relaciones entre estos y el poder.

Las principales líneas de actuación de LaFundició, hoy por hoy, son dos: por un lado la producción de proyectos de continuidad con centros educativos y culturales, basados en un trabajo de colaboración y por otro la provisión de servicios pedagógicos.


''+info:''
http://www.lafundicio.net/que.php?fo=fondo6
http://www.lafundicio.net/wordpress/
La Matraka Cultural se dedica a la gestión producción y promoción cultural, sin fines partidistas ni políticos.
sevilla - http://lamatrakacultural.wordpress.com 

[img[imago/connectors/matraka_s.png][imago/connectors/matraka.png]]<<imagebox 'aptitude fm'>>
----
La Matraka está a setenta y siete metros de altura.

La Giralda tiene el cuerpo de campanas a setenta y dos metros de altura. Son 15 campanas que gobiernan desde los cielos la ciudad de Sevilla. Las campanas de la Giralda están cerca del cielo, decía la canción. Y sin embargo, más arriba, está La Matraca de la Giralda, una cruz de madera hueca que suena sólo los días de difuntos, y que es el instrumento musical más alto de Sevilla, más cerca del cielo incluso que las campanas de la Giralda.

La Matraca llegó a Isbilya gracias a los árabes. Matraca viene de “mitraqa“, que significa martillo, y de “táraq“, que significa golpear. Matraca también  proviene de “hârraqa” o “hârraq”, que se refiere a un gran navío de mercancías.  Por eso La Matraka es también [[PoliZone|http://www.polizone.es]]

''+info:''
http://lamatrakacultural.wordpress.com/quienes-somos/
estudio de paisajismo donde realizamos planes, proyectos, estudios y diseños relacionados con el paisaje.
oiartzun - http://www.lurpaisajistak.com 

[img[imago/connectors/lur_s.jpg][imago/connectors/lur.jpg]]<<imagebox 'lur paisajistak'>>
----
Como paisajistas planificamos y diseñamos parques urbanos y rurales en el tiempo y en el espacio basándonos en las características naturales y los valores históricos y culturales que hacen de ese lugar un entorno único y especial, aportando nuevos conceptos de estética paisajística.

Las estaciones, los ciclos de la naturaleza y el inevitable paso del tiempo se reflejan en nuestros diseños donde recurrimos a la tierra y a los elementos de la naturaleza como la esencia y base de nuestro trabajo.

El paisajismo nos dirige a profundizar en esta dimensión temporal ya que el material con el que construimos y proyectamos es un material vivo: la vegetación. Este es el reto de nuestra profesión: trabajar con elemento vivos que no podemos controlar, todo lo más entender, y cuya dinámica implica un cambio continuo. Es, precisamente, la ausencia de un dominio absoluto sobre la naturaleza la que nos obliga a adoptar una actitud humilde en el proceso del diseño, que nos guía, finalmente, hacia una ética medioambiental de respeto, de fundamento ecocéntrico que se convierte en la base filosófica global de nuestra práctica del diseño.

Abordamos, por tanto, cada proyecto con una visión global de conjunto, creando espacios vivos para ser vividos, espacios que posibiliten la conexión entre las personas y el medioambiente, generando una nueva valoración y entendimiento de nuestro entorno.

''+info:''
http://www.lurpaisajistak.com 
taller de arquitectura en la escuela de donosti
donosti - http://m-etxea.blogspot.com/

[img[imago/connectors/m-etxea_s.jpg][imago/connectors/m-etxea.jpg]]<<imagebox 'alfons soldevila dando un taller en m-etxea'>>
----
''reflexiones tras metxea 2007-2008....''
por jsmi

"las tazas de water en los cuartos de baño modernos se elevan del suelo como flores blancas de nenúfar. El arquitecto hace todo lo posible para que el cuerpo olvide sus miserias y el hombre no sepa qué pasa con los residuos de sus entrañas cuando rumorea por encima de ellos el agua violentamente salida del depósito. Los tubos de canalización, aunque llegan con sus tentáculos hasta nuestras casas, están cuidadosamente ocultos a nuestra vista y nosotros no sabemos nada de la invisible Venecia de mierda sobre la cual están edificados nuestros cuartos de baño, habitaciones, salas de baile y parlamentos"
Milan Kundera (la insoportable insoportable)

A veces pienso lo mismo de las ciudades. Por eso me pregunto por qué soy el único al que se le ocurre mear en medio de la calle, en lugar de en las esquinas de los edificios y en los lugares donde la gente, generalmente hombres, sienten más intimidad.

Hay agujeros en el medio de la calle que permiten que tu pis vaya directo a la Venecia de pis.

Más aún, por qué quien proyecta la ciudad no asume que somos una sociedad borracha, un mundo bebedor, en el que la gente acostumbra a concentrarse en grandes cantidades y beber y mear. Por qué no dimensionamos y diseñamos correctamente los sitios públicos y abiertos para mear, grandes, y con una conexión rápida y poco laberíntica con la Venecia de pis. Al fin y al cabo la presencia puntual del saneamiento ya está ahí. ¡¡Meemos en las alcantarillas!! ¡Hagamos alcantarillas para mear!

Alguna vez, discutiendo con Jon y Eze, he tenido la sensación de que el "fin de curso" de metxea no tenía por qué consistir en la construcción de un objeto. Aunque inicialmente, para mi, la catarsis colectiva de la construcción de algo era casi el objetivo de organizar el taller. Sin embargo, lo más interesante que hemos hecho ha sido elucubrar y empezar algún tipo de investigación, más o menos bizarra, más o menos simple. Como vuestros experimentos caseros o las fotos de los salones. Yo me quedé con ganas de más de eso. Con ganas de inventar una excusa un poco más elaborada o sofisticada o perversa, para meterme/meteros en un montón de casas de un montón de gente, y extraer información, reflexiones, descubrimientos, reflejos de la vida íntima de las personas, del uso de la vivienda, que es, al fin y al cabo, el objetivo.

Se fotografiaron salones iguales en una torre de pisos. Por ejemplo:

¿Por qué no buscar el mismo mueble de ikea en un montón de casas y registrar sus usos, sus variantes, su personalización, su capacidad para adaptarse a cada cual?

El proyecto y construcción de una vivienda colectiva está pensado con los pocos argumentos que pueden dar "lo que tenemos todos en común", o lo que está convenido que la media de las personas o de las agrupaciones convivenciales necesitan. O lo que al arquitecto le parece que puede ser todo eso.

El uso de la vivienda es la customización de ese espacio rígido y extraño. Es también el reflejo del alma en la disposición de los objetos. O el reflejo del estado de cada cual en cada momento. El orden y el desorden, la acumulación y la austeridad. La monotonía y la variación. Lo convencional y lo extravagante.

Los cuerpos se visten por fuera, los edificios se visten por dentro.

El cuerpo va envejeciendo a su ritmo y nosotros lo vestimos por fuera, aparte de para abrigarnos y taparnos, para expresar nuestras tendencias, nuestra personalidad, para coquetear, para nada, para estar cómodos, para llamar la atención, para estar a la altura de nuestra alma, para alimentar nuestro hambre de color, para expresar nuestras ideas políticas, para salvar las ballenas o exclamar anarquía.

Los edificios, la vivienda colectiva, la vestimos por dentro. En parte porque la parte de fuera es colectiva y lo colectivo se simplifica.

Pero por dentro tenemos toda la libertad que seamos capaces de tomar.

Entre el contenedor prediseñado y la personalización del espacio hay un límite difuso (como todos los límites). Entre lo que nos viene dado y lo que hacemos con ello. Cómo lo usamos, para qué, cómo lo decoramos, si lo decoramos, si lo limpiamos, lo pintamos, lo vaciamos o lo llenamos. Sospecho que en ese límite puede estar lo más seductor de una posible investigación. Investigar quizá sea mirar con prejuicios. Mirar solo una cosa, dejar de ver todo lo demás para obsesionarse con una forma de mirar. Si no es investigar, es estudiar o aprender. Como para aprender una lengua hay que obsesionarse con ella, desterrar la de tu madre y volver a empezar. Igual que un deportista debe obsesionarse con sus marcas, su técnica, su habilidad parcial, reducida y concreta.

¿Qué formas arquitectónicas conviven mejor con la personalización de la vivienda? O ¿qué tipo de espacios ayudan a hacer de la vivienda una prolongación confortable de la persona, de cada persona?

¿Qué tipos de personas hay y cómo habitan su vivienda? quizás necesitemos a algún psicólogo en nuestro taller. Conozco alguno. No estaría mal hacer un encuentro en Arteleku.

''+info:''
http://m-etxea.blogspot.com/
Ànimes ocultes i alienígenes comuns!!! L'espai sideral vol descobrir una proposta que ronda els nostres caps i oferir la possibilitat de compartir-la i conviure-la en projectes generadors d'índoles particulars, artífex de plans desorbitats.Diferents dimensions es reconfiguren i de nou sorgeixen noves opcions per construir grans projectes, que són el joc vital subversiu de l'existència conduïda. Arriba al nostre planeta una presència alienígena que vol conèixer la realitat alienada i transformar-la en aliè a nada, alienzones o el que volgueu creure...
sant pere de torelló - [[veure localització nautarquia|sede nautarquia]] - http://espaisideral.org/

<html><div><object width="480" height="381" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"><param name="movie" value="http://www.dailymotion.com/swf/x80bhe_lanzadera-nautarquia_creation"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/x80bhe_lanzadera-nautarquia_creation" type="application/x-shockwave-flash" width="480" height="381" allowFullScreen="true" allowScriptAccess="always"></embed></object></html>
----
primeres idees del projecte
setembre 2008

''El projecte:''
Creació d'un espai autosuficient afillat de qualsevol nucli urbà i especialment de Barcelona, que n'hauria d'estar a una distància d'unes dues hores en transport motoritzat, on poder establir nuclis habitacionals que permetin estades temporals i també espais polivalents i especialitzats on poder desenvolupar activitats afins a les nostres realitats. Tot això estaria mediat per un joc que s'encarregués de donar-li una narrativa i una organització pràctica i subversiva.

''La Història, narrativa, context, o com es vulgui dir...''
Per donar-li una personalitat a l'espai, i en relació a la estructura d'aquest i els seus materials, va aparèixer una bona història amb la qual decorar-ho tot i permetre una complexitat i paranoia pròpia. L'espai a crear seria doncs una Nau Espacial (a la qual hauriem de donar-li nom) enviada per una confederació de planetes utòpics per estudiar el moment de transformació social de la terra i amb un "full de ruta" concret per actuar un cop assimilada la situació. El fet és que malauradament i a causa d'un petit error de càlcul, l'arribada a la terra es produeix després d'un petit atac de l'Imperi i per tant d'un canvi en l'evolució del procés d'estudi, que manava instal·lar la nau en un lloc deshabitat per evitar-ne la seva descoberta. Ara necessita d'interrelacionar-se obertament amb la comunitat local per presentar-la com un equipament cultural per part de certes organitzacions juvenils, on es camuflaran, per tal d'acomplir la missió encarergada.

''L'espai:''
La nau espacial es construiria a partir d'arquitectura modular, com els contenidors Iso, de diferents mesures, o adaptacions. A partir de l'ensamblament d'aquests es faria un espai comú, d'ús, format per magatzem, bugaderia, cuina, sala interior polivalent, lavabos, tallers, espai semi-exterior, oficines, habitacions de lliteres. I uns espais propis, formats per nuclis habitacionals de 4 dormitoris amb un petit espai comú. La nau hauria de ser pràcticament autosuficient en el seu transcurs quotidià i tan sols s'haurien de necessitar algunes coses de logística per a activitats extraordinàries. Així no hi hauria d'haver subministraments, com aigua i llum, o com a molt, aigua de canal, pou, font, etc. S'hauria d'establir un sistema de recollida d'aigües pluvials així com aprofitament d'aigues negres i grises. Les comunicacions amb l'exterior acabaran funcionant per ones i comunicació en xarxa. Dins el territori circumdant a la nau s'hi establirà un sistema de producció alimentari, tant a nivell d'hort, com de mel, corral, etc.

''L'organització:''
Per tal que això funcionés hi hauria dos mecanismes. Primer, l'humà, articulat al voltant d'una associació, la qual definiria a partir d'una assemblea anual l'activitat de la nau i els compromisos i tasques a realitzar. Segon, l'ordinador central que a partir d'una aplicació informàtica complexa, realitzaria un seguiment, control i comunicació del pla anual decidit per assemblea i asseguraria la seva correcta realització. També hi hauria la figura rotatòria dels responsables de la nau, que s'haurien d'encarregar de mantenir-la i d'assegurar-ne el bon funcionament. L'associació d'usuaris podria accedir als diferents serveis a partir d'un pagament de quotes. Els projectes o activitats realitzades s'articularien per una combinació de les identitats planetàries utòpiques propiciant diferents àmbits de pràctica i aprenentatge, resolent la convivència de manera consensuada en l'assemblea i l'organització.

''L'economia:''
Aconseguir que s'engegui la nau requerix d'un esforç monetari important. Sembla ser que de primeres tindriem un préstec a condicions immillorables per a realitzar-ho però aquest s'hauria de tornar amb el pas del temps. Després hi hauria uns costos ordinaris per al manteniment de la nau i el terreny així com de les persones encarregades d'aquest, que haurien de rebre una remuneració. No obstant es podrien trobar certs mecanismes per aconseguir tot això. En un principi, com a mínim fins a que es retornés gran part del préstec, es marcarien quotes tant bàsiques de manutenció i allotjament com d'altres per activitats dins la nau, per part dels socis i/o les participants. També s'hauria de tenir en comte les possibilitats dels fons públics disponibles per a diferents actuacions o casos puntuals.

''Les activitats:''
La nau oferirà realitzar tot tipus d'activitats o sigui que les persones podran estar-s'hi un temps i fer més o menys el què els doni la gana, especialment entre ells, així com en relació amb el manteniment de l'espai... o sigui l'hort, els animals, etc. Després s'hi realitzarien certes activitats que aquí qualificarem d'extraordinàries i que podriem resumir en: formacions, intercanvis juvenils, jornades, concerts, festivals artístics, festes, actuacions, sortides familiars, camps de treball, etc. Durant aquestes activitats extraordinàries s'establirien règims especials segons la dimensió d'aquestes.

''La política''
Una de les dificultats serà no tenir problemes per a realitzar el nostre projecte. En un principi serà aconseguir establir-nos en el territori, doncs normalment hi ha limitacions legals i socials. Aquí podem aprofitar el fet que no farem gaire obra, i que tot el què farem sera desmuntable fàcilment. Una altra serà guanyar-nos els poders locals als quals podem seduir tant amb l'activitat econòmica que aportariem a la zona, com amb el caràcter social i educatiu del projecte en relació a temàtiques tan en sol.licitades com la mediambiental o la tecnològica. S'haurà d'ocultar cert caràcter subversiu fins que la legitimitat ens doni certs drets i raons per al nostre establiment, és a dir quan els resultats demostrin el nostre dret a ser-hi, llavors podrem destapar la nostra crítica frontal al sistema actual.

''Calendari:''
S'ha d'estipular correctament el procés d'execució de la nau per tal de no trobar-se parat i poder anar avançant mica en mica. En un principi, l'1 de gener del 2010 hauria d'iniciar l'aventura.

''Els primers passos:''
Com que és un projecte força desmesurat és precís iniciar una petita prova pilot en forma de nau d'exploració que serveixi per testejar tots els àmbits i aspectes del projecte. Això vol dir provar un model determinat per tal de veure les condicions d'habitabilitat en els moments de duresa climàtica, preparar activitats i l'organització pilot, aconseguir recursos i força, etc.

En aquest periode de prova s'ha de constituir un grup de treball que redacti un projecte complert, amb els seus informes segons les possibilitats del terreny d'impacte ambiental, permacultura, pressupostos, idees, finançament...

Començament del prototip. GENER 2010
Inauguració del viatge!?

''+info:''
http://espaisideral.org/web/proj.html
http://espaisideral.org/web/intro.html
curador y paradiseñador. buscando una palabra adecuada se autodefine como a para-diseñador, como hay los fenómenos paranormales o las artes para-teatrales. en realidad se dedica a explicar historias. Para hacerlo utiliza a veces los objetos, otras la escritura, les instalaciones, los libros, el comisariado de exposiciones, y también dando clases, publicando artículos, activando plataformas, etc.
barcelona - http://guayabero.net 

[img[imago/connectors//guayabero_s.jpg][imago/connectors/guayabero.jpg]]<<imagebox 'no va del mon del disseny sinó del disseny del mon'>>
----
''La autogestión y el activismo civil''
claret serrahima y óscar guayabero . el pais . octubre 2005

El supuesto Estado de bienestar, que ha convertido la cultura en ocio, nos ha hecho creer que los estamentos públicos nos debían apadrinar en todas y cada una de las manifestaciones creativas. Parece que son los gobiernos locales, nacionales o estatales los que deben pagar la cuenta de los artistas. Quizá el caso más evidente está en las artes escénicas, donde las compañías de danza y teatro se consideran más como bienes patrimoniales que como industrias culturales. Dejemos eso atrás. Libremos a los políticos de la cultura.

En realidad, no hace tanto que los estamentos públicos se encargan de la cultura, tan sólo, desde que Dietrich Eckart y Joseph Goebbels crearan sus Ministerios de Cultura y Propaganda, casi como uno solo. O el caso más cercano, y de más feliz recuerdo, de Francia, que en 1959 crea el primer ministerio de cultura francés; mejor dicho, el Ministerio de Acción Cultural, cuyo primer ideólogo fue André Malraux. Ese quizá ha sido el espejo usado por nuestros políticos de la transición, puesto que Malraux dijo las palabras mágicas: “Democratizar la cultura”, aunque bajo la atenta mirada de un militar como De Gaulle.Si analizamos los pasos propuestos desde París, entenderemos parte de nuestros males: Primero, se desvinculó la cultura de la educación o de cualquier propósito pedagógico: “La cultura es a la educación lo que la política es a la historia”, decía el propio Malraux. Después, se profesionalizó, relegando el tejido ciudadano amateur al estatus de entidades de ocio o clubs de hobbies. De un plumazo, se creó un ejército de funcionarios que, con el objetivo de democratizar, raptaron a la cultura y ya no la soltaron, convirtiendo a los ciudadanos en simples consumidores pasivos.Desde entonces, se ha creado una corriente política que, sistemáticamente, ha desvinculado la cultura de la enseñanza. Las universidades pasan a ser módulos de formación técnica en lugar de laboratorios de experimentación cultural. Por otro lado, los departamentos culturales basados en subvenciones crean profesionales a ambos lados de la ventanilla, el funcionario y el subvencionado.Ante ese modelo caduco, la autogestión es la clave.

La autogestión preocupa a los políticos ya que escapa a sus políticas. Pero también a nosotros parece asustarnos. ¿No es hora ya de embarcarse en la aventura de una cultura de riesgo? Es cierto que el neoliberalismo tiende a privatizar, básicamente, para hacer rentable servicios que no deben serlo, como la sanidad. No es ese el camino, pero tampoco lo es la constante sustentación, y por tanto el control, de la cultura por parte de lo público. Se podría argumentar que sin apoyo público acabaríamos en manos de las marcas de refrescos y calzado deportivo, la censura del siglo XXI. ¿De veras nos estamos escapando de ese mal? Quizá deberíamos plantar cara a las multinacionales desde los bajos presupuestos y la economía de subsistencia, que por otra parte es la real, y no desde el parapeto cada vez más frágil y dudoso de los apoyos públicos.

El arte contemporáneo hace tiempo que se escapa no sólo de los limites de los museos, sino de los parámetros comprensibles para sus gestores, con honrosas excepciones. Mientras se sigue hablando de la necesidad de apoyar el rock catalán, una mutante música de la cultura digital viaja por la red. Nuestra literatura está embarrancada entre los premios privados, cada vez más en tela de juicio, y los reconocimientos públicos, que suelen llegar más que tarde. Nuestros arquitectos más innovadores están navegando entre políticos cuando deberían hacerlo entre activistas. Nuestro cine es escaso. Se confundió el cine catalán con el cine en catalán y se nos fundieron los proyectores. Se están subvencionando unas artes escénicas basadas en la repetición. Montajes privados, creados hace décadas, se reestrenan en teatros públicos y encima se premian institucionalmente.Es evidente que la política intentará siempre controlar la cultura, pero somos nosotros los que se la hemos ofrecido en bandeja. Asumiendo, además, que nos hacían un favor al subvencionarla. Unos simples gestores económicos se convirtieron de repente en ideólogos culturales. Unos departamentos técnicos, que deberían haber gestionado herramientas al servicio de los creadores, fueron los que decidían el camino que seguir.Creemos un auténtico Consell de les Arts, con fondos suficientes, capacidad operativa y en manos civiles, con una gestión compartida entre profesionales del sector, catedráticos y creadores. Ese será el ente capaz de aglutinar vanguardias, de ofrecer verdaderos espacios de riesgo para los creadores. Tan sólo debemos reciclar los actuales centros culturales como centros de libres de creación. Ese nuevo y participativo Consell ya no se verá afectado por los cambios políticos, puesto que no dependerá de los partidos, sino de los colectivos activos. Pero otorguemos a la cultura patrimonial un valor nacional y hagamos que se ocupe de ella la presidencia de la Generalitat, desde los bienes patrimoniales arquitectónicos hasta las bibliotecas o los museos históricos.Quizá, al principio y al faltar medios económicos, se tuvieran que cerrar algunos teatros, algún museo, se desmontara alguna compañía, pero si realmente nos creemos que la cultura es nuestra, conseguiremos sobrevivir. Quizá no tendremos tantos canapés, pero nos ahorraremos los discursos de inauguración.

La democracia participativa debe ser un camino de dos direcciones. Evidentemente, los presupuestos deben ser elaborados con la opinión de los contribuyentes, pero también nosotros podemos generar proyectos sin esperar que nos los financien las instituciones públicas: creando empresas, organizando colectivos, desarrollando plataformas. Otras ciudades -por ejemplo, Berlín o Londres- están creando cultura no institucional. Esa cultura está generando redes independientes, por las que las ideas fluyen libremente, sin banderas ni siglas. Se habla hasta el exceso del poder que tenemos como consumidores, se dice que podemos hacer bajar la gasolina, impedir el trabajo infantil o ajustar los escandalosos beneficios de las corporaciones. Pero, ¿dónde está el poder como contribuyentes? Ejerzamos presión fiscal, exijamos que el importe de los impuestos dedicado a cultura se gestione de forma participativa. No es la cultura, como la palabra, un arma cargada de futuro, no la neutralicemos a base de becas, subvenciones y premios nacionales.Dejemos atrás esa miedosa y burguesa cultura del ocio. Para eso ya tenemos las fundaciones de las entidades bancarias. Pongamos en evidencia a la ingente cantidad de iniciativas que nacen subvencionadas y que están exprimiendo las arcas públicas con su cultura de corto alcance, seguidista y autocomplaciente. Abramos las ventanas de los centros institucionales y respiremos un poco de aire fresco. No decimos que la broma nos salga gratis, pero al menos será nuestra broma.

''+info:''
http://guayabero.net/es/77/la-autogestion-y-el-activismo-civil.html
[img[imago/connectors/_banner_01_s.png][imago/connectors/_banner_01.png]]<<imagebox 'arquitecturas colectivas _v 0.2 : paraderos + conectores'>>
''arquitecturas colectivas _v 0.2 : paraderos + conectores''
23 - 26 de septiembre de 2009
[[nautarquia (sant pere de torelló)|sede nautarquia]] + [[pista digital (sevilla)|sede pista digital]]
vigo - madrid - asunción - montevideo - [[figueres|sede wikiplaza ingràvid]] – méxico DF

Organizado por [[recetas urbanas]] y [[straddle3]]
con la colaboración de [[pista digital]] y [[nautarquia]] 

[[INTRO (es)]] - [[PROGRAMA]] - [[CONNECTORS]] - [[TAGS]]
espacio polivalente autogestionado
madrid - http://www.patiomaravillas.net 

[img[imago/connectors/patiomaravillas_s.jpg][imago/connectors/patiomaravillas.jpg]]<<imagebox 'patio maravillas'>>
----
''Comunicado Presentación Espacio Polivalente Autogestionado "El Patio Maravillas"''
Malasaña. Julio de 2007

¿ Qué es el Patio Maravillas?
Para quienes aún no conozcan el Patio Maravillas o sencillamente sientan cierta timidez a la hora de cruzar la puerta, ¿qué contarles del mismo? En principio es un espacio polivalente autogestionado.

¿Lo qué? Es que a veces nos van los nombres raros, pero ahora mismito lo aclaramos mejor: decimos espacio porque... ejem, es un espacio. Se encuentra en un antiguo colegio abandonado en la Calle Acuerdo, que llevaba más de diez años sin uso. Decimos Polivalente porque en él pasan cosas muy diversas, circula gente muy distinta, y se juntan experiencias de todas partes (que si los vecinos, los artistas de la zona, los de las bicis, que un grupo de personas migrantes, que si músicos, etc.) Y decimos autogestionado porque lo hacemos todo entre todos. De forma colectiva. Y eso, aunque complicado es bastante apasionante.

¿Y qué hacéis?
Largas reuniones y charlas interminables... Ehm, no. No hacemos eso (o al menos no hacemos sólo eso). El Patio es un espacio de reunión para grupos que lo necesiten, tiene una cafetería, un espacio de asesoría laboral y para resolver temas de papeles. Clases de idiomas, espacios para artistas, músicos, actores, un taller de bicis, un sitio de acceso público a Internet, una espacio para que los niños y las niñas de la zona puedan jugar, talleres de todo tipo para adultos y mayores... Lo mejor de todo es que si TÚ quieres hacer algo, puedes apuntarte.

¿Cómo puedo proponer actividades, talleres, reuniones, etc?
No tienes más que escribir a contacto@patiomaravillas.net explicando tu proyecto, día de la actividad, horario, necesidad de espacio y todo lo que creas necesario explicitar. Una vez que lo envíes recibirás una respuesta nuestra en breve.

¿Como se organiza y gestiona el Patio Maravillas?
El Patio tiene cuatro áreas de trabajo: Cultura y Conocimiento, Fronteras y Ciudadanía, Barrio y Precariedad. Cada área o eje tiene una forma de funcionamiento asamblearia y horizontal, poniendo en marcha, según su singularidad, diversos dispositivos de intervención y acción en la ciudad. Además, por un lado contamos con una asamblea de gestión que se encarga de recibir propuestas de actividades y proyectos, así como de resolver las cuestiones que hacen al día a día de la vida en el centro social, y por el otro, tenemos una asamblea general semanal los domingos abierta a todos los colectivos e individuos de El Patio y a aquellos que quieran comenzar a participar de él en la que se discuten y elaboran las principios y proyectos comunes.

¿Y cómo puedo informarme sobre las actividades y el proyecto del Patio?
Si estás interesada en recibir información sobre las actividades de El Patio puedes enviar un mail a contacto@patiomaravillas.net diciendo que quieres suscribirte a Infopatio. Así recibirás semanalmente la programación del Patio Maravillas. Además puedes consultar la programación en www.patiomaravillas.net. Sin embargo la mejor manera de entender qué es el Patio Maravillas es que empieces a pasar y a participar de él.

¿Cómo puedo participar de El Patio Maravillas?
El Patio esta abierto a todos y todas. No hay límitación alguna, sólo es necesario el deseo de compartir un proyecto colectivo y de comprometerse con él.

Hay muchas maneras de participar en El Patio, todas ellas igualmente valederas y valorables: desde compartir una cena entre colegas y vecinos, hasta ofrecer clases de baile o punto, pasando por dar una mano en la asesoría legal u organizar una charla. No importa el modo en que lo hagas, lo que importa es que participes. Si estás interesado en algun área o proyecto en particular pedí su contacto en contacto@patiomaravillas.net o sino a acércate al espacio. En la cartelera encontrarás la información que necesites.

¿Qué es lo que queremos?
Queremos que El Patio se convierta en el centro socio-comunitario del barrio, un espacio abierto dondes socializar libremente, encontrarnos y ser capaces de construir entr etodos una visión crítica de la ciudad.

----
A la Sociedad Civil Madrileña.
A los habitantes del barrio de Malasaña.
A los movimientos sociales.
A los medios de comunicación.

Lo primero un saludo y una presentación

¿Quien somos?
Somos un grupo de hombres, mujeres, jóvenes, niños y niñas. Estudiantes y precarios. De padres, madre e hijos; de autóctonos y migrantes, con y sin papeles. Un grupo, pues, de gentes de esta ciudad, de este barrio. Como cualquiera.

Un grupo que ya andaba en marcha antes de este momento y que hoy empieza a caminar por las salas de este colegio. A partir de este mismo instante entramos en esta antigua escuela abandonada durante 7 años, en un ejercicio de reivindicación política que pretende denunciar las dinámicas especulativas que asolan esta ciudad y devolver espacios a las redes sociales que la conforman.

¿Qué Queremos hacer?
Queremos ampliar esa responsabilidad y esa tarea a más gente y nos comprometemos a abrir este edificio, tantos años cerrado, al barrio, a los movimientos sociales y las gentes de Madrid. Es suyo, no nuestro y vamos a poner todo nuestro esfuerzo en que así sea y a partir de ello reforzar el tejido social de la zona.

Nuestra intención es abrir un proceso de participación colectivo para devolverle el espacio a sus dueños: Los vecinos y vecinas de este barrio y de esta ciudad: La gente.

Como jóvenes y no tan jóvenes, mujeres y hombres, que habitamos la precariedad de esta ciudad, vamos a poner en marcha también una serie de herramientas. Herramientas que hemos imaginado y que nacen de las experiencias comunes que han atravesado la ciudad estos últimos años: Fuera tomando las calles gritando "No a la Guerra". Desobedeciendo a la mentira que venía desde arriba a ritmo de "Pásalo" y "Queremos la verdad". O defendiendo nuestros derechos impidiendo la llegada de los parquímetros a nuestros barrios. O frente a los muros del enésimo Centro de Internamiento para personas extranjeras, exigiendo su cierre inmediato...

O participando en esas concentraciones que nos han demostrado que la V no sólo es de Vivienda, sino también de Victoria. Mal que le pese a tantos ante quienes la clase política al completo agacha la cabeza. Especuladores. Gestores invisibles de nuestras vidas con un único propósito: Enriquecerse a nuestra costa.

Estamos convencidos de que esta ciudad es nuestra y no de ellos. Es de quienes la andamos, de quienes la vivimos, de quienes la construimos día a día. Nuestra, aunque nos la quieran robar con obras interminables e inútiles, con desalojos, con deportaciones, con hipotecas y salarios imposibles en contratos hechos de humo. Negándonos una y mil veces espacios culturales y de ocio. En una ciudad en la que nuestros abuelos y abuelas no tienen centros de mayores y nuestros hijos e hijas no tienen espacios de educación infantil.

Esas herramientas son tres espacios de trabajo que acompañarán el proceso de participación y consulta para determinar el destino y uso de este edifici. Un espacio de Precariedad, Uno de Migración y uno de Cultura; que unido al proceso con vecinos y movimientos compondrán una mesa de cuatro patas donde podremos sentarnos a celebrar que rebelarse no sólo es justo, sino que vale la pena. Atravesando el Tsunami.

El 26 de Diciembre de 2004 una gran ola se levantó en el océano Índico. Los primeros en notarlo fueron los animales. Mientras todo el mundo intentaba huir en vano, los elefantes se metieron en el agua y se enfrentaron a la ola: Sobrevivieron. Esta ciudad vive un Tsunami inmobiliario y político que amenaza con destruir nuestras vidas. Si queréis una definición de lo que somos, imaginad un elefante haciendo surf en las olas de un Tsunami.

Si tenemos que elegir entre la resignación y la vida: No tenemos Dudas.
Si tenemos que elegir entre esperar el futuro que nunca llega y pelear el día a día: No tenemos Dudas.
Si tenemos que elegir entre el miedo y la dignidad: No tenemos dudas.
Pongamos que hablamos de Madrid.




''+info:''
http://www.patiomaravillas.net/node/2
un espacio escénico de nueva generación portátil y dotado con nuevas tecnologías. 
sevilla - [[ver localización sede pista digital|sede pista digital]] - http://www.pistadigital.org



[img[imago/connectors/pistadigital_s.jpg][imago/connectors/pistadigital.jpg]]<<imagebox 'pista digital'>>
----



''+info:''
http://www.pistadigital.org
asociación fundada por jóvenes diseñadores cuya finalidad es el fomento del diseño mediante sus actividades
castellón - http://proyecta.org.es 

[img[imago/connectors/proyecta_s.jpg][imago/connectors/proyecta.jpg]]<<imagebox 'proyecta'>>
----



''+info:''
http://proyecta.org.es 
Idensitat es un proyecto artístico que investiga formas de incidir en el espacio público a través de propuestas creativas en relación al lugar y al territorio desde una dimensión física y social.
barcelona - http://www.idensitat.org 

[img[imago/connectors/idensitat_s.jpg][imago/connectors/idensitat.jpg]]<<imagebox 'idensitat'>>
-----
Idensitat se establece como un espacio de producción e investigación en red que, desde el arte, experimenta nuevas formas de implicación e interacción en el contexto social.

El conjunto de actividades que IDENSITAT promueve se define por la producción de proyectos, a partir de la combinación entre la convocatoria abierta y la invitación, con la finalidad de generar propuestas para contextos específicos; por acciones educativas, propuestas a determinados colectivos locales y que se desarrollan en relacion con alguna de las actividades del colectivo; y por proyectos de documentación que participan como trabajos realizados en otros contextos. Estos proyectos se presentan mediante acciones comunicativas y de difusión como debates, exposiciones o publicaciones. 

''ID 5''

ID #5 La quinta edición del proyecto Idensitat se desarrolla entre finales del año 2008 y principios del 2010. El conjunto de definiciones que se han resaltado en cada edición son un ingrediente necesario para obtener un proyecto vivo, complejo en sus mecanismos pero que aspira a sintetizar mensajes concretos. Mensajes que estimulen la participación de creadores en procesos que reviertan en microcontextos. Mientras que en las ediciones anteriores se proponía un lema de trabajo, ahora se sintetiza bajo las iniciales ID la metodología que IDENSITAT ha estado ensayando durante sus 10 años de vida.

El proyecto Idensitat ha evolucionado creando una red de colaboraciones entre diferentes lugares, buscando metodologías para la interacción de proyectos de creación con contextos sociales, culturales y políticos de matices diferenciados. Así, planteado inicialmente como plataforma para la producción de proyectos de incidencia en el espacio público, Idensitat se ha ido transformando en un espacio de producción itinerante, que transita en el territorio con proyectos que impulsa a la vez que genera visiones, análisis y propuestas de transformación a su alrededor.

ID es IDENTIDAD - DENSIDAD síntesis que inicialmente da nombre al proyecto pero que también quiere significar Investigar / Desarrollar- Inventar / Descubrir- Implementar / Direccionar- Incidir / Definir- Implicar / Denunciar- itinerar / Derivar- Integrar / Desplazar- Interrogar / Debatir - innovación / Decrecimiento - Intercambio / Desarrollo, entre otras muchas combinaciones de términos.

Con ID se alude a esta transformación. Idensitat funciona como una plataforma de actuación permanente que extiende los nudos de su red, refuerza los mecanismos de interacción social y los procesos de colaboración y de producción de conocimiento. También propone acciones de comunicación y transferencia más intencionadas, tanto alrededor de los ejes de debate del proyecto en general como en las diferentes producciones que se llevan a cabo. De esta manera conecta y colabora con otras realidades, trabajando para la producción de proyectos y promoviendo actividades vinculadas de difusión y experimentación con diferentes públicos. Mediante esta idea de trabajo en red a partir de cuestiones temporales y concretas, y con la voluntad de encontrar aspectos que se refuercen mutuamente, se pretende seguir identificando puntos de conexión entre diferentes iniciativas vinculadas a la creación artística contemporánea.

''+info:''
http://idensitat.net/index.php?option=com_content&view=article&id=4&Itemid=15
http://idensitat.net/index.php?option=com_content&view=article&id=6&Itemid=35
un proyecto de vida de baja tecnología, herramientas para diseñar, gestionar, supervisar e investigar un jardín urbano con el software libre y hardware
//a low tech living project, tools to design, manage, monitor and research an urban garden with open software and hardware//
barcelona - http://www.timtimxtimtim.org/refarm

[img[imago/connectors/refarm_s.jpg][imago/connectors/refarm.jpg]]<<imagebox 're:farm the city'>>
tergiversar el statu quo de la ciudad mercantilizada para proponer una ciudad más habitable. estrategias para reinventar la vivienda, los museos, la universidad, los centros sociales o el espacio público.
sevilla - http://www.recetasurbanas.net/

[img[imago/connectors/recetasurbanas_s.jpg][imago/connectors/recetasurbanas.jpg]]<<imagebox 'recetas urbanas'>>
----
''ADVERTENCIA''
* Todas las recetas urbanas mostradas a continuación son de uso público, pudiendo ser utilizadas en todo su desarrollo estratégico y jurídico por los ciudadanos que se animen a hacerlo.
* Se recomienda el estudio exhaustivo de las distintas localizaciones y situaciones urbanas en las que el ciudadano quiera intervenir.
* Cualquier riesgo físico o intelectual producido con el uso de las mismas correrá a cargo del ciudadano.

''+info:''
http://www.recetasurbanas.net/
''còmo llegar a nautarquia''
<html><iframe width="900" height="540" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.es/maps/ms?ie=UTF8&amp;t=h&amp;hl=es&amp;msa=0&amp;msid=115306275081534464141.0004739dd85b1950ed8b7&amp;ll=42.084783,2.29743&amp;spn=0.028665,0.060081&amp;z=14&amp;output=embed"></iframe><br />Ver <a href="http://maps.google.es/maps/ms?ie=UTF8&amp;t=h&amp;hl=es&amp;msa=0&amp;msid=115306275081534464141.0004739dd85b1950ed8b7&amp;ll=42.084783,2.29743&amp;spn=0.028665,0.060081&amp;z=14&amp;source=embed" style="color:#0000FF;text-align:left" target="_blank" >nautarquia</a> en un mapa más grande</html>

desde Barcelona hay que tomar la C-17 dirección Ripoll, en la salida nueva del enlace al tunel de Bracons hay que tomar la salida dirección Olot (C-37). Después de 7 km hay que tomar la salida Torelló y en la rotonda tomar dirección hacia Sant Pere de Torelló. Después de 2,5 km, en la siguiente rotonda, volver a tomar la dirección Sant Pere de Torelló. Una vez en Sant Pere, pasada la gasolinera, tomar la segunda calle a la izquierda, llamada Avinguda de Pau Casals. Seguir las indicaciones que conducen al Santuari de Bellmunt. Una vez en la carretera a Bellmunt (estrecha y con línea discontínua) seguir 1,3 km hasta un camino a la derecha indicado con el nombre de la finca: Pedroses. Bajar hasta encontrar la casa.

''trenes de cercanías entre barcelona y sant pere de torelló''
[[horarios entre barcelona y sant pere de torelló|http://horarios.renfe.es/cer/hjcer310.jsp?&nucleo=50&o=71801&d=77111&tc=DIA&td=D&df=20090923&th=1&ho=00&i=0&cp=NO&TXTInfo=]]


''imágenes lugar''
[img[imago/pedroses_3_s.jpg][imago/pedroses_3.jpg]]<<imagebox 'pedroses'>> [img[imago/pedroses_entrada_s.jpg][imago/pedroses_entrada.jpg]]<<imagebox 'pedroses'>> [img[imago/pedroses_4_s.jpg][imago/pedroses_4.jpg]]<<imagebox 'pedroses'>>  [img[imago/pedroses_int_s.jpg][imago/pedroses_int.jpg]]<<imagebox 'pedroses'>>
''solar en el que se encuentra pista digital en la isla de la cartuja en sevilla''<html><iframe width="900" height="540" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.es/maps?f=q&amp;source=s_q&amp;hl=es&amp;geocode=&amp;q=&amp;ie=UTF8&amp;t=h&amp;ll=37.406335,-6.005184&amp;spn=0.001151,0.001878&amp;z=19&amp;output=embed"></iframe><br /><a href="http://maps.google.es/maps?f=q&amp;source=embed&amp;hl=es&amp;geocode=&amp;q=&amp;ie=UTF8&amp;t=h&amp;ll=37.406335,-6.005184&amp;spn=0.001151,0.001878&amp;z=19" style="color:#0000FF;text-align:left"  target="_blank">Ver mapa más grande</a></html>
''lugar dònde se encuentra la wikiplaza en el festival ingràvid de figueres''
<html><iframe width="900" height="540" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.es/maps?f=q&amp;source=s_q&amp;hl=es&amp;geocode=&amp;q=rambla+figueres&amp;sll=42.266583,2.961363&amp;sspn=0.002128,0.005568&amp;ie=UTF8&amp;t=k&amp;ll=42.267369,2.963347&amp;spn=0.008575,0.019312&amp;z=16&amp;output=embed"></iframe><br /><a href="http://maps.google.es/maps?f=q&amp;source=embed&amp;hl=es&amp;geocode=&amp;q=rambla+figueres&amp;sll=42.266583,2.961363&amp;sspn=0.002128,0.005568&amp;ie=UTF8&amp;t=k&amp;ll=42.267369,2.963347&amp;spn=0.008575,0.019312&amp;z=16" style="color:#0000FF;text-align:left" target="_blank">Ver mapa más grande</a></html>
asociación sin ánimo de lucro que tiene como objetivo ofrecer propuestas y soluciones aplicables a nuestra sociedad para hacerla más justa y respetuosa con las personas y el entorno a través de valores aplicados a un urbanismo y un acceso a la vivenda no especulativos.
barcelona - http://www.sostrecivic.org 

[img[imago/connectors/sostrecivic_s.jpg][imago/connectors/sostrecivic.jpg]]<<imagebox 'sostrecivic'>>

----
''Techo Cívico''
 
Promueve un nuevo camino de acceso a la vivienda basado en Modelos de Cooperativas de Uso (MCU) según el cual la propiedad de las viviendas siempre reside en manos de la cooperativa y donde sus miembros participan y disfrutan de un uso indefinido de la vivienda a través de un derecho de uso asequible.
* Asesora, promueve, gestiona y busca financiación para proyectos de acceso a la vivienda basados en Modelos de Cooperativas de Uso (MCU) como el modelo Andel - Sostrecívic, el FUCVAM - Sostrecívic o el Wohnprojekte - Sostrecívic. 
* Colaboramos con administraciones, asociaciones, cooperativas i otros organismos para la promoción de modelos de acceso a la vivienda, Planes Locales de Vivienda, Memórias Sociales, ~POUMs, proyectos y trabajos relacionados con el urbanismo, vivienda, energía, medio ambiente y sociedad.
* Asesoramos a personas y grupos de personas interesadas en proyectos MCU, en la autogestión de la vivienda, proyectos de habitar, ecoaldeas y rehabilitación energética y ambiental.
* Apostamos por una transformación ecológica y holística del entorno a través de planes comunitarios de barrio que potencien las relaciones humanas.

''MCU''

Los Modelos de Cooperativas de Uso (MCU) son una forma más de acceder a la vivienda que ya funciona hace más de 100 años en los paises escandinavos (Modelo Andel), Alemania (Wohnprojekte) y tambien en latinoamérica (FUCVAM).

Sostre Cívic está introduciendo, adaptando y aplicando estos modelos en nuestra cultura, legislación y sistema económico-financiero con la colaboración del Departament de Medi Ambient i Habitatge de la Generalitat y administraciones locales.

Las principales características, ventajas y objectivos de los MCU son :
* Sistema de cooperativas no especulativo y sin fin de lucro en que la propiedad de las viviendas siempre recae en la cooperativa y donde los cooperativistas disfrutan de un uso indefinido de la vivienda a traves de un derecho de uso asequible. 
* La cooperativa se crea con voluntad de duración indefinida y de intercooperación con otras cooperativas MCU para reaplicar el modelo. 
* Este derecho puede ser indefinido en el tiempo, transmitido y heredado. 
* El derecho de uso se obtiene con una entrada inicial (retornable, incluyendo mejoras) y se mantiene con un un "alquiler" asequible mensual. 
* Entrada inicial (con posibilidad de financiación) proporcional a la superfície de la vivienda y a les rentas de las personas. 
* Derecho de uso con tendencia a la baja, destinado a retornar la deuda para construir o rehabilitar las viviendas, el mantenimento y la mejora del edificio, a los gastos comunes y a la cooperación entre las cooperativas MCU y sus usurios/as. 
* Diseño participativo y personalizado de las viviendas y espacios comunes. 
* Viviendas energéticament pasivas, orgánicas, saludables, con tendencia de ciclo circular local de flujos y gestión mediante ~ESCOs (compañia de servicios energéticos).


''+info:''
http://www.sostrecivic.org/

presentación MCU
http://www.sostrecivic.org/documents/PresentSC.pdf

modelo ANDEL
http://www.sostrecivic.org/images/documents2/andel.pdf
en la confluencia de dos oficios, entre la arquitectura y los nuevos media
barcelona - http://straddle3.net

[img[imago/connectors/straddle3_s.png][imago/connectors/straddle3.png]]<<imagebox 'straddle3 park-a-part'>>
----
''straddle3''
unas palabras sobre lo que somos.

arquitectura:
en straddle3 entendemos la arquitectura como la configuración compleja del entorno habitado. este puede ser construido tanto con palabras, sonidos o bits, como por piedras, madera o ladrillo.

pensar, diseñar y construir:
straddle3 aborda cada trabajo con la mentalidad abierta y atendiendo a las condiciones que aporta su construcción. nos llamamos constructores porque tenemos una tendencia natural a responsabilizamos directamente de la fase constructiva de los trabajos, ya sea física, gráfica o electrónica.

colaboración en red:
trabajamos con quién nos propone el proyecto pues lo entendemos más como una oportunidad para la colaboración que como un reto a realizar en solitario. además straddle3 forma parte de una amplia red multidisciplinar que permite afrontar un amplio abanico de proyectos y obras. esta red está formada, entre otros, por colectivos, empresas y expertos en urbanismo, construcción, estructuras, paisajismo, arte, tecnología, software y sociología. nodos de la red para la materialización del proyecto.

ecología social con nuevos medios:
nuestro referente principal es la propia naturaleza: en straddle3 aplicamos conceptos propios de la ecología y los sistemas abiertos a la arquitectura y el urbanismo. tenemos especial interés en la crítica y renovación del concepto de espacio público y estamos volcados en la integración de las prácticas tecnológicas y culturales emergentes para favorecer la construcción colectiva del 'nuevo' espacio social del siglo xxi: el domínio público.

''+info:''
http://straddle3.net/constructors/about.php?lang=es
un intelectual colectivo y un sujeto político activo: un Laboratorio productor-amplificador de proyectos estéticos de resistencia cultural. 
madrid - http://www.todoporlapraxis.es 

[img[imago/connectors/todoporlapraxis_s.jpg][imago/connectors/todoporlapraxis.jpg]]<<imagebox 'especulator, un proyecto de TxP'>>
----
En 1999 se constituyó el colectivo Todo por la Praxis. Sus miembros, procedentes de áreas de actividad teórica de lo más heterogéneo, se organizan como un intelectual colectivo y un sujeto político activo: un constante Laboratorio de Proyectos que funciona como agente transformador, dentro del campo simbólico de las prácticas artísticas. Todo por la Praxis se define como un Laboratorio productor-amplificador de proyectos estéticos de resistencia cultural. Un Laboratorio que ofrece herramientas para la intervención sobre el espacio público urbano, siempre con el objetivo de crear una Praxis activista y de oposición.

La acción de TXP se concentra en el ámbito urbano y la esfera pública, intentando siempre generar espacios de oposición a las estructuras de dominación, proponiendo estrategias de apropiación del espacio ciudadano, desenmascarando los procesos de especulación, gentrificación, mecanismos de segregación urbana y dispositivos de control social. El objetivo último de TXP es generar un catálogo de herramientas de acción directa y socialmente efectivas.

''+info:''
http://www.todoporlapraxis.es 
comunidad independiente de cualquier partido, organización o medio de comunicación, y nuestro funcionamiento es completamente horizontal, transparente y democrático. nuestro fin es el de servir de canal organizativo de las manifestaciones populares sobre el problema de la vivienda. vdevivienda.net está formado por una red de sitios web unidos por la problemática de la vivienda.
madrid, barcelona - http://www.vdevivienda.net 

[img[imago/connectors/vdevivienda_s.png][imago/connectors/vdevivienda.jpg]]<<imagebox 'v de vivienda'>>
----
''Acerca de la Asamblea''
madrid

La Asamblea contra la Precariedad y por la Vivienda digna se creó el mes de Mayo de 2006, a raiz de las masivas sentadas espontáneas realizadas ese mes en Madrid. Su objetivo es articular la lucha en favor del derecho inalienable de todas las personas a poder acceder a una vivienda digna sin tener que esclavizarse a un banco de por vida para conseguirlo.

Tras el sorprendente éxito de la primera sentada , a la semana siguiente la segunda sentada fué duramente reprimida por la Delegación del Gobierno a través de sus antidisturbios. Este incipiente movimiento de rebeldía popular corría el riesgo de desaparecer al carecer de las estructuras organizativas necesarias para dotarle de constancia y continuidad, así como para permitirle soportar la histérica y violenta reacción de los poderes públicos, muy interesados al parecer en defender brutalmente los interses de constructores, banqueros, inmobiliarias y demás especuladores.

Por ello, circuló por internet la propuesta de conformar una asamblea abierta que permitiese articular y optimizar los esfuerzos de las personas anónimas que estaban participando en las sentadas. El día 27 de Mayo, un día antes de la tercera sentada, se reunió por primera vez la Asamblea, con la asistencia de unas 80 personas. 

Desde el primer momento, la Asamblea consideró uno de sus deberes fundamentales el apoyar a los detenidos que se habían producido en las sentadas (9 en la segunda y posteriormente otros 8 en la tercera), a pesar de que estas sentadas no eran convocadas por la Asamblea, ni tampoco acudían a ella la mayoría de los jóvenes que habían caído en las arbitrarias manos de las fuerzas del "orden". 

La Asamblea es totalmente abierta, pudiendo participar en ella, con voz y voto, todas las personas interesadas

Con apenas un mes de existencia, el 2 de Julio la Asamblea convocó una manifestación bajo el lema "Contra la Precariedad y la Especulación, la Vivienda es un derecho, no un negocio" que logró congregar a un mínimo de 3.000 personas en el centro de Madrid. Tras esta, se han convocado desde la asamblea otras manifestaciones en las que miles de personas han seguido reclamando el derecho a una vivienda digna.

La Asamblea emitio dos comunicados en los que se da a conocer y plantea la lucha a la que nos enfrentamos aquellos que no estamos dispuestos a consentir esta monumental injusticia que nos impide disfrutar de un derecho básico:



''+info:''
http://madrid.vdevivienda.net/index.php?option=com_content&task=view&id=43&Itemid=57

Encadenados a la vivienda, encadenados a la precariedad
http://madrid.vdevivienda.net/index.php?option=com_content&task=view&id=12&Itemid=33

No estamos aquí para mendigar casas  
http://madrid.vdevivienda.net/index.php?option=com_content&task=view&id=26&Itemid=33

Alquiler Social Universal 
http://madrid.vdevivienda.net/index.php?option=com_content&task=view&id=292&Itemid=94
plataforma cultural y de investigación que concibe de un modo innovador el proceso editorial, con formatos híbridos que combinan el libro impreso tradicional con herramientas digitales avanzadas, para hacer los libros sensibles a la intervención del lector, antes y/o después de ser impresos.
sevilla - http://wyslist.net/

[img[imago/connectors/vi_bok_s.gif][imago/connectors/vi_bok.gif]]<<imagebox 'clash'>>
----
''EDITEMOS LA ARQUITECTURA
Manifiesto por una arquitectura abierta''
Paula Álvarez Benítez | VI·BOK, libros vivos

La situación de crisis en la que actualmente estamos inmersos está demandando una implicación plena y activa de la arquitectura, que requiere una revisión profunda de sus fundamentos ideológicos y teóricos, así como de sus métodos y herramientas, en aras de una mayor responsabilidad hacia la sociedad y el medioambiente.

Esta revisión no es nueva ni parte de cero: hace tiempo que la implicación de la profesión en cuestiones transversales y multidimensionales cada vez más complejas ha roto su marco disciplinar y diluido la definición de sus competencias. Por un lado los conocimientos y métodos de la arquitectura se han dilatado por la cooperación interdisciplinar; por otro, en las últimas décadas muchas otras prácticas culturales —del arte a la antropología— han operado en el campo de acción de la arquitectura, logrando ir más lejos que ella en relación con cuestiones como la mejora de la calidad ambiental, la construcción social del espacio público o el derecho a ciudad.

Incluso las mismas prácticas urbanas de los habitantes intervienen en la construcción del entorno desde un ‘saber’ hacer y ver más lúcido del que los arquitectos han podido ofrecer, ejerciendo un fuerte cuestionamiento sobre los principios y métodos con los que normalmente operan. Mientras buena parte de la arquitectura se ha aliado con el poder bajo muy diversas fórmulas —desde la urbanización indiscriminada a la alianza entre cultura y espectáculo— y otra buena parte ha quedado congelada en el proyecto moderno, la construcción de lo que podemos llamar ciudad, con todas sus implicaciones democráticas, no ha podido ser patrimonio de los arquitectos.

Pero podemos verlo de otra forma: la arquitectura, como disciplina, ha entrado en un proceso de cambio en el que no está sola. En la medida en que se ha abierto otros campos de conocimientos y saberes, y a su vez es “editada” por ellos, ha adquirido una dimensión extradisciplinar que la hace capaz de enfrentarse a una realidad compleja. Esta arquitectura abierta y editable sería una práctica cultural y técnica generosa, difícil, arriesgada y comprometida, que colabora con otras en un proyecto político común: el de dar entrada a la naturaleza, la subjetividad y las relaciones humanas como fuerzas ontológicas y constitutivas en la red de poderes que construyen lo real.



''+info:''
http://wyslist.net/
http://wyslist.net/MANIFIESTO_POR_UNA_ARQUITECTURA_ABIERTA.pdf
espacio público híbrido, interacción del espacio físico tradicional y el espacio digital.
http://wikiplaza.org

[img[imago/connectors/wikiplaza_s.jpg][imago/connectors/wikiplaza.jpg]]<<imagebox 'wikiplaza'>>
----
''Tecnologías de la información y la comunicación para la construcción social del espacio público''

Esta investigación trata de la emergencia del llamado espacio público híbrido, esto es, de la ampliación del espacio público resultante de la interacción del espacio físico tradicional y el espacio digital. Los potenciales de este espacio híbrido se perciben como ambivalentes; constituyen tanto amenazas (control social, videovigilancia, publicidad), como oportunidades (participación, ampliación de las experiencias del espacio público, uso social de las tecnologías). El estudio se propone investigar estas oportunidades, aplicando las tecnologías de la llamada web social o web 2.0 a la construcción social del espacio público hibrido, desarrollando conceptos como los de:
    * el espacio público como sistema operativo 
    * el espacio público como nodo activo en las redes de información y comunicación 
    * el espacio público como interfaz 
    * el espacio público como espacio electromagnético ciudadano 
    * el espacio público como ecología mediática ciudadana 
    * el espacio público como wikiplaza (construcción participativa en red). 

La investigación se centra en el desarrollo de una matriz de usos compuesta de software, hardware y netware que implemente estos módulos:
    * Acceso a Internet
    * Situation-room
    * Open medialab
    * Estudio-emisora de ~WebTv
    * Pantalla urbana / urban datascape
    * Cartografía participativa
    * Open performance
    * Juegos para niños 

''+info:''
http://wikiplaza.org
organització social col·laborativa i horitzontal d'àmbit català que promou el decreixement com a alternativa al model capitalista actual, tant a través de la difusió de les seves idees com mitjançant projectes fidels al corrent de pensament.
catalunya - http://decreixement.net - http://www.podem.cat

[img[imago/connectors/decreixement_s.png][imago/connectors/decreixement.png]]<<imagebox 'el cargolet'>>
----
''Per què decreixement?''

El decreixement és saber aturar-se i canviar el rumb en el moment que hem arribat massa lluny. És escollir la simplicitat quan s'evidencia que l'abundancia no ens fa feliços. 

És un corrent de pensament i un moviment que pretén reunir sota un paraigües comú totes aquelles lluites i reivindicacions ja existents que intenten oferir una resposta coherent a la direcció suïcida que comporta la fe en el creixement econòmic continu i, alhora, posar sobre la taula la impossibilitat de produir i consumir sempre més.

És important comprendre que en el moviment pel decreixement, treballem per a intentar trobar solucions a una part dels desastres i el sofriment ocasionats per l'actual sistema-model planetari, basat, entre moltes altres coses, en la violència, la injustícia, l'agreujament de les crisis ecològiques, energètiques i socials, alhora que ha eliminant progressivament de la moral col·lectiva valors clau com la solidaritat i la confiança en l'altre.

La filosofia de fons del Decreixement, proposa retrobar la multidimensionalitat humana, tornar a prendre les rendes de les nostres pròpies decisions alhora que guanyem en consciència dels límits i les escales i així poder-nos organitzar col·lectivament per intentar posar en pràctica experiències i iniciatives. Veiem l'objectiu d'aquest procés com un alliberament, perquè precisament en caminar veiem el poc que ens omple com a persones aquesta societat antihumanística, represora i consumista.

Implementant les propostes decreixentistes, li tallem les ales a un bon nombre d'elements de manipulació i devastació que promouen els poderosos actuals, un 10% enriquit de manera astronòmica i impúdica en relació al 90% restant de la humanitat. I, alhora, reaprenem a tenir el poder sobre les nostres pròpies decisions amb  autonomia i autogestió.

A més a més, el decreixement posa èmfasis en tornar a l'àmbit local en les múltiples relacions existents (econòmiques, de producció, de consum, energia, etc...) i, també, en les relacions comunitàries; és a dir, sortint de l'individualisme dominant i refer el suport mutu entre els veïns i veïnes per cobrir les necessitats bàsiques (tant materials com immaterials).

''+info:''
http://decreixement.net/node/1108
http://decreixement.net/sobre-la-xarxa-pel-decreixement

http://www.podem.cat
config.options.chkSinglePageMode=false
config.options.chkBottomOfPageMode=false
config.options.chkSinglePageAutoScroll=true
config.options.chkFramedLinks=true
config.options.chkStepWiseNavigationOn=true
config.options.txtTiddlerLinkTootip='%0'