Acceptance Speech"\n\nHave participants introduce themselves and thank someone who has contributed to their professional development. They should thank the person as if they are receiving an Academy Award. You may need to limit speeches to 30 seconds.
Place stickers of footprints (real size) on the floor, staggered in a line or horseshoe. Have the group stand in the first set of footprints (the one’s furthest back). Ask them to share one thing they will do in the next week to move forward in the training area. As they share their action, have them take a step forward. Continue until all have shared. Then state that they have taken the first step in application — making a commitment to do something.
!Agricultura
!Agua
All My Neighbors #1\n\nYou need an odd number of people for this game that is a distant cousin to musical chairs.\n\nEveryone begins by sitting on chairs in a circle with the facilitator standing in the middle. Explain that the person in the middle needs to find some "neighbors." To do so, they'll make a true statement about themselves and hope that it will be true for others. Everyone that "identifies" with the statement has to then stand up and find an empty chair. The person in the center is also looking for a chair, so once again someone will be without a chair, and they get to go to the middle and find some "neighbors."\n\nThe facilitator then begins with something like: "All my neighbors wearing blue jeans." At this, everyone who is wearing jeans should jump out of their seats and look for an empty seat. The odd person out goes to the middle\n\nThis game can easily last ten to fifteen minutes.\nAll My Neighbors #2 (for more "sedate" groups)\n\nThe group is in a circle, standing up. The facilitator is standing in the middle of the circle. Explain that you are going to make a variety of statements and you'd like everyone who "identifies" with the statement to join you in the center of the circle for "high fives."\n\nThe facilitator then begins: "All my neighbors wearing white underwear." At this, everyone who is wearing white underwear should join the facilitator in the middle of the circle for a high five. Folks then return to their seats.\n\nThe facilitator then goes on through 10 to 15 other such statements. Example can include:\n\nAll my neighbors who:\n\n * are wearing socks\n * have an older sibling\n * were born in a month without an R in it\n * whose last digit of their social security number is odd\n * haven't been caught speeding in a year\n * like Frosted Flakes\n * don't eat meat\n * were engaged to be married more than once\n * remember the name of Yogi Bear's sidekick\n * have watched Gone With the Wind in one sitting\n * know how to tie a bow tie\n * play the piano (even a little bit)\n * have been to a Grateful Dead concert\n * have voted with an absentee ballot\n\nFigure on ten minutes tops for this activity.
"Alphabet Search"\n\nDivide audience into small groups. Search your person for objects that you have on you ranging from A-Z. Place items in buckets. First group or person (if done individually) to get all 26 letters represented wins. Exercise can explore how diverse we are - insight into our individual selves. If done as a small group lends itself well to a small team building exercise as the group works together through the alphabet.
At the beginning of the training, have each person write down a question they want answered during the session. At the end of the class, mix up the questions and have participants answer each other’s questions.
!Aspect\n\nSlope Aspect And Soil Temperature\nObjective: Students will determine the effect of aspect (the direction faced by the slopes that contain crops) on soil temperature.\nMaterials: For this activity, you will need\n\n * two empty half-gallon milk cartons,\n * two laboratory thermometers,\n * enough soil to fill both cartons,\n * dark-colored construction paper,\n * scissors,\n * and graph paper.\n\nProcedure: To construct the model, first cut away a side from one of the milk cartons, and staple or tape closed the top portion where the carton opens. Then, cut a rectangle of construction paper that measures the length of the carton and twice its width. Place the paper rectangle inside the carton so that half of it still extends above the side. Fill the carton with soil, which will hold the paper in place. Prepare the second carton in the same manner.\n\nFind a window sill on which the two samples will fit with room to spare. They must also be easily accessible to students. Face one carton directly toward the outside, tilting it slightly to simulate a south-facing slope. The construction paper should be opposite to the side facing the window. Place the other carton in the window so that it faces away from the outside (construction paper toward the window), simulating a north-facing slope. Tilt the carton a bit.\n\n[>img[Themes-Handouts/English/microclimate/et19.gif]]Locate the center of each carton and push the thermometers into the soil about 5 cm. When the mercury in the thermometers stabilizes, record the temperature. Remove the thermometers after each reading.\n\nContinue to check and record the temperatures throughout the day. Compile a log of times and temperatures, and then graph the data. You might run this experiment for a single class period, for one day, for a season, or for an entire school year.\nThe carton facing the outside will show temperature readings significantly higher than will the inward-facing carton. As well, the soil from the simulated south-facing slope will retain heat longer.\n\nDiscuss the results with your class. What was the greatest difference in temperature between the two cartons? What was the least difference? When did those readings occur? Was there a difference in how quickly the soil samples heated up or cooled down between readings? How does slope aspect affect soil temperature? How might your conclusions apply to the people of the Hupobi and their dry-farming techniques? (The ancient inhabitants of the Hupobi planted those crops requiring higher temperatures and a longer growing season (such as maize) on south-facing slopes. Crops that grow for a shorter period and in cooler temperatures (such as squash) were planted on the other slopes.)
Ball Toss / Group Juggle\n\nIcebreaker for Day 2 of a multi-day training session. Good for a group of at least 12 and up to 30 where some people know each other, but the whole group is still getting acquainted:\n\nHave 3 tennis balls handy. Get the group in a circle.\n\nFacilitator tosses 1 ball to someone in the group whose name they know saying their name and then the other person's name (e.g. Sandy to John). John (person who receives the ball) tosses ball to someone whose name he knows (e.g. John to Phil). Phil tosses to someone whose name he knows and so on, saying both names all the way around the circle. The ball is tossed to each person one time only until everyone in the circle gets it and all names have been said.\n\nTHEN, facilitator starts again and tosses the balls to the same person (Sandy to John to Phil, etc.) only this time with 2 balls in succession (not at the same time) saying both names, both times. Balls get tossed to the same people they were originally tossed to; first one ball, then the next, all the way around the circle stopping when they get back to the facilitator.\n\nTHEN, facilitator starts again only with all three balls this time. Saying names each time, all three balls get tossed, in succession, in the same order until they get back to the facilitator.\n\nBy the time there are three balls going, it gets pretty chaotic and fun. By now all names have been said so many times everyone should have a pretty good idea of who's who and they are pretty warmed up and ready to go. If (I should say, when) someone drops a ball, simply give them a chance to chase it down and just pick up where you left off--no need to start again.
<<formTiddler BiggerFormTemplate>><data>{"userName":"Jerry Wall","isVIP":true,"password":"1234","level":"Guru","browser":"Firefox","music":["New Age"],"notes":"You can enter Text\snacross multiple\snlines...","attachment":"E:\s\s_Library_\s\sMiscUB-Vol2005-06 (open)\s\sOpera 8.51\s\sow32enen851.exe"}</data>
<<formTiddler BiggerFormTemplate>><data>{"userName":"Will Snyder","password":"ggggggg","level":"Expert","music":["Jazz","Blues"],"notes":"Having Fun with TiddlyWiki and the FormTiddlerPlugin.\sn\sn(BTW: notice the multi selection in the 'Music Prefernces' list box)"}</data>
<<formTiddler BiggerFormTemplate>><data>{"userName":"Jack Brown","password":"asdasd","level":"Beginner","browser":"Internet Explorer","notes":"New here..."}</data>
!An Example Form, showing many features of the FormTiddlerPlugin\n<html>\n<sub><b>Name:</b></sub><br/>\n<input name=userName type=text/>\n<sub><b>Password:</b></sub><br/>\n<input name=password type=password /><br/>\n<sub><b>Attachment:</b></sub><br/>\n<input name=attachment type=file /><br/>\n\n<sub><b>Level:</b></sub><br/><input name=level type=radio value="Beginner" />Beginner\n<input name=level type=radio value="Expert" />Expert\n<input name=level type=radio value="Guru" />Guru<br/>\n\n<sub><b>Browser:</b></sub><br/>\n<select name=browser >\n <option>Firefox\n <option>Internet Explorer\n <option>Opera\n <option>Other\n</select >\n<br/>\n<sub><b>Music Preferences:</b></sub><br/>\n<select name=music MULTIPLE >\n <option> R&B\n <option> Jazz\n <option> Blues\n <option> New Age\n</select >\n<br/>\n\n<sub><b>Notes:</b></sub><br/>\n<TEXTAREA name=notes rows=4 cols=80 ></TEXTAREA>\n<p/>\n<input name=hiddenValue type=hidden value="This is a hidden value" />\n\n<input name=btn type=button value="Just a button" />\n<input name=btnSubmit type=submit />\n<input name=btnReset type=reset />\n<br/>\n</div>\n</html>\n[[Card 1|BiggerForm (Card 1)]] - [[Card 2|BiggerForm (Card 2)]] - [[Card 3|BiggerForm (Card 3)]]\n\n~~(This is an example form, using the form template BiggerFormTemplate and the FormTiddlerPlugin.)~~
Blob Tag\n\nIts helpful to have a pretty large, open space for this energizer. The facilitator is it. When she or he tags someone they lock arms and then jointly attempt to tag someone else. As each person is tagged they lock arms with those who are already it. The game is over when the last person is "captured." Some boundaries must be set up for this activity to keep folks from roaming too far afield. This game typically takes less than 10 minutes to complete.
<html>\n<style>\n.rolodex table {\nborder: 0px solid;\nbackground-color:#FFFF99;\n}\n\n.rolodex tr, .rolodex td {\nborder: 0px solid;\n}\n</style>\n<span class="rolodex">\n <table>\n <tr>\n <td colspan="6"><sub><b>Content:</b></sub><br>\n <textarea name=contentrows="8" cols="40" style="width:100%" ></textarea></td></tr>\n <tr>\n <td colspan="6"><sub><b>Comments:</b></sub><br>\n <textarea name=comments rows="6" cols="40" style="width:100%" ></textarea></td></tr>\n</table>\n</span>\n</html>
Brain Teaser"\n\nUse a quiz as an icebreaker. Ask questions that we should all know but may not. Ask members to answer individually, then give them a few minutes to work in small groups to finish answering the questions. The groups should be able to answer more questions than any one individual. This is a good demonstration of synergy and can lead into a discussion of the concept. Sample questions:\n\n * What are the names of the planets, starting from the one closest to the sun?\n * What is the most populous state in the U.S.?\n * What 8 states begin with the letter "M"?
!Brainstorming\n//You may think this is only a ruler, but it can be used to kill flies, butter toast, whack people who annoy you, serve as a bookmarker, fling small objects across the room, cut bananas.....//\n\nTo involve participants in a creative problem solving process. Use iIn a workshop whenever you need. to "clear the cobwebs" or orient participants to a creative process.\n\n * Introduce the basic ground rules of brainstorming:\n\n * No critical judgment is permitted.\n * Free association is welcomed; the wilder the ideas the better. Quantity, not quality, is desired.\n * Combination and improvement of ideas is sought.\n\n * With these rules in mind, divide the group into subgroups of four to six\n * Ask participants to think of all the ways they can use a paper clip. a feather, a ruler or another simple object. They have sixty seconds for this part of the exercise.\n * Have someone tally the number of ideas. At the end of one minute ask the groups to report the number of ideas they generated and then get a sampling of some of the "crazy" or "far out" ideas.\n * Suggest that sometimes these silly ideas may turn out to be very workable.\n\nDebriefing\nEncourage further group discussion with the following questions:\n\n * What reservations do you have about the technique?\n * What kinds of problems is brainstorming best suited to?\n * What potential can you see for the use of brainstorming in your job?\n\nNOTE.: Research indicates that creativity can be cultivated by the use of simple and practical exercises. Too often the spark of innovative thinking is dampened by phrases like," We tried it last year." or "We've always done it that way."\n\nVariation\nBrainstorm on any topic. Each time, change one condition radically. Gather all ideas, even crazy ones, for ten minutes. Condense them into a new list of valuable ideas or decide which idea could be put into practice by voting on the most feasible ones.
!Brainwriting\n\nTo involve participants in idea gathering. Use following a brainstorming session when a group is ready to develop plans.\n\n * List ideas or topics on a board in advance of the session.\n * Have participants sit in a circle. Distribute blank cards to each one.\n * Ask each participant to select a particular topic already on the board. Write it as a heading then write a solution, idea or action,no matter how crazy, just below the heading.\n * Each person will then pass their card to the person on their right and receive a new card from the person on tile left. They should add a new solution and pass the card to the right. This continues until participants have their original card back in hand.\n * Ask each person to select those ideas that are workable and three ideas that are not\n * Conclude with a group discussion\n
<<tagging Type>>
/***\n|Name|BreadcrumbsPlugin|\n|Source|http://sourceforge.net/project/showfiles.php?group_id=150646|\n|OriginalAuthor|Alan Hecht (with 2.0 update from 'jack' and revisions by Bram Chen)|\n|Version|1.5.5.0TT|\n|Author|Eric Shulman|\n|License|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|~CoreVersion|2.1|\n|Type|plugin|\n|Requires||\n|Overrides|Story.prototype.displayTiddler|\n|Description|show a list of tiddlers viewed during this session. Also defines "back" (previousTiddler) toolbar button and macro|\n\n!Revision History:\n__TiddlyTools (TT) variant:__\n1.5.5.0 2007.04.11 - added optional params to previousTiddler macro handler() to allow alternative label and tooltip text (instead of default "back")\n1.5.4.0 2007.03.02 - in refreshCrumbs(), for TW2.2, look for "storyDisplay" instead of "tiddlerDisplay" but keep fallback to "tiddlerDisplay" for TW2.1 or earlier\n1.5.3.0 2007.02.24 - changed from hijack of onClickTiddlerLink to hijack of displayTiddler() so that ALL displayed tiddlers are recorded in the crumbs, including programmatically displayed tiddlers opened by macros, scripts, etc., (such as [[GotoPlugin]], among many others) in addition to those opened by clicks on links.\n1.5.2.0 2007.02.24 - eliminated global space clutter by moving function and data declarations so they are contained inside config.breadCrumbs object.\n1.5.1.0 2007.02.06 - added "previousTiddler" macro (for use in sidebar)\n1.5.0.0 2007.02.05 - added "previousTiddler" toolbar command (aka, "back")\n1.4.0.1 2006.08.04 - change spaces to tabs\n1.4.0.0 2006.08.04 - modified from 1.4.0 distro:\n<<<\nin refreshCrumbs(), set {{{display:none/block}}} instead of {{{visibility:hidden/visible}}}\nin restartHome(), check for valid crumbArea before setting style\ngeneral code cleanup/reformat using tabs to indent\n<<<\n|1.4.0|Aug 02, 2006|Fixed bug, the redefined onClickTiddlerLink_orig_breadCrumbs works incorrectly on IE|\n|1.3.0|Jul 20, 2006|Runs compatibly with TW 2.1.0 (rev #403+)|\n|1.2.0|Feb 07, 2006|change global array breadCrumbs to config.breadCrumbs by Eric's suggestion|\n|1.1.0|Feb 04, 2006|JSLint checked|\n|1.0.0|Feb 01, 2006|TW2 ready and code Cleaned-up|\n\n!Code section:\n***/\n//{{{\nversion.extensions.breadCrumbs = {major: 1, minor: 5, revision: 5, date: new Date("Apr 11, 2007")};\n\nif (Story.prototype.breadCrumbs_coreDisplayTiddler==undefined)\n Story.prototype.breadCrumbs_coreDisplayTiddler=Story.prototype.displayTiddler;\nStory.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)\n{\n this.breadCrumbs_coreDisplayTiddler.apply(this,arguments);\n // if not displaying tiddler during document startup, then add it to the breadcrumbs\n // note: 'startingUp' flag is a global, set/reset by the core init() function\n if (!startingUp) config.breadCrumbs.addCrumb(title);\n}\n\nconfig.breadCrumbs = { // ELS: move all functions and data inside config.breadCrumbs object (eliminate global clutter)\n crumbs: [], // the list of current breadcrumbs\n addCrumb: function (title) { // ELS: changed from passing event, "e", to passing tiddler title\n var thisCrumb = "[[" + title + "]]";\n var ind = this.crumbs.find(thisCrumb);\n if(ind === null)\n this.crumbs.push(thisCrumb);\n else\n this.crumbs=this.crumbs.slice(0,ind+1); // ELS: use slice() to truncate array instead of just setting array length\n this.refreshCrumbs();\n return false;\n },\n refreshCrumbs: function() {\n var crumbArea = document.getElementById("breadCrumbs");\n if (!crumbArea) {\n var crumbArea = document.createElement("div");\n crumbArea.id = "breadCrumbs";\n crumbArea.style.display= "none"; // ELS changed from: crumbArea.style.visibility= "hidden";\n var targetArea= document.getElementById("tiddlerDisplay"); // TW2.1-\n if (!targetArea) targetArea = document.getElementById("storyDisplay"); // TW2.2+\n targetArea.parentNode.insertBefore(crumbArea,targetArea);\n }\n crumbArea.style.display = "block"; // ELS changed from: crumbArea.style.visibility = "visible";\n removeChildren(crumbArea);\n createTiddlyButton(crumbArea,"Home",null,this.restartHome);\n wikify(" | " + this.crumbs.join(' > '),crumbArea) // ELS: changed || to |\n },\n restartHome: function() {\n story.closeAllTiddlers();\n restart();\n config.breadCrumbs.crumbs = [];\n var crumbArea = document.getElementById("breadCrumbs");\n if (crumbArea) // ELS: added check to make sure crumbArea exists\n crumbArea.style.display = "none"; // ELS changed from: crumbArea.style.visibility = "hidden";\n }\n};\n\nconfig.commands.previousTiddler = { // ELS: added "BACK" toolbar command\n text: 'back',\n tooltip: 'view the previous tiddler',\n hideReadOnly: false,\n dateFormat: 'DDD, MMM DDth YYYY hh:0mm:0ss',\n handler: function(event,src,title) {\n var here=story.findContainingTiddler(src); if (!here) return;\n if (config.breadCrumbs.crumbs.length>1) {\n var crumb=config.breadCrumbs.crumbs[config.breadCrumbs.crumbs.length-2].replace(/\s[\s[/,'').replace(/\s]\s]/,'');\n story.displayTiddler(here,crumb);\n }\n else\n config.breadCrumbs.restartHome();\n return false;\n }\n};\n\nconfig.macros.previousTiddler= { // ELS: added "BACK" macro\n label: 'back',\n prompt: 'view the previous tiddler',\n handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n var label=params.shift(); if (!label) label=this.label;\n var prompt=params.shift(); if (!prompt) prompt=this.prompt;\n createTiddlyButton(place,label,prompt,function() {\n if (config.breadCrumbs.crumbs.length>1) {\n var crumb=config.breadCrumbs.crumbs[config.breadCrumbs.crumbs.length-2].replace(/\s[\s[/,'').replace(/\s]\s]/,'');\n story.displayTiddler(place,crumb);\n }\n else\n config.breadCrumbs.restartHome();\n });\n }\n}\n//}}}
!Challenges and Objectives"\n\nDivide the class into small teams. Instruct teams to identify their challenges in the topic and their objectives for the training. Post work on flip charts. Have them introduce their team and share their work with the rest of the class.
Charades"\n\nHave class work in small teams of 4-5. Instruct teams to identify one type of person they all find difficult. Then have the team act out that type of person while the rest of the class tries to guess what they are acting. This can be a fun activity and can lead to a short discussion about needing to keep a sense of humor when dealing with difficult people.
/***\n| Name|CloseOnCancelPlugin|\n| Description|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|\n| Version|3.0 ($Rev: 1845 $)|\n| Date|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n***/\n//{{{\nmerge(config.commands.cancelTiddler,{\n\n handler_orig_closeUnsaved: config.commands.cancelTiddler.handler,\n\n handler: function(event,src,title) {\n this.handler_orig_closeUnsaved(event,src,title);\n if (!store.tiddlerExists(title) && !store.isShadowTiddler(title))\n story.closeTiddler(title,true);\n return false;\n }\n\n});\n\n//}}}\n\n
Collective Knowledge"\n\nHave participants work in teams to identify five rules for dealing with difficult people (or the topic under discussion).
Background: ##003399\nForeground: #000\nPrimaryPale: #f8de8e\nPrimaryLight: #f7e2a1\nPrimaryMid: #e9b105\nPrimaryDark: #916e02\nSecondaryPale: #ffc\nSecondaryLight: #fe8\nSecondaryMid: #db4\nSecondaryDark: #841\nTertiaryPale: #eee\nTertiaryLight: #ccc\nTertiaryMid: #999\nTertiaryDark: #666\nError: #f88\n
//{{{\nconfig.options.chkHttpReadOnly = false; // means web visitors can experiment with your site by clicking edit\nconfig.options.chkInsertTabs = true; // tab inserts a tab when editing a tiddler\nconfig.views.wikified.defaultText = ""; // don't need message when a tiddler doesn't exist\nconfig.views.editor.defaultText = ""; // don't need message when creating a new tiddler \n//}}}\n
!Control Panel\n\nTo improove the appearance of the ~TWs when they are used as internet pages or presentations I have adopted the practice of "hiding" the control panel that ~W normally uses on the right side of the page. To navegate through the nformation it should not be necesary to open or use the control panel. However it is possible to access the control panel and to understand how the ~TW is organised (and to edit the Tiddlers) simply by toggling the top button "Built by Skye" - which is not as useless a button as it first looks!.
Cornell Trainer Network Icebreaker-Mini Conference held on July 2nd, 1996\nhttp://www.cornell.edu/Admin/TNET/TNETWeb.html
Processes that develop and express Creativity
Create a crossword puzzle (very affordable software is available in stores and at www.crosswordkit.com) with clues describing key concepts from the training. Turn the puzzle into posters at your local quick print store (or with a poster maker) and give teams 5 minutes to complete the puzzles. Award prizes to any teams that get all answers correct in the time allotted.
Here are some examples that show the usage of tiddler data, as provided by the DataTiddlerPlugin.\n<<forEachTiddler\n where\n 'tiddler.tags.contains("DataTiddlerExample")'\n>>\n
Start
[[Designing an EcoCity|Themes-Handouts/English/Urban/ecocity.pdf]]
Developing Yourself"\n\nHave each person introduce himself and share one action they have recently taken to develop themselves (other than signing up for this class). This can be done as a group or in small teams.
/***\n|''Name:''|DataTiddlerPlugin|\n|''Version:''|1.0.6 (2006-08-26)|\n|''Source:''|http://tiddlywiki.abego-software.de/#DataTiddlerPlugin|\n|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|\n|''Licence:''|[[BSD open source license]]|\n|''TiddlyWiki:''|1.2.38+, 2.0|\n|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|\n!Description\nEnhance your tiddlers with structured data (such as strings, booleans, numbers, or even arrays and compound objects) that can be easily accessed and modified through named fields (in JavaScript code).\n\nSuch tiddler data can be used in various applications. E.g. you may create tables that collect data from various tiddlers. \n\n''//Example: "Table with all December Expenses"//''\n{{{\n<<forEachTiddler\n where\n 'tiddler.tags.contains("expense") && tiddler.data("month") == "Dec"'\n write\n '"|[["+tiddler.title+"]]|"+tiddler.data("descr")+"| "+tiddler.data("amount")+"|\sn"'\n>>\n}}}\n//(This assumes that expenses are stored in tiddlers tagged with "expense".)//\n<<forEachTiddler\n where\n 'tiddler.tags.contains("expense") && tiddler.data("month") == "Dec"'\n write\n '"|[["+tiddler.title+"]]|"+tiddler.data("descr")+"| "+tiddler.data("amount")+"|\sn"'\n>>\nFor other examples see DataTiddlerExamples.\n\n\n\n\n''Access and Modify Tiddler Data''\n\nYou can "attach" data to every tiddler by assigning a JavaScript value (such as a string, boolean, number, or even arrays and compound objects) to named fields. \n\nThese values can be accessed and modified through the following Tiddler methods:\n|!Method|!Example|!Description|\n|{{{data(field)}}}|{{{t.data("age")}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined {{{undefined}}} is returned.|\n|{{{data(field,defaultValue)}}}|{{{t.data("isVIP",false)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined the defaultValue is returned.|\n|{{{data()}}}|{{{t.data()}}}|Returns the data object of the tiddler, with a property for every field. The properties of the returned data object may only be read and not be modified. To modify the data use DataTiddler.setData(...) or the corresponding Tiddler method.|\n|{{{setData(field,value)}}}|{{{t.setData("age",42)}}}|Sets the value of the given data field of the tiddler to the value. When the value is {{{undefined}}} the field is removed.|\n|{{{setData(field,value,defaultValue)}}}|{{{t.setData("isVIP",flag,false)}}}|Sets the value of the given data field of the tiddler to the value. When the value is equal to the defaultValue no value is set (and the field is removed).|\n\nAlternatively you may use the following functions to access and modify the data. In this case the tiddler argument is either a tiddler or the name of a tiddler.\n|!Method|!Description|\n|{{{DataTiddler.getData(tiddler,field)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined {{{undefined}}} is returned.|\n|{{{DataTiddler.getData(tiddler,field,defaultValue)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined the defaultValue is returned.|\n|{{{DataTiddler.getDataObject(tiddler)}}}|Returns the data object of the tiddler, with a property for every field. The properties of the returned data object may only be read and not be modified. To modify the data use DataTiddler.setData(...) or the corresponding Tiddler method.|\n|{{{DataTiddler.setData(tiddler,field,value)}}}|Sets the value of the given data field of the tiddler to the value. When the value is {{{undefined}}} the field is removed.|\n|{{{DataTiddler.setData(tiddler,field,value,defaultValue)}}}|Sets the value of the given data field of the tiddler to the value. When the value is equal to the defaultValue no value is set (and the field is removed).|\n//(For details on the various functions see the detailed comments in the source code.)//\n\n\n''Data Representation in a Tiddler''\n\nThe data of a tiddler is stored as plain text in the tiddler's content/text, inside a "data" section that is framed by a {{{<data>...</data>}}} block. Inside the data section the information is stored in the [[JSON format|http://www.crockford.com/JSON/index.html]]. \n\n//''Data Section Example:''//\n{{{\n<data>{"isVIP":true,"user":"John Brown","age":34}</data>\n}}}\n\nThe data section is not displayed when viewing the tiddler (see also "The showData Macro").\n\nBeside the data section a tiddler may have all kind of other content.\n\nTypically you will not access the data section text directly but use the methods given above. Nevertheless you may retrieve the text of the data section's content through the {{{DataTiddler.getDataText(tiddler)}}} function.\n\n\n''Saving Changes''\n\nThe "setData" methods respect the "ForceMinorUpdate" and "AutoSave" configuration values. I.e. when "ForceMinorUpdate" is true changing a value using setData will not affect the "modifier" and "modified" attributes. With "AutoSave" set to true every setData will directly save the changes after a setData.\n\n\n''Notifications''\n\nNo notifications are sent when a tiddler's data value is changed through the "setData" methods. \n\n''Escape Data Section''\nIn case that you want to use the text {{{<data>}}} or {{{</data>}}} in a tiddler text you must prefix the text with a tilde ('~'). Otherwise it may be wrongly considered as the data section. The tiddler text {{{~<data>}}} is displayed as {{{<data>}}}.\n\n\n''The showData Macro''\n\nBy default the data of a tiddler (that is stored in the {{{<data>...</data>}}} section of the tiddler) is not displayed. If you want to display this data you may used the {{{<<showData ...>>}}} macro:\n\n''Syntax:'' \n|>|{{{<<}}}''showData '' [''JSON''] [//tiddlerName//] {{{>>}}}|\n|''JSON''|By default the data is rendered as a table with a "Name" and "Value" column. When defining ''JSON'' the data is rendered in JSON format|\n|//tiddlerName//|Defines the tiddler holding the data to be displayed. When no tiddler is given the tiddler containing the showData macro is used. When the tiddler name contains spaces you must quote the name (or use the {{{[[...]]}}} syntax.)|\n|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|\n\n\n!Revision history\n* v1.0.6 (2006-08-26) \n** Removed misleading comment\n* v1.0.5 (2006-02-27) (Internal Release Only)\n** Internal\n*** Make "JSLint" conform\n* v1.0.4 (2006-02-05)\n** Bugfix: showData fails in TiddlyWiki 2.0\n* v1.0.3 (2006-01-06)\n** Support TiddlyWiki 2.0\n* v1.0.2 (2005-12-22)\n** Enhancements:\n*** Handle texts "<data>" or "</data>" more robust when used in a tiddler text or as a field value.\n*** Improved (JSON) error messages.\n** Bugs fixed: \n*** References are not updated when using the DataTiddler.\n*** Changes to compound objects are not always saved.\n*** "~</data>" is not rendered correctly (expected "</data>")\n* v1.0.1 (2005-12-13)\n** Features: \n*** The showData macro supports an optional "tiddlername" argument to specify the tiddler containing the data to be displayed\n** Bugs fixed: \n*** A script immediately following a data section is deleted when the data is changed. (Thanks to GeoffS for reporting.)\n* v1.0.0 (2005-12-12)\n** initial version\n\n!Code\n***/\n//{{{\n//============================================================================\n//============================================================================\n// DataTiddlerPlugin\n//============================================================================\n//============================================================================\n\n// Ensure that the DataTiddler Plugin is only installed once.\n//\nif (!version.extensions.DataTiddlerPlugin) {\n\n\n\nversion.extensions.DataTiddlerPlugin = {\n major: 1, minor: 0, revision: 6,\n date: new Date(2006, 7, 26), \n type: 'plugin',\n source: "http://tiddlywiki.abego-software.de/#DataTiddlerPlugin"\n};\n\n// For backward compatibility with v1.2.x\n//\nif (!window.story) window.story=window; \nif (!TiddlyWiki.prototype.getTiddler) {\n TiddlyWiki.prototype.getTiddler = function(title) { \n var t = this.tiddlers[title]; \n return (t !== undefined && t instanceof Tiddler) ? t : null; \n };\n}\n\n//============================================================================\n// DataTiddler Class\n//============================================================================\n\n// ---------------------------------------------------------------------------\n// Configurations and constants \n// ---------------------------------------------------------------------------\n\nfunction DataTiddler() {\n}\n\nDataTiddler = {\n // Function to stringify a JavaScript value, producing the text for the data section content.\n // (Must match the implementation of DataTiddler.parse.)\n //\n stringify : null,\n \n\n // Function to parse the text for the data section content, producing a JavaScript value.\n // (Must match the implementation of DataTiddler.stringify.)\n //\n parse : null\n};\n\n// Ensure access for IE\nwindow.DataTiddler = DataTiddler;\n\n// ---------------------------------------------------------------------------\n// Data Accessor and Mutator\n// ---------------------------------------------------------------------------\n\n\n// Returns the value of the given data field of the tiddler.\n// When no such field is defined or its value is undefined\n// the defaultValue is returned.\n// \n// @param tiddler either a tiddler name or a tiddler\n//\nDataTiddler.getData = function(tiddler, field, defaultValue) {\n var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;\n if (!(t instanceof Tiddler)) {\n throw "Tiddler expected. Got "+tiddler;\n }\n\n return DataTiddler.getTiddlerDataValue(t, field, defaultValue);\n};\n\n\n// Sets the value of the given data field of the tiddler to\n// the value. When the value is equal to the defaultValue\n// no value is set (and the field is removed)\n//\n// Changing data of a tiddler will not trigger notifications.\n// \n// @param tiddler either a tiddler name or a tiddler\n//\nDataTiddler.setData = function(tiddler, field, value, defaultValue) {\n var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;\n if (!(t instanceof Tiddler)) {\n throw "Tiddler expected. Got "+tiddler+ "("+t+")";\n }\n\n DataTiddler.setTiddlerDataValue(t, field, value, defaultValue);\n};\n\n\n// Returns the data object of the tiddler, with a property for every field.\n//\n// The properties of the returned data object may only be read and\n// not be modified. To modify the data use DataTiddler.setData(...) \n// or the corresponding Tiddler method.\n//\n// If no data section is defined a new (empty) object is returned.\n//\n// @param tiddler either a tiddler name or a Tiddler\n//\nDataTiddler.getDataObject = function(tiddler) {\n var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;\n if (!(t instanceof Tiddler)) {\n throw "Tiddler expected. Got "+tiddler;\n }\n\n return DataTiddler.getTiddlerDataObject(t);\n};\n\n// Returns the text of the content of the data section of the tiddler.\n//\n// When no data section is defined for the tiddler null is returned \n//\n// @param tiddler either a tiddler name or a Tiddler\n// @return [may be null]\n//\nDataTiddler.getDataText = function(tiddler) {\n var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;\n if (!(t instanceof Tiddler)) {\n throw "Tiddler expected. Got "+tiddler;\n }\n\n return DataTiddler.readDataSectionText(t);\n};\n\n\n// ---------------------------------------------------------------------------\n// Internal helper methods (must not be used by code from outside this plugin)\n// ---------------------------------------------------------------------------\n\n// Internal.\n//\n// The original JSONError is not very user friendly, \n// especially it does not define a toString() method\n// Therefore we extend it here.\n//\nDataTiddler.extendJSONError = function(ex) {\n if (ex.name == 'JSONError') {\n ex.toString = function() {\n return ex.name + ": "+ex.message+" ("+ex.text+")";\n };\n }\n return ex;\n};\n\n// Internal.\n//\n// @param t a Tiddler\n//\nDataTiddler.getTiddlerDataObject = function(t) {\n if (t.dataObject === undefined) {\n var data = DataTiddler.readData(t);\n t.dataObject = (data) ? data : {};\n }\n \n return t.dataObject;\n};\n\n\n// Internal.\n//\n// @param tiddler a Tiddler\n//\nDataTiddler.getTiddlerDataValue = function(tiddler, field, defaultValue) {\n var value = DataTiddler.getTiddlerDataObject(tiddler)[field];\n return (value === undefined) ? defaultValue : value;\n};\n\n\n// Internal.\n//\n// @param tiddler a Tiddler\n//\nDataTiddler.setTiddlerDataValue = function(tiddler, field, value, defaultValue) {\n var data = DataTiddler.getTiddlerDataObject(tiddler);\n var oldValue = data[field];\n \n if (value == defaultValue) {\n if (oldValue !== undefined) {\n delete data[field];\n DataTiddler.save(tiddler);\n }\n return;\n }\n data[field] = value;\n DataTiddler.save(tiddler);\n};\n\n// Internal.\n//\n// Reads the data section from the tiddler's content and returns its text\n// (as a String).\n//\n// Returns null when no data is defined.\n//\n// @param tiddler a Tiddler\n// @return [may be null]\n//\nDataTiddler.readDataSectionText = function(tiddler) {\n var matches = DataTiddler.getDataTiddlerMatches(tiddler);\n if (matches === null || !matches[2]) {\n return null;\n }\n return matches[2];\n};\n\n// Internal.\n//\n// Reads the data section from the tiddler's content and returns it\n// (as an internalized object).\n//\n// Returns null when no data is defined.\n//\n// @param tiddler a Tiddler\n// @return [may be null]\n//\nDataTiddler.readData = function(tiddler) {\n var text = DataTiddler.readDataSectionText(tiddler);\n try {\n return text ? DataTiddler.parse(text) : null;\n } catch(ex) {\n throw DataTiddler.extendJSONError(ex);\n }\n};\n\n// Internal.\n// \n// Returns the serialized text of the data of the given tiddler, as it\n// should be stored in the data section.\n//\n// @param tiddler a Tiddler\n//\nDataTiddler.getDataTextOfTiddler = function(tiddler) {\n var data = DataTiddler.getTiddlerDataObject(tiddler);\n return DataTiddler.stringify(data);\n};\n\n\n// Internal.\n// \nDataTiddler.indexOfNonEscapedText = function(s, subString, startIndex) {\n var index = s.indexOf(subString, startIndex);\n while ((index > 0) && (s[index-1] == '~')) { \n index = s.indexOf(subString, index+1);\n }\n return index;\n};\n\n// Internal.\n//\nDataTiddler.getDataSectionInfo = function(text) {\n // Special care must be taken to handle "<data>" and "</data>" texts inside\n // a data section. \n // Also take care not to use an escaped <data> (i.e. "~<data>") as the start \n // of a data section. (Same for </data>)\n\n // NOTE: we are explicitly searching for a data section that contains a JSON\n // string, i.e. framed with braces. This way we are little bit more robust in\n // case the tiddler contains unescaped texts "<data>" or "</data>". This must\n // be changed when using a different stringifier.\n\n var startTagText = "<data>{";\n var endTagText = "}</data>";\n\n var startPos = 0;\n\n // Find the first not escaped "<data>".\n var startDataTagIndex = DataTiddler.indexOfNonEscapedText(text, startTagText, 0);\n if (startDataTagIndex < 0) {\n return null;\n }\n\n // Find the *last* not escaped "</data>".\n var endDataTagIndex = text.indexOf(endTagText, startDataTagIndex);\n if (endDataTagIndex < 0) {\n return null;\n }\n var nextEndDataTagIndex;\n while ((nextEndDataTagIndex = text.indexOf(endTagText, endDataTagIndex+1)) >= 0) {\n endDataTagIndex = nextEndDataTagIndex;\n }\n\n return {\n prefixEnd: startDataTagIndex, \n dataStart: startDataTagIndex+(startTagText.length)-1, \n dataEnd: endDataTagIndex, \n suffixStart: endDataTagIndex+(endTagText.length)\n };\n};\n\n// Internal.\n// \n// Returns the "matches" of a content of a DataTiddler on the\n// "data" regular expression. Return null when no data is defined\n// in the tiddler content.\n//\n// Group 1: text before data section (prefix)\n// Group 2: content of data section\n// Group 3: text behind data section (suffix)\n//\n// @param tiddler a Tiddler\n// @return [may be null] null when the tiddler contains no data section, otherwise see above.\n//\nDataTiddler.getDataTiddlerMatches = function(tiddler) {\n var text = tiddler.text;\n var info = DataTiddler.getDataSectionInfo(text);\n if (!info) {\n return null;\n }\n\n var prefix = text.substr(0,info.prefixEnd);\n var data = text.substr(info.dataStart, info.dataEnd-info.dataStart+1);\n var suffix = text.substr(info.suffixStart);\n \n return [text, prefix, data, suffix];\n};\n\n\n// Internal.\n//\n// Saves the data in a <data> block of the given tiddler (as a minor change). \n//\n// The "chkAutoSave" and "chkForceMinorUpdate" options are respected. \n// I.e. the TiddlyWiki *file* is only saved when AutoSave is on.\n//\n// Notifications are not send. \n//\n// This method should only be called when the data really has changed. \n//\n// @param tiddler\n// the tiddler to be saved.\n//\nDataTiddler.save = function(tiddler) {\n\n var matches = DataTiddler.getDataTiddlerMatches(tiddler);\n\n var prefix;\n var suffix;\n if (matches === null) {\n prefix = tiddler.text;\n suffix = "";\n } else {\n prefix = matches[1];\n suffix = matches[3];\n }\n\n var dataText = DataTiddler.getDataTextOfTiddler(tiddler);\n var newText = \n (dataText !== null) \n ? prefix + "<data>" + dataText + "</data>" + suffix\n : prefix + suffix;\n if (newText != tiddler.text) {\n // make the change in the tiddlers text\n \n // ... see DataTiddler.MyTiddlerChangedFunction\n tiddler.isDataTiddlerChange = true;\n \n // ... do the action change\n tiddler.set(\n tiddler.title,\n newText,\n config.options.txtUserName, \n config.options.chkForceMinorUpdate? undefined : new Date(),\n tiddler.tags);\n\n // ... see DataTiddler.MyTiddlerChangedFunction\n delete tiddler.isDataTiddlerChange;\n\n // Mark the store as dirty.\n store.dirty = true;\n \n // AutoSave if option is selected\n if(config.options.chkAutoSave) {\n saveChanges();\n }\n }\n};\n\n// Internal.\n//\nDataTiddler.MyTiddlerChangedFunction = function() {\n // Remove the data object from the tiddler when the tiddler is changed\n // by code other than DataTiddler code. \n //\n // This is necessary since the data object is just a "cached version" \n // of the data defined in the data section of the tiddler and the \n // "external" change may have changed the content of the data section.\n // Thus we are not sure if the data object reflects the data section \n // contents. \n // \n // By deleting the data object we ensure that the data object is \n // reconstructed the next time it is needed, with the data defined by\n // the data section in the tiddler's text.\n \n // To indicate that a change is a "DataTiddler change" a temporary\n // property "isDataTiddlerChange" is added to the tiddler.\n if (this.dataObject && !this.isDataTiddlerChange) {\n delete this.dataObject;\n }\n \n // call the original code.\n DataTiddler.originalTiddlerChangedFunction.apply(this, arguments);\n};\n\n\n//============================================================================\n// Formatters\n//============================================================================\n\n// This formatter ensures that "~<data>" is rendered as "<data>". This is used to \n// escape the "<data>" of a data section, just in case someone really wants to use\n// "<data>" as a text in a tiddler and not start a data section.\n//\n// Same for </data>.\n//\nconfig.formatters.push( {\n name: "data-escape",\n match: "~<\s\s/?data>",\n\n handler: function(w) {\n w.outputText(w.output,w.matchStart + 1,w.nextMatch);\n }\n} );\n\n\n// This formatter ensures that <data>...</data> sections are not rendered.\n//\nconfig.formatters.push( {\n name: "data",\n match: "<data>",\n\n handler: function(w) {\n var info = DataTiddler.getDataSectionInfo(w.source);\n if (info && info.prefixEnd == w.matchStart) {\n w.nextMatch = info.suffixStart;\n } else {\n w.outputText(w.output,w.matchStart,w.nextMatch);\n }\n }\n} );\n\n\n//============================================================================\n// Tiddler Class Extension\n//============================================================================\n\n// "Hijack" the changed method ---------------------------------------------------\n\nDataTiddler.originalTiddlerChangedFunction = Tiddler.prototype.changed;\nTiddler.prototype.changed = DataTiddler.MyTiddlerChangedFunction;\n\n// Define accessor methods -------------------------------------------------------\n\n// Returns the value of the given data field of the tiddler. When no such field \n// is defined or its value is undefined the defaultValue is returned.\n//\n// When field is undefined (or null) the data object is returned. (See \n// DataTiddler.getDataObject.)\n//\n// @param field [may be null, undefined]\n// @param defaultValue [may be null, undefined]\n// @return [may be null, undefined]\n//\nTiddler.prototype.data = function(field, defaultValue) {\n return (field) \n ? DataTiddler.getTiddlerDataValue(this, field, defaultValue)\n : DataTiddler.getTiddlerDataObject(this);\n};\n\n// Sets the value of the given data field of the tiddler to the value. When the \n// value is equal to the defaultValue no value is set (and the field is removed).\n//\n// @param value [may be null, undefined]\n// @param defaultValue [may be null, undefined]\n//\nTiddler.prototype.setData = function(field, value, defaultValue) {\n DataTiddler.setTiddlerDataValue(this, field, value, defaultValue);\n};\n\n\n//============================================================================\n// showData Macro\n//============================================================================\n\nconfig.macros.showData = {\n // Standard Properties\n label: "showData",\n prompt: "Display the values stored in the data section of the tiddler"\n};\n\nconfig.macros.showData.handler = function(place,macroName,params) {\n // --- Parsing ------------------------------------------\n\n var i = 0; // index running over the params\n // Parse the optional "JSON"\n var showInJSONFormat = false;\n if ((i < params.length) && params[i] == "JSON") {\n i++;\n showInJSONFormat = true;\n }\n \n var tiddlerName = story.findContainingTiddler(place).id.substr(7);\n if (i < params.length) {\n tiddlerName = params[i];\n i++;\n }\n\n // --- Processing ------------------------------------------\n try {\n if (showInJSONFormat) {\n this.renderDataInJSONFormat(place, tiddlerName);\n } else {\n this.renderDataAsTable(place, tiddlerName);\n }\n } catch (e) {\n this.createErrorElement(place, e);\n }\n};\n\nconfig.macros.showData.renderDataInJSONFormat = function(place,tiddlerName) {\n var text = DataTiddler.getDataText(tiddlerName);\n if (text) {\n createTiddlyElement(place,"pre",null,null,text);\n }\n};\n\nconfig.macros.showData.renderDataAsTable = function(place,tiddlerName) {\n var text = "|!Name|!Value|\sn";\n var data = DataTiddler.getDataObject(tiddlerName);\n if (data) {\n for (var i in data) {\n var value = data[i];\n text += "|"+i+"|"+DataTiddler.stringify(value)+"|\sn";\n }\n }\n \n wikify(text, place);\n};\n\n\n// Internal.\n//\n// Creates an element that holds an error message\n// \nconfig.macros.showData.createErrorElement = function(place, exception) {\n var message = (exception.description) ? exception.description : exception.toString();\n return createTiddlyElement(place,"span",null,"showDataError","<<showData ...>>: "+message);\n};\n\n// ---------------------------------------------------------------------------\n// Stylesheet Extensions (may be overridden by local StyleSheet)\n// ---------------------------------------------------------------------------\n//\nsetStylesheet(\n ".showDataError{color: #ffffff;background-color: #880000;}",\n "showData");\n\n\n} // of "install only once"\n// Used Globals (for JSLint) ==============\n\n// ... TiddlyWiki Core\n/*global createTiddlyElement, saveChanges, store, story, wikify */\n// ... DataTiddler\n/*global DataTiddler */\n// ... JSON\n/*global JSON */\n \n\n/***\n!JSON Code, used to serialize the data\n***/\n/*\nCopyright (c) 2005 JSON.org\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the "Software"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe Software shall be used for Good, not Evil.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\n/*\n The global object JSON contains two methods.\n\n JSON.stringify(value) takes a JavaScript value and produces a JSON text.\n The value must not be cyclical.\n\n JSON.parse(text) takes a JSON text and produces a JavaScript value. It will\n throw a 'JSONError' exception if there is an error.\n*/\nvar JSON = {\n copyright: '(c)2005 JSON.org',\n license: 'http://www.crockford.com/JSON/license.html',\n/*\n Stringify a JavaScript value, producing a JSON text.\n*/\n stringify: function (v) {\n var a = [];\n\n/*\n Emit a string.\n*/\n function e(s) {\n a[a.length] = s;\n }\n\n/*\n Convert a value.\n*/\n function g(x) {\n var c, i, l, v;\n\n switch (typeof x) {\n case 'object':\n if (x) {\n if (x instanceof Array) {\n e('[');\n l = a.length;\n for (i = 0; i < x.length; i += 1) {\n v = x[i];\n if (typeof v != 'undefined' &&\n typeof v != 'function') {\n if (l < a.length) {\n e(',');\n }\n g(v);\n }\n }\n e(']');\n return;\n } else if (typeof x.toString != 'undefined') {\n e('{');\n l = a.length;\n for (i in x) {\n v = x[i];\n if (x.hasOwnProperty(i) &&\n typeof v != 'undefined' &&\n typeof v != 'function') {\n if (l < a.length) {\n e(',');\n }\n g(i);\n e(':');\n g(v);\n }\n }\n return e('}');\n }\n }\n e('null');\n return;\n case 'number':\n e(isFinite(x) ? +x : 'null');\n return;\n case 'string':\n l = x.length;\n e('"');\n for (i = 0; i < l; i += 1) {\n c = x.charAt(i);\n if (c >= ' ') {\n if (c == '\s\s' || c == '"') {\n e('\s\s');\n }\n e(c);\n } else {\n switch (c) {\n case '\sb':\n e('\s\sb');\n break;\n case '\sf':\n e('\s\sf');\n break;\n case '\sn':\n e('\s\sn');\n break;\n case '\sr':\n e('\s\sr');\n break;\n case '\st':\n e('\s\st');\n break;\n default:\n c = c.charCodeAt();\n e('\s\su00' + Math.floor(c / 16).toString(16) +\n (c % 16).toString(16));\n }\n }\n }\n e('"');\n return;\n case 'boolean':\n e(String(x));\n return;\n default:\n e('null');\n return;\n }\n }\n g(v);\n return a.join('');\n },\n/*\n Parse a JSON text, producing a JavaScript value.\n*/\n parse: function (text) {\n var p = /^\ss*(([,:{}\s[\s]])|"(\s\s.|[^\sx00-\sx1f"\s\s])*"|-?\sd+(\s.\sd*)?([eE][+-]?\sd+)?|true|false|null)\ss*/,\n token,\n operator;\n\n function error(m, t) {\n throw {\n name: 'JSONError',\n message: m,\n text: t || operator || token\n };\n }\n\n function next(b) {\n if (b && b != operator) {\n error("Expected '" + b + "'");\n }\n if (text) {\n var t = p.exec(text);\n if (t) {\n if (t[2]) {\n token = null;\n operator = t[2];\n } else {\n operator = null;\n try {\n token = eval(t[1]);\n } catch (e) {\n error("Bad token", t[1]);\n }\n }\n text = text.substring(t[0].length);\n } else {\n error("Unrecognized token", text);\n }\n } else {\n token = operator = undefined;\n }\n }\n\n\n function val() {\n var k, o;\n switch (operator) {\n case '{':\n next('{');\n o = {};\n if (operator != '}') {\n for (;;) {\n if (operator || typeof token != 'string') {\n error("Missing key");\n }\n k = token;\n next();\n next(':');\n o[k] = val();\n if (operator != ',') {\n break;\n }\n next(',');\n }\n }\n next('}');\n return o;\n case '[':\n next('[');\n o = [];\n if (operator != ']') {\n for (;;) {\n o.push(val());\n if (operator != ',') {\n break;\n }\n next(',');\n }\n }\n next(']');\n return o;\n default:\n if (operator !== null) {\n error("Missing value");\n }\n k = token;\n next();\n return k;\n }\n }\n next();\n return val();\n }\n};\n\n/***\n!Setup the data serialization\n***/\n\nDataTiddler.format = "JSON";\nDataTiddler.stringify = JSON.stringify;\nDataTiddler.parse = JSON.parse;\n\n//}}}\n\n
Dianne S. Vance; Park City Middle School, Utah
!Dictionary\n\nTo develop a systematic approach to the collection of new ideas. Use when you want to find new ways to deal with a topic, problem, or question.\n\n * Formulate problem or question and describe it in detail to the group.\n * Have participants shout out solutions spontaneously. Write these down on a flip chart\n * Take the dictionary and randomly select one word from any page. Read the word and its definition aloud.\n * Based on this information, encourage the group to brainstorm new ideas and actions. List the suggestions on the flip chart\n * From the resulting list, select new ideas that will stimulate the discussion and planning process.\n\nNOTE: You can repeat this process several times, looking for other words in the dictionary
Dinner Plans"\n\nHave each person complete the following sentence:\n\n"If I could have dinner with any person, living or dead, it would be\n\n__________________________ because ___________________________."
Dos and Don’ts"\n\nHave participants introduce themselves, sharing their name, department, and either a "Do" or a "Don’t" tip for the topic being discussed. Post tips on a flip chart.
!Draw the music!\n\nTo provide a new perspective in approaching topics or problems. Use when the pace of the workshop is slowing down.\n\n * Formulate and characterize the topic, problem, or task to be brainstormed.\n * Distribute paper and markers to each participant.\n * Ask the group to listen to a piece of music and draw on their paper any feelings/impressions gained from the music. When they have finished the drawing, they may write on the side of the drawing some ideas or words which would lead to new ideas for finding a solution to the problem.\n * Bring participants into the plenary and ask them to share their drawings with the group.\n * List the ideas and put them on a flip chart\n * Assist the group to prioritise the ideas\n * Encourage the discussion/planning process to begin or restart\n
<!--{{{-->\n<!--- http://mptw.tiddlyspot.com/#MptwEditTemplate ($Rev: 1829 $) --->\n<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler closeOthers -cancelTiddler cancelCloseTiddler deleteTiddler"></div>\n<div class="title" macro="view title"></div>\n<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>\n<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>\n<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>\n<div macro="showWhenExists EditPanelTemplate">[[EditPanelTemplate]]</div>\n<div class="editor" macro="edit text"></div>\n<!--}}}-->\n
!Education\n
Energizers are intended to be quick and fun activities that get people moving, laughing, and at ease. They are ideal for the very outset of a meeting or whenever things are beginning to drag. They are also useful to use when coming off a break to help folks re-focus their attention on the group and away from whatever it was they were occupying themselves with during the break. Several such activities are described below (listed in alphabetical order).
!English
!English Lesson Plans
!Exchange Game\n How to do it:\n\n Each person receives an envelope containing 3 cards. (The same item is on each of the 3 cards, but different people get different items.) People mingle and trade cards to achieve some group goal, as defined by the facilitator.\n\n\n We designed the original version of this exercise as an icebreaker for a workshop on "Ethics in Development Work". We selected "resources" of value - not necessarily monetary - in development terms, such as wheat, arms, religion, computer technology, sugar, oil, cloves, tea, bananas, agricultural implements, rice, education. So one person had 3 tea cards, another had 3 religion cards, and so on. The goal of our session was to mingle and trade cards with the group aim of bringing about an equitable dispersal of resources throughout the room. This version has been used by us and others several times with very constructive results and rave reviews from participants. It tends to be a very efficient use of time, acting as an icebreaker, an informal introduction session, and a meaty lead- in to the topic. An interesting effect is that sometimes people behave other than their ethical stances would dictate; this can cause some interesting reactions and is great conversation fodder.\n\n\n 2. Variations:\n\n It occurs to us that this could be used in a more lighthearted way, with the resources being silly things - perhaps the ingredients for a party, with streamers and chicken wings and music being the sorts of items listed...though it wouldn't be as useful for a topical intro to the workshop (unless it was a workshop on entertaining...).\n\n It could also be a way of assigning tasks or groups or categories or other classifications to participants when this will be needed later in the program. Maybe cards could be colour coded: people would need to end up with one card of each colour though they might start out with cards of the same colour.\n\n We have thought of doing this with the card items being issues brought up in a preliminary session where items relevant to the group have been already listed in a brainstorming, NGT or similar activity.\n\n It might work as an icebreaker for a group working to consensus. The card items would be the varied concerns and personal interests involved in the decision. Dispersing them about the room, trading and sharing them might be a way to 1) help people symbolically give up ownership of some concerns and acknowledge the concerns of others, and 2) reitierate for the group the multiplicity of factors touching on their decision.\n\n 3. Some of our experiences with it:\n\n The first time we did this exercise, people furtively traded, then returned to their seats, clutching their cards. There was a faint air of competition. When all had finished, we asked "Is everyone content with their resources?" Many nodded, a few looked worried. "Is anyone here going to starve?" The worried ones nodded. The others remained silent.\n\n The second time, with a different group, people began to assign varying values to the cards. Three arms cards went for one money card. People began to group together, pooling their resources. At the end, there were several "republics" - groups of four or five, a number of pairs and trios, and a few lone souls. We asked the same question "Is anyone going to go hungry?" and one woman raised her hand. Immediately people asked to see her cards, inventoried theirs, and one of the larger groups passed her a card for a staple crop. One woman cleared her throat and said "I have a strange combination here", showing us 3 cards for arms, and two for money. One of the poorer republics handed her a sixth card - wisdom.\n\n If you try this exercise out, or any variation of it, please drop us a word to say how it went.\n\n Kyle Whitfield & Susan Rimkus\n Participatory Initiatives\n pi@tdg.uoguelph.ca\n
Experience Tally"\n\nAsk each participant how long they've been with the company or in their current job. Total the number of years. Point out that the class will have X number of years of experience on which to draw.
/***\n| Name:|ExtentTagButtonPlugin|\n| Description:|Adds a New tiddler button in the tag drop down|\n| Version:|3.0 ($Rev: 1845 $)|\n| Date:|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source:|http://mptw.tiddlyspot.com/#ExtendTagButtonPlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n***/\n//{{{\n\n// can't hijack a click handler. must redefine this entirely.\n// would be good to refactor in the core...\n// this version copied from 2.1.3 core\n\n// Event handler for clicking on a tiddler tag\nfunction onClickTag(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var popup = Popup.create(this);\n var tag = this.getAttribute("tag");\n var title = this.getAttribute("tiddler");\n if(popup && tag)\n {\n var tagged = store.getTaggedTiddlers(tag);\n var titles = [];\n var li,r;\n for(r=0;r<tagged.length;r++)\n if(tagged[r].title != title)\n titles.push(tagged[r].title);\n var lingo = config.views.wikified.tag;\n\n wikify("<<newTiddler label:'New tiddler' tag:"+tag+">>",createTiddlyElement(popup,"li")); // <---- the only modification\n\n if(titles.length > 0)\n {\n var openAll = createTiddlyButton(createTiddlyElement(popup,"li"),lingo.openAllText.format([tag]),lingo.openAllTooltip,onClickTagOpenAll);\n openAll.setAttribute("tag",tag);\n createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");\n for(r=0; r<titles.length; r++)\n {\n createTiddlyLink(createTiddlyElement(popup,"li"),titles[r],true);\n }\n }\n else\n createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),lingo.popupNone.format([tag]));\n createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");\n var h = createTiddlyLink(createTiddlyElement(popup,"li"),tag,false);\n createTiddlyText(h,lingo.openTag.format([tag]));\n }\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n\n//}}}\n\n
Fears"\n\nAsk each person to share his or her greatest concern about participating in the team building or training. Post fears on a flip chart. At the end of the session, revisit the list and ask the group to share whether their fears were realized.
Felt Hats\n\nEach participant is given a pre-made red felt donut-shaped circle of approximately 18 inches in diameter (Kathleen can be contacted if you would like either to borrow, or to learn how to make your own) and given the instruction to form some type of hat out of the felt piece. Participants are given enough time to make their hat, and each person explains the hat they created. This is a quick, and fun, way to "break the ice."\n\nFrom: Kathleen Winslow, Training and Development Coordinator, Campus Life, Cornell University, Ithaca, NY 14853
Find an Object\n\nObjectives:\n\nCreating an environment where it is safe for people to talk about who they are in a broader sense than might normally be socially acceptable.\n\nLearning about others in the group.\n\nDesign:\n\nGive participants 10 minutes to find an object that represents either how they feel today, what they aspire to, what their job feels like, what they'd like to let go of to be present---the possibilities are wide open.\n\nParticipants can either hold on to their object or put it on a cloth in the center of the room (this assume people are in a circle on the floor or in chairs).\n\nHave each participant share with the group what the object means to them. You can either go in order, let someone volunteer to be first and then go in order or let it go according to whoever is ready (this option often feels best).\n\nSome considerations:\n\nAbout size, I've done this with up to 16 people and it probably took 30 minutes. Most people don't go on very long.\n\nIt helps to have access to nature because of the greatly increased store of objects to be found there but I've also done it in homes. I think it could be done in an office environment if people had enough time to wander around looking for something.\n\nIt is helpful to emphasize that they don't have to find the ultimate object and they shouldn't think too hard about it but just let objects speak to them, e.g. whatever seems to catch their eye should be considered. This is also a good example of "challenge by choice" in that participants can choose how much they wish to share of their "inner life" based on the notion that learning requires some willingness to risk\n\nAlternative (from Bill Davis):\n\nEach participant introduces themselves and then shows the group an object they brought into the session (It could be from their pocket, purse, briefcase, etc.) They must then tell the group why that object is significant to who they are.
First Job"\n\nHave participants introduce themselves, sharing their name and something they learned on their first paying job.
Here are some examples that show the usage of the write action in the ForEachTiddlerMacro.\n\n//''Select and Sort Examples''//\n* InClauseExamples\n* WhereClauseExamples\n* SortClauseExamples\n* ScriptClauseExamples\n//''Action Examples''//\n* AddToListActionExamples\n* WriteActionExamples\n\n\nOf cause you may also combine the examples, e.g. taking the whereClause of one example, the sortClause of a second and the action of a third.
//~~(Part of the [[ForEachTiddlerPlugin]])~~//\n\nCreate customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.\n\n''Syntax:'' \n|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|\n|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|\n|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|\n|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|\n|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|\n|//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.|\n|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|\n|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|\n\n\n''Using JavaScript''\n\nTo give you a lot of flexibility the [[ForEachTiddlerMacro]] uses JavaScript in its arguments. Even if you are not that familiar with JavaScript you may find forEachTiddler useful. Just have a look at the various ready-to-use [[ForEachTiddlerExamples]] and adapt them to your needs.\n\n''The Elements of the Macro''\n\nThe arguments of the ForEachTiddlerMacro consist of multiple parts, each of them being optional.\n\n<<slider chkFETInClause [[inClause]] "inClause" "inClause">>\n<<slider chkFETWhereClause [[whereClause]] "whereClause" "whereClause">>\n<<slider chkFETSortClause [[sortClause]] "sortClause" "sortClause">>\n<<slider chkFETScriptClause [[scriptClause]] "scriptClause" "scriptClause">>\n<<slider chkFETActions [[Action Specification]] "Action Specification" "Action Specification">>\n\n''Using Macros and ">" inside the forEachTiddler Macro''\n\nYou may use other macro calls into the expression, especially in the actionParameters. To avoid that the {{{>>}}} of such a macro call is misinterpreted as the end of the {{{<<forEachTiddler...>>}}} macro you must escape the {{{>>}}} of the inner macro with {{{$))}}} E.g. if you want to use {{{<<tiddler ...>>}}} inside the {{{forEachTiddler}}} macro you have to write {{{<<tiddler ...$))}}}.\n\nIn addition it is necessary to escape single {{{>}}} with the text {{{$)}}}.\n\n\n\nSee also [[ForEachTiddlerExamples]].
!Force fit\n\nTo add competition to the creative process. to speed up a thinking/ brainstorming process. Use when the pace has slowed down.\n\n * Divide the plenary into two groups and select one person to take notes.\n * Formulate a topic for each group.\n * Ask each group to clarify all the aspects of the topic.\n * Ask one group to give a word or concept (so called imitation words) which has no link to the topic. The other group has two minutes to find a solution/answer based on this word. If the group finds a valuable solution, they receive two points, and they can pose a new word to the other group. If the group does not find a solution, the other group receives one point and can give the next imitating word.\n\nDebriefing In relation to the topic all solutions/ideas are listed, judged and selected for further elaboration.
<<formTiddler ReferencesTemplate>><data>{"booktitle":"new","author":"aa","webaddress":"aa","isbn":"aa","publisher":"aa","country":"aa","datepublication":"aa","tagreference":"aa","notes":"aa"}</data>
/***\n|''Name:''|ForEachTiddlerPlugin|\n|''Version:''|1.0.8 (2007-04-12)|\n|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|\n|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|\n|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|\n|''Copyright:''|&copy; 2005-2007 [[abego Software|http://www.abego-software.de]]|\n|''TiddlyWiki:''|1.2.38+, 2.0|\n|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|\n!Description\n\nCreate customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.\n\n''Syntax:'' \n|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|\n|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|\n|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|\n|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|\n|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|\n|//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.|\n|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|\n|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|\n\nSee details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].\n\n!Revision history\n* v1.0.8 (2007-04-12)\n** 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)\n* v1.0.7 (2007-03-28)\n** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)\n* v1.0.6 (2006-09-16)\n** 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.\n** Support "begin", "end" and "none" expressions in "write" action\n* v1.0.5 (2006-02-05)\n** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.\n** Support Firefox 1.5.0.1\n** Internal\n*** Make "JSLint" conform\n*** "Only install once"\n* v1.0.4 (2006-01-06)\n** Support TiddlyWiki 2.0\n* v1.0.3 (2005-12-22)\n** Features: \n*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) \n*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)\n** Enhancements:\n*** Improved error messages on InternetExplorer.\n* v1.0.2 (2005-12-10)\n** Features: \n*** context object also holds reference to store (TiddlyWiki)\n** Fixed Bugs: \n*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)\n* v1.0.1 (2005-12-08)\n** Features: \n*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".\n*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.\n*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).\n*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .\n*** Improved script evaluation (for where/sort clause and write scripts).\n* v1.0.0 (2005-11-20)\n** initial version\n\n!Code\n***/\n//{{{\n\n \n//============================================================================\n//============================================================================\n// ForEachTiddlerPlugin\n//============================================================================\n//============================================================================\n\n// Only install once\nif (!version.extensions.ForEachTiddlerPlugin) {\n\nif (!window.abego) window.abego = {};\n\nversion.extensions.ForEachTiddlerPlugin = {\n major: 1, minor: 0, revision: 8, \n date: new Date(2007,3,12), \n source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",\n licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",\n copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"\n};\n\n// For backward compatibility with TW 1.2.x\n//\nif (!TiddlyWiki.prototype.forEachTiddler) {\n TiddlyWiki.prototype.forEachTiddler = function(callback) {\n for(var t in this.tiddlers) {\n callback.call(this,t,this.tiddlers[t]);\n }\n };\n}\n\n//============================================================================\n// forEachTiddler Macro\n//============================================================================\n\nversion.extensions.forEachTiddler = {\n major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};\n\n// ---------------------------------------------------------------------------\n// Configurations and constants \n// ---------------------------------------------------------------------------\n\nconfig.macros.forEachTiddler = {\n // Standard Properties\n label: "forEachTiddler",\n prompt: "Perform actions on a (sorted) selection of tiddlers",\n\n // actions\n actions: {\n addToList: {},\n write: {}\n }\n};\n\n// ---------------------------------------------------------------------------\n// The forEachTiddler Macro Handler \n// ---------------------------------------------------------------------------\n\nconfig.macros.forEachTiddler.getContainingTiddler = function(e) {\n while(e && !hasClass(e,"tiddler"))\n e = e.parentNode;\n var title = e ? e.getAttribute("tiddler") : null; \n return title ? store.getTiddler(title) : null;\n};\n\nconfig.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n // config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);\n\n if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);\n // --- Parsing ------------------------------------------\n\n var i = 0; // index running over the params\n // Parse the "in" clause\n var tiddlyWikiPath = undefined;\n if ((i < params.length) && params[i] == "in") {\n i++;\n if (i >= params.length) {\n this.handleError(place, "TiddlyWiki path expected behind 'in'.");\n return;\n }\n tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");\n i++;\n }\n\n // Parse the where clause\n var whereClause ="true";\n if ((i < params.length) && params[i] == "where") {\n i++;\n whereClause = this.paramEncode((i < params.length) ? params[i] : "");\n i++;\n }\n\n // Parse the sort stuff\n var sortClause = null;\n var sortAscending = true; \n if ((i < params.length) && params[i] == "sortBy") {\n i++;\n if (i >= params.length) {\n this.handleError(place, "sortClause missing behind 'sortBy'.");\n return;\n }\n sortClause = this.paramEncode(params[i]);\n i++;\n\n if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {\n sortAscending = params[i] == "ascending";\n i++;\n }\n }\n\n // Parse the script\n var scriptText = null;\n if ((i < params.length) && params[i] == "script") {\n i++;\n scriptText = this.paramEncode((i < params.length) ? params[i] : "");\n i++;\n }\n\n // Parse the action. \n // When we are already at the end use the default action\n var actionName = "addToList";\n if (i < params.length) {\n if (!config.macros.forEachTiddler.actions[params[i]]) {\n this.handleError(place, "Unknown action '"+params[i]+"'.");\n return;\n } else {\n actionName = params[i]; \n i++;\n }\n } \n \n // Get the action parameter\n // (the parsing is done inside the individual action implementation.)\n var actionParameter = params.slice(i);\n\n\n // --- Processing ------------------------------------------\n try {\n this.performMacro({\n place: place, \n inTiddler: tiddler,\n whereClause: whereClause, \n sortClause: sortClause, \n sortAscending: sortAscending, \n actionName: actionName, \n actionParameter: actionParameter, \n scriptText: scriptText, \n tiddlyWikiPath: tiddlyWikiPath});\n\n } catch (e) {\n this.handleError(place, e);\n }\n};\n\n// Returns an object with properties "tiddlers" and "context".\n// tiddlers holds the (sorted) tiddlers selected by the parameter,\n// context the context of the execution of the macro.\n//\n// The action is not yet performed.\n//\n// @parameter see performMacro\n//\nconfig.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {\n\n var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);\n\n var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;\n context["tiddlyWiki"] = tiddlyWiki;\n \n // Get the tiddlers, as defined by the whereClause\n var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);\n context["tiddlers"] = tiddlers;\n\n // Sort the tiddlers, when sorting is required.\n if (parameter.sortClause) {\n this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);\n }\n\n return {tiddlers: tiddlers, context: context};\n};\n\n// Returns the (sorted) tiddlers selected by the parameter.\n//\n// The action is not yet performed.\n//\n// @parameter see performMacro\n//\nconfig.macros.forEachTiddler.getTiddlers = function(parameter) {\n return this.getTiddlersAndContext(parameter).tiddlers;\n};\n\n// Performs the macros with the given parameter.\n//\n// @param parameter holds the parameter of the macro as separate properties.\n// The following properties are supported:\n//\n// place\n// whereClause\n// sortClause\n// sortAscending\n// actionName\n// actionParameter\n// scriptText\n// tiddlyWikiPath\n//\n// All properties are optional. \n// For most actions the place property must be defined.\n//\nconfig.macros.forEachTiddler.performMacro = function(parameter) {\n var tiddlersAndContext = this.getTiddlersAndContext(parameter);\n\n // Perform the action\n var actionName = parameter.actionName ? parameter.actionName : "addToList";\n var action = config.macros.forEachTiddler.actions[actionName];\n if (!action) {\n this.handleError(parameter.place, "Unknown action '"+actionName+"'.");\n return;\n }\n\n var actionHandler = action.handler;\n actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);\n};\n\n// ---------------------------------------------------------------------------\n// The actions \n// ---------------------------------------------------------------------------\n\n// Internal.\n//\n// --- The addToList Action -----------------------------------------------\n//\nconfig.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {\n // Parse the parameter\n var p = 0;\n\n // Check for extra parameters\n if (parameter.length > p) {\n config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);\n return;\n }\n\n // Perform the action.\n var list = document.createElement("ul");\n place.appendChild(list);\n for (var i = 0; i < tiddlers.length; i++) {\n var tiddler = tiddlers[i];\n var listItem = document.createElement("li");\n list.appendChild(listItem);\n createTiddlyLink(listItem, tiddler.title, true);\n }\n};\n\nabego.parseNamedParameter = function(name, parameter, i) {\n var beginExpression = null;\n if ((i < parameter.length) && parameter[i] == name) {\n i++;\n if (i >= parameter.length) {\n throw "Missing text behind '%0'".format([name]);\n }\n \n return config.macros.forEachTiddler.paramEncode(parameter[i]);\n }\n return null;\n}\n\n// Internal.\n//\n// --- The write Action ---------------------------------------------------\n//\nconfig.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {\n // Parse the parameter\n var p = 0;\n if (p >= parameter.length) {\n this.handleError(place, "Missing expression behind 'write'.");\n return;\n }\n\n var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);\n p++;\n\n // Parse the "begin" option\n var beginExpression = abego.parseNamedParameter("begin", parameter, p);\n if (beginExpression !== null) \n p += 2;\n var endExpression = abego.parseNamedParameter("end", parameter, p);\n if (endExpression !== null) \n p += 2;\n var noneExpression = abego.parseNamedParameter("none", parameter, p);\n if (noneExpression !== null) \n p += 2;\n\n // Parse the "toFile" option\n var filename = null;\n var lineSeparator = undefined;\n if ((p < parameter.length) && parameter[p] == "toFile") {\n p++;\n if (p >= parameter.length) {\n this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");\n return;\n }\n \n filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));\n p++;\n if ((p < parameter.length) && parameter[p] == "withLineSeparator") {\n p++;\n if (p >= parameter.length) {\n this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");\n return;\n }\n lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);\n p++;\n }\n }\n \n // Check for extra parameters\n if (parameter.length > p) {\n config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);\n return;\n }\n\n // Perform the action.\n var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);\n var count = tiddlers.length;\n var text = "";\n if (count > 0 && beginExpression)\n text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);\n \n for (var i = 0; i < count; i++) {\n var tiddler = tiddlers[i];\n text += func(tiddler, context, count, i);\n }\n \n if (count > 0 && endExpression)\n text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);\n\n if (count == 0 && noneExpression) \n text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);\n \n\n if (filename) {\n if (lineSeparator !== undefined) {\n lineSeparator = lineSeparator.replace(/\s\sn/mg, "\sn").replace(/\s\sr/mg, "\sr");\n text = text.replace(/\sn/mg,lineSeparator);\n }\n saveFile(filename, convertUnicodeToUTF8(text));\n } else {\n var wrapper = createTiddlyElement(place, "span");\n wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);\n }\n};\n\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n// Internal.\n//\nconfig.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {\n return {\n place : placeParam, \n whereClause : whereClauseParam, \n sortClause : sortClauseParam, \n sortAscending : sortAscendingParam, \n script : scriptText,\n actionName : actionNameParam, \n actionParameter : actionParameterParam,\n tiddlyWikiPath : tiddlyWikiPathParam,\n inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.\n viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result\n };\n};\n\n// Internal.\n//\n// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of \n// the given path.\n//\nconfig.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {\n if (!idPrefix) {\n idPrefix = "store";\n }\n var lenPrefix = idPrefix.length;\n \n // Read the content of the given file\n var content = loadFile(this.getLocalPath(path));\n if(content === null) {\n throw "TiddlyWiki '"+path+"' not found.";\n }\n \n var tiddlyWiki = new TiddlyWiki();\n\n // Starting with TW 2.2 there is a helper function to import the tiddlers\n if (tiddlyWiki.importTiddlyWiki) {\n if (!tiddlyWiki.importTiddlyWiki(content))\n throw "File '"+path+"' is not a TiddlyWiki.";\n tiddlyWiki.dirty = false;\n return tiddlyWiki;\n }\n \n // The legacy code, for TW < 2.2\n \n // Locate the storeArea div's\n var posOpeningDiv = content.indexOf(startSaveArea);\n var posClosingDiv = content.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1)) {\n throw "File '"+path+"' is not a TiddlyWiki.";\n }\n var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);\n \n // Create a "div" element that contains the storage text\n var myStorageDiv = document.createElement("div");\n myStorageDiv.innerHTML = storageText;\n myStorageDiv.normalize();\n \n // Create all tiddlers in a new TiddlyWiki\n // (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)\n var store = myStorageDiv.childNodes;\n for(var t = 0; t < store.length; t++) {\n var e = store[t];\n var title = null;\n if(e.getAttribute)\n title = e.getAttribute("tiddler");\n if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)\n title = e.id.substr(lenPrefix);\n if(title && title !== "") {\n var tiddler = tiddlyWiki.createTiddler(title);\n tiddler.loadFromDiv(e,title);\n }\n }\n tiddlyWiki.dirty = false;\n\n return tiddlyWiki;\n};\n\n\n \n// Internal.\n//\n// Returns a function that has a function body returning the given javaScriptExpression.\n// The function has the parameters:\n// \n// (tiddler, context, count, index)\n//\nconfig.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {\n var script = context["script"];\n var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";\n var fullText = (script ? script+";" : "")+functionText+";theFunction;";\n return eval(fullText);\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {\n var result = [];\n var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);\n tiddlyWiki.forEachTiddler(function(title,tiddler) {\n if (func(tiddler, context, undefined, undefined)) {\n result.push(tiddler);\n }\n });\n return result;\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {\n var message = "Extra parameter behind '"+actionName+"':";\n for (var i = firstUnusedIndex; i < parameter.length; i++) {\n message += " "+parameter[i];\n }\n this.handleError(place, message);\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {\n var result = \n (tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) \n ? 0\n : (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)\n ? -1 \n : +1; \n return result;\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {\n var result = \n (tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) \n ? 0\n : (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)\n ? +1 \n : -1; \n return result;\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {\n // To avoid evaluating the sortClause whenever two items are compared \n // we pre-calculate the sortValue for every item in the array and store it in a \n // temporary property ("forEachTiddlerSortValue") of the tiddlers.\n var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);\n var count = tiddlers.length;\n var i;\n for (i = 0; i < count; i++) {\n var tiddler = tiddlers[i];\n tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);\n }\n\n // Do the sorting\n tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);\n\n // Delete the temporary property that holds the sortValue. \n for (i = 0; i < tiddlers.length; i++) {\n delete tiddlers[i].forEachTiddlerSortValue;\n }\n};\n\n\n// Internal.\n//\nconfig.macros.forEachTiddler.trace = function(message) {\n displayMessage(message);\n};\n\n// Internal.\n//\nconfig.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {\n var message ="<<"+macroName;\n for (var i = 0; i < params.length; i++) {\n message += " "+params[i];\n }\n message += ">>";\n displayMessage(message);\n};\n\n\n// Internal.\n//\n// Creates an element that holds an error message\n// \nconfig.macros.forEachTiddler.createErrorElement = function(place, exception) {\n var message = (exception.description) ? exception.description : exception.toString();\n return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);\n};\n\n// Internal.\n//\n// @param place [may be null]\n//\nconfig.macros.forEachTiddler.handleError = function(place, exception) {\n if (place) {\n this.createErrorElement(place, exception);\n } else {\n throw exception;\n }\n};\n\n// Internal.\n//\n// Encodes the given string.\n//\n// Replaces \n// "$))" to ">>"\n// "$)" to ">"\n//\nconfig.macros.forEachTiddler.paramEncode = function(s) {\n var reGTGT = new RegExp("\s\s$\s\s)\s\s)","mg");\n var reGT = new RegExp("\s\s$\s\s)","mg");\n return s.replace(reGTGT, ">>").replace(reGT, ">");\n};\n\n// Internal.\n//\n// Returns the given original path (that is a file path, starting with "file:")\n// as a path to a local file, in the systems native file format.\n//\n// Location information in the originalPath (i.e. the "#" and stuff following)\n// is stripped.\n// \nconfig.macros.forEachTiddler.getLocalPath = function(originalPath) {\n // Remove any location part of the URL\n var hashPos = originalPath.indexOf("#");\n if(hashPos != -1)\n originalPath = originalPath.substr(0,hashPos);\n // Convert to a native file format assuming\n // "file:///x:/path/path/path..." - pc local file --> "x:\spath\spath\spath..."\n // "file://///server/share/path/path/path..." - FireFox pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n // "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."\n // "file://server/share/path/path/path..." - pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n var localPath;\n if(originalPath.charAt(9) == ":") // pc local file\n localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file:///") === 0) // mac/unix local file\n localPath = unescape(originalPath.substr(7));\n else if(originalPath.indexOf("file:/") === 0) // mac/unix local file\n localPath = unescape(originalPath.substr(5));\n else // pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\s\s"); \n return localPath;\n};\n\n// ---------------------------------------------------------------------------\n// Stylesheet Extensions (may be overridden by local StyleSheet)\n// ---------------------------------------------------------------------------\n//\nsetStylesheet(\n ".forEachTiddlerError{color: #ffffff;background-color: #880000;}",\n "forEachTiddler");\n\n//============================================================================\n// End of forEachTiddler Macro\n//============================================================================\n\n\n//============================================================================\n// String.startsWith Function\n//============================================================================\n//\n// Returns true if the string starts with the given prefix, false otherwise.\n//\nversion.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nString.prototype.startsWith = function(prefix) {\n var n = prefix.length;\n return (this.length >= n) && (this.slice(0, n) == prefix);\n};\n\n\n\n//============================================================================\n// String.endsWith Function\n//============================================================================\n//\n// Returns true if the string ends with the given suffix, false otherwise.\n//\nversion.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nString.prototype.endsWith = function(suffix) {\n var n = suffix.length;\n return (this.length >= n) && (this.right(n) == suffix);\n};\n\n\n//============================================================================\n// String.contains Function\n//============================================================================\n//\n// Returns true when the string contains the given substring, false otherwise.\n//\nversion.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nString.prototype.contains = function(substring) {\n return this.indexOf(substring) >= 0;\n};\n\n//============================================================================\n// Array.indexOf Function\n//============================================================================\n//\n// Returns the index of the first occurance of the given item in the array or \n// -1 when no such item exists.\n//\n// @param item [may be null]\n//\nversion.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.indexOf = function(item) {\n for (var i = 0; i < this.length; i++) {\n if (this[i] == item) {\n return i;\n }\n }\n return -1;\n};\n\n//============================================================================\n// Array.contains Function\n//============================================================================\n//\n// Returns true when the array contains the given item, otherwise false. \n//\n// @param item [may be null]\n//\nversion.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.contains = function(item) {\n return (this.indexOf(item) >= 0);\n};\n\n//============================================================================\n// Array.containsAny Function\n//============================================================================\n//\n// Returns true when the array contains at least one of the elements \n// of the item. Otherwise (or when items contains no elements) false is returned.\n//\nversion.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.containsAny = function(items) {\n for(var i = 0; i < items.length; i++) {\n if (this.contains(items[i])) {\n return true;\n }\n }\n return false;\n};\n\n\n//============================================================================\n// Array.containsAll Function\n//============================================================================\n//\n// Returns true when the array contains all the items, otherwise false.\n// \n// When items is null false is returned (even if the array contains a null).\n//\n// @param items [may be null] \n//\nversion.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};\n//\nArray.prototype.containsAll = function(items) {\n for(var i = 0; i < items.length; i++) {\n if (!this.contains(items[i])) {\n return false;\n }\n }\n return true;\n};\n\n\n} // of "install only once"\n\n// Used Globals (for JSLint) ==============\n// ... DOM\n/*global document */\n// ... TiddlyWiki Core\n/*global convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink, \n displayMessage, endSaveArea, hasClass, loadFile, saveFile, \n startSaveArea, store, wikify */\n//}}}\n\n\n/***\n!Licence and Copyright\nCopyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this\nlist of conditions and the following disclaimer in the documentation and/or other\nmaterials provided with the distribution.\n\nNeither the name of abego Software nor the names of its contributors may be\nused to endorse or promote products derived from this software without specific\nprior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n***/\n\n
A FormTemplate is used with the [[FormTiddlerPlugin]]. It is a tiddler that contains one or more HTML INPUT elements and defines the layout of a form. \n\nOther tiddlers can reference a FormTemplate through the [[FormTiddlerMacro]].\n\n(See [[FormTiddler Introduction]])
|!Example|!Comment|\n|[[SimpleForm|SimpleForm (Card 1)]]|Three forms, using a simple template with "username" and "password" fields|\n|[[BiggerForm|BiggerForm (Card 1)]]|Three forms, using a template with all supported Form input elements|\n|[[Bugreports]]|Use forms and filtered lists to maintain bug reports|\n|[[Contacts|JoeBlock]]|Manage your contacts in forms|\n
The [[FormTiddlerPlugin]] allows you to enter your data in a form and store the form's data in your tiddlers.\n\n(For more information on tiddler data see the [[DataTiddlerPlugin]].)\n\n//''Define ~FormTemplate''//\n\nWhen you want to enter data in a form you first have to define a [[FormTemplate]] tiddler. A FormTemplate tiddler is a tiddler that contains named HTML INPUT elements (such as textfields, password fields, lists etc.) that define the stuff that should be edited in the form. E.g. you may have a FormTemplate that looks like this:\n\n<html>\n <b>Name:</b><br/>\n <input name=userName type=text /><br/>\n <b>Password:</b><br/>\n <input name=pwd type=password /><br/>\n</html>\n\nThe correspond HTML text looks like this\n{{{\n<html>\n <b>Name:</b><br/>\n <input name=userName type=text /><br/>\n <b>Password:</b><br/>\n <input name=pwd type=password /><br/>\n</html>\n}}}\n\nThe name of the INPUT element is also the name of the data field it is editing. E.g. a text field defined like this: \n{{{\n<input name=userName type=text />\n}}}\nwill edit the data field "userName" of the tiddler.\n\n\nYou are free to layout the INPUT elements as you like, but don't add a "form" element around them and don't define 'onchange' handlers, since this will be done automatically by the {{{<<formTiddler ...>>}}} macro.\n\n\n//''Use ~FormTemplates (through the {{{<<formTiddler ...>>}}} macro)''//\n\nIn a second step you add the {{{<<formTiddler ...>>}}} macro to tiddlers that should be edited. In the macro you are referencing the [[FormTemplate]] that should be used to edit the tiddler's data. You may refer to the same FormTemplate tiddler in as many tiddlers as you like. Every such tiddler displays the same INPUT elements as the FormTemplate, but with the "data" of each individual tiddler.\n\nIn addition you may more than one {{{<<formTiddler...>>}}} macro call in one tiddler. Just make sure that the names of the elements in the referenced FormTemplate tiddlers do not collide. This feature may be useful if you want to construct a larger input form from a set of smaller FormTemplates.\n\nYou can easily create tiddlers with an embedded {{{<<formTiddler...>>}}} macro call using the [[<<newTiddlerWithForm...>>|NewTiddlerWithFormMacro]] macro. The macro shows a button similar to the "new tiddler" button and creates the requested tiddler, ready to enter data. For details see NewTiddlerWithFormMacro.\n\n\n//''"Structured" and "Free" Data''//\n\nTypically you will edit a tiddler that uses the {{{<<formTiddler...>>}}} macro through the form. But you are free to also edit the tiddler "as usual", through the build-in edit feature. I.e. you may mix "structured data" (as entered through the form) with "free data". I.e. on a "Contact" tiddler you may add an image to the tiddler, or add extra links to related persons. Or you add more tags. Just make sure that you don't modify the {{{<data>...</data>}}} section of the tiddler, since this contains the data maintained by the form.\n\nAlso notice that since the data entered in the forms is stored in the tiddler's text (in the {{{<data>...</data>}}} section) using the "search" feature will also find the texts you entered in the forms (even though it will not hilite the texts in the fields).\n\n\n//''Applications''//\n\nUsing the [[FormTiddlerPlugin]] it is easy to manage things like:\n* [[Contacts]]\n* [[Bugreports]]\n* ~ToDo Lists\n* and many more.\n\nSince a FormTemplate is typically used for many tiddlers of the same kind you may also consider using the ForEachTiddlerMacro to collect data across multiple tiddlers (e.g. to get a list of all contacts, a summary page for the bug reports etc.)\n\n(See also [[FormTiddler Examples]])\n\n\n//''HTML Elements''//\n\nFor those not that familiar with the HTML INPUT elements here a short overview with HTML snippets. \n|!Type|!HTML Example|!Comment|\n|button|{{{<input name=btn type=button value="Just a button" />}}}|no data|\n|checkbox|{{{<input name=isVIP type=checkbox />is VIP}}}||\n|file|{{{<input name=attachment type=file />}}}|The "file" input element typically does not restore the path of the previously selected file. Nevertheless the path of the file is stored in the tiddler.|\n|hidden|{{{<input name=hiddenValue type=hidden value="This is a hidden value" />}}}||\n|password|{{{<input name=pwd type=password />}}}|The data entered in a "password" field is stored as clear text in the tiddler.|\n|radio|{{{<input name=level type=radio value="Beginner" />Beginner<input name=level type=radio value="Expert" />Expert<input name=level type=radio value="Guru" />Guru}}}||\n|reset|{{{<input name=btnReset type=reset />}}}|no data|\n|select-one|{{{<select name=browser ><option>Firefox<option>Internet Explorer<option>Opera<option>Other</select >}}}||\n|select-multiple|{{{<select name=music MULTIPLE ><option> R&B <option> Jazz <option> Blues <option> New Age</select >}}}||\n|submit|{{{<input name=btnSubmit type=submit />}}}|no data|\n|text|{{{<input name=userName type=text/>}}}||\n|textarea|{{{<TEXTAREA name=notes rows=4 cols=80 ></TEXTAREA>}}}||\n\nFor details consult the Web or a textbook on HTML editing.
The {{{<<formTiddler ...>>}}} macro defined by the FormTiddlerPlugin. \n\nWhen a tiddler T1 references the (FormTemplate) tiddler T2 in the FormTiddlerMacro, the data of T1 can be edited through the INPUT elements defined by T2.
Gimnasia Cerebral, Lux Maria Ibarra, Garnik Ediciones, Mexico, 1999, ISBN 970-91879-0-2
!Glomalina\n[[aquivo DOC|Themes-Handouts/Portugues/Solos/Glomalin.doc]]
/***\n<<checkForDataTiddlerPlugin>>\n|''Name:''|FormTiddlerPlugin|\n|''Version:''|1.0.5 (2006-02-24)|\n|''Source:''|http://tiddlywiki.abego-software.de/#FormTiddlerPlugin|\n|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|\n|''Licence:''|[[BSD open source license]]|\n|''Macros:''|formTiddler, checkForDataTiddlerPlugin, newTiddlerWithForm|\n|''Requires:''|DataTiddlerPlugin|\n|''TiddlyWiki:''|1.2.38+, 2.0|\n|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|\n!Description\nUse form-based tiddlers to enter your tiddler data using text fields, listboxes, checkboxes etc. (All standard HTML Form input elements supported).\n\n''Syntax:'' \n|>|{{{<<}}}''formTiddler'' //tiddlerName//{{{>>}}}|\n|//tiddlerName//|The name of the FormTemplate tiddler to be used to edit the data of the tiddler containing the macro.|\n\n|>|{{{<<}}}''newTiddlerWithForm'' //formTemplateName// //buttonLabel// [//titleExpression// [''askUser'']] {{{>>}}}|\n|//formTemplateName//|The name of the tiddler that defines the form the new tiddler should use.|\n|//buttonLabel//|The label of the button|\n|//titleExpression//|A (quoted) JavaScript String expression that defines the title (/name) of the new tiddler.|\n|''askUser''|Typically the user is not asked for the title when a title is specified (and not yet used). When ''askUser'' is given the user will be asked in any case. This may be used when the calculated title is just a suggestion that must be confirmed by the user|\n|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|\n\nFor details and how to use the macros see the [[introduction|FormTiddler Introduction]] and the [[examples|FormTiddler Examples]].\n\n!Revision history\n* v1.0.5 (2006-02-24)\n** Removed "debugger;" instruction\n* v1.0.4 (2006-02-07)\n** Bug: On IE no data is written to data section when field values changed (thanks to KenGirard for reporting)\n* v1.0.3 (2006-02-05)\n** Bug: {{{"No form template specified in <<formTiddler>>"}}} when using formTiddler macro on InternetExplorer (thanks to KenGirard for reporting)\n* v1.0.2 (2006-01-06)\n** Support TiddlyWiki 2.0\n* v1.0.1 (2005-12-22)\n** Features: \n*** Support InternetExplorer\n*** Added newTiddlerWithForm Macro\n* v1.0.0 (2005-12-14)\n** initial version\n\n!Code\n***/\n//{{{\n\n//============================================================================\n//============================================================================\n// FormTiddlerPlugin\n//============================================================================\n//============================================================================\n\n\nversion.extensions.FormTiddlerPlugin = {\n major: 1, minor: 0, revision: 5,\n date: new Date(2006, 2, 24), \n type: 'plugin',\n source: "http://tiddlywiki.abego-software.de/#FormTiddlerPlugin"\n};\n\n// For backward compatibility with v1.2.x\n//\nif (!window.story) window.story=window; \nif (!TiddlyWiki.prototype.getTiddler) TiddlyWiki.prototype.getTiddler = function(title) { return t = this.tiddlers[title]; return (t != undefined && t instanceof Tiddler) ? t : null; } \n\n//============================================================================\n// formTiddler Macro\n//============================================================================\n\n// -------------------------------------------------------------------------------\n// Configurations and constants \n// -------------------------------------------------------------------------------\n\nconfig.macros.formTiddler = {\n // Standard Properties\n label: "formTiddler",\n version: {major: 1, minor: 0, revision: 4, date: new Date(2006, 2, 7)},\n prompt: "Edit tiddler data using forms",\n\n // Define the "setters" that set the values of INPUT elements of a given type\n // (must match the corresponding "getter")\n setter: { \n button: function(e, value) {/*contains no data */ },\n checkbox: function(e, value) {e.checked = value;},\n file: function(e, value) {try {e.value = value;} catch(e) {/* ignore, possibly security error*/}},\n hidden: function(e, value) {e.value = value;},\n password: function(e, value) {e.value = value;},\n radio: function(e, value) {e.checked = (e.value == value);},\n reset: function(e, value) {/*contains no data */ },\n "select-one": function(e, value) {config.macros.formTiddler.setSelectOneValue(e,value);},\n "select-multiple": function(e, value) {config.macros.formTiddler.setSelectMultipleValue(e,value);},\n submit: function(e, value) {/*contains no data */},\n text: function(e, value) {e.value = value;},\n textarea: function(e, value) {e.value = value;}\n },\n\n // Define the "getters" that return the value of INPUT elements of a given type\n // Return undefined to not store any data.\n getter: { \n button: function(e, value) {return undefined;},\n checkbox: function(e, value) {return e.checked;},\n file: function(e, value) {return e.value;},\n hidden: function(e, value) {return e.value;},\n password: function(e, value) {return e.value;},\n radio: function(e, value) {return e.checked ? e.value : undefined;},\n reset: function(e, value) {return undefined;},\n "select-one": function(e, value) {return config.macros.formTiddler.getSelectOneValue(e);},\n "select-multiple": function(e, value) {return config.macros.formTiddler.getSelectMultipleValue(e);},\n submit: function(e, value) {return undefined;},\n text: function(e, value) {return e.value;},\n textarea: function(e, value) {return e.value;}\n }\n};\n\n\n// -------------------------------------------------------------------------------\n// The formTiddler Macro Handler \n// -------------------------------------------------------------------------------\n\nconfig.macros.formTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n if (!config.macros.formTiddler.checkForExtensions(place, macroName)) {\n return;\n }\n \n // --- Parsing ------------------------------------------\n\n var i = 0; // index running over the params\n\n // get the name of the form template tiddler\n var formTemplateName = undefined;\n if (i < params.length) {\n formTemplateName = params[i];\n i++;\n }\n\n if (!formTemplateName) {\n config.macros.formTiddler.createErrorElement(place, "No form template specified in <<" + macroName + ">>.");\n return;\n }\n\n\n // --- Processing ------------------------------------------\n\n // Get the form template text. \n // (This contains the INPUT elements for the form.)\n var formTemplateTiddler = store.getTiddler(formTemplateName);\n if (!formTemplateTiddler) {\n config.macros.formTiddler.createErrorElement(place, "Form template '" + formTemplateName + "' not found.");\n return;\n }\n var templateText = formTemplateTiddler.text;\n if(!templateText) {\n // Shortcut: when template text is empty we do nothing.\n return;\n }\n\n // Get the name of the tiddler containing this "formTiddler" macro\n // (i.e. the tiddler, that will be edited and that contains the data)\n var tiddlerName = config.macros.formTiddler.getContainingTiddlerName(place);\n\n // Append a "form" element. \n var formName = "form"+formTemplateName+"__"+tiddlerName;\n var e = document.createElement("form");\n e.setAttribute("name", formName);\n place.appendChild(e);\n\n // "Embed" the elements defined by the templateText (i.e. the INPUT elements) \n // into the "form" element we just created\n wikify(templateText, e);\n\n // Initialize the INPUT elements.\n config.macros.formTiddler.initValuesAndHandlersInFormElements(formName, DataTiddler.getDataObject(tiddlerName));\n}\n\n\n// -------------------------------------------------------------------------------\n// Form Data Access \n// -------------------------------------------------------------------------------\n\n// Internal.\n//\n// Initialize the INPUT elements of the form with the values of their "matching"\n// data fields in the tiddler. Also setup the onChange handler to ensure that\n// changes in the INPUT elements are stored in the tiddler's data.\n//\nconfig.macros.formTiddler.initValuesAndHandlersInFormElements = function(formName, data) {\n // config.macros.formTiddler.trace("initValuesAndHandlersInFormElements(formName="+formName+", data="+data+")");\n\n // find the form\n var form = config.macros.formTiddler.findForm(formName);\n if (!form) {\n return;\n }\n\n try {\n var elems = form.elements;\n for (var i = 0; i < elems.length; i++) {\n var c = elems[i];\n \n var setter = config.macros.formTiddler.setter[c.type];\n if (setter) {\n var value = data[c.name];\n if (value != null) {\n setter(c, value);\n }\n c.onchange = onFormTiddlerChange;\n } else {\n config.macros.formTiddler.displayFormTiddlerError("No setter defined for INPUT element of type '"+c.type+"'. (Element '"+c.name+"' in form '"+formName+"')");\n }\n }\n } catch(e) {\n config.macros.formTiddler.displayFormTiddlerError("Error when updating elements with new formData. "+e);\n }\n}\n\n\n// Internal.\n//\n// @return [may be null]\n//\nconfig.macros.formTiddler.findForm = function(formName) {\n // We must manually iterate through the document's forms, since\n // IE does not support the "document[formName]" approach\n\n var forms = window.document.forms;\n for (var i = 0; i < forms.length; i++) {\n var form = forms[i];\n if (form.name == formName) {\n return form;\n }\n }\n\n return null;\n}\n\n\n// Internal.\n//\nconfig.macros.formTiddler.setSelectOneValue = function(element,value) {\n var n = element.options.length;\n for (var i = 0; i < n; i++) {\n element.options[i].selected = element.options[i].value == value;\n }\n}\n\n// Internal.\n//\nconfig.macros.formTiddler.setSelectMultipleValue = function(element,value) {\n var values = {};\n for (var i = 0; i < value.length; i++) {\n values[value[i]] = true;\n }\n \n var n = element.length;\n for (var i = 0; i < n; i++) {\n element.options[i].selected = !(!values[element.options[i].value]);\n }\n}\n\n// Internal.\n//\nconfig.macros.formTiddler.getSelectOneValue = function(element) {\n var i = element.selectedIndex;\n return (i >= 0) ? element.options[i].value : null;\n}\n\n// Internal.\n//\nconfig.macros.formTiddler.getSelectMultipleValue = function(element) {\n var values = [];\n var n = element.length;\n for (var i = 0; i < n; i++) {\n if (element.options[i].selected) {\n values.push(element.options[i].value);\n }\n }\n return values;\n}\n\n\n\n// -------------------------------------------------------------------------------\n// Helpers \n// -------------------------------------------------------------------------------\n\n// Internal.\n//\nconfig.macros.formTiddler.checkForExtensions = function(place,macroName) {\n if (!version.extensions.DataTiddlerPlugin) {\n config.macros.formTiddler.createErrorElement(place, "<<" + macroName + ">> requires the DataTiddlerPlugin. (You can get it from http://tiddlywiki.abego-software.de/#DataTiddlerPlugin)");\n return false;\n }\n return true;\n}\n\n// Internal.\n//\n// Displays a trace message in the "TiddlyWiki" message pane.\n// (used for debugging)\n//\nconfig.macros.formTiddler.trace = function(s) {\n displayMessage("Trace: "+s);\n}\n\n// Internal.\n//\n// Display some error message in the "TiddlyWiki" message pane.\n//\nconfig.macros.formTiddler.displayFormTiddlerError = function(s) {\n alert("FormTiddlerPlugin Error: "+s);\n}\n\n// Internal.\n//\n// Creates an element that holds an error message\n// \nconfig.macros.formTiddler.createErrorElement = function(place, message) {\n return createTiddlyElement(place,"span",null,"formTiddlerError",message);\n}\n\n// Internal.\n//\n// Returns the name of the tiddler containing the given element.\n// \nconfig.macros.formTiddler.getContainingTiddlerName = function(element) {\n return story.findContainingTiddler(element).id.substr(7);\n}\n\n// -------------------------------------------------------------------------------\n// Event Handlers \n// -------------------------------------------------------------------------------\n\n// This function must be called by the INPUT elements whenever their\n// data changes. Typically this is done through an "onChange" handler.\n//\nfunction onFormTiddlerChange (e) {\n // config.macros.formTiddler.trace("onFormTiddlerChange "+e);\n\n if (!e) var e = window.event;\n\n var target = resolveTarget(e);\n var tiddlerName = config.macros.formTiddler.getContainingTiddlerName(target);\n var getter = config.macros.formTiddler.getter[target.type];\n if (getter) {\n var value = getter(target);\n DataTiddler.setData(tiddlerName, target.name, value);\n } else {\n config.macros.formTiddler.displayFormTiddlerError("No getter defined for INPUT element of type '"+target.type+"'. (Element '"+target.name+"' used in tiddler '"+tiddlerName+"')");\n }\n}\n\n// ensure that the function can be used in HTML event handler\nwindow.onFormTiddlerChange = onFormTiddlerChange;\n\n\n// -------------------------------------------------------------------------------\n// Stylesheet Extensions (may be overridden by local StyleSheet)\n// -------------------------------------------------------------------------------\n\nsetStylesheet(\n ".formTiddlerError{color: #ffffff;background-color: #880000;}",\n "formTiddler");\n\n\n//============================================================================\n// checkForDataTiddlerPlugin Macro\n//============================================================================\n\nconfig.macros.checkForDataTiddlerPlugin = {\n // Standard Properties\n label: "checkForDataTiddlerPlugin",\n version: {major: 1, minor: 0, revision: 0, date: new Date(2005, 12, 14)},\n prompt: "Check if the DataTiddlerPlugin exists"\n}\n\nconfig.macros.checkForDataTiddlerPlugin.handler = function(place,macroName,params) {\n config.macros.formTiddler.checkForExtensions(place, config.macros.formTiddler.label);\n}\n\n\n\n//============================================================================\n// newTiddlerWithForm Macro\n//============================================================================\n\nconfig.macros.newTiddlerWithForm = {\n // Standard Properties\n label: "newTiddlerWithForm",\n version: {major: 1, minor: 0, revision: 1, date: new Date(2006, 1, 6)},\n prompt: "Creates a new Tiddler with a <<formTiddler ...>> macro"\n}\n\nconfig.macros.newTiddlerWithForm.handler = function(place,macroName,params) {\n // --- Parsing ------------------------------------------\n\n var i = 0; // index running over the params\n\n // get the name of the form template tiddler\n var formTemplateName = undefined;\n if (i < params.length) {\n formTemplateName = params[i];\n i++;\n }\n\n if (!formTemplateName) {\n config.macros.formTiddler.createErrorElement(place, "No form template specified in <<" + macroName + ">>.");\n return;\n }\n\n // get the button label\n var buttonLabel = undefined;\n if (i < params.length) {\n buttonLabel = params[i];\n i++;\n }\n\n if (!buttonLabel) {\n config.macros.formTiddler.createErrorElement(place, "No button label specified in <<" + macroName + ">>.");\n return;\n }\n\n // get the (optional) tiddlerName script and "askUser"\n var tiddlerNameScript = undefined;\n var askUser = false;\n if (i < params.length) {\n tiddlerNameScript = params[i];\n i++;\n\n if (i < params.length && params[i] == "askUser") {\n askUser = true;\n i++;\n }\n }\n\n // --- Processing ------------------------------------------\n\n if(!readOnly) {\n var onClick = function() {\n var tiddlerName;\n if (tiddlerNameScript) {\n try {\n tiddlerName = eval(tiddlerNameScript);\n } catch (ex) {\n }\n }\n if (!tiddlerName || askUser) {\n tiddlerName = prompt("Please specify a tiddler name.", askUser ? tiddlerName : "");\n }\n while (tiddlerName && store.getTiddler(tiddlerName)) {\n tiddlerName = prompt("A tiddler named '"+tiddlerName+"' already exists.\sn\sn"+"Please specify a tiddler name.", tiddlerName);\n }\n\n // tiddlerName is either null (user canceled) or a name that is not yet in the store.\n if (tiddlerName) {\n var body = "<<formTiddler [["+formTemplateName+"]]>>";\n var tags = [];\n store.saveTiddler(tiddlerName,tiddlerName,body,config.options.txtUserName,new Date(),tags);\n story.displayTiddler(null,tiddlerName,1);\n }\n }\n\n createTiddlyButton(place,buttonLabel,buttonLabel,onClick);\n }\n}\n\n//}}}\n\n\n/***\n!Licence and Copyright\nCopyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this\nlist of conditions and the following disclaimer in the documentation and/or other\nmaterials provided with the distribution.\n\nNeither the name of abego Software nor the names of its contributors may be\nused to endorse or promote products derived from this software without specific\nprior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n***/\n
Good or New"\n\nAsk each person to share something good or new they have experienced in the last 24 hours.
Tape a large piece of freezer paper to one wall (long enough for all participants to write on it at the same time). Have each participant draw a picture representing what they learned in the training. Then have others guess what each picture represents.
Guess Who"\n\nPrior to the session have each participant complete and return to you a survey with 5-7 questions about him or herself. For example:\n\n o Favorite type of food\n o Best all-time TV show\n o Last movie you saw\n o Last book you read\n o Dream vacation\n\nDuring the session, read the clues and have the rest of the class guess which person is being described.
Ha\n\nThis exercise asks the participants to pass the word 'ha' around a circle. This activity is generally more effective when used during the later stage of the training program or session.\n\nTime Reference: Approximately 5 to 7 minutes.\n\nGroup Size: Best suited for a group of 20 or fewer participants.\n\nSpace Required: A room that has the potential for flexible seating.\n\nMaterial Needed: None.\n\n1. The trainer first asks the group members to form a circular seating arrangement.\n\n2. When the participants are seated. the group leader explains that the object of this game is for the participants, without laughing, to pass the word "ha" around the circle.\n\n3. The trainer then designates one participant to be the head of the circle. That participant begins the game by saving "ha".\n\n4. The person sitting to his or her right must repeat the "ha" and then say another "ha." The third person must say ha. ha and then given an additional "ha." In this manner the "ha" continues around the circle.\n\nThe game ends when all of the participants. trying not to laugh (a virtual impossibility), have repeated the "ha's" that preceded them and then added their own "ha."\n\nVariations:\n\n1. The trainer may use another word in place of "ha." For example: "yuk," "har," or "tee hee."\n\n2. The group leader may ask all of the participants to repeat the "ha's." stopping only to let the person whose turn it is pipe in with his or her own.\n\n3. The trainer may continue the exercise for five minutes. regardless of how many times the "ha's" go around the circle.
!Hand-Outs\n\nHere we can put any technical information that can be presented/passed to classes. With the availability of computers with multi-media abilities today, the idea of a hand-book, manual or hand-outs written on paper is now largely obsolete, and in most cases much more expensive. Printing say 30 copies of 50 page "introductory guide to permaculture" booklet for an Introductory Permaculture Course is rather expensive and limited in the amount of information you can pass on. Filling a CD with information and then burning 30 CDs, is much cheaper and passes on much more information (thousands of times more than can fit in 50 pages of text). \n\nSo, the idea here is for people to submit "information packages" that others can then download and incorporate into their course material, put onto a Course CD or just use as useful reference material for themselves.\n\nThe information can be submitted in many forms, just bear in mind that formats specific to say Windows, may not be very useful to Mac or Linux users. In general formats such as PDF or RTF are most universal in terms of textual information. Fotographic information in JPG, GIF or PNG is accessable by most systems. Video is a little more compicated and consumes a great deal of space - use sparingly. Information presnted in TW format (with grafics ou fotos imbedded can be very effective) and the HTML format is universally readable.\n\nThe process at this stage will be to upload the file(s) into the GUI Moodle arquives folder and then place an entry in this TW describing your contribution and giving the URL of its location. Alternatively, people could make their data packages available on their own intewrnet sites and just use this TW to describe it and then inbed an external URL for people to download the information.\n\nAgain, the TW entry describing the material shoul be tagged with the reference source (the author of the work), the name of the person submitting the packet and tags describing the key words of the content.\n
/***\n| Name|HideWhenPlugin|\n| Description|Allows conditional inclusion/exclusion in templates|\n| Version|3.0 ($Rev: 1845 $)|\n| Date|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source|http://mptw.tiddlyspot.com/#HideWhenPlugin|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\nFor use in ViewTemplate and EditTemplate. Example usage:\n{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}\n{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}\n***/\n//{{{\n\nwindow.removeElementWhen = function(test,place) {\n if (test) {\n removeChildren(place);\n place.parentNode.removeChild(place);\n }\n};\n\nmerge(config.macros,{\n\n hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( eval(paramString), place);\n }},\n\n showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !eval(paramString), place);\n }},\n\n hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAll(params), place);\n }},\n\n showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAll(params), place);\n }},\n\n hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAny(params), place);\n }},\n\n showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAny(params), place);\n }},\n\n hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAll(params), place);\n }},\n\n showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAll(params), place);\n }},\n\n hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);\n }},\n\n showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);\n }}\n\n});\n\n//}}}\n\n
Hospital Tag\n\nIn this activity everyone is "it". The objective is to keep from being "tagged" by another player, but to tag as many other people as possible. The first time you are tagged you have to put a hand on where you were tagged -- for instance, if you are tagged on the top of the head you then have to play with one hand on top of your head. You can then resume attempting to tag others. The next time you are tagged you have to put your other hand where you are tagged that time. The third time you are tagged you're dead (sit down to signify this) and can no longer attempt to tag other people.\n\nIt helps to have a fairly large, open space for this activity, but it normally helps to set up some boundaries to keep folks from roaming too far afield. Depending on people's creative "tagging" abilities this can get pretty interesting. It shouldn't take more than ten minutes for this energizer to run its course.
Honey I Love You\n\nIn this game everyone is sitting in a circle. As the facilitator you will normally go first. The object is to identify someone in the circle, go up to them, and say "Honey, I love you, but I just can't make you laugh" with the express purpose of making them laugh. The person you are saying this to has to look at you and work at keeping a straight face. If after three tries at getting them to laugh you haven't succeeded, pick another target. If they laugh or even smile they move into the middle of the circle and select a target. You can do just about anything to get someone to laugh except touch them. Funny faces, strange voices, props, etc. are all fair game.\n\nOnce a person has been made to laugh, they can no longer be a target. The game goes on until the last person either breaks down and laughs or withstands the final three attempts at getting them to laugh. Note that depending on the size of the group and the ability of folks to keep a poker face, this is often not a quick game. Nevertheless, its always a lot of fun.
!Humus (Minhoca)\n\n[[como DOC arquivo|Themes-Handouts/Portugues/Solos/HUMUS.doc]]
I Noticed"\n\nIf participants have made commitments in a previous workshop to change behaviors, ask others to share one thing they've noticed another person doing differently. As an alternative, have each individual share one thing he/she has done differently since the last session.
! IceBreakers - by Name\n
<<importTiddlers>>
Interviewing & Introducing\n\n(from Lynn Brown with additions from Peter Hurst)\n\nObjectives:\n\nLearning enough about one other person to be able to introduce them to the entire group. All participants get to hear about other participants from the perspective of a third party instead of hearing from the person themselves. Provides a bit of a stretch for participants to have to ask someone they just met to tell them enough about themselves to introduce them.\n\nDesign:\n\nPair off the audience. Have the teams interview one another. Then have each take a turn introducing the other to the audience at large. Interviews should be timed (begin, end) anywhere from 1-2 minutes to ? depending on how much time you want to allow for this activity.\n\nComments:\n\nYou can prepare questions ahead of time or provide just general guidelines for the interview. You may want to ask people to pick someone to interview that they don't already know.\n\nFrom: Peter Hurst, Institutional Planning and Research, 440 Day Hall
/***\n|''Name:''|IntelliTaggerPlugin|\n|''Version:''|1.0.1 (2007-05-18)|\n|''Type:''|plugin|\n|''Source:''|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|\n|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|\n|''Documentation:''|[[IntelliTaggerPlugin Documentation]]|\n|''~SourceCode:''|[[IntelliTaggerPlugin SourceCode]]|\n|''Licence:''|[[BSD open source license (abego Software)]]|\n|''~CoreVersion:''|2.0.8|\n|''Browser:''|Firefox 1.5.0.2 or better|\n***/\n// /%\nif(!version.extensions.IntelliTaggerPlugin){\nif(!window.abego){\nwindow.abego={};\n}\nif(!abego.internal){\nabego.internal={};\n}\nabego.alertAndThrow=function(s){\nalert(s);\nthrow s;\n};\nif(version.major<2){\nabego.alertAndThrow("Use TiddlyWiki 2.0.8 or better to run the IntelliTagger Plugin.");\n}\nversion.extensions.IntelliTaggerPlugin={major:1,minor:0,revision:1,date:new Date(2007,4,18),type:"plugin",source:"http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin",documentation:"[[IntelliTaggerPlugin Documentation]]",sourcecode:"[[IntelliTaggerPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",tiddlywiki:"Version 2.0.8 or better",browser:"Firefox 1.5.0.2 or better"};\nabego.createEllipsis=function(_2){\nvar e=createTiddlyElement(_2,"span");\ne.innerHTML="&hellip;";\n};\nabego.isPopupOpen=function(_4){\nreturn _4&&_4.parentNode==document.body;\n};\nabego.openAsPopup=function(_5){\nif(_5.parentNode!=document.body){\ndocument.body.appendChild(_5);\n}\n};\nabego.closePopup=function(_6){\nif(abego.isPopupOpen(_6)){\ndocument.body.removeChild(_6);\n}\n};\nabego.getWindowRect=function(){\nreturn {left:findScrollX(),top:findScrollY(),height:findWindowHeight(),width:findWindowWidth()};\n};\nabego.moveElement=function(_7,_8,_9){\n_7.style.left=_8+"px";\n_7.style.top=_9+"px";\n};\nabego.centerOnWindow=function(_a){\nif(_a.style.position!="absolute"){\nthrow "abego.centerOnWindow: element must have absolute position";\n}\nvar _b=abego.getWindowRect();\nabego.moveElement(_a,_b.left+(_b.width-_a.offsetWidth)/2,_b.top+(_b.height-_a.offsetHeight)/2);\n};\nabego.isDescendantOrSelf=function(_c,e){\nwhile(e){\nif(_c==e){\nreturn true;\n}\ne=e.parentNode;\n}\nreturn false;\n};\nabego.toSet=function(_e){\nvar _f={};\nfor(var i=0;i<_e.length;i++){\n_f[_e[i]]=true;\n}\nreturn _f;\n};\nabego.filterStrings=function(_11,_12,_13){\nvar _14=[];\nfor(var i=0;i<_11.length&&(_13===undefined||_14.length<_13);i++){\nvar s=_11[i];\nif(s.match(_12)){\n_14.push(s);\n}\n}\nreturn _14;\n};\nabego.arraysAreEqual=function(a,b){\nif(!a){\nreturn !b;\n}\nif(!b){\nreturn false;\n}\nvar n=a.length;\nif(n!=b.length){\nreturn false;\n}\nfor(var i=0;i<n;i++){\nif(a[i]!=b[i]){\nreturn false;\n}\n}\nreturn true;\n};\nabego.moveBelowAndClip=function(_1b,_1c){\nif(!_1c){\nreturn;\n}\nvar _1d=findPosX(_1c);\nvar _1e=findPosY(_1c);\nvar _1f=_1c.offsetHeight;\nvar _20=_1d;\nvar _21=_1e+_1f;\nvar _22=findWindowWidth();\nif(_22<_1b.offsetWidth){\n_1b.style.width=(_22-100)+"px";\n}\nvar _23=_1b.offsetWidth;\nif(_20+_23>_22){\n_20=_22-_23-30;\n}\nif(_20<0){\n_20=0;\n}\n_1b.style.left=_20+"px";\n_1b.style.top=_21+"px";\n_1b.style.display="block";\n};\nabego.compareStrings=function(a,b){\nreturn (a==b)?0:(a<b)?-1:1;\n};\nabego.sortIgnoreCase=function(arr){\nvar _27=[];\nvar n=arr.length;\nfor(var i=0;i<n;i++){\nvar s=arr[i];\n_27.push([s.toString().toLowerCase(),s]);\n}\n_27.sort(function(a,b){\nreturn (a[0]==b[0])?0:(a[0]<b[0])?-1:1;\n});\nfor(i=0;i<n;i++){\narr[i]=_27[i][1];\n}\n};\nabego.getTiddlerField=function(_2d,_2e,_2f){\nvar _30=document.getElementById(_2d.idPrefix+_2e);\nvar e=null;\nif(_30!=null){\nvar _32=_30.getElementsByTagName("*");\nfor(var t=0;t<_32.length;t++){\nvar c=_32[t];\nif(c.tagName.toLowerCase()=="input"||c.tagName.toLowerCase()=="textarea"){\nif(!e){\ne=c;\n}\nif(c.getAttribute("edit")==_2f){\ne=c;\n}\n}\n}\n}\nreturn e;\n};\nabego.setRange=function(_35,_36,end){\nif(_35.setSelectionRange){\n_35.setSelectionRange(_36,end);\nvar max=0+_35.scrollHeight;\nvar len=_35.textLength;\nvar top=max*_36/len,bot=max*end/len;\n_35.scrollTop=Math.min(top,(bot+top-_35.clientHeight)/2);\n}else{\nif(_35.createTextRange!=undefined){\nvar _3b=_35.createTextRange();\n_3b.collapse();\n_3b.moveEnd("character",end);\n_3b.moveStart("character",_36);\n_3b.select();\n}else{\n_35.select();\n}\n}\n};\nabego.internal.TagManager=function(){\nvar _3c=null;\nvar _3d=function(){\nif(_3c){\nreturn;\n}\n_3c={};\nstore.forEachTiddler(function(_3e,_3f){\nfor(var i=0;i<_3f.tags.length;i++){\nvar tag=_3f.tags[i];\nvar _42=_3c[tag];\nif(!_42){\n_42=_3c[tag]={count:0,tiddlers:{}};\n}\n_42.tiddlers[_3f.title]=true;\n_42.count+=1;\n}\n});\n};\nvar _43=TiddlyWiki.prototype.saveTiddler;\nTiddlyWiki.prototype.saveTiddler=function(_44,_45,_46,_47,_48,_49){\nvar _4a=this.fetchTiddler(_44);\nvar _4b=_4a?_4a.tags:[];\nvar _4c=(typeof _49=="string")?_49.readBracketedList():_49;\n_43.apply(this,arguments);\nif(!abego.arraysAreEqual(_4b,_4c)){\nabego.internal.getTagManager().reset();\n}\n};\nvar _4d=TiddlyWiki.prototype.removeTiddler;\nTiddlyWiki.prototype.removeTiddler=function(_4e){\nvar _4f=this.fetchTiddler(_4e);\nvar _50=_4f&&_4f.tags.length>0;\n_4d.apply(this,arguments);\nif(_50){\nabego.internal.getTagManager().reset();\n}\n};\nthis.reset=function(){\n_3c=null;\n};\nthis.getTiddlersWithTag=function(tag){\n_3d();\nvar _52=_3c[tag];\nreturn _52?_52.tiddlers:null;\n};\nthis.getAllTags=function(_53){\n_3d();\nvar _54=[];\nfor(var i in _3c){\n_54.push(i);\n}\nfor(i=0;_53&&i<_53.length;i++){\n_54.pushUnique(_53[i],true);\n}\nabego.sortIgnoreCase(_54);\nreturn _54;\n};\nthis.getTagInfos=function(){\n_3d();\nvar _56=[];\nfor(var _57 in _3c){\n_56.push([_57,_3c[_57]]);\n}\nreturn _56;\n};\nvar _58=function(a,b){\nvar a1=a[1];\nvar b1=b[1];\nvar d=b[1].count-a[1].count;\nreturn d!=0?d:abego.compareStrings(a[0].toLowerCase(),b[0].toLowerCase());\n};\nthis.getSortedTagInfos=function(){\n_3d();\nvar _5e=this.getTagInfos();\n_5e.sort(_58);\nreturn _5e;\n};\nthis.getPartnerRankedTags=function(_5f){\nvar _60={};\nfor(var i=0;i<_5f.length;i++){\nvar _62=this.getTiddlersWithTag(_5f[i]);\nfor(var _63 in _62){\nvar _64=store.getTiddler(_63);\nif(!(_64 instanceof Tiddler)){\ncontinue;\n}\nfor(var j=0;j<_64.tags.length;j++){\nvar tag=_64.tags[j];\nvar c=_60[tag];\n_60[tag]=c?c+1:1;\n}\n}\n}\nvar _68=abego.toSet(_5f);\nvar _69=[];\nfor(var n in _60){\nif(!_68[n]){\n_69.push(n);\n}\n}\n_69.sort(function(a,b){\nvar d=_60[b]-_60[a];\nreturn d!=0?d:abego.compareStrings(a.toLowerCase(),b.toLowerCase());\n});\nreturn _69;\n};\n};\nabego.internal.getTagManager=function(){\nif(!abego.internal.gTagManager){\nabego.internal.gTagManager=new abego.internal.TagManager();\n}\nreturn abego.internal.gTagManager;\n};\n(function(){\nvar _6e=2;\nvar _6f=1;\nvar _70=30;\nvar _71;\nvar _72;\nvar _73;\nvar _74;\nvar _75;\nvar _76;\nif(!abego.IntelliTagger){\nabego.IntelliTagger={};\n}\nvar _77=function(){\nreturn _72;\n};\nvar _78=function(tag){\nreturn _75[tag];\n};\nvar _7a=function(s){\nvar i=s.lastIndexOf(" ");\nreturn (i>=0)?s.substr(0,i):"";\n};\nvar _7d=function(_7e){\nvar s=_7e.value;\nvar len=s.length;\nreturn (len>0&&s[len-1]!=" ");\n};\nvar _81=function(_82){\nvar s=_82.value;\nvar len=s.length;\nif(len>0&&s[len-1]!=" "){\n_82.value+=" ";\n}\n};\nvar _85=function(tag,_87,_88){\nif(_7d(_87)){\n_87.value=_7a(_87.value);\n}\nstory.setTiddlerTag(_88.title,tag,0);\n_81(_87);\nabego.IntelliTagger.assistTagging(_87,_88);\n};\nvar _89=function(n){\nif(_76){\nif(_76.length>n){\nreturn _76[n];\n}\nn-=_76.length;\n}\nreturn (_74&&_74.length>n)?_74[n]:null;\n};\nvar _8b=function(n,_8d,_8e){\nvar _8f=_89(n);\nif(_8f){\n_85(_8f,_8d,_8e);\n}\n};\nvar _90=function(_91){\nvar pos=_91.value.lastIndexOf(" ");\nvar _93=(pos>=0)?_91.value.substr(++pos,_91.value.length):_91.value;\nreturn new RegExp(_93.escapeRegExp(),"i");\n};\nvar _94=function(_95,_96){\nvar _97=0;\nfor(var i=0;i<_95.length;i++){\nif(_96[_95[i]]){\n_97++;\n}\n}\nreturn _97;\n};\nvar _99=function(_9a,_9b,_9c){\nvar _9d=1;\nvar c=_9a[_9b];\nfor(var i=_9b+1;i<_9a.length;i++){\nif(_9a[i][1].count==c){\nif(_9a[i][0].match(_9c)){\n_9d++;\n}\n}else{\nbreak;\n}\n}\nreturn _9d;\n};\nvar _a0=function(_a1,_a2){\nvar _a3=abego.internal.getTagManager().getSortedTagInfos();\nvar _a4=[];\nvar _a5=0;\nfor(var i=0;i<_a3.length;i++){\nvar c=_a3[i][1].count;\nif(c!=_a5){\nif(_a2&&(_a4.length+_99(_a3,i,_a1)>_a2)){\nbreak;\n}\n_a5=c;\n}\nif(c==1){\nbreak;\n}\nvar s=_a3[i][0];\nif(s.match(_a1)){\n_a4.push(s);\n}\n}\nreturn _a4;\n};\nvar _a9=function(_aa,_ab){\nreturn abego.filterStrings(abego.internal.getTagManager().getAllTags(_ab),_aa);\n};\nvar _ac=function(){\nif(!_71){\nreturn;\n}\nvar _ad=store.getTiddlerText("IntelliTaggerMainTemplate");\nif(!_ad){\n_ad="<b>Tiddler IntelliTaggerMainTemplate not found</b>";\n}\n_71.innerHTML=_ad;\napplyHtmlMacros(_71,null);\nrefreshElements(_71,null);\n};\nvar _ae=function(e){\nif(!e){\nvar e=window.event;\n}\nvar tag=this.getAttribute("tag");\nif(_73){\n_73.call(this,tag,e);\n}\nreturn false;\n};\nvar _b2=function(_b3){\ncreateTiddlyElement(_b3,"span",null,"tagSeparator"," | ");\n};\nvar _b4=function(_b5,_b6,_b7,_b8,_b9){\nif(!_b6){\nreturn;\n}\nvar _ba=_b8?abego.toSet(_b8):{};\nvar n=_b6.length;\nvar c=0;\nfor(var i=0;i<n;i++){\nvar tag=_b6[i];\nif(_ba[tag]){\ncontinue;\n}\nif(c>0){\n_b2(_b5);\n}\nif(_b9&&c>=_b9){\nabego.createEllipsis(_b5);\nbreak;\n}\nc++;\nvar _bf="";\nvar _c0=_b5;\nif(_b7<10){\n_c0=createTiddlyElement(_b5,"span",null,"numberedSuggestion");\n_b7++;\nvar key=_b7<10?""+(_b7):"0";\ncreateTiddlyElement(_c0,"span",null,"suggestionNumber",key+") ");\nvar _c2=_b7==1?"Ctrl-Space or ":"";\n_bf=" (Shortcut: lt-%0)".format([key,_c2]);\n}\nvar _c3=config.views.wikified.tag.tooltip.format([tag]);\nvar _c4=(_78(tag)?"Remove tag '%0'%1":"Add tag '%0'%1").format([tag,_bf]);\nvar _c5="%0; Shift-Click: %1".format([_c4,_c3]);\nvar btn=createTiddlyButton(_c0,tag,_c5,_ae,_78(tag)?"currentTag":null);\nbtn.setAttribute("tag",tag);\n}\n};\nvar _c7=function(){\nif(_71){\nwindow.scrollTo(0,ensureVisible(_71));\n}\nif(_77()){\nwindow.scrollTo(0,ensureVisible(_77()));\n}\n};\nvar _c8=function(e){\nif(!e){\nvar e=window.event;\n}\nif(!_71){\nreturn;\n}\nvar _cb=resolveTarget(e);\nif(_cb==_77()){\nreturn;\n}\nif(abego.isDescendantOrSelf(_71,_cb)){\nreturn;\n}\nabego.IntelliTagger.close();\n};\naddEvent(document,"click",_c8);\nvar _cc=Story.prototype.gatherSaveFields;\nStory.prototype.gatherSaveFields=function(e,_ce){\n_cc.apply(this,arguments);\nvar _cf=_ce.tags;\nif(_cf){\n_ce.tags=_cf.trim();\n}\n};\nvar _d0=function(_d1){\nstory.focusTiddler(_d1,"tags");\nvar _d2=abego.getTiddlerField(story,_d1,"tags");\nif(_d2){\nvar len=_d2.value.length;\nabego.setRange(_d2,len,len);\nwindow.scrollTo(0,ensureVisible(_d2));\n}\n};\nvar _d4=config.macros.edit.handler;\nconfig.macros.edit.handler=function(_d5,_d6,_d7,_d8,_d9,_da){\n_d4.apply(this,arguments);\nvar _db=_d7[0];\nif((_da instanceof Tiddler)&&_db=="tags"){\nvar _dc=_d5.lastChild;\n_dc.onfocus=function(e){\nabego.IntelliTagger.assistTagging(_dc,_da);\nsetTimeout(function(){\n_d0(_da.title);\n},100);\n};\n_dc.onkeyup=function(e){\nif(!e){\nvar e=window.event;\n}\nif(e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.keyCode>=48&&e.keyCode<=57)){\n_8b(e.keyCode==48?9:e.keyCode-49,_dc,_da);\n}else{\nif(e.ctrlKey&&e.keyCode==32){\n_8b(0,_dc,_da);\n}\n}\nsetTimeout(function(){\nabego.IntelliTagger.assistTagging(_dc,_da);\n},100);\nreturn false;\n};\n_81(_dc);\n}\n};\nvar _e0=function(e){\nif(!e){\nvar e=window.event;\n}\nvar _e3=resolveTarget(e);\nvar _e4=_e3.getAttribute("tiddler");\nif(_e4){\nstory.displayTiddler(_e3,_e4,"IntelliTaggerEditTagsTemplate",false);\n_d0(_e4);\n}\nreturn false;\n};\nvar _e5=config.macros.tags.handler;\nconfig.macros.tags.handler=function(_e6,_e7,_e8,_e9,_ea,_eb){\n_e5.apply(this,arguments);\nabego.IntelliTagger.createEditTagsButton(_eb,createTiddlyElement(_e6.lastChild,"li"));\n};\nvar _ec=function(){\nif(_71&&_72&&!abego.isDescendantOrSelf(document,_72)){\nabego.IntelliTagger.close();\n}\n};\nsetInterval(_ec,100);\nabego.IntelliTagger.displayTagSuggestions=function(_ed,_ee,_ef,_f0,_f1){\n_74=_ed;\n_75=abego.toSet(_ee);\n_76=_ef;\n_72=_f0;\n_73=_f1;\nif(!_71){\n_71=createTiddlyElement(document.body,"div",null,"intelliTaggerSuggestions");\n_71.style.position="absolute";\n}\n_ac();\nabego.openAsPopup(_71);\nif(_77()){\nvar w=_77().offsetWidth;\nif(_71.offsetWidth<w){\n_71.style.width=(w-2*(_6e+_6f))+"px";\n}\nabego.moveBelowAndClip(_71,_77());\n}else{\nabego.centerOnWindow(_71);\n}\n_c7();\n};\nabego.IntelliTagger.assistTagging=function(_f3,_f4){\nvar _f5=_90(_f3);\nvar s=_f3.value;\nif(_7d(_f3)){\ns=_7a(s);\n}\nvar _f7=s.readBracketedList();\nvar _f8=_f7.length>0?abego.filterStrings(abego.internal.getTagManager().getPartnerRankedTags(_f7),_f5,_70):_a0(_f5,_70);\nabego.IntelliTagger.displayTagSuggestions(_a9(_f5,_f7),_f7,_f8,_f3,function(tag,e){\nif(e.shiftKey){\nonClickTag.call(this,e);\n}else{\n_85(tag,_f3,_f4);\n}\n});\n};\nabego.IntelliTagger.close=function(){\nabego.closePopup(_71);\n_71=null;\nreturn false;\n};\nabego.IntelliTagger.createEditTagsButton=function(_fb,_fc,_fd,_fe,_ff,id,_101){\nif(!_fd){\n_fd="[edit]";\n}\nif(!_fe){\n_fe="Edit the tags";\n}\nif(!_ff){\n_ff="editTags";\n}\nvar _102=createTiddlyButton(_fc,_fd,_fe,_e0,_ff,id,_101);\n_102.setAttribute("tiddler",(_fb instanceof Tiddler)?_fb.title:String(_fb));\nreturn _102;\n};\nabego.IntelliTagger.getSuggestionTagsMaxCount=function(){\nreturn 100;\n};\nconfig.macros.intelliTagger={label:"intelliTagger",handler:function(_103,_104,_105,_106,_107,_108){\nvar _109=_107.parseParams("list",null,true);\nvar _10a=_109[0]["action"];\nfor(var i=0;_10a&&i<_10a.length;i++){\nvar _10c=_10a[i];\nvar _10d=config.macros.intelliTagger.subhandlers[_10c];\nif(!_10d){\nabego.alertAndThrow("Unsupported action '%0'".format([_10c]));\n}\n_10d(_103,_104,_105,_106,_107,_108);\n}\n},subhandlers:{showTags:function(_10e,_10f,_110,_111,_112,_113){\n_b4(_10e,_74,_76?_76.length:0,_76,abego.IntelliTagger.getSuggestionTagsMaxCount());\n},showFavorites:function(_114,_115,_116,_117,_118,_119){\n_b4(_114,_76,0);\n},closeButton:function(_11a,_11b,_11c,_11d,_11e,_11f){\nvar _120=createTiddlyButton(_11a,"close","Close the suggestions",abego.IntelliTagger.close);\n},version:function(_121){\nvar t="IntelliTagger %0.%1.%2".format([version.extensions.IntelliTaggerPlugin.major,version.extensions.IntelliTaggerPlugin.minor,version.extensions.IntelliTaggerPlugin.revision]);\nvar e=createTiddlyElement(_121,"a");\ne.setAttribute("href","http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin");\ne.innerHTML="<font color=\s"black\s" face=\s"Arial, Helvetica, sans-serif\s">"+t+"<font>";\n},copyright:function(_124){\nvar e=createTiddlyElement(_124,"a");\ne.setAttribute("href","http://tiddlywiki.abego-software.de");\ne.innerHTML="<font color=\s"black\s" face=\s"Arial, Helvetica, sans-serif\s">&copy; 2006-2007 <b><font color=\s"red\s">abego</font></b> Software<font>";\n}}};\n})();\nconfig.shadowTiddlers["IntelliTaggerStyleSheet"]="/***\sn"+"!~IntelliTagger Stylesheet\sn"+"***/\sn"+"/*{{{*/\sn"+".intelliTaggerSuggestions {\sn"+"\stposition: absolute;\sn"+"\stwidth: 600px;\sn"+"\sn"+"\stpadding: 2px;\sn"+"\stlist-style: none;\sn"+"\stmargin: 0;\sn"+"\sn"+"\stbackground: #eeeeee;\sn"+"\stborder: 1px solid DarkGray;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .currentTag {\sn"+"\stfont-weight: bold;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .suggestionNumber {\sn"+"\stcolor: #808080;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .numberedSuggestion{\sn"+"\stwhite-space: nowrap;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .intelliTaggerFooter {\sn"+"\stmargin-top: 4px;\sn"+"\stborder-top-width: thin;\sn"+"\stborder-top-style: solid;\sn"+"\stborder-top-color: #999999;\sn"+"}\sn"+".intelliTaggerSuggestions .favorites {\sn"+"\stborder-bottom-width: thin;\sn"+"\stborder-bottom-style: solid;\sn"+"\stborder-bottom-color: #999999;\sn"+"\stpadding-bottom: 2px;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .normalTags {\sn"+"\stpadding-top: 2px;\sn"+"}\sn"+"\sn"+".intelliTaggerSuggestions .intelliTaggerFooter .button {\sn"+"\stfont-size: 10px;\sn"+"\sn"+"\stpadding-left: 0.3em;\sn"+"\stpadding-right: 0.3em;\sn"+"}\sn"+"\sn"+"/*}}}*/\sn";\nconfig.shadowTiddlers["IntelliTaggerMainTemplate"]="<!--\sn"+"{{{\sn"+"-->\sn"+"<div class=\s"favorites\s" macro=\s"intelliTagger action: showFavorites\s"></div>\sn"+"<div class=\s"normalTags\s" macro=\s"intelliTagger action: showTags\s"></div>\sn"+"<!-- The Footer (with the Navigation) ============================================ -->\sn"+"<table class=\s"intelliTaggerFooter\s" border=\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s"><tbody>\sn"+" <tr>\sn"+"\st<td align=\s"left\s">\sn"+"\st\st<span macro=\s"intelliTagger action: closeButton\s"></span>\sn"+"\st</td>\sn"+"\st<td align=\s"right\s">\sn"+"\st\st<span macro=\s"intelliTagger action: version\s"></span>, <span macro=\s"intelliTagger action: copyright \s"></span>\sn"+"\st</td>\sn"+" </tr>\sn"+"</tbody></table>\sn"+"<!--\sn"+"}}}\sn"+"-->\sn";\nconfig.shadowTiddlers["IntelliTaggerEditTagsTemplate"]="<!--\sn"+"{{{\sn"+"-->\sn"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\sn"+"<div class='title' macro='view title'></div>\sn"+"<div class='tagged' macro='tags'></div>\sn"+"<div class='viewer' macro='view text wikified'></div>\sn"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\sn"+"<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\sn"+"<!--\sn"+"}}}\sn"+"-->\sn";\nconfig.shadowTiddlers["IntelliTaggerPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]].";\nconfig.shadowTiddlers["IntelliTaggerPlugin SourceCode"]="[[Plugin source code on abego Software website|http://tiddlywiki.abego-software.de/archive/IntelliTaggerPlugin/Plugin-IntelliTagger-src.1.0.1.js]]\sn";\n(function(){\nvar _126=restart;\nrestart=function(){\nsetStylesheet(store.getTiddlerText("IntelliTaggerStyleSheet"),"IntelliTaggerStyleSheet");\n_126.apply(this,arguments);\n};\n})();\n}\n\n//%/\n
I’m Unique"\n\nAsk each person to share one thing that makes him/her unique.
!Join the dots\n\nTo explore tile concept of creativity. To go beyond a visual framework or perceptual field. Use to begin a session on creativity.\n\n * Give a copy of the nine dot figure to each participant or ask them to copy it on to their paper.\n * Ask them to link all nine points with only four straight lines executed in one uninterrupted stroke (i.e. the pen cannot be lifted from the paper).\n * When someone has successfully completed the exercise, ask them to share it with the group.\n\nDebriefing\n\n * Ask the following questions:\n * What is required to solve this problem?\n * How does this exercise apply to the basic principles of problem solving?\n
Have each person in the group share one thing they learned in the training. Use a Koosh ball, and have each person share their learning when they get the ball.
!Learning from Experience"\n\nHave participants introduce themselves and explain one thing they have learned the hard way about the topic you are covering. Post the learnings on a flip chart and refer to them throughout the class.
!Lesson Plans\n\nThe idea here is for people to submit sample lesson plans or layouts that they have found effective and to allow others to then then download the information and incorporate into their course planning.\n\nThe information can be submitted in many forms, just bear in mind that formats specific to say Windows, may not be very useful to Mac or Linux users. In general formats such as PDF or RTF are most universal in terms of textual information. Fotographic information in JPG, GIF or PNG is accessable by most systems. Video is a little more compicated and consumes a great deal of space - use sparingly. Information presnted in TW format (with grafics ou fotos imbedded can be very effective) and the HTML format is universally readable.\n\nThe process at this stage will be to upload the file(s) into the GUI Moodle arquives folder and then place an entry in this TW describing your contribution and giving the URL of its location. Alternatively, people could make their data packages available on their own internet sites and just use this TW to describe it and then inbed an external URL for people to download the information.\n\nAgain, the TW entry describing the material shoul be tagged with the reference source (the author of the work), the name of the person submitting the packet and tags describing the key words of the content.
To encourage the participants to make personal statements.\nTime:\n\n15 to 20 minutes\nSupplies:\n\n * Stimulus cards. These cards contain words or phrases that the participants talk about. Create your own packet of about 20 cards to suit your participants and your topic.\n * Paper and pencil for keeping score\n\nExample: Here are some of the stimulus words that we used in a workshop on teambuilding: lemonade, followers, income tax, freeloaders, my role, groundrules, goal, waste of time, computers, budget, beeper, midnight, window, money, short people, and leadership. Note that some words are related to the topic and some are irrelevant; some are bland and some are potentially embarrassing.\nParticipants:\n\n3 to 7. If you have more participants, divide them into roughly equal-sized groups of 3 to 7 and have the groups play in a parallel fashion.\nFlow of the game:\n\n 1. The stimulus cards are shuffled and placed face down in the middle of the table.\n 2. The first player picks up the top card and reads the stimulus word. This person now has to make a personal statement related to the word that reveals something about himself or herself. This statement should not take more than a minute.\n\n Example: Greg picks up the card with the stimulus word lemonade and says\n\n When I was about 9 years old, my mother always asked me to get lemonade for my grandfather. I used to spit in the glass before getting the lemonade because I guess I didn't like my grandfather. When he died recently, he left me a lot of money. I feel very guilty about what I did during those lemonade days.\n 3. After the statement, each of the other players holds up 1, 2, or 3 fingers to indicate how personally revealing the statement was. A light or flippant statement gets 1 point. A heavy, emotional, embarrassing statement gets 3 points. Other statements belong to the medium category and get 2 points. Different players may hold up different numbers of fingers. The speaker counts the total number of fingers and writes it down on his or her scorecard.\n\n Example: The four other players found Greg's statement schmaltzy. They all gave him 3 points, for a total of 12.\n 4. If a player does not want to talk about a particular stimulus word, he or she can pass, getting no points for the round. The next participant may then use the skipped card, or pick a new card.\n 5. The activity continues with the next player picking up a new stimulus card. All players keep track of their total scores.\n 6. Depending on the available time, the activity may end after the third, fourth, or fifth round. Make sure that everyone has an equal number of turns.\n
Story.prototype.tiddlerHistory= [];\nStory.prototype.maxTiddlers = 1;\nStory.prototype.closedHistory=[];\nStory.prototype.closedHistoryMax = 10;\n\nArray.prototype.moveToEnd = function(item)\n{\n this.remove(item);\n this.push(item);\n}\n\nStory.prototype.old_history_displayTiddler = Story.prototype.displayTiddler;\nStory.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)\n{\n this.tiddlerHistory.moveToEnd(title);\n this.closedHistory.remove(title);\n var closeCount = this.tiddlerHistory.length - this.maxTiddlers;\n if (closeCount > 0)\n {\n var count = this.tiddlerHistory.splice (0,closeCount);\n for (var i=0; i<count.length;i++)\n {\n story.closeTiddler(count[i],false);\n }\n }\n story.old_history_displayTiddler(null,title,template,animate,slowly);\n}\n\nStory.prototype.old_history_closeTiddler = Story.prototype.closeTiddler;\nStory.prototype.closeTiddler = function(title,animate,slowly)\n{\n this.tiddlerHistory.remove(title);\n this.closedHistory.remove(title);\n this.closedHistory.unshift(title);\n story.old_history_closeTiddler.apply(this,arguments);\n}\n\nStory.prototype.displayTiddlers = function(srcElement,titles,template,animate,slowly)\n{\n for(var t = titles.length-1;t>=0;t--)\n {\n this.tiddlerHistory.moveToEnd(titles[t]);\n this.closedHistory.remove(titles[t]);\n this.old_history_displayTiddler(srcElement,titles[t],template,animate,slowly);\n }\n}\n\nconfig.commands.history={\n text: "history",\n tooltip: "re-open a closed tiddler"};\n\nconfig.commands.history.handler = function(event,src,title)\n{\n var popup = Popup.create(src);\n if(popup)\n {\n if (!story.closedHistory.length)\n createTiddlyText(popup,"No history");\n else\n {\n var c = Math.min(story.closedHistory.length,story.closedHistoryMax);\n for (i=0; i<c;i++ )\n {\n createTiddlyLink(createTiddlyElement(popup,"li"),story.closedHistory[i],true);\n }\n }\n }\n Popup.show(popup,false);\n event.cancelBubble = true;\n if (event.stopPropagation) event.stopPropagation();\n return false;\n}
[[Creativity]]\n[[Processes]]\n[[Lesson_Plans]]\n[[Hand_outs]]\n[[Software]]\n[[Forum]]\n[[Sources&Links]]\n<<toggleSideBar " " " " hide>>
!Meditation Gaia\n\n"What are you? What am I? Intersecting cycles of water, earth, air and fire, that's what I am, that's what you are. \nWATER--blood, lymph, mucus, sweat, tears, inner oceans tugged by the moon, tides within and tides without. Streaming fluids floating our cells, washing and nourishing through endless riverways of gut and vein and capillary. Moisture pouring in and through and out of you, of me, in the vast poem of the hydrological cycle. You are that. I am that. \nEARTH--matter made from rock and soil. It too is pulled by the moon as the magna circulates through the planet heart and roots suck molecules into biology. Earth pours through us, replacing each cell in the body every seven years. Ashes to ashes, dust to dust, we ingest, incorporate and excrete the earth, are made from earth. I am that. You are that. \nAIR--the gaseous realm, the atmosphere, the planet's membrane. The inhale and the exhale. Breathing out carbon dioxide to the trees and breathing in their fresh exudations. Oxygen kissing each cell awake, atoms dancing in orderly metabolism, interpenetrating. That dance of the air cycle, breathing the universe in and out again, is what you are, is what I am. \nFIRE--Fire, from our sun that fuels all life, drawing up plants and raising the waters to the sky to fall again replenishing. The inner furnace of your metabolism burns with the fire of the Big Bang that first sent matter-energy spinning through space and time. And the same fire as the lightning that flashed into the primordial soup catalysing the birth of organic life. \nYou were there, I was there, for each cell of our bodies is descended in an unbroken chain from that event. Through the desire of atom for molecule, of molecule for cell, of cell for organism. In that spawning of forms death was born, born simultaneously with sex, before we divided from the plant realm. So in our sexuality we can feel ancient stirrings that connect us with plant as well as animal life. We come from them in an unbroken chain--through fish learning to walk the land, feeling scales turning to wings, through the migrations in the ages of ice. \nWe have been but recently in human form. If Earth's whole history were compressed into twenty-four hours beginning at midnight, organic life would begin only at 5 pm . . . mammals emerge at 11:30 . . . and from amongst them at only seconds to midnight, our species. In our long planetary journey we have taken far more ancient forms than these we now wear. Some of these forms we remember in our mother's womb, wear vestigial tails and gills, grow fins for hands. \nCountless times in that journey we died to old forms, let go of old ways, allowing new ones to emerge. But nothing is ever lost. Though forms pass, all returns. Each worn-out cell consumed, recycled . . . through mosses, leeches, birds of prey.... \nThink to your next death. Will your flesh and bones back into the cycle. Surrender. Love the plump worms you will become. Launder your weary being through the fountain of life. \nBeholding you, I behold as well all the different creatures that compose you--the mitochondria in the cells, the intestinal bacteria, the life teeming on the surface of the skin. The great symbiosis that is you. The incredible coordination and cooperation of countless beings. You are that, too, just as your body is part of a much larger symbiosis, living in wider reciprocities. Be conscious of that give-and-take when you move among trees. Breathe your pure carbon dioxide to a leaf and sense it breathing fresh oxygen back to you. \nCountless times in that journey we died to old forms, let go of old ways, allowing new ones to emerge. But nothing is ever lost. Though forms pass, all returns. \nRemember again and again the old cycles of partnership. By your very nature and the journey you have made, there is in you deep knowledge of belonging. You have earth-bred wisdom of your interexistence with all that is. Take courage and power in it now, that we may help each other awaken." \n
Meeting warm-ups\n\nQuick ideas to get people focused in the room on each other; also ready to participate.\n\nGo around the table (or circle) and complete one of these sentences:\n\n * Once upon a time, I...\n * My ideal vacation is...\n * The riskiest thing I ever did was...\n * The wildest thing I ever did (that I'll admit to ) is...\n\nThese are easy to make up and can be topical (what I did on my summer vacation, my plans for the weekend are...)\n\nFrom: Mary Louise Doyle, Manager, Human Resources, Facilities and Campus Services, Humphreys Services Building, Cornell University, Ithaca, NY 14853
!Metaphor, Analogy\n\nTo find new solutions for a familiar problem Use when the group feels stuck or when a task has become difficult.\n\n * Identify the problem.\n * Explain to the group the meaning of the "metaphor" and "analogy.\n * Ask the group to collect several metaphors or analogies for the problem.\n * Chose one problem and discuss the metaphor analogies as they relate to a possible solution.\n * Select workable solutions you want to follow lip.\n * You can do this exercise several times with different metaphors/analogies, until you discover a series of realistic ideas.\n
!Microclimate\n
My Slogan"\n\nExplain that many companies have slogans or "mottoes" which reflect their values. For example, Ford Motor Company uses the slogan, 'Quality is Job One.' Ask each person to write (or borrow) a slogan to describe him or herself and share that with the class
The Name Game\n\nBackground\n\nThis activity works best with medium- to large-sized groups and can be used in training programs from a half-day and longer in duration. This icebreaker works best if participants are grouped in a large circle.\n\nGoal\n\nThe main goal of this icebreaker is to help participants learn each other's names via a quick, low-threat icebreaker.\n\nObjectives\n\nBy the time participants complete this icebreaker, they will be able to:\n\n1. Name at least 50% of all other participants in the training.\n\nAudience\n\nThe name game is simple, safe, and effective for most training audiences. It should be avoided in mixed trainings where groups with historical conflict are brought into the same room. In such cases, the failure to remember someone else's name can become a "critical incident" and a source for continued polarization.\n\nTime\n\nWhile The Name Game is generally time-efficient, larger groups will require more time. Allot at least ten minutes for smaller groups (5 to 12 participants). Double the time for greater than twelve participants.\n\nDesign\n\n1. Explain to participants that you are going to ask them to play "The Name Game." You will ask each person to introduce themselves, going person-to-person either clockwise or counter-clockwise around the group. Each person will be asked to introduce themselves by giving at least their name, their affiliation, and an interesting topic of choice (either you pick a topic such as 'Your ideal vacation..." or playfully ask the group-as-a-whole what they'd like to know about each other).\n\n2. The main task for each person in The Name Game is to remember enough about each person so they could start from the beginning of the group and remember the names of all those who had introduced themselves thus far. Remind participants they are not to take notes during The Name Game.\n\n3. Begin the introductions. After three or four people have introduced themselves, ask for a volunteer to name all those who had introduced themselves so far.\n\n4. Pepper your facilitation of The Name Game with liberal amounts of appreciation and acknowledgment. Clapping is encouraged!\n\n5. A nice variation of The Name Game is to break after someone has named all everyone else in the group, and encourage people to break up into "affinity groups" with others they'd like to talk with. In these smaller groups, any number of light topics can be used to help participants get to know each other a bit better.\n\n6. Minimal (or non-existent) processing of this icebreaker is most appropriate.\n\nFrom: Glenn Allen-Meyer, Human Resource Consultant/Master Trainer, Organizational Development & Educational Services, Office of Human Resources, Cornell University, 20 Thornwood Dr., Ithaca, NY 14850-1265
Names & Adjectives\n\nAsk each participant to take a few moments to think of an adjective that starts with the same first letter as their first name (e.g. "Merry Marilee"). Start by modeling it yourself. Then move around the group asking each person to state their name/adjective combination. Additionally, participants can be asked to share "where they work," or other pertinent information. At various points during introductions, or at the end, ask for volunteers to remember each of the names, with adjectives, that have been volunteered thus far. Reinforce the efforts and successes of volunteers.\n\nFrom: Marilee Bell, Director, Work and Family Services, 130 Day Hall, Cornell University, Ithaca, NY 14853.
Names & Stories\n\nAsk participants to introduce themselves, with each person talking briefly about the most ridiculous thing they've done in their working life.\n\nFrom: Christian Luntz, Student and Spring '96 Intern, Cornell Program on Environmental Conflict Management, Cornell University, 200 Rice Hall, Ithaca, NY 14853
<<formTiddler [[ReferencesTemplate]]>><data>{"booktitle":"Newone","tagreference":"New"}</data>
/***\n| Name:|NewHerePlugin|\n| Description:|Creates the new here and new journal macros|\n| Version:|3.0 ($Rev: 1845 $)|\n| Date:|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n***/\n//{{{\nmerge(config.macros, {\n newHere: {\n handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);\n }\n },\n newJournalHere: {\n handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);\n }\n }\n});\n\n//}}}\n\n
<<newTiddlerWithForm ReferencesTemplate "Add New Source Reference">>
Have each person share one thing they will do in the next week to apply the training. For example, if they are in project management training, have them share the next action they will take on a current project.
Terrill L. Nickerson, the Santa Fe Indian School.\n\nBureau of Land Management,Environmental Education Homepage\n \nEnvironmental Technology is an Ancient Science\nThe Hupobi Heritage Project
!Nonsense-debate\n\nTo promote innovative thinking. Use before a planning phase, as " brain gymnastics” to prepare for a more serious exercise.\n\n * Ask the. participants to collect a series of nonsense questions on a flip chart. From these questions, they should select those they want to argue about.\n * Keep a "yes" and a "no" card in your hand. If she raise the yes card, all should argue in favor: if the no card is raised, all argue against. You may change the direction of the debate several times during each question.\n\nExamples -\n\n * Riding elephants is especially useful for right brain users.\n * A good facilitator should know about manipulation.\n * A housewife should study astrophysics.\n * To reach equity at home men, should cook three times a week.\n
!O Homen que Cultiva a Àgua\nde Brad Lancaster\n\nEnquanto viajava pela parte sul da Africa neste verAo , (1995), ouvi falar\n de um homem que cultivava a Agua. Parti a procura sem ideia clara do meu \nrumo. Me encontrei num onibus folclorico abarrotado atravessando \nruidosamente o interior do sul de Zimbabwe a uns 30 km por hora. A paisagem \nera bela: colinas suaves de capim amarelo em terra vermelha, com moitas de \narvores retorcidas, as vezes com formato de guarda-chuva. Cochilei ate, \nnove horas depois, chegarmos na regiao mais seca de Zimbabwe. Do topo da \ncolina de vegetacao semidesertica avistamos uma campina imensa de colinas\n onduladas cobertas de capim seco e afloramentos de granito. Tinha poucas \narvores. Lembrei as campinas abertas da parte sudoeste de Arizona (EUA).\nDe fato, tudo era coroado por um ceu azul limpido como aqueles que se avista\n no sudoeste arido dos Estados Unidos. O onibus adentrou vagarosamente a \ncapina seca e parou no lugarejo rural de Zvishavane. Era aqui a moradia do \ncultivador de agua. Enquanto o sol se pos, procurei um lugar apropriado para \nestender meu saco de dormir, e adormeci.\n\nNa manha seguinte, peguei carona com a diretora do CARE Internacional.\nEla me levou ate uma fila de casas terreas. Uma destas era o escritorio \nsimples do Projeto de Recursos de agua de Zvishavane (Zvishavane Water \nResources Project (ZWRP). La, na varanda, estava sentado o cultivador de \nagua, lendo a Biblia.\n\nNa minha chegada ele se levantou com um sorriso enorme e saudacoes cordiais. \nAqui, finalmente, estava Sr. Zephania Phiri Maseko. Descobrindo a distancia\n que percorri, ele desatou a rir maravilhosamente. Me contou que ultimamente \nchegam visitantes de todos os pontos do globo, quase diariamente. Mesmo \nassim, cada um eh uma surpresa inesperada.\n\nNo jipe atravessamos a solavancos as estradas de terra erodidas rumo a sua \npropriedade, enquanto Sr. Phiri falava, ria, e gesticulava, contando \ninfindaveis analogias e historias poeticas. A melhor historia de todas foi \na dele.\n\nEm 1964 foi dispensado do seu emprego na ferrovia por estar politicamente \nativo contra o governo branco rhodesiano. O governo alertou que nunca mais \ntrabalharia em nenhuma funcao.\n\nTendo que sustentar uma familia de oito, Sr. Phiri recorreu as duas \ncoisas que tinha: uma propriedade familiar de 3 hectares, e a Biblia. \nEle nao usa a Biblia somente como guia espiritual -- usa como manual de \njardinagem. Aa ler a Genese, viu que tudo que Adao e Eva precisavam era \nsuprido pelo jardim de Eden. " Assim", pensou Mr. Phiri, "preciso criar \nmeu proprio Jardim de Eden|". Mas Sr. Phiri se deu conta que Adao e Eva \ntinha os rios Tigres e Euphrates na sua regiao. Nao tinha nem sequer um \nriacho intermitente. "Entao," pensou Sr. \nPhiri, "preciso tambem criar meus proprios rios. " Ele fez ambos.\n\nA sua propriedade se localiza nas encostas de uma colina, frente ao \nnorte-nordeste (lembrando que este eh o hemisferio sul). No topo da colina \nse encontra uma afloramento grande de granito do qual a agua das enxurradas \nescorre livremente. A precipitacao anual media eh de 570 mm ( um pouco \nacima de 22 polegadas), mas como Sr. Phiri, aponta, isso eh uma media \nbaseada em extremos. Muitos anos sao de seca, quando a terra tem sorte \nse recebe 12 polegadas ( 270 mm) de chuva.\n\nNo comeco era muito dificil que as culturas se desenvolvessem, muito menos \nlucrar delas, devido aas secas frequentes e falta total de equipamento ou \ncapital para irrigar a partir do lencol freatico. Ele dedicou tempo \nobservando o que acontecia quando de fato chovia. Em pequenas depressoes e\n no lado superior das rochas e das plantas, a umidade do solo durava mais \ndo que em areas onde a agua escoava livremente. Assim comecou a auto-educacao\n e o trabalho de coleta de agua de chuva . Ao longo de 30 anos Sr. Phiri \ncriou um sistema sustentavel que preenche todas as suas necessidades em agua \nunicamente da chuva.\n\n"Voce tem que comecar a captacao no alto, e sarar as vossorocas jovens \nantes das velhas e profundas rio abaixo," diz Sr. Phiri. Comecando no \ntopo da divisoria de aguas ele construiu muros de pedra seca \naleatoriamente mas nas linhas de contorno. Tendo funcoes similares aos \ngabioes [cestas quadradas de arame preenchidas de rochas utilizadas para \ncaptar agua e sedimentos em grandes \nvossorocas, nota da tradutora] , estes muros diminuem a velocidade do \nfluxo de agua de tempestades , esta atravessando lentamente os espacos \nentre as pedras. Assim amansa-se o fluxo de agua saindo da redoma do \nafloramento de granito , direcionando-a para reservatorios permeaveis, \nque, como tudo na propriedade, foram construidas com ferramentas de mao \ne o suor de Sr. Phiri e suas duas esposas. O maior dos dois reservatorios \nele chama do seu centro de imigracao. "Eh aqui que dou as boas-vindas para \na agua em minha propriedade e depois a direciono para onde residira no solo"\n, ele explica, rindo.\n\n"O solo," explica, "eh como uma lata. A lata precisa segurar toda a agua. \nVossorocas e erosao sao como buracos na lata que permitem que a agua e a \nmateria organica escapem. Estes precisam ser tampados."\n\nO " centro de imigracao" de Sr. Phiri serve tambem de medidor de chuva, \nporque sabe que se encher tres vezes durante uma estacao, infiltrou chuva \nsuficiente ate o lencol freatico para durar dois anos.\n\nO reservatorio menor direciona a agua via uma manilha para uma cisterna \nlivre de ferrocimento que alimenta o quintal durante as secas. Tem outra \ncisterna de ferrocimento, sombreada por um pe de maracuja luxuriante, que \ncapta a agua do telhado. Alem destas duas cisternas , todas as estruturas \nde captacao de agua na propriedade visam infiltrar a agua no solo o mais \nrapido possivel. Perto da casa ha uma pia externa onde as aguas servidas \nescoam para uma cisterna subterranea , forrada de pedras secas, onde a agua \nrapidamente infiltra.\n\nDo topo da divisoria de aguas ate o fundo existem varias estruturas para \na captacao de agua como represas de retencao, gabioes, terracos, valas de \ninfiltracao ( "swales"), e "covas de fruicao".\n\nO governo colocou valas de escoamento na regiao toda muitos anos atras, mas \nestas foram feitas fora das linhas de contorno para acabar com a erosao em \nlaminas, levando a agua das tempestades para um dreno central. O problema de \nerosao resolveu-se, mas as terras acabaram sendo roubadas da sua agua. Assim,\n Sr. Phiri cavou grandes "covas de fruicao" 10X 6X 4 pes no fundo de todas \nas suas valas. Quando chove, a agua enche a primeira cova e o excedente enche \no seguinte , continuando assim ate os limites da propriedade. Muito depois \no fim da chuva, a agua continua nas covas, infiltranda no solo. Em volta das \ncovas capins grosseiros sao cultivados para controle de erosao, para cobertura \ndas casas, e venda.\n\nMuitas arvores de fruta vigorosas foram plantadas por Sr. Phiri ao longo \ndessas valas para fornecer alimentos, sombra, e quebra-ventos. Sao \nalimentadas estritamente pelas chuvas e o lencol freatico, que vai se \naproximando a superficie. Como Mr. Phiri explica: "Cavo valas e covas \nde fruicao para plantar a agua para que possa germinar em outro lugar."\n\n" Ensinei o meu sistema as arvores,"continua. "Elas entendem-no e aa minha \nlinguagem. As coloco aqui e digo 'Olha, a agua esta aqui. Vao a procura." \nNenhuma bacia nem divisoria para segurar ou negar a agua eh colocada em \nvolta delas; as raizes sao encorajadas a se esticarem e encontrar a agua.\n\nUma mistura diversa de culturas nao-hibridas como abobora, milho, pimenta, \nberingela, taboa para cestas, tomate, alface, espinafre, ervilha, alho, \nfeijao, maracuja, manga, goiaba, e mamao, juntamente com arvores nativas \ncomo matobve, muchakata, munyii, e mutamba sao plantadas entre as valas. \nEsta diversidade oferece seguranca alimentar porque na falha de alguma \ncultura devido a seca, doenca, ou praga, outras sobreviverao. A utilizacao \nde culturas nao-hibridas garante que Mr. Phiri possa colecionar, selecionar,\n e utilizar as suas proprias sementes de um ano para outro.\n\nHa uma abundancia de plantas fixadoras de nitrogenio. Guandu eh um \nexemplo, e serve tambem para forragem e cobertura morta. Sr. Phiri \npercebeu que solos fertilizados quimicamente nao infiltram nem seguram \nagua muito bem. Como diz: "Voce aplica o fertilizante um ano, e nao no \nano seguinte, as plantas morrem. Voce aplica esterco e plantas fixadoras d\ne nitrogenio uma vez, e as plantas continuam a prosperar varios anos em \nseguida. Solo fertilizado quimicamente eh amargo."\n\nOs alimentos e as frutas que Mr. Phiri produz estao longe de serem amargos.\n Ele tem sido generoso na sua abundancia, dando mudas de arvores para quem \nquisesse. Infelizmente, como ele mesmo aponta, a maioria das arvores que \nele doa morrem se nao foram implementadas as tecnicas de coleta de agua a\nntes do plantio. Ele propaga as arvores em sacos velhos de arroz e graos \nperto de um dos pocos a ceu aberto no fundo da propriedade. Ele descreve os \npocos com outra analogia: "A agua eh como o sangue -- eh sempre atraida aa \nferida. As vossorocas sao feridas. O sangue vai ate a ferida para sana-la. \nSe faz com gabioes e valas de nfiltracao onde a vossoroca se enche de solo \nfertil." Com este conhecimento Mr. Phiri cavou tres pocos no fundo da sua \npropriedade sabendo que a agua coletada no seu terreno infiltraria no solo \ne achar seu caminho ate as feridas no fundo da propriedade.\n\nO solo eh sua bacia de captacao. Nos tempos da seca, os pocos dos \nvizinhos secam (mesmo aqueles mais profundos do que os dele) mesmo \nassim os seus pocos sempre contem agua "dentro da qual posso mergulhar \nmeus dedos", porque ele repoe de longe mais agua dentro do seu solo.\n\nComa excecao de um poco que eh forrado e munido de uma bomba manual para \nagua de uso domestico, os outros sao forrados com pedras secas. "Estes \npocos" ele explica, "sao aqueles do homen generoso. A agua vem e vai como \nquiser, porque , como voce ve, no meu terreno ela se encontra em todo lugar."\n\nEm tempos de seca severa, Sr. Phiri tira agua destes pocos para irrigar \nculturas anuais nos campos vizinhos. Ele utiliza uma bomba conhecida como \nShaduf Egipcio, que nao passa de uma bomba manual que utiliza um pneu \nvelho de trator para bombear a agua.\n\nUma manivela abre e fecha a bexiga (o pneu) como um acordeao, criando a \nsuccao necessaria. Um brejo natural luxuriante se encontra abaixo dos \npocos no ponto mais baixo da propriedade. Aqui Sr. Phiri pratica aquacultura \nem tres reservatorios. Conforme os dois menores vao secando, os peixes sao \ncoletados ou realocados ao grande. Eh aqui onde Sr. Phiri instalou uma \nplantacao densa de bananeiras! Terras secas de todo lado, mas na sua \npropriedade uma floresta de bananeiras! Cana de acucar, taboa, e capins \ncomo capim elefante tambem sao plantadas nos embancamentos para segurar \no solo. O gado se beneficia desta vegetacao densa, plantadas para filtra \na agua antes que entre no reservatorio. Esta forragem nobre eh reservada \npara as vacas prenhas.\n\nNo comeco Sr. Phiri era obrigado a aparecer diante do tribunal tres vezes \npor violacao das leis que proibem cultivacao nos brejos. Estas eram leis \ndos tempos coloniais. Finalmente, na terceira audiencia, ele conseguiu \nconvencer o juiz a visitar a sua propriedade. Ao ver o trabalho feito, o \njuiz arquivou a denuncia na hora.\n\nDentro do solo desta propriedade jazem os rios Tigirs e Euphrates; os \nreservatorios sao onde vem aa superficie. O ciclo do Jardim de Eden de Sr.\n.Phiri, que comeca a ser percebido depois de 30 anos de obscuridao e as \nvezes desprezo, continua a crescer. Das ultimas tres decadas ele diz: "Claro,\n eh um processo lento, mas eh a VIDA. Lentamente implemente os projetos, e \nconforme a sua vida comece a rimar com a Natureza, logo outras vidas comecam \na rimar com a sua." Ele, em conjunto com a ONG que criou, O Projeto Zvishavane \nde Recursos \nHidricos "( Zvishane Water Resources Project), espalham suas tecnicas. Ele \ninfluenciou CARE Internacional na sua regiao ao ponto de, em vez de \ndistribuir alimentos, eles agora implementam os seus metodos para que as \npessoas possam plantar seus proprios alimentos.\n\nEle tem visitado escolas onde os professores estavam em greve devido aa \nfalta de agua e aas condicoes dificeis em salas de aula empoeiradas e \nsacudidas pelos ventos. Ele ensinou os professores e estudantes como colher \na agua da chuva, e juntos transformaram as escolas em jardins luxuriantes, \neliminando o motivo de greve. "Lembre que as criancas sao as nossas flores,\n"diz Sr. Phiri, "de-lhes agua que crescerao e florescerao."\n\nO projeto de Mr. Phiri trabalha localmente ( uma grande razao pelo \nsucesso) . Mesmo assim o Projeto sempre precisa de fundos. Se voce \ngostaria de ajudar, escreva Sr. Zephania Phiri Maseko, ZWRP, PO Box \n118, Zvishavane, Zimbabwe.\n\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n2)\n\nFrom: "Marsha Hanzi" <hanzibra@svn.com.br>\nSubject: Curso_de_Permacultura:_O_Sitio_Abundante: ultima_chamada-\nOportunidade para transformar o Sertao?\nDate: Fri, 10 Mar 2000 02:56:30 -0300\n\nPrezados Amigos,\nConvido voces a participarem no curso Permacultura : O Sitio Abundante, \na acontecer este fim de semana, no nosso sitio em Areias, perto de Jaua. \n Eh uma oportunidde de voce aprender todas os segredos de produzir seu \nproprio alimento enquanto recupera um pedaco da Mae Terra. O curso abordara \ntodos os aspectos da producao no sitio , incluindo hortas, agroflorestas \n( frutas e madeiras), rocas, e sistemas para galinhas. \n\nEste curso e ideal para donos de sitios que desejem torna-los abundantes,\n mas e tambem um ponto de partida excelente para profissionais e estudantes \nque desejem dedicar as suas vidas a trabalhos de regeneracao social e \necologica.\n\nSe voce ainda nao comprou um sitio , mas sonha um dia sair da loucura da \ncidade, este seria o curso para voce! Assim, na hora de escolher uma \nterra, pode faze-lo com consciencia, escolhendo um terreno onde seus sonhos \nse realizem efetivamente. Assim, evita-se comprar uma terra errada.\n\nO custo do curso: R$70, incluindo material didatico e almoco ( pode \ndividir se for necessario) Qualquer duvida entrar em contato comigo \n((071) 3781115).\n\nSe voce nao tem tempo de participar no curso, podemos fazer uma consultoria \nno seu proprio sitio/fazenda, onde olhamos tudo juntos, avaliando o \npotencial e criando estrategias para a producao. (Tudo que eh falado se \nentrega tambem por escrito). Esta visita normalmente eh o suficiente para \ndar a partida a um projeto. E ficaremos sempre disponiveis para duvidas e \nperguntas. Tudo que precisamos para criar solucoes para o nosso pais e o \nnosso planeta ja eh conhecido-- so falta agora implantar no maior numero de \nlugares possiveis.\n\nSe voce eh um urbanito/a declarado/a mas gostaria de investir num mundo \ndiferente , pode transformar-se num "eco-anjo", patrocinando a doacao de \nlivros de Permacultura para escolas rurais, quer seja da sua escolha, quer \nseja atraves da gente, para Tucano, no Sertao baiano onde esta nascendo um \nmovimento vigoroso de agroecologia adaptado ao Sertao. Temos dois livros: \n"Permacultura: O Sitio Abundante", que e um manual para donos de terra, \n(R$10) e "Agrofloresta para Criancas" (R$12), que e para professores. \nModestia a parte, sao pequenos livros transformadores, ja que trabalham com \no novo paradigma de cooperacao com a Natureza. eh o primeiro passo para parar \na destruicao do nosso Planeta...\n\nPara fazer a doacao, e simplesmente depositar o valor na conta Bradesco /\nAgencia 1640-3 /Conta Poupanca 4020221 - 8 /Em nome de Marsha Hanzi, \navisando em seguida da sua doacao( por e-mail ou pelo telefone (071) \n378 1115), que seria anotado dentro do livro doado-- assim o aluno/\nprofessor saberia quem foi seu padrinho ( sua madrinha). Neste momento \nprecisariamos da doacao de 200 livros de Agrofloresta para as escolas da \nregiao de Tucano e de 50 livros de "O Sitio Abundante" para os alunos de \ntecnicas agricolas daquela cidade. Este \nlivrinho foi escolhido pelos professores como o manual do ano, mas a \nprefeitura nao dispoe de verba para a compra,( mas ja contribuiu com o \nfinanciamento dos cursos para professores rurais).. eh uma regiao em \ncolapso por causa do colapso da agricultura, mas com este movimento , \nacho que transformara-se numa regiao de abundancia, servindo como exemplo \npara o restante do Sertao. \nFico a disposicao para quaisquer duvidas. Atenciosamente, Marsha Hanzi \n/Instituto de Permacultura da Bahia / http:/www.geocities.com/oliarte
!Osborne checklist\n\nTo provide different perspectives for dealing with problems/topics/tasks. Use in the discussion and planning process.\n\nThe Osborne checklist is used to reformulate an original task, topic or problem by reshaping the perspective from which it is approached. Use the checklist in small groups and give each group one or two different questions from the checklist, After brainstorming the questions in the group. judge the validity of the resulting ideas for the topic you are dealing with.\n\nChecklist\n\n * WHAT IS SlMIlAR? Same function; similar appearance; similar material; parallel conclusions.\n * OTHER POSSIBLE USES? New applications. Change the target group or audience. New uses by changing the subject.\n * ADAPT. What are ideas suggested? Are these examples from history or experience? What could be adapted from these experiences? What would be a good example?\n * CHANGE IT. Give it a new form. Change aim and objective. Change the taste, colour, sound, smell, or appearance. Imagine other changes to the subject.\n * AMPLIFY IT. What could we add? How could we make it stronger or more resistant? Could we add another value? Multiply it. Make it more expensive. Over-dimension it.\n * REDUCE IT. What aspect could be left out? What would be the minimum size of group? of material? How can we separate it into smaller parts? Lower? shorter? flatter?\n * REPLACE IT. What can we replace? What other parts could be added? What material? people, processes, energies. locations could replace the foreseen ones? Replace solutions?\n * REDESIGN IT. Group parts differently. Develop new models. Change the sequence. Exchange causes impact. Reduce speed; speed up.\n * PUT UPSIDE-DOWN. Take the negative, not the positive. Try to reach the opposite. Bring upside-down. Change the roles and functions. Start from the end.\n * COMBINE IT? Try a mixture. Link it with other elements. Select and regroup things. Link different actions together. More goals. More objectives. More fields of applications.\n
!O absurdo da agricultura moderna\npor José Lutzenberger\n\nNa controvérsia reinante atualmente em torno da biotecnologia, como vem\nsendo aplicada à agricultura, existe muita desinformação resultando em\npreocupação desnecessária em algumas áreas e uma muito mais séria falta de\npreocupação em outras. É preciso olhar o quadro completo para poder\nentender porque e como a produção agrícola é cada vez mais dominada por\ncorporações gigantes. Nos dias de hoje, o quase total controle da\nbiotecnologia pelas grandes empresas é apenas a culminação de um processo\nque vem crescendo nos últimos 75 anos. Vamos analisar o panorama da\nagricultura segundo a perspectiva atual.\nA agricultura foi inventada entre 10 e 15 mil anos atrás, e nos últimos 2\nou 3 mil anos evoluiu para belas e sustentáveis culturas camponesas,\nlocalmente adaptadas e sustentáveis, em muitas regiões do mundo,\nespecialmente na Europa, Ásia, México, América Central, Andes, e em algumas\nregiões na África. Desde o início da colonização, agricultores americanos,\napesar de muitos desastres, tais como as tempestades de poeira, também\ndesenvolveram belos sistemas agrícolas, que estavam se tornando\nsustentáveis. Muitas dessas culturas ainda estavam intactas até o final da\nSegunda Guerra Mundial. As poucas remanescentes estão agora sendo\ndesestruturadas. \nA indústria tem conseguido sucessivamente se apropriar de uma parte\ncrescente das atividades dos agricultores, tomando deles tudo o que permite\na ela a obtenção de lucros seguros e deixando-lhes os riscos - o risco de\nmá colheita devido a mau tempo e o risco de perder dinheiro devido à\ncrescente dependência de insumos agrícolas que devem ser adquiridos a\npreços crescentes e tendo que vender seu produto a preços cada vez mais\nbaixos. \nO argumento convencional em favor dos métodos da agricultura moderna é que\neles constituem a única maneira eficiente de resolver o problema da fome\nmundial e da alimentação das massas que ainda estão por vir com a explosão\npopulacional. Mas isto é uma ilusão. É certo que os métodos agrícolas\ntradicionais poderiam ser aperfeiçoados com o conhecimento científico atual\nde como as plantas crescem, da estrutura do solo, da química e vida do\nmesmo, bem como do metabolismo das plantas e assim por diante. Mas o\naperfeiçoamento não precisa ser direcionado para monoculturas gigantescas,\naltamente mecanizadas e com toda a parafernália dos fertilizantes\ncomerciais e venenos sintéticos, com a produção agrícola sendo transportada\npelo mundo todo. A grande monocultura foi uma invenção do colonialismo. \nOs poderes coloniais não podiam extrair muito do campesinato tradicional\ncom suas safras altamente diversificadas, para a subsistência e\ndirecionadas para os mercados regionais e locais. Eles queriam grandes\nquantidades de algodão, açúcar, café, chá, cacau e outros. Isto conduziu à\nmarginalização de milhões de pessoas e também esteve na raiz do tráfico de\nescravos da África para as Américas, uma das maiores calamidades da\nhistória humana.\nMas, o problema fundamental com a agricultura moderna é que ela não é\nsustentável. Mesmo se fosse tão produtiva quanto é afirmado, o desastre\nseria apenas postergado e seria então muito pior. Se quisermos alimentar as\nmassas crescentes - é claro que deveremos encontrar também maneiras de\ncontrolar nossos números - teremos de desenvolver métodos de produção\nagrícola sustentável.\nCom muito poucas exceções os camponeses tradicionais desenvolveram métodos\nsustentáveis. Os agricultores chineses, por exemplo, por três mil anos\nobtiveram alta produtividade dos seus solos sem comprometer a fertilidade.\nAo contrário, eles desenvolveram e mantiveram uma fertilidade máxima do\nsolo. Os agricultores regenerativos modernos estão aprendendo a se tornar\ncada vez mais sustentáveis, com colheitas ótimas e métodos localmente\nadaptados, enquanto recuperam e mantém a biodiversidade nos seus cultivares\ne na paisagem circundante. Vamos chamá-los agricultores regenerativos, e\nnão biológicos, orgânicos ou alternativos. \nQuando se trata de vida, seja bom ou mau, tudo é biológico, é orgânico,\nmesmo grandes massacres. Alternativo apenas significa diferente, poderia\nser pior. Mas regenerativo significa regeneração do que tem sido perdido ou\ndestruído. \nA agricultura moderna tem se desligado da lógica dos sistemas vivos\nnaturais. Todos os ecossistemas naturais possuem retroação interna\nautomática que, desde o começo, tal como quando um novo pedaço de terra\nestéril, digamos, a encosta de um vulcão, é conquistado, faz as condições\nambientais melhorarem até que um clímax de atividade biológica máxima e\nsustentável seja atingido. Nossos ecossistemas de agricultura moderna fazem\nexatamente o oposto, ao impor retroações (agroquímica, agressão mecânica ao\nsolo) que gradualmente degradam o meio ambiente e empobrecem a\nbiodiversidade.\nInfelizmente, a agricultura moderna obtém sucesso exaurindo o solo e\nsubstituindo a fertilidade perdida por nutrientes que vêm de fora.\nFertilizantes comerciais, tais como fosfatos provém de minas que estarão\nbrevemente esgotadas, as minas de potássio são mais abundantes, mas\nnitrogênio, o mais importante elemento na produtividade da agricultura\nmoderna, embora venha da atmosfera, uma fonte virtualmente inesgotável e\npara lá acaba voltando, é obtido pela síntese de amoníaco Haber-Bosch, um\nprocesso que consome enormes quantidades de energia, principalmente energia\nde combustíveis fósseis. Mesmo quando é energia proveniente de\nhidroelétricas, trata-se de eletricidade que poderia estar economizando\ncombustíveis fósseis em outro lugar. Todos os outros insumos, tais como os\nagrotóxicos e a cada vez mais pesada maquinaria, são também grandes\nconsumidores de energia.\nMas a agricultura, se a olharmos de uma perspectiva holística, ecológica, é\num esquema para colher energia solar via fotossíntese. Enquanto todas as\nformas de agricultura tradicional têm um balanço de energia positivo, a\nagricultura moderna perverte até mesmo este aspecto fundamental. Em sua\nmaior parte, tem balanço de energia negativo. Quase todas as suas operações\nsupostamente de alta produtividade requerem mais energia fóssil nos insumos\ndo que está contido em seu produto. Para usar uma metáfora adequada, isto\ntem se tornado como um poço de petróleo onde o motor que aciona a bomba\nconsome mais combustível do que ela pode extrair. Este tipo de operação só\npode sobreviver com subsídios...\nSustentam que a agricultura moderna é tão eficiente que apenas em torno de\n2% da população pode alimentar o total da população. Até a virada do\nséculo, na Europa, nos Estados Unidos e na maioria dos países, quase 60% da\npopulação trabalhava no campo. No final da última Guerra Mundial ainda era\nquase 40%. Atualmente, nos Estados Unidos, menos de 2% da população\ntrabalha na agricultura. Na maioria dos países europeus o número está se\naproximando aos 2%, visto que ainda continua a marginalização de\nagricultores. Agora, quando se afirma que nas economias modernas somente 2%\ndas pessoas podem alimentar a população total, em comparação a 60 ou 40% no\npassado, isto é, ou uma ilusão para os que acreditam ou uma mentira para os\nque sabem, baseada numa falsa comparação. \nNo contexto da economia, como um todo, o antigo campesinato era um sistema\nde produção, manipulação e distribuição de alimento que também produzia\nseus próprios insumos. A fertilidade do solo era mantida com esterco,\nrotação de cultivos, plantas companheiras, adubação verde, composto,\ncobertura morta e descanso da terra; as sementes eram selecionadas do\nmelhor de cada safra; animais de carga e tração supriam a energia; os\nmoinhos usavam vento ou água como fonte de energia. Tudo era energia solar.\nA pouca manipulação ou beneficiamento que os alimentos sofriam era feita na\npropriedade ou na aldeia, cujos artesãos também contavam como população\nrural. O mesmo se aplicava aos utensílios, arados, enxadas, carretas,\netc... A maior parte da produção agrícola era entregue quase nas mãos do\nconsumidor na feira semanal. Em nossa língua sobra uma linda relíquia\ndaqueles tempos: segunda, terça, quarta-feira.\nMas o agricultor moderno é apenas uma pequena engrenagem em uma enorme\ninfraestrutura tecnoburocrática que requer até mesmo legislação especial e\npesados subsídios. Comparado com seus antecessores que faziam quase tudo\nque estava relacionado com a produção, processamento e distribuição de\nalimentos, ele não é muito mais do que um tratorista e um espalhador de\nveneno.\nDepois da última Guerra Mundial, quando a Alemanha estava totalmente\ndevastada, é verdade que o Plano Marshall ajudou, mas, mais importante é\nque os habitantes das cidades podiam se espalhar pelo campo e fazer\n"hamstern", isto é, trocar qualquer coisa de valor, um relógio, um anel, um\npiano, por alimento. Os camponeses tinham comida, tinham cereais, feijão,\nbatata, verduras, frutas, leite, queijo, frango, ganso, e muito mais.\nNão seria necessária uma guerra hoje para colocar os agricultores europeus\nem uma posição em que eles próprios teriam de fazer "hamstern", mas onde?!\nNenhuma bomba precisa cair. Um simples colapso na energia, no transporte,\nespecialmente na importação de fertilizantes minerais e ração para gado, no\nsistema bancário e mesmo nas redes de computadores e comunicações, seria\nsuficiente. Espantoso, que os militares não pareçam estar preocupados. \nFundamentalmente, a segurança nacional depende de uma agricultura sadia e\nsustentável.\nO sistema atual de produção e distribuição de alimentos (incluindo fibras e\nalguns outros itens não comestíveis) começa nos campos de petróleo e todos\nos tipos de minas para metais e outras matérias-primas, passa pelas\nrefinarias, siderurgias e plantas de alumínio, etc., a indústria química, a\nindústria de maquinária, o sistema bancário, o envolvente sistema de\ntransporte (consumindo principalmente combustíveis fósseis), computadores,\nsupermercados, indústria de embalagens e um totalmente novo complexo de\nindústrias que quase não existiam no passado - a indústria de manipulação\nde alimentos que mais mereceria ser chamada de indústria de desnaturação e\ncontaminação de alimentos (com aditivos e resíduos de agrotóxicos). Se\nquisermos comparar o agricultor de hoje com o tradicional, então todas as\nhoras de trabalho nas indústrias acima mencionados e algumas outras, assim\ncomo alguns serviços, tal como as empresas de "fast food" que, em inglês,\nbem merecem o qualificativo de "junk food" (comida entulho), e distribuição\nde alimentos, até onde elas direta ou indiretamente contribuem para a\nprodução, manipulação e distribuição de alimentos, precisam ser\nadicionados. \nIsto tudo deveria até mesmo incluir as horas de trabalho que correspondem\nao dinheiro que, em outras profissões, precisa ser ganho para pagar os\nimpostos que financiam os subsídios. É significativo que a maior parte dos\nsubsídios vai, não para o agricultor, mas para o complexo industrial. O\nagricultor é sempre mantido à beira da falência.\nUm balanço completo deste tipo certamente mostraria que, atualmente, numa\neconomia moderna, também em torno de quarenta ou mais por cento de todas as\nhoras de trabalho vão para a produção, manipulação e distribuição da\ncomida. Mas os economistas convencionais de hoje, aqueles que nossos\ngovernantes escutam, em sua visão não holística, colocam as fábricas de\ntratores e colheitadeiras com a indústria de maquinária, as fábricas de\nfertilizantes químicos e agrotóxicos com a indústria química e assim por\ndiante, como se não tivessem nada a ver com alimentos. O que temos, então,\ncom umas poucas exceções, é redistribuição de tarefas e certas formas de\nconcentração de poder nas grandes corporações, e não mais eficiência na\nagricultura.\nVamos olhar com mais detalhe para alguns dos aspectos decisivos: quase\nsempre o moderno sistema de produção e distribuição de alimentos, além de\nnão ser mais produtivo em termos de eficiência de mão de obra, tampouco é\nmais eficaz em termos de produtividade por hectare. Em muitos casos, tais\ncomo na criação intensiva de animais, ele é mesmo destrutivo, consumindo\nmais alimento do que produz. \nNo sul do Brasil, durante a última metade do século XX a grande floresta\nsubtropical do Vale do Uruguai foi completamente demolida, deixando apenas\nalgumas pequenas relíquias. A floresta foi derrubada e queimada com a quase\ntotal destruição da madeira, para abrir espaço para a monocultura de soja.\nIsto não foi feito para aliviar o problema da fome nas regiões pobres do\nBrasil, mas para enriquecer uma minoria (pessoas sem tradição agrícola) com\na exportação para o Mercado Comum Europeu para alimentar gado. As\nplantações de soja estão entre as mais modernas - grandes, altamente\nmecanizadas e com os habituais insumos químicos. Essas plantações não são,\nde maneira alguma, atrasadas quando comparadas ao mesmo tipo de plantação\nnos USA. No nosso clima subtropical o agricultor tem a vantagem suplementar\nde poder plantar trigo, cevada, centeio ou aveia, mas também de fazer feno\ne silagem no inverno sobre o mesmo solo, mas poucas vezes o faz. Comparado\nao que os nossos colonos faziam em solos similares, a produtividade é\nbaixa, raramente mais do que três toneladas de grãos (total, verão e\ninverno) por hectare. \nO camponês, que produzia para alimentar a população local, facilmente\nproduzia 15 toneladas de comida por hectare, diversificando com mandioca,\nbatata-doce, batata inglesa, cana-de-açúcar e grãos, mais verduras, uva e\ntodos os tipos de frutas, feno e silagem para o gado, além de porcos e\ngalinhas. Mas ele não produzia PIB (produto interno bruto). O PIB só\nreflete fluxo de dinheiro, não leva em conta autosuficiência e mercadeio\nlocal. \nA conta do PIB interessa o banqueiro, o governo, as grandes corporações\ntransnacionais, nada tem a ver com o bem estar das pessoas, da população.\nQuando estatísticas das Nações Unidas declaram que quase a metade da\npopulação mundial vive com menos de dois dólares por dia, isso leva a\nfalsas conclusões. Ninguém viveria com dois dólares por dia se tivesse que\ncomprar sua comida, roupa, utensílios no supermercado ou Shopping Center.\nNo período áureo de nossa colonia no Rio Grande do Sul, anos trinta, o\ncolono podia não ter um tostão no bolso, mas sempre tinha mesa farta, vivia\nmuito bem. \nNão obstante esta realidade, a política agrícola oficial tem sempre apoiado\nos grandes às custas dos camponeses. Centenas de milhares deles tiveram que\ndesistir e partir para as cidades, freqüentemente para as favelas, ou mais\npara o norte em direção à floresta Amazônica. Uma devastação tremenda foi\nfeita com dinheiro do Banco Mundial no estado de Rondônia, e os pequenos\nagricultores que lá foram assentados, não sabendo como cultivar nos\ntrópicos e sem apoio, em geral fracassam, deixando para trás devastação,\nenquanto novas áreas da floresta são desmatadas. No Brasil central, o\ncerrado, o equivalente sul americano da savana africana, está hoje sendo\nquase totalmente destruído para dar lugar a mais plantações de soja, uma\ndas quais cobrindo centenas de milhares de hectares contíguos. Na sua\nbiodiversidade o cerrado é tão valioso quanto a floresta tropical, e\neventualmente, até mais.\nNum exemplo concreto também se argumenta que os índios camponeses em\nChiapas, México, que estão agora lutando pela sua sobrevivência,\nrebelando-se contra o NAFTA (o Mercado Comum Norte Americano), são\natrasados, eles produzem somente duas toneladas de milho por hectare\ncomparado com seis nas plantações mexicanas modernas. Mas isso é somente\nparte do quadro, as plantações modernas produzem seis toneladas por hectare\ne é só. Mas os índios produzem uma colheita mista, entre seus pés de milho,\nque também servem para suporte de variedades de feijão que são trepadeiras,\neles plantam legumes, abóbora, morangas,batata doce, batata inglesa,tomate\ne todo tipo de vegetais, frutas e ervas medicinais. A partir do mesmo\nhectare eles também alimentam seu gado e galinhas. Eles facilmente produzem\nquinze toneladas de alimento por hectare e tudo sem fertilizantes\ncomerciais ou pesticidas e sem assistência dos bancos, governos ou\ncorporações transnacionais.\nA marginalização de tais pessoas é a continuação de um dos maiores\ndesastres dos tempos modernos. Ao chegar nas favelas das cidades terão de\ncomprar comida cultivada em monoculturas que são menos produtivas do que\neram eles. Em última análise existe então menos comida e mais pessoas para\nalimentar. Existe excesso em alguns lugares e falta noutros.\nFreqüentemente sua terra é então tomada por criadores de gado que raramente\nproduzem mais do que 50 quilos de carne/hectare/ano. Centenas de histórias\nsimilares poderiam ser contadas. No caso de Chiapas, cada vale tinha sua\nlíngua e cultura diferentes. Acima de todas as calamidades pessoais, quando\na terra perde seus camponeses, temos genocídio cultural!\nNo caso da criação em massa de animais para carne e ovos, os métodos são\nabsolutamente destrutivos, muito mais alimento para humanos é destruído do\nque produzido. As galinhas em seus tristes campos de concentração ou\nfábricas de ovos, eufemisticamente chamadas de "granjas" são alimentadas\ncom rações "cientificamente equilibradas", consistindo de grãos de cereais,\nsoja, torta de óleo de palma ou de mandioca, muitas vezes com farinha de\npeixe. \nConhecemos casos no Brasil onde sua ração contém leite em pó, proveniente\ndo Mercado Comum Europeu... Isto as coloca então numa posição de competição\ncom os humanos, nós as alimentamos com nossas lavouras. Um absurdo total se\no propósito é contribuir para resolver o problema da fome mundial. Na\nagricultura tradicional as galinhas comiam insetos, minhocas, esterco,\nervas, capim e restos de cozinha e de colheita, desta maneira aumentando a\ncapacidade de sustento das terras dos agricultores para\nhumanos. Agora elas a diminuem. Nestes esquemas, a razão de transformação\nda ração em alimento humano é próxima de vinte para um. Precisa-se levar em\nconsideração que metade do peso dos animais vivos - penas, ossos,\nintestinos - não é consumida por nós e também é preciso considerar que as\nrações desidratadas e concentradas com um alto consumo de energia até o\nmáximo de 12% de água, enquanto a carne contém até 80%. Nos galpões de\nengorde, as operações mais eficientes usam em torno de 2,2Kg de ração para\nobter 1Kg de peso vivo, metade da qual é alimento humano. Então 2,2 para 1\nse torna 4,4 para 1. Corrigindo o conteúdo\nde água: 4,4 vezes 0,88 e 1 vezes 0,2 obtém-se 3,87 para 0,2, igual a 19,36\npara 1. Quando se trata de gado bovino confinado, como nos "feed lots" de\nChicago, a relação é umas cinco vezes pior.\nMais recentemente, algumas de nossas granjas "aperfeiçoaram" um pouco esta\nrazão incluindo na ração rejeitos de galinhas abatidas antes, desta maneira\nforçando-as ao canibalismo(!). Outro aspecto absurdo disto tudo: as rações\n"cientificamente equilibradas" não contém nada verde, o mesmo acontece com\nos porcos. Mas galinhas e porcos são vorazes consumidores de ervas, \ngramíneas, frutos, nozes e raízes. Em nossos experimentos com agricultura\nsustentável na Fundação Gaia também os alimentamos com plantas aquáticas,\ncom grande sucesso - animais saudáveis, sem antibióticos, sem drogas, sem\nveterinários.\nAlém disso, nos campos de concentração de galinhas e fábricas de ovos,\nassim como nos modernos calabouços de porcos, as pobres criaturas vivem sob\ncondições de extremo estresse.\nÉ tempo de acabar com a mentira de que apenas a agricultura promovida pela\ntecnocracia pode salvar a humanidade da inanição. O oposto é verdadeiro. É\npreciso uma nova forma de balanço econômico que, a medida que soma o que é \nchamado "produtividade" ou "progresso" na agricultura, também deduza todos\nos custos: as calamidades humanas, a devastação ambiental, a perda da\ndiversidade biológica na paisagem circundante e a ainda mais tremenda perda\nde biodiversidade em nossos cultivares. Este segundo aspecto será agora\nenormemente agravado com a biotecnologia dominada pelas grandes empresas,\ncomo veremos mais adiante. E, mais importante e decisivo, a não\nsustentabilidade disto tudo. Temos o direito de agir como se fóssemos a\núltima geração?\nNo caso de operações industriais envolvendo galinhas é fácil ver como tais\nmétodos destrutivos se desenvolveram. Estou falando do que observo no sul\ndo Brasil - o Brasil é um grande exportador de carne de galinha,\nprincipalmente para o Oriente Médio e Japão. A partir de esquemas muito\nsimples, onde pequenos empresários individuais confinavam galinhas num\ngalpão e as alimentavam com milho, o sistema coalesceu e cresceu até um\nponto onde, atualmente, existem em torno de meia dúzia de companhias muito\ngrandes e umas poucas pequenas. Os grandes abatedouros abatem e processam\naté centenas de milhares de galinhas por dia. Eles operam de acordo com\nregras impostas por eles, chamadas por eles "integração vertical". O\n"produtor" assina um contrato onde aceita comprar todos os seus insumos,\npintinhos, ração e drogas da companhia. Mesmo que ele seja um agricultor e\ntenha uma grande produção de grãos, ele está proibido de usá-la para\nalimentar suas galinhas.\nEle é obrigado a comprar a ração pronta, mas pode vender o seu milho para a\nfábrica de ração que pertence à mesma companhia proprietária do abatedouro\ne da incubadeira que produz os pintos. Estes operam um tipo diferente de\ncampo de concentração de galinhas onde os prisioneiros são galos e\npoedeiras, um galo para cada dez galinhas. As galinhas não estão em\npequenas gaiolas como nas fábricas de ovos, elas podem se mover livremente\ndentro do galpão e pular para dentro de amplos ninhos para pôr os ovos. Nas\noperações de esteiras rolantes das fábricas de ovos, chamadas baterias, as\npobres poedeiras estão confinadas, três em cada gaiola, sobre uma grade de\narame e os ovos rolam para fora. Os pintos produzidos nestas incubadeiras\nnão são mais de raças tradicionais de galinhas, eles são de marcas\nregistradas e são híbridos. Assim como o milho híbrido, não podem ser\nreproduzidos com manutenção de características raciais.\nApós comprar todos os seus insumos da companhia com a qual assinou\ncontrato, ele poderá vender somente para a mesma. O produtor não é\nautorizado a vender a empresas concorrentes, estas não comprariam. Assim,\nele pode ter a ilusão de ser um pequeno empresário autônomo, mas sua\nsituação real é a de um operário com horas de trabalho ilimitadas, sem\nfins-de-semana, feriados nem férias e ainda tem que pagar sua própria\nprevidência social. Se a grande companhia trabalhasse com empregados de\ncarteira assinada, ela não poderia fazê-lo, seria muito caro e muito\narriscado. Desta maneira deixam todos os riscos com o produtor: perda por\ndoenças ou custos adicionais com drogas e antibióticos, choque de calor, um\ndesastre comum durante os dias quentes de verão, quando centenas ou\nmilhares de galinhas morrem nos abarrotados e mal ventilados galpões, e\nperdas durante o transporte. As galinhas que morrem nos caminhões da\ncompanhia no trajeto ao abatedouro são também descontadas.\nOs seus lucros também diminuem constantemente com o crescente preço dos\ninsumos e a queda do faturamento com as vendas. A margem do produtor é tão\napertada que, mesmo se tudo for bem, mas se for preciso alimentar os\nanimais mais alguns dias, o lucro pode evaporar ou mesmo se transformar em\nperda. Esta é uma ocorrência comum. O abatedouro agenda suas viagens de\ncoletas de galinhas prontas de acordo com sua própria conveniência. Mas se\na companhia obtém lucros excepcionais no mercado de exportação, nada vai\npara o produtor...?\nPortanto, os campos de concentração de galinhas não têm nada a ver com\nmaior produtividade para ajudar a salvar a Humanidade da inanição - de\nfato, eles contribuem ao problema - mas eles concentram capital e poder\npela criação de dependência.\nEstes métodos não foram inventados pelos agricultores. É impensável que um \nagricultor em uma cultura camponesa sadia tivesse a idéia de alimentar\nmassissamente suas galinhas com grãos, a menos que fossem grãos estragados,\ne isolá-las de sua fonte natural de alimentos, desta maneira desperdiçando\nparte da capacidade de sustentação do solo para humanos, destruíndo ao\nmesmo tempo parte de sua colheita. Estes métodos também não são resultado\nconcatenado de uma conspiração pela tecnocracia. Tais esquemas crescem\nnaturalmente a partir de uma "semente" inicial que pode ter tido uma\nintenção completamente diferente. Neste caso, como foi na agroquímica\ntambém, era o esforço de guerra. A conspiração cresceu depois ao longo do\ntempo. Durante a última Guerra Mundial, o governo americano iniciou\nosistema de subsídios para a produção de grãos, o qual conduziu a enormes\nexcedentes. Assim, as autoridades da agricultura procuraram "consumo não\nhumano" para os grãos... Integração vertical" é somente um estágio\nmomentâneo no processo de concentração de poder. Em breve eles encontrarão\nmaneiras de banir - por meio de legislação especial - a criação de galinhas\nsoltas (caipiras) por agricultores independentes. Já foi tentado, sem\nsucesso, mas, por dispositivos legais especiais, conseguiu-se tornar muito\ndifícil para pequenos agricultores a venda de ovos no mercado aberto.\nNo caso do milho híbrido, também não existia conspiração no início, ela\nveio mais tarde. Geneticistas descobriram que pelo cruzamento de duas\nvariedades super-puras de milho - variedades obtidas após oito a dez\ngerações de autofecundação - se obtém plantas de alta produtividade e\nuniformidade perfeita. Deve ter sido uma decepção quando descobriram que as\nvariedades não eram estáveis. Após ressemeadura, as variedades dessegregam\nde acordo com as leis de Mendel. A nova colheita era caótica - pés de milho\npequenos e grandes, uma espiga, muitas espigas, cores, formas e qualidades\nde grãos diferentes. Mas, do ponto de vista do vendedor de sementes, era\numa verdadeira vantagem! O agricultor não mais poderia guardar sua própria\nsemente, tinha que comprar sementes novas a cada ano. O vendedor não\nprecisava sequer da proteção de uma patente.\nFelizmente na maioria dos cultivos, especialmente grãos como trigo, cevada,\ncenteio e aveia, este tipo de hibridização ainda não é economicamente\nviável para os geneticistas. Eles estão tentando com todas as culturas que\npodem.\nFunciona com galinhas. No sul do Brasil foi necessário fundar uma\nassociação com o objetivo de preservar as raças tradicionais de galinhas. A\nmaioria estão agora em perigo de extinção. Algumas já se foram. Somente as\ncepas registradas de galinhas híbridas não\nestão ameaçadas (enquanto durar a loucura dos campos de concentração de\ngalinhas e fábricas de ovos). Quanto ao milho, quase todas as variedades\ntradicionais se foram. Se um agricultor quer plantar uma delas não ganha o\ncrédito do banco. Apenas as variedade "registradas" são aceitas. \nAtualmente, a manipulação genética direta, chamada biotecnologia, que opera\na nível de cromossomo, permite que o especialista assuma o controle,\ntirando o do agricultor. Mas, como a maioria dos produtos resultado da\nmanipulação genética direta não dessegregam na reprodução, como no caso dos\nhíbridos naturais, é preciso patentes. Retornaremos a este assunto.\nVejamos como nasceu a agroquímica Até final dos anos quarenta a pesquisa em\nagricultura visava soluções biológicas. A perspectiva era ecológica, embora\nmal se falasse em ecologia. \nSe esta tendência tivesse podido continuar, teríamos hoje muitas formas de\nagricultura sustentável, localmente adaptadas e altamente produtivas.\nComeçando nos anos cinqüenta a indústria conseguiu fixar um novo paradigma\n- nas escolas, na extensão e pesquisa agrícolas. Vamos chamá-lo paradigma\nNPK + V. NPK corresponde a Nitrogênio, Fósforo, Potássio, o V significa\nveneno.\nOs fertilizantes comerciais se tornaram um grande negócio depois da\nprimeira guerra mundial. Logo no começo da guerra, o bloqueio Aliado cortou\no acesso dos alemães ao salitre chileno, essencial para a produção de\nexplosivos. O processo Haber Bosch para fixação de nitrogênio a partir do\nar, mencionado acima, era conhecido mas ainda não tinha sido explorado\ncomercialmente. Os\nalemães montaram então uma enorme capacidade de produção e conseguiram\nlutar por quatro anos. O que seria o mundo se este processo não tivesse\nsido conhecido? A primeira guerra mundial não teria realmente se\ndesencadeado, não teria acontecido o Tratado de Versalhes, e portanto não\nteria havido Hitler...! Como uma tecnologia pode mudar o curso da história!\nQuando a guerra acabou, havia enormes estoques e capacidade de produção mas\nnão havia mais grande mercado para explosivos. A indústria então decidiu\nempurrar fertilizantes nitrogenados para a agricultura. Até então os\nagricultores estavam bastante satisfeitos com seus métodos orgânicos de\nmanutenção e aumento da fertilidade do solo. O guano e o salitre chileno\neram usados de maneira muito limitada, principalmente em cultivos muito\nespeciais, especialmente em jardinagem intensiva. Os fertilizantes\nnitrogenados na forma de sais quase puros e concentrados, fertilizantes à\nbase de nitrato e amônia, de certa forma viciam, quanto mais se usa mais se\nprecisa usar. Logo se tornaram um grande negócio. Então a indústria\ndesenvolveu um espectro completo, incluindo fósforo, potássio, cálcio,\nmicroelementos, mesmo sob a forma de sais complexos, aplicados na forma\ngranulada, algumas vezes de avião. \nA Segunda Guerra Mundial deu um grande empurrão para uma pequena e quase\ninsignificante indústria de pesticidas e realmente a projetou para a\nprodução em grande escala. Hoje o equivalente a centenas de bilhões de\ndólares em venenos são espalhados sobre todo o planeta. Durante a Primeira\nGuerra Mundial gás venenoso foi usado apenas uma vez, com efeitos\ndevastadores para ambos os lados, e por isso nunca mais foram empregados. \nDurante a Segunda Guerra Mundial gases não foram aplicados em batalha, mas\nmuitas pesquisas foram desenvolvidas. Bayer, entre outros, estava neste\njogo. Ela desenvolveu os ésteres do ácido fosfórico. Depois da guerra eles\ntiveram uma grande capacidade de produção e estoques e concluíram que o que\nmata gente também mata os insetos. Fizeram novas fórmulas e as\ncomercializaram como inseticida.\nO DDT era conhecido como uma curiosidade de laboratório. Quando Müller, na\nGeigy, descobriu que matava insetos sem, aparentemente, afetar as pessoas,\nalertou as forças armadas americanas que estavam sofrendo com a malária no\nPacífico, enquanto lutavam com os japoneses. Usaram-no de forma totalmente\ndescuidada, convencidos de que era inofensivo, espalhando-o sobre paisagens\ninteiras e até dentro de casas e sob a vestimenta das pessoas. \nPouco antes do fim da Guerra no Pacífico um cargueiro americano estava a\ncaminho de Manila com uma carga de potentes fitocidas (biocidas que matam\nplantas) do grupo 2,4-D e 2,4,5-T. A intenção era matar de fome os\njaponeses destruindo suas colheitas através da pulverização do veneno desde\no ar. Tarde demais. O barco teve ordem de voltar antes de chegar.\nOutro grupo de americanos acabara de jogar as bombas atômicas sobre\nHiroshima e Nagasaki, uma terrível história que todos nós conhecemos, e os\njaponeses assinaram o armistício. Mesma história: grande capacidade de\nprodução, enormes estoques sem compradores. A substância foi reformulada\ncomo "herbicida" e descarregada nos agricultores. Depois, durante a guerra\ndo Vietnam, as Forças Armadas Americanas impiedosamente espalharam o que\neles chamaram de "Agente Laranja" (e outras cores) sobre milhões de\nhectares de floresta tropical, pretendendo fosse somente um desfoliante\npara tornar visíveis as forças inimigas. De fato, estas formulações\ncontinham grandes concentrações de 2,4,5-T que destruiam totalmente as\nflorestas.\nA indústria, querendo preservar em tempo de paz o que tinha sido um grande\nnegócio em tempo de guerra, conseguiu dominar quase completamente a\npesquisa agrícola para redirecioná-la para seus próprios objetivos.\nConseguiu cooptar a pesquisa e extensão agrícola oficial, assim como\nescolas e, fazendo "lobby" a favor de legislação ou regulamentação\nadequadas e criando esquemas bancários de crédito (aparentemente) fácil,\ncolocaram o agricultor numa posição na qual dificilmente sobravam outras\nalternativas. \nAtualmente, o paradigma agroquímico é aceito quase sem questionamentos nas\nescolas agrícolas, na pesquisa e extensão. A maioria dos agricultores\nacredita nele e, freqüentemente, quando marginalizada, se culpa a si mesma\npor sua incapacidade para competir. \nTudo isso veio a existir não como uma conspiração deliberada por pessoas de\nmentes diabólicas, desenvolveu-se e estruturou-se de oportunismo em\noportunismo. A medida que uma nova técnica, processo ou regulamentação dava\nvantagem à alguém ou à alguma instituição, a respectiva tecnologia era\npromovida e ideologicamente consolidada. Alternativas que não encaixavam\ncom\nas crescentes estruturas de poder eram combatidas, ignoradas ou\ndesmoralizadas.\nAgora sim, no caso da biotecnologia na agricultura, controlada por grandes\ncorporações transnacionais, parece que temos uma verdadeira conspiração e\nque os danos serão muito mais irreversíveis do que os sofridos até agora.\nO principal problema aqui não é tanto se nossos alimentos se tornarão de\nqualidade inferior e até nocivos - apesar de que isso possa vir a ocorrer -\nmas, novamente, trata-se de adicionar ainda mais estruturas de dependência,\nde dominação, sobre os agricultores que ainda restam e uma limitação de\nescolhas para o consumidor.\nA fantástica diversidade de cultivares que tínhamos e ainda temos hoje,\ndepois das tremendas perdas causadas pela "Revolução Verde" durante as\núltimas décadas, é o resultado da seleção, consciente e inconsciente, por\nparte dos camponeses ao longo dos séculos e dos milênios. Pensemos somente\nna família das crucíferas - repolho, couve chinesa, rabanete, nabo,\nmostarda, couve-flor, brócoli, colsa e muitos outros. Nenhum destes\nagricultores jamais solicitou patentes, registro ou certificação...\nAgora, indústrias como a Monsanto querem que aceitemos sua manipulação\ndesta riqueza preexistente, como a soja "Roundup-ready", com o argumento de\nque eles apenas estão dando prosseguimento e acelerando este processo,\ncontribuindo assim para a solução dos problemas para alimentar a\nHumanidade. \nEles insistem mesmo de que não há outra saída. Mas eles sabem muito bem que\nexistem outras alternativas, melhores, mais saudáveis, mais baratas. \nTodo mundo sabe que a agricultura deve encontrar caminhos para se afastar\ndos venenos. Possuímos todos os conhecimentos necessários. Milhares de\nagricultores orgânicos em todo o mundo são prova disto. Com cultivares\nresistentes a herbicidas a indústria quer vender pacotes, semente +\nherbicida, obrigando o agricultor a usar herbicida, mesmo que ele não o\nnecessite, e a usar o herbicida da respectiva empresa. No caso de\ncultivares com o infame gen "terminator" a conspiração é ainda mais óbvia.\nCom esse tipo de semente eles nem precisam se incomodar em solicitar\npatentes. Tudo isto não tem nada a ver com aumento de produtividade, é a\nculminação do gradativo processo de desapropriação dos agricultores, para\ntransformar os sobreviventes em meros apêndices da indústria. Isto agravará\na marginalização, a desestruturação social, a devastação ambiental e a\nperda da biodiversidade na Natureza e em nossos cultivos, agravará o\nproblema da fome. \n\nJosé A. Lutzenberger, Porto Alegre 2002. Brasil, setembro de 2001. \n\nEnvie atachados para e.gaia@terra.com.br, evitando preocupacoes com Virus.\nO WebMaster rapidamente colocarah disponivel no http://ecosust.gaia.org.br\n
<div id='header' class='header' macro='gradient vert #ffff00 #009999 '>\n\n <div class='siteTitle' refresh='content' tiddler='SiteTitle'></div>\n \n <span id='topMenu' refresh='content' tiddler='MainMenu'></span>\n \n</div>\n <div id='mainMenu' refresh='content' tiddler='SideMenu'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>\n<!--}}}-->
!Permacultura
!Permaculture
!Permacultura - Principios\n[[Como arquivo em DOC|Themes-Handouts/Pemacultura/Portugues/Pmarshas definition.doc]]\n1) Quanto mais se aproxima da natureza, menos se trabalha. \nQuando criamos sistemas auto-sustentados, não precisamos trabalhar para alimentar e proteger os elementos do sistema. Uma floresta produtiva, uma vez estabelecida, exige muito pouco cuidado para se manter, Comparados com as monoculturas, sistemas altamente artificiais que nunca ocorrerão na natureza, sistemas permaculturais que se aproximam da natureza não precisam de adubo, irrigação nem defensivos. Produzem séculos a fio e melhoram cada vez mais o solo, recuperando também o regime das águas da região. \nPodemos incorporar animais nestes sistemas se criarmos condições de vida parecidas com aquelas do habitat natural do animal. Tomando o exemplo da galinha, percebemos que é a natureza da galinha de pastar e de ciscar, de comer uma grande variedade de verduras, grãos (pode ser sementes de capins) e insetos. Elas vivem em bandos e sempre dormem no mesmo lugar, no alto. São relativamente resistentes ao frio, mas temem o calor, exigindo sombra. Sofrem predações de gaviões e raposas, precisando de uma boa proteção. \nAnalisando estas necessidades do animal, podemos muito bem criar uma floresta forrageira para galinhas, incorporando árvores frutíferas (amora, goiaba, acerola, etc.), com verduras rasteiras e grãos (milhetos, capins, etc.), criando um pasto equilibrado onde a galinha se alimenta e se protege. O único trabalho que sobra para o homem nestas condições é de coletar os ovos e vigiar o estado do pasto e dos animais. Uma vez estabelecido, este sistema dura muitos anos com o mínimo de investimento, dando lucro maior do que as granjas industrializadas que exigem altos investimentos em insumos e medicamentos. E, obviamente, a qualidade dos produtos será muito maior. \n2) Substituir altos investimentos e trabalho por planejamento e criatividade. \nou \n"Se o sistema está lhe dando muito trabalho, você ainda não pensou o suficiente" \nScott Pittman\nO homem está longe de aproveitar plenamente os seus dons criativos. No planejamento de uma propriedade, reflexão e observação podem mostrar soluções engenhosas para os problemas, evitando gastos e trabalho. Podemos aproveitar ao máximo a força da gravidade, por exemplo, para a distribuição da água, colocando áreas de captação no alto da propriedade em vez de colocá-las, como muitos fazem nas baixa, e depois depender de bombas, Ou podemos observa que os animais de modo geral depositam mais esterco de noite do que de dia. O gado pode pastar nas áreas ricas das baixadas durante o dia e dormir em estábulos no alto da propriedade, retransportando assim os nutriente para o alto da propriedade, de onde, com a ajuda da força da gravidade, a distribuição se torna mais fácil. \nPrecisamos ter a coragem de criar soluções totalmente diferentes dos vizinhos. E precisamos perceber que nenhum sistema é perfeito: sempre tem espaço para mais um elemento, para mais uma função, muitas vezes simplesmente conectando dois elementos já existentes. O limite do sistema é a nossa criatividade. \n3) O problema é a solução \nProblemas apontam situações especiais que podem ter uma função única. Se uma área é árida, por exemplo, pode-se especializar em plantas da família dos cactos, como o Figo da Índia ou a cochonilha, um inseto que produz uma tinta valiosa e que se desenvolve no cactos Opuntia. Se uma encosta é pedregosa, ela pode oferecer condições especiais para certas plantas que não de adaptariam em outra áreas mais férteis da propriedade. Se as lavouras sofrem ataques de caracóis, é sinal que esta região se presta para a criação destes. Todo problema aponta para uma oportunidade. É questão de enfoque. \n4) A diversificação garante a estabilidade \nA estabilidade de uma propriedade ou de uma comunidade depende da disponibilidade de uma gama de produtos espalhados ao longo do ano. Isto protege contra desastres climáticos, porque no caso de qualquer emergência (seca, tempestade), alguns dos produtos vão escapar, devido a uma resistência maior, ou devido ao fato de crescer em épocas diferentes. Deve-se sempre cogitar culturas de emergência, garantidas de dar alguma produção mesmo sob condições adversas. Os povos antigos fazem policulturas por este motivo. Policulturas que incorporam árvores no sistema são as mais estáveis do todas. Uma floresta produtiva dificilmente se abate com a seca ou com o granizo. \n5) A estabilidade vem quando se fecham os ciclos \nQuando uma parte do sistema sustenta outra, evita-se a necessidade de procurar insumos fora da propriedade, fortalecendo assim todo o sistema. Da mesma maneira, uma comunidade inteira ganha estabilidade quando os produtos circulam localmente, evitando assim perdas por desperdício ou sangria para uma metrópole central. Considerando, por exemplo, que um terço dos produtos agrícolas no Brasil se perdem antes de chegar à mesa do consumidor, podemos ver a importância do consumo local, que assegura que o que se produz não se perde no processo de transporte e distribuição. \nDa mesma maneira, se numa comunidade o mesmo dinheiro troca de mãos muitas vezes, isto tem o mesmo efeito deter uma quantidade muito maior de dinheiro disponível. Se este dinheiro vai embora para o centro urbano, a comunidade local se empobrece. \nUm dos maiores perigos para a estabilidade de uma propriedade rural ou de uma comunidade é a poluição. A vida não se mantém onde não há água limpa, por exemplo. Visto que a poluição provém de produtos ainda não utilizados, podemos vê-la como uma fonte de renda em potencial (quando se trata de esgotos, ou mesmo de sub-produtos industriais. Os agrotóxicos. obviamente nunca oferecem um potencial para reciclagem, e deveriam ser banidos da face do planeta). \n\n6) Precisamos responsabilizar-nos pelos nossos netos \nTivemos o privilégio de poder ainda desfrutar de florestas, de beber água limpa , de contemplar paisagens belas. Os nossos netos também têm este direito, e cabe a nós a responsabilidade de assegurar que estes direitos sejam respeitados. Isto pode sugerir muitas frentes de ação: conservação de áreas naturais ainda pouco modificadas pelo homem; desenvolvimento de uma forma de agricultura não devastadora; proteção das águas, especialmente do lençol freático. (Um rio pode-se limpar em poucos anos. Um lençol freático, uma vez poluído, dificilmente se limpa de novo). Em termos práticos, uma floresta desmatada leva entre doze a vinte anos para se recompor, e leva entre sessenta e duzentos anos para chegar a um estágio parecido ao original. Se colhermos somente as árvores no final do seus ciclos e plantarmos culturas adaptadas a estas condições de mata, podemos manter a cobertura vegetal e mesmo assim ter uma boa renda. Cada tipo de árvore tem as suas utilidades. Hoje, nos desmatamentos, a grande massa de madeira (com exceção das árvores mais conhecidas como o mogno) é desperdiçada. \nUm agricultor pode muito bem plantar uma parte de sua propriedade com madeiras nobres, criando assim um patrimônio inabalável. Não importa se estas madeiras começarem a dar uma colheita daqui a vinte ou trinta anos: o agricultor, nesta época, já vai estar velo e as árvores podem garantir sua velhice, uma forma de aposentadoria particular. E como se pode colher as madeiras gradativamente, replantando ao mesmo tempo que colhe, ele cria um patrimônio para muitas gerações futuras. \n7. Os problemas são basicamente domésticos e podem ser resolvidos no nível doméstico \n Não há soluções em grande escala para problemas locais. Não há soluções tecnológicas para problemas que são basicamente sociais. Cada vez que uma família consegue se auto-sustentar, produzindo os seus próprios alimentos e reciclando os seus dejetos, esta deixa de participar da agricultura devastadora e deixa de poluir. Cada propriedade, mesmo bem pequena, pode captar água e produzir alimentos. As possibilidades são infinitas: podemos usar toda parede e até telhados das construções para produzir alimentos. Podemos captar água numa variedade de maneiras e reciclar toda água que utilizamos, fazendo-a render muito mais. \nTomando como exemplo a perigosa falta de água potável: poucas pessoas se dão conta de que a descarga doméstica gasta 40% de toda a água consumida. Isto representa 100 litros de água por pessoa por dia! Pode-se imaginar a gravidade desta situação numa cidade de milhares ou milhões de pessoas. Podemos dar descarga com a água servida das pias ou do chuveiro, evitando assim este desperdício desastroso para toda a humanidade. Em áreas mais suburbanas ou rurais, podemos desenvolver privadas secas, das quais existem muitos modelos eficazes hoje. Lembrando que os esgotos são também grandes fatores de poluição de lagos, de rios e do mar, vemos a importância do tratamento doméstico dos efluentes através de filtros ou de sistemas com plantas. \nUma aldeia (ou bairro) de 300 pessoas tem a capacidade humana de preencher todas as necessidades das pessoas do lugar. Mesmo numa situação urbana, pode-se aproveitar os espaços baldios para produzir alimentos e pequenos animais. Cada vez que isto ocorre, economiza-se petróleo e espaços naturais que hoje estão sendo desmatados para produzir alimentos em grande escala. Plantações pequenas e intensivas são muito mais produtivas em qualquer lugar do mundo. O pavor de falta de terras agrícolas é um mito: toda terra pode ser agrícola! O que se chama "agrícola" hoje são aquelas onde pode-se entrar com máquinas pesadas, comprovadamente destruidoras da estrutura do solo. De fato, as terras mais "agrícolas", em termos de produção, são aquelas frente à porta da cozinha! \n(É claro que o grande problema é o fato da agricultura se industrializar e ser vista como produtora de dinheiro. Isto levanta grandes problemas éticos, já que se destrói para ganhar a curto termo. Isto vai acabar de fato somente quando houver ou uma pressão pública em massa ou quando tais sistemas não forem mais viáveis economicamente. Há sinais de que os dois processo estão acontecendo. O aumento de custos em petróleo e agrotóxicos faz com que a agricultura intensiva e orgânica hoje se torne muito mais lucrativa.) \nSe os problemas são basicamente domésticos e podem ser resolvidos a nível doméstico, isto implica que nós podemos resolver os nossos problemas, não precisando de algum engenheiro ou outro especialista, ou o governo, etc. para dar as soluções. O poder da ação volta para as mão do indivíduo, da família, ou da comunidade local. \n8. Todo sistema deve produzir mais energia do que consome \n Quando falamos em "energia", podemos pensar em calorias. Vários levantamentos têm mostrado que a agricultura industrializada é, em muitos casos, deficitária energeticamente: para cada caloria de alimento produzida, gastam-se duas a oito (ou mais!) calorias na forma de petróleo ( transporte, insumos, máquinas agrícolas, etc.). Qualquer sistema deficitário, que seja em termos monetários ou energéticos, é fadado a falir, cedo ou tarde. \n Os sistemas permaculturais se tornam produtores energéticos de várias maneiras: \na) Produção intensiva em relação ao trabalho. Sistemas permanentes exigem poucas ou nenhuma máquina e pouco ou nenhum insumo, consumindo menos calorias do que produzem; \nb) Produção para consumo local. Evitam-se assim gastos em transporte; \nc) Utilização das energias do lugar ( gravidade, transporte animal, etc.); \nd) Reciclagem dos dejetos. Os fertilizantes industrializados são produzidos a partir do petróleo e exigem muitos gastos em transporte. Quando os insumos são produzidos localmente, evitam-se tos estes gastos; \ne) Utilizando energias alternativas captadas no lugar: cozinhado com fogões solares e a lenha, biogás, painéis solares, etc. \n9. Visa-se cooperação em vez de competição, integração em vez de fragmentação \n O espírito de cooperação é a grande chave para a recuperação da qualidade de vida no planeta. Vista em termos sociais, a cooperação nos leva a ver todo estranho como amigo em potencial, enquanto a competição nos ensina a ver todo estranho com adversário em potencial. Esta mudança de atitude traz mudanças de comportamento fundamentais. Na cooperação, a energia é gasta de uma maneira mais construtiva, somando a energia de uns com os outros, em vez de se anularem mutuamente, como é o caso da competição. Na agricultura, esta mudança de atitude também transforma o comportamento. Se uma praga ataca a lavoura, um agricultor que se baseia em cooperação com a natureza procurará compreender o porquê deste ataque. A planta está enfraquecida? O inseto está com fome por falta de um posto natural? Chega-se até a plantar alimentos para o inseto considerado 'praga', reconhecendo que este, como todo ser natural, merece viver. Este convívio pacífico com a natureza faz com que o agricultor não precise mais declarar guerra química na sua propriedade, produzindo assim alimentos de qualidade e limpos, sem comprometer a qualidade da água nem do solo. \n A cooperação nos leva a ver tudo como sendo interligado. Não é: "eu contra você", mas "eu junto com você". Não é: eu contra a praga, mas eu trabalhando em conjunto com a natureza, dentro de um contexto. Desaparece o sentido da fragmentação, de ver um mundo como formado de peças separadas, passando a ver o mundo como um todo integrado, onde mudanças em um elemento dentro do sistema (agrícola ou social), modifica a situação de muitos outros elementos que estão interligados comeste. Isto é o que transforma o sistema todo. \nPor: Marsha Hanzi\nInstituto de Permacultura da Bahia\n
Person-to-Person\n\nThere has to be an odd number of people for this activity to work. The facilitator stands in the midst of the group and asks everyone else to pick a partner. Explain that you'll give them from two to five commands that they must perform as a pair. The last command is always "Person-to-person" and everyone, including the person giving the commands, will have to scramble to find a new partner. The odd person out gets to go into the middle of the group and provide the next set of commands.\n\nThe game begins with the person in the center (initially the facilitator) giving instructions such as: "Elbow to elbow" and the pairs must put an elbow to elbow. The facilitator can then say: "Ear to ear" and the pairs then have to put an ear to an ear, as well as keeping the elbow to elbow. Then the facilitator says "Person-to-person," everyone finds a new partner, and you go on to the next person calling out commands. Depending on the group, this can get pretty interesting!\n\nStop the game when you feel like it.
!Picture\n\nTo enhance the planning process. Use in a brainstorming session or before you are going to plan an event or task.\n\n * Lay out a variety of magazies or catalogues with illustrations.\n * Ask the participants to form groups of four to five people.\n * Explain that the group's task is to look through the magazines and catalogues and select a picture which relates to a factor in the planning process.\n * Distribute cards and markers to the groups.\n * Ask the group to describe the selected picture in detail, mentioning everyone's ideas and feelings about the picture.\n * No censorship is allowed or permitted.\n * Write down the new ideas. The groups may then select valuable ideas to further the planing process\n
Picture Perfect"\n\nHave each person on a team draw a picture or series of pictures to represent their current view of the team. (They can draw on pieces of paper or flip charts posted around the room.) Allow 5 minutes; then have the rest of the group explain what they see in each other's pictures.
!Portugues\n[[Meditação Gaia|Themes-Handouts/Portugues/MEDITATÇÃO GAIA.doc]]
!Index to Processes\n\nThe processes entered in this database are sorted by type (see below), [[alphabetically|Processes in Alphabetic Order]] and by original [[source|Processes by Source Reference]]\n\nTo enter new processes, please first enter the name of your reference in [[Source&Links]]. Each entry should be tagged to its process type (eg [[Brainstorming]] or [[IceBreakers]] - ) and bear tag showing the name of the person who entered it. If we all keep to these rules this list will remain ordered and convenient to use!!!\n
!Principios da Permacultura\n[[como arquivo DOC|Themes-Handouts/Pemacultura/Portugues/Principios do Permacultura.doc]]\nFunções Múltiplas\nEsta idéia é assegurar que o que está incluído em um sistema tenha mais funções possíveis\nIsto simplesmente aumenta a eficiência. Por ex. – Se se constrói em um jardim um depósito para armazenar ferramentas, se pode usar o seu teto para captação de água que vai para um tanque de armazenamento; Poderia servir de sustentação para plantas trepadeiras: para separação para diferentes partes do jardim; poderia esconder uma vista desagradável, etc.\nSe se plantam árvores de sombra grandes, poderíamos escolher árvores como o jacarandá, angelim , adicionando leguminosas como o ingá, árvore leguminosa que tenha vagem comestível.\n\nDiversidade\nA estabilidade dinâmica dos sistemas é a base da diversidade de espécies e interações que contém. \nNossos desenhos, devem tratar de incorporar e construir a mais ampla variedade e diversidade possivél.\nGrandes áreas de monocultivos são invadidos por pragas e ervas indesejáveis. Em um cultivo ou jardim diverso, nem as pragas e nem as ervas indesejáveis têm a oportunidade de criar um estado desbalanceado para causar danos. \nUsar variedades de plantas e espécies para criar uma rica rede de intereações e uma eclética mescla de associações entre todos os elementos do desenho.\n\n\nReciclagem de Energia\nA energia que provêm do SOL e seu fluxo através dos ecossistemas é a base da vida em nosso PLANETA,\nSegundo os principios de Ecologia. \nOs organismos que mantém sua porção desta energia por maior tempo possível e os que usam essa energia de forma mais eficiente, são os que provavelmente vão sobreviver e prosperar.\nEm termos de desenho, isto quer dizer que necessitamos criar ciclos de energia eficientes, densos e efetivos (apertados) dentro de cada parte do sistema e em todas as partes possíveis.\nUm bom exemplo de reciclagem de energia é a COMPOSTAGEM. A energia presente dentro dos desperdícios alimentícios, pasto podado e outros restos orgânicos, com a ajuda das bactérias e fungos pode-se converter outra vez em nutrientes que as plantas podem utilizar novamente para produzir novos alimentos.\nA alternativa é um traga energia, (energia que não se converte e se perde) onde este material orgânico se trata como lixo e se exporta para fora do lugar.\n\nPadrões\nCom algo de atenção, a observação de nossos sistemas naturais revelará padrões e planos complexos. Você não encontrará linhas retas ou quadros perfeitos.\nUse os padrões da natureza como inspiração em seus trabalhos de desenho. Quando se fazem planos para uma propriedade, estamos impondo padrões sobre a paisagem. Trate de assegurar-se que os padrões que você seleciona sejam tão belos e funcionais como os que usa a natureza. Muitas idéias da Permacultura tem sido inspiradas de uma maneira. \nPor exemplo: O conceito de jardim de olho de ferradura foi inspirado por um desenho que se encontra em uma fatia de tomate.\n\n Localização Relativa\nCada árvore, cada planta, cada estrutura tenderá para uma área onde será especialmente de benefício. Plantar uma árvore de abacate em um lugar que está húmido e molhado provavelmente matará a árvore (se apodrecem as raízes).\nIgualmente, não tem sentido plantar como sistema de quebravento uma planta quebradiça como por exemplo, Acacia decurrens.\nEste princípio requer que pensemos nas necessidades de cada elemento (botânica, horticultura no caso das plantas) tambem que pensemos nas interações que vão se suceder por causa da colocação deles.\nPor exemplo: É uma boa idéia plantar próximo de um tanque ou represa as árvores com alta necessidade de água (como os bambús, nogueiras, etc.)\n\nRecursos Biológicos\nA natureza é muito eficiente e tem desenvolvido métodos para manejar quase todas as funções. Sempre que seja possível, devemos usas sistemas naturais para fazer o trabalho, não fazê-lo pesoalmente.\nPor exemplo, podemos comprar materiais químicos feitos por seres humanos para combater problemas de pragas, ou podemos desenhar nosso sistema com patos e/ou galinhas permitindo-lhes que andem na horta (controlando sua permanencia) e permitindo-lhes que comam os insetos de pragas em vez de fomigar com pesticidas. Mesmo que algumas pragas podem desenvolver imunidade rapidamente contra os mais modernos e caros pesticidas, nenhuma praga pode desenvolver imunidade contra a ser comido por uma galinha.\nPodemos escavar a terra para fazer um cultivo de hortaliça em um jardim, ou podemos alimentar a terra e assegurar que tenhamos uma grande população de minhocas as quais farão o trabalho de aerar a terra e o fazem melhor que uma enxada ou pá. (É mais fácil para os músculos das costas)\n\nPlanejando com as Elevações\nSe tira vantagem da situação, ao usar pendentes ou diferenças de altura, para fazer fluir a água e outros fluídos (como ar frio) para baixo.\nColocando um grupo de tanques de armazenagem sobre o teto da casa, se poderá regar sem Ter que comprar uma bomba. Sabendo que a água quente sobe, podemos construir um sistema de água quente que usa esta termodifusão, em vez de usar outra bomba.\n\nÓtimo uso das Bordas: como aproveitá-la\nEm Ecologia se vê que as bordas entre diferentes ecossistemas sempre são mais produtivos do que cada ecossistema o é individualmente, posto que a área de borda pode manter espécies de dois ou mais ecossistemas e também espécies únicas em uma área (borda) que representam a mescla dos ecossistemas vizinhos.\nUma linha sinuosa (para quebra-vento, por exemplo) é mais larga que uma línha reta ainda que conectem os mesmos pontos – têm mais borda e esta linha pode ser plantada com mais plantas úteis – e em si é mais efetiva como quebra-ventos.\nExistem vários estilos de bordas. Deve-se usá-las o máximo possível. O desenho de tanque de roda cria uma boa borda de água/jardim – cultivo para cultivo de castanhas de água, ou ervas de menta, entre outras.\n\n\n\nZonas\nO conceito de zonas trata do manejo de energia. Coloque mais perto do centro de atividades as coisas que requerem muita atenção (energia) especialmente na forma de atividade humana. No geral isto quer dizer, próximo da casa. \nUm jardim de cultivo de verduras e ervas como acelga para cortar frequentemente (que se visita na média de duas vezes ao dia) deve estar mais perto da porta ou área atrás da casa, (ou próximo da cozinha).\nUma área de árvores plantadas para uso de lenha pode estar localizada mais longe da casa.\nEm muitos livros de permacultura, este conceito de Zonas se divide com designações de:\nZona 1 – O jardim de cultivo e hortaliças, atividade perto da casa.\nZona 2 - Horto, galinheiro, etc.\nZona 3 – produãao mais comercial, grãos .....\nZona 4 – gado, agroflorestas \nZona 5 – Área de bosques silvestres, bosque natural, área de caça e recursos para colher.\nO ponto importante aqui é que há varios níveis de intensidade em uso de energia.\n\n\nMultiplos Elementos\nElementos múltiplos são como uma espécies de apólice de seguro. Se trata de pensar sobre as funções e serviços que se quer e encontrar todas as maneiras possíveis para realizá-las. \nPor exemplo, a água é sumamente importante para qualquer atividade humana, assim e que sua captação deve ser de grande prioridade. \nA função de captação de água pode realizar-se com sistemas estabelecidos no teto da casa, por canos de descida (tanques de captação), por um sistema de Swales (escavações sobre as linhas do nível topográfico)\nPara atrair água dentro da terra, e bombeando-a de poços e/ou rios; Para tratamento de aguas negras é uma forma de colher água.\nUma represa pode ser multifuncional porque pode conter peixes, pode conter plantas de ambiente aquático, se pode usar como sitio de relaxamento e diversão, e também pode servir de proteção contra incendios (por exemplo, se a represa é colocada no setor de incendios sobre a principal direção dos ventos calorosos e secos).\nA represa pode ser um dos vários elementos usados na função de proteção de incendios – outros elementos para controlar incendios podem ser montículos de terra, uma área de pastagem totalmente usada, uma estrada ampla, ou um plantio denso de vegetação que resiste ao fogo.\n\nSetores\nEste, trata do conceito de energia que flui através de um sistema e este fluxo ocorre geralmente desde direções específicas. São estas direções as quais fazem suceder os setores.\nPor exemplo, em quase todas as áreas, a chuva normalmente vem com o vento de certa direção, assim que as pendencias desta direção recebem chuva com mais frequencia. Nos Andes, em Perú e Chile muita chuva cai até o mar desde as montanhas, mesmo que do outro lado da terra recebe muito menos chuva.\nUma estrada de muita atividade ao lado de uma propriedade pode criar um setor caracterizado pelo trafego, ruido e contaminação por causa dos carros. Montículos de terra, bordas de terra e plantio densos colocados sobre esta direção ajudam a reduzir o impacto negativo da situação.\n\nSucessão Natural \nOs Sistemas Naturais trocam constantemente, evoluindo e desenvolvendo até madurar. \nEm nossos desenhos necessitamos planejar para o futuro para permitir que suceda esta expansão natural.\nIsto se pode levar a cabo simplesmente na maneira de plantar uma árvore frutífera para permitir espaço onde se pode desenvolver e crescer até ser uma árvore grande. \nUma mangueira por exemplo, pode tornar-se uma árvore grande, porém é muito pequena quando se planta inicilamente. No princípio a árvore se encontra muito sozinha, rodeada por muito espaço, porem através dos anos, ela utilizará esse mesmo espaço ao madurar como árvore frutífera.\nA tendencia dos sistemas em evoluir pela sequencia de erva, pioneiras e clímax se pode explorar de outra maneira. Primeiro, se pode substituir plantas úteis em cada nível. Em vez de permitir que cubram uma área pelas ervas invasoras, de folhas grandes, se pode deliberadamente plantar ervas úteis ou fixadoras de nitrogênio como plantas de cobertura.\nA pioneiras podem ser plantas como a banana, mamão, etc. Finalmente, o estrato clímax pode ser de árvores grandes de frutíferas o de madeirs, e uma leguminosas como o jacarandá.\nTambém se pode juntar o sistema. Isto quer dizer que se plantam plantas úteis para cada nível de sucessão, porem se plantam juntas ao mesmo tempo. Estamos juntando-as ao mesmo tempo, cumprindo o tempo. Assim se pode plantar as plantas de cobertura (ervas), Mamão (pioneiras) e mangas (clímax) ao mesmo tempo. As plantas de cobertura se estabelecem rapidamente e os mamões começam sua produção e muito mais tarde terão a sombra das árvores de manga desenvolvida.\nOs sistemas naturais também têm diferentes niveis dentro do sistema de Clímax. Uma poucas leguminosas de vida curta, muitas arvores produtivas de estratos altos, plantas de baixa altura podem tolerar a sombra, umas plantas de cobertura que aguentam a sombra e ramadas. Ao combinar plantas, estamos tratando de criar grupos – combinações que funcionam juntas. Estas associações muitas vezes incluem uma árvore ou arbusto grande – uma leguminosa trepadeira (feijão, etc.) e uma camada de cobertura sobre a terra (ervas ou verduras de pouco cuidado como pepino e cebolinha).\n
Questions"\n\nHave each person write a question they want answered in the training on a Post-itâ note. Have them introduce themselves and their question. Then post all questions on a wall chart. During or at the end of training, ask the group to answer the questions.
/***\n| Name|QuickOpenTagPlugin|\n| Description|Changes tag links to make it easier to open tags as tiddlers|\n| Version|3.0 ($Rev: 1845 $)|\n| Date|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n***/\n//{{{\nconfig.quickOpenTag = {\n\n dropdownChar: (document.all ? "\su25bc" : "\su25be"), // the little one doesn't work in IE?\n\n createTagButton: function(place,tag,excludeTiddler) {\n // little hack so we can to <<tag PrettyTagName|RealTagName>>\n var splitTag = tag.split("|");\n var pretty = tag;\n if (splitTag.length == 2) {\n tag = splitTag[1];\n pretty = splitTag[0];\n }\n \n var sp = createTiddlyElement(place,"span",null,"quickopentag");\n createTiddlyText(createTiddlyLink(sp,tag,false),pretty);\n \n var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,\n config.views.wikified.tag.tooltip.format([tag]),onClickTag);\n theTag.setAttribute("tag",tag);\n if (excludeTiddler)\n theTag.setAttribute("tiddler",excludeTiddler);\n return(theTag);\n },\n\n miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {\n var tagged = store.getTaggedTiddlers(tiddler.title);\n if (tagged.length > 0) {\n var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,\n config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);\n theTag.setAttribute("tag",tiddler.title);\n theTag.className = "miniTag";\n }\n },\n\n allTagsHandler: function(place,macroName,params) {\n var tags = store.getTags();\n var theDateList = createTiddlyElement(place,"ul");\n if(tags.length == 0)\n createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);\n for (var t=0; t<tags.length; t++) {\n var theListItem = createTiddlyElement(theDateList,"li");\n var theLink = createTiddlyLink(theListItem,tags[t][0],true);\n var theCount = " (" + tags[t][1] + ")";\n theLink.appendChild(document.createTextNode(theCount));\n var theDropDownBtn = createTiddlyButton(theListItem," " +\n config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);\n theDropDownBtn.setAttribute("tag",tags[t][0]);\n }\n },\n\n // todo fix these up a bit\n styles: [\n"/*{{{*/",\n"/* created by QuickOpenTagPlugin */",\n".tagglyTagged .quickopentag, .tagged .quickopentag ",\n" { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }",\n".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",\n".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",\n"/* extra specificity to make it work right */",\n"#displayArea .viewer .quickopentag a.button, ",\n"#displayArea .viewer .quickopentag a.tiddyLink, ",\n"#mainMenu .quickopentag a.tiddyLink, ",\n"#mainMenu .quickopentag a.tiddyLink ",\n" { border:0px solid black; }",\n"#displayArea .viewer .quickopentag a.button, ",\n"#mainMenu .quickopentag a.button ",\n" { margin-left:0px; padding-left:2px; }",\n"#displayArea .viewer .quickopentag a.tiddlyLink, ",\n"#mainMenu .quickopentag a.tiddlyLink ",\n" { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",\n"a.miniTag {font-size:150%;} ",\n"#mainMenu .quickopentag a.button ",\n" /* looks better in right justified main menus */",\n" { margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }", \n"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",\n"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",\n"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",\n"/*}}}*/",\n ""].join("\sn"),\n\n init: function() {\n // we fully replace these builtins. can't hijack them easily\n window.createTagButton = this.createTagButton;\n config.macros.allTags.handler = this.allTagsHandler;\n config.macros.miniTag = { handler: this.miniTagHandler };\n config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;\n store.addNotification("QuickOpenTagStyles",refreshStyles);\n }\n}\n\nconfig.quickOpenTag.init();\n\n//}}}\n
Results Through Training, www.RTTWorks.com
Random Input\nCreativity Technique\nFrom ÒTeach your child to thinkÓ - Edward de Bono:\n\nThe Ôrandom-wordÕ method is a powerful lateral-thinking technique that is very easy to use. It is by far the simplest of all creative techniques and is widely used by people who need to create new ideas (for example, for new products).\n\nChance events allow us to enter the existing patterns of our thinking at a different point. The associations of a word applied to the new Òout of contextÓ situation generates new connections in our mind, often producing an instant ÔEurekaÕ effect, insight or intuition.\n\nIt is said that Newton got the idea of gravity when he was hit on the head with an apple while sitting under an apple tree. It is not necessary to sit under trees and wait for an apple to fall - we can get up and shake the tree. We can produce our own chance events.\n\nRandom inputs can be words or images. Some techniques for getting random words (and the words should be nouns) are:\n\n * Have a bag full of thousands of words written on small pieces of paper, cardboard, poker chips, etc. Close your eyes, put in your hand and pull out a word.\n * Open the dictionary (or newspaper) at a random page and choose a word.\n * Use a computer program to give you a random word. I have a Hypercard program suitable for Apple Macintosh which uses this list of words (236 of them!)\n * Make up your own list of 60 words. Look at your watch and take note of the seconds. Use this number to get the word. \n\nIt is important to use the first word you find.\n\nOnce you have chosen the word, list its attributions or associations with the word. Then apply each of the items on your list and see how it applies to the problem at hand.\n\nHow does it work? Because the brain is a self-organising system, and very good at making conections. Almost any random word will stimulate ideas on the subject. Follow the associations and functions of the stimulus word, as well as using aspects of the word as a metaphor.\n\nYou may want to mind-map the random word.\n\nExercise.\n1. You are tired of getting unsolicited email and you are searching for a solution. Your random word is BANANA.\n\n2. You need to tell a story to your children at bedtime. Your random word is EGG.\n\nRoger von Oech writes in ÒA Kick in the Seat of the PantsÓ:\n\nA good way to turn your mental attic of experiences into a treasure room is to use Òtrigger conceptsÓ - words that wll spark a fresh association of ideas in your mind. Like pebbles dropping in a pond, they stimulate other associations, some of which may help you find something new.\n\nHe writes in ÒA Whack on the Side of the HeadÓ about various cultures having oracles. The ancient Greeks used the ambigious predictions of the Delphic Oracle, the Chinese used the I Ching, the Egyptians consulted the Tarot, the Scandinavian people used Runes and the North American Indians used Medicine Wheels. The purpose of these oracles was not so much to foretell the future but to help the user delve deeper into their own minds.\n\nYou can create your own oracle by doing three things:\n\n 1. Ask a question. This focuses your thinking. Perhaps you should write your question to focus attention.\n 2. Generate a random piece of information. Random selection is important, as the unpredictability of this new input will force you to look at the problem in a new way.\n 3. Interpret the resulting random piece of information as the answer to your question. \n\nThe important thing is to have an open, receptive mind.\n\nLET A RANDOM PIECE OF INFORMATION\nSTIMULATE YOUR THINKING!\n\nHere is a method I (Charles Cave) have been developing recently:\n\nI make my own random picture cards by cutting out pictures from the various pieces of advertising material and magazines that appear in my letter box. A card can be picked at random and used as the random word. Choose pictures without text to allow a more right-brain approach. My cards include pictures of felt pens, furniture, kitchen items, art works, people, buildings, scenes and abstract designs. The cards can be shuffled and a card chosen at random.\nLast updated: 3rd June 1997\n\nComments? Send them to Charles Cave
<html>\n<style>\n.rolodex table {\nborder: 0px solid;\nbackground-color:#66cc66;\n}\n\n.rolodex tr, .rolodex td {\nborder: 0px solid;\n}\n</style>\n<span class="rolodex">\n <table>\n <tr>\n <td align="right"><b>Book/Reference Title:</b></td>\n <td colspan="3"><input name=booktitle type=text style="width:100%" /></td></tr>\n <tr>\n <td align="right"><b>Author:</b></td>\n <td colspan="3"><input name=author type=text style="width:100%" /></td></tr>\n <tr>\n <td align="right"><b>Web Address of Reference:</b></td>\n <td colspan="3"><input name=webaddress type=text style="width:100%" /></td></tr>\n <tr>\n <td align="right"><b>ISBN:</b></td>\n <td colspan="3"><input name=isbn type=text style="width:100%" /></td></tr>\n <tr>\n <td align="right" valign="top"><b>Publisher Name:</b></td>\n <td colspan="3"><input name=publisher type=text style="width:100%" /></td></td>\n <tr>\n <td align="right"><b>Country:</b></td>\n <td colspan="3"><input name=country type=text style="width:100%" /></td></tr>\n <tr>\n <td align="right"><b>Date of Publication:</b></td>\n <td colspan="3"><input name=datepublication type=text style="width:100%" /></td></tr>\n <tr>\n <td align="right"><b>To be Tagged as:</b></td>\n <td colspan="3"><input name=tagreference type=text style="width:100%" /></td></tr>\n <tr>\n <td colspan="4"><sub><b>Notes</b></sub><br>\n <textarea name=notes rows="4" cols="40" style="width:100%" ></textarea></td></tr>\n</span>\n</html>\n\n
/***\n| Name:|RenameTagsPlugin|\n| Description:|Allows you to easily rename or delete tags across multiple tiddlers|\n| Version:|3.0 ($Rev: 1845 $)|\n| Date:|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\nRename a tag and you will be prompted to rename it in all its tagged tiddlers.\n***/\n//{{{\nconfig.renameTags = {\n\n prompts: {\n rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",\n remove: "Remove the tag '%0' from %1 tidder%2?"\n },\n\n removeTag: function(tag,tiddlers) {\n store.suspendNotifications();\n for (var i=0;i<tiddlers.length;i++) {\n store.setTiddlerTag(tiddlers[i].title,false,tag);\n }\n store.resumeNotifications();\n store.notifyAll();\n },\n\n renameTag: function(oldTag,newTag,tiddlers) {\n store.suspendNotifications();\n for (var i=0;i<tiddlers.length;i++) {\n store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old\n store.setTiddlerTag(tiddlers[i].title,true,newTag); // add new\n }\n store.resumeNotifications();\n store.notifyAll();\n },\n\n storeMethods: {\n\n saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,\n\n saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields) {\n if (title != newTitle) {\n var tagged = this.getTaggedTiddlers(title);\n if (tagged.length > 0) {\n // then we are renaming a tag\n if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))\n config.renameTags.renameTag(title,newTitle,tagged);\n\n if (!this.tiddlerExists(title) && newBody == "")\n // dont create unwanted tiddler\n return null;\n }\n }\n return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields);\n },\n\n removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,\n\n removeTiddler: function(title) {\n var tagged = this.getTaggedTiddlers(title);\n if (tagged.length > 0)\n if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))\n config.renameTags.removeTag(title,tagged);\n return this.removeTiddler_orig_renameTags(title);\n }\n\n },\n\n init: function() {\n merge(TiddlyWiki.prototype,this.storeMethods);\n }\n}\n\nconfig.renameTags.init();\n\n//}}}\n\n
Role Models"\n\nHave each person identify someone who is a role model for the topic being discussed. Have them share the person’s name and the qualities or characteristics that make them a good role model. Post characteristics on a flip chart.
/***\n| Name|SaveCloseTiddlerPlugin|\n| Description|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|\n| Version|3.0 ($Rev: 2134 $)|\n| Date|$Date: 2007-04-30 16:11:12 +1000 (Mon, 30 Apr 2007) $|\n| Source|http://mptw.tiddlyspot.com/#SaveCloseTiddlerPlugin|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\nTo use these you must add them to the tool bar in your EditTemplate\n***/\n//{{{\nmerge(config.commands,{\n\n saveCloseTiddler: {\n text: 'done/close',\n tooltip: 'Save changes to this tiddler and close it',\n handler: function(e,src,title) {\n config.commands.saveTiddler.handler(e,src,title);\n config.commands.closeTiddler.handler(e,src,title);\n return false;\n }\n },\n\n cancelCloseTiddler: {\n text: 'cancel/close',\n tooltip: 'Undo changes to this tiddler and close it',\n handler: function(e,src,title) {\n config.commands.cancelTiddler.handler(e,src,title);\n config.commands.closeTiddler.handler(e,src,title);\n return false;\n }\n }\n\n});\n\n//}}}\n\n
Scream Therapy"\n\nHave participants introduce themselves and share the emotions they feel about their difficult person (for example, "They drive me nuts!!"). Have them say it with feeling. At the end of the introductions, have them all scream the feelings at the same time.
Secret Agent\n\nIn this game its best to have a pretty good sized, open area. Have folks begin by standing around in a circle. Tell them that there is someone in the group out to get them -- a "secret agent" -- and only you know who they are. Each individual also has a "bodyguard" who only they know about.\n\nThen, quietly, without pointing, and without telling anyone, each individual identifies to themselves who their "secret agent" is for this game. After everyone seems to have made a selection, have them then select another individual -- quietly, without pointing, and without telling anyone -- who will serve as their "bodyguard" for the activity.\n\nAfter everyone has made their selections let them know that they are now free to move around, but they must keep their "bodyguard" between themselves and their "secret agent" at all times. This can get pretty funny and interesting as people move about. It often turns into utter chaos because of the odd combinations of "bodyguards" and "secret agents."\n\nStop the game when you feel like its over.\n\nFrom: Peter Hurst (see above) and Michael Matier, Cornell University, Institutional Planning and Research, 440 Day Hall, Ithaca, NY
!Senses\n\nEach person tends to absorb most of their information through one of the three main sensory channels. We all have access to all three channels, but normally have a strong preference for one over the other two.\n\nVisual - people who use this channel predominantly tend to talk rapidly, with high hands movements and will use visual words - “see what I mean”, “do you get the picture”.\nAuditory people talk in more of a monotone, with hand movements near their face. They use words like “can you heard what I getting at”, “does that ring a bell with you”.\nKinesthetic - meaning both internal feelings and physical, tend to speak much slower (as the seek to access their feelings) with low hand movements. They use words like “how does that grab you”.\n\nAs a teacher we need to assume that any class will have a mixture of people accessing information differently. To present information by only talking means that the visual and kinesthetic people will actually receive very little of the information, and will soon go to sleep, or leave. . Audiovisual presentations are better, but the kinesthetic people (23% of the population) still are being left out. Role-plays, practical exercises and demonstrations and effective use of your own personal body language will help these people access your information.\n\nBrain Gym Exercises \n\nIt is common knowledge that our brain has two hemispheres , and that each side processes information differently. Brian Gym is a program of activities that actively “exercises” the brain and encourages the switching from one side to another. Some examples are\nCross Crawling - useful to encourage the use of BOTH sides of the brain.\n\n\nEar Massage is very effective at “switching on”\n both ears - useful before a fully auditory \npresentation\n\nFigure Eights helps balance and\n “switch on” both eyes. \n\n\n\nKnots -integrates both hemispheres, and is very calming and relaxing\n\nYawning - stress release, calms the \nnervous system, activates hearing\n\n\n\n\n\n\n\n\n\n\n\nElephant helps hand/eye co-ordination\nincreases physical comfort, increases attention span \n\n\n\n\n\nSelf Image\n\nOne of the worst negative effects of most modern education systems is that it gives people the idea that learning is difficult. Most people have some level of inner self-doubt as to their ability as a learner. But the reality is that humans are extremely efficient learners, I fact our brain is designed for just that purpose. By the age of three or four, we have each learnt to get dressed, walk, run, play, feed ourselves, talk at least one language - all very complex activities. But we learnt them with ease. Its only when we get to school that we find learning difficult. Or is it the teaching????\n\nA short visualization in which people are asked to clearly to remember a time when they learnt something new and it was fun, will always get the feedback of stories of physical activities and personal achievements. The fact that experiences within a school environment are so rarely listed is a sad commentary on our system of teaching.\n\nSharing in Pairs\n\nMuch information is received but often not processed and integrated into our information base, our lives. Our senses take in an amazing amount of information, all the time. By getting into small groups, or pairs and discussing what was just learnt, or how it impacts on their lives, will greatly enhance the possibility of that information being integrated and remembered. The very act of talking stimulates hormonal effects that reinforce that thought by encouraging the “myelination” (thickening) of the brain cells being accessed at that time, thus reinforcing that thought process.\n\nMind Maps\n\nMind Mapping is a method of recording and processing information that more closely images the human brain than does the traditional linear lists. Nature is not linear, our brains are not linear - work with Nature. The graphic at the top of this article is an example of a simple Mind Map.\n\nCreative Processes.\n\nTalking/lecturing is only one of many possible processes that can be used to present information. In fact modern research in educational psychology suggests that the lecture format is the least efficient process commonly available.\n\nOther possibilities include\nBrainstorming\nRole-plays\nField Trips\nPractical Exercises\nVisualizations\nMusic and Dance\nModeling\nSmall Group or Individual Research Projects\nChalk Drawing (large scale mapping in chalk on the ground)\nRevision\nActive Games\nSimulations\nProblem Solving\nPicture Analysis and Discussion \nRelaxation\nQuizzes.\n\nAnd the real exciting part of education starts when you mix and match different processes with different themes.\n\nSo, try it, enjoy it. Experiment. Take risks. Learn to be Effective.\n
''Links to Documents and Wikis''\n\n[[Teaching Manual|http://www.ipcp.org.br/TeachingManual]]\n\n''Courses Developed''\n__[[In Portugues]]__\n\n__[[In English]]__\n\n\n__[[Control Panel]]__\n
Have trios write and perform a song about something they learned in the training. For example, in a motorcycle safety class one team sang "Row Row Row Your Boat" with words describing how to safely make a turn.
PC Learning Resources
!Software\n\nThe main software used throughout this system is that of ~TiddlyWiki (TW). [[Instructions here|TW Instructions]]
!SoilWeb Game\n[[como arquivo DOC|Themes-Handouts/Portugues/Solos/SoilWebGame.doc]]
!Soils
!Solos
Something New"\n\nOn the second day of a team building meeting, ask each person to share one thing they learned about someone on the team in the last day. Have the rest of the group try to guess who is being described.
<<forEachTiddler\n where\n 'tiddler.tags.contains("Sources") \n write\n '+tiddler.data("booktitle")+"\sn"'\n>>
!References to Sources or Links\n\nTo help maintain the usefulness of this information, each entry should be tagged by the name of the person contributing the entry, a tag classifying the entry (at least one!) and the reference of the source of the entry - which may be the same of the person originating the entry, if in fact that person genuiney created the idea, process or information. If you are simply passing on information from another source please refer to that source correctly, by entering the details on the [[Source]] and by using the tag you select in all future entries fro that soiurce.\n\nWhen entering multiple entries from one source, it will be convenient to open the entry fo that source, and then repeatedly click on __new here__ for each new entry, remembering to put your name and a description tag in each tiddler.
!Spanish
At the end of a team building session, ask each person to share a "star moment" they saw in someone else. A star moment is when someone’s gift as a team member was shining through. As they share a star moment, have them place a star on the person they are recognizing. Ensure that each person is given a star moment. If necessary, mention some star moments you observed.
!Learning Processes Database\nThis page allows access to various files, articles, processes and Teaching Resources about Creative, Interactive and Participative Learning. These files are divided by the type of process and alphabetically.\n\nThe idea is a collaborative Database, so, participants are invited to add further processes, ideas and articles. We ask that certain basic rules be followed in order to make this resource accessible and easy to use by as many people as possible.\n\n*Once you have loged-in, you can edit almost any part of this information. Please do not edit material that is not originally yours, without permission from the original author. You are welcome to add comments, suggestions and alternatives to any entry.\n*On subscribing to this resource you selected a name and password. On your first visit, lease fill in the Participants Profile Form so that we can all know a little more about you. And when you add new material please use that same login name as one of the tags for your entry - that way everyoe can know who is the author of any entry. \n*Read the [[TW Instructions]] and familiarize yourself in how to use this software. We also recommend that you download this software for use in your own organisation - this will facilitate the integration between this commonly organisaed TW and your private TW.\n*Respect the usual internet discussion agreements, especially by showing respect and consideration to others users of the site. This is the place to build a shared vision and resource base for Permaculture Teachers, it is not the place for peronal complaints or abusive campaigns (any abusive behaviour will result in the person being removed from the authorization list of this Site) \n\n\n
The Stone Sharing Exercise\n\nREQUIREMENTS:\n\nEnough small, attractive, vari-colored stones for everyone in the group (perhaps from the shore of one of the Finger Lakes). Have the group sitting in a circle, close enough to each other to hand off and receive stones easily.\n\nINSTRUCTIONS TO THE GROUP (with rationale):\n\n"This warm-up exercise is designed to help us get in touch with three aspects of life that contribute to our overall health and well-being: a right relationship with ourselves; a right relationship with all other living beings; and a right relationship with the earth."\n\n"After everyone has selected a stone from the basket that I will pass around, we will each share briefly with the group: 1) our full name and some mention of its possible meaning or significance to us, its family or ethnic origin, etc. (expressing right relationship with oneself); 2) an animal that has been special in our life, as a pet, e.g., or as an object of fascination and interest (expressing right relationship with all other living beings); 3) a place on earth that is special to us as a place of beauty, comfort, good memories, inspiration, relaxation (expressing right relationship with the earth)."\n\n"I will start, and when I have finished sharing, everyone should pass their stone to the person on their left and receive the stone from the person on their right. This is the process that we will follow after every sharing. By the time we have finished the exercise, everyone will have had their stone touched by everyone in the group and will have touched everyone else's stone, and we will each end up with our own stone."\n\n"You may keep your stone for the rest of your life, or give it back to the universe at some point. You might keep it in your pocket, your pocketbook, on your desk, or on a shelf and it can serve as a reminder of each person who shared and with whom you connected during the exercise; it can serve as a reminder of this workshop/session/training/experience and of all the things that you will learn from it; and it can serve as a "touch-stone" to rub when you are feeling stressed.\n\n"My name is . . . . . . . etc."\n\n(You may have to remind and prompt about the way to pass off and receive the stones after your sharing as leader.)\n\nVARIATIONS:\n\nRight relationship with oneself can be expressed in a variety of ways: "My name is and my favorite color is . . . and why," "My name is and I was born in (country, city, state, province, etc.)," "My name is and my parents are/were (professions, careers)," "My name is . . . and what gives me great joy in life is . . .," "My name is . . .and when I retire I am going to . . .," etc.\n\nRight relationship with all other living beings can also be expressed in a multiplicity of ways: "My spouse/partner/children/grandchildren/ favorite friend is/are special because . . . ," "What I value most in my friendships/co-worker relationships is . . .," "It is easier for me to forgive someone who has wronged me if . . .," etc.\n\nRight relationship with the earth can also be expressed in many different ways: "What I do to care for the earth is . . .," "One way that the earth nourishes me is . . .," etc.\n\nIt is useful and helpful to process the exercise a little bit at the end and to allow for some expression of how it felt to do it.\n\nFrom: John Gormley, Health Educator, Gannett Health Center, Cornell University, Ithaca, NY 14853
/*{{{*/\n/*Monochrome Theme for TiddlyWiki*/\n/*Design and CSS by Saq Imtiaz*/\n/*Version 1.0*/\n/*}}}*/\n/*{{{*/\n\nbody {background:#009999; color:#ffffff; font:12px Verdana, Helvetica, sans-serif;\n }\n\n#header {padding: 0em 0em 0em 0em; background:#009999; font-family: arial,helvetica; font-size:12px;\n }\n\n.siteTitle {\npadding-top:5px;\nfloat:left;\nfont-family: 'Trebuchet MS' sans-serif;\nfont-weight: bold;\nfont-size: 26px;\ncolor:#003333; margin-right:2em;margin-left:0.5em;\n}\n\n#topMenu br {display:none;}\n#topMenu a, #topMenu .tiddlyLink, #topMenu .button {margin:0em; color:#666; padding:15px 15px 10px 15px;padding-top:1.6em;border:none; border-right: 1px solid #666;float:left;}\n#topMenu {border-left: 1px solid #666; float:left;margin:0;}\n#topMenu a:hover {color:#ccc; background:#009999;}\n \n\n\n#sideMenu {\n position: left;\n down: 20px;\n width: 10em;\n text-align: right;\n line-height: 1.6em;\n padding:10px 10px 10px 10px; padding-top:2em;\n font-size: 1.1em;\n\n#displayArea {margin-left:1.35em; margin-right:17.65em; margin-top:0.5em; padding-top:1em; padding-bottom:10px;}\n\n.tiddler {background:#009999; margin-bottom:20px; padding:1em 2em 1em 2em;}\n\na, a:hover{\ncolor:#fff;\ntext-decoration: none; background:transparent;\n}\n\n.viewer a, .viewer a:hover{border-bottom:1px dotted #fff; font-weight:normal;}\n\n.viewer .button, .editorFooter .button{\ncolor: #fff;\nborder: 1px solid #fff;\n}\n\n.viewer .button:hover,\n.editorFooter .button:hover, .viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{\ncolor: #fff;\nbackground: #009999;\nborder-color: #ffffff;\n}\n\n.title {color:#ccc; font-family:'Lucida Grande', Verdana, Sans-Serif; font-size:1.5em;\n}\n\n.subtitle, .subtitle a { color: #777; font-size: 0.95em;margin:0.2em;}\n.shadow .title{color:#777;}\n\n.toolbar {font-size:90%;}\n.selected .toolbar a {color:#666;border:0;}\n.selected .toolbar a:hover {color:#999; background:transparent;border:0;}\n\n.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#666;border:0; background:transparent;border:0;}\n\n.tagging, .tagged {\nborder: 1px solid #555;\nbackground-color: #444;\n}\n\n.selected .tagging, .selected .tagged {\nbackground-color: #009999;\nborder: 1px solid #666;\n}\n\n.tagging .listTitle, .tagged .listTitle {\ncolor: #666;\n}\n\n.selected .tagging .listTitle, .selected .tagged .listTitle {\ncolor: #aaa;\n}\n\n.tagging .button, .tagged .button {\ncolor: #838383;\n}\n.selected .tagging .button, .selected .tagged .button {\ncolor:#003333;\n}\n\n.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}\n\n.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {\nborder: none; background:transparent; text-decoration:underline; color:#333;\n}\n\n#sidebarOptions {margin-top:1em;}\n#sidebar {margin-right:1.35em;}\n\n#sidebarTabs .tabContents { \n font-family: arial,helvetica;}\n\n#sidebarOptions a, #sidebarOptions a:hover{border:none;color:#666;}\n#sidebarOptions a:hover, #sidebarOptions a:active {background:#009999; color:#ccc;}\n#sidebarTabs .tabContents {background:#009999;border:0px solid #666; border-right:1px solid #454545;}\n#sidebarOptions input {background:#ccc; border:1px solid #666;}\n\n#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#666;font-weight:normal;}\n#sidebarTabs .tabContents .tiddlyLink:hover, #sidebarTabs .tabContents .button:hover {color:#ccc; background:transparent;}\n.listTitle {color:#777;}\n\n#sidebarTabs .tabSelected,#sidebarTabs .tabSelected:hover{background:#003399;border:none;color:#ccc; border:1px solid #454545;}\n#sidebarTabs .tabUnselected{background:#3B3B3B; border:1px solid #454545; color:#666;}\n\n #sidebarTabs .txtMoreTab .tabSelected,\n #sidebarTabs .txtMoreTab .tab:hover,\n #sidebarTabs .txtMoreTab .tabContents{\ncolor: #ccc;\nbackground: #009999; border:1px solid #3B3B3B;\n}\n\n #sidebarTabs .txtMoreTab .tabUnselected {\n\ncolor: #777; border:1px solid #3B3B3B;\nbackground: #009999;\n}\n\n\n#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#ccc; background:transparent;}\n\n #sidebarOptions .sliderPanel {\nbackground: #009999; font-size: .9em;\n}\n\n#sidebarOptions .sliderPanel input {border:1px solid #666; background:#ccc;}\n#sidebarOptions .sliderPanel .txtOptionInput {border:1px solid #666;width:9em;}\n\n#sidebarOptions .sliderPanel a {font-weight:normal; color:#666;background-color: #009999; border-bottom:1px dotted #333;}\n\n#sidebarOptions .sliderPanel a:hover {\ncolor:#ccc;\nbackground-color: #009999;\nborder:none;\nborder-bottom:1px dotted #111;\n}\n\n.popup {\nbackground: #009999;\nborder: 1px solid #009999;\n}\n\n.popup li.disabled {\ncolor: #000;\n}\n\n.popup li a, .popup li a:visited {\ncolor: #777;\nborder: none;\n}\n\n.popup li a:hover {\nbackground: #009999;\ncolor: #c3c3c3;\nborder: none;\n}\n.popup hr {\n color: #777;\n background: #009999;\n border-bottom: 1px;\n}\n\n.listBreak div{\n border-bottom: 1px solid #777;\n}\n\n#messageArea {\nborder: 4px dotted #ccc;\nbackground: #009999;\ncolor: #777;\nfont-size:90%;\n}\n\n#messageArea .button{\n\ncolor: #ffffff;\nbackground:#009999;\nborder: 1px solid #ccc;\n}\n\n#messageArea .button:hover {\n\ncolor: #ccc;\nbackground: #009999;\nborder-color: #3B3B3B;\n}\n\n.viewer blockquote {\nborder-left: 5px solid #ffffff; background:#009999\n}\n\n.viewer table, .viewer td {\nborder: 1px solid #ffffff;\n}\n\n.viewer th, thead td {\nbackground: #009999;\nborder: 1px solid #009999;\ncolor: #ccc;\n}\n.viewer pre {\nborder: 1px solid #3b3b3b;\nbackground: #009999;\n}\n\n.viewer code {\ncolor: #c3c3c3; background:#009999;\n}\n\n.viewer hr {\nborder-top: dashed 1px #222; margin:0 1em;\n}\n\n.editor input {\nborder: 1px solid #ccc; margin-top:5px;\n}\n\n.editor textarea {\nborder: 1px solid #ccc;\n}\n\nh1,h2,h3,h4,h5 { color: #ffffff; background: #009999; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }\nh1 {font-size:18px;}\nh2 {font-size:16px;}\nh3 {font-size: 14px;}
/*{{{*/\nbody {\n background: [[ColorPalette::Background]];\n color: [[ColorPalette::Foreground]];\n}\n\na{\n color: [[ColorPalette::PrimaryMid]];\n}\n\na:hover{\n background: [[ColorPalette::PrimaryMid]];\n color: [[ColorPalette::Background]];\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: [[ColorPalette::SecondaryDark]];\n background: [[ColorPalette::PrimaryPale]];\n}\n\n.button {\n color: [[ColorPalette::PrimaryDark]];\n border: 1px solid [[ColorPalette::Background]];\n}\n\n.button:hover {\n color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::SecondaryLight]];\n border-color: [[ColorPalette::SecondaryMid]];\n}\n\n.button:active {\n color: [[ColorPalette::Background]];\n background: [[ColorPalette::SecondaryMid]];\n border: 1px solid [[ColorPalette::SecondaryDark]];\n}\n\n.header {\n background: [[ColorPalette::PrimaryMid]];\n}\n\n.headerShadow {\n color: [[ColorPalette::Foreground]];\n}\n\n.headerShadow a {\n font-weight: normal;\n color: [[ColorPalette::Foreground]];\n}\n\n.headerForeground {\n color: [[ColorPalette::Background]];\n}\n\n.headerForeground a {\n font-weight: normal;\n color: [[ColorPalette::PrimaryPale]];\n}\n\n.tabSelected{\n color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::TertiaryPale]];\n border-left: 1px solid [[ColorPalette::TertiaryLight]];\n border-top: 1px solid [[ColorPalette::TertiaryLight]];\n border-right: 1px solid [[ColorPalette::TertiaryLight]];\n}\n\n.tabUnselected {\n color: [[ColorPalette::Background]];\n background: [[ColorPalette::TertiaryMid]];\n}\n\n.tabContents {\n color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::TertiaryPale]];\n border: 1px solid [[ColorPalette::TertiaryLight]];\n}\n\n.tabContents .button {\n border: 0;}\n\n#sidebar {\n}\n\n#sidebarOptions input {\n border: 1px solid [[ColorPalette::PrimaryMid]];\n}\n\n#sidebarOptions .sliderPanel {\n background: [[ColorPalette::PrimaryPale]];\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: [[ColorPalette::PrimaryMid]];\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: [[ColorPalette::Background]];\n background: [[ColorPalette::PrimaryMid]];\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: [[ColorPalette::PrimaryMid]];\n background: [[ColorPalette::Background]];\n}\n\n.wizard {\n background: [[ColorPalette::SecondaryLight]];\n border-top: 1px solid [[ColorPalette::SecondaryMid]];\n border-left: 1px solid [[ColorPalette::SecondaryMid]];\n}\n\n.wizard h1 {\n color: [[ColorPalette::SecondaryDark]];\n}\n\n.wizard h2 {\n color: [[ColorPalette::Foreground]];\n}\n\n.wizardStep {\n background: [[ColorPalette::Background]];\n border-top: 1px solid [[ColorPalette::SecondaryMid]];\n border-bottom: 1px solid [[ColorPalette::SecondaryMid]];\n border-left: 1px solid [[ColorPalette::SecondaryMid]];\n}\n\n.wizard .button {\n color: [[ColorPalette::Background]];\n background: [[ColorPalette::PrimaryMid]];\n border-top: 1px solid [[ColorPalette::PrimaryLight]];\n border-right: 1px solid [[ColorPalette::PrimaryDark]];\n border-bottom: 1px solid [[ColorPalette::PrimaryDark]];\n border-left: 1px solid [[ColorPalette::PrimaryLight]];\n}\n\n.wizard .button:hover {\n color: [[ColorPalette::PrimaryLight]];\n background: [[ColorPalette::PrimaryDark]];\n border-color: [[ColorPalette::PrimaryLight]];\n}\n\n.wizard .button:active {\n color: [[ColorPalette::Background]];\n background: [[ColorPalette::PrimaryMid]];\n border-top: 1px solid [[ColorPalette::PrimaryLight]];\n border-right: 1px solid [[ColorPalette::PrimaryDark]];\n border-bottom: 1px solid [[ColorPalette::PrimaryDark]];\n border-left: 1px solid [[ColorPalette::PrimaryLight]];\n}\n\n#messageArea {\n border: 1px solid [[ColorPalette::SecondaryDark]];\n background: [[ColorPalette::SecondaryMid]];\n color: [[ColorPalette::PrimaryDark]];\n}\n\n#messageArea .button {\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::Background]];\n}\n\n.popup {\n background: [[ColorPalette::PrimaryLight]];\n border: 1px solid [[ColorPalette::PrimaryMid]];\n}\n\n.popup hr {\n color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::PrimaryDark]];\n border-bottom: 1px;\n}\n\n.listBreak div{\n border-bottom: 1px solid [[ColorPalette::PrimaryDark]];\n}\n\n.popup li.disabled {\n color: [[ColorPalette::PrimaryMid]];\n}\n\n.popup li a, .popup li a:visited {\n color: [[ColorPalette::TertiaryPale]];\n border: none;\n}\n\n.popup li a:hover {\n background: [[ColorPalette::PrimaryDark]];\n color: [[ColorPalette::Background]];\n border: none;\n}\n\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n color: [[ColorPalette::TertiaryDark]];\n}\n\n.title {\n color: [[ColorPalette::SecondaryDark]];\n}\n\n.subtitle {\n color: [[ColorPalette::TertiaryDark]];\n}\n\n.toolbar {\n color: [[ColorPalette::PrimaryMid]];\n}\n\n.tagging, .tagged {\n border: 1px solid [[ColorPalette::TertiaryPale]];\n background-color: [[ColorPalette::TertiaryPale]];\n}\n\n.selected .tagging, .selected .tagged {\n background-color: [[ColorPalette::TertiaryLight]];\n border: 1px solid [[ColorPalette::TertiaryMid]];\n}\n\n.tagging .listTitle, .tagged .listTitle {\n color: [[ColorPalette::PrimaryDark]];\n}\n\n.tagging .button, .tagged .button {\n border: none;\n}\n\n.footer {\n color: [[ColorPalette::TertiaryLight]];\n}\n\n.selected .footer {\n color: [[ColorPalette::TertiaryMid]];\n}\n\n.sparkline {\n background: [[ColorPalette::PrimaryPale]];\n border: 0;\n}\n\n.sparktick {\n background: [[ColorPalette::PrimaryDark]];\n}\n\n.error, .errorButton {\n color: [[ColorPalette::Foreground]];\n background: [[ColorPalette::Error]];\n}\n\n.warning {\n color: [[ColorPalette::Foreground]];\n background: [[ColorPalette::SecondaryPale]];\n}\n\n.cascade {\n background: [[ColorPalette::TertiaryPale]];\n color: [[ColorPalette::TertiaryMid]];\n border: 1px solid [[ColorPalette::TertiaryMid]];\n}\n\n.imageLink, #displayArea .imageLink {\n background: transparent;\n}\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n border: 1px solid [[ColorPalette::SecondaryMid]];\n}\n\n.viewer blockquote {\n border-left: 3px solid [[ColorPalette::TertiaryDark]];\n}\n\n.viewer table {\n border: 2px solid [[ColorPalette::TertiaryDark]];\n}\n\n.viewer th, thead td {\n background: [[ColorPalette::SecondaryMid]];\n border: 1px solid [[ColorPalette::TertiaryDark]];\n color: [[ColorPalette::Background]];\n}\n\n.viewer td, .viewer tr {\n border: 1px solid [[ColorPalette::TertiaryDark]];\n}\n\n.viewer pre {\n border: 1px solid [[ColorPalette::SecondaryLight]];\n background: [[ColorPalette::SecondaryPale]];\n}\n\n.viewer code {\n color: [[ColorPalette::SecondaryDark]];\n}\n\n.viewer hr {\n border: 0;\n border-top: dashed 1px [[ColorPalette::TertiaryDark]];\n color: [[ColorPalette::TertiaryDark]];\n}\n\n.highlight, .marked {\n background: [[ColorPalette::SecondaryLight]];\n}\n\n.editor input {\n border: 1px solid [[ColorPalette::PrimaryMid]];\n}\n\n.editor textarea {\n border: 1px solid [[ColorPalette::PrimaryMid]];\n width: 100%;\n}\n\n.editorFooter {\n color: [[ColorPalette::TertiaryMid]];\n}\n\n/*}}}*/
/*{{{*/\n* html .tiddler {\n height: 1%;\n}\n\nbody {\n font-size: .75em;\n font-family: arial,helvetica;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\ndt {font-weight: bold;}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n\n.txtOptionInput {\n width: 11em;\n}\n\n#contentWrapper .chkOptionInput {\n border: 0;\n}\n\n.externalLink {\n text-decoration: underline;\n}\n\n.indent {margin-left:3em;}\n.outdent {margin-left:3em; text-indent:-3em;}\ncode.escaped {white-space:nowrap;}\n\n.tiddlyLinkExisting {\n font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n font-weight: bold;\n}\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n#sidebarTabs .tiddlyLinkExisting {\n font-weight: bold;\n font-style: normal;\n}\n\n.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 1em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 1em 0em 1em 1em;\n left: 0px;\n top: 0px;\n}\n\n.siteTitle {\n font-size: 3em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n#mainMenu {\n position: absolute;\n left: 0;\n width: 10em;\n text-align: right;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.1em;\n}\n\n#sidebar {\n position: absolute;\n right: 3px;\n width: 16em;\n font-size: .9em;\n}\n\n#sidebarOptions {\n padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n margin-left: 1em;\n padding: 0.5em;\n font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n font-weight: bold;\n display: inline;\n padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n margin: 0 0 .3em 0;\n}\n\n#sidebarTabs .tabContents {\n width: 15em;\n overflow: hidden;\n}\n\n.wizard {\n padding: 0.1em 0em 0em 2em;\n}\n\n.wizard h1 {\n font-size: 2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.4em 0em 0.2em 0em;\n}\n\n.wizard h2 {\n font-size: 1.2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.2em 0em 0.2em 0em;\n}\n\n.wizardStep {\n padding: 1em 1em 1em 1em;\n}\n\n.wizard .button {\n margin: 0.5em 0em 0em 0em;\n font-size: 1.2em;\n}\n\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\n}\n\n#messageArea a{\n text-decoration: underline;\n}\n\n.popup {\n font-size: .9em;\n padding: 0.2em;\n list-style: none;\n margin: 0;\n}\n\n.popup hr {\n display: block;\n height: 1px;\n width: auto;\n padding: 0;\n margin: 0.2em 0em;\n}\n\n.listBreak {\n font-size: 1px;\n line-height: 1px;\n}\n\n.listBreak div {\n margin: 2px 0;\n}\n\n.popup li.disabled {\n padding: 0.2em;\n}\n\n.popup li a{\n display: block;\n padding: 0.2em;\n}\n\n.tabset {\n padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.tabContents {\n padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n margin: 0;\n padding: 0;\n}\n\n.txtMainTab .tabContents li {\n list-style: none;\n}\n\n.tabContents li.listLink {\n margin-left: .75em;\n}\n\n#displayArea {\n margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n font-size: .9em;\n visibility: hidden;\n}\n\n.selected .toolbar {\n visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n font-style: italic;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 1.1em;\n}\n\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n\n* html .viewer pre {\n width: 99%;\n padding: 0 0 1em 0;\n}\n\n.viewer {\n line-height: 1.4em;\n padding-top: 0.5em;\n}\n\n.viewer .button {\n margin: 0em 0.25em;\n padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n padding: 3px;\n}\n\n.viewer table.listView {\n font-size: 0.85em;\n margin: 0.8em 1.0em;\n}\n\n.viewer table.listView th, .viewer table.listView td, .viewer table.listView tr {\n padding: 0px 3px 0px 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n margin-left: 0.5em;\n font-size: 1.2em;\n line-height: 1.4em;\n overflow: auto;\n}\n\n.viewer code {\n font-size: 1.2em;\n line-height: 1.4em;\n}\n\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n display: block;\n width: 100%;\n font: inherit;\n}\n\n.editorFooter {\n padding: 0.25em 0em;\n font-size: .9em;\n}\n\n.editorFooter .button {\npadding-top: 0px; padding-bottom: 0px;}\n\n.fieldsetFix {border: 0;\npadding: 0;\nmargin: 1px 0px 1px 0px;\n}\n\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n outline: 0;\n}\n\n.zoomer {\n font-size: 1.1em;\n position: absolute;\n padding: 1em;\n}\n\n.cascade {\n font-size: 1.1em;\n position: absolute;\n overflow: hidden;\n}\n/*}}}*/
!TW Instructions\n\nThis site is built using the ~TiddlyWiki (TW) open-source software. This is a small program that stores individual entries (called tiddlers) in a single .html document. It is a compact and yet powerful way of organising ideas, thoughts and information. It is also extremely flexible and collaborative.\n\nWhen used as a website (as in this case) the individual tiddlers can be stored in a server-side database so that the main index file remains small and quick to load. Individual entries are automatically saved (and stored in the database) as they are written.\n\nAnyone knowing the URL of this site could access it. Since the site is meant for people who are actually members, weask that the site URL not be passed on to others. People who are not part of the membership will not be able to edit the site, so if the URL was known they could use the material presented without contrbuting in any way at all.\n\nOnce you have subscribed to the site you can login by opening the site URL, clicking on "Built by Skye" (note - the softwareTiddlyWiki was built and distributed by Jeremy Ruston NOT Skye - the version described here is a simple adaptation by Skye).to open the control panel, then entering your name and password in the appropriate boxes.\n\n''Creating a New Entry'' is done by simply clicking on __new tiddler__ (at right). This will open the tiddler edit frame that is composed of three boxes - the tiddler title, the tags and the main area. Enter the title of your entry as Title (the tiddler will be known by this title), now enter any tags you want to use with this tiddler. tags are labels that let you quickly find a specific group of tiddlers in the future. For example it is a good idea to use a tag categorizing the entry eg water_systems, research_arquives, journal....(note that tags with more than one word need to be joined with the underscore, otherwise the system will tag "water systems" as having one tag of "water" and the other as "systems") The various tags are simply separated with a blank space. Always add your name as a tag to any tiddler you create, this allows people to know who created that entry.You can add as many tags as you need. See more about [[tags]] here. Now enter the text of your entry in the main box, then remember to click on "done" to save your work.\n\n''Editing an Existing Entry'' is simply done by opening that tiddler, then clicking on __edit__ in the control line at the head of the tiddler. Once you have finished remember to click __done__ to save your changes.\n\n''New Journal'' - The program also has a control at the right called __new journal__, clicking here will open a new tiddler with todays date as the heading. This is very useful in your learning journal. I normally add a tag such as journal, and during courses I ask that people also enter their name as a tag.\n\n''Adding Options or Comments to Someone Elses Entry'' - it is not permitted to change the entries of other people without their authorization. You can however add comments or suggestions to someones entry without actually modifying the original. Simply open the entry you want to comment on. Now click on __new here__, this will,open a new tiddler which has the original tiddler listed in the tags line. add your name as a tag, and any other tags you want, enter the title of your comment, and in the main text box, your comments. Now when you click __done__ to save your tiddler, the title of your comment will automatically appear at the bottom of the original tiddler, as a clickable tiddler itself.\n\nSearching for specific tiddlers can be done in various ways. The control panel at the right can list the tiddlers in date sequence (__timeline__), in alphabetic sequence (__All__) or sorted by their tag (__tag__). The last tag __More __ is an internal system list and shouldn´t be used. Clicking on __tags__ will show the tags currently in use, with a number (how many times that tag exists) and an downwards arrow, clicking on this arrow will open a list of the names of each tiddler using that tag name - click on the tiddler you are looking for.\n\nThe system also has a simple serach engine - top right - enter the text you are searching for then click "enter" , the program will list the tiddlers that bear that text. \n\nWithin any the text you can force a simple link to another tiddler simply by using the square brackets. For example the link to the tiddler that explains more about tags in the above has the code {{{[[tags]]}}}.\n\nFormating text, adding photos or images, even external files can be presented - they are all slightly more complicated and will be described in other tiddlers.\n\n\n\n\n\nSome of the more advanced features of using TiddlyWiki are described below. And you can always reference the substancial information about TiddlyWiki on the internet - start here.\n\n
Take off from "...and the cheese stands alone"\n\nThis exercise should have a very skilled facilitator - emotions can run high. Used by Sharon Dittman on occasion in AIDS training. Works well with co-workers who know each other well.\n\nHave everyone stand in a circle. Ask a series of questions. Start out with simple, common questions, e.g. all who like red enter into the middle. Build up to tough questions: All vegetarians in the middle. All white people in the middle. All gay people, etc.\n\nThe facilitator needs to recognize that these are risky areas but the point is to give people a chance to see what it is like to be alone or to be on the outside\n\nFrom: Sharon Dittman, HIV/AIDS Coordinator, Health Educator, Gannett Health Center, Cornell University
/***\n| Name|TagglyTaggingPlugin|\n| Description|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|\n| Version|3.0 ($Rev: 2101 $)|\n| Date|$Date: 2007-04-20 00:24:20 +1000 (Fri, 20 Apr 2007) $|\n| Source|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n!Notes\nSee http://mptw.tiddlyspot.com/#TagglyTagging\n***/\n//{{{\nconfig.taggly = {\n\n // for translations\n lingo: {\n labels: {\n asc: "\su2191", // down arrow\n desc: "\su2193", // up arrow\n title: "title",\n modified: "modified",\n created: "created",\n show: "+",\n hide: "-",\n normal: "normal",\n group: "group",\n commas: "commas",\n sitemap: "sitemap",\n numCols: "cols\su00b1", // plus minus sign\n label: "Tagged as '%0':",\n excerpts: "excerpts",\n noexcerpts: "no excerpts"\n },\n\n tooltips: {\n title: "Click to sort by title",\n modified: "Click to sort by modified date",\n created: "Click to sort by created date",\n show: "Click to show tagging list",\n hide: "Click to hide tagging list",\n normal: "Click to show a normal ungrouped list",\n group: "Click to show list grouped by tag",\n sitemap: "Click to show a sitemap style list",\n commas: "Click to show a comma separated list",\n numCols: "Click to change number of columns"\n }\n },\n\n config: {\n showTaggingCounts: true,\n listOpts: {\n // the first one will be the default\n sortBy: ["title","modified","created"],\n sortOrder: ["asc","desc"],\n hideState: ["show","hide"],\n listMode: ["normal","group","sitemap","commas"],\n numCols: ["1","2","3","4","5","6"],\n excerpts: ["noexcerpts","excerpts"]\n },\n valuePrefix: "taggly.",\n excludeTags: ["excludeLists","excludeTagging"],\n excerptSize: 50,\n excerptMarker: "/%"+"%/"\n },\n\n getTagglyOpt: function(title,opt) {\n var val = store.getValue(title,this.config.valuePrefix+opt);\n return val ? val : this.config.listOpts[opt][0];\n },\n\n setTagglyOpt: function(title,opt,value) {\n if (!store.tiddlerExists(title))\n // create it silently\n store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),null);\n // if value is default then remove it to save space\n return store.setValue(title,\n this.config.valuePrefix+opt,\n value == this.config.listOpts[opt][0] ? null : value);\n },\n\n getNextValue: function(title,opt) {\n var current = this.getTagglyOpt(title,opt);\n var pos = this.config.listOpts[opt].indexOf(current);\n // a little usability enhancement. actually it doesn't work right for grouped or sitemap\n var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);\n var newPos = (pos + 1) % limit;\n return this.config.listOpts[opt][newPos];\n },\n\n toggleTagglyOpt: function(title,opt) {\n var newVal = this.getNextValue(title,opt);\n this.setTagglyOpt(title,opt,newVal);\n }, \n\n createListControl: function(place,title,type) {\n var lingo = config.taggly.lingo;\n var label;\n var tooltip;\n var onclick;\n\n if ((type == "title" || type == "modified" || type == "created")) {\n // "special" controls. a little tricky. derived from sortOrder and sortBy\n label = lingo.labels[type];\n tooltip = lingo.tooltips[type];\n\n if (this.getTagglyOpt(title,"sortBy") == type) {\n label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];\n onclick = function() {\n config.taggly.toggleTagglyOpt(title,"sortOrder");\n return false;\n }\n }\n else {\n onclick = function() {\n config.taggly.setTagglyOpt(title,"sortBy",type);\n config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);\n return false;\n }\n }\n }\n else {\n // "regular" controls, nice and simple\n label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];\n tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];\n onclick = function() {\n config.taggly.toggleTagglyOpt(title,type);\n return false;\n }\n }\n\n // hide button because commas don't have columns\n if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))\n createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");\n },\n\n makeColumns: function(orig,numCols) {\n var listSize = orig.length;\n var colSize = listSize/numCols;\n var remainder = listSize % numCols;\n\n var upperColsize = colSize;\n var lowerColsize = colSize;\n\n if (colSize != Math.floor(colSize)) {\n // it's not an exact fit so..\n upperColsize = Math.floor(colSize) + 1;\n lowerColsize = Math.floor(colSize);\n }\n\n var output = [];\n var c = 0;\n for (var j=0;j<numCols;j++) {\n var singleCol = [];\n var thisSize = j < remainder ? upperColsize : lowerColsize;\n for (var i=0;i<thisSize;i++) \n singleCol.push(orig[c++]);\n output.push(singleCol);\n }\n\n return output;\n },\n\n drawTable: function(place,columns,theClass) {\n var newTable = createTiddlyElement(place,"table",null,theClass);\n var newTbody = createTiddlyElement(newTable,"tbody");\n var newTr = createTiddlyElement(newTbody,"tr");\n for (var j=0;j<columns.length;j++) {\n var colOutput = "";\n for (var i=0;i<columns[j].length;i++) \n colOutput += columns[j][i];\n var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class\n wikify(colOutput,newTd);\n }\n return newTable;\n },\n\n createTagglyList: function(place,title) {\n switch(this.getTagglyOpt(title,"listMode")) {\n case "group": return this.createTagglyListGrouped(place,title); break;\n case "normal": return this.createTagglyListNormal(place,title,false); break;\n case "commas": return this.createTagglyListNormal(place,title,true); break;\n case "sitemap":return this.createTagglyListSiteMap(place,title); break;\n }\n },\n\n getTaggingCount: function(title) {\n // thanks to Doug Edmunds\n if (this.config.showTaggingCounts) {\n var tagCount = store.getTaggedTiddlers(title).length;\n if (tagCount > 0)\n return " ("+tagCount+")";\n }\n return "";\n },\n\n getExcerpt: function(inTiddlerTitle,title) {\n if (this.getTagglyOpt(inTiddlerTitle,"excerpts") == "excerpts") {\n var t = store.getTiddler(title);\n if (t) {\n var text = t.text.replace(/\sn/," ");\n var marker = text.indexOf(this.config.excerptMarker);\n if (marker != -1) {\n return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";\n }\n else if (text.length < this.config.excerptSize) {\n return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";\n }\n else {\n return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";\n }\n }\n }\n return "";\n },\n\n notHidden: function(t,inTiddler) {\n if (typeof t == "string") \n t = store.getTiddler(t);\n return (!t || !t.tags.containsAny(this.config.excludeTags) ||\n (inTiddler && this.config.excludeTags.contains(inTiddler)));\n },\n\n // this is for normal and commas mode\n createTagglyListNormal: function(place,title,useCommas) {\n\n var list = store.getTaggedTiddlers(title,this.getTagglyOpt(title,"sortBy"));\n\n if (this.getTagglyOpt(title,"sortOrder") == "desc")\n list = list.reverse();\n\n var output = [];\n var first = true;\n for (var i=0;i<list.length;i++) {\n if (this.notHidden(list[i],title)) {\n var countString = this.getTaggingCount(list[i].title);\n var excerpt = this.getExcerpt(title,list[i].title);\n if (useCommas)\n output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);\n else\n output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\sn");\n\n first = false;\n }\n }\n\n return this.drawTable(place,\n this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),\n useCommas ? "commas" : "normal");\n },\n\n // this is for the "grouped" mode\n createTagglyListGrouped: function(place,title) {\n var sortBy = this.getTagglyOpt(title,"sortBy");\n var sortOrder = this.getTagglyOpt(title,"sortOrder");\n\n var list = store.getTaggedTiddlers(title,sortBy);\n\n if (sortOrder == "desc")\n list = list.reverse();\n\n var leftOvers = []\n for (var i=0;i<list.length;i++)\n leftOvers.push(list[i].title);\n\n var allTagsHolder = {};\n for (var i=0;i<list.length;i++) {\n for (var j=0;j<list[i].tags.length;j++) {\n\n if (list[i].tags[j] != title) { // not this tiddler\n\n if (this.notHidden(list[i].tags[j],title)) {\n\n if (!allTagsHolder[list[i].tags[j]])\n allTagsHolder[list[i].tags[j]] = "";\n\n if (this.notHidden(list[i],title)) {\n allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"\n + this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\sn";\n\n leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers\n\n }\n }\n }\n }\n }\n\n var allTags = [];\n for (var t in allTagsHolder)\n allTags.push(t);\n\n var sortHelper = function(a,b) {\n if (a == b) return 0;\n if (a < b) return -1;\n return 1;\n };\n\n allTags.sort(function(a,b) {\n var tidA = store.getTiddler(a);\n var tidB = store.getTiddler(b);\n if (sortBy == "title") return sortHelper(a,b);\n else if (!tidA && !tidB) return 0;\n else if (!tidA) return -1;\n else if (!tidB) return +1;\n else return sortHelper(tidA[sortBy],tidB[sortBy]);\n });\n\n var leftOverOutput = "";\n for (var i=0;i<leftOvers.length;i++)\n if (this.notHidden(leftOvers[i],title))\n leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\sn";\n\n var output = [];\n\n if (sortOrder == "desc")\n allTags.reverse();\n else if (leftOverOutput != "")\n // leftovers first...\n output.push(leftOverOutput);\n\n for (var i=0;i<allTags.length;i++)\n if (allTagsHolder[allTags[i]] != "")\n output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\sn" + allTagsHolder[allTags[i]]);\n\n if (sortOrder == "desc" && leftOverOutput != "")\n // leftovers last...\n output.push(leftOverOutput);\n\n return this.drawTable(place,\n this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),\n "grouped");\n\n },\n\n // used to build site map\n treeTraverse: function(title,depth,sortBy,sortOrder) {\n\n var list = store.getTaggedTiddlers(title,sortBy);\n if (sortOrder == "desc")\n list.reverse();\n\n var indent = "";\n for (var j=0;j<depth;j++)\n indent += "*"\n\n var childOutput = "";\n for (var i=0;i<list.length;i++)\n if (list[i].title != title)\n if (this.notHidden(list[i].title,this.config.inTiddler))\n childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder);\n\n if (depth == 0)\n return childOutput;\n else\n return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title) + "\sn" + childOutput;\n },\n\n // this if for the site map mode\n createTagglyListSiteMap: function(place,title) {\n this.config.inTiddler = title; // nasty. should pass it in to traverse probably\n var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"));\n return this.drawTable(place,\n this.makeColumns(output.split(/(?=^\s*\s[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic\n "sitemap"\n );\n },\n\n macros: {\n tagglyTagging: {\n handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n var refreshContainer = createTiddlyElement(place,"div");\n // do some refresh magic to make it keep the list fresh - thanks Saq\n refreshContainer.setAttribute("refresh","macro");\n refreshContainer.setAttribute("macroName",macroName);\n refreshContainer.setAttribute("title",tiddler.title);\n this.refresh(refreshContainer);\n },\n\n refresh: function(place) {\n var title = place.getAttribute("title");\n removeChildren(place);\n if (store.getTaggedTiddlers(title).length > 0) {\n var lingo = config.taggly.lingo;\n config.taggly.createListControl(place,title,"hideState");\n if (config.taggly.getTagglyOpt(title,"hideState") == "show") {\n createTiddlyElement(place,"span",null,"tagglyLabel",lingo.labels.label.format([title]));\n config.taggly.createListControl(place,title,"title");\n config.taggly.createListControl(place,title,"modified");\n config.taggly.createListControl(place,title,"created");\n config.taggly.createListControl(place,title,"listMode");\n config.taggly.createListControl(place,title,"excerpts");\n config.taggly.createListControl(place,title,"numCols");\n config.taggly.createTagglyList(place,title);\n }\n }\n }\n }\n },\n\n // todo fix these up a bit\n styles: [\n"/*{{{*/",\n"/* created by TagglyTaggingPlugin */",\n".tagglyTagging { padding-top:0.5em; }",\n".tagglyTagging li.listTitle { display:none; }",\n".tagglyTagging ul {",\n" margin-top:0px; padding-top:0.5em; padding-left:2em;",\n" margin-bottom:0px; padding-bottom:0px;",\n"}",\n".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",\n".tagglyTagging table { margin:0px; padding:0px; }",\n".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",\n".tagglyTagging .button, .tagglyTagging .hidebutton {",\n" color:[[ColorPalette::TertiaryLight]]; font-size:90%;",\n" border:0px; padding-left:0.3em;padding-right:0.3em;",\n"}",\n".tagglyTagging .button:hover, .hidebutton:hover, ",\n".tagglyTagging .button:active, .hidebutton:active {",\n" border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",\n"}",\n".selected .tagglyTagging .button { visibility:visible; }",\n".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",\n".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",\n".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",\n".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",\n".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",\n".tagglyTagging ul ul li {margin-left:0.5em; }",\n".editLabel { font-size:90%; padding-top:0.5em; }",\n".tagglyTagging .commas { padding-left:1.8em; }",\n"/* not technically tagglytagging but will put them here anyway */",\n".tagglyTagged li.listTitle { display:none; }",\n".tagglyTagged li { display: inline; font-size:90%; }",\n".tagglyTagged ul { margin:0px; padding:0px; }",\n".excerpt { color:[[ColorPalette::TertiaryMid]]; }",\n"div.tagglyTagging table,",\n"div.tagglyTagging table tr,",\n"td.tagglyTagging",\n" {border-style:none!important; }",\n"/*}}}*/",\n ""].join("\sn"),\n\n init: function() {\n merge(config.macros,this.macros);\n config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;\n store.addNotification("TagglyTaggingStyles",refreshStyles);\n }\n};\n\nconfig.taggly.init();\n\n//}}}\n\n
To emphasize how people have learned from each other in training, ask them to thank someone else in the group (other than the instructor) who helped them learn something or gain an insight into the training topic. Coach the person on the receiving end of the "Thank You" to simply say, "You’re Welcome." This helps people both give and receive compliments.
The Napkin Game\n\nAsk participants to form groups of equal size. Give each group a napkin and explain to them that their task is to fold their napkin as small as possible, but still large enough for each small group member to place a toe on the napkin.\n\nFrom: Tim Durnford, Training Manager, Human Resources, Statler Hotel, Cornell University, Ithaca, NY 14853
The Worst Team"\n\nHave each person share a description of the worst team they have ever been on and why. Post characteristics on a flip chart. Debrief this exercise by having the team identify ways to avoid the "worst team" characteristics.
Sivasailam Thiagarajan.\n\nWorkshops by Thiagi, Inc. All rights reserved\nURL: http://www.thiagi.com/
Three Truths and a Lie"\n\nGive each individual a 3x5 card and instruct them to write 4 statements about themselves: one of the statements should be false while 3 should be true. Explain that the goal is to fool people about which is the lie. Allow 5 minutes to write statements; then have each person read the 4 statements and have the group guess the lie. Award a prize to the individual who makes the most correct guesses.
/***\n\n|Name|ToggleSideBarMacro|\n|Created by|SaqImtiaz|\n|Location|http://tw.lewcid.org/#ToggleSideBarMacro|\n|Version|1.0|\n|Requires|~TW2.x|\n!Description:\nProvides a button for toggling visibility of the SideBar. You can choose whether the SideBar should initially be hidden or displayed.\n\n!Demo\n<<toggleSideBar "Toggle Sidebar">>\n\n!Usage:\n{{{<<toggleSideBar>>}}} <<toggleSideBar>>\nadditional options:\n{{{<<toggleSideBar label tooltip show/hide>>}}} where:\nlabel = custom label for the button,\ntooltip = custom tooltip for the button,\nshow/hide = use one or the other, determines whether the sidebar is shown at first or not.\n(default is to show the sidebar)\n\nYou can add it to your tiddler toolbar, your MainMenu, or where you like really.\nIf you are using a horizontal MainMenu and want the button to be right aligned, put the following in your StyleSheet:\n{{{ .HideSideBarButton {float:right;} }}}\n\n!History\n*23-07-06: version 1.0: completely rewritten, now works with custom stylesheets too, and easier to customize start behaviour. \n*20-07-06: version 0.11\n*27-04-06: version 0.1: working.\n\n!Code\n***/\n//{{{\nconfig.macros.toggleSideBar={};\n\nconfig.macros.toggleSideBar.settings={\n styleHide : "#sidebar { display: none;}\sn"+"#contentWrapper #displayArea { margin-right: 1em;}\sn"+"",\n styleShow : " ",\n arrow1: "Built by Skye",\n arrow2: "Built by Skye"\n};\n\nconfig.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var tooltip= params[1]||'toggle sidebar';\n var mode = (params[2] && params[2]=="hide")? "hide":"show";\n var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;\n var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;\n var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");\n if (mode == "hide")\n { \n (document.getElementById("sidebar")).setAttribute("toggle","hide");\n setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");\n }\n};\n\nconfig.macros.toggleSideBar.onToggleSideBar = function(){\n var sidebar = document.getElementById("sidebar");\n var settings = config.macros.toggleSideBar.settings;\n if (sidebar.getAttribute("toggle")=='hide')\n {\n setStylesheet(settings.styleShow,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","show");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);\n }\n else\n { \n setStylesheet(settings.styleHide,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","hide");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);\n }\n\n return false;\n}\n\nsetStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\sn","ToggleSideBarButtonStyles");\n\n//}}}
/***\n| Name|ToggleTagPlugin|\n| Description|Makes a checkbox which toggles a tag in a tiddler|\n| Version|3.0 ($Rev: 1845 $)|\n| Date|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source|http://tiddlyspot.com/mptw/#ToggleTagMacro|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n!Usage\n{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}\n* TagName - the tag to be toggled, default value "checked"\n* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler\n* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'\n(If a parameter is '.' then the default will be used)\n\nExamples:\n\n|Code|Description|Example|h\n|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|\n|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|\n|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|\n|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|\n|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|\nNotes:\n* If TiddlerName doesn't exist it will be silently created\n* Set label to '-' to specify no label\n* See also http://mgtd-alpha.tiddlyspot.com/#ToggleTag2\n\n!Known issues\n* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing\n\n***/\n//{{{\n\nmerge(config.macros,{\n\n toggleTag: {\n\n doRefreshAll: true,\n createIfRequired: true,\n shortLabel: "[[%0]]",\n longLabel: "[[%0]] [[%1]]",\n\n handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n var tag = (params[0] && params[0] != '.') ? params[0] : "checked";\n var title = (params[1] && params[1] != '.') ? params[1] : tiddler.title;\n var defaultLabel = (title == tiddler.title ? this.shortLabel : this.longLabel);\n var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;\n label = (label == '-' ? '' : label);\n var theTiddler = title == tiddler.title ? tiddler : store.getTiddler(title);\n var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {\n if (!store.tiddlerExists(title)) {\n if (config.macros.toggleTag.createIfRequired) {\n var content = store.getTiddlerText(title); // just in case it's a shadow\n store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);\n }\n else \n return false;\n }\n store.setTiddlerTag(title,this.checked,tag);\n return true;\n });\n }\n }\n});\n\n//}}}\n\n
Toilet Paper Go-Round\n\nPurpose: Use for short introductions at the start of a "heavy" or "intense" kind of meeting in order to lighten the atmosphere.\n\nMaterial: 1 roll of toilet paper (if you "borrow" it from an office bathroom, be kind and leave some for your colleagues!)\n\nInstructions:\n\nPass around a roll of toilet paper and say something like "just in case this meeting gets a little messy, everyone needs to take some" (with no other qualifiers or instruction). Then go on with other business (agenda, minutes, "housekeeping" items...) as the roll makes it way around the room.\n\nSome folks by nature will take many "squares" and some just a few.. once everyone has had the roll, and you've finished other business, ask everyone to introduce themselves and share with the group as many "things" about themselves as number of "squares" they took! You can suggest the "things" be generic or make it work-related.. you choose.\n\nHave fun!
!Topsy Turvy\n\nTo find non-conventional solutions/alternatives. Useful in the planning or development stage of the group processes.\n\n * Formulate a question/problem (eg how can we improve our project coverage?)\n * Ask participants to give a spontaneous answer/solution.\n * Re-formulate the question negatively (e.g. How can we decrease our project coverage?)\n * Ask participants to give a spontaneous answer/solution (e.g. confuse our field staff with unclear directions.)\n * Discuss the answers/actions by " turning them upside down." Develop the positive alternative or action or vise versa. Conclude by selecting the most realistic alternatives to (he problems.\n\nNote: If the group is large, divide into “buzzgroups” of two to four.
Trainer/Participant Join-Up /Icebreaker\n\nBackground\n\nEarly stages of group development are often characterized by pronounced participant attention paid to the "authority" present in the group. In training programs, that authority is often represented (or brought) by the trainer/facilitator. The following activity works with this dynamic as it helps participants learn as much as possible about the trainer(s) in as short a time possible. In addition, this activity helps participants come to know one another better through introductions and attention paid to one another's questions.\n\nGoal\n\nThe main goal of this icebreaker is to help participants work with, and gain comfort with, each other and with the trainer(s).\n\nObjectives\n\nBy the time participants complete this icebreaker, they will be able to describe:\n\n1. The names and affiliations of others in the training;\n\n2. The background of the trainer(s)/facilitator(s) and the relevancy of that background to the training-as-a-whole;\n\n3. Personal characteristics of the trainer that may impact the course of learning throughout the training or facilitation event.\n\n4. Specific nuances of the training that do not emerge during discussion of the training agenda;\n\n5. Specific aspects of the training design intended to maximize their personal "safety" as they participate "at their own level" in activities, discussions, and opportunities for personal disclosure;\n\n6. Answers to any other questions they may have about the training and/or the facilitator(s).\n\nAudience: This icebreaker is most useful for medium- to large-sized groups (10-30 participants) during multi-day (three or more) programs.\n\nTime: Allocate at least 45 minutes for this icebreaker.\n\nDesign:\n\n1. Display the following newsprint for participants:\n\n Trainer "News Conference"\n\n Purpose: To help us get to know one another better and answer any questions you may have about your trainer(s).\n\n Setting: A briefing room near you!\n\n2. Break participants into several groups of from four to six people each.\n\n3. Display your own versions of the following newsprints after folks have "settled down":\n\n Task One: Introduce yourselves to others in your group including names, affiliations, and one thing people wouldn't know about you if you didn't tell them. Take ten minutes for these introductions.\n\n Task Two: Work within your group to think of 2-4 questions (depending upon number of sub-groups) you would like to ask your trainer(s) to help you know them better and better understand their hopes for this training (any questions about the training itself should be moved to another sheet of newsprint to be addressed after this opening activity). You will have ten minutes to come up with your questions.\n\n Trainer Note: essentially what you're doing here is working to keep questions focused on the person(s) of the trainer(s) rather than on the mechanics of the training itself.\n\n4. After the second ten minutes, set up chairs in the front of the room (one chair per trainer) facing the back of the room. Ask participants to arrange their chairs to face the trainers chairs (to look like a news conference!).\n\n5. Ask each group to alternate the asking of their questions. Trainer(s) answer as honestly as possible and appropriate.\n\n6. Process the activity minimally with brief discussion of participants and trainer reactions to the news conference format.\n\n7. If time permits, have people in groups introduce themselves to the other group(s). Or, see "The Name Game," below.
Two Truths & a Lie\n\nObjectives:\n\nTo allow people to get to know and appreciate one another better, through discovering both common and unique interests and experiences.\n\nTo help level the playing field within a group through making human connections that aren't related to either organizational or power structures.\n\nTo help people begin to be more comfortable talking and listening with one another.\n\nTo begin to facilitate the process of people exposing something of themselves and their ideas to a group.\n\nBut most of all -- to have some FUN!\n\nDesign:\n\nIn groups of three to eight (depending on how much time you want to devote to this exercise) have individuals take turns making three statements about themselves -- two which are true; one that is a lie.\n\nAfter an individual makes their statements, the other folks in the group discuss among themselves which seem most plausible and what is most likely to be the lie.\n\nOnce they come to some sort of consensus, the individual who made the statements not only tells which is the "lie" but also provides a bit more background about the "truths" as well as what made them think folks might have thought the "lie" was a "truth."\n\nA group of three can easily do this in less than 10 minutes. A group of eight can take from 20 to 30 minutes.\n\nComments:\n\nThis game works well with groups that are new to one another. It is often surprising how relative strangers can instinctively pick up the nuances between truths and lies based on very little information.\n\nThe game also works well with groups that have been together awhile and Think they know a lot about each other.\n\nThe first person or two asked to make statements can find it pretty difficult, but after a couple of folks have taken a turn others typically find it easier to do. One way to help alleviate this and make the process run smoother is to alert a couple of people beforehand to begin thinking so that they can be somewhat more ready to volunteer. This type of a "plant" can make it much easier for folks who come later because they won't see someone "struggle" and get "uptight" about their ability to "perform." Another way to get around the difficulty the "first" folks have is to start it yourself.\n\nThis exercise can also be done "electronically" with groups that aren't physically located together, but have been "assembled" to work together on some task -- for example a cross-functional committee or a committee of a national association that has folks from across the country participating. It takes a little longer -- a group of seven I once participated in took a month of calendar time to do an e-mail version of this -- but it provided the same benefits.\n\nFrom: Lucinda Poudrier-Aaronson, Staff Development Specialist, Campus Life - Human Resources, 2117 North Balch Hall, Cornell University, Ithaca NY 14853
!Urban Issues
VIPP Workshop, Germany (IDS PRA Reading Room - C:Training Aids)\n\nCreativity is the ability to look at a familiar situation, task or problem and see solutions that go beyond the conventional, the normal or the standard procedure Creativity is nurtured by an enabling environment. Such an environment requires a committed grup of people who share a tolerant and open attitude, who are sensitive to cultural issues, who encourage curiosity and critical awareness and who have the ability to think beyond conventional solutions. The following exercises are intended to stimulate creative thinking in a group event. Use these games and exercises:\n\n * When you are looking for creative solutions to a problem.\n * As "brain gymnastics" or to liven up a workshop.\n * For relaxation and fun.\n
<!--{{{-->\n<!--- http://mptw.tiddlyspot.com/#MptwViewTemplate ($Rev: 1830 $) --->\n\n<div class='toolbar'>\n <span macro="showWhenTagged systemConfig">\n <span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>\n </span>\n <span style="padding:1em;"></span>\n <span macro='toolbar closeTiddler closeOthers +editTiddler deleteTiddler > fields syncing permalink references jump'></span> <span macro='newHere label:"new here"'></span>\n <span macro='newJournalHere {{config.mptwJournalFormat?config.mptwJournalFormat:"MM/0DD/YY"}}'></span>\n</div>\n\n<div class="tagglyTagged" macro="tags"></div>\n\n<div class='titleContainer'>\n <span macro="miniTag"></span>\n</div>\n\n<div macro="showWhenExists ViewPanelTemplate">[[ViewPanelTemplate]]</div>\n\n<div macro="hideWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">\n <div class='viewer' macro='view text wikified'></div>\n</div>\n<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">\n <div class='viewer'><pre macro='view text'></pre></div>\n</div>\n\n<div macro="showWhenExists ViewDashboardTemplate">[[ViewDashboardTemplate]]</div>\n\n<div class="tagglyTagging" macro="tagglyTagging"></div>\n\n<!--}}}-->\n
!Walkanalogy \n\nTo encourage the development of new ieas. Use before you begin a planning process.\n\nFormulate a question.\n\n * Ask the participants to form in groups of three.\n * Ask each group to clarify and reformulate the question.\n * Explain that the group may now begin a "walkabout" (thirty to forty-five in mutes) outside the room. Their assignment is to find interesting objects which may provide an answer to the question, through use of analogies or metaphors. (See Metaphor, analogy" on previous page for definition). Encourage them to observe everything in the environment such as people, buildings, and nature and to be responsive to new thoughts and ideas as they "walkabout."\n * When the group comes back together, distribute cards to the groups and ask them to write down the metaphors, ideas, and analogies they have discovered. Ask each group to present their findings to the plenary and have the plenary discuss them.\n * Select those ideas which will assist in the planning process.\n
What Do You Know?"\n\nDivide the class into teams of 3-4 people. Assign each team a different flip chart. Explain that each team will be assigned another team about which to share information. For example:\n\nTeam A: Mary, Chris, Pat and Terry\n\nTeam B: Jane, Frank, Phil and Sharon\n\nTeam C: John, Mike, Andrea and Larry\n\nTeam A is assigned Team B; Team B is assigned Team C; and\n\nTeam C is assigned Team A.\n\nHave the team divide their flip charts into sections, one for each person in their assigned team. Allow them 5 minutes to record everything they know about the people on their flip chart (both work and non-work related). After 5 minutes, have teams rotate flip charts and add information on their new flip chart. Continue rotating until they come to the flip chart with their own names on it. Have each person comment on what was written about him/herself.
What Kind of Team?"\n\nDivide the team into small groups of 4-6 people. Have each group discuss and identify an analogy for their team. For example: "We are like a 3-ring circus -- because we have many things going on at once and it feels chaotic at times." Allow 10 minutes to discuss; then have teams share.
!Which side of the brain?\n\nTo introduce the concept of right and left brain. Use at the beginning of a session on creativity awareness.\n\n * Ask everyone to look at a distant point or object (e.g. light switch, door knob) with both eyes open and circle this point with thumb and finger of your right hand, arm extended away from their face.\n * Ask everyone to close the right eye then the left eye. Notice with which eye the object appears to move out of focus.\n * Explain that some people focus with their left eye; others focus with the right eye normally. The left eye is linked to the right side of your brain (the intuitive, creative side) while the right eye is linked to the left side (the more logical and rational side.) Women typically, but not necessarily, will focus with their left eye while men will more likely focus with their right eye.\n\nDebriefing\nDiscuss the implications of (he different ways of seeing while mentioning the value of diversity
Kyle Whitfield & Susan Rimkus\nParticipatory Initiatives\npi@tdg.uoguelph.ca
Who Can Develop?"\n\nHave participants identify someone who has contributed to their professional development. As they introduce themselves have them explain their relationship to the person that contributed to their development.
To help the participants share background information.\nTime:\n\n10 to 20 minutes\nSupplies:\n\n * Blank index cards\n * A flipchart with four or five questions that suit the participants and your topic.\n\nExample: Here are the five questions that we used in a workshop on learning to use the World-Wide Web:\n\n 1. What is your primary reason for coming to this workshop?\n 2. What is a major worry that you have about this workshop?\n 3. How would you rate your current knowledge of the Internet?\n 4. What type of computer do you use?\n 5. What do you think a Web page is?\n\nParticipants:\n\n3 to 7. If you have more participants, divide them into roughly equal-sized groups, and have these groups play in a parallel fashion.\nFlow of the game:\n\n 1. Display the list of questions.\n 2. Ask the participants to take one of their cards, and write the number "1" and their answer to the first question. They should repeat the process with each of the other questions, writing one answer per card. Ask the participants to place their answer cards face down in the middle of the table.\n 3. Ask one participant to shuffle the answer cards and deal them out, face down, one card at a time.\n 4. Announce that the activity will last for 10 more minutes. Start a timer.\n 5. Ask the first participant to take one of the cards and read it aloud. If asked, this participant may read the card again, but may not show the card to anyone. (This is to prevent participants from recognizing the handwriting on the card.)\n 6. All the participants (except the reader) now guess who wrote the card, and write down their guess. (The person who actually wrote the card should write down his or her own name, assuming that he or she is not the reader.)\n 7. After everyone has finished writing, they reveal their guesses. The person who wrote the card identifies himself or herself. Those who guessed correctly score a point. The card is then placed face up in the middle of the table.\n 8. The second participant now selects one of his or her cards and reads it aloud. The same procedure is repeated.\n 9. If a card has the last remaining answer to a particular question, the person merely reads it and places it in the middle of the table. (There is no point in guessing, since everyone knows who wrote that card, through a process of elimination.) Play continues with the next person.\n 10. Stop the game at the end of 10 minutes. Declare the person with the most correct guesses to be the winner.\n 11. To bring things to a close, ask the participants to read the answers on the remaining cards and ask the writers to identify themselves.\n
Who's Here?\n\nThis is a very popular introductory exercise. Use it in the beginning of a workshop as a warm-up to talking about identity, diversity, inclusiveness.\n\nIf it works, this exercise will elicit feelings from group members related to personal identity and acceptance, experiences of bias and discrimination, desire for connection without compromising integrity, etc. Facilitators should be prepared to deal with such feelings.\n\nGoals:\n\n1) To orient the participants to thinking about identity and identity group membership (I am __________," and "I am a member of/I belong to the group __________.")\n\n2) To make explicit the diversity of the group\n\n3) To get participants thinking about the feelings attached to\n\n(a) belonging to a group\n\n(b) not belonging to a group\n\n4) To help facilitators identify which identity groups are present\n\n5) To help facilitators assess how receptive the group and individuals are to thinking about identity and/or difference (comfort level of the group)\n\nObjectives:\n\nParticipants will be able to:\n\n * · identify the identity groups they belong to\n * · identify the identity groups present in the room\n * · talk about feelings attached to identity group membership (or non-membership)\n * · talk about themselves and others in terms of identity groups.\n\nDescription:\n\nAsk participants to stand in a circle.\n\nTell them that you are going to read a list of questions about their identities.\n\nAsk participants to move to the center of the circle when they hear a phrase that describes themselves.\n\nAsk them to pay attention to the feelings they have when they hear certain descriptions, when they stand, when they don't stand, when others stand or don't stand. They should notice their feelings and each other when they are inside and outside groups.\n\nRemind them that some identities are risky to claim in certain settings. (For example, it would be dangerous to identify as Jewish in Nazi Germany.) Participants may elect to "pass" and remain in the outside of the circle.\n\n(Example: who here is over 30? Those over 30 should move into the middle; those under 30 or who choose to pass should stay put.)\n\nSAMPLE LIST OF DESCRIPTIONS:\n\nGeneric: "Who here...\n\n...is the oldest child?\n\n...is the youngest child?\n\n...is a middle child?\n\n...is an only child?\n\n...has more than three siblings?\n\n...has more than five siblings?\n\n...comes from a blended family )i.e. has step-sisters and/or step-brothers)?\n\n...was raised by a single parent for most of their life?\n\n...was raised by two parents?\n\n...has a divorce in their family history?\n\n...comes from/grew up in the suburbs?\n\n...comes from/grew up in an urban area?\n\n...comes from/grew up in a rural area?\n\n...has a dog?\n\n...has a cat?\n\n...has horses?\n\n...has other animals (name)?\n\n...likes sports?\n\n...likes movies?\n\n(You can make up your own along these lines.)\n\nIsm-related: "Who here...\n\n...is a man?\n\n...is a woman?\n\n...considers themselves middle-class?\n\n...considers themselves working-class?\n\n...considers themselves economically poor?\n\n...is Jewish?\n\n...is Christian or raised Christian?\n\n...is of another religious background?\n\n...is a person of color?\n\n...is white?\n\n...is Hispanic?\n\n...is Asian?\n\n...is Black or African?\n\n...is Indian?\n\n...is Native American?\n\n...is gay, lesbian or bisexual/knows someone who is gay, lesbian or bisexual?\n\n...is straight?\n\n...does not speak English as their first or native language?\n\n(You can make up more along these lines.)\n\nProcess:\n\nProcess the exercise by asking participants to discuss the feelings associated with group membership or non membership.\n\n * How did they feel identifying themselves as members of these groups?\n * Did anyone not stand up even though they were a member of that group?\n * Was anyone confused?\n * What description felt proudest? Scariest?\n * Did any description make you feel ashamed?\n * Other questions?\n
Give each person a post card. Have them write their name and address (or e-mail address) on one side and a goal they plan to achieve in the next month on the other side. Collect the cards and send them out to participants 1 month later, asking them for feedback about how well their goals have been met.
!Witchcraft\n\nTo encourage the development of new ideas. Use when the group is looking for creative solutions to a problem.\n\n * Have the group identify a question, task, problem, or objective.\n * Give every person a card and marker.\n * Ask the group the following question. " If we could use witchcraft, what solution would we use"? Explain that this is a chance to forget ration and logic. They may imagine themselves as a sorcerer, shaman or witch doctor.\n * Gather the cards aid read them aloud. Select cards with the most feasible ideas, prioritize them and pin the cards up on a board.\n * Continue the group planning process.\n\nNOTE: participants must be very clear that they should follow the rules of openness with no boundaries or censorship. Only after the process should they judge, reject or discuss ideas.
/***\n|''Name:''|XHTML10Plugin|\n|''Version:''|1.0.1 (2006-09-16)|\n|''Source:''|http://tiddlywiki.abego-software.de/#XHTML10Plugin|\n|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|\n|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|\n|''Copyright:''|&copy; 2005-2006 [[abego Software|http://www.abego-software.de]]|\n|''~CoreVersion:''|2.1.0|\n|''Browser:''|Firefox 1.5.0.2 or better; Internet Explorer 6.0|\n\nMake your ~TiddlyWiki XHTML 1.0 compliant format.\n\nOnce the plugin is installed the existing tiddlers of that TiddlyWiki are automatically converted to the new (XHTML 1.0 compliant) format on the first save. After that all changes are stored in the XHTML format.\n\n!Source Code\n***/\n//{{{\n// Ensure the Plugin is only installed once.\n//\nif (!version.extensions.XHTML10Plugin) {\n\nif (version.major < 2 || (version.major == 2 && version.minor < 1)) {\n (function() {\n var s = "Use TiddlyWiki 2.1 or better to run the XHTML10Plugin.";\n alert(s);\n throw s;\n })();\n}\n\nversion.extensions.XHTML10Plugin = {\n major: 1, minor: 0, revision: 1,\n date: new Date(2006, 8, 16),\n source: "http://tiddlywiki.abego-software.de/#XHTML10Plugin",\n licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",\n copyright: "Copyright (c) abego Software GmbH, 2005-2006 (www.abego-software.de)",\n};\n\n// Ensure the global abego namespace is set up.\nif (!window.abego) window.abego = {};\n\n\n//--------------------------------\n// XHTML10Saver (inherits from SaverBase)\n\nabego.XHTML10Saver = function() {};\n\nabego.XHTML10Saver.prototype = new SaverBase();\n\nabego.XHTML10Saver.prototype.externalizeTiddler = function(store, tiddler) {\n try {\n var s = '';\n store.forEachField(tiddler, \n function(tiddler, fieldName, value) {\n // don't store stuff from the temp namespace\n if (!fieldName.match(/^temp\s./)) {\n if (value)\n value = value.htmlEncode();\n s += ['<pre title="',fieldName,'">',value,'</pre>'].join("");\n }\n });\n return ['<div title="',tiddler.title.htmlEncode(),'">',s,'</div>'].join("");\n\n } catch (e) {\n showException(e, config.messages.tiddlerSaveError.format([tiddler.title]));\n return '';\n }\n};\n\nabego.XHTML10Saver.prototype.externalize = function(store) {\n return ["<div class='twXHTML10'>\sn",SaverBase.prototype.externalize.apply(this, arguments),"\sn</div>"].join("");\n};\n\n\n//--------------------------------\n// Overwrite TiddlyWiki.prototype.getSaver to use the XHTML10 format on save\n\nTiddlyWiki.prototype.getSaver = function() {\n if (!this.saver) \n this.saver = new abego.XHTML10Saver();\n return this.saver;\n};\n\n//======================================\n// Install the Loader into the HTML page\n\n(function() {\n // The loader code will be inserted into the PostHead markup block,\n // so it can be executed before tiddlers are loaded. We cannot just put this\n // code into a normal plugin since this "load" code is required to load\n // tiddlers. I.e. this code must be executed before any tiddlers/plugins\n // can be loaded.\n\n var getXHTML10LoaderBlock = function() {\n // The loader code in a big JavaScript string.\n // You may get a non-stringified version of the XHTML10Loader source code at\n // http://tiddlywiki.abego-software.de/archive/XHTML10Plugin/XHTML10Loader.1.0.1.js\n\n XHTML10LoaderCode = \n "if (!window.abego) window.abego = {};\snif (!abego.XHTML10Loader) {\sn\st//-"+\n "-------------------------------\sn\st// abego.XHTML10Loader (inherits from"+\n " LoaderBase)\sn\st\sn\stabego.XHTML10Loader = function() {};\sn\stabego.XHTML10Loa"+\n "der.prototype = new LoaderBase();\sn\st\sn\stabego.XHTML10Loader.prototype.lin"+\n "go = {\sn\st\stunnamedValue: \s"Unnamed value\s",\sn\st\stredefining: \s"Redefining valu"+\n "e of %0\s",\sn\st\stnoXHTML10Format: \s"Storage not in XHTML 1.0 format\s"\sn\st}\sn\st\sn\sta"+\n "bego.XHTML10Loader.prototype.getTitle = function(store, e) {\sn\st\stvar tit"+\n "le = null;\sn\st\stif(e.getAttribute)\sn\st\st\sttitle = e.getAttribute('title');\sn\st\st"+\n "if(!title && e.id) {\st\sn\st\st\stvar lenPrefix = store.idPrefix.length;\sn\st\st\stif "+\n "(e.id.substr(0,lenPrefix) == store.idPrefix)\sn\st\st\st\sttitle = e.id.substr(l"+\n "enPrefix);\sn\st\st}\sn\st\streturn title;\sn\st};\sn\st\sn\stabego.XHTML10Loader.prototype.in"+\n "ternalizeTiddler = function(store, tiddler, title, data) {\sn\st\stvar field"+\n "s = {};\sn\st\stvar elems = data.childNodes;\sn\st\stfor(var i = 0; i < elems.leng"+\n "th; i++) {\sn\st\st\stvar e = elems[i];\sn\st\st\stvar name = e.getAttribute('title');"+\n "\sn\st\st\stif (!name) \sn\st\st\st\stthrow this.lingo.unnamedValue;\sn\st\st\stif (fields[name]"+\n " !== undefined) \sn\st\st\st\stthrow this.lingo.redefining.format([name]);\sn\st\st\stfi"+\n "elds[name] = getNodeText(e.firstChild); \sn\st\st}\sn\st\sn\st\st// Extract (and remov"+\n "e) the standard fields from the extended fields\sn\st\stvar text = fields.te"+\n "xt;\sn\st\stvar modifier = fields.modifier;\sn\st\stvar modified = Date.convertFro"+\n "mYYYYMMDDHHMM(fields.modified);\sn\st\stvar c = fields.created;\sn\st\stvar create"+\n "d = c ? Date.convertFromYYYYMMDDHHMM(c) : modified;\sn\st\stvar tags = field"+\n "s.tags;\sn\st\stdelete fields.modifier;\sn\st\stdelete fields.modified;\sn\st\stdelete f"+\n "ields.created;\sn\st\stdelete fields.tags;\sn\st\stdelete fields.text;\sn\st\stdelete fi"+\n "elds.title;\sn\st\sn\st\sttiddler.assign(title,text,modifier,modified,tags,creat"+\n "ed,fields);\sn\st\st\sn\st\streturn tiddler;\sn\st};\sn\st\sn\stvar findRootNode = function(no"+\n "des) {\sn\st\stif (nodes) {\sn\st\st\st// skip leading text nodes\sn\st\st\stfor (var i = 0;"+\n " i < nodes.length; i++)\sn\st\st\st\stif (nodes[i].nodeType != 3)\sn\st\st\st\st\stbreak;\sn\st\st"+\n "\st\st\st\sn\st\st\stif (i < nodes.length && nodes[i].className == 'twXHTML10')\sn\st\st\st\st"+\n "return nodes[i];\sn\st\st}\sn\st};\sn\st\sn\stabego.XHTML10Loader.prototype.loadTiddlers"+\n " = function(store,nodes) {\sn\st\st// in the twXHMTL10 format all tiddler el"+\n "ements are contained in one enclosing DIV\sn\st\st// that contains the forma"+\n "t information\sn\st\stvar root = findRootNode(nodes)\sn\st\stif (!root) \sn\st\st\stthrow "+\n "this.lingo.noXHTML10Format;\sn\st\streturn LoaderBase.prototype.loadTiddlers"+\n ".apply(this, [store, root.childNodes]);\sn\st};\sn\st\sn\st\sn\st//-------------------"+\n "-------------\sn\st// Hijack the loadFromDiv\sn\st(function() {\sn\st\stvar origTidd"+\n "lyWikiLoadFromDiv = TiddlyWiki.prototype.loadFromDiv;\sn\st\stTiddlyWiki.pro"+\n "totype.loadFromDiv = function(srcID,idPrefix) {\sn\st\st\st// use the XHTML 1."+\n "0 loader when the storearea is in 'twXHTML10' format,\sn\st\st\st// otherwise "+\n "use the default loader\sn\st\st\stvar e = document.getElementById(srcID);\sn\st\st\sti"+\n "f (e && findRootNode(e.childNodes))\sn\st\st\st\stthis.loader = new abego.XHTML1"+\n "0Loader();\sn\st\st\streturn origTiddlyWikiLoadFromDiv.apply(this, arguments);"+\n "\sn\st\st};\sn\st})();\sn}\sn\sn";\n return '<'+'script type="text/javascript">\sn//<![CDATA[\sn'+XHTML10LoaderCode+'\sn//]]>\sn</script'+'>\sn';\n };\n\n var insertLoaderBlock = function() {\n if (!store)\n throw "XHTML10LoaderInstaller must run as a plugin";\n \n var START = "<!--XHMTL10Loader-START-->";\n var END = "<!--XHMTL10Loader-END-->";\n \n var postHeadText = store.getTiddlerText("MarkupPostHead");\n if (postHeadText.getChunk(START, END)) \n return; // already installed\n\n postHeadText += "\sn"+START+getXHTML10LoaderBlock()+END+"\sn";\n var tiddler = store.getTiddler("MarkupPostHead");\n var tags = tiddler ? tiddler.tags : [];\n store.saveTiddler("MarkupPostHead","MarkupPostHead",postHeadText,config.options.txtUserName,new Date(),tags);\n alert("XHTML10Loader installed.\snPlease save and reload your TiddlyWiki to complete the installation. After that your TiddlyWiki will be stored in an XHTML 1.0 compliant format.");\n };\n \n insertLoaderBlock(); \n})();\n\n} // of single install\n\n//}}}\n
For YourSearchPlugin source code see the [[archive|http://tiddlywiki.abego-software.de/archive]].
<<formTiddler [[ReferencesTemplate]]>><data>{"booktitle":"cc","author":"cc","webaddress":"cc","isbn":"cc","publisher":"cc","country":"cc","datepublication":"cc","tagreference":"cc"}</data>
/***\n|''Name:''|YourSearchPlugin|\n|''Version:''|2.1.1 (2007-03-11)|\n|''Source:''|http://tiddlywiki.abego-software.de/#YourSearchPlugin ([[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html#YourSearchPlugin]])|\n|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|\n|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|\n|''Copyright:''|&copy; 2005-2006 [[abego Software|http://www.abego-software.de]]|\n|''~CoreVersion:''|2.1.0|\n|''Browser:''|Firefox 1.0.4+; Firefox 1.5; ~InternetExplorer 6.0|\n!About YourSearch\nYourSearch gives you a bunch of new features to simplify and speed up your daily searches in TiddlyWiki. It seamlessly integrates into the standard TiddlyWiki search: just start typing into the 'search' field and explore!\n\nFor more information see [[Help|YourSearch Help]].\n!Compatibility\nThis plugin requires TiddlyWiki 2.1. \nCheck the [[archive|http://tiddlywiki.abego-software.de/archive]] for ~YourSearchPlugins supporting older versions of TiddlyWiki.\n!Source Code\n***/\n/***\nThis plugin's source code is compressed (and hidden). Use this [[link|http://tiddlywiki.abego-software.de/archive/YourSearchPlugin/Plugin-YourSearch-src.2.1.1.js]] to get the readable source code.\n***/\n///%\nif(!version.extensions.YourSearchPlugin){version.extensions.YourSearchPlugin={major:2,minor:1,revision:1,source:"http://tiddlywiki.abego-software.de/#YourSearchPlugin",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)"};if(!window.abego){window.abego={};}if(!Array.forEach){Array.forEach=function(_1,_2,_3){for(var i=0,len=_1.length;i<len;i++){_2.call(_3,_1[i],i,_1);}};Array.prototype.forEach=function(_5,_6){for(var i=0,len=this.length;i<len;i++){_5.call(_6,this[i],i,this);}};}abego.toInt=function(s,_9){if(!s){return _9;}var n=parseInt(s);return (n==NaN)?_9:n;};abego.createEllipsis=function(_b){var e=createTiddlyElement(_b,"span");e.innerHTML="&hellip;";};abego.shallowCopy=function(_d){if(!_d){return _d;}var _e={};for(var n in _d){_e[n]=_d[n];}return _e;};abego.copyOptions=function(_10){return !_10?{}:abego.shallowCopy(_10);};abego.countStrings=function(_11,s){if(!s){return 0;}var len=s.length;var n=0;var _15=0;while(1){var i=_11.indexOf(s,_15);if(i<0){return n;}n++;_15=i+len;}return n;};abego.getBracedText=function(_17,_18,_19){if(!_18){_18=0;}var re=/\s{([^\s}]*)\s}/gm;re.lastIndex=_18;var m=re.exec(_17);if(m){var s=m[1];var _1d=abego.countStrings(s,"{");if(!_1d){if(_19){_19.lastIndex=re.lastIndex;}return s;}var len=_17.length;for(var i=re.lastIndex;i<len&&_1d;i++){var c=_17.charAt(i);if(c=="{"){_1d++;}else{if(c=="}"){_1d--;}}}if(!_1d){if(_19){_19.lastIndex=i-1;}return _17.substring(m.index+1,i-1);}}};abego.select=function(_21,_22,_23,_24){if(!_24){_24=[];}_21.forEach(function(t){if(_22.call(_23,t)){_24.push(t);}});return _24;};abego.TiddlerFilterTerm=function(_26,_27){if(!_27){_27={};}var _28=_26;if(!_27.textIsRegExp){_28=_26.escapeRegExp();if(_27.fullWordMatch){_28="\s\sb"+_28+"\s\sb";}}var _29=new RegExp(_28,"m"+(_27.caseSensitive?"":"i"));this.tester=new abego.MultiFieldRegExpTester(_29,_27.fields,_27.withExtendedFields);};abego.TiddlerFilterTerm.prototype.test=function(_2a){return this.tester.test(_2a);};abego.parseNewTiddlerCommandLine=function(s){var m=/(.*?)\s.(?:\ss+|$)([^#]*)(#.*)?/.exec(s);if(!m){m=/([^#]*)()(#.*)?/.exec(s);}if(m){var r;if(m[3]){var s2=m[3].replace(/#/g,"");r=s2.parseParams("tag");}else{r=[[]];}var _2f=m[2]?m[2].trim():"";r.push({name:"text",value:_2f});r[0].text=[_2f];return {title:m[1].trim(),params:r};}else{return {title:s.trim(),params:[[]]};}};abego.parseTiddlerFilterTerm=function(_30,_31,_32){var re=/\ss*(?:(?:\s{([^\s}]*)\s})|(?:(=)|([#%!])|(?:(\sw+)\ss*\s:(?!\s/\s/))|(?:(?:("(?:(?:\s\s")|[^"])+")|(?:\s/((?:(?:\s\s\s/)|[^\s/])+)\s/)|(\sw+\s:\s/\s/[^\ss]+)|([^\ss\s)\s-\s"]+)))))/mg;var _34={"!":"title","%":"text","#":"tags"};var _35={};var _36;re.lastIndex=_31;while(1){var i=re.lastIndex;var m=re.exec(_30);if(!m||m.index!=i){throw "Word or String literal expected";}if(m[1]){var _39={};var _3a=abego.getBracedText(_30,0,_39);if(!_3a){throw "Invalid {...} syntax";}var f=Function("tiddler","return ("+_3a+");");return {func:f,lastIndex:_39.lastIndex,markRE:null};}if(m[2]){_36=true;}else{if(m[3]){_35[_34[m[3]]]=1;}else{if(m[4]){_35[m[4]]=1;}else{var _3c=m[6];var _3d=m[5]?window.eval(m[5]):m[6]?m[6]:m[7]?m[7]:m[8];var _3e=abego.copyOptions(_3e);_3e.fullWordMatch=_36;_3e.textIsRegExp=_3c;var _3f=[];for(var n in _35){_3f.push(n);}if(_3f.length==0){_3e.fields=_3e.defaultFields;}else{_3e.fields=_3f;_3e.withExtendedFields=false;}var _41=new abego.TiddlerFilterTerm(_3d,_3e);var _42=_3c?_3d:_3d.escapeRegExp();if(_42&&_36){_42="\s\sb"+_42+"\s\sb";}return {func:function(_43){return _41.test(_43);},lastIndex:re.lastIndex,markRE:_42?"(?:"+_42+")":null};}}}}};abego.BoolExp=function(s,_45,_46){this.s=s;var _47=_46&&_46.defaultOperationIs_OR;var _48=/\ss*(?:(\s-|not)|(\s())/gi;var _49=/\ss*\s)/g;var _4a=/\ss*(?:(and|\s&\s&)|(or|\s|\s|))/gi;var _4b=/\ss*[^\s)\ss]/g;var _4c=/\ss*(\s-|not)?(\ss*\s()?/gi;var _4d;var _4e=function(_4f){_4c.lastIndex=_4f;var m=_4c.exec(s);var _51;var _52;if(m&&m.index==_4f){_4f=_4c.lastIndex;_51=m[1];if(m[2]){var e=_4d(_4f);_49.lastIndex=e.lastIndex;if(!_49.exec(s)){throw "Missing ')'";}_52={func:e.func,lastIndex:_49.lastIndex,markRE:e.markRE};}}if(!_52){_52=_45(s,_4f,_46);}if(_51){_52.func=(function(f){return function(_55){return !f(_55);};})(_52.func);_52.markRE=null;}return _52;};_4d=function(_56){var _57=_4e(_56);while(1){var l=_57.lastIndex;_4a.lastIndex=l;var m=_4a.exec(s);var _5a;var _5b;if(m&&m.index==l){_5a=!m[1];_5b=_4e(_4a.lastIndex);}else{try{_5b=_4e(l);}catch(e){return _57;}_5a=_47;}_57.func=(function(_5c,_5d,_5e){return _5e?function(_5f){return _5c(_5f)||_5d(_5f);}:function(_60){return _5c(_60)&&_5d(_60);};})(_57.func,_5b.func,_5a);_57.lastIndex=_5b.lastIndex;if(!_57.markRE){_57.markRE=_5b.markRE;}else{if(_5b.markRE){_57.markRE=_57.markRE+"|"+_5b.markRE;}}}};var _61=_4d(0);this.evalFunc=_61.func;if(_61.markRE){this.markRegExp=new RegExp(_61.markRE,_46.caseSensitive?"mg":"img");}};abego.BoolExp.prototype.exec=function(){return this.evalFunc.apply(this,arguments);};abego.BoolExp.prototype.getMarkRegExp=function(){return this.markRegExp;};abego.BoolExp.prototype.toString=function(){return this.s;};abego.MultiFieldRegExpTester=function(re,_63,_64){this.re=re;this.fields=_63?_63:["title","text","tags"];this.withExtendedFields=_64;};abego.MultiFieldRegExpTester.prototype.test=function(_65){var re=this.re;for(var i=0;i<this.fields.length;i++){var s=store.getValue(_65,this.fields[i]);if(typeof s=="string"&&re.test(s)){return this.fields[i];}}if(this.withExtendedFields){return store.forEachField(_65,function(_69,_6a,_6b){return typeof _6b=="string"&&re.test(_6b)?_6a:null;},true);}return null;};abego.TiddlerQuery=function(_6c,_6d,_6e,_6f,_70){if(_6e){this.regExp=new RegExp(_6c,_6d?"mg":"img");this.tester=new abego.MultiFieldRegExpTester(this.regExp,_6f,_70);}else{this.expr=new abego.BoolExp(_6c,abego.parseTiddlerFilterTerm,{defaultFields:_6f,caseSensitive:_6d,withExtendedFields:_70});}this.getQueryText=function(){return _6c;};this.getUseRegExp=function(){return _6e;};this.getCaseSensitive=function(){return _6d;};this.getDefaultFields=function(){return _6f;};this.getWithExtendedFields=function(){return _70;};};abego.TiddlerQuery.prototype.test=function(_71){if(!_71){return false;}if(this.regExp){return this.tester.test(_71);}return this.expr.exec(_71);};abego.TiddlerQuery.prototype.filter=function(_72){return abego.select(_72,this.test,this);};abego.TiddlerQuery.prototype.getMarkRegExp=function(){if(this.regExp){return "".search(this.regExp)>=0?null:this.regExp;}return this.expr.getMarkRegExp();};abego.TiddlerQuery.prototype.toString=function(){return (this.regExp?this.regExp:this.expr).toString();};abego.PageWiseRenderer=function(){this.firstIndexOnPage=0;};merge(abego.PageWiseRenderer.prototype,{setItems:function(_73){this.items=_73;this.setFirstIndexOnPage(0);},getMaxPagesInNavigation:function(){return 10;},getItemsCount:function(_74){return this.items?this.items.length:0;},getCurrentPageIndex:function(){return Math.floor(this.firstIndexOnPage/this.getItemsPerPage());},getLastPageIndex:function(){return Math.floor((this.getItemsCount()-1)/this.getItemsPerPage());},setFirstIndexOnPage:function(_75){this.firstIndexOnPage=Math.min(Math.max(0,_75),this.getItemsCount()-1);},getFirstIndexOnPage:function(){this.firstIndexOnPage=Math.floor(this.firstIndexOnPage/this.getItemsPerPage())*this.getItemsPerPage();return this.firstIndexOnPage;},getLastIndexOnPage:function(){return Math.min(this.getFirstIndexOnPage()+this.getItemsPerPage()-1,this.getItemsCount()-1);},onPageChanged:function(_76,_77){},renderPage:function(_78){if(_78.beginRendering){_78.beginRendering(this);}try{if(this.getItemsCount()){var _79=this.getLastIndexOnPage();var _7a=-1;for(var i=this.getFirstIndexOnPage();i<=_79;i++){_7a++;_78.render(this,this.items[i],i,_7a);}}}finally{if(_78.endRendering){_78.endRendering(this);}}},addPageNavigation:function(_7c){if(!this.getItemsCount()){return;}var _7d=this;var _7e=function(e){if(!e){var e=window.event;}var _81=abego.toInt(this.getAttribute("page"),0);var _82=_7d.getCurrentPageIndex();if(_81==_82){return;}var _83=_81*_7d.getItemsPerPage();_7d.setFirstIndexOnPage(_83);_7d.onPageChanged(_81,_82);};var _84;var _85=this.getCurrentPageIndex();var _86=this.getLastPageIndex();if(_85>0){_84=createTiddlyButton(_7c,"Previous","Go to previous page (Shortcut: Alt-'<')",_7e,"prev");_84.setAttribute("page",(_85-1).toString());_84.setAttribute("accessKey","<");}for(var i=-this.getMaxPagesInNavigation();i<this.getMaxPagesInNavigation();i++){var _88=_85+i;if(_88<0){continue;}if(_88>_86){break;}var _89=(i+_85+1).toString();var _8a=_88==_85?"currentPage":"otherPage";_84=createTiddlyButton(_7c,_89,"Go to page %0".format([_89]),_7e,_8a);_84.setAttribute("page",(_88).toString());}if(_85<_86){_84=createTiddlyButton(_7c,"Next","Go to next page (Shortcut: Alt-'>')",_7e,"next");_84.setAttribute("page",(_85+1).toString());_84.setAttribute("accessKey",">");}}});abego.LimitedTextRenderer=function(){var _8b=40;var _8c=4;var _8d=function(_8e,_8f,_90){var n=_8e.length;if(n==0){_8e.push({start:_8f,end:_90});return;}var i=0;for(;i<n;i++){var _93=_8e[i];if(_93.start<=_90&&_8f<=_93.end){var r;var _95=i+1;for(;_95<n;_95++){r=_8e[_95];if(r.start>_90||_8f>_93.end){break;}}var _96=_8f;var _97=_90;for(var j=i;j<_95;j++){r=_8e[j];_96=Math.min(_96,r.start);_97=Math.max(_97,r.end);}_8e.splice(i,_95-i,{start:_96,end:_97});return;}if(_93.start>_90){break;}}_8e.splice(i,0,{start:_8f,end:_90});};var _99=function(_9a){var _9b=0;for(var i=0;i<_9a.length;i++){var _9d=_9a[i];_9b+=_9d.end-_9d.start;}return _9b;};var _9e=function(c){return (c>="a"&&c<="z")||(c>="A"&&c<="Z")||c=="_";};var _a0=function(s,_a2){if(!_9e(s[_a2])){return null;}for(var i=_a2-1;i>=0&&_9e(s[i]);i--){}var _a4=i+1;var n=s.length;for(i=_a2+1;i<n&&_9e(s[i]);i++){}return {start:_a4,end:i};};var _a6=function(s,_a8,_a9){var _aa;if(_a9){_aa=_a0(s,_a8);}else{if(_a8<=0){return _a8;}_aa=_a0(s,_a8-1);}if(!_aa){return _a8;}if(_a9){if(_aa.start>=_a8-_8c){return _aa.start;}if(_aa.end<=_a8+_8c){return _aa.end;}}else{if(_aa.end<=_a8+_8c){return _aa.end;}if(_aa.start>=_a8-_8c){return _aa.start;}}return _a8;};var _ab=function(s,_ad){var _ae=[];if(_ad){var _af=0;var n=s.length;var _b1=0;do{_ad.lastIndex=_af;var _b2=_ad.exec(s);if(_b2){if(_af<_b2.index){var t=s.substring(_af,_b2.index);_ae.push({text:t});}_ae.push({text:_b2[0],isMatch:true});_af=_b2.index+_b2[0].length;}else{_ae.push({text:s.substr(_af)});break;}}while(true);}else{_ae.push({text:s});}return _ae;};var _b4=function(_b5){var _b6=0;for(var i=0;i<_b5.length;i++){if(_b5[i].isMatch){_b6++;}}return _b6;};var _b8=function(s,_ba,_bb,_bc,_bd){var _be=Math.max(Math.floor(_bd/(_bc+1)),_8b);var _bf=Math.max(_be-(_bb-_ba),0);var _c0=Math.min(Math.floor(_bb+_bf/3),s.length);var _c1=Math.max(_c0-_be,0);_c1=_a6(s,_c1,true);_c0=_a6(s,_c0,false);return {start:_c1,end:_c0};};var _c2=function(_c3,s,_c5){var _c6=[];var _c7=_b4(_c3);var pos=0;for(var i=0;i<_c3.length;i++){var t=_c3[i];var _cb=t.text;if(t.isMatch){var _cc=_b8(s,pos,pos+_cb.length,_c7,_c5);_8d(_c6,_cc.start,_cc.end);}pos+=_cb.length;}return _c6;};var _cd=function(s,_cf,_d0){var _d1=_d0-_99(_cf);while(_d1>0){if(_cf.length==0){_8d(_cf,0,_a6(s,_d0,false));return;}else{var _d2=_cf[0];var _d3;var _d4;if(_d2.start==0){_d3=_d2.end;if(_cf.length>1){_d4=_cf[1].start;}else{_8d(_cf,_d3,_a6(s,_d3+_d1,false));return;}}else{_d3=0;_d4=_d2.start;}var _d5=Math.min(_d4,_d3+_d1);_8d(_cf,_d3,_d5);_d1-=(_d5-_d3);}}};var _d6=function(_d7,s,_d9,_da,_db){if(_da.length==0){return;}var _dc=function(_dd,s,_df,_e0,_e1){var t;var _e3;var pos=0;var i=0;var _e6=0;for(;i<_df.length;i++){t=_df[i];_e3=t.text;if(_e0<pos+_e3.length){_e6=_e0-pos;break;}pos+=_e3.length;}var _e7=_e1-_e0;for(;i<_df.length&&_e7>0;i++){t=_df[i];_e3=t.text.substr(_e6);_e6=0;if(_e3.length>_e7){_e3=_e3.substr(0,_e7);}if(t.isMatch){createTiddlyElement(_dd,"span",null,"marked",_e3);}else{createTiddlyText(_dd,_e3);}_e7-=_e3.length;}if(_e1<s.length){abego.createEllipsis(_dd);}};if(_da[0].start>0){abego.createEllipsis(_d7);}var _e8=_db;for(var i=0;i<_da.length&&_e8>0;i++){var _ea=_da[i];var len=Math.min(_ea.end-_ea.start,_e8);_dc(_d7,s,_d9,_ea.start,_ea.start+len);_e8-=len;}};this.render=function(_ec,s,_ee,_ef){if(s.length<_ee){_ee=s.length;}var _f0=_ab(s,_ef);var _f1=_c2(_f0,s,_ee);_cd(s,_f1,_ee);_d6(_ec,s,_f0,_f1,_ee);};};(function(){function alertAndThrow(msg){alert(msg);throw msg;}if(version.major<2||(version.major==2&&version.minor<1)){alertAndThrow("YourSearchPlugin requires TiddlyWiki 2.1 or newer.\sn\snCheck the archive for YourSearch plugins\snsupporting older versions of TiddlyWiki.\sn\snArchive: http://tiddlywiki.abego-software.de/archive");}abego.YourSearch={};var _f3;var _f4;var _f5=function(_f6){_f3=_f6;};var _f7=function(){return _f3?_f3:[];};var _f8=function(){return _f3?_f3.length:0;};var _f9=4;var _fa=10;var _fb=2;var _fc=function(s,re){var m=s.match(re);return m?m.length:0;};var _100=function(_101,_102){var _103=_102.getMarkRegExp();if(!_103){return 1;}var _104=_101.title.match(_103);var _105=_104?_104.length:0;var _106=_fc(_101.getTags(),_103);var _107=_104?_104.join("").length:0;var _108=_101.title.length>0?_107/_101.title.length:0;var rank=_105*_f9+_106*_fb+_108*_fa+1;return rank;};var _10a=function(_10b,_10c,_10d,_10e,_10f,_110){_f4=null;var _111=_10b.reverseLookup("tags",_110,false);try{var _112=[];if(config.options.chkSearchInTitle){_112.push("title");}if(config.options.chkSearchInText){_112.push("text");}if(config.options.chkSearchInTags){_112.push("tags");}_f4=new abego.TiddlerQuery(_10c,_10d,_10e,_112,config.options.chkSearchExtendedFields);}catch(e){return [];}var _113=_f4.filter(_111);var _114=abego.YourSearch.getRankFunction();for(var i=0;i<_113.length;i++){var _116=_113[i];var rank=_114(_116,_f4);_116.searchRank=rank;}if(!_10f){_10f="title";}var _118=function(a,b){var _11b=a.searchRank-b.searchRank;if(_11b==0){if(a[_10f]==b[_10f]){return (0);}else{return (a[_10f]<b[_10f])?-1:+1;}}else{return (_11b>0)?-1:+1;}};_113.sort(_118);return _113;};var _11c=80;var _11d=50;var _11e=250;var _11f=50;var _120=25;var _121=10;var _122="yourSearchResult";var _123="yourSearchResultItems";var _124;var _125;var _126;var _127;var _128;var _129=function(){if(version.extensions.YourSearchPlugin.styleSheetInited){return;}version.extensions.YourSearchPlugin.styleSheetInited=true;setStylesheet(store.getTiddlerText("YourSearchStyleSheet"),"yourSearch");};var _12a=function(){return _125!=null&&_125.parentNode==document.body;};var _12b=function(){if(_12a()){document.body.removeChild(_125);}};var _12c=function(e){_12b();var _12e=this.getAttribute("tiddlyLink");if(_12e){var _12f=this.getAttribute("withHilite");var _130=highlightHack;if(_12f&&_12f=="true"&&_f4){highlightHack=_f4.getMarkRegExp();}story.displayTiddler(this,_12e);highlightHack=_130;}return (false);};var _131=function(){if(!_126){return;}var root=_126;var _133=findPosX(root);var _134=findPosY(root);var _135=root.offsetHeight;var _136=_133;var _137=_134+_135;var _138=findWindowWidth();if(_138<_125.offsetWidth){_125.style.width=(_138-100)+"px";_138=findWindowWidth();}var _139=_125.offsetWidth;if(_136+_139>_138){_136=_138-_139-30;}if(_136<0){_136=0;}_125.style.left=_136+"px";_125.style.top=_137+"px";_125.style.display="block";};var _13a=function(){if(_125){window.scrollTo(0,ensureVisible(_125));}if(_126){window.scrollTo(0,ensureVisible(_126));}};var _13b=function(){_131();_13a();};var _13c;var _13d;var _13e=new abego.PageWiseRenderer();var _13f=function(_140){this.itemHtml=store.getTiddlerText("YourSearchItemTemplate");if(!this.itemHtml){alertAndThrow("YourSearchItemTemplate not found");}this.place=document.getElementById(_123);if(!this.place){this.place=createTiddlyElement(_140,"div",_123);}};merge(_13f.prototype,{render:function(_141,_142,_143,_144){_13c=_144;_13d=_142;var item=createTiddlyElement(this.place,"div",null,"yourSearchItem");item.innerHTML=this.itemHtml;applyHtmlMacros(item,null);refreshElements(item,null);},endRendering:function(_146){_13d=null;}});var _147=function(){if(!_125||!_126){return;}var html=store.getTiddlerText("YourSearchResultTemplate");if(!html){html="<b>Tiddler YourSearchResultTemplate not found</b>";}_125.innerHTML=html;applyHtmlMacros(_125,null);refreshElements(_125,null);var _149=new _13f(_125);_13e.renderPage(_149);_13b();};_13e.getItemsPerPage=function(){var n=(config.options.chkPreviewText)?abego.toInt(config.options.txtItemsPerPageWithPreview,_121):abego.toInt(config.options.txtItemsPerPage,_120);return (n>0)?n:1;};_13e.onPageChanged=function(){_147();};var _14b=function(){if(_126==null||!config.options.chkUseYourSearch){return;}if((_126.value==_124)&&_124&&!_12a()){if(_125&&(_125.parentNode!=document.body)){document.body.appendChild(_125);_13b();}else{abego.YourSearch.onShowResult(true);}}};var _14c=function(){_12b();_125=null;_124=null;};var _14d=function(self,e){while(e!=null){if(self==e){return true;}e=e.parentNode;}return false;};var _150=function(e){if(e.target==_126){return;}if(e.target==_127){return;}if(_125&&_14d(_125,e.target)){return;}_12b();};var _152=function(e){if(e.keyCode==27){_12b();}};addEvent(document,"click",_150);addEvent(document,"keyup",_152);var _154=function(text,_156,_157){_124=text;_f5(_10a(store,text,_156,_157,"title","excludeSearch"));abego.YourSearch.onShowResult();};var _158=function(_159,_15a,_15b,_15c,_15d,_15e){_129();_124="";var _15f=null;var _160=function(txt){if(config.options.chkUseYourSearch){_154(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}else{story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}_124=txt.value;};var _162=function(e){_160(_126);return false;};var _164=function(e){if(!e){var e=window.event;}_126=this;switch(e.keyCode){case 13:if(e.ctrlKey&&_128&&_12a()){_128.onclick.apply(_128,[e]);}else{_160(this);}break;case 27:if(_12a()){_12b();}else{this.value="";clearMessage();}break;}if(String.fromCharCode(e.keyCode)==this.accessKey||e.altKey){_14b();}if(this.value.length<3&&_15f){clearTimeout(_15f);}if(this.value.length>2){if(this.value!=_124){if(!config.options.chkUseYourSearch||config.options.chkSearchAsYouType){if(_15f){clearTimeout(_15f);}var txt=this;_15f=setTimeout(function(){_160(txt);},500);}}else{if(_15f){clearTimeout(_15f);}}}if(this.value.length==0){_12b();}};var _168=function(e){this.select();clearMessage();_14b();};var args=_15d.parseParams("list",null,true);var _16b=getFlag(args,"buttonAtRight");var _16c=getParam(args,"sizeTextbox",this.sizeTextbox);var btn;if(!_16b){btn=createTiddlyButton(_159,this.label,this.prompt,_162);}var txt=createTiddlyElement(_159,"input",null,null,null);if(_15b[0]){txt.value=_15b[0];}txt.onkeyup=_164;txt.onfocus=_168;txt.setAttribute("size",_16c);txt.setAttribute("accessKey",this.accessKey);txt.setAttribute("autocomplete","off");if(config.browser.isSafari){txt.setAttribute("type","search");txt.setAttribute("results","5");}else{txt.setAttribute("type","text");}if(_16b){btn=createTiddlyButton(_159,this.label,this.prompt,_162);}_126=txt;_127=btn;};var _16f=function(){_12b();var _170=_f7();var n=_170.length;if(n){var _172=[];for(var i=0;i<n;i++){_172.push(_170[i].title);}story.displayTiddlers(null,_172);}};var _174=function(_175,_176,_177,_178){invokeMacro(_175,"option",_176,_177,_178);var elem=_175.lastChild;var _17a=elem.onclick;elem.onclick=function(e){var _17c=_17a.apply(this,arguments);_147();return _17c;};return elem;};var _17d=function(s){var _17f=["''","{{{","}}}","//","<<<","/***","***/"];var _180="";for(var i=0;i<_17f.length;i++){if(i!=0){_180+="|";}_180+="("+_17f[i].escapeRegExp()+")";}return s.replace(new RegExp(_180,"mg"),"").trim();};var _182=function(){var i=_13c;return (i>=0&&i<=9)?(i<9?(i+1):0):-1;};var _184=new abego.LimitedTextRenderer();var _185=function(_186,s,_188){_184.render(_186,s,_188,_f4.getMarkRegExp());};var _189=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_18a,_18b,_18c,_18d,_18e,tags,_190){_189.apply(this,arguments);_14c();};var _191=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_192){_191.apply(this,arguments);_14c();};config.macros.yourSearch={label:"yourSearch",prompt:"Gives access to the current/last YourSearch result",handler:function(_193,_194,_195,_196,_197,_198){if(_195.length==0){return;}var name=_195[0];var func=config.macros.yourSearch.funcs[name];if(func){func(_193,_194,_195,_196,_197,_198);}},tests:{"true":function(){return true;},"false":function(){return false;},"found":function(){return _f8()>0;},"previewText":function(){return config.options.chkPreviewText;}},funcs:{itemRange:function(_19b){if(_f8()){var _19c=_13e.getLastIndexOnPage();var s="%0 - %1".format([_13e.getFirstIndexOnPage()+1,_19c+1]);createTiddlyText(_19b,s);}},count:function(_19e){createTiddlyText(_19e,_f8().toString());},query:function(_19f){if(_f4){createTiddlyText(_19f,_f4.toString());}},version:function(_1a0){var t="YourSearch %0.%1.%2".format([version.extensions.YourSearchPlugin.major,version.extensions.YourSearchPlugin.minor,version.extensions.YourSearchPlugin.revision]);var e=createTiddlyElement(_1a0,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#YourSearchPlugin");e.innerHTML="<font color=\s"black\s" face=\s"Arial, Helvetica, sans-serif\s">"+t+"<font>";},copyright:function(_1a3){var e=createTiddlyElement(_1a3,"a");e.setAttribute("href","http://www.abego-software.de");e.innerHTML="<font color=\s"black\s" face=\s"Arial, Helvetica, sans-serif\s">&copy; 2005-2006 <b><font color=\s"red\s">abego</font></b> Software<font>";},newTiddlerButton:function(_1a5){if(_f4){var r=abego.parseNewTiddlerCommandLine(_f4.getQueryText());var btn=config.macros.newTiddler.createNewTiddlerButton(_1a5,r.title,r.params,"new tiddler","Create a new tiddler based on search text. (Shortcut: Ctrl-Enter; Separators: '.', '#')",null,"text");var _1a8=btn.onclick;btn.onclick=function(){_12b();_1a8.apply(this,arguments);};_128=btn;}},linkButton:function(_1a9,_1aa,_1ab,_1ac,_1ad,_1ae){if(_1ab<2){return;}var _1af=_1ab[1];var text=_1ab<3?_1af:_1ab[2];var _1b1=_1ab<4?text:_1ab[3];var _1b2=_1ab<5?null:_1ab[4];var btn=createTiddlyButton(_1a9,text,_1b1,_12c,null,null,_1b2);btn.setAttribute("tiddlyLink",_1af);},closeButton:function(_1b4,_1b5,_1b6,_1b7,_1b8,_1b9){var _1ba=createTiddlyButton(_1b4,"close","Close the Search Results (Shortcut: ESC)",_12b);},openAllButton:function(_1bb,_1bc,_1bd,_1be,_1bf,_1c0){var n=_f8();if(n==0){return;}var _1c2=n==1?"open tiddler":"open all %0 tiddlers".format([n]);var _1c3=createTiddlyButton(_1bb,_1c2,"Open all found tiddlers (Shortcut: Alt-O)",_16f);_1c3.setAttribute("accessKey","O");},naviBar:function(_1c4,_1c5,_1c6,_1c7,_1c8,_1c9){_13e.addPageNavigation(_1c4);},"if":function(_1ca,_1cb,_1cc,_1cd,_1ce,_1cf){if(_1cc.length<2){return;}var _1d0=_1cc[1];var _1d1=(_1d0=="not");if(_1d1){if(_1cc.length<3){return;}_1d0=_1cc[2];}var test=config.macros.yourSearch.tests[_1d0];var _1d3=false;try{if(test){_1d3=test(_1ca,_1cb,_1cc,_1cd,_1ce,_1cf)!=_1d1;}else{_1d3=(!eval(_1d0))==_1d1;}}catch(ex){}if(!_1d3){_1ca.style.display="none";}},chkPreviewText:function(_1d4,_1d5,_1d6,_1d7,_1d8,_1d9){var _1da=_1d6.slice(1).join(" ");var elem=_174(_1d4,"chkPreviewText",_1d7,_1d9);elem.setAttribute("accessKey","P");elem.title="Show text preview of found tiddlers (Shortcut: Alt-P)";return elem;}}};config.macros.foundTiddler={label:"foundTiddler",prompt:"Provides information on the tiddler currently processed on the YourSearch result page",handler:function(_1dc,_1dd,_1de,_1df,_1e0,_1e1){var name=_1de[0];var func=config.macros.foundTiddler.funcs[name];if(func){func(_1dc,_1dd,_1de,_1df,_1e0,_1e1);}},funcs:{title:function(_1e4,_1e5,_1e6,_1e7,_1e8,_1e9){if(!_13d){return;}var _1ea=_182();var _1eb=_1ea>=0?"Open tiddler (Shortcut: Alt-%0)".format([_1ea.toString()]):"Open tiddler";var btn=createTiddlyButton(_1e4,null,_1eb,_12c,null);btn.setAttribute("tiddlyLink",_13d.title);btn.setAttribute("withHilite","true");_185(btn,_13d.title,_11c);if(_1ea>=0){btn.setAttribute("accessKey",_1ea.toString());}},tags:function(_1ed,_1ee,_1ef,_1f0,_1f1,_1f2){if(!_13d){return;}_185(_1ed,_13d.getTags(),_11d);},text:function(_1f3,_1f4,_1f5,_1f6,_1f7,_1f8){if(!_13d){return;}_185(_1f3,_17d(_13d.text),_11e);},field:function(_1f9,_1fa,_1fb,_1fc,_1fd,_1fe){if(!_13d){return;}var name=_1fb[1];var len=_1fb.length>2?abego.toInt(_1fb[2],_11f):_11f;var v=store.getValue(_13d,name);if(v){_185(_1f9,_17d(v),len);}},number:function(_202,_203,_204,_205,_206,_207){var _208=_182();if(_208>=0){var text="%0)".format([_208.toString()]);createTiddlyElement(_202,"span",null,"shortcutNumber",text);}}}};var opts={chkUseYourSearch:true,chkPreviewText:true,chkSearchAsYouType:true,chkSearchInTitle:true,chkSearchInText:true,chkSearchInTags:true,chkSearchExtendedFields:true,txtItemsPerPage:_120,txtItemsPerPageWithPreview:_121};for(var n in opts){if(config.options[n]==undefined){config.options[n]=opts[n];}}config.shadowTiddlers.AdvancedOptions+="\sn<<option chkUseYourSearch>> Use 'Your Search' //([[more options|YourSearch Options]]) ([[help|YourSearch Help]])// ";config.shadowTiddlers["YourSearch Help"]="!Field Search\snWith the Field Search you can restrict your search to certain fields of a tiddler, e.g"+" only search the tags or only the titles. The general form is //fieldname//'':''//textToSearch// (e."+"g. {{{title:intro}}}). In addition one-character shortcuts are also supported for the standard field"+"s {{{title}}}, {{{text}}} and {{{tags}}}:\sn|!What you want|!What you type|!Example|\sn|Search ''titles "+"only''|start word with ''!''|{{{!jonny}}} (shortcut for {{{title:jonny}}})|\sn|Search ''contents/text "+"only''|start word with ''%''|{{{%football}}} (shortcut for {{{text:football}}})|\sn|Search ''tags only"+"''|start word with ''#''|{{{#Plugin}}} (shortcut for {{{tags:Plugin}}})|\sn\snUsing this feature you may"+" also search the extended fields (\s"Metadata\s") introduced with TiddlyWiki 2.1, e.g. use {{{priority:1"+"}}} to find all tiddlers with the priority field set to \s"1\s".\sn\snYou may search a word in more than one"+" field. E.g. {{{!#Plugin}}} (or {{{title:tags:Plugin}}} in the \s"long form\s") finds tiddlers containin"+"g \s"Plugin\s" either in the title or in the tags (but does not look for \s"Plugin\s" in the text). \sn\sn!Boole"+"an Search\snThe Boolean Search is useful when searching for multiple words.\sn|!What you want|!What you "+"type|!Example|\sn|''All words'' must exist|List of words|{{{jonny jeremy}}} (or {{{jonny and jeremy}}}"+")|\sn|''At least one word'' must exist|Separate words by ''or''|{{{jonny or jeremy}}}|\sn|A word ''must "+"not exist''|Start word with ''-''|{{{-jonny}}} (or {{{not jonny}}})|\sn\sn''Note:'' When you specify two"+" words, separated with a space, YourSearch finds all tiddlers that contain both words, but not neces"+"sarily next to each other. If you want to find a sequence of word, e.g. '{{{John Brown}}}', you need"+" to put the words into quotes. I.e. you type: {{{\s"john brown\s"}}}.\sn\snUsing parenthesis you may change "+"the default \s"left to right\s" evaluation of the boolean search. E.g. {{{not (jonny or jeremy)}}} finds"+" all tiddlers that contain neither \s"jonny\s" nor \s"jeremy. In contrast to this {{{not jonny or jeremy}}"+"} (i.e. without parenthesis) finds all tiddlers that either don't contain \s"jonny\s" or that contain \s"j"+"eremy\s".\sn\sn!'Exact Word' Search\snBy default a search result all matches that 'contain' the searched tex"+"t. E.g. if you search for {{{Task}}} you will get all tiddlers containing 'Task', but also '~Complet"+"edTask', '~TaskForce' etc.\sn\snIf you only want to get the tiddlers that contain 'exactly the word' you"+" need to prefix it with a '='. E.g. typing '=Task' will find the tiddlers that contain the word 'Tas"+"k', ignoring words that just contain 'Task' as a substring.\sn\sn!~CaseSensitiveSearch and ~RegExpSearch"+"\snThe standard search options ~CaseSensitiveSearch and ~RegExpSearch are fully supported by YourSearc"+"h. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\sn\snIn addition you m"+"ay do a \s"regular expression\s" search even with the ''~RegExpSearch'' set to false by directly enterin"+"g the regular expression into the search field, framed with {{{/.../}}}. \sn\snExample: {{{/m[ae][iy]er/"+"}}} will find all tiddlers that contain either \s"maier\s", \s"mayer\s", \s"meier\s" or \s"meyer\s".\sn\sn!~JavaScript E"+"xpression Filtering\snIf you are familiar with JavaScript programming and know some TiddlyWiki interna"+"ls you may also use JavaScript expression for the search. Just enter a JavaScript boolean expression"+" into the search field, framed with {{{ { ... } }}}. In the code refer to the variable tiddler and e"+"valuate to {{{true}}} when the given tiddler should be included in the result. \sn\snExample: {{{ { tidd"+"ler.modified > new Date(\s"Jul 4, 2005\s")} }}} returns all tiddler modified after July 4th, 2005.\sn\sn!Com"+"bined Search\snYou are free to combine the various search options. \sn\sn''Examples''\sn|!What you type|!Res"+"ult|\sn|{{{!jonny !jeremy -%football}}}|all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its tit"+"les, but no {{{football}}} in content.|\sn|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact wor"+"d). Tags named '~CompletedTask', '~TaskForce' etc. are not considered.|\sn\sn!Access Keys\snYou are encour"+"aged to use the access keys (also called \s"shortcut\s" keys) for the most frequently used operations. F"+"or quick reference these shortcuts are also mentioned in the tooltip for the various buttons etc.\sn\sn|"+"!Key|!Operation|\sn|{{{Alt-F}}}|''The most important keystroke'': It moves the cursor to the search in"+"put field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the pr"+"evious search result. This way you can quickly display multiple tiddlers using \s"Press {{{Alt-F}}}. S"+"elect tiddler.\s" sequences.|\sn|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Resul"+"t]] is already closed and the cursor is in the search input field the field's content is cleared so "+"you start a new query.|\sn|{{{Alt-1}}}, {{{Alt-2}}},... |Pressing these keys opens the first, second e"+"tc. tiddler from the result list.|\sn|{{{Alt-O}}}|Opens all found tiddlers.|\sn|{{{Alt-P}}}|Toggles the "+"'Preview Text' mode.|\sn|{{{Alt-'<'}}}, {{{Alt-'>'}}}|Displays the previous or next page in the [[Your"+"Search Result]].|\sn|{{{Return}}}|When you have turned off the 'as you type' search mode pressing the "+"{{{Return}}} key actually starts the search (as does pressing the 'search' button).|\sn\sn//If some of t"+"hese shortcuts don't work for you check your browser if you have other extensions installed that alr"+"eady \s"use\s" these shortcuts.//";config.shadowTiddlers["YourSearch Options"]="|>|!YourSearch Options|\sn|>|<<option chkUseYourSearch>> Use 'Your Search'|\sn|!|<<option chkPreviewText"+">> Show Text Preview|\sn|!|<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required"+" to start search)|\sn|!|Default Search Filter:<<option chkSearchInTitle>>Title ('!') <<option chk"+"SearchInText>>Text ('%') <<option chkSearchInTags>>Tags ('#') <<option chkSearchExtendedFiel"+"ds>>Extended Fields<html><br><font size=\s"-2\s">The fields of a tiddlers that are searched when you don"+"'t explicitly specify a filter in the search text <br>(Explictly specify fields using one or more '!"+"', '%', '#' or 'fieldname:' prefix before the word/text to find).</font></html>|\sn|!|Number of items "+"on search result page: <<option txtItemsPerPage>>|\sn|!|Number of items on search result page with pre"+"view text: <<option txtItemsPerPageWithPreview>>|\sn";config.shadowTiddlers["YourSearchStyleSheet"]="/***\sn!~YourSearchResult Stylesheet\sn***/\sn/*{{{*/\sn.yourSearchResult {\sn\stposition: absolute;\sn\stwidth: 800"+"px;\sn\sn\stpadding: 0.2em;\sn\stlist-style: none;\sn\stmargin: 0;\sn\sn\stbackground: #ffd;\sn\stborder: 1px solid DarkGra"+"y;\sn}\sn\sn/*}}}*/\sn/***\sn!!Summary Section\sn***/\sn/*{{{*/\sn.yourSearchResult .summary {\sn\stborder-bottom-width:"+" thin;\sn\stborder-bottom-style: solid;\sn\stborder-bottom-color: #999999;\sn\stpadding-bottom: 4px;\sn}\sn\sn.yourSea"+"rchRange, .yourSearchCount, .yourSearchQuery {\sn\stfont-weight: bold;\sn}\sn\sn.yourSearchResult .summary ."+"button {\sn\stfont-size: 10px;\sn\sn\stpadding-left: 0.3em;\sn\stpadding-right: 0.3em;\sn}\sn\sn.yourSearchResult .summa"+"ry .chkBoxLabel {\sn\stfont-size: 10px;\sn\sn\stpadding-right: 0.3em;\sn}\sn\sn/*}}}*/\sn/***\sn!!Items Area\sn***/\sn/*{{{*"+"/\sn.yourSearchResult .marked {\sn\stbackground: none;\sn\stfont-weight: bold;\sn}\sn\sn.yourSearchItem {\sn\stmargin-to"+"p: 2px;\sn}\sn\sn.yourSearchNumber {\sn\stcolor: #808080;\sn}\sn\sn\sn.yourSearchTags {\sn\stcolor: #008000;\sn}\sn\sn.yourSearc"+"hText {\sn\stcolor: #808080;\sn\stmargin-bottom: 6px;\sn}\sn\sn/*}}}*/\sn/***\sn!!Footer\sn***/\sn/*{{{*/\sn.yourSearchFoote"+"r {\sn\stmargin-top: 8px;\sn\stborder-top-width: thin;\sn\stborder-top-style: solid;\sn\stborder-top-color: #999999;"+"\sn}\sn\sn.yourSearchFooter a:hover{\sn\stbackground: none;\sn\stcolor: none;\sn}\sn/*}}}*/\sn/***\sn!!Navigation Bar\sn***/"+"\sn/*{{{*/\sn.yourSearchNaviBar a {\sn\stfont-size: 16px;\sn\stmargin-left: 4px;\sn\stmargin-right: 4px;\sn\stcolor: bla"+"ck;\sn\sttext-decoration: underline;\sn}\sn\sn.yourSearchNaviBar a:hover {\sn\stbackground-color: none;\sn}\sn\sn.yourSe"+"archNaviBar .prev {\sn\stfont-weight: bold;\sn\stcolor: blue;\sn}\sn\sn.yourSearchNaviBar .currentPage {\sn\stcolor: #"+"FF0000;\sn\stfont-weight: bold;\sn\sttext-decoration: none;\sn}\sn\sn.yourSearchNaviBar .next {\sn\stfont-weight: bold"+";\sn\stcolor: blue;\sn}\sn/*}}}*/\sn";config.shadowTiddlers["YourSearchResultTemplate"]="<!--\sn{{{\sn-->\sn<span macro=\s"yourSearch if found\s">\sn<!-- The Summary Header ============================"+"================ -->\sn<table class=\s"summary\s" border=\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s">"+"<tbody>\sn <tr>\sn\st<td align=\s"left\s">\sn\st\stYourSearch Result <span class=\s"yourSearchRange\s" macro=\s"yourSearc"+"h itemRange\s"></span>\sn\st\st&nbsp;of&nbsp;<span class=\s"yourSearchCount\s" macro=\s"yourSearch count\s"></span>\sn"+"\st\stfor&nbsp;<span class=\s"yourSearchQuery\s" macro=\s"yourSearch query\s"></span>\sn\st</td>\sn\st<td class=\s"yourSea"+"rchButtons\s" align=\s"right\s">\sn\st\st<span macro=\s"yourSearch chkPreviewText\s"></span><span class=\s"chkBoxLabel"+"\s">preview text</span>\sn\st\st<span macro=\s"yourSearch newTiddlerButton\s"></span>\sn\st\st<span macro=\s"yourSearch openAllButton\s"></span>\sn\st\st<span macro=\s"yourSearch lin"+"kButton 'YourSearch Options' options 'Configure YourSearch'\s"></span>\sn\st\st<span macro=\s"yourSearch linkB"+"utton 'YourSearch Help' help 'Get help how to use YourSearch'\s"></span>\sn\st\st<span macro=\s"yourSearch clo"+"seButton\s"></span>\sn\st</td>\sn </tr>\sn</tbody></table>\sn\sn<!-- The List of Found Tiddlers ================="+"=========================== -->\sn<div id=\s"yourSearchResultItems\s" itemsPerPage=\s"25\s" itemsPerPageWithPr"+"eview=\s"10\s"></div>\sn\sn<!-- The Footer (with the Navigation) ==========================================="+"= -->\sn<table class=\s"yourSearchFooter\s" border=\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s"><tbody"+">\sn <tr>\sn\st<td align=\s"left\s">\sn\st\stResult page: <span class=\s"yourSearchNaviBar\s" macro=\s"yourSearch naviBar"+"\s"></span>\sn\st</td>\sn\st<td align=\s"right\s"><span macro=\s"yourSearch version\s"></span>, <span macro=\s"yourSearc"+"h copyright\s"></span>\sn\st</td>\sn </tr>\sn</tbody></table>\sn<!-- end of the 'tiddlers found' case ========="+"================================== -->\sn</span>\sn\sn\sn<!-- The \s"No tiddlers found\s" case ================="+"========================== -->\sn<span macro=\s"yourSearch if not found\s">\sn<table class=\s"summary\s" border="+"\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s"><tbody>\sn <tr>\sn\st<td align=\s"left\s">\sn\st\stYourSearch Resu"+"lt: No tiddlers found for <span class=\s"yourSearchQuery\s" macro=\s"yourSearch query\s"></span>.\sn\st</td>\sn\st<t"+"d class=\s"yourSearchButtons\s" align=\s"right\s">\sn\st\st<span macro=\s"yourSearch newTiddlerButton\s"></span>\sn\st\st<span macro=\s"yourSearch linkButton 'YourSearch Options'"+" options 'Configure YourSearch'\s"></span>\sn\st\st<span macro=\s"yourSearch linkButton 'YourSearch Help' help"+" 'Get help how to use YourSearch'\s"></span>\sn\st\st<span macro=\s"yourSearch closeButton\s"></span>\sn\st</td>\sn <"+"/tr>\sn</tbody></table>\sn</span>\sn\sn\sn<!--\sn}}}\sn-->\sn";config.shadowTiddlers["YourSearchItemTemplate"]="<!--\sn{{{\sn-->\sn<span class='yourSearchNumber' macro='foundTiddler number'></span>\sn<span class='yourSea"+"rchTitle' macro='foundTiddler title'/></span>&nbsp;-&nbsp;\sn<span class='yourSearchTags' macro='found"+"Tiddler field tags 50'/></span>\sn<span macro=\s"yourSearch if previewText\s"><div class='yourSearchText' macro='fo"+"undTiddler field text 250'/></div></span>\sn<!--\sn}}}\sn-->";config.shadowTiddlers["YourSearch"]="<<tiddler [[YourSearch Help]]>>";config.shadowTiddlers["YourSearch Result"]="The popup-like window displaying the result of a YourSearch query.";config.macros.search.handler=_158;var _20c=function(){if(config.macros.search.handler!=_158){alert("Message from YourSearchPlugin:\sn\sn\snAnother plugin has disabled the 'Your Search' features.\sn\sn\snYou may "+"disable the other plugin or change the load order of \snthe plugins (by changing the names of the tidd"+"lers)\snto enable the 'Your Search' features.");}};setTimeout(_20c,5000);abego.YourSearch.getStandardRankFunction=function(){return _100;};abego.YourSearch.getRankFunction=function(){return abego.YourSearch.getStandardRankFunction();};abego.YourSearch.getCurrentTiddler=function(){return _13d;};abego.YourSearch.closeResult=function(){_12b();};abego.YourSearch.getFoundTiddlers=function(){return _f3;};abego.YourSearch.getQuery=function(){return _f4;};abego.YourSearch.onShowResult=function(_20d){highlightHack=_f4?_f4.getMarkRegExp():null;if(!_20d){_13e.setItems(_f7());}if(!_125){_125=createTiddlyElement(document.body,"div",_122,"yourSearchResult");}else{if(_125.parentNode!=document.body){document.body.appendChild(_125);}}_147();highlightHack=null;};})();}\n//%/
Tags offer a quick way to access and sort your entries within the system.\n\nWith the control panel open you can click on the tag "Tags" which wil open a list of all the tags you have created. Each tag indicates the number of entries with that tag, and a small downwards arrow, clicking on that arrow will list the names of the entries under that tag, click on a name and that tiddler will open.\n\nYou can have a tiddler include a list of tiddlers with a specific tag simply by using the code <<tagging name_of_tag>>. When the tiddler is opened, all tiddlers with the tag "name_of_tag" will be displayed as hyperlinks - click to open!!.\n\nThis version of ~TiddlyWiki is using an advanced form of tagging called "tagglytagging". It has a few interesting features the main one being that with one tiddler open, you can click on "new here" which will open a new tiddler automating tagged to the tiddler that open it. And when you reopen the original tiddler, the new tiddler will be automatically listed as a "sub-tiddler" to the original. Note that when the new "sub-tiddler" opens it is automatically tagged to the original tiddler - and there is nothing stopping you adding more tags!!!! - which lets you cross-reference your work as many ways as you can keep track off (your brain will start to forget the tags you used long beforeTiddlyWiki does!!\n\nThere are a few other advanced ways to use tags, and I prefer to answer specific questions as and when they come up, rather than trying to describe every possibility up front.
!Base de Dados para Processos de Aprendizado\n\nEssa página possibilita acesso a vários arquivos, artigos, processos e Recursos de Ensino sobre Aprendizado Criativo, Interativo e Participativo. Esses arquivos estão dividos pelo tipo de processo e por ordem alfabética.\n\nA idéia é termos uma base de dados feita por cloaboração, logo, os participantes são convidados a adicionar mais processos, idéias e artigos. Nós pedimos que certas regras básicas sejam seguidas, para que esse recurso seja acessível e fácil de usar pelo maior número de pessoas possível.\n\n*Uma vez feito o login, você pode editar quase qualquer parte dessas informações. Por favor, não edite materiais que não sejam originalmente seus, sem a permissão do autor. Você é bem-vind@ a adicionar comentários, sugestões e alternativas para qualquer texto.\n\n*Ao se inscrever nesse recurso, você deve escolher um nome de usuário e uma senha. Em sua primeira visita, por favor complete o Questionário de Perfil do Participante, para que todos nós possamos saber um pouco mais sobre você. E quando for adicionar algum material, por favor, use o mesmo nome do login como uma das tags (etiquetas) do seu texto - dessa forma, todos poderão saber quem é o autor de cada texto.\n\n*Leia as [[TW Instructions]] e se familiarize com como usar esse software. Nós também recomendamos que você baixe esse software para usar em sua própria organização - isso vai facilitar a integração entre esse TW de organização comum e seu TW privado.\n*Respeite o que foi acertado nas discussões da internet, espacialmente mostrando respeito e consideração pelos outros usuários desse site. Esse é um espaço para construir uma visão compartilhada e uma base de recursos para Professores de Permacultura, não é lugar para reclamações pessoais ou propagandas abusivas (qualquer comportamento abusivo resultará na remoção da lista de autorizados deste site).\n