Engl. translation: ''experiment of early Christian community''.\nRuss. transl.: ''эксперимент ранной христианской общины''
! Next actions for active contexts\n<<gtdActionList @>>
[img[http://tbn0.google.com/images?q=tbn:-M_JhGEOppv1_M:http://rozamira.org/lib/names/m/menn/menn05.jpg]]
To make this system operate more efficiently, you should periodically archive completed projects and actions. When a project or action is archived, it is merely tagged in a special way to get it "out of sight", but all the information in the project and action tiddlers is preserved. This is important if you need to go back and find something. Click one of these buttons to view the current <<tag project-archive>> or <<tag action-archive>>.\n\n** Click <<gtdArchive archive>> if you would like to archive all completed projects and actions now.\n** Click <<gtdArchive unarchive>> if you would like to unarchive all previously archived projects and actions now.\n\nIf you are sure that you do not want to retain archived projects and actions, you can purge them completely from the system. //Once these archived items are removed, the only way they can be put back in is through manual importing or copy/paste.// ''For your safety, your file will be saved and a backup file will be automatically generated before an archive purge is performed.''\n\n** Click <<gtdArchive purge>> if you would like to purge your archive now.
[img[http://tbn0.google.com/images?q=tbn:YwEtQz_BRr81PM:http://www.amceurope.org/arnoldf2.JPG]]
[img[http://tbn0.google.com/images?q=tbn:FsM-Pk_P572DjM:http://www.uni-tuebingen.de/augustinus-zentrum/_borders/augustinusantike.jpg]]\n(354 -- 430)\n\n[[A good Augustine portal|http://ccat.sas.upenn.edu/jod/augustine.html]]
You can email me: benoehler at gmail dot com\n\n----\n\n''HGEU Fall/Winter Semester 07/08:''\n\n//''Vienna''//\n*Development of Christianity (Beginnings)\n*Philosophy of Biblical Literature\n*German Communication (prep for Vienna)\n\n//''Translators''//\n*Introduction To Philosophical Thinking\n*Development of Christianity (Beginnings)\n*History of Philosophy\n*"Sacred" (Church) History\n\n----\n\n
The Bruderhof, The Society of Brothers and previously as The Hutterian Brethren East.\n
[img[http://tbn0.google.com/images?q=tbn:XizENglqUTPBQM:http://samizdat.4t.com/samizdat21/cs%2520lewis02.jpg]]\n\n[[Island of Freedom - short biography|http://www.island-of-freedom.com/LEWIS.HTM]]\n[[Kirjasto's excellent biography|http://kirjasto.sci.fi/cslewis.htm]]\n[[wikipedia|http://en.wikipedia.org/wiki/C._S._Lewis]]\n\n__Students' Summaries__\n[[Zina Kirko on "Suprized by Joy"]] | [[Zina on Lewis' Life]]
/***\n|''Name:''|CalendarPlugin|\n|''Source:''|http://www.TiddlyTools.com/#CalendarPlugin|\n|''Author:''|SteveRumsby|\n|''License:''|unknown|\n|''~CoreVersion:''|2.0.10|\n\n// // updated by Jeremy Sheeley to add cacheing for reminders\n// // see http://www.geocities.com/allredfaq/reminderMacros.html\n// // ''Changes by ELS 2006.08.23:''\n// // added handling for weeknumbers (code supplied by Martin Budden. see "wn**" comment marks)\n// // ''Changes by ELS 2005.10.30:''\n// // config.macros.calendar.handler()\n// // ^^use "tbody" element for IE compatibility^^\n// // ^^IE returns 2005 for current year, FF returns 105... fix year adjustment accordingly^^\n// // createCalendarDays()\n// // ^^use showDate() function (if defined) to render autostyled date with linked popup^^\n// // calendar stylesheet definition\n// // ^^use .calendar class-specific selectors, add text centering and margin settings^^\n\n\n!!!!!Configuration:\n<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//\n|''First day of week:''|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|\n|''First day of weekend:''|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|\n\n!!!!!Syntax:\n|{{{<<calendar>>}}}|Produce a full-year calendar for the current year|\n|{{{<<calendar year>>}}}|Produce a full-year calendar for the given year|\n|{{{<<calendar year month>>}}}|Produce a one-month calendar for the given month and year|\n|{{{<<calendar thismonth>>}}}|Produce a one-month calendar for the current month|\n|{{{<<calendar lastmonth>>}}}|Produce a one-month calendar for last month|\n|{{{<<calendar nextmonth>>}}}|Produce a one-month calendar for next month|\n\n***/\n// //Modify this section to change the text displayed for the month and day names, to a different language for example. You can also change the format of the tiddler names linked to from each date, and the colours used.\n\n//{{{\nconfig.macros.calendar = {};\n\nconfig.macros.calendar.monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];\nconfig.macros.calendar.daynames = ["M", "T", "W", "T", "F", "S", "S"];\n\nconfig.macros.calendar.weekendbg = "#c0c0c0";\nconfig.macros.calendar.monthbg = "#e0e0e0";\nconfig.macros.calendar.holidaybg = "#ffc0c0";\n\n//}}}\n// //''Code section:''\n// (you should not need to alter anything below here)//\n//{{{\nif(config.options.txtCalFirstDay == undefined)\n config.options.txtCalFirstDay = 0;\nif(config.options.txtCalStartOfWeekend == undefined)\n config.options.txtCalStartOfWeekend = 5;\nif(config.options.chkDisplayWeekNumbers == undefined)//wn**\n config.options.chkDisplayWeekNumbers = false;\nif(config.options.chkDisplayWeekNumbers)\n config.options.txtCalFirstDay = 0;\n\nconfig.macros.calendar.tiddlerformat = "0DD/0MM/YYYY"; // This used to be changeable - for now, it isn't// <<smiley :-(>> \n\nversion.extensions.calendar = { major: 0, minor: 6, revision: 0, date: new Date(2006, 1, 22)};\nconfig.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nconfig.macros.calendar.holidays = [ ]; // Not sure this is required anymore - use reminders instead\n//}}}\n\n// //Is the given date a holiday?\n//{{{\nfunction calendarIsHoliday(date)\n{\n var longHoliday = date.formatString("0DD/0MM/YYYY");\n var shortHoliday = date.formatString("0DD/0MM");\n\n for(var i = 0; i < config.macros.calendar.holidays.length; i++) {\n if(config.macros.calendar.holidays[i] == longHoliday || config.macros.calendar.holidays[i] == shortHoliday) {\n return true;\n }\n }\n return false;\n}\n//}}}\n\n// //The main entry point - the macro handler.\n// //Decide what sort of calendar we are creating (month or year, and which month or year)\n// // Create the main calendar container and pass that to sub-ordinate functions to create the structure.\n// ELS 2005.10.30: added creation and use of "tbody" for IE compatibility and fixup for year >1900//\n// ELS 2005.10.30: fix year calculation for IE's getYear() function (which returns '2005' instead of '105')//\n// ELS 2006.05.29: add journalDateFmt handling//\n//{{{\nconfig.macros.calendar.handler = function(place,macroName,params)\n{\n var calendar = createTiddlyElement(place, "table", null, "calendar", null);\n var tbody = createTiddlyElement(calendar, "tbody", null, null, null);\n var today = new Date();\n var year = today.getYear();\n if (year<1900) year+=1900;\n \n // get format for journal link by reading from SideBarOptions (ELS 5/29/06 - based on suggestion by Martin Budden)\n var text = store.getTiddlerText("SideBarOptions");\n this.journalDateFmt = "DD-MMM-YYYY";\n var re = new RegExp("<<(?:newJournal)([^>]*)>>","mg"); var fm = re.exec(text);\n if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }\n\n if (params[0] == "thismonth")\n {\n cacheReminders(new Date(year, today.getMonth(), 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, today.getMonth());\n } \n else if (params[0] == "lastmonth") {\n var month = today.getMonth()-1; if (month==-1) { month=11; year--; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else if (params[0] == "nextmonth") {\n var month = today.getMonth()+1; if (month>11) { month=0; year++; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else {\n if (params[0]) year = params[0];\n if(params[1])\n {\n cacheReminders(new Date(year, params[1]-1, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, params[1]-1);\n }\n else\n {\n cacheReminders(new Date(year, 0, 1, 0, 0), 366);\n createCalendarYear(tbody, year);\n }\n }\n window.reminderCacheForCalendar = null;\n}\n//}}}\n//{{{\n//This global variable is used to store reminders that have been cached\n//while the calendar is being rendered. It will be renulled after the calendar is fully rendered.\nwindow.reminderCacheForCalendar = null;\n//}}}\n//{{{\nfunction cacheReminders(date, leadtime)\n{\n if (window.findTiddlersWithReminders == null)\n return;\n window.reminderCacheForCalendar = {};\n var leadtimeHash = [];\n leadtimeHash [0] = 0;\n leadtimeHash [1] = leadtime;\n var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);\n for(var i = 0; i < t.length; i++) {\n //just tag it in the cache, so that when we're drawing days, we can bold this one.\n window.reminderCacheForCalendar[t[i]["matchedDate"]] = "reminder:" + t[i]["params"]["title"]; \n }\n}\n//}}}\n//{{{\nfunction createCalendarOneMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarYear(calendar, year)\n{\n var row;\n row = createTiddlyElement(calendar, "tr", null, null, null);\n var back = createTiddlyElement(row, "td", null, null, null);\n var backHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year-1);\n };\n createTiddlyButton(back, "<", "Previous year", backHandler);\n back.align = "center";\n\n var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);\n yearHeader.align = "center";\n //yearHeader.setAttribute("colSpan", 19);\n yearHeader.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?22:19);//wn**\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n var fwdHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year+1);\n };\n createTiddlyButton(fwd, ">", "Next year", fwdHandler);\n fwd.align = "center";\n\n createCalendarMonthRow(calendar, year, 0);\n createCalendarMonthRow(calendar, year, 3);\n createCalendarMonthRow(calendar, year, 6);\n createCalendarMonthRow(calendar, year, 9);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthRow(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDayHeader(row, 3);\n createCalendarDayRows(cal, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthHeader(cal, row, name, nav, year, mon)\n{\n var month;\n if(nav) {\n var back = createTiddlyElement(row, "td", null, null, null);\n back.align = "center";\n back.style.background = config.macros.calendar.monthbg;\n\n/*\n back.setAttribute("colSpan", 2);\n\n var backYearHandler = function() {\n var newyear = year-1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(back, "<<", "Previous year", backYearHandler);\n*/\n var backMonHandler = function() {\n var newyear = year;\n var newmon = mon-1;\n if(newmon == -1) { newmon = 11; newyear = newyear-1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(back, "<", "Previous month", backMonHandler);\n\n\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n// month.setAttribute("colSpan", 3);\n// month.setAttribute("colSpan", 5);\n month.setAttribute("colSpan", config.options.chkDisplayWeekNumbers?6:5);//wn**\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n fwd.align = "center";\n fwd.style.background = config.macros.calendar.monthbg; \n\n// fwd.setAttribute("colSpan", 2);\n var fwdMonHandler = function() {\n var newyear = year;\n var newmon = mon+1;\n if(newmon == 12) { newmon = 0; newyear = newyear+1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(fwd, ">", "Next month", fwdMonHandler);\n/*\n var fwdYear = createTiddlyElement(row, "td", null, null, null);\n var fwdYearHandler = function() {\n var newyear = year+1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(fwd, ">>", "Next year", fwdYearHandler);\n*/\n } else {\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n //month.setAttribute("colSpan", 7);\n month.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?8:7);//wn**\n }\n month.align = "center";\n month.style.background = config.macros.calendar.monthbg;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayHeader(row, num)\n{\n var cell;\n for(var i = 0; i < num; i++) {\n if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, "td");//wn**\n for(var j = 0; j < 7; j++) {\n var d = j + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);\n if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))\n cell.style.background = config.macros.calendar.weekendbg;\n }\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDays(row, col, first, max, year, mon)\n{\n var i;\n if (config.options.chkDisplayWeekNumbers){\n if (first<=max) {\n var ww = new Date(year,mon,first);\n createTiddlyElement(row, "td", null, null, "w"+ww.getWeek());//wn**\n }\n else createTiddlyElement(row, "td", null, null, null);//wn**\n }\n for(i = 0; i < col; i++) {\n createTiddlyElement(row, "td", null, null, null);\n }\n var day = first;\n for(i = col; i < 7; i++) {\n var d = i + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n var daycell = createTiddlyElement(row, "td", null, null, null);\n var isaWeekend = ((d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))? true:false);\n\n if(day > 0 && day <= max) {\n var celldate = new Date(year, mon, day);\n // ELS 2005.10.30: use <<date>> macro's showDate() function to create popup\n if (window.showDate) {\n showDate(daycell,celldate,"popup","DD",config.macros.calendar.journalDateFmt,true, isaWeekend); // ELS 5/29/06 - use journalDateFmt \n } else {\n if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;\n var title = celldate.formatString(config.macros.calendar.tiddlerformat);\n if(calendarIsHoliday(celldate)) {\n daycell.style.background = config.macros.calendar.holidaybg;\n }\n if(window.findTiddlersWithReminders == null) {\n var link = createTiddlyLink(daycell, title, false);\n link.appendChild(document.createTextNode(day));\n } else {\n var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);\n }\n }\n }\n day++;\n }\n}\n//}}}\n\n// //We've clicked on a day in a calendar - create a suitable pop-up of options.\n// //The pop-up should contain:\n// // * a link to create a new entry for that date\n// // * a link to create a new reminder for that date\n// // * an <hr>\n// // * the list of reminders for that date\n//{{{\nfunction onClickCalendarDate(e)\n{\n var button = this;\n var date = button.getAttribute("title");\n var dat = new Date(date.substr(6,4), date.substr(3,2)-1, date.substr(0, 2));\n\n date = dat.formatString(config.macros.calendar.tiddlerformat);\n var popup = createTiddlerPopup(this);\n popup.appendChild(document.createTextNode(date));\n var newReminder = function() {\n var t = store.getTiddlers(date);\n displayTiddler(null, date, 2, null, null, false, false);\n if(t) {\n document.getElementById("editorBody" + date).value += "\sn<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n } else {\n document.getElementById("editorBody" + date).value = "<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n }\n };\n var link = createTiddlyButton(popup, "New reminder", null, newReminder); \n popup.appendChild(document.createElement("hr"));\n\n var t = findTiddlersWithReminders(dat, [0,14], null, 1);\n for(var i = 0; i < t.length; i++) {\n link = createTiddlyLink(popup, t[i].tiddler, false);\n link.appendChild(document.createTextNode(t[i].tiddler));\n }\n}\n//}}}\n\n//{{{\nfunction calendarMaxDays(year, mon)\n{\n var max = config.macros.calendar.monthdays[mon];\n if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) {\n max++;\n }\n return max;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRows(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1 + 7;\n var day1 = -first1 + 1;\n var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first2 < 0) first2 = first2 + 7;\n var day2 = -first2 + 1;\n var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first3 < 0) first3 = first3 + 7;\n var day3 = -first3 + 1;\n\n var max1 = calendarMaxDays(year, mon);\n var max2 = calendarMaxDays(year, mon+1);\n var max3 = calendarMaxDays(year, mon+2);\n\n while(day1 <= max1 || day2 <= max2 || day3 <= max3) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;\n createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRowsSingle(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1+ 7;\n var day1 = -first1 + 1;\n var max1 = calendarMaxDays(year, mon);\n\n while(day1 <= max1) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n }\n}\n//}}}\n\n// //ELS 2005.10.30: added styles\n//{{{\nsetStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }", "calendarStyles");\n//}}}\n
English translation: "the message of Christ".\nThe author, Stefan Etzel, hints to the NT gospels, especially the "Sermon on the Mount" in Matthew. See also: [[Eberhard Arnold, Early Christians|http://www.plough.com/ebooks/earlychristians.html]]
These configuration options enable you to customize the default behaviour of this wiki. They are saved locally as cookies, just like other TiddlyWiki configuration options.\n\nThis is the tag used for the "reference" context, used to identify tiddlers that show up in the [[Reference]] list: \n<<option txtGTDReferenceContext>>\n\nThis is the tag used for the "someday-maybe" context, used to identify tiddlers that show up in the [[Someday-Maybe]] list:\n<<option txtGTDSomedayContext>>\n\nThis is the tag used for the "unfiled" context, used to tag actions when the context is not known (such as a deleted context):\n<<option txtGTDUnfiledContext>>\n\nThis value, if specified, is the number of days to keep completed actions in context and review action lists (leave blank to show all unarchived, completed actions):\n<<option txtGTDActionAging>>\n\n<<option chkGTDFancyStyle>> Use this checkbox to enable or disable the extended (fancy) GTD style specified by the GTDTWStyleSheet (you will need to reload the page to see your change)\n\n<<option chkGTDLazyAutoSave>> Use this checkbox to enable or disable "lazy" autosaving of changes to your document. If turned on, then the autosave will fire every <<option txtGTDLazyAutoSaveInterval>> seconds.\n
/***\n|''Name:''|DatePlugin|\n|''Source:''|http://www.TiddlyTools.com/#DatePlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nThere are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW. While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier. This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.\n\nThis plugin display formatted dates, for the specified year, month, day using number values or mathematical expressions such as (Y+1) or (D+30). Optionally, you can create a link from the formatted output to a 'dated tiddler' for quick blogging or create a popup menu that includes the dated tiddler link plus links to changes made on that date as well as links to any pending reminders for the coming 31 days (if the RemindersPlugin is installed). This plugin also provides a public API for easily incorporating formatted date output (with or without the links/popups) into other plugins, such as calendar generators, etc.\n!!!!!Usage\n<<<\nWhen installed, this plugin defines a macro: {{{<<date [mode] [date] [format] [linkformat]>>}}}. All of the macro parameters are optional and, in it's simplest form, {{{<<date>>}}}, it is equivalent to the ~TiddlyWiki core macro, {{{<<today>>}}}.\n\nHowever, where {{{<<today>>}}} simply inserts the current date/time in a predefined format (or custom format, using {{{<<today [format]>>}}}), the {{{<<date>>}}} macro's parameters take it much further than that:\n* [mode] is either ''display'', ''link'' or ''popup''. If omitted, it defaults to ''display''. This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.\n* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively. You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters. Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler. You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values. \n* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax. The default is "YYYY.0MM.0DD"\n>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^\n>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^\n>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^\n>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^\n* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format\n\nIn addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:\n\n''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}'' \n\nNote that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:\n* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status: 'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.\n* [weekend] - true indicates a weekend, false indicates a weekday. When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.\n<<<\n!!!!!Examples\n<<<\nThe current date: <<date>>\nThe current time: <<date today "0hh:0mm:0ss">>\nToday's blog: <<date link today "DDD, MMM DDth, YYYY">>\nRecent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>\nThe first day of next month will be a <<date Y M+1 1 "DDD">>\nThis tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>\nThe SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>\nThis document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>\n<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''DatePlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.05.09 [2.2.1]'' added "todaybg" handling to set background color of current date. Also, honor excludeLists tag when getting lists of tiddlers. Based on suggestions by Mark Hulme.\n''2006.05.05 [2.2.0]'' added "linkedbg" handling to set background color when a 'dated tiddler' exists. Based on a suggestion by Mark Hulme.\n''2006.03.08 [2.1.2]'' add 'override leadtime' flag param in call to findTiddlersWithReminders(), and add "Enter a title" default text to new reminder handler. Thanks to Jeremy Sheeley for these additional tweaks.\n''2006.03.06 [2.1.0]'' hasReminders() nows uses window.reminderCacheForCalendar[] when present. If calendar cache is not present, indexReminders() now uses findTiddlersWithReminders() with a 90-day look ahead to check for reminders. Also, switched default background colors for autostyled dates: reminders are now greenish ("c0ffee") and holidays are now reddish ("ffaace").\n''2006.02.14 [2.0.5]'' when readOnly is set (by TW core), omit "new reminders..." popup menu item and, if a "dated tiddler" does not already exist, display the date as simple text instead of a link.\n''2006.02.05 [2.0.4]'' added var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables\n''2006.01.18 [2.0.3]'' In 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content. With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned. To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit") equals "text", and then append the new reminder to the contents of that control.\n''2006.01.11 [2.0.2]'' correct 'weekend' override detection logic in showDate()\n''2006.01.10 [2.0.1]'' allow custom-defined weekend days (default defined in config.macros.date.weekend[] array)\nadded flag param to showDate() API to override internal weekend[] array\n''2005.12.27 [2.0.0]'' Update for TW2.0\nAdded parameter handling for 'linkformat'\n''2005.12.21 [1.2.2]'' FF's date.getYear() function returns 105 (for the current year, 2005). When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number. But IE's date.getYear() already returns 2005. As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005). Adding +1900 is now conditional so the values will be correct on both browsers.\n''2005.11.07 [1.2.1]'' added support for "tiddler" dynamic date parameter\n''2005.11.06 [1.2.0]'' added support for "tiddler:title" dynamic date parameter\n''2005.11.03 [1.1.2]'' when a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu. Based on a suggestion from BenjaminKudria.\n''2005.11.03 [1.1.1]'' Temporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache. While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed. This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).\n''2005.11.01 [1.1.0]'' corrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended. This should hopefully speed up calendar generators and other plugins that render multiple dates...\n''2005.10.31 [1.0.1]'' documentation and code cleanup\n''2005.10.31 [1.0.0]'' initial public release\n''2005.10.30 [0.9.0]'' pre-release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.date = {major: 2, minor: 2, revision: 1, date: new Date(2006,5,9)};\n//}}}\n\n//{{{\nconfig.macros.date = {\n format: "YYYY.0MM.0DD", // default date display format\n linkformat: "YYYY.0MM.0DD", // 'dated tiddler' link format\n linkedbg: "#babb1e", // "babble"\n todaybg: "#ffab1e", // "fable"\n weekendbg: "#c0c0c0", // "cocoa"\n holidaybg: "#ffaace", // "face"\n modifiedsbg: "#bbeeff", // "beef"\n remindersbg: "#c0ffee", // "coffee"\n holidays: [ "01/01", "07/04", "07/24", "11/24" ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)\n weekend: [ 1,0,0,0,0,0,1 ] // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ]\n};\n//}}}\n\n//{{{\nconfig.macros.date.handler = function(place,macroName,params)\n{\n // do we want to see a link, a popup, or just a formatted date?\n var mode="display";\n if (params[0]=="display") { mode=params[0]; params.shift(); }\n if (params[0]=="popup") { mode=params[0]; params.shift(); }\n if (params[0]=="link") { mode=params[0]; params.shift(); }\n // get the date\n var now = new Date();\n var date = now;\n if (!params[0] || params[0]=="today")\n { params.shift(); }\n else if (params[0]=="filedate")\n { date=new Date(document.lastModified); params.shift(); }\n else if (params[0]=="tiddler")\n { date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }\n else if (params[0].substr(0,8)=="tiddler:")\n { var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }\n else {\n var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));\n var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));\n var d = eval(params.shift().replace(/D/ig,now.getDate()+0));\n date = new Date(y,m-1,d);\n }\n // date format with optional custom override\n var format=this.format; if (params[0]) format=params.shift();\n var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();\n showDate(place,date,mode,format,linkformat);\n}\n//}}}\n\n//{{{\nwindow.showDate=showDate;\nfunction showDate(place,date,mode,format,linkformat,autostyle,weekend)\n{\n if (!mode) mode="display";\n if (!format) format=config.macros.date.format;\n if (!linkformat) linkformat=config.macros.date.linkformat;\n if (!autostyle) autostyle=false;\n\n // format the date output\n var title = date.formatString(format);\n var linkto = date.formatString(linkformat);\n\n // just show the formatted output\n if (mode=="display") { place.appendChild(document.createTextNode(title)); return; }\n\n // link to a 'dated tiddler'\n var link = createTiddlyLink(place, linkto, false);\n link.appendChild(document.createTextNode(title));\n link.title = linkto;\n link.date = date;\n link.format = format;\n link.linkformat = linkformat;\n\n // if using a popup menu, replace click handler for dated tiddler link\n // with handler for popup and make link text non-italic (i.e., an 'existing link' look)\n if (mode=="popup") {\n link.onclick = onClickDatePopup;\n link.style.fontStyle="normal";\n }\n\n // format the popup link to show what kind of info it contains (for use with calendar generators)\n if (!autostyle) return;\n if (hasModifieds(date))\n { link.style.fontStyle="normal"; link.style.fontWeight="bold"; }\n if (hasReminders(date))\n { link.style.textDecoration="underline"; }\n if(isToday(date))\n { link.style.border="1px solid black"; }\n\n if( (weekend!=undefined?weekend:isWeekend(date)) && (config.macros.date.weekendbg!="") )\n { place.style.background = config.macros.date.weekendbg; }\n if(isHoliday(date)&&(config.macros.date.holidaybg!=""))\n { place.style.background = config.macros.date.holidaybg; }\n if (hasModifieds(date)&&(config.macros.date.modifiedsbg!=""))\n { place.style.background = config.macros.date.modifiedsbg; }\n if (store.tiddlerExists(linkto)&&(config.macros.date.linkedbg!=""))\n { place.style.background = config.macros.date.linkedbg; }\n if (hasReminders(date)&&(config.macros.date.remindersbg!=""))\n { place.style.background = config.macros.date.remindersbg; }\n if(isToday(date)&&(config.macros.date.todaybg!=""))\n { place.style.background = config.macros.date.todaybg; }\n}\n//}}}\n\n//{{{\nfunction isToday(date) // returns true if date is today\n { var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }\n\nfunction isWeekend(date) // returns true if date is a weekend\n { return (config.macros.date.weekend[date.getDay()]); }\n\nfunction isHoliday(date) // returns true if date is a holiday\n{\n var longHoliday = date.formatString("0MM/0DD/YYYY");\n var shortHoliday = date.formatString("0MM/0DD");\n for(var i = 0; i < config.macros.date.holidays.length; i++) {\n var holiday=config.macros.date.holidays[i];\n if (holiday==longHoliday||holiday==shortHoliday) return true;\n }\n return false;\n}\n//}}}\n\n//{{{\n// Event handler for clicking on a day popup\nfunction onClickDatePopup(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var popup = createTiddlerPopup(this);\n if(popup) {\n // always show dated tiddler link (or just date, if readOnly) at the top...\n if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))\n createTiddlyLink(popup,this.date.formatString(this.linkformat),true);\n else\n createTiddlyText(popup,this.date.formatString(this.linkformat));\n addModifiedsToPopup(popup,this.date,this.format);\n addRemindersToPopup(popup,this.date,this.linkformat);\n }\n scrollToTiddlerPopup(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n//{{{\nfunction indexModifieds() // build list of tiddlers, hash indexed by modification date\n{\n var modifieds= { };\n var tiddlers = store.getTiddlers("title","excludeLists");\n for (var t = 0; t < tiddlers.length; t++) {\n var date = tiddlers[t].modified.formatString("YYYY0MM0DD")\n if (!modifieds[date])\n modifieds[date]=new Array();\n modifieds[date].push(tiddlers[t].title);\n }\n return modifieds;\n}\nfunction hasModifieds(date) // returns true if date has modified tiddlers\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n return (config.macros.date.modifieds[date.formatString("YYYY0MM0DD")]!=undefined);\n}\n\nfunction addModifiedsToPopup(popup,when,format)\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n var mods = config.macros.date.modifieds[when.formatString("YYYY0MM0DD")];\n if (mods) {\n mods.sort();\n var e=createTiddlyElement(popup,"div",null,null,"changes:");\n for(var t=0; t<mods.length; t++) {\n var link=createTiddlyLink(popup,mods[t],false);\n link.appendChild(document.createTextNode(indent+mods[t]));\n createTiddlyElement(popup,"br",null,null,null);\n }\n }\n}\n//}}}\n\n//{{{\nfunction indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date\n{\n var reminders = { };\n if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed\n // DEBUG var starttime=new Date();\n var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);\n for(var i=0; i<t.length; i++) reminders[t[i].matchedDate]=true;\n // DEBUG var out="Found "+t.length+" reminders in "+((new Date())-starttime+1)+"ms\sn";\n // DEBUG out+="startdate: "+date.toLocaleDateString()+"\sn"+"leadtime: "+leadtime+" days\sn\sn";\n // DEBUG for(var i=0; i<t.length; i++) { out+=t[i].matchedDate.toLocaleDateString()+" "+t[i].params.title+"\sn"; }\n // DEBUG alert(out);\n }\n return reminders;\n}\n\nfunction hasReminders(date) // returns true if date has reminders\n{\n if (window.reminderCacheForCalendar)\n return window.reminderCacheForCalendar[date]; // use calendar cache\n if (!config.macros.date.reminders)\n config.macros.date.reminders = indexReminders(date,90); // create a 90-day leadtime reminder cache\n return (config.macros.date.reminders[date]);\n}\n\nfunction addRemindersToPopup(popup,when,format)\n{\n if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed\n\n var indent = String.fromCharCode(160)+String.fromCharCode(160);\n var reminders=findTiddlersWithReminders(when, [0,31],null,null,1);\n var e=createTiddlyElement(popup,"div",null,null,"reminders:"+(!reminders.length?" none":""));\n for(var t=0; t<reminders.length; t++) {\n link = createTiddlyLink(popup,reminders[t].tiddler,false);\n var diff=reminders[t].diff;\n diff=(diff<1)?"Today":((diff==1)?"Tomorrow":diff+" days");\n var txt=(reminders[t].params["title"])?reminders[t].params["title"]:reminders[t].tiddler;\n link.appendChild(document.createTextNode(indent+diff+" - "+txt));\n createTiddlyElement(popup,"br",null,null,null);\n }\n if (readOnly) return; // omit "new reminder..." link\n var link = createTiddlyLink(popup,indent+"new reminder...",true); createTiddlyElement(popup,"br");\n var title = when.formatString(format);\n link.title="add a reminder to '"+title+"'";\n link.onclick = function() {\n // show tiddler editor\n story.displayTiddler(null, title, 2, null, null, false, false);\n // find body 'textarea'\n var c =document.getElementById("tiddler" + title).getElementsByTagName("*");\n for (var i=0; i<c.length; i++) if ((c[i].tagName.toLowerCase()=="textarea") && (c[i].getAttribute("edit")=="text")) break;\n // append reminder macro to tiddler content\n if (i<c.length) {\n if (store.tiddlerExists(title)) c[i].value+="\sn"; else c[i].value="";\n c[i].value += "<<reminder";\n c[i].value += " day:"+when.getDate();\n c[i].value += " month:"+(when.getMonth()+1);\n c[i].value += " year:"+when.getFullYear();\n c[i].value += ' title:"Enter a title" >>';\n }\n };\n}\n//}}}\n
//{{{\n\nconfig.macros.date.holidays=[ ]; // use reminders instead\n\nif (config.options.chkGTDFancyStyle) {\n // these colours are somewhat friendlier to the default d3 menu colour scheme\n config.macros.calendar.weekendbg= "seagreen";\n config.macros.calendar.monthbg = "transparent";\n\n config.macros.date.weekendbg="seagreen";\n config.macros.date.holidaybg="seagreen";\n config.macros.date.modifiedsbg="transparent";\n config.macros.date.remindersbg="red";\n}\n\n\n//}}}
[[What's new?]]
[img[http://tbn0.google.com/images?q=tbn:1sG62lphN0ICOM:http://www.philippus-mainz.de/grafic/bonhoeffer.jpg]]\n\n[[The Problem of Dietrich Bonhoeffer, Or, The Martyr and the Suicide Bomber|http://subrationedei.files.wordpress.com/2007/02/themartyrandthesuicidebomber.pdf]]\n[[Cell 92|http://www.dbonhoeffer.org/node/3]]\n[[Documentary|http://www.bonhoeffer.com/bon2.htm]]\n[[Against the Despisers of the Body: Dietrich Bonhoeffer Today by Jurgen Moltmann|http://portland.indymedia.org/en/2006/11/349099.shtml]]\n[[A very interesting blog being regularly published by friends of Bonhoeffer|http://dietrichbonhoeffer.wordpress.com/]]\n\n__Students' Summaries__\n[[Irene Sveshnikova on Bonhoeffer]]
[img[http://tbn0.google.com/images?q=tbn:ZzKYqwhuxtYyIM:http://www.infed.org/images/people/don_bosco.jpg]]\n(1815 – 1888)\n\n[[A Catholic Biography|http://www.catholic.org/saints/saint.php?saint_id=63]]\n[[Don Bosco as Author, Publisher, Editor, Playwright, Journalist, Pamphleteer|http://www.donbosco.asn.au/Bulletins/2002/dec/printer.htm]]\n[[A Collection of links about Catholic Education|http://www.edocere.org/articles_index.htm]]
[img[http://tbn0.google.com/images?q=tbn:VXcxGuUaAweBcM:http://content.answers.com/main/content/wp/en/1/18/Dorothy_sayers.JPG]]
[img[http://i58.photobucket.com/albums/g258/lynettemmd/10.jpg]]\n<html><small><a href='http://historyandcontext.blogspot.com/'>Nicole Hobby</a> gave me the idea.</small></html>\n!!!General\n[[Project Gutenberg|http://www.gutenberg.org/wiki/Main_Page]]\n [[Google Book Search|http://books.google.com/]]\n [[Wikibooks|http://www.wikibooks.org/]]\n [[list of digital library projects|http://en.wikipedia.org/wiki/List_of_digital_library_projects]]\n[[John Mark Ockerbloom's Online Books Page|http://onlinebooks.library.upenn.edu/]]<html><h4>Philosophy of Religion</h4></html>[[Scott Moore's e-collection|http://www3.baylor.edu/%7EScott_Moore/Phi_Rel_info.html]]<html><h4>Theology</h4></html>[[Computer-Assisted Theology|http://users.ox.ac.uk/~ctitext2/theology/]]\n[[intute web resources|http://www.intute.ac.uk/]]\n[[religion online|http://www.religion-online.org/]] (More than 6,000 articles and chapters.)<html><h4>Lifestyle</h4></html>[[Ричард Фостэр: Прославление дисциплины|http://quakers.ru/texts/celebration.htm]]\n
<html><img src='http://www.perefound.org/eber.jpeg' height=120 width=90></html> [img[http://tbn0.google.com/images?q=tbn:YfTN3vqr5auwKM:http://bocs.hu/images/konyv4.jpg]] [img[http://www.bruderhof.co.uk/images/threshing.jpg]] \n[[ ''Experiment Urgemeinde'' ]] | [["experiment of early Christian community"]] |\n[["эксперимент ранной христианской общины"]] | [[koinonia κοινωνια]]\n\n1883-1935\nGerman Christian Writer, Philosopher and Theologian, was the founder of the [[Bruderhof]] (place of brothers) in 1920\n\n__''Students' summaries/comments:''__\n[[Marina Rebrushkina on Eberhard Arnold]]\n[[Zina on Eberhard Arnold]]\n[[Волчонок (little wolf)]]\n<<<\nWe need to reach the millions who live in cities, the hundreds of thousands in industrial centers, the tens of thousands in medium-sized towns, the thousands in small towns, and the hundreds in villages -- all these at once. Like a volcanic eruption, a spiritual revolution needs to spread through the country, to spur people to crucial decisions. People have to recognize the futility of splitting life up into politics, economics, the humanities, and religion. We must be awakened to a life in which all of these things are completely integrated.\nAugust, 1928\n<<<\n<<<\nThere is no law but that of love. Love means having joy in others. Then what does being annoyed with them mean? Words of love convey the joy we have in the presence of brothers and sisters. By the same token it is out of the question to speak about a Brotherhood member in a spirit of irritation and vexation. There must never be talk, either in open remarks or by insinuation, against a brother or a sister, against their individual characteristics - under no circumstances behind their backs. Without the rule of silence there can be no loyalty, no community. (God's Revolution)\n<<<\n<<<\nNow the many who believed were of one heart and soul, and no one said that of the things which he possessed were his own, but they had everything in common. (Acts 4:32 –35)\n<<<\n<<<\nWe ourselves must no presume to shorten the life of any human being. That would be no less than a crime against God. If we believe that death is the last enemy, then we shall not offer him our hand to serve him by killing men.\n<<<\n<<<\nOnly those who look with the eyes of children can lose themselves in the object of their wonder.\n<<<\n<<<\nEvery child is a thought in the mind of God, and our task is to recognize this thought and help it toward completion.\n<<<\n<<<\nUnter der Führung von //Eberhard und Emmy Arnold// entstand von 1919 an ein ganz auf der Christus-Botschaft fußendes "Experiment Urgemeinde", zunächst in Sannerz, dann auf den Sparhöfen über Gundhelm. Rund 40 Menschen - Aussteiger würde man heute sagen - lebten in einer Art urchristlichem Kommunismus in radikaler Opposition zu Kirche und Welt. Die //Nazis// beendeten das Experiment, die meisten "Hutterer" wanderten zu Brudergemeinden nach England und Übersee aus. Eberhard Arnold starb noch 1935 und ist auf dem kleinen Friedhof der Gemeinschaft über dem einstigen Bruderhof begraben. [[source|http://www.stefan-etzel.de/bergwinkel/]]\n<<<\n\nEberhard Arnold was one of only a few Christian thinkers on the Continent between WW I and II who tried to live the "Sermon on the Mount" radically and at any price. Like [[Dietrich Bonhoeffer]], [[Maria Montessori]] and [[Martin Buber]] Arnold and his fellowship had to clash with the //Nazi// administration. His central books reflect a theology that believes in New Testament community lifestyle ("Experiment Urgemeinde"), a healthy and protected family life and education of the children within this very community.\nHis community movement that has roots back to the [[Waldenses]], the Anabaptists, the friends of [[Blumhardt|http://www.blumhardts.com]] and others, refuse any service in the army. They believe that conflicts cannot be solved with pressure, threat and violence of any kind, but divine peace as a result of [[forgiveness]] and [[reconciliation]] needs to be developed and nourished in the individual's heart, in the family, community and nation. They are convinced that a loving care for the poor and sick, weak and confused is a duty of every Christian and would solve most social problems. They sacrifice the right of personal property and //share everything in common//. They are decided to live in [[simplicity]].\n\n[[Biography at wikipedia|http://en.wikipedia.org/wiki/Eberhard_Arnold]]\n[[Link collection at google-directory|http://www.google.com/Top/Society/Religion_and_Spirituality/Christianity/Denominations/Anabaptist/Bruderhof_Communities/]]\n[[Markus Baum (a non-Bruderhof author): Against the Wind|http://www.plough.com/ebooks/AgainsttheWind.html]]\n[[Historical Overview|http://www.bruderhof.co.uk/history.html]]\n[[Overview of the 'bruderhof' movement|http://en.wikipedia.org/wiki/Bruderhof_Communities]]\n[[Indepth Research of the Beginnings (German)|http://www.utopie1.de/L/Linse-Ulrich/s221.htm]]\n\n\nThese central works of Eberhard Arnold can all be downloaded as //pdf// files:\n[[Eberhard Arnold - Writings Selected|http://www.plough.com/ebooks/eberhardarnold.html]]\n[[-, God's Revolution|http://www.plough.com/ebooks/Godsrevolution.html]]\n[[-, Early Christians|http://www.plough.com/ebooks/earlychristians.html]]\n[[-, Community Life|http://www.plough.com/ebooks/whycommunity.html]] \nCompare Arnold's approach with Dietrich Bonhoeffer's "[[Life Together|http://www.amazon.com/Cost-Discipleship-Dietrich-Bonhoeffer/dp/0684815001]]" (Original: "Gemeinsames Leben").\n[[Letters, Lectures and Writings (pdf)|http://www.plough.com/ebooks/pdfs/ATestimonyToChurchCommunity.pdf]]\n\nThe Other Side of Joy : Religious Melancholy Among the Bruderhof by Julius H. Rubin. \nFrom a reader review at Amazon.com: \n<<<\n"This is a carefully crafted and impressive overview of the Bruderhof communities, a movement deeply enmeshed in what the author describes as '''The Purgatorial Complex ,' which involves a capacity for ceaseless self-examination and self-torment.'' In the process, Professor Rubin has managed to include a great deal of information about the Bruderhof in a manner both scholarly and accessible to the general reader."\n<<<\n\nAccording to the [[anabaptist blog|http://anabaptist.lifewithchrist.org/index.html?start=204]]:\n*''The Blumhardts'', German pastors, Johann Christoph Blumhardt and his son Christoph Friedrich Blumhardt greatly influenced Eberhard Arnold's understanding of the kingdom of God.\n*''Karl Barth'', who saw himself as something of a successor to the Blumhardts, was also influenced by Arnold, a contemporary of his.\n*''John Howard Yoder'', Anabaptist theologian, historian and ethicist points to both Arnold and Barth as having had a great impact on his life.\n*''Stanley Hauerwas'', Ethicist, credits Barth and Yoder with forming his theology.\n\nThomas Merton: 'Arnold's writing has all the simple, luminous, direct vision into things that I have come to associate with his name. It has the authentic ring of a truly evangelical Christianity and moves me deeply. It stirs to repentance and renewal. I am deeply grateful for it.'\n\nJim Wallis: 'The witness of Eberhard Arnold is a much needed corrective to an American church that has lost the vital, biblical connection between belief and obedience.'\n\nRonald J. Sider: 'A prophetic voice: the contemporary church needs to wrestle with Eberhard Arnold.'\n\nJuli Loesch Wiley, New Oxford Review: 'The undeniable power of Arnold's writing owes to the fact that there is absolutely no difference between what he professed to believe and the way he lived. It gives to his words a resonance and depth, a right to be heard. For plainspoken words and the unsettling challenge of a life lived faithfully, we can all be grateful for his witness.'\n\nThich Nhat Hanh: 'Eberhard Arnold's life is an example of the most precious gift we can offer others: our presence. His is a testimony that in community the Spirit, which can be found in all traditions, can enlighten us as to the real causes for social justice.'\n\n\n__Historical Overview__\n*First Bruderhof Community was founded near Sannerz (Hessen), Germany in 1920.\n*Eberhard Arnold, his wife Emmy, and her sister Else von Hollander were the first members.\n*People joining from Austria, Sweden, Switzerland, and the United Kingdom until 1930.\n*1938 forced by //Gestapo// to leave the country within 48 hours. \n*Moving to Ashton Keynes (Cotswolds) in Great Britain.\n*Over fivehundred people from Great Britain joined the Community.\n*The entire Community moves to Paraguay in 1941.\n*In the 1950’s, several communities were founded in the northeast United States and in Germany.
/***\n''Export Tiddlers Plugin for TiddlyWiki version 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#ExportTiddlersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nWhen many people edit copies of the same TiddlyWiki document, the ability to easily copy and share these changes so they can then be redistributed to the entire group is very important. This ability is also very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\nExportTiddlersPlugin let you ''select and extract tiddlers from your ~TiddlyWiki documents and save them to a local file'' or a remote server (requires installation of compatible server-side scripting, still under development...). An interactive control panel lets you specify a destination, and then select which tiddlers to export. A convenient 'selection filter' helps you pick desired tiddlers by specifying a combination of modification dates, tags, or tiddler text to be matched or excluded. ''Tiddler data can be output as ~TiddlyWiki "storeArea ~DIVs" that can be imported into another ~TiddlyWiki or as ~RSS-compatible XML that can be published for RSS syndication.''\n\n!!!!!Inline interface (live)\n<<<\n<<exportTiddlers inline>>\n<<<\n!!!!!Usage\n<<<\nOptional "special tiddlers" used by this plugin:\n* SiteUrl^^\nURL for official server-published version of document being viewed\ndefault: //none//^^\n* SiteHost^^\nhost name/address for remote server (e.g., "www.server.com" or "192.168.1.27")\ndefault: //none//^^\n* SitePost^^\nremote path/filename for submitting changes (e.g., "/cgi-bin/submit.cgi")\ndefault: //none//^^\n* SiteParams^^\narguments (if any) for server-side receiving script\ndefault: //none//^^\n* SiteID^^\nusername or other authorization identifier for login-controlled access to remote server\ndefault: current TiddlyWiki username (e.g., "YourName")^^\n* SiteDate^^\nstored date/time stamp for most recent published version of document\ndefault: current document.modified value (i.e., the 'file date')^^\n<<<\n!!!!!Example\n<<<\n<<exportTiddlers>>\n<<<\n!!!!!Installation\n<<<\nImport (or copy/paste) the following tiddlers into your document:\n''ExportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < exportTiddlers > >" macro^^\n<<<\n!!!!!Revision History\n<<<\n''2006.02.12 [2.1.2]''^^\nadded var to unintended global 'tags' in matchTags(). Avoids FF1501 bug when filtering by tags. (based on report by TedPavlic)\n''2006.02.04 [2.1.1]''^^\nadded var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables\n''2006.02.02 [2.1.0]''^^\nAdded support for output of complete TiddlyWiki documents. Let's you use ExportTiddlers to generate 'starter' documents from selected tiddlers.^^\n''2006.01.21 [2.0.1]''^^\nDefer initial panel creation and only register a notification function when panel first is created\nin saveChanges 'hijack', create panel as needed. Note: if window.event is not available to identify the click location, the export panel is positioned relative to the 'tiddlerDisplay' element of the TW document.\n^^\n''2005.12.27 [2.0.0]''^^\nUpdate for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n^^\n''2005.12.24 [0.9.5]''^^\nMinor adjustments to CSS to force correct link colors regardless of TW stylesheet selection\n^^\n''2005.12.16 [0.9.4]''^^\nDynamically create/remove exportPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.\n^^\n''2005.11.15 [0.9.2]''^^\nadded non-Ajax post function to bypass javascript security restrictions on cross-domain I/O. Moved AJAX functions to separate tiddler (no longer needed here). Generalized HTTP server to support UnaWiki servers\n^^\n+++[previous releases...]\n''2005.11.08 [0.9.1]''^^\nmoved HTML, CSS and control initialization into exportInit() function and call from macro handler instead of at load time. This allows exportPanel to be placed within the same containing element as the "export tiddlers" button, so that relative positioning can be achieved.\n^^\n''2005.10.28 [0.9.0]''^^\nadded 'select opened tiddlers' feature\nBased on a suggestion by Geoff Slocock\n^^\n''2005.10.24 [0.8.3]''^^\nCorrected hijack of 'save changes' when using http:\n^^\n''2005.10.18 [0.8.2]''^^\nadded AJAX functions\n^^\n''2005.10.18 [0.8.1]''^^\nCorrected timezone handling when filtering for date ranges.\nImproved error checking/reporting for invalid filter values and filters that don't match any tiddlers.\nExporting localfile-to-localfile is working for IE and FF\nExporting server-to-localfile works in IE (after ActiveX warnings), but has security issues in FF\nCross-domain exporting (localfile/server-to-server) is under development\nCookies to remember filter settings - coming soon\nMore style tweaks, minor text changes and some assorted layout cleanup.\n^^\n''2005.10.17 [0.8.0]''^^\nFirst pre-release.\n^^\n''2005.10.16 [0.7.0]''^^\nfilter by tags\n^^\n''2005.10.15 [0.6.0]''^^\nfilter by title/text\n^^\n''2005.10.14 [0.5.0]''^^\nexport to local file (DIV or XML)\n^^\n''2005.10.14 [0.4.0]''^^\nfilter by start/end date\n^^\n''2005.10.13 [0.3.0]''^^\npanel interaction\n^^\n''2005.10.11 [0.2.0]''^^\npanel layout\n^^\n''2005.10.10 [0.1.0]''^^\ncode framework\n^^\n''2005.10.09 [0.0.0]''^^\ndevelopment started\n^^\n===\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n// // +++[version]\n//{{{\nversion.extensions.exportTiddlers = {major: 2, minor: 1, revision: 2, date: new Date(2006,2,12)};\n//}}}\n// //===\n\n// // +++[macro handler]\n//{{{\nconfig.macros.exportTiddlers = {\n label: "export tiddlers",\n prompt: "Copy selected tiddlers to an export document",\n datetimefmt: "0MM/0DD/YYYY 0hh:0mm:0ss" // for "filter date/time" edit fields\n};\n\nconfig.macros.exportTiddlers.handler = function(place,macroName,params) {\n if (params[0]!="inline")\n { createTiddlyButton(place,this.label,this.prompt,onClickExportMenu); return; }\n var panel=createExportPanel(place);\n panel.style.position="static";\n panel.style.display="block";\n}\n\nfunction createExportPanel(place) {\n var panel=document.getElementById("exportPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.exportTiddlers.css,"exportTiddlers");\n panel=createTiddlyElement(place,"span","exportPanel",null,null)\n panel.innerHTML=config.macros.exportTiddlers.html;\n exportShowPanel(document.location.protocol);\n exportInitFilter();\n refreshExportList(0);\n store.addNotification(null,refreshExportList); // refresh listbox after every tiddler change\n return panel;\n}\n\nfunction onClickExportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("exportPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createExportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n// //===\n\n// // +++[Hijack saveChanges] diverts 'notFileUrlError' to display export control panel instead\n//{{{\nwindow.coreSaveChanges=window.saveChanges;\nwindow.saveChanges = function()\n{\n if (document.location.protocol=="file:") { coreSaveChanges(); return; }\n var e = window.event;\n var parent=e?resolveTarget(e).parentNode:document.body;\n var panel = document.getElementById("exportPanel");\n if (panel==undefined || panel.parentNode!=parent) panel=createExportPanel(parent);\n exportShowPanel(document.location.protocol);\n if (parent==document.body) { panel.style.left="30%"; panel.style.top="30%"; }\n panel.style.display = "block" ;\n}\n//}}}\n// //===\n\n// // +++[IE needs explicit scoping] for functions called by browser events\n//{{{\nwindow.onClickExportMenu=onClickExportMenu;\nwindow.onClickExportButton=onClickExportButton;\nwindow.exportShowPanel=exportShowPanel;\nwindow.exportShowFilterFields=exportShowFilterFields;\nwindow.refreshExportList=refreshExportList;\n//}}}\n// //===\n\n// // +++[CSS] for floating export control panel\n//{{{\nconfig.macros.exportTiddlers.css = '\s\n#exportPanel {\s\n display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em;\s\n}\s\n#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\s\n#exportPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\s\n#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\s\n#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\s\n#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\s\n#exportPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#exportPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\s\n#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\s\n#exportPanel .rad { width:auto; }\s\n#exportPanel .chk { width:auto; }\s\n#exportPanel .btn { width:auto; }\s\n#exportPanel .btn1 { width:98%; }\s\n#exportPanel .btn2 { width:48%; }\s\n#exportPanel .btn3 { width:32%; }\s\n#exportPanel .btn4 { width:24%; }\s\n#exportPanel .btn5 { width:19%; }\s\n';\n//}}}\n// //===\n\n// // +++[HTML] for export control panel interface\n//{{{\nconfig.macros.exportTiddlers.html = '\s\n<!-- output target and format -->\s\n<table cellpadding="0" cellspacing="0"><tr><td width=50%>\s\n export to\s\n <select size=1 id="exportTo" onchange="exportShowPanel(this.value);">\s\n <option value="file:" SELECTED>this computer</option>\s\n <option value="http:">web server (http)</option>\s\n <option value="https:">secure web server (https)</option>\s\n <option value="ftp:">file server (ftp)</option>\s\n </select>\s\n</td><td width=50%>\s\n output format\s\n <select id="exportFormat" size=1>\s\n <option value="DIV">TiddlyWiki export file</option>\s\n <option value="TW">TiddlyWiki document</option>\s\n <option value="XML">RSS feed (XML)</option>\s\n </select>\s\n</td></tr></table>\s\n\s\n<!-- export to local file -->\s\n<div id="exportLocalPanel" style="margin-bottom:5px;margin-top:5px;">\s\nlocal path/filename<br>\s\n<input type="file" id="exportFilename" size=56 style="width:100%"><br>\s\n</div><!--panel-->\s\n\s\n<!-- export to http server -->\s\n<div id="exportHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;">\s\ndocument URL<br>\s\n<input type="text" id="exportHTTPSiteURL" onfocus="this.select()"><br>\s\nserver script / parameters<br>\s\n<input type="text" id="exportHTTPServerURL" onfocus="this.select()"><br>\s\n</div><!--panel-->\s\n\s\n<!-- export to ftp server -->\s\n<div id="exportFTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;">\s\n<table cellpadding="0" cellspacing="0" width="33%"><tr valign="top"><td>\s\n host server<br>\s\n <input type="text" id="exportFTPHost" onfocus="this.select()"><br>\s\n</td><td width="33%">\s\n username<br>\s\n <input type="text" id="exportFTPID" onfocus="this.select()"><br>\s\n</td><td width="33%">\s\n password<br>\s\n <input type="password" id="exportFTPPW" onfocus="this.select()"><br>\s\n</td></tr></table>\s\nFTP path/filename<br>\s\n<input type="text" id="exportFTPFilename" onfocus="this.select()"><br>\s\n</div><!--panel-->\s\n\s\n<!-- list of tiddlers -->\s\n<table><tr align="left"><td>\s\n select:\s\n <a href="JavaScript:;" id="exportSelectAll"\s\n onclick="onClickExportButton(this)" title="select all tiddlers">\s\n &nbsp;all&nbsp;</a>\s\n <a href="JavaScript:;" id="exportSelectChanges"\s\n onclick="onClickExportButton(this)" title="select tiddlers changed since last save">\s\n &nbsp;changes&nbsp;</a> \s\n <a href="JavaScript:;" id="exportSelectOpened"\s\n onclick="onClickExportButton(this)" title="select tiddlers currently being displayed">\s\n &nbsp;opened&nbsp;</a> \s\n <a href="JavaScript:;" id="exportToggleFilter"\s\n onclick="onClickExportButton(this)" title="show/hide selection filter">\s\n &nbsp;filter&nbsp;</a> \s\n</td><td align="right">\s\n <a href="JavaScript:;" id="exportListSmaller"\s\n onclick="onClickExportButton(this)" title="reduce list size">\s\n &nbsp;&#150;&nbsp;</a>\s\n <a href="JavaScript:;" id="exportListLarger"\s\n onclick="onClickExportButton(this)" title="increase list size">\s\n &nbsp;+&nbsp;</a>\s\n</td></tr></table>\s\n<select id="exportList" multiple size="10" style="margin-bottom:5px;"\s\n onchange="refreshExportList(this.selectedIndex)">\s\n</select><br>\s\n\s\n<!-- selection filter -->\s\n<div id="exportFilterPanel" style="display:none">\s\n<table><tr align="left"><td>\s\n selection filter\s\n</td><td align="right">\s\n <a href="JavaScript:;" id="exportHideFilter"\s\n onclick="onClickExportButton(this)" title="hide selection filter">hide</a>\s\n</td></tr></table>\s\n<div class="box">\s\n<input type="checkbox" class="chk" id="exportFilterStart" value="1"\s\n onclick="exportShowFilterFields(this)"> starting date/time<br>\s\n<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\s\n <select size=1 id="exportFilterStartBy" onchange="exportShowFilterFields(this);">\s\n <option value="0">today</option>\s\n <option value="1">yesterday</option>\s\n <option value="7">a week ago</option>\s\n <option value="30">a month ago</option>\s\n <option value="site">SiteDate</option>\s\n <option value="file">file date</option>\s\n <option value="other">other (mm/dd/yyyy hh:mm)</option>\s\n </select>\s\n</td><td width="50%">\s\n <input type="text" id="exportStartDate" onfocus="this.select()"\s\n onchange="document.getElementById(\s'exportFilterStartBy\s').value=\s'other\s';">\s\n</td></tr></table>\s\n<input type="checkbox" class="chk" id="exportFilterEnd" value="1"\s\n onclick="exportShowFilterFields(this)"> ending date/time<br>\s\n<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\s\n <select size=1 id="exportFilterEndBy" onchange="exportShowFilterFields(this);">\s\n <option value="0">today</option>\s\n <option value="1">yesterday</option>\s\n <option value="7">a week ago</option>\s\n <option value="30">a month ago</option>\s\n <option value="site">SiteDate</option>\s\n <option value="file">file date</option>\s\n <option value="other">other (mm/dd/yyyy hh:mm)</option>\s\n </select>\s\n</td><td width="50%">\s\n <input type="text" id="exportEndDate" onfocus="this.select()"\s\n onchange="document.getElementById(\s'exportFilterEndBy\s').value=\s'other\s';">\s\n</td></tr></table>\s\n<input type="checkbox" class="chk" id=exportFilterTags value="1"\s\n onclick="exportShowFilterFields(this)"> match tags<br>\s\n<input type="text" id="exportTags" onfocus="this.select()">\s\n<input type="checkbox" class="chk" id=exportFilterText value="1"\s\n onclick="exportShowFilterFields(this)"> match titles/tiddler text<br>\s\n<input type="text" id="exportText" onfocus="this.select()">\s\n</div> <!--box-->\s\n</div> <!--panel-->\s\n\s\n<!-- action buttons -->\s\n<div style="text-align:center">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportFilter" value="apply filter">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportStart" value="export tiddlers">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportClose" value="close">\s\n</div><!--center-->\s\n';\n//}}}\n// //===\n\n// // +++[initialize interface]>\n// // +++[exportShowPanel(which)]\n//{{{\nfunction exportShowPanel(which) {\n var index=0; var panel='exportLocalPanel';\n switch (which) {\n case 'file:':\n case undefined:\n index=0; panel='exportLocalPanel'; break;\n case 'http:':\n index=1; panel='exportHTTPPanel'; break;\n case 'https:':\n index=2; panel='exportHTTPPanel'; break;\n case 'ftp:':\n index=3; panel='exportFTPPanel'; break;\n default:\n alert("Sorry, export to "+which+" is not yet available");\n break;\n }\n exportInitPanel(which);\n document.getElementById('exportTo').selectedIndex=index;\n document.getElementById('exportLocalPanel').style.display='none';\n document.getElementById('exportHTTPPanel').style.display='none';\n document.getElementById('exportFTPPanel').style.display='none';\n document.getElementById(panel).style.display='block';\n}\n//}}}\n// //===\n\n// // +++[exportInitPanel(which)]\n//{{{\nfunction exportInitPanel(which) {\n switch (which) {\n case "file:": // LOCAL EXPORT PANEL: file/path:\n // ** no init - security issues in IE **\n break;\n case "http:": // WEB EXPORT PANEL\n case "https:": // SECURE WEB EXPORT PANEL\n // url\n var siteURL=store.getTiddlerText("SiteUrl");\n if (store.tiddlerExists("unawiki_download")) {\n var theURL=store.getTiddlerText("unawiki_download");\n theURL=theURL.replace(/\s[\s[download\s|/,'').replace(/\s]\s]/,'');\n var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";\n var theHost=store.getTiddlerText(title);\n if (!theHost || !theHost.length) theHost=document.location.host;\n if (!theHost || !theHost.length) theHost=title;\n siteURL=which+"//"+theHost+theURL\n }\n if (!siteURL) siteURL="SiteUrl";\n document.getElementById("exportHTTPSiteURL").value=siteURL;;\n // server script/params\n var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";\n var theHost=store.getTiddlerText(title);\n if (!theHost || !theHost.length) theHost=document.location.host;\n if (!theHost || !theHost.length) theHost=title;\n // get POST\n var title=(store.tiddlerExists("unawiki_post"))?"unawiki_post":"SitePost";\n var thePost=store.getTiddlerText(title);\n if (!thePost || !thePost.length) thePost="/"+title;\n // get PARAMS\n var title=(store.tiddlerExists("unawiki_params"))?"unawiki_params":"SiteParams";\n var theParams=store.getTiddlerText(title);\n if (!theParams|| !theParams.length) theParams=title;\n var serverURL = which+"//"+theHost+thePost+"?"+theParams;\n document.getElementById("exportHTTPServerURL").value=serverURL;\n break;\n case "ftp:": // FTP EXPORT PANEL\n // host\n var siteHost=store.getTiddlerText("SiteHost");\n if (!siteHost || !siteHost.length) siteHost=document.location.host;\n if (!siteHost || !siteHost.length) siteHost="SiteHost";\n document.getElementById("exportFTPHost").value=siteHost;\n // username\n var siteID=store.getTiddlerText("SiteID");\n if (!siteID || !siteID.length) siteID=config.options.txtUserName;\n document.getElementById("exportFTPID").value=siteID;\n // password\n document.getElementById("exportFTPPW").value="";\n // file/path\n document.getElementById("exportFTPFilename").value="";\n break;\n }\n}\n//}}}\n// //===\n\n// // +++[exportInitFilter()]\n//{{{\nfunction exportInitFilter() {\n // TBD: persistent settings via local cookies\n // start date\n document.getElementById("exportFilterStart").checked=false;\n document.getElementById("exportStartDate").value="";\n // end date\n document.getElementById("exportFilterEnd").checked=false;\n document.getElementById("exportEndDate").value="";\n // tags\n document.getElementById("exportFilterTags").checked=false;\n document.getElementById("exportTags").value="not excludeExport";\n // text\n document.getElementById("exportFilterText").checked=false;\n document.getElementById("exportText").value="";\n // show/hide filter input fields\n exportShowFilterFields();\n}\n//}}}\n// //===\n\n// // +++[exportShowFilterFields(which)]\n//{{{\nfunction exportShowFilterFields(which) {\n var show;\n\n show=document.getElementById('exportFilterStart').checked;\n document.getElementById('exportFilterStartBy').style.display=show?"block":"none";\n document.getElementById('exportStartDate').style.display=show?"block":"none";\n var val=document.getElementById('exportFilterStartBy').value;\n document.getElementById('exportStartDate').value\n =getFilterDate(val,'exportStartDate').formatString(config.macros.exportTiddlers.datetimefmt);\n if (which && (which.id=='exportFilterStartBy') && (val=='other'))\n document.getElementById('exportStartDate').focus();\n\n show=document.getElementById('exportFilterEnd').checked;\n document.getElementById('exportFilterEndBy').style.display=show?"block":"none";\n document.getElementById('exportEndDate').style.display=show?"block":"none";\n var val=document.getElementById('exportFilterEndBy').value;\n document.getElementById('exportEndDate').value\n =getFilterDate(val,'exportEndDate').formatString(config.macros.exportTiddlers.datetimefmt);\n if (which && (which.id=='exportFilterEndBy') && (val=='other'))\n document.getElementById('exportEndDate').focus();\n\n show=document.getElementById('exportFilterTags').checked;\n document.getElementById('exportTags').style.display=show?"block":"none";\n\n show=document.getElementById('exportFilterText').checked;\n document.getElementById('exportText').style.display=show?"block":"none";\n}\n//}}}\n// //===\n// //===\n\n// // +++[onClickExportButton(which): control interactions]\n//{{{\nfunction onClickExportButton(which)\n{\n // DEBUG alert(which.id);\n var theList=document.getElementById('exportList'); if (!theList) return;\n var count = 0;\n var total = store.getTiddlers('title').length;\n switch (which.id)\n {\n case 'exportFilter':\n count=filterExportList();\n var panel=document.getElementById('exportFilterPanel');\n if (count==-1) { panel.style.display='block'; break; }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage("filtered "+theList.options[0].text);\n if (count==0) { alert("No tiddlers were selected"); panel.style.display='block'; }\n break;\n case 'exportStart':\n exportTiddlers();\n break;\n case 'exportHideFilter':\n case 'exportToggleFilter':\n var panel=document.getElementById('exportFilterPanel')\n panel.style.display=(panel.style.display=='block')?'none':'block';\n break;\n case 'exportSelectChanges':\n var lastmod=new Date(document.lastModified);\n for (var t = 0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;\n theList.options[t].selected=(tiddler.modified>lastmod);\n count += (tiddler.modified>lastmod)?1:0;\n }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n if (count==0) alert("There are no unsaved changes");\n break;\n case 'exportSelectAll':\n for (var t = 0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count += 1;\n }\n theList.options[0].text=formatExportListHeader(count,count);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n break;\n case 'exportSelectOpened':\n for (var t = 0; t < theList.options.length; t++) theList.options[t].selected=false;\n var tiddlerDisplay = document.getElementById("tiddlerDisplay");\n for (var t=0;t<tiddlerDisplay.childNodes.length;t++) {\n var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);\n for (var i = 0; i < theList.options.length; i++) {\n if (theList.options[i].value!=tiddler) continue;\n theList.options[i].selected=true; count++; break;\n }\n }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n if (count==0) alert("There are no tiddlers currently opened");\n break;\n case 'exportListSmaller': // decrease current listbox size\n var min=5;\n theList.size-=(theList.size>min)?1:0;\n break;\n case 'exportListLarger': // increase current listbox size\n var max=(theList.options.length>25)?theList.options.length:25;\n theList.size+=(theList.size<max)?1:0;\n break;\n case 'exportClose':\n document.getElementById('exportPanel').style.display='none';\n break;\n }\n}\n//}}}\n// //===\n\n// // +++[list display]\n//{{{\nfunction formatExportListHeader(count,total)\n{\n var txt=total+' tiddler'+((total!=1)?'s':'')+" - ";\n txt += (count==0)?"none":(count==total)?"all":count;\n txt += " selected for export";\n return txt;\n}\n\nfunction refreshExportList(selectedIndex)\n{\n var theList = document.getElementById("exportList");\n var sort;\n if (!theList) return;\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) sort='modified';\n if (selectedIndex==1) sort='title';\n if (selectedIndex==2) sort='modified';\n if (selectedIndex==3) sort='modifier';\n\n // get the alphasorted list of tiddlers\n var tiddlers = store.getTiddlers('title');\n // unselect headings and count number of tiddlers actually selected\n var count=0;\n for (var i=0; i<theList.options.length; i++) {\n if (theList.options[i].value=="") theList.options[i].selected=false;\n count+=theList.options[i].selected?1:0;\n }\n // disable "export" button if no tiddlers selected\n document.getElementById("exportStart").disabled=(count==0);\n // update listbox heading to show selection count\n if (theList.options.length)\n theList.options[0].text=formatExportListHeader(count,tiddlers.length);\n\n // if a [command] item, reload list... otherwise, no further refresh needed\n if (selectedIndex>3) return;\n\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=\n new Option(formatExportListHeader(0,tiddlers.length), "",false,false);\n theList.options[i++]=\n new Option(((sort=="title" )?">":indent)+' [by title]', "",false,false);\n theList.options[i++]=\n new Option(((sort=="modified")?">":indent)+' [by date]', "",false,false);\n theList.options[i++]=\n new Option(((sort=="modifier")?">":indent)+' [by author]', "",false,false);\n // output the tiddler list\n switch(sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modifier":\n case "modified":\n var tiddlers = store.getTiddlers(sort);\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++)\n {\n var tiddler = tiddlers[t];\n var theSection = "";\n if (sort=="modified") theSection=tiddler.modified.toLocaleDateString();\n if (sort=="modifier") theSection=tiddler.modifier;\n if (theSection != lastSection)\n {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n}\n//}}}\n// //===\n\n// // +++[list filtering]\n//{{{\nfunction getFilterDate(val,id)\n{\n var result=0;\n switch (val) {\n case 'site':\n var timestamp=store.getTiddlerText("SiteDate");\n if (!timestamp) timestamp=document.lastModified;\n result=new Date(timestamp);\n break;\n case 'file':\n result=new Date(document.lastModified);\n break;\n case 'other':\n result=new Date(document.getElementById(id).value);\n break;\n default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31\n var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;\n var oneday=86400000;\n if (id=='exportStartDate')\n result=new Date((Math.floor(now/oneday)-val)*oneday+tz);\n else\n result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);\n break;\n }\n // DEBUG alert('getFilterDate('+val+','+id+')=='+result+"\snnow="+now);\n return result;\n}\n\nfunction filterExportList()\n{\n var theList = document.getElementById("exportList"); if (!theList) return -1;\n\n var filterStart=document.getElementById("exportFilterStart").checked;\n var val=document.getElementById("exportFilterStartBy").value;\n var startDate=getFilterDate(val,'exportStartDate');\n\n var filterEnd=document.getElementById("exportFilterEnd").checked;\n var val=document.getElementById("exportFilterEndBy").value;\n var endDate=getFilterDate(val,'exportEndDate');\n\n var filterTags=document.getElementById("exportFilterTags").checked;\n var tags=document.getElementById("exportTags").value;\n\n var filterText=document.getElementById("exportFilterText").checked;\n var text=document.getElementById("exportText").value;\n\n if (!(filterStart||filterEnd||filterTags||filterText)) {\n alert("Please set the selection filter");\n document.getElementById('exportFilterPanel').style.display="block";\n return -1;\n }\n if (filterStart&&filterEnd&&(startDate>endDate)) {\n var msg="starting date/time:\sn"\n msg+=startDate.toLocaleString()+"\sn";\n msg+="is later than ending date/time:\sn"\n msg+=endDate.toLocaleString()\n alert(msg);\n return -1;\n }\n\n // scan list and select tiddlers that match all applicable criteria\n var total=0;\n var count=0;\n for (var i=0; i<theList.options.length; i++) {\n // get item, skip non-tiddler list items (section headings)\n var opt=theList.options[i]; if (opt.value=="") continue;\n // get tiddler, skip missing tiddlers (this should NOT happen)\n var tiddler=store.getTiddler(opt.value); if (!tiddler) continue; \n var sel=true;\n if ( (filterStart && tiddler.modified<startDate)\n || (filterEnd && tiddler.modified>endDate)\n || (filterTags && !matchTags(tiddler,tags))\n || (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))\n sel=false;\n opt.selected=sel;\n count+=sel?1:0;\n total++;\n }\n return count;\n}\n//}}}\n\n//{{{\nfunction matchTags(tiddler,cond)\n{\n if (!cond||!cond.trim().length) return false;\n\n // build a regex of all tags as a big-old regex that \n // OR's the tags together (tag1|tag2|tag3...) in length order\n var tgs = store.getTags();\n if ( tgs.length == 0 ) return results ;\n var tags = tgs.sort( function(a,b){return (a[0].length<b[0].length)-(a[0].length>b[0].length);});\n var exp = "(" + tags.join("|") + ")" ;\n exp = exp.replace( /(,[\sd]+)/g, "" ) ;\n var regex = new RegExp( exp, "ig" );\n\n // build a string such that an expression that looks like this: tag1 AND tag2 OR NOT tag3\n // turns into : /tag1/.test(...) && /tag2/.test(...) || ! /tag2/.test(...)\n cond = cond.replace( regex, "/$1\s\s|/.test(tiddlerTags)" );\n cond = cond.replace( /\ssand\ss/ig, " && " ) ;\n cond = cond.replace( /\ssor\ss/ig, " || " ) ;\n cond = cond.replace( /\ss?not\ss/ig, " ! " ) ;\n\n // if a boolean uses a tag that doesn't exist - it will get left alone \n // (we only turn existing tags into actual tests).\n // replace anything that wasn't found as a tag, AND, OR, or NOT with the string "false"\n // if the tag doesn't exist then /tag/.test(...) will always return false.\n cond = cond.replace( /(\ss|^)+[^\s/\s|&!][^\ss]*/g, "false" ) ;\n\n // make a string of the tags in the tiddler and eval the 'cond' string against that string \n // if it's TRUE then the tiddler qualifies!\n var tiddlerTags = (tiddler.tags?tiddler.tags.join("|"):"")+"|" ;\n try { if ( eval( cond ) ) return true; }\n catch( e ) { displayMessage("Error in tag filter '" + e + "'" ); }\n return false;\n}\n//}}}\n// //===\n\n// // +++[output data formatting]>\n// // +++[exportHeader(format)]\n//{{{\nfunction exportHeader(format)\n{\n switch (format) {\n case "TW": return exportTWHeader();\n case "DIV": return exportDIVHeader();\n case "XML": return exportXMLHeader();\n }\n}\n//}}}\n// //===\n\n// // +++[exportFooter(format)]\n//{{{\nfunction exportFooter(format)\n{\n switch (format) {\n case "TW": return exportDIVFooter();\n case "DIV": return exportDIVFooter();\n case "XML": return exportXMLFooter();\n }\n}\n//}}}\n// //===\n\n// // +++[exportTWHeader()]\n//{{{\nfunction exportTWHeader()\n{\n // Get the URL of the document\n var originalPath = document.location.toString();\n // Check we were loaded from a file URL\n if(originalPath.substr(0,5) != "file:")\n { alert(config.messages.notFileUrlError); return; }\n // Remove any location part of the URL\n var hashPos = originalPath.indexOf("#"); if(hashPos != -1) 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 // Load the original file\n var original = loadFile(localPath);\n if(original == null)\n { alert(config.messages.cantSaveError); return; }\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n { alert(config.messages.invalidFileError.format([localPath])); return; }\n return original.substr(0,posOpeningDiv+startSaveArea.length)\n}\n//}}}\n// //===\n\n// // +++[exportDIVHeader()]\n//{{{\nfunction exportDIVHeader()\n{\n var out=[];\n var now = new Date();\n var u = store.getTiddlerText("SiteUrl",null);\n var title = wikifyPlain("SiteTitle").htmlEncode();\n var subtitle = wikifyPlain("SiteSubtitle").htmlEncode();\n var user = config.options.txtUserName.htmlEncode();\n var twver = version.major+"."+version.minor+"."+version.revision;\n var pver = version.extensions.exportTiddlers.major+"."\n +version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;\n out.push("<html><body>");\n out.push("<style type=\s"text/css\s">");\n out.push("#storeArea {display:block;margin:1em;}");\n out.push("#storeArea div");\n out.push("{padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}");\n out.push("#javascriptWarning");\n out.push("{width:100%;text-align:left;background-color:#eeeeee;padding:1em;}");\n out.push("</style>");\n out.push("<div id=\s"javascriptWarning\s">");\n out.push("TiddlyWiki export file<br>");\n out.push("Source: <b>"+document.location+"</b><br>");\n out.push("Title: <b>"+title+"</b><br>");\n out.push("Subtitle: <b>"+subtitle+"</b><br>");\n out.push("Created: <b>"+now.toLocaleString()+"</b> by <b>"+user+"</b><br>");\n out.push("TiddlyWiki "+twver+" / "+"ExportTiddlersPlugin "+pver+"<br>");\n out.push("</div>");\n out.push("<div id=\s"storeArea\s">");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportDIVFooter()]\n//{{{\nfunction exportDIVFooter()\n{\n var out=[];\n out.push("</div></body></html>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportXMLHeader()]\n//{{{\nfunction exportXMLHeader()\n{\n var out=[];\n var now = new Date();\n var u = store.getTiddlerText("SiteUrl",null);\n var title = wikifyPlain("SiteTitle").htmlEncode();\n var subtitle = wikifyPlain("SiteSubtitle").htmlEncode();\n var user = config.options.txtUserName.htmlEncode();\n var twver = version.major+"."+version.minor+"."+version.revision;\n var pver = version.extensions.exportTiddlers.major+"."\n +version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;\n out.push("<" + "?xml version=\s"1.0\s"?" + ">");\n out.push("<rss version=\s"2.0\s">");\n out.push("<channel>");\n out.push("<title>" + title + "</title>");\n if(u) out.push("<link>" + u.htmlEncode() + "</link>");\n out.push("<description>" + subtitle + "</description>");\n out.push("<language>en-us</language>");\n out.push("<copyright>Copyright " + now.getFullYear() + " " + user + "</copyright>");\n out.push("<pubDate>" + now.toGMTString() + "</pubDate>");\n out.push("<lastBuildDate>" + now.toGMTString() + "</lastBuildDate>");\n out.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");\n out.push("<generator>TiddlyWiki "+twver+" plus ExportTiddlersPlugin "+pver+"</generator>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportXMLFooter()]\n//{{{\nfunction exportXMLFooter()\n{\n var out=[];\n out.push("</channel></rss>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportData()]\n//{{{\nfunction exportData(theList,theFormat)\n{\n // scan export listbox and collect DIVs or XML for selected tiddler content\n var out=[];\n for (var i=0; i<theList.options.length; i++) {\n // get item, skip non-selected items and section headings\n var opt=theList.options[i]; if (!opt.selected||(opt.value=="")) continue;\n // get tiddler, skip missing tiddlers (this should NOT happen)\n var thisTiddler=store.getTiddler(opt.value); if (!thisTiddler) continue; \n if (theFormat=="TW") out.push(thisTiddler.saveToDiv());\n if (theFormat=="DIV") out.push(thisTiddler.title+"\sn"+thisTiddler.saveToDiv());\n if (theFormat=="XML") out.push(thisTiddler.saveToRss());\n }\n return out;\n}\n//}}}\n// //===\n// //===\n\n// // +++[exportTiddlers(): output selected data to local or server]\n//{{{\nfunction exportTiddlers()\n{\n var theList = document.getElementById("exportList"); if (!theList) return;\n\n // get the export settings\n var theProtocol = document.getElementById("exportTo").value;\n var theFormat = document.getElementById("exportFormat").value;\n\n // assemble output: header + tiddlers + footer\n var theData=exportData(theList,theFormat);\n var count=theData.length;\n var out=[]; var txt=out.concat(exportHeader(theFormat),theData,exportFooter(theFormat)).join("\sn");\n var msg="";\n switch (theProtocol) {\n case "file:":\n var theTarget = document.getElementById("exportFilename").value.trim();\n if (!theTarget.length) msg = "A local path/filename is required\sn";\n if (!msg && saveFile(theTarget,txt))\n msg=count+" tiddler"+((count!=1)?"s":"")+" exported to local file";\n else if (!msg)\n msg+="An error occurred while saving to "+theTarget;\n break;\n case "http:":\n case "https:":\n var theTarget = document.getElementById("exportHTTPServerURL").value.trim();\n if (!theTarget.length) msg = "A server URL is required\sn";\n if (!msg && exportPost(theTarget+encodeURIComponent(txt)))\n msg=count+" tiddler"+((count!=1)?"s":"")+" exported to "+theProtocol+" server";\n else if (!msg)\n msg+="An error occurred while saving to "+theTarget;\n break;\n case "ftp:":\n default:\n msg="Sorry, export to "+theLocation+" is not yet available";\n break;\n }\n clearMessage(); displayMessage(msg,theTarget);\n}\n//}}}\n// //===\n\n// // +++[exportPost(url): cross-domain post] uses hidden iframe to submit url and capture responses\n//{{{\nfunction exportPost(url)\n{\n var f=document.getElementById("exportFrame"); if (f) document.body.removeChild(f);\n f=document.createElement("iframe"); f.id="exportFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n d.location.replace(url);\n return true;\n}\n//}}}\n// //===\n
[img[http://tbn0.google.com/images?q=tbn:xq6fNfPG3Ft1BM:http://images.quizilla.com/B/blightgrrl/1068267867_llaoconnor.gif]]\n[[Zina Kirko - Summary on Flannery O'Connor's "The Artificial Nigger" (4/30/2007)]]
[img[http://tbn0.google.com/images?q=tbn:N4dofKVZFOjtSM:http://www.travel.it/relig/saints/franc3.jpg]]\n(1181 – 1226)\n\n[[wiki|http://en.wikipedia.org/wiki/Francis_of_Assisi]]
+++(gtdProjectsSliderState)[Projects]<<tiddler ProjectList>>===\n+++(gtdActionsSliderState)[Actions]<<list tagged context>>===\n+++(gtdReviewSliderState)[Review]\n*[[Summary Review]]\n*[[Project Review]]\n*[[Action Review]]\n*[[Reminders]]\n===\n\n<<newerTiddler button:"Create new project" name:"NewProject" tags:"project" template:"NewProjectTemplate">> <<newerTiddler button:"Create new context" name:"NewContext" tags:"context" template:"NewContextTemplate">> <<newerTiddler button:"Create new action" name:"NewAction" tags:"action" template:"NewActionTemplate">>\n[[Ticklers]] [[Reference]] [[Someday-Maybe]]\n+++[Calendar|Show a calendar]<<calendar thismonth>>===\n\n[[Configuration|Configuration Options]] [[Check for Updates|UpdateApplication]] [[Archives]]
/***\n|''Name:''|GTDPlugins|\n|''Description:''|Plugin to support Getting Things Done|\n|''Version:''|<<gtdVersion>>|\n|''Date:''|December 15, 2006|\n|''Source:''|http://www.dcubed.ca/|\n|''Author:''|Tom Otvos|\n|''~CoreVersion:''|2.0.11|\n|''Browser:''|Firefox 1.5+; InternetExplorer 6.0+|\n***/\n\n/***\n''Macros:''\n*{{{<<gtdAction "}}}//title//{{{" "}}}//context list//{{{">>}}}\n*{{{<<gtdActionList {"}}}//context list//{{{" | "*" | "@" {"all" | "noproject" | "projectonly"} }>>}}}\n** //if no parameters are specified, current context or project is used//\n** //specify "*" for actions across all projects, "@" for incomplete actions across all contexts (or "all" for all actions)//\n** //use "projectonly" or "noproject" to filter actions by project association//\n*{{{<<list tagged "}}}//tag list//{{{" {any | all}>>}}}\n** //if no parameters are specified, all tags are necessary//\n*{{{<<gtdActionCompleted>>}}}\n*{{{<<gtdToggleTag>>}}}\n*{{{<<gtdToggleState>>}}}\n*{{{<<importUpdates "}}}//url//{{{" {updates | all} "}}}//buttonTitle//{{{" "}}}//buttonHelp//{{{" "}}}//importTiddlers params...//{{{">>}}}\n*{{{<<gtdArchive { archive | unarchive | purge }>>}}}\n\n''Commands:''\n*{{{newAction}}}\n*{{{newProjectAction}}}\n*{{{changeContext}}}\n*{{{deleteAction}}}\n*{{{deleteContext}}}\n*{{{deleteProject}}}\n*{{{deleteProjectAll}}}\n*{{{projectify}}}\n\n''Wiki formatting:''\n*{{{..new action title|context}}}\n\n***/\n//{{{\n\nversion.extensions.GTDPlugins = {major: 1, minor: 1, revision: 0, patch: 0 };\n\nvar _GTD = {\n\n lazyAutoSave: 0,\n contextCache: null,\n usingProjectTags: true,\n\n initialize: function ()\n {\n var d = new Date();\n\n if (config.options.txtGTDReferenceContext == undefined) config.options.txtGTDReferenceContext = "reference";\n if (config.options.txtGTDSomedayContext == undefined) config.options.txtGTDSomedayContext = "someday";\n if (config.options.txtGTDUnfiledContext == undefined) config.options.txtGTDUnfiledContext = "unfiled";\n if (config.options.txtGTDActionAging == undefined) config.options.txtGTDActionAging = "";\n if (config.options.chkGTDFancyStyle == undefined) config.options.chkGTDFancyStyle = true;\n if (config.options.chkGTDLazyAutoSave == undefined) config.options.chkGTDLazyAutoSave = true;\n if (config.options.txtGTDLazyAutoSaveInterval == undefined) config.options.txtGTDLazyAutoSaveInterval = "60";\n \n // some tricks to work when our script is loaded from an external file...\n if (!store) config.notifyTiddlers.push( {name: "GTDStyleSheet", notify: refreshStyles} );\n if (!store && config.options.chkGTDFancyStyle) config.notifyTiddlers.push( {name: "GTDTWStyleSheet", notify: refreshStyles} );\n if (!store) config.notifyTiddlers.push( {name: null, notify: _GTD.refreshActionViews} );\n \n this.setReviewUpdate();\n this.setLazyAutoSave();\n \n if (!store) return;\n \n if ((version.major == 2 && version.minor < 1) || !store.tiddlerExists("d3 settings")) {\n // we force a changed() call on all projects, contexts, and actions, to enable them to set up their cross-references\n var tiddlers = [];\n tiddlers = tiddlers.concat(store.getTaggedTiddlers("project"), store.getTaggedTiddlers("context"), store.getTaggedTiddlers("action"));\n for (var i = 0; i < tiddlers.length; i++)\n tiddlers[i].changed();\n \n // if we have tiddler meta data, rebuild it\n if (version.major > 2 || version.minor > 0)\n this.rebuildMetaData();\n }\n else {\n this.initializeFromMetaData();\n this.usingProjectTags = false;\n }\n \n store.addNotification("GTDStyleSheet", refreshStyles);\n if (config.options.chkGTDFancyStyle) store.addNotification("GTDTWStyleSheet", refreshStyles);\n store.addNotification(null, _GTD.refreshActionViews);\n \n // force a display of release notes, if required\n var v = version.extensions.GTDPlugins;\n var releaseNotesTiddler = "About version " + v.major + '.' + v.minor + '.' + v.revision;\n if ((config.options.chkGTDReleaseNotes || config.options.chkGTDReleaseNotes == undefined) && store.tiddlerExists(releaseNotesTiddler)) {\n params = "open:\s"" + releaseNotesTiddler + "\s"";\n params = params.parseParams("open",null,false);\n config.options.chkGTDReleaseNotes = false;\n saveOptionCookie("chkGTDReleaseNotes");\n }\n\n if (version.major > 2 || version.minor > 0)\n pluginInfo.log.push('Initialized in ' + ((new Date()).getTime() - d.getTime()) + ' milliseconds');\n },\n \n rebuildMetaData: function()\n {\n pluginInfo.log.push('Rebuilding action metadata...');\n\n store.suspendNotifications();\n var tiddlers = store.getTaggedTiddlers("action");\n for (var i = 0; i < tiddlers.length; i++) {\n var t = tiddlers[i];\n store.setValue(t, "gtd");\n store.setValue(t, "gtd.context", t.gtdContextName);\n if (t.gtdProject) store.setValue(t, "gtd.project", t.gtdProject.title);\n if (t.gtdProject) store.setValue(t, "gtd.projectindex", t.gtdProject.gtdActions.indexOf(t));\n // booo...scary...strip out project tag\n if (t.gtdProject) t.tags.remove(t.gtdProject.title);\n }\n store.resumeNotifications();\n \n var tiddler = store.createTiddler("d3 conversion");\n var s = "Completed document conversion. Do not delete this tiddler unless you want to rebuild the action metadata.\sn\snThis tiddler also contains document-specific preferences which, if deleted, will revert to default settings.";\n tiddler.assign("d3 settings", s, config.options.txtUserName, new Date(), ["excludeLists"]);\n },\n \n initializeFromMetaData: function()\n {\n var tiddlers = store.getTaggedTiddlers("action");\n // ??? one possible optimization is to sort action list by project, to avoid repeatedly fetching project tiddler\n for (var i = 0; i < tiddlers.length; i++) {\n var t = tiddlers[i];\n t.gtdActionName = store.getValue(t, "title");\n t.gtdActionDone = this.tiddlerHasTag(t, "done");\n t.gtdProjectName = store.getValue(t, "gtd.project");\n t.gtdContextName = store.getValue(t, "gtd.context");\n if (t.gtdProjectName) {\n t.gtdProject = store.getTiddler(t.gtdProjectName);\n if (t.gtdProject) {\n if (t.gtdProject.gtdActions == undefined) t.gtdProject.gtdActions = [];\n t.gtdProject.gtdActions.push(t);\n }\n }\n }\n \n tiddlers = store.getTaggedTiddlers("project");\n for (i = 0; i < tiddlers.length; i++) {\n t = tiddlers[i];\n if (t.gtdActions) {\n t.gtdActions.sort( \n function(a,b) { var ai = parseInt(store.getValue(a, "gtd.projectindex")), bi = parseInt(store.getValue(b, "gtd.projectindex")); return (ai < bi) ? -1 : +1; }\n );\n }\n else\n t.gtdActions = [];\n this.setNextAction(t);\n }\n \n tiddlers = this.getCachedContexts();\n for (i = 0; i < tiddlers.length; i++)\n tiddlers[i].gtdContextName = tiddlers[i].title;\n },\n \n tiddlerHasTag: function (tiddler, tag)\n {\n if (typeof(tiddler) == "string") tiddler = store.getTiddler(tiddler);\n if (tiddler.tags.length == 0) return false;\n return (tiddler.tags.find(tag) != null);\n },\n \n tiddlerSwapTag: function (tiddler, oldTag, newTag)\n {\n for (var i = 0; i < tiddler.tags.length; i++)\n if (tiddler.tags[i] == oldTag) {\n tiddler.tags[i] = newTag;\n return true;\n }\n return false;\n },\n \n setExtendedValue: function (tiddler, name, value)\n {\n // this bottleneck safely sets an extended data value, quietly ignoring the request\n // if the setValue function is not available AND it disables notifications during\n // the setValue if it is defined\n \n if (version.major > 2 || version.minor > 0) {\n store.suspendNotifications();\n store.setValue(tiddler, name, value);\n store.resumeNotifications();\n }\n },\n \n tiddlerHasChanged: function (tiddler, doSave)\n {\n tiddler.changed();\n //story.setDirty(tiddler.title, true);\n store.setDirty(true);\n if (doSave == undefined) doSave = true;\n if (doSave) tiddler.modified = new Date();\n if (config.options.chkAutoSave && doSave)\n saveChanges();\n else if (doSave)\n this.lazyAutoSave++;\n },\n \n tiddlerAgeInDays: function(tiddler)\n {\n var now = new Date();\n return (now.getTime() - tiddler.modified.getTime()) / 1000 / 86400;\n },\n \n filteredActionTags: function (tags, filterTags)\n {\n var actionTags = [], specialTags = [ "action", "done", "floating", "action-archive" ];\n specialTags = specialTags.concat(filterTags);\n for (var i = 0; i < tags.length; i++)\n if (!specialTags.contains(tags[i])) actionTags.push(tags[i]);\n return actionTags;\n },\n \n toggleTag: function (tiddler, tag, toggle)\n {\n var tagIndex = -1;\n for (var i = 0; i < tiddler.tags.length; i++)\n if (tiddler.tags[i] == tag) {\n tagIndex = i;\n break;\n }\n \n if (toggle && tagIndex == -1) {\n tiddler.tags.push(tag);\n }\n else if (!toggle && tagIndex != -1) {\n tiddler.tags.splice(tagIndex, 1);\n }\n },\n \n getTiddlerElement: function (tiddler)\n {\n return document.getElementById(story.idPrefix + tiddler.title);\n },\n \n refreshActionViews: function (tiddler)\n {\n if (tiddler) {\n if (typeof(tiddler) == "string") tiddler = store.getTiddler(tiddler);\n if (tiddler) {\n // first refresh the action tiddler\n story.refreshTiddler(tiddler.title, null, true);\n // do not do anything else if we are not an action!\n // no, we still want to do review updates below, so only do the next bit for actions\n // if (!_GTD.tiddlerHasTag(tiddler, "action")) return;\n if (_GTD.tiddlerHasTag(tiddler, "action")) {\n // now refresh all tiddlers that are tags of the action, which should be the context and project\n // no...now use explicit reference to project/context\n //for (var i = 0; i < tiddler.tags.length; i++)\n // ...of course, we don't refresh action-specific state tags\n // if (tiddler.tags[i] != "action" && tiddler.tags[i] != "done" && tiddler.tags[i] != "floating") {\n // story.refreshTiddler(tiddler.tags[i], null, true);\n // }\n if (tiddler.gtdProjectName && tiddler.gtdProjectName.length > 0) story.refreshTiddler(tiddler.gtdProjectName, null, true);\n if (tiddler.gtdContextName && tiddler.gtdContextName.length > 0) story.refreshTiddler(tiddler.gtdContextName, null, true);\n }\n }\n }\n \n var specialTiddlers = store.getTaggedTiddlers("review");\n for (var i = 0; i < specialTiddlers.length; i++)\n if (_GTD.tiddlerHasTag(specialTiddlers[i], "gtd")) { // only update GTD review tiddlers, as an optimization\n // as a further optimization, we don't refresh tiddlers that aren't actually displayed, and make sure that\n // if they are displayed, they are in view mode, not edit mode\n var el = _GTD.getTiddlerElement(specialTiddlers[i]);\n if (el && el.getAttribute("template") == "reviewViewTemplate")\n story.refreshTiddler(specialTiddlers[i].title, null, true);\n }\n\n },\n \n appendProjectActionMarkup: function(projectTiddler, actionTitle, actionContext)\n {\n var actionInsertionPoint = -1, actionLeadin = "";\n \n var reActionWikitext = "^\s\s.{2}([^|\s\sn]+)(?:\s\s|?)(.*).*$";\n var reActionMacro = "(.*)<<gtdAction ((?:[^>]|(?:>(?!>)))*)>>.*$";\n var actionRe = new RegExp("(" + reActionWikitext + ")|(" + reActionMacro + ")", "mg");\n do {\n var formatMatch = actionRe.exec(projectTiddler.text);\n if (formatMatch) {\n actionLeadin = (formatMatch[1] ? "" : formatMatch[5]);\n actionInsertionPoint = actionRe.lastIndex;\n }\n } while(formatMatch);\n \n var actionProto = "\sn" + actionLeadin + "<<gtdAction \s"" + actionTitle + "\s" \s"" + actionContext + "\s">>";\n if (actionInsertionPoint == -1)\n projectTiddler.text += actionProto;\n else\n projectTiddler.text = projectTiddler.text.substring(0, actionInsertionPoint) + actionProto + projectTiddler.text.substr(actionInsertionPoint);\n \n this.tiddlerHasChanged(projectTiddler);\n this.refreshActionViews(projectTiddler);\n },\n \n removeProjectAction: function(projectTiddler, actionTitle)\n {\n var reActionWikitext = "^(\s\s.{2})[ \s\st]*(" + actionTitle + ")[ \s\st]*((\s\s|.*\s\sn?)|(.*\s\sn?))";\n var reActionMacro = "(.*<<gtdAction [\s"\s']?)(" + actionTitle + ")([\s"\s']?\s\ss+(?:[^>]|(?:>(?!>)))*>>.*\s\sn?)";\n projectTiddler.text = projectTiddler.text.replace(new RegExp(reActionWikitext, "mg"), "");\n projectTiddler.text = projectTiddler.text.replace(new RegExp(reActionMacro, "mg"), "");\n projectTiddler.changed();\n story.refreshTiddler(projectTiddler.title, null, true);\n },\n \n setNextAction: function(project)\n {\n if (project.gtdActions == undefined) project.gtdActions = [];\n project.gtdNextAction = null;\n for (var i = 0; i < project.gtdActions.length; i++)\n if (!project.gtdActions[i].gtdActionDone) {\n project.gtdNextAction = project.gtdActions[i];\n project.gtdProjectDone = false;\n this.toggleTag(project, "done", project.gtdProjectDone);\n return;\n }\n // if we get here, project is currently complete\n if (project.gtdActions.length > 0) project.gtdProjectDone = true;\n this.toggleTag(project, "done", project.gtdProjectDone);\n },\n \n clearContextCache: function()\n {\n this.contextCache = null;\n },\n \n getCachedContexts: function()\n {\n if (!this.contextCache) this.contextCache = store.getTaggedTiddlers("context");\n return this.contextCache;\n },\n \n renameCachedContext: function(oldName, newName)\n {\n if (this.contextCache) {\n var index = this.contextCache.indexOf(oldName);\n if (index > -1) this.contextCache[index] = newName;\n }\n },\n \n findActionContext: function(action)\n {\n var context = null;\n \n var contexts = this.getCachedContexts();\n for (var i = 0; i < contexts.length; i++)\n if (_GTD.tiddlerHasTag(action, contexts[i].title)) {\n context = contexts[i].title;\n break;\n }\n \n return context;\n },\n \n saveWithForcedBackup: function()\n {\n var saveBackups = config.options.chkSaveBackups;\n config.options.chkSaveBackups = true;\n saveChanges();\n config.options.chkSaveBackups = saveBackups;\n },\n \n isNextAction: function(actionTiddler)\n {\n if (actionTiddler.gtdProject && actionTiddler == actionTiddler.gtdProject.gtdNextAction)\n return true;\n return !actionTiddler.gtdActionDone && this.tiddlerHasTag(actionTiddler, "floating");\n },\n \n setReviewUpdate: function()\n {\n window._GTD = this;\n // having a subminute review update is overkill, but it would be nice to have semi-accurate\n // clock, so we can't have it be longer than a minute between updates\n //window.setTimeout('window._GTD.doReviewUpdate()', 60 * 1000);\n var d = new Date();\n window.setTimeout('window._GTD.doReviewUpdate()', (3600 - 60*d.getMinutes() - d.getSeconds()) * 1000);\n },\n \n doReviewUpdate: function()\n {\n this.refreshActionViews(null);\n this.setReviewUpdate();\n },\n \n setLazyAutoSave: function()\n {\n window._GTD = this;\n var interval = parseInt(config.options.txtGTDLazyAutoSaveInterval, 10);\n interval = isNaN(interval) ? 60 : interval.clamp(0, Number.MAX_VALUE);\n window.setTimeout('window._GTD.doLazyAutoSave()', interval * 1000);\n },\n \n doLazyAutoSave: function()\n {\n if (config.options.chkGTDLazyAutoSave && !config.options.chkAutoSave && (this.lazyAutoSave > 0 || store.isDirty())) {\n this.lazyAutoSave = 0;\n displayMessage('Autosaving changes...');\n saveChanges();\n if (typeof(gtdAutoSaveHook) == "function")\n gtdAutoSaveHook();\n window.setTimeout('clearMessage()', 5 * 1000);\n }\n this.setLazyAutoSave();\n },\n \n actionSorter: function(a,b)\n {\n // we now have an extended sort function to try and provide a more useful list of actions, esp. in a context view\n // ... the rule now is that project actions appear before non-project actions\n // ... if two actions have projects, and either project is tagged "important", it will appear first, otherwise actions are alphabetical by project\n // ... if two actions are from the same project, they appear in project action sequence, not alphabetically\n // ... all non-project actions continue to be sorted alphabetically\n \n if (a.gtdProject && b.gtdProject) {\n var aImportance = _GTD.tiddlerHasTag(a.gtdProject, "important"), bImportance = _GTD.tiddlerHasTag(b.gtdProject, "important");\n if (a.gtdProject == b.gtdProject)\n return (a.gtdProject.gtdActions.find(a) < b.gtdProject.gtdActions.find(b)) ? -1 : +1;\n else if (aImportance && !bImportance)\n return -1; // "a" is important, "b" is not, so "a" comes first\n else if (bImportance && !aImportance)\n return +1; // "b" is important, "a" is not, so "a" comes first\n else\n return (a.gtdProject.title < b.gtdProject.title) ? -1 : +1;\n }\n else if (a.gtdProject)\n return -1; // "a" has a project, "b" doesn't, so "a" comes first\n else if (b.gtdProject)\n return +1; // "b" has a project, "a" doesn't, so "b" comes first\n else {\n var aImportance = _GTD.tiddlerHasTag(a, "important"), bImportance = _GTD.tiddlerHasTag(b, "important");\n if (aImportance && !bImportance)\n return -1; // "a" is important, "b" is not, so "a" comes first\n else if (bImportance && !aImportance)\n return +1; // "b" is important, "a" is not, so "a" comes first\n else\n return (a.title < b.title) ? -1 : +1;\n }\n }\n};\n\nconfig.macros.gtdVersion = {}\nconfig.macros.gtdVersion.handler = function(place)\n{\n var v = version.extensions.GTDPlugins;\n createTiddlyElement(place, "span", null, null, v.major + "." + v.minor + "." + v.revision + (v.patch ? "." + v.patch : "") + (v.beta ? " (beta " + v.beta + ")" : ""));\n}\n\nconfig.macros.list.tagged = {}\nconfig.macros.list.tagged.innerHandler = function(tagList, allTags)\n{\n var tiddlers = store.getTaggedTiddlers(tagList[0]);\n\n if (allTags) {\n var results = [];\n for (var i = 0; i < tiddlers.length; i++) {\n var tiddler = tiddlers[i], hasAllTags = true;\n for (var j = 1; hasAllTags && j < tagList.length; j++) {\n // hasAllTags &= _GTD.tiddlerHasTag(tiddler, tagList[j]);\n hasAllTags &= (tagList[j].charAt(0) == '-') ? !_GTD.tiddlerHasTag(tiddler, tagList[j].substr(1)) : _GTD.tiddlerHasTag(tiddler, tagList[j])\n }\n if (hasAllTags) results.push(tiddlers[i]);\n }\n return results;\n }\n else {\n for (var i = 1; i < tagList.length; i++) {\n var more = store.getTaggedTiddlers(tagList[i]);\n for (var j = 0; j < more.length; j++)\n tiddlers.pushUnique(more[j]);\n }\n return tiddlers;\n }\n}\nconfig.macros.list.tagged.handler = function(params) \n{\n var tags = params[1].readBracketedList();\n if (tags.length == 1) {\n if (config.options[tags[0]] == undefined)\n return store.getTaggedTiddlers(tags[0]);\n else\n return store.getTaggedTiddlers(config.options[tags[0]]);\n }\n else if (tags.length > 1) {\n var allTags = (params[2] == undefined || params[2] == 'all');\n var tiddlers = this.innerHandler(tags, allTags);\n tiddlers.sort(function (a,b) {if(a.title == b.title) return(0); else return (a.title < b.title) ? -1 : +1; });\n return tiddlers;\n }\n}\n\nconfig.macros.gtdActionList = {}\nconfig.macros.gtdActionList.handler = function(place,macroName,params)\n{\n var theList = createTiddlyElement(place, "ul", null, "gtdActionList");\n var parentTiddler = story.findContainingTiddler(place).getAttribute("tiddler");\n \n var allActions = (params[1] == "all");\n var noProjectActions = (params[1] == "noproject");\n var justProjectActions = (params[1] == "projectonly");\n var aging = parseInt(config.options.txtGTDActionAging, 10);\n aging = isNaN(aging) ? 0 : aging.clamp(0, Number.MAX_VALUE);\n \n if (params[0] == "*") { // review actions for all projects\n var projects = store.getTaggedTiddlers("project");\n // do an importance sort on project list first, so they bubble to the top\n projects.sort( function(a,b) {\n var aImportance = _GTD.tiddlerHasTag(a, "important"), bImportance = _GTD.tiddlerHasTag(b, "important");\n if (aImportance && !bImportance)\n return -1; // "a" is important, "b" is not, so "a" comes first\n else if (bImportance && !aImportance)\n return 1; // "b" is important, "a" is not, so "a" comes first\n else\n return (a.title < b.title) ? -1 : +1;\n }\n );\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n // filter projects that have been deferred\n if (_GTD.tiddlerHasTag(project, config.options.txtGTDSomedayContext)) continue;\n if (!allActions) {\n //var skipEmptyProject = true;\n //if (project.gtdActions != undefined && project.gtdActions.length > 0)\n // for (var k = 0; skipEmptyProject && k < project.gtdActions.length; k++)\n // skipEmptyProject = project.gtdActions[k].gtdActionDone;\n //if (skipEmptyProject) continue;\n if (project.gtdActions == undefined || project.gtdActions.length == 0 || project.gtdProjectDone) continue;\n }\n // this will present the actions in the same order as they appear in the project\n var theListItem = createTiddlyElement(theList, "li", null, "gtdActionListProject");\n createTiddlyLink(theListItem, project.title, true);\n if (project.gtdActions != undefined && project.gtdActions.length > 0) {\n var subList = createTiddlyElement(theList, "ul", null, "gtdActionList");\n for (var j = 0; j < project.gtdActions.length; j++) {\n var action = project.gtdActions[j];\n // if we are not displaying all actions, filter old completed actions (if specified)\n // if (!allActions && action.gtdActionDone && aging > 0 && _GTD.tiddlerAgeInDays(action) > aging) continue;\n // NEW! we are now filtering all completed actions unless we are displaying all actions\n if (!allActions && action.gtdActionDone) continue;\n var subListItem = createTiddlyElement(subList, "li");\n var el = config.macros.gtdAction.createActionElement(subListItem, action, project.title, action.tags);\n }\n }\n }\n }\n \n else if (params[0] == "@") { // review actions for all contexts\n var contexts = _GTD.getCachedContexts();\n for (var i = 0; i < contexts.length; i++) {\n var context = contexts[i];\n var actions = config.macros.list.tagged.innerHandler([context.title, "action"], true);\n if (actions.length > 0) {\n var firstAction = true, theListItem, subList;\n actions.sort(_GTD.actionSorter);\n for (var j = 0; j < actions.length; j++) {\n var currentAction = actions[j];\n // special filtering by request...\n if (noProjectActions && currentAction.gtdProject) continue;\n if (justProjectActions && typeof(currentAction.gtdProject) == 'undefined') continue;\n // if we are not displaying all actions, filter completed actions and non-next project actions\n if (!allActions && (currentAction.gtdActionDone || (currentAction.gtdProject && !_GTD.isNextAction(currentAction)))) continue;\n // filter actions for projects that have been deferred\n if (currentAction.gtdProject && _GTD.tiddlerHasTag(currentAction.gtdProject, config.options.txtGTDSomedayContext)) continue;\n if (firstAction) {\n theListItem = createTiddlyElement(theList, "li", null, "gtdActionListContext");\n createTiddlyLink(theListItem, context.title, true);\n subList = createTiddlyElement(theList, "ul", null, "gtdActionList");\n firstAction = false;\n }\n var subListItem = createTiddlyElement(subList, "li");\n var el = config.macros.gtdAction.createActionElement(subListItem, currentAction, context.title, currentAction.tags);\n }\n }\n }\n }\n \n else { // actions tagged by current tiddler name, or specified tag list as parameter\n var reviewMode = config.options['chkGTDActionListReviewMode' + escape(parentTiddler)];\n if (typeof(reviewMode) == 'undefined') reviewMode = false;\n \n // chain to our "tagged" list macro to get the tiddlers first\n var tags = (params.length == 0 || params[0] == "." ? [ parentTiddler ] : params[0].readBracketedList());\n tags.push("action");\n var results = config.macros.list.tagged.innerHandler(tags, true);\n results.sort(_GTD.actionSorter);\n for (var t = 0; t < results.length; t++) {\n var action = results[t];\n // special filtering by request...\n if (noProjectActions && action.gtdProject) continue;\n if (justProjectActions && typeof(action.gtdProject) == 'undefined') continue;\n if (action.gtdProject && _GTD.tiddlerHasTag(action.gtdProject, config.options.txtGTDSomedayContext)) continue;\n // if we are not displaying all actions, filter completed actions and non-next project actions\n if (reviewMode && !allActions && (action.gtdActionDone || (action.gtdProject && !_GTD.isNextAction(action)))) continue;\n // if we are not displaying all actions, filter old completed actions (if specified)\n if (!allActions && action.gtdActionDone && aging > 0 && _GTD.tiddlerAgeInDays(action) > aging) continue;\n var theListItem = createTiddlyElement(theList, "li");\n var el = config.macros.gtdAction.createActionElement(theListItem, action, parentTiddler, action.tags);\n }\n }\n}\n\nconfig.macros.gtdAction = {}\nconfig.macros.gtdAction.createActionElement = function(place, actionTiddler, filterName, tags)\n{\n if (typeof(actionTiddler) == "string") actionTiddler = store.getTiddler(actionTiddler);\n \n var actionElement = createTiddlyElement(place, "span", null, "gtdActionItem");\n \n // oddly, we barf when setting the checkbox type on an input if we use createTiddlyElement...\n var cb = document.createElement("input");\n cb.setAttribute("type", "checkbox");\n cb.setAttribute("actionTiddler", actionTiddler.title);\n cb.onclick = this.onClickDone;\n actionElement.appendChild(cb);\n cb.checked = actionTiddler.gtdActionDone;\n createTiddlyLink(actionElement, actionTiddler.title, true);\n if (actionTiddler.gtdActionDone) actionElement.className = "gtdCompletedActionItem";\n if (_GTD.isNextAction(actionTiddler)) actionElement.className = "gtdNextActionItem";\n \n var filterTags = [], actionTags = [];\n if (actionTiddler.gtdProjectName && actionTiddler.gtdProjectName.length > 0)\n actionTags.push(actionTiddler.gtdProjectName);\n if (actionTiddler.gtdContextName && actionTiddler.gtdContextName.length > 0)\n actionTags.push(actionTiddler.gtdContextName);\n for (var i = 0; i < tags.length; i++) actionTags.pushUnique(tags[i]);\n if (filterName && filterName.length > 0) filterTags.pushUnique(filterName);\n \n actionTags = _GTD.filteredActionTags(actionTags, filterTags);\n if (actionTags.length > 0) {\n createTiddlyText(actionElement, " [ ");\n for (var i = 0; i < actionTags.length; i++) {\n if (i > 0) createTiddlyText(actionElement, ", ");\n createTiddlyLink(actionElement, actionTags[i], true, "actionCrossReference");\n }\n createTiddlyText(actionElement, " ]");\n }\n \n return actionElement;\n}\n\nconfig.macros.gtdAction.onClickDone = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("actionTiddler"));\n if (tiddler) {\n _GTD.toggleTag(tiddler, "done", this.checked);\n tiddler.gtdActionDone = this.checked;\n _GTD.tiddlerHasChanged(tiddler);\n _GTD.refreshActionViews(tiddler);\n if (this.checked && typeof(gtdActionDoneHook) == "function")\n gtdActionDoneHook(tiddler);\n if (tiddler.gtdActionDone && tiddler.gtdProject == undefined && confirm("This action is not a part of a project. Would you just like to delete it?")) {\n story.closeTiddler(tiddler.title, false, false);\n store.removeTiddler(tiddler.title);\n }\n }\n return true;\n}\n\nconfig.macros.gtdAction.handler = function(place,macroName,params)\n{\n var title = params[0], tags;\n var parentTiddler = story.findContainingTiddler(place).getAttribute("tiddler");\n var tiddler = store.getTiddler(title);\n if (!tiddler) {\n // we should *never* get here now for project actions, but keep code in case project code\n // trips up, or we use this macro somewhere else\n this.createAction(title, parentTiddler, params[1]);\n }\n else\n // use actual tiddler tags, not macro param, in case context changed!\n tags = tiddler.tags;\n var action = this.createActionElement(place, title, parentTiddler, tags);\n}\n\nconfig.macros.gtdAction.createAction = function(title, projectTiddlerName, tagParams, extraTags)\n{\n // var tags = ["action", parentTiddler];\n var action, tags = ["action"], fields = {};\n if (_GTD.usingProjectTags)\n tags.push(projectTiddlerName);\n if (typeof(tagParams) == "string") tags = tags.concat(tagParams.readBracketedList());\n if (typeof(extraTags) == "string") tags = tags.concat(extraTags.readBracketedList());\n var templateText = store.getTiddlerText("NewActionTemplate", config.views.wikified.defaultText.format([title]));\n if (_GTD.usingProjectTags)\n action = store.saveTiddler(title, title, templateText, config.options.txtUserName, new Date(), tags);\n else {\n fields["gtd.project"] = projectTiddlerName;\n action = store.saveTiddler(title, title, templateText, config.options.txtUserName, new Date(), tags, fields);\n }\n return action;\n}\n\nconfig.macros.gtdActionCompleted = {}\nconfig.macros.gtdActionCompleted.handler = function(place,macroName,params)\n{\n if (!readOnly) {\n var title = story.findContainingTiddler(place).getAttribute("tiddler");\n var tiddler = store.getTiddler(title);\n // oddly, we barf when setting the checkbox type on an input if we use createTiddlyElement...\n var cb = document.createElement("input");\n cb.setAttribute("type", "checkbox");\n cb.setAttribute("actionTiddler", title);\n cb.onclick = this.onClickDone;\n place.appendChild(cb);\n cb.checked = tiddler.gtdActionDone;\n }\n}\n\nconfig.macros.gtdActionCompleted.onClickDone = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("actionTiddler"));\n if (tiddler) {\n _GTD.toggleTag(tiddler, "done", this.checked);\n tiddler.gtdActionDone = this.checked;\n _GTD.tiddlerHasChanged(tiddler);\n _GTD.refreshActionViews(tiddler);\n if (this.checked && typeof(gtdActionDoneHook) == "function")\n gtdActionDoneHook(tiddler);\n if (tiddler.gtdActionDone && tiddler.gtdProject == undefined && confirm("This action is not a part of a project. Would you just like to delete it?")) {\n story.closeTiddler(tiddler.title, false, false);\n store.removeTiddler(tiddler.title);\n }\n }\n return true;\n}\n\nconfig.macros.gtdToggleTag = {}\nconfig.macros.gtdToggleTag.handler = function(place,macroName,params)\n{\n if (!readOnly) {\n var title = story.findContainingTiddler(place).getAttribute("tiddler");\n var tiddler = store.getTiddler(title);\n // oddly, we barf when setting the checkbox type on an input if we use createTiddlyElement...\n var cb = document.createElement("input");\n cb.setAttribute("type", "checkbox");\n cb.setAttribute("tiddler", title);\n cb.setAttribute("toggledTag", params[0]);\n cb.onclick = this.onClickDone;\n place.appendChild(cb);\n cb.checked = _GTD.tiddlerHasTag(tiddler, params[0]);\n }\n}\n\nconfig.macros.gtdToggleTag.onClickDone = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("tiddler"));\n if (tiddler) {\n _GTD.toggleTag(tiddler, this.getAttribute("toggledTag"), this.checked);\n _GTD.tiddlerHasChanged(tiddler);\n if (_GTD.tiddlerHasTag(tiddler, "action"))\n _GTD.refreshActionViews(tiddler);\n else\n // we need a broad notification here, not just refreshActionViews\n store.notify(tiddler.title, true);\n }\n return true;\n}\n\nconfig.macros.gtdToggleState = {}\nconfig.macros.gtdToggleState.handler = function(place,macroName,params)\n{\n var title = story.findContainingTiddler(place).getAttribute("tiddler");\n var tiddler = store.getTiddler(title);\n // oddly, we barf when setting the checkbox type on an input if we use createTiddlyElement...\n var cb = document.createElement("input");\n cb.setAttribute("type", "checkbox");\n cb.setAttribute("tiddler", title);\n var state = params[0] + escape(title);\n cb.setAttribute("stateName", state);\n cb.onclick = this.onClickDone;\n place.appendChild(cb);\n cb.checked = config.options[state];\n}\n\nconfig.macros.gtdToggleState.onClickDone = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("tiddler"));\n if (tiddler) {\n var state = this.getAttribute("stateName");\n config.options[state] = this.checked;\n saveOptionCookie(state);\n story.refreshTiddler(tiddler.title, null, true);\n }\n return true;\n}\n\nconfig.macros.importUpdates = { \n importMode: "updates",\n buttonTitle: "Update", \n buttonHelp: "Click here to update the application",\n preUpdateMessage: "Once the download is finished, you will need to reload your document to complete the update. In order to allow you to review the update tiddlers, this will not be done automatically. \sn\snClick \s"OK\s" start the update.",\n postUpdateMessage: "Please remember, you will need to save and reload your document to complete the update. In order to allow you to review the update tiddlers, this will not be done automatically."\n}\nconfig.macros.importUpdates.handler = function(place, macroName, params)\n{\n var mode = params[1] ? params[1] : this.importMode;\n var title = params[2] ? params[2] : this.buttonTitle;\n var prompt = params[3] ? params[3] : this.buttonHelp;\n var button = createTiddlyButton(place, title, prompt, this.onClickUpdate);\n button.setAttribute("updateSource", params[0]);\n button.setAttribute("importMode", mode);\n if (params.length > 4) button.setAttribute("importExtras", params.slice(4).join(" "));\n}\n\nconfig.macros.importUpdates.onClickUpdate = function(e)\n{\n if (!confirm(config.macros.importUpdates.preUpdateMessage))\n return;\n var importParams = [ this.getAttribute("importMode"), this.getAttribute("updateSource") ];\n var importExtras = this.getAttribute("importExtras");\n if (importExtras) importParams = importParams.concat(importExtras.split(" "));\n if (version.extensions.importTiddlers.major < 3)\n importParams.push("force");\n // force a saveChanges with backup before the update\n _GTD.saveWithForcedBackup();\n // chain to the importTiddlers macro\n config.macros.importTiddlers.handler(this, "importTiddlers", importParams);\n // ensure that relevant release notes are displayed on first launch\n config.options.chkGTDReleaseNotes = true;\n saveOptionCookie("chkGTDReleaseNotes");\n // do *not* cause a browser navigation\n return false;\n}\n\nconfig.macros.gtdArchive = {}\nconfig.macros.gtdArchive.handler = function(place, macroName, params)\n{\n var archiveAction = params.length > 0 ? params[0] : "archive"\n var btn = createTiddlyButton(place, archiveAction, "", this.onClick);\n btn.setAttribute("archiveAction", archiveAction);\n}\n\nconfig.macros.gtdArchive.onClick = function(e)\n{\n var warning = "Are you sure you want to %0 all %1 projects and actions?";\n var status = "There were %0 project(s) and %1 action(s) %2d.";\n var archiveAction = this.getAttribute("archiveAction");\n \n var projectCount = 0, actionCount = 0;\n \n if (archiveAction == "archive") {\n if (confirm(warning.format([archiveAction, "completed"]))) {\n clearMessage();\n var projects = store.getTaggedTiddlers("project");\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n if (project.gtdActions == undefined || project.gtdActions.length == 0) continue;\n var projectComplete = true;\n for (var j = 0; projectComplete && j < project.gtdActions.length; j++)\n projectComplete = project.gtdActions[j].gtdActionDone;\n if (!projectComplete) continue;\n // if we get here, all project actions are done, so archive project\n story.closeTiddler(project.title, false, false);\n _GTD.tiddlerSwapTag(project, "project", "project-archive");\n _GTD.tiddlerHasChanged(project, false);\n projectCount++;\n for (j = 0; j < project.gtdActions.length; j++) {\n story.closeTiddler(project.gtdActions[j].title, false, false);\n _GTD.tiddlerSwapTag(project.gtdActions[j], "action", "action-archive");\n _GTD.tiddlerHasChanged(project.gtdActions[j], false);\n actionCount++;\n }\n }\n var actions = store.getTaggedTiddlers("action");\n for (i = 0; i < actions.length; i++) {\n var action = actions[i];\n if (action.gtdActionDone && !action.gtdProject) {\n story.closeTiddler(action.title, false, false);\n _GTD.tiddlerSwapTag(action, "action", "action-archive");\n _GTD.tiddlerHasChanged(action, false);\n actionCount++;\n }\n }\n displayMessage(status.format([projectCount, actionCount, archiveAction]));\n var saveClearMessage = clearMessage;\n clearMessage = function() {};\n if (config.options.chkAutoSave) saveChanges();\n clearMessage = saveClearMessage;\n store.notify(null, true);\n }\n }\n \n else if (archiveAction == "unarchive") {\n if (confirm(warning.format([archiveAction, "archived"]))) {\n clearMessage();\n var projects = store.getTaggedTiddlers("project-archive");\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n story.closeTiddler(project.title, false, false);\n _GTD.tiddlerSwapTag(project, "project-archive", "project");\n _GTD.tiddlerHasChanged(project, false);\n projectCount++;\n }\n var actions = store.getTaggedTiddlers("action-archive");\n for (i = 0; i < actions.length; i++) {\n var action = actions[i];\n story.closeTiddler(action.title, false, false);\n _GTD.tiddlerSwapTag(action, "action-archive", "action");\n _GTD.tiddlerHasChanged(action, false);\n actionCount++;\n }\n displayMessage(status.format([projectCount, actionCount, archiveAction]));\n var saveClearMessage = clearMessage;\n clearMessage = function() {};\n if (config.options.chkAutoSave) saveChanges();\n clearMessage = saveClearMessage;\n store.notify(null, true);\n }\n }\n \n else if (archiveAction == "purge") {\n if (confirm(warning.format([archiveAction, "archived"]))) {\n clearMessage();\n _GTD.saveWithForcedBackup();\n var projects = store.getTaggedTiddlers("project-archive");\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n story.closeTiddler(project.title, false, false);\n store.removeTiddler(project.title);\n projectCount++;\n }\n var actions = store.getTaggedTiddlers("action-archive");\n for (i = 0; i < actions.length; i++) {\n var action = actions[i];\n story.closeTiddler(action.title, false, false);\n store.removeTiddler(action.title);\n actionCount++;\n }\n displayMessage(status.format([projectCount, actionCount, archiveAction]));\n var saveClearMessage = clearMessage;\n clearMessage = function() {};\n if (config.options.chkAutoSave) saveChanges();\n clearMessage = saveClearMessage;\n store.notify(null, true);\n }\n }\n else\n alert("That archiving action is not supported");\n}\n\nconfig.formatters.push(\n {\n name: "gtdAction",\n match: "^\s\s.{2}.*",\n lookahead: "^\s\s.{2}([^|]*)(?:\s\s|?)(.*)",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"g");\n var lookaheadMatch = lookaheadRegExp.exec(w.matchText)\n if (lookaheadMatch) {\n var params = [ lookaheadMatch[1].trim() ];\n if (lookaheadMatch[2].trim().length > 0) params.push(lookaheadMatch[2].trim());\n config.macros.gtdAction.handler(w.output, "gtdAction", params);\n }\n }\n }\n);\n\nconfig.commands.newAction = { text: "action", tooltip: "Create a new action for this context", hideReadOnly: true };\nconfig.commands.newAction.handler = function(event, src, context)\n{\n var d = new Date();\n var newActionTitle = d.formatString("New Action hh:0mm:0ss");\n if (!store.tiddlerExists(newActionTitle)) {\n var tiddler = store.createTiddler(newActionTitle);\n var templateText = store.getTiddlerText("NewActionTemplate", config.views.wikified.defaultText.format([newActionTitle]));\n tiddler.assign(newActionTitle, templateText, config.options.txtUserName, new Date(), [ "action", context ]);\n \n story.displayTiddler(null, newActionTitle, DEFAULT_EDIT_TEMPLATE);\n story.focusTiddler(newActionTitle, "title");\n }\n return false;\n}\n\nconfig.commands.newProjectAction = { text: "action", tooltip: "Create a new action for this project", hideReadOnly: true };\nconfig.commands.newProjectAction.handler = function(event, src, project)\n{\n var d = new Date();\n var newActionTitle = d.formatString("New Action hh:0mm:0ss");\n if (!store.tiddlerExists(newActionTitle)) {\n var defaultContext = config.options.txtGTDUnfiledContext;\n _GTD.appendProjectActionMarkup(store.getTiddler(project), newActionTitle, defaultContext);\n \n var tiddler = store.createTiddler(newActionTitle);\n var templateText = store.getTiddlerText("NewActionTemplate", config.views.wikified.defaultText.format([newActionTitle]));\n var tags = ["action"], fields = {};\n if (_GTD.usingProjectTags)\n tags.push(project);\n tags.push(defaultContext);\n if (_GTD.usingProjectTags)\n tiddler.assign(newActionTitle, templateText, config.options.txtUserName, new Date(), tags);\n else {\n fields["gtd.project"] = project;\n tiddler.assign(newActionTitle, templateText, config.options.txtUserName, new Date(), tags, new Date(), fields);\n }\n \n story.displayTiddler(null, newActionTitle, DEFAULT_EDIT_TEMPLATE);\n story.focusTiddler(newActionTitle, "title");\n }\n return false;\n}\n\nconfig.commands.changeContext = { text: "context", tooltip: "Change context of this action", hideReadOnly: true, popupNone: "There are no contexts" };\nconfig.commands.changeContext.handler = function(event,src,title)\n{\n var popup = Popup.create(src);\n if (popup) {\n var contexts = _GTD.getCachedContexts();\n var tiddler = store.getTiddler(title);\n var currentContext = _GTD.findActionContext(tiddler);\n if (!currentContext) currentContext = '';\n \n var c = false;\n for (var i = 0; i < contexts.length; i++)\n if (contexts[i].title != currentContext) {\n var button = createTiddlyButton(createTiddlyElement(popup, "li"), contexts[i].title, '', this.onClickContext);\n button.setAttribute("actionTiddler", title);\n button.setAttribute("oldContext", currentContext);\n button.setAttribute("newContext", contexts[i].title);\n c = true;\n }\n \n if (!c)\n createTiddlyText(createTiddlyElement(popup, "li", null, "disabled"), this.popupNone);\n }\n \n Popup.show(popup, false);\n event.cancelBubble = true;\n if (event.stopPropagation) event.stopPropagation();\n // do *not* cause a browser navigation\n return false;\n}\n\nconfig.commands.changeContext.onClickContext = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("actionTiddler"));\n if (tiddler) {\n var contextChanged = false;\n var oldContext = this.getAttribute("oldContext");\n var newContext = this.getAttribute("newContext");\n if (oldContext.length == 0)\n contextChanged = (tiddler.tags.push(newContext) > 0);\n else\n contextChanged = _GTD.tiddlerSwapTag(tiddler, oldContext, newContext);\n \n if (contextChanged) {\n tiddler.gtdContextName = newContext;\n _GTD.setExtendedValue(tiddler, "gtd.context", newContext);\n _GTD.tiddlerHasChanged(tiddler);\n _GTD.refreshActionViews(tiddler);\n // be sure to refresh old context as well...\n story.refreshTiddler(oldContext, null, true);\n }\n }\n // do *not* cause a browser navigation\n return false;\n}\n\nconfig.commands.deleteAction = { text: "delete", tooltip: "Delete this action", hideReadOnly: true, warning: "Are you sure you want to delete '%0'?", altwarning: "Are you sure you want to delete '%0'? The action will also be removed from project '%1'." };\nconfig.commands.deleteAction.handler = function(event, src, title)\n{\n var tiddler = store.getTiddler(title);\n var ok = (tiddler.gtdProject ? confirm(this.altwarning.format([title, tiddler.gtdProject.title])) : confirm(this.warning.format([title])));\n if (ok) {\n if (tiddler.gtdProject) _GTD.removeProjectAction(tiddler.gtdProject, title);\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if (config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteContext = { text: "delete", tooltip: "Delete this context", hideReadOnly: true, warning: "Are you sure you want to delete '%0'? All associated actions will be tagged as 'unfiled'." };\nconfig.commands.deleteContext.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n store.suspendNotifications();\n this.unlinkActions(title);\n // force a rebuild of our context cache\n _GTD.clearContextCache();\n store.resumeNotifications();\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if (config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteContext.unlinkActions = function(contextTitle)\n{\n var tiddlers = config.macros.list.tagged.innerHandler([contextTitle, "action"], true);\n for (var i = 0; i < tiddlers.length; i++) {\n var tiddler = tiddlers[i];\n _GTD.tiddlerSwapTag(tiddler, contextTitle, config.options.txtGTDUnfiledContext);\n _GTD.tiddlerHasChanged(tiddler, false);\n // context removal will do view notification...\n }\n}\n\nconfig.commands.archiveProject = { text: "archive", tooltip: "Archive this project", hideReadOnly: true, warning: "Are you sure you want to archive '%0'?", noarchive: "This project is %0 and will not be archived." };\nconfig.commands.archiveProject.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n var project = store.getTiddler(title);\n if (project.gtdActions == undefined || project.gtdActions.length == 0) {\n alert(this.noarchive.format(["empty"]));\n return;\n }\n var projectComplete = true;\n for (var j = 0; projectComplete && j < project.gtdActions.length; j++)\n projectComplete = project.gtdActions[j].gtdActionDone;\n if (!projectComplete) {\n alert(this.noarchive.format(["incomplete"]));\n return;\n }\n // if we get here, all project actions are done, so archive project\n story.closeTiddler(project.title, false, false);\n _GTD.tiddlerSwapTag(project, "project", "project-archive");\n _GTD.tiddlerHasChanged(project, false);\n for (j = 0; j < project.gtdActions.length; j++) {\n story.closeTiddler(project.gtdActions[j].title, false, false);\n _GTD.tiddlerSwapTag(project.gtdActions[j], "action", "action-archive");\n _GTD.tiddlerHasChanged(project.gtdActions[j], false);\n }\n store.notify(null, true);\n if (config.options.chkAutoSave)\n saveChanges();\n }\n\n return false;\n}\n\nconfig.commands.deleteProject = { text: "delete", tooltip: "Delete this project", hideReadOnly: true, warning: "Are you sure you want to delete '%0'? All associated actions will no longer be bound to this (or any) project." };\nconfig.commands.deleteProject.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n store.suspendNotifications();\n this.unlinkActions(title);\n store.resumeNotifications();\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if (config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteProject.unlinkActions = function(projectTitle)\n{\n // var tiddlers = config.macros.list.tagged.innerHandler([projectTitle, "action"], true);\n var project = store.getTiddler(projectTitle);\n for (var i = 0; i < project.gtdActions.length; i++) {\n var tiddler = project.gtdActions[i];\n tiddler.gtdProject = null;\n tiddler.gtdProjectName = null;\n if (_GTD.usingProjectTags)\n tiddler.tags.splice(tiddler.tags.find(projectTitle), 1);\n else {\n _GTD.setExtendedValue(tiddler, "gtd.project", null);\n _GTD.setExtendedValue(tiddler, "gtd.projectindex", null);\n }\n _GTD.tiddlerHasChanged(tiddler, false);\n // project removal will do view notification...\n }\n}\n\nconfig.commands.deleteProjectAll = { text: "delete all", tooltip: "Delete this project and its actions", hideReadOnly: true, warning: "Are you sure you want to delete '%0' and all its associated actions?" };\nconfig.commands.deleteProjectAll.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n store.suspendNotifications();\n this.deleteActions(title);\n store.resumeNotifications();\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if (config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteProjectAll.deleteActions = function(projectTitle)\n{\n // var tiddlers = config.macros.list.tagged.innerHandler([projectTitle, "action"], true);\n var project = store.getTiddler(projectTitle);\n for (var i = 0; i < project.gtdActions.length; i++) {\n var tiddler = project.gtdActions[i].title;\n store.removeTiddler(tiddler);\n story.closeTiddler(tiddler, true, false);\n // project removal will do view notification...\n }\n}\n\nconfig.commands.projectify = { text: "projectify", tooltip: "Convert this action to a project", hideReadOnly: true, warning: "Are you sure you want to convert '%0' to a project?" };\nconfig.commands.projectify.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n var tiddler = store.getTiddler(title);\n if (tiddler.gtdProject) _GTD.removeProjectAction(tiddler.gtdProject, title);\n tiddler.tags = [ "project" ];\n _GTD.tiddlerHasChanged(tiddler, true);\n // we need a broad notification here, not just refreshActionViews\n store.notify(title, true);\n }\n \n return false;\n}\n\n// *** ***/\n// *** These are overrides to core TiddlyWiki functionality ***\n// *** ***/\n\nTiddler.prototype._GTDInheritedChanged = Tiddler.prototype.changed;\nTiddler.prototype.changed = function()\n{\n this._GTDInheritedChanged();\n \n // Note that this is called both as part of normal tiddler changes AND as a part\n // of the initial TW loading process from DIVs...\n \n if (_GTD.tiddlerHasTag(this, "project")) {\n // (re)build the in-memory ordered action list\n this.gtdActions = [];\n this.gtdNextAction = null;\n if (this.text) {\n var reActionWikitext = "^\s\s.{2}([^|\s\sn]+)(?:\s\s|?)(.*)";\n var reActionMacro = "<<gtdAction ((?:[^>]|(?:>(?!>)))*)>>";\n var actionRe = new RegExp("(" + reActionWikitext + ")|(" + reActionMacro + ")", "mg");\n do {\n var formatMatch = actionRe.exec(this.text);\n if (formatMatch) {\n var macroParams = (formatMatch[1] ? null : formatMatch[5].readMacroParams());\n // note that for the ".." notation, we are trimming up action titles and contexts\n var actionTiddlerName = (formatMatch[1] ? formatMatch[2].trim() : macroParams[0]);\n var actionTiddler = store.getTiddler(actionTiddlerName);\n if (!actionTiddler) {\n var actionTags = (formatMatch[1] ? formatMatch[3].trim() : macroParams[1]);\n var extraTags = (formatMatch[1] ? '' : macroParams[2]);\n actionTiddler = config.macros.gtdAction.createAction(actionTiddlerName, this.title, actionTags, extraTags);\n }\n if (actionTiddler) {\n actionTiddler.gtdProject = this;\n if (this.gtdNextAction == null && !_GTD.tiddlerHasTag(actionTiddler, "done"))\n this.gtdNextAction = actionTiddler;\n this.gtdActions.push(actionTiddler);\n _GTD.setExtendedValue(actionTiddler, "gtd.projectindex", this.gtdActions.length - 1);\n // handle project renaming in action\n if (actionTiddler.gtdProjectName && actionTiddler.gtdProjectName != this.title) {\n if (_GTD.usingProjectTags)\n _GTD.tiddlerSwapTag(actionTiddler, actionTiddler.gtdProjectName, this.title);\n else\n _GTD.setExtendedValue(actionTiddler, "gtd.project", this.title);\n // action view won't get updated through any other refresh mechanism, so\n story.refreshTiddler(actionTiddler.title, null, true);\n }\n actionTiddler.gtdProjectName = this.title;\n }\n }\n } while(formatMatch);\n }\n }\n \n else if (_GTD.tiddlerHasTag(this, "context")) {\n if (this.gtdContextName == undefined)\n this.gtdContextName = this.title;\n else if (this.gtdContextName != this.title) {\n // propagate renamed context to affected actions\n store.suspendNotifications();\n var results = config.macros.list.tagged.innerHandler([ this.gtdContextName, "action"], true);\n for (var t = 0; t < results.length; t++) {\n _GTD.tiddlerSwapTag(results[t], this.gtdContextName, this.title);\n results[t].gtdContextName = this.title;\n _GTD.setExtendedValue(results[t], "gtd.context", this.title);\n // action view won't get updated through any other refresh mechanism, so\n //story.refreshTiddler(results[t].title, null, true);\n }\n // because the store is not yet updated, we need to manipulate the context cache directly\n _GTD.renameCachedContext(this.gtdContextName, this.title);\n this.gtdContextName = this.title;\n // we need a broad notification here, not just refreshActionViews\n store.resumeNotifications();\n store.notify(null, true);\n }\n }\n \n else if (_GTD.tiddlerHasTag(this, "action")) {\n if (this.gtdActionName == undefined)\n this.gtdActionName = this.title;\n else if (this.gtdActionName != this.title && this.gtdProject) {\n // ugh...dig into related project and update the wiki code to use new action name\n var reActionWikitext = "^(\s\s.{2}[ \s\st]*)(" + this.gtdActionName + ")(([ \s\st]*\s\s|.*\s\sn?)|(\s\sn?))";\n var reActionMacro = "(<<gtdAction [\s"\s']?)(" + this.gtdActionName + ")([\s"\s']?\s\ss+(?:[^>]|(?:>(?!>)))*>>)";\n this.gtdProject.text = this.gtdProject.text.replace(new RegExp(reActionWikitext, "mg"), "$1" + this.title + "$3");\n this.gtdProject.text = this.gtdProject.text.replace(new RegExp(reActionMacro, "mg"), "$1" + this.title + "$3");\n this.gtdActionName = this.title;\n }\n this.gtdActionDone = _GTD.tiddlerHasTag(this, "done");\n this.gtdContextName = _GTD.findActionContext(this);\n _GTD.setExtendedValue(this, "gtd.context", this.gtdContextName);\n // reset the next action on the associated project\n if (this.gtdProject) _GTD.setNextAction(this.gtdProject);\n }\n}\n\nStory.prototype.chooseTemplateForTiddler = function(title,template)\n{\n // This override to core TW functionality is used to provide tag-based view and edit templates. The\n // basic idea is that the tiddler is scanned for its tags and, depending on whether we are opening a\n // tiddler in "view" or "edit" mode, a corresponding 'tag + "ViewTemplate"' or 'tag + "EditTemplate"'\n // tiddler is searched for. If it exists, it is used instead of the default templates.\n \n if (!template)\n template = DEFAULT_VIEW_TEMPLATE;\n\n // before reverting to default behaviour, check to see if a tag-based template exists\n if (template == DEFAULT_VIEW_TEMPLATE || template == DEFAULT_EDIT_TEMPLATE) {\n if (this.tagBasedTemplateCache == undefined) this.tagBasedTemplateCache = new Array();\n var templateRoot = (template == DEFAULT_VIEW_TEMPLATE ? "ViewTemplate" : "EditTemplate");\n var tiddler = store.getTiddler(title);\n if (tiddler) {\n for (var i = 0; i < tiddler.tags.length; i++) {\n var tag = tiddler.tags[i];\n var tagTemplate = tag + templateRoot;\n var tagCacheId = tag + template;\n // first check our cache to see if we have seen this template before\n if (this.tagBasedTemplateCache[tagCacheId] != undefined) {\n // make sure template still exists\n if (store.tiddlerExists(this.tagBasedTemplateCache[tagCacheId])) {\n template = this.tagBasedTemplateCache[tagCacheId];\n break;\n }\n else\n delete this.tagBasedTemplateCache[tagCacheId];\n }\n // go to the store to see if template exists\n if (store.tiddlerExists(tagTemplate)) {\n template = tagTemplate;\n this.tagBasedTemplateCache[tagCacheId] = tagTemplate;\n break;\n }\n }\n }\n }\n \n if (template == DEFAULT_VIEW_TEMPLATE || template == DEFAULT_EDIT_TEMPLATE)\n template = config.tiddlerTemplates[template];\n return template;\n}\n\n// Clint Checketts' IE first-child patch, version 1.1, http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm#GiveFirstTiddlerClassPatch\n\nStory.prototype.closeTiddlerIEFirstChild = Story.prototype.closeTiddler;\nStory.prototype.closeTiddler = function(title,animate,slowly) {\n var tiddler = document.getElementById(this.idPrefix + title);\n // we need to test to ensure tiddler is actually open\n if (tiddler) {\n var storyArea = tiddler.parentNode;\n if ((this.idPrefix + title) == storyArea.firstChild.id){\n removeClass(storyArea.firstChild,"IEFirstChild");\n // this next line is redundant, since it is looked after at the end of this function\n // if (storyArea.firstChild.nextSibling) addClass(storyArea.firstChild.nextSibling,"IEFirstChild");\n }\n story.closeTiddlerIEFirstChild(title,animate,slowly);\n if (storyArea.firstChild) addClass(storyArea.firstChild,"IEFirstChild");\n }\n}\n\nStory.prototype.displayTiddlerIEFirstChild = Story.prototype.displayTiddler;\nStory.prototype.displayTiddler = function(srcElement,title,template,animate,slowly) {\n var storyArea = document.getElementById(this.container);\n if (storyArea.firstChild) removeClass(storyArea.firstChild,"IEFirstChild");\n story.displayTiddlerIEFirstChild(srcElement,title,template,animate,slowly);\n addClass(storyArea.firstChild,"IEFirstChild");\n}\n\n_GTD.initialize();\n\n//}}}\n
/***\n!GTD specific styles\n***/\n\n/*{{{*/\n/* how annoying is that big header anyway?! */\n.headerForeground, .headerShadow {\n padding-top: 1em;\n}\n\n/* the tagging popup really gets in the way so push it off to the side */\n.tagging { float: right; }\n\n/* this unbullets actions in the actionList macro */\nul.gtdActionList { list-style-type: none; }\nli.gtdActionListProject, li.gtdActionListContext { margin-top: 1.0em; }\n\n.gtdCompletedActionItem { text-decoration: line-through; }\n.gtdNextActionItem { border-bottom: 1px solid red; }\n\na.actionCrossReference { color: #228B22; }\na.actionCrossReference:hover { color: white; }\n\n/* necessary bits copied from enhanced stylesheet to render properly without it */\n#mainMenu {\n font-size: 1em;\n text-align: left;\n width: 12em;\n}\n\n#mainMenu * {\n font-size: 1em;\n font-weight: normal;\n padding: 0; margin: 0; border: 0;\n}\n\n#mainMenu ul {\n list-style: none;\n margin-bottom: 10px;\n}\n\n#mainMenu li {\n text-indent: 1em;\n}\n\n#mainMenu li li {\n text-indent: 1.5em;\n}\n\n#mainMenu li li li {\n text-indent: 2em;\n}\n\n#mainMenu li li li li {\n text-indent: 2.5em;\n}\n\n#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\n display: block; margin: 0;\n}\n\ntable.review { width: 98%; }\n.review tr { vertical-align: top; }\n\n/*}}}*/\n\n/***\n!Imported 3x5 printing styles\n//adapted from the work of Clint Checketts, http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm //\n***/\n\n/*{{{*/\n\n@media print {\n#mainMenu, #sidebar, #messageArea {display: none !important;}\n#displayArea {margin: 1em 1em 0em 1em;}\n\n\n/* LAYOUT ELEMENTS ========================================================== */\n*\n{\n margin: 0;\n padding: 0;\n}\n\n#contentWrapper\n{\n margin: 0;\n width: 100%;\n position: static;\n}\n\nbody {\n background: #fff;\n color: #000;\n font-size: 6.2pt;\n font-family: "Lucida Grande", "Bitstream Vera Sans", Helvetica, Verdana, Arial, sans-serif;\n /* we don't want any unnecessary output */\n border: none;\n}\n\nimg {\n max-width: 2.2in;\n max-height: 4.3in;\n}\n\n#header, #side_container, #storeArea, #copyright, #floater, #messageArea, .save_accesskey, .site_description, #saveTest, .toolbar, .header, .footer, .tagging, .tagged\n{\n display: none;\n}\n\n#tiddlerDisplay, #displayArea\n{\n display: inline;\n}\n\n.tiddler {\n margin: 0 0 2em 0;\n border: none;\n page-break-before: always;\n font-size: 200%;\n /* IF YOU DO NOT USE INDEX CARDS, USE THIS */\n font-size: 100%;\n}\n\n.tiddler:first-child {\n page-break-before: avoid;\n}\n\n/* this relies on Clint's IE first-child patch */\n.IEFirstChild {\n page-break-before: auto;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n margin-bottom: .3em;\n padding: .2em 0;\n border-bottom: 1px dotted #000;\n}\n\np, blockquote, ul, li, ol, dt, dd, dl, table\n{\n margin: 0 0 .3em 0;\n}\n\nh1, h2, h3, h4, h5, h6\n{\n margin: .2em 0;\n} \n\nh1\n{\n font-size: 1.5em;\n}\n\nh2\n{\n font-size: 1.3em;\n}\n\nh3\n{\n font-size: 1.25em;\n}\n\nh4\n{\n font-size: 1.15em;\n}\n\nh5\n{\n font-size: 1.1em;\n}\n\nblockquote\n{\n margin: .6em;\n padding-left: .6em;\n border-left: 1px solid #ccc;\n}\n\nul\n{\n list-style-type: circle;\n}\n\nli\n{\n margin: .1em 0 .1em 2em;\n line-height: 1.4em; \n}\n\ntable\n{\n border-collapse: collapse;\n font-size: 1em;\n}\n\ntd, th\n{\n border: 1px solid #999;\n padding: .2em;\n}\n\nhr {\n border: none;\n border-top: dotted 1px #777;\n height: 1px;\n color: #777;\n margin: .6em 0;\n}\n}\n/*}}}*/\n\n/***\n!Imported styles for calendar plugin\n***/\n\n/*{{{*/\n\n#mainMenu .calendar {\n width: 100%;\n background-color: transparent !important;\n}\n\n#mainMenu .calendar, #mainMenu .calendar tr, #mainMenu .calendar td, #mainMenu .calendar a {\n}\n\n\n/*}}}*/\n
/***\n!Layout Rules /%==============================================%/\n***/\n/*{{{*/\n\nbody {\n /* this is required for proper layout on IE, for some reason... */\n _position: static;\n}\n\n.tagClear {\n /* this, too, is a necessary IE hack... */\n _margin-top: 10em; \n _clear: both;\n}\n\n.headerForeground, .headerShadow {\n padding-top: 1em;\n}\n\n.tiddler {\n margin: 0 0 0.9em 0;\n padding-bottom: 1em;\n}\n\n#mainMenu {\n width: 16em;\n font-size: 1em;\n text-align: left;\n padding-top: 0.5em;\n}\n\n#mainMenu * {\n font-size: 1em;\n font-weight: normal;\n padding: 0; margin: 0; border: 0;\n}\n\n#mainMenu ul {\n list-style: none;\n margin-bottom: 10px;\n}\n\n#mainMenu li {\n text-indent: 1em;\n}\n\n#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\n display: block; margin: 0;\n}\n\n#displayArea {\n margin-left: 19em; margin-top: 0;\n}\n\n.toolbar .button {\n margin-left: 4px;\n}\n\n/*}}}*/\n\n/***\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #464646;\n color: #000;\n}\n\nh1,h2,h3,h4,h5 {\n color: #000;\n background: #eee;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #000;\n}\n\n.headerForeground {\n color: #cf6;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #cf6;\n}\n\n/* ??? what is up when you specify a site title colour in IE ??? */\n/* .siteTitle { color: red; } */\n\n/*}}}*/\n/***\n!General tabs /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected {\n color: #fff;\n background: #960;\n border: none;\n}\n\n.tabUnselected {\n color: #fff;\n background: #660;\n}\n\n.tabContents {\n color: #004;\n background: #960;\n border: none;\n}\n\n.tabContents .button, .tabContents a {\n border: none;\n color: #fff;\n}\n\n.tabContents a:hover, .tabset a:hover {\n background: #000;\n}\n\n/* make nested tab areas look different */\n.tabContents .tabSelected, .tabContents .tabContents {\n background: #700;\n color: #fff;\n}\n\n.tabContents .tabContents {\n color: #eeb;\n}\n\n/*}}}*/\n/***\n!Main Menu /%=================================================%/\n***/\n/*{{{*/\n#mainMenu {\n background: #700;\n color: #fff;\n border-right: 3px solid #500;\n}\n\n#mainMenu * {\n color: #fff;\n}\n\n#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\n border: none;\n border-bottom: 1px solid #500;\n border-top: 1px solid #900;\n}\n\n#mainMenu a:hover,\n#mainMenu a.button:hover {\n background-color: #b00;\n color: #fff;\n}\n\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n color: #000;\n background: #eeb;\n border-right: 3px solid #bb8;\n border-bottom: 3px solid #520;\n}\n\n#sidebarOptions .sliderPanel {\n background: #fff;\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: #700;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #fff;\n background: #700;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #700;\n background: #fff;\n}\n\n#sidebarOptions a {\n color: #700;\n border: none;\n}\n\n#sidebarOptions a:hover, #sidebarOptions a:active {\n color: #fff;\n background: #700;\n}\n\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n border-right: 3px solid #da1;\n border-bottom: 3px solid #a80;\n background: #ffe72f;\n color: #014;\n}\n\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #cf6;\n border: none;\n}\n\n.popup hr {\n color: #000;\n}\n\n.popup li.disabled {\n color: #666;\n background: #cf6;\n}\n\n.popup li a, .popup li a:visited {\n color: #000;\n border: 1px outset #cf6;\n background: #cf6;\n}\n\n.popup li a:hover {\n color: #000;\n border: 1px outset #cf6;\n background: #ef9;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler {\n background: #fff;\n border-right: 3px solid #aaa;\n border-bottom: 3px solid #555;\n}\n\n.title {\n color: #900;\n}\n\n.toolbar {\n color: #000;\n}\n\n.toolbar .button {\n background: #eeb /*#cf6*/;\n border: 1px outset #eeb /*#cf6*/;\n}\n\n.toolbar .button:hover {\n background: #700 /*#ef9*/;\n color: #fff;\n}\n\n#mainMenu .calendar { border: 1px solid white; }\n#mainMenu .calendar, #mainMenu .calendar tr, #mainMenu .calendar td, #mainMenu .calendar a {\n}\n\n/*}}}*/\n\n/***\n!Additional print overrides for fancy style /%==============================================%/\n***/\n/*{{{*/\n\n@media print {\n\n.tiddler {\n /* get rid of our fancy tiddler outline */\n border: none;\n}\n\n}\n/*}}}*/\n
This trend was furthered by Georgy Zeidan, __a Lebanese Christian writer__ who immigrated with his family to Egypt following the Damascus riots of 1860. In the early twentieth century, Zeidan serialized his historical novels in the Egyptian newspaper al-Hilal. These novels were extremely popular because of their clarity of language, simple structure, and the author's vivid imagination.\n(http://www.search.com/reference/Arabic_literature)
[img[http://tbn0.google.com/images?q=tbn:XfetxXzKS3fEjM:http://www.catholicauthors.com/images/gkc2.jpg]]\n(1874-1936)\n\n[[His writings online|http://www.gutenberg.org/browse/authors/c#a80]]\n\n__Students' Summaries__\n[[Zina Kirko on "The Everlasting Man"]]
[img[http://tbn0.google.com/images?q=tbn:qOLZen3J8t79jM:http://www.utwente.nl/sg/archief/Archief%2520voorjaar%25202006/Hannah%2520Arendt.doc/Hannah%2520Arendt-1.gif]]
<<<\nHistorical theology is a branch of theological studies that investigates the socio-historical and cultural mechanisms that give rise to theological ideas, systems, and statements. Research and method in this field focus on the relationship between theology and context as well as the major theological influences upon the figures and topics studied. Historical theologians are thus concerned with the historical development of theology. \n<html><small>Retrieved from: <a href: 'http://en.wikipedia.org/wiki/Historical_theology'>wikipedia</a> 05/16/2007</small></html>\n<<<\n\nA Syllabus from Western Seminary, Portland, Oregon:\n[[Jan Verbruggen: Disciplines of Evangelical Scholarship|http://www.google.com/search?q=cache:9EPmTHzTBhoJ:westernseminary.edu/Syllabi/PDX/Spring_2007/ths697_sp07.doc+THS+697+TH.M.+Integration+Seminar&hl=en&ct=clnk&cd=1&client=firefox-a]]\n\nAssisting literature as a preparation for the course on //''Historical Theology''//:\n[img[http://www.standrewsbookshop.co.uk/covers/0851114504.jpg]] \n[[D Lewis & A McGrath (eds.): Doing Theology for the People of God|http://www.standrewsbookshop.co.uk/pages/data.asp?layout=product.htm&IdISBN.exact=0851114504]]\n\n[[The Journal: Review and Expositor|http://www.rande.org/]]\n[[Who is Timothy George?|http://www.beesondivinity.com/templates/cusbeeson/details.asp?id=25215&PID=109040]]\n\n[img[http://www.google.com/product_image?q=http://media.bestprices.com/isbn/88/0802846688.gif&size=2&dhm=882a26c5&hl=en]]\n[[D H Williams: Retrieving the Tradition and Renewing Evangelicalism: A Primer for Suspicious Protestants|http://www.paradoxalpress.com/store/book/0802846688.htmd]]\n[[Who is D H Williams?|http://www.marshillaudio.org/resources/guest_detail.asp?ID=421]]\n[[Review of D H Williams' Retrieving the Tradition and Renewing Evangelicalism|http://findarticles.com/p/articles/mi_qa3818/is_200104/ai_n8941208]]\n[[Another Review|http://www.firstthings.com/article.php3?id_article=2658]]\n
/***\n|''Name:''|ImportTiddlersPlugin|\n|''Source:''|http://www.TiddlyTools.com/#ImportTiddlersPlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nWhen many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. It can also be very extremely helpful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\nThis plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. An interactive control panel lets you pick a document to import from, and then select which tiddlers to import, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles. Automatically add tags to imported tiddlers so they are easy to find later on. Generates a detailed report of import 'history' in ImportedTiddlers.\n!!!!!Interactive interface\n<<<\n{{{<<importTiddlers>>}}} or {{{<<importTiddlers core>>}}}\ninvokes the built-in importTiddlers macro (TW2.1.x+). If installed in documents using TW2.0.x or earlier, fallback is to use 'link' display (see below)\n\n{{{<<importTiddlers link>>}}}\ncreates "import tiddlers" link that when clicked to show/hide import control panel\n\n{{{<<importTiddlers inline>>}}}\ncreates import control panel directly in tiddler content\n\n<<importTiddlers inline>>\n\nPress ''[browse]'' to select a TiddlyWiki document file to import. You can also type in the path/filename or a remote document URL (starting with http://)and press ''[open]''. //Note: There may be some delay to permit the browser time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//\n\nSelect one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.\n\n''select: all, new, changes, or differences''\n\nYou can click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in:\n>''"all"'' selects ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' selects only tiddlers that exist in both documents but that are newer in the source document\n>''"differences"'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)\n\n''Import Tagging:''\n\nTiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the "add tags" input field, and then //added// to the existing tags for each tiddler as it is imported.\n\n''Skip, Rename, Merge, or Replace:''\n\nWhen importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.\n\nTo bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.\n\n//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//\n\n''Import Report History''\n\nWhen tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.\n\nWhen the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.\n\nIf a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.\n\nNote: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the "create a report" checkbox before beginning the import processing.\n\n<<<\n!!!!!non-interactive 'load tiddlers' macro\n<<<\nUseful for automated installation/update of plugins and other tiddler content.\n\n{{{<<loadTiddlers "label:load tiddlers from %0" http://www.tiddlytools.com/example.html confirm>>}}}\n<<loadTiddlers "label:load tiddlers from %0" http://www.tiddlytools.com/example.html confirm>>\n\nSyntax:\n{{{<<loadTiddlers label:text prompt:text filter source quiet confirm>>}}}\n\n''label:text'' and ''prompt:text''\n>defines link text and tooltip (prompt) that can be clicked to trigger the load tiddler processing. If a label is NOT provided, then no link is created and loadTiddlers() is executed whenever the containing tiddler is rendered.\n''filter'' (optional) determines which tiddlers will be automatically selected for importing. Use one of the following keywords:\n>''"all"'' retrieves ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler\n>''"updates"'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)\n>''"tiddler:~TiddlerName"'' retrieves only the specific tiddler named in the parameter.\n>''"tag:text"'' retrieves only the tiddlers tagged with the indicated text.\n''source'' (required) is the location of the imported document. It can be either a local document path/filename in whatever format your system requires, or a remote web location (starting with "http://" or "https://")\n>use the keyword ''ask'' to prompt for a source location whenever the macro is invoked\n''"quiet"'' (optional)\n>supresses all status message during the import processing (e.g., "opening local file...", "found NN tiddlers..." etc). Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified. This ensures that changes to your document cannot occur without any visible indication at all.\n''"confirm"'' (optional)\n>adds interactive confirmation. A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.\n<<<\n!!!!!Installation\n<<<\ncopy/paste the following tiddlers into your document:\n''ImportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < ImportTiddlers > >" macro^^\n\n''Quick Installation Tip #1:''\nIf you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.\n<<<\n!!!!!Revision History\n<<<\n''2006.11.14 [3.1.2]'' fix macro handler parameter declaration (double-pasted param list corrupts IE)\n''2006.11.13 [3.1.1]'' use apply() method to invoke hijacked core handler\n''2006.11.13 [3.1.0]'' hijack TW2.1 built-in importTiddlers.handler() so it can co-exist with the plugin interface 'panel'. Use macro without params (or use 'core' keyword) to display built-in core interface. Use new "link" param to embed "import tiddlers" link that shows floating panel when clicked. Renamed a few plugin utility functions so they don't collide with core internal functions. More code restructuring to come.\n''2006.10.12 [3.0.8]'' in readTiddlersFromHTML(), fallback to find end of store area by matching "/body" when POST-BODY-START is not present (backward compatibility for older documents)\n''2006.09.10 [3.0.7]'' in readTiddlersFromHTML(), find end of store area by matching "POST-BODY-START" instead of "/body" \n''2006.08.16 [3.0.6]'' Use higher-level store.saveTiddler() instead of store.addTiddler() to avoid conflicts with ZW and other adaptations that hijack low-level tiddler handling. Also, in CreateImportPanel(), no longer register notify to "refresh listbox after every tiddler change" (left over from old 'auto-filtered' list handling). Thanks to Bob McElrath for report/solution.\n''2006.07.29 [3.0.5]'' added noChangeMsg to loadTiddlers processing. if not 'quiet' mode, reports skipped tiddlers.\n''2006.04.18 [3.0.4]'' in loadTiddlers.handler, fixed parsing of "prompt:" param. Also, corrected parameters mismatch in loadTiddlers() callback function definition (order of params was wrong, resulting in filters NOT being applied)\n''2006.04.12 [3.0.3]'' moved many display messages to macro properties for easier L10N translations via 'lingo' definitions.\n''2006.04.12 [3.0.2]'' additional refactoring of 'core candidate' code. Proposed API now defines "loadRemoteFile()" for XMLHttpRequest processing with built in fallback for handling local filesystem access, and readTiddlersFromHTML() to process the resulting source HTML content.\n''2006.04.04 [3.0.1]'' in refreshImportList(), when using [by tags], tiddlers without tags are now included in a new "untagged" psuedo-tag list section\n''2006.04.04 [3.0.0]'' Separate non-interactive {{{<<importTiddlers...>>}}} macro functionality for incorporation into TW2.1 core and renamed as {{{<<loadTiddlers>>}}} macro. New parameters for loadTiddlers: ''label:text'' and ''prompt:text'' for link creation, ''ask'' for filename/URL, ''tag:text'' for filtering, "confirm" for accept/reject of individual inbound tiddlers. Also, ImportedTiddlers report generator output has been simplified and "importReplace/importPublic" tags and associated "force" param (which were rarely, if ever, used) has been dropped.\n''2006.03.30 [2.9.1]'' when extracting store area from remote URL, look for "</body>" instead of "</body>\sn</html>" so it will match even if the "\sn" is absent from the source.\n''2006.03.30 [2.9.0]'' added optional 'force' macro param. When present, autoImportTiddlers() bypasses the checks for importPublic and importReplace. Based on a request from Tom Otvos.\n''2006.03.28 [2.8.1]'' in loadImportFile(), added checks to see if 'netscape' and 'x.overrideMimeType()' are defined (IE does *not* define these values, so we bypass this code)\nAlso, when extracting store area from remote URL, explicitly look for "</body>\sn</html>" to exclude any extra content that may have been added to the end of the file by hosting environments such as GeoCities. Thanks to Tom Otvos for finding these bugs and suggesting some fixes.\n''2006.02.21 [2.8.0]'' added support for "tiddler:TiddlerName" filtering parameter in auto-import processing\n''2006.02.21 [2.7.1]'' Clean up layout problems with IE. (Use tables for alignment instead of SPANs styled with float:left and float:right)\n''2006.02.21 [2.7.0]'' Added "local file" and "web server" radio buttons for selecting dynamic import source controls in ImportPanel. Default file control is replaced with URL text input field when "web server" is selected. Default remote document URL is defined in SiteURL tiddler. Also, added option for prepending SiteProxy URL as prefix to remote URL to mask cross-domain document access (requires compatible server-side script)\n''2006.02.17 [2.6.0]'' Removed "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.\n''2006.02.16 [2.5.4]'' added checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.\n''2006.02.14 [2.5.3]'' FF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()\n''2006.02.10 [2.5.2]'' corrected unintended global variable in importReport().\n''2006.02.05 [2.5.1]'' moved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2006.01.18 [2.5.0]'' added checkbox for "create a report". Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.\n''2006.01.15 [2.4.1]'' added "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic\n''2006.01.15 [2.4.0]'' Added support for tagging individual tiddlers with importSkip, importReplace, and/or importPrivate to control which tiddlers can be overwritten or shared with others when using auto-import macro syntax. Defaults are to SKIP overwriting existing tiddlers with imported tiddlers, and ALLOW your tiddlers to be auto-imported by others.\n''2006.01.15 [2.3.2]'' Added "ask" parameter to confirm each tiddler before importing (for use with auto-importing)\n''2006.01.15 [2.3.1]'' Strip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. Makes loading more efficient by reducing the document size and by preventing the import document from executing its TW initialization (including plugins). Seems to resolve the "Found 0 tiddlers" problem. Also, when importing local documents, use convertUTF8ToUnicode() to convert the file contents so support international characters sets.\n''2006.01.12 [2.3.0]'' Reorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest. Let's processing continue while waiting for remote hosts to respond to URL requests. Added non-interactive 'batch' macro mode, using parameters to specify which tiddlers to import, and from what document source. Improved error messages and diagnostics, plus an optional 'quiet' switch for batch mode to eliminate //most// feedback.\n''2006.01.11 [2.2.0]'' Added "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck\n''2006.01.09 [2.1.1]'' When a URL is typed in, and then the "open" button is pressed, it generates both an onChange event for the file input and a click event for open button. This results in multiple XMLHttpRequest()'s which seem to jam things up quite a bit. I removed the onChange handling for file input field. To open a file (local or URL), you must now explicitly press the "open" button in the control panel.\n''2006.01.08 [2.1.0]'' IMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements. Adapted from example code and techniques courtesy of Jonny LeRoy.\n''2006.01.06 [2.0.2]'' When refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.\n''2006.01.04 [2.0.1]'' When "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.\n''2005.12.27 [2.0.0]'' Update for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n''2005.12.22 [1.3.1]'' tweak formatting in importReport() and add 'discard report' link to output\n''2005.12.03 [1.3.0]'' Dynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding. Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)\n''2005.11.29 [1.2.1]'' fixed formatting of 'detail info' in importReport()\n''2005.11.11 [1.2.0]'' added 'inline' param to embed controls in a tiddler\n''2005.11.09 [1.1.0]'' only load HTML and CSS the first time the macro handler is called. Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.\n''2005.10.25 [1.0.5]'' fixed typo in importReport() that prevented reports from being generated\n''2005.10.09 [1.0.4]'' combined documentation with plugin code instead of using separate tiddlers\n''2005.08.05 [1.0.3]'' moved CSS and HTML definitions into plugin code instead of using separate tiddlers\n''2005.07.27 [1.0.2]'' core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()\n''2005.07.23 [1.0.1]'' added parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]'' Initial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n// // ''MACRO DEFINITION''\n//{{{\n// Version\nversion.extensions.importTiddlers = {major: 3, minor: 1, revision: 2, date: new Date(2006,11,14)};\n\n// IE needs explicit global scoping for functions/vars called from browser events\nwindow.onClickImportButton=onClickImportButton;\nwindow.refreshImportList=refreshImportList;\n\n// default cookie/option values\nif (!config.options.chkImportReport) config.options.chkImportReport=true;\n\n// fixups for TW2.0.x and earlier\nif (window.merge==undefined) window.merge=function(dst,src,preserveExisting)\n { for (p in src) if (!preserveExisting||dst[p]===undefined) dst[p]=src[p]; return dst; }\nif (config.macros.importTiddlers==undefined) config.macros.importTiddlers={ };\n\nmerge(config.macros.importTiddlers,{\n label: "import tiddlers",\n prompt: "Copy tiddlers from another document",\n foundMsg: "Found %0 tiddlers in %1",\n countMsg: "%0 tiddlers selected for import",\n importedMsg: "Imported %0 of %1 tiddlers from %2",\n src: "", // path/filename or URL of document to import (retrieved from SiteUrl tiddler)\n proxy: "", // URL for remote proxy script (retrieved from SiteProxy tiddler)\n useProxy: false, // use specific proxy script in front of remote URL\n inbound: null, // hash-indexed array of tiddlers from other document\n newTags: "", // text of tags added to imported tiddlers\n addTags: true, // add new tags to imported tiddlers\n listsize: 8, // # of lines to show in imported tiddler list\n importTags: true, // include tags from remote source document when importing a tiddler\n keepTags: true, // retain existing tags when replacing a tiddler\n index: 0, // current processing index in import list\n sort: "" // sort order for imported tiddler listbox\n});\n\nif (config.macros.importTiddlers.coreHandler==undefined)\n config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.handler; // save built-in handler\n\nconfig.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n if (!params[0] || params[0].toLowerCase()=='core') { // default to built in\n if (config.macros.importTiddlers.coreHandler)\n config.macros.importTiddlers.coreHandler.apply(this,arguments);\n else \n createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);\n }\n else if (params[0]=='link') // show link to floating panel\n createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);\n else if (params[0]=='inline') {// show panel as INLINE tiddler content\n createImportPanel(place);\n document.getElementById("importPanel").style.position="static";\n document.getElementById("importPanel").style.display="block";\n }\n else config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers\n}\n//}}}\n\n// // ''INTERFACE DEFINITION''\n// // Handle link click to create/show/hide control panel\n//{{{\nfunction onClickImportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("importPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createImportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n// // Create control panel: HTML, CSS\n//{{{\nfunction createImportPanel(place) {\n var panel=document.getElementById("importPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.importTiddlers.css,"importTiddlers");\n panel=createTiddlyElement(place,"span","importPanel",null,null)\n panel.innerHTML=config.macros.importTiddlers.html;\n refreshImportList();\n var siteURL=store.getTiddlerText("SiteUrl"); if (!siteURL) siteURL="";\n document.getElementById("importSourceURL").value=siteURL;\n config.macros.importTiddlers.src=siteURL;\n var siteProxy=store.getTiddlerText("SiteProxy"); if (!siteProxy) siteProxy="SiteProxy";\n document.getElementById("importSiteProxy").value=siteProxy;\n config.macros.importTiddlers.proxy=siteProxy;\n return panel;\n}\n//}}}\n\n// // CSS\n//{{{\nconfig.macros.importTiddlers.css = '\s\n#importPanel {\s\n display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em;\s\n}\s\n#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\s\n#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\s\n#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\s\n#importPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#importPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\s\n#importPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\s\n#importPanel .rad { width:auto; }\s\n#importPanel .chk { width:auto; margin:1px;border:0; }\s\n#importPanel .btn { width:auto; }\s\n#importPanel .btn1 { width:98%; }\s\n#importPanel .btn2 { width:48%; }\s\n#importPanel .btn3 { width:32%; }\s\n#importPanel .btn4 { width:24%; }\s\n#importPanel .btn5 { width:19%; }\s\n#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\s\n#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\s\n#importCollisionPanel { display:none; margin:0.5em 0em 0em 0em; }\s\n';\n//}}}\n\n// // HTML \n//{{{\nconfig.macros.importTiddlers.html = '\s\n<!-- source and report -->\s\n<table><tr><td align=left>\s\n import from\s\n <input type="radio" class="rad" name="importFrom" value="file" CHECKED\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=!this.checked?\s'block\s':\s'none\s'"> local file\s\n <input type="radio" class="rad" name="importFrom" value="http"\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=!this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=this.checked?\s'block\s':\s'none\s'"> web server\s\n</td><td align=right>\s\n <input type=checkbox class="chk" id="chkImportReport" checked\s\n onClick="config.options[\s'chkImportReport\s']=this.checked;"> create a report\s\n</td></tr></table>\s\n<!-- import from local file -->\s\n<div id="importLocalPanel" style="display:block;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\nlocal document path/filename:<br>\s\n<input type="file" id="fileImportSource" size=57 style="width:100%"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<!-- import from http server -->\s\n<div id="importHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\n<table><tr><td align=left>\s\n remote document URL:<br>\s\n</td><td align=right>\s\n <input type="checkbox" class="chk" id="importUseProxy"\s\n onClick="config.macros.importTiddlers.useProxy=this.checked;\s\n document.getElementById(\s'importSiteProxy\s').style.display=this.checked?\s'block\s':\s'none\s'"> use a proxy script\s\n</td></tr></table>\s\n<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\s\n onKeyUp="config.macros.importTiddlers.proxy=this.value"\s\n onChange="config.macros.importTiddlers.proxy=this.value;">\s\n<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<table><tr><td align=left>\s\n select:\s\n <a href="JavaScript:;" id="importSelectAll"\s\n onclick="onClickImportButton(this)" title="select all tiddlers">\s\n &nbsp;all&nbsp;</a>\s\n <a href="JavaScript:;" id="importSelectNew"\s\n onclick="onClickImportButton(this)" title="select tiddlers not already in destination document">\s\n &nbsp;added&nbsp;</a> \s\n <a href="JavaScript:;" id="importSelectChanges"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been updated in source document">\s\n &nbsp;changes&nbsp;</a> \s\n <a href="JavaScript:;" id="importSelectDifferences"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been added or are different from existing tiddlers">\s\n &nbsp;differences&nbsp;</a> \s\n <a href="JavaScript:;" id="importToggleFilter"\s\n onclick="onClickImportButton(this)" title="show/hide selection filter">\s\n &nbsp;filter&nbsp;</a> \s\n</td><td align=right>\s\n <a href="JavaScript:;" id="importListSmaller"\s\n onclick="onClickImportButton(this)" title="reduce list size">\s\n &nbsp;&#150;&nbsp;</a>\s\n <a href="JavaScript:;" id="importListLarger"\s\n onclick="onClickImportButton(this)" title="increase list size">\s\n &nbsp;+&nbsp;</a>\s\n <a href="JavaScript:;" id="importListMaximize"\s\n onclick="onClickImportButton(this)" title="maximize/restore list size">\s\n &nbsp;=&nbsp;</a>\s\n</td></tr></table>\s\n<select id="importList" size=8 multiple\s\n onchange="setTimeout(\s'refreshImportList(\s'+this.selectedIndex+\s')\s',1)">\s\n <!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\s\n</select>\s\n<input type=checkbox class="chk" id="chkAddTags" checked\s\n onClick="config.macros.importTiddlers.addTags=this.checked;">add new tags &nbsp;\s\n<input type=checkbox class="chk" id="chkImportTags" checked\s\n onClick="config.macros.importTiddlers.importTags=this.checked;">import source tags &nbsp;\s\n<input type=checkbox class="chk" id="chkKeepTags" checked\s\n onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing tags<br>\s\n<input type=text id="txtNewTags" size=15 onKeyUp="config.macros.importTiddlers.newTags=this.value" autocomplete=off>\s\n<div align=center>\s\n <input type=button id="importOpen" class="importButton" style="width:32%" value="open"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importStart" class="importButton" style="width:32%" value="import"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importClose" class="importButton" style="width:32%" value="close"\s\n onclick="onClickImportButton(this)">\s\n</div>\s\n<div id="importCollisionPanel">\s\n tiddler already exists:\s\n <input type=text id="importNewTitle" size=15 autocomplete=off">\s\n <div align=center>\s\n <input type=button id="importSkip" class="importButton" style="width:23%" value="skip"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importRename" class="importButton" style="width:23%" value="rename"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importMerge" class="importButton" style="width:23%" value="merge"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importReplace" class="importButton" style="width:23%" value="replace"\s\n onclick="onClickImportButton(this)">\s\n </div>\s\n</div>\s\n';\n//}}}\n\n// // Control interactions\n//{{{\nfunction onClickImportButton(which)\n{\n // DEBUG alert(which.id);\n var theList = document.getElementById('importList');\n if (!theList) return;\n var thePanel = document.getElementById('importPanel');\n var theCollisionPanel = document.getElementById('importCollisionPanel');\n var theNewTitle = document.getElementById('importNewTitle');\n var count=0;\n switch (which.id)\n {\n case 'fileImportSource':\n case 'importOpen': // load import source into hidden frame\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n if (config.macros.importTiddlers.src=="") break;\n // Load document into hidden iframe so we can read it's DOM and fill the list\n config.macros.importTiddlers.loadRemoteFile(config.macros.importTiddlers.src, function(src,txt) {\n var tiddlers = readTiddlersFromHTML(txt);\n var count=tiddlers?tiddlers.length:0;\n displayMessage(config.macros.importTiddlers.foundMsg.format([count,src]));\n config.macros.importTiddlers.inbound=tiddlers;\n window.refreshImportList(0);\n });\n break;\n case 'importSelectAll': // select all tiddler list items (i.e., not headings)\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count++;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectNew': // select tiddlers not in current document\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=!store.tiddlerExists(theList.options[t].value);\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value==""||!store.tiddlerExists(theList.options[t].value)) continue;\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified>0); // updated tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n if (!store.tiddlerExists(theList.options[t].value)) { theList.options[t].selected=true; count++; continue; }\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified!=0); // changed tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importToggleFilter': // show/hide filter\n case 'importFilter': // apply filter\n alert("coming soon!");\n break;\n case 'importStart': // initiate the import processing\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.index=0;\n config.macros.importTiddlers.index=importTiddlers(0);\n importStopped();\n break;\n case 'importClose': // unload imported tiddlers or hide the import control panel\n // if imported tiddlers not loaded, close the import control panel\n if (!config.macros.importTiddlers.inbound) { thePanel.style.display='none'; break; }\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n break;\n case 'importSkip': // don't import the tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status='skipped after asking'; // mark item as skipped\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index+1); // resume with NEXT item\n importStopped();\n break;\n case 'importRename': // change name of imported tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status = 'renamed from '+theImported.title; // mark item as renamed\n theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title\n theItem.value = theNewTitle.value; // change the listbox item text\n theItem.text = theNewTitle.value; // change the listbox item text\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importMerge': // join existing and imported tiddler content\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n var theText = theExisting.text+'\sn----\sn^^merged from: ';\n theText +='[['+config.macros.importTiddlers.src+'#'+theItem.value+'|'+config.macros.importTiddlers.src+'#'+theItem.value+']]^^\sn';\n theText +='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\sn'+theImported.text;\n var theDate = new Date();\n var theTags = theExisting.getTags()+' '+theImported.getTags();\n theImported.set(null,theText,null,theDate,theTags);\n theImported.status = 'merged with '+theExisting.title; // mark item as merged\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");\n theImported.status += ' by '+theExisting.modifier;\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with this item\n importStopped();\n break;\n case 'importReplace': // substitute imported tiddler for existing tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n theImported.status = 'replaces '+theExisting.title; // mark item for replace\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");\n theImported.status += ' by '+theExisting.modifier;\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importListSmaller': // decrease current listbox size, minimum=5\n if (theList.options.length==1) break;\n theList.size-=(theList.size>5)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListLarger': // increase current listbox size, maximum=number of items in list\n if (theList.options.length==1) break;\n theList.size+=(theList.size<theList.options.length)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListMaximize': // toggle listbox size between current and maximum\n if (theList.options.length==1) break;\n theList.size=(theList.size==theList.options.length)?config.macros.importTiddlers.listsize:theList.options.length;\n break;\n }\n}\n//}}}\n\n// // refresh listbox\n//{{{\nfunction refreshImportList(selectedIndex)\n{\n var theList = document.getElementById("importList");\n if (!theList) return;\n // if nothing to show, reset list content and size\n if (!config.macros.importTiddlers.inbound) \n {\n while (theList.length > 0) { theList.options[0] = null; }\n theList.options[0]=new Option('please open a document...',"",false,false);\n theList.size=config.macros.importTiddlers.listsize;\n return;\n }\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) config.macros.importTiddlers.sort='title'; // heading\n if (selectedIndex==1) config.macros.importTiddlers.sort='title';\n if (selectedIndex==2) config.macros.importTiddlers.sort='modified';\n if (selectedIndex==3) config.macros.importTiddlers.sort='tags';\n if (selectedIndex>3) {\n // display selected tiddler count\n for (var t=0,count=0; t < theList.options.length; t++) count+=(theList.options[t].selected&&theList.options[t].value!="")?1:0;\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n return; // no refresh needed\n }\n\n // get the alphasorted list of tiddlers (optionally, filter out unchanged tiddlers)\n var tiddlers=config.macros.importTiddlers.inbound;\n tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=new Option(tiddlers.length+' tiddler'+((tiddlers.length!=1)?'s are':' is')+' in the document',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="title" )?">":indent)+' [by title]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="modified")?">":indent)+' [by date]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="tags")?">":indent)+' [by tags]',"",false,false);\n // output the tiddler list\n switch(config.macros.importTiddlers.sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modified":\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++) {\n var tiddler = tiddlers[t];\n var theSection = tiddler.modified.toLocaleDateString();\n if (theSection != lastSection) {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n case "tags":\n var theTitles = {}; // all tiddler titles, hash indexed by tag value\n var theTags = new Array();\n for(var t=0; t<tiddlers.length; t++) {\n var title=tiddlers[t].title;\n var tags=tiddlers[t].tags;\n if (!tags || !tags.length) {\n if (theTitles["untagged"]==undefined) { theTags.push("untagged"); theTitles["untagged"]=new Array(); }\n theTitles["untagged"].push(title);\n }\n else for(var s=0; s<tags.length; s++) {\n if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }\n theTitles[tags[s]].push(title);\n }\n }\n theTags.sort();\n for(var tagindex=0; tagindex<theTags.length; tagindex++) {\n var theTag=theTags[tagindex];\n theList.options[i++]=new Option(theTag,"",false,false);\n for(var t=0; t<theTitles[theTag].length; t++)\n theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n if (theList.size<config.macros.importTiddlers.listsize) theList.size=config.macros.importTiddlers.listsize;\n if (theList.size>theList.options.length) theList.size=theList.options.length;\n}\n//}}}\n\n// // re-entrant processing for handling import with interactive collision prompting\n//{{{\nfunction importTiddlers(startIndex)\n{\n if (!config.macros.importTiddlers.inbound) return -1;\n\n var theList = document.getElementById('importList');\n if (!theList) return;\n var t;\n // if starting new import, reset import status flags\n if (startIndex==0)\n for (var t=0;t<config.macros.importTiddlers.inbound.length;t++)\n config.macros.importTiddlers.inbound[t].status="";\n for (var i=startIndex; i<theList.options.length; i++)\n {\n // if list item is not selected or is a heading (i.e., has no value), skip it\n if ((!theList.options[i].selected) || ((t=theList.options[i].value)==""))\n continue;\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==t) break;\n var inbound = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(inbound.title);\n // avoid redundant import for tiddlers that are listed multiple times (when 'by tags')\n if (inbound.status=="added")\n continue;\n // don't import the "ImportedTiddlers" history from the other document...\n if (inbound.title=='ImportedTiddlers')\n continue;\n // if tiddler exists and import not marked for replace or merge, stop importing\n if (theExisting && (inbound.status.substr(0,7)!="replace") && (inbound.status.substr(0,5)!="merge"))\n return i;\n // assemble tags (remote + existing + added)\n var newTags = "";\n if (config.macros.importTiddlers.importTags)\n newTags+=inbound.getTags() // import remote tags\n if (config.macros.importTiddlers.keepTags && theExisting)\n newTags+=" "+theExisting.getTags(); // keep existing tags\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newTags+=" "+config.macros.importTiddlers.newTags; // add new tags\n inbound.set(null,null,null,null,newTags.trim());\n // set the status to 'added' (if not already set by the 'ask the user' UI)\n inbound.status=(inbound.status=="")?'added':inbound.status;\n // do the import!\n // OLD: store.addTiddler(in); store.setDirty(true);\n store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags);\n store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value\n }\n return(-1); // signals that we really finished the entire list\n}\n//}}}\n\n//{{{\nfunction importStopped()\n{\n var theList = document.getElementById('importList');\n var theNewTitle = document.getElementById('importNewTitle');\n if (!theList) return;\n if (config.macros.importTiddlers.index==-1)\n importReport(); // import finished... generate the report\n else\n {\n // DEBUG alert('import stopped at: '+config.macros.importTiddlers.index);\n // import collision... show the collision panel and set the title edit field\n document.getElementById('importCollisionPanel').style.display='block';\n theNewTitle.value=theList.options[config.macros.importTiddlers.index].value;\n }\n}\n//}}}\n\n// // ''REPORT GENERATOR''\n//{{{\nfunction importReport(quiet)\n{\n if (!config.macros.importTiddlers.inbound) return;\n // DEBUG alert('importReport: start');\n\n // if import was not completed, the collision panel will still be open... close it now.\n var panel=document.getElementById('importCollisionPanel'); if (panel) panel.style.display='none';\n\n // get the alphasorted list of tiddlers\n var tiddlers = config.macros.importTiddlers.inbound;\n // gather the statistics\n var count=0;\n for (var t=0; t<tiddlers.length; t++)\n if (tiddlers[t].status && tiddlers[t].status.trim().length && tiddlers[t].status.substr(0,7)!="skipped") count++;\n\n // generate a report\n if (count && config.options.chkImportReport) {\n // get/create the report tiddler\n var theReport = store.getTiddler('ImportedTiddlers');\n if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text = ""; }\n // format the report content\n var now = new Date();\n var newText = "On "+now.toLocaleString()+", "+config.options.txtUserName\n newText +=" imported "+count+" tiddler"+(count==1?"":"s")+" from\sn[["+config.macros.importTiddlers.src+"|"+config.macros.importTiddlers.src+"]]:\sn";\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newText += "imported tiddlers were tagged with: \s""+config.macros.importTiddlers.newTags+"\s"\sn";\n newText += "<<<\sn";\n for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status) newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\sn";\n newText += "<<<\sn";\n// 20060918 ELS: DON'T ADD "discard" BUTTON TO REPORT\n// newText += "<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n// newText += "onclick=\s"story.closeTiddler('"+theReport.title+"'); store.deleteTiddler('"+theReport.title+"');\s" ";\n// newText += "value=\s"discard report\s"></html>";\n // update the ImportedTiddlers content and show the tiddler\n theReport.text = newText+((theReport.text!="")?'\sn----\sn':"")+theReport.text;\n theReport.modifier = config.options.txtUserName;\n theReport.modified = new Date();\n // OLD: store.addTiddler(theReport);\n store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags);\n if (!quiet) { story.displayTiddler(null,theReport.title,1,null,null,false); story.refreshTiddler(theReport.title,1,true); }\n }\n\n // reset status flags\n for (var t=0; t<config.macros.importTiddlers.inbound.length; t++) config.macros.importTiddlers.inbound[t].status="";\n\n // refresh display if tiddlers have been loaded\n if (count) { store.setDirty(true); store.notifyAll(); }\n\n // always show final message when tiddlers were actually loaded\n if (count) displayMessage(config.macros.importTiddlers.importedMsg.format([count,tiddlers.length,config.macros.importTiddlers.src]));\n}\n//}}}\n\n/***\n!!!!! non-interactive 'load tiddlers' macro\n***/\n//{{{\n// default cookie/option values\nif (!config.options.chkImportReport) config.options.chkImportReport=true;\n\nconfig.macros.loadTiddlers = {\n label: "",\n prompt: "add/update tiddlers from '%0'",\n askMsg: "Please enter a local path/filename or a remote URL",\n openMsg: "Opening %0",\n openErrMsg: "Could not open %0 - error=%1",\n readMsg: "Read %0 bytes from %1",\n foundMsg: "Found %0 tiddlers in %1",\n nochangeMsg: "'%0' is up-to-date... skipped.",\n loadedMsg: "Loaded %0 of %1 tiddlers from %2"\n};\n\nconfig.macros.loadTiddlers.handler = function(place,macroName,params) {\n var label=(params[0] && params[0].substr(0,6)=='label:')?params.shift().substr(6):this.label;\n var prompt=(params[0] && params[0].substr(0,7)=='prompt:')?params.shift().substr(7):this.prompt;\n var filter="updates";\n if (params[0] && (params[0]=='all' || params[0]=='new' || params[0]=='changes' || params[0]=='updates'\n || params[0].substr(0,8)=='tiddler:' || params[0].substr(0,4)=='tag:'))\n filter=params.shift();\n var src=params.shift(); if (!src || !src.length) return; // filename is required\n var quiet=(params[0]=="quiet"); if (quiet) params.shift();\n var ask=(params[0]=="confirm"); if (ask) params.shift();\n var force=(params[0]=="force"); if (force) params.shift();\n if (label.trim().length) {\n // link triggers load tiddlers from another file/URL and then applies filtering rules to add/replace tiddlers in the store\n createTiddlyButton(place,label.format([src]),prompt.format([src]), function() {\n if (src=="ask") src=prompt(config.macros.loadTiddlers.askMsg);\n config.macros.importTiddlers.loadRemoteFile(src,loadTiddlers,quiet,ask,filter,force);\n })\n }\n else {\n // load tiddlers from another file/URL and then apply filtering rules to add/replace tiddlers in the store\n if (src=="ask") src=prompt(config.macros.loadTiddlers.askMsg);\n config.macros.importTiddlers.loadRemoteFile(src,loadTiddlers,quiet,ask,filter,force);\n }\n}\n\nfunction loadTiddlers(src,html,quiet,ask,filter,force)\n{\n var tiddlers = readTiddlersFromHTML(html);\n var count=tiddlers?tiddlers.length:0;\n if (!quiet) displayMessage(config.macros.loadTiddlers.foundMsg.format([count,src]));\n var count=0;\n if (tiddlers) for (var t=0;t<tiddlers.length;t++) {\n var inbound = tiddlers[t];\n var theExisting = store.getTiddler(inbound.title);\n if (inbound.title=='ImportedTiddlers')\n continue; // skip "ImportedTiddlers" history from the other document...\n\n // apply the all/new/changes/updates filter (if any)\n if (filter && filter!="all") {\n if ((filter=="new") && theExisting) // skip existing tiddlers\n continue;\n if ((filter=="changes") && !theExisting) // skip new tiddlers\n continue;\n if ((filter.substr(0,4)=="tag:") && inbound.tags.find(filter.substr(4))==null) // must match specific tag value\n continue;\n if ((filter.substr(0,8)=="tiddler:") && inbound.title!=filter.substr(8)) // must match specific tiddler name\n continue;\n if (!force && store.tiddlerExists(inbound.title) && ((theExisting.modified.getTime()-inbound.modified.getTime())>=0))\n { if (!quiet) displayMessage(config.macros.loadTiddlers.nochangeMsg.format([inbound.title])); continue; }\n }\n // get confirmation if required\n if (ask && !confirm((theExisting?"Update":"Add")+" tiddler '"+inbound.title+"'\snfrom "+src))\n { tiddlers[t].status="skipped - cancelled by user"; continue; }\n // DO IT!\n // OLD: store.addTiddler(in);\n store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags);\n store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value\n tiddlers[t].status=theExisting?"updated":"added"\n count++;\n }\n if (count) {\n // refresh display\n store.setDirty(true);\n store.notifyAll();\n // generate a report\n if (config.options.chkImportReport) {\n // get/create the report tiddler\n var theReport = store.getTiddler('ImportedTiddlers');\n if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text = ""; }\n // format the report content\n var now = new Date();\n var newText = "On "+now.toLocaleString()+", "+config.options.txtUserName+" loaded "+count+" tiddlers from\sn[["+src+"|"+src+"]]:\sn";\n newText += "<<<\sn";\n for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status) newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\sn";\n newText += "<<<\sn";\n// 20060918 ELS: DON'T ADD "discard" BUTTON TO REPORT\n// newText += "<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n// newText += "onclick=\s"story.closeTiddler('"+theReport.title+"'); store.deleteTiddler('"+theReport.title+"');\s" ";\n// newText += "value=\s"discard report\s"></html>";\n // update the ImportedTiddlers content and show the tiddler\n theReport.text = newText+((theReport.text!="")?'\sn----\sn':"")+theReport.text;\n theReport.modifier = config.options.txtUserName;\n theReport.modified = new Date();\n // OLD: store.addTiddler(theReport);\n store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags);\n if (!quiet) { story.displayTiddler(null,theReport.title,1,null,null,false); story.refreshTiddler(theReport.title,1,true); }\n }\n }\n // always show final message when tiddlers were actually loaded\n if (!quiet||count) displayMessage(config.macros.loadTiddlers.loadedMsg.format([count,tiddlers.length,src]));\n}\n\n// replaces existing core function\n\nconfig.macros.importTiddlers.loadRemoteFile = function(src,callback,quiet,ask,filter,force) {\n if (src==undefined || !src.length) return null; // filename is required\n if (!quiet) clearMessage();\n if (!quiet) displayMessage(config.macros.loadTiddlers.openMsg.format([src]));\n if (src.substr(0,4)!="http" && src.substr(0,4)!="file") { // if not a URL, fallback to read from local filesystem\n var txt=loadFile(src);\n if ((txt==null)||(txt==false)) // file didn't load\n { if (!quiet) displayMessage(config.macros.loadTiddlers.openErrMsg.format([src,"(unknown)"])); }\n else {\n if (!quiet) displayMessage(config.macros.loadTiddlers.readMsg.format([txt.length,src]));\n if (callback) callback(src,convertUTF8ToUnicode(txt),quiet,ask,filter,force);\n }\n }\n else {\n var x; // get an request object\n try {x = new XMLHttpRequest()} // moz\n catch(e) {\n try {x = new ActiveXObject("Msxml2.XMLHTTP")} // IE 6\n catch (e) {\n try {x = new ActiveXObject("Microsoft.XMLHTTP")} // IE 5\n catch (e) { return }\n }\n }\n // setup callback function to handle server response(s)\n x.onreadystatechange = function() {\n if (x.readyState == 4) {\n if (x.status==0 || x.status == 200) {\n if (!quiet) displayMessage(config.macros.loadTiddlers.readMsg.format([x.responseText.length,src]));\n if (callback) callback(src,x.responseText,quiet,ask,filter,force);\n }\n else {\n if (!quiet) displayMessage(config.macros.loadTiddlers.openErrMsg.format([src,x.status]));\n }\n }\n }\n // get privileges to read another document's DOM via http:// or file:// (moz-only)\n if (typeof(netscape)!="undefined") {\n try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); }\n catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }\n }\n // send the HTTP request\n try {\n var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();\n x.open("GET",src,true);\n if (x.overrideMimeType) x.overrideMimeType('text/html');\n x.send(null);\n }\n catch (e) {\n if (!quiet) {\n displayMessage(config.macros.loadTiddlers.openErrMsg.format([src,"(unknown)"]));\n displayMessage(e.description?e.description:e.toString());\n }\n }\n }\n}\n\nfunction readTiddlersFromHTML(html)\n{\n // extract store area from html \n var start=html.indexOf('<div id="storeArea">');\n var end=html.indexOf("<!--POST-BODY-START--"+">",start);\n if (end==-1) var end=html.indexOf("</body"+">",start); // backward-compatibility for older documents\n var sa="<html><body>"+html.substring(start,end)+"</body></html>";\n\n // load html into iframe document\n var f=document.getElementById("loaderFrame"); if (f) document.body.removeChild(f);\n f=document.createElement("iframe"); f.id="loaderFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n d.open(); d.writeln(sa); d.close();\n\n // read tiddler DIVs from storeArea DOM element \n var sa = d.getElementById("storeArea");\n if (!sa) return null;\n sa.normalize();\n var nodes = sa.childNodes;\n if (!nodes || !nodes.length) return null;\n var tiddlers = [];\n for(var t = 0; t < nodes.length; t++) {\n var title = null;\n if(nodes[t].getAttribute)\n title = nodes[t].getAttribute("tiddler");\n if(!title && nodes[t].id && (nodes[t].id.substr(0,5) == "store"))\n title = nodes[t].id.substr(5);\n if(title && title != "")\n tiddlers.push((new Tiddler()).loadFromDiv(nodes[t],title));\n }\n return tiddlers;\n}\n//}}}
[img[http://tbn0.google.com/images?q=tbn:yfy-IMXwPmGPTM:http://www.chromasia.com/images/tell_me_what_im_thinking_b.jpg]]\n\n[[History of Philosophy - Essays|http://www.friesian.com/history.htm]]\n[[History of Western Philosophy|http://www.philosophypages.com/hy/index.htm]]\n[[History of Philosophy by William Turner, S.T.D. - University of Notre Dame|http://www2.nd.edu/Departments/Maritain/etext/hop.htm]]\n[[Catholic Encyclopedia|http://www.newadvent.org/]]
Now we know very much about tose antifascist and communistic groups which have operated in the deepest underground,arising or breaking up,were put to the brutal punitive measures,struggled agaist dictatorship in Russia,in Germany,in Austria-Hungary.Dietrich Bonhoeffer was from those Christian people who was against that people live under the political and ideological principles,dictatorship,under the oppression of national socialim,Nazy regime.Propagation has penetrated mostly into all spheres of human activity;cinema,theatre,newspapers,radio and so on.Bonhoeffer is the man who commands respect,despite he could be sent to prieson he helped Jews went to Switzerland.He has created the Christian resistant movement,he called for that people open their eyes ans saw what’s going on in reality and realize that it is national catastrophe,it is awfully ans terribly to live so.People should respect each other irrespective of nationality and believes.He said:’Only one who loves human being,life and earth-can love God’.And maybe now people will learn and understand something,will learn lessons from own sufferings, blood and tears,will learn to understand that today all should go otherwise.’There in no savation for human without salvation of the earth’.\nIn the 21st century the humanity ought understand that God has brought on the Earth not new religion but new belief.
Berdyaev was born on March 6, 1874, in Kiev into an aristocratic military family. Berdyaev decided on an intellectual career and entered the Kiev University in 1894. He became involved in Marxist activities, was arrested, and then exiled in 1898 to Vologda. His expulsion from the university ended a formal course of education. Although he studied at other universities, he never earned a degree. Later his involvement in illegal activities led to three years of internal exile in central Russia.\n Upon his return from exile in 1901, Berdyaev became acquainted with Sergius Bulgakov, a former Marxist. \n In 1904 Berdyaev married Lydia Trusheff and the couple moved to St. Petersburg, the Russian capital and centre of intellectual and revolutionary activity. Berdyaev was a believing orthodox Christian, but was often critical of the institutional church. A fiery 1913 article criticizing the Holy Synod of the Russian Orthodox Church caused him to be charged with the crime of blasphemy, the punishment for which was exile to Siberia for life. The World War and the Bolshevik Revolution prevented the matter coming to trial.\nBerdyaev could not accept the Bolshevik regime, because of its authoritarianism and the domination of the state over the freedom of the individual. His philosophy has been characterized as Christian existentialist.\n At first Berdyaev went to Berlin, but economic and political conditions in Germany caused him and his wife to move to Paris in 1923. There he founded an Academy, taught, lectured, and wrote, working for an exchange of ideas with the French intellectual community. During the German occupation of France, Berdyaev continued to write books that were published after the war - some after his death. In years that he spent in France, Berdyaev wrote fifteen books, including most of his most important works. He died at his writing desk in his home in Clamart, near Paris, in March 1948.\n \n Berdyaev's philosophy\n1. Freedom\nBerdyaev's philosophy starts with freedom, which he maintains is the basis of all else. Freedom is the context of our existence which cannot be judged or determined by anything else, for otherwise it would not be freedom. \nFreedom is the ultimate: it cannot be derived from anything: it cannot be made the equivalent of anything. Freedom is the baseless foundation of being: it is deeper than all being. In spite of this, freedom has still to be achieved. \nIt would be a mistake to think that the average man loves freedom. A still greater mistake would be to suppose that freedom is an easy thing. Freedom is a difficult thing. It is easier to remain in slavery. \n2. Objectivization\nFreedom cannot be understood or tolerated by the objective mind, that part of us which tries to control reality for our comfort and security. The objective mind has split the world into subject and object, self and others, Spirit and nature, and so on. \n3. Truth\nOur notion of truth is presently under the spell of objectivization. Only what can be objectively verified is considered to be true, genuine, and trustworthy. The rulership of objective thinking, which plays itself out as science and technology, alienates and suffocates both the life of the spirit and the individual. \nTruth has two meanings: there is truth as knowledge of reality, and truth as reality itself. \n4. Spirit\nLike truth, the spiritual dimension is not arrived at from the natural world. It exists in its own right and does not need to be proven or demonstrated. To seek to do so is to put the cart before the horse. \nSpiritual experience is the supreme reality in man's life: in it the divine not proven, it is simply shown. \n5. Personality\nWhile objectivization obliterates the person in the universal and the general, spirit re-establishes and affirms the value of the individual over against the static, lifeless, normal, determined, and objective. \nAlthough the personality appears to be inferior to society, the world and the universe, it in fact contains these and is of greater value than all of them. \n6. Creativity\nThe end of objectivization will mean the recognition of creativity as each person's highest purpose and fulfillment, for "only he, who is free, creates." \nCreativity means a participation in the mystery of existence. It lives in the abyss of freedom. Creativity is our ultimate destination - not evolution which is governed by necessity and determinism, nor the current fashion of self-development. \n7. The Third Epoch or "Eighth Day of Creation"\nBerdyaev could see the coming of a time when our creative potential will be more developed. We will then be in a position to collaborate with God to re-create the world. \nIn the religion of the Spirit, the religion of freedom, everything ... will be founded, not upon judgment and recompense, but on creative development and transfiguration, on likeness to God. We are standing on the threshold of a world-epoch of religious creativeness, on a cosmic divide. This will reverse the effects of the "fall of man" and bring in a new era, the "Third Epoch", and a religion of the Spirit. \n\n@@Ben: Hi Irene! Another good piece of work you are sending in! Very well presented. Good style and picking the most essential and important thoughts of Berdyaev. Great!\nMy proposal: __Would it be possible for you to write a summary about [[Sergei Bulgakov]] and publish it on this wiki? Maybe Zina could help you?__@@
[img[http://www.apuritansmind.com/images/MiscImages/Comenius_small.gif]]\n\n[[Biography|http://www.apuritansmind.com/ChristianWalk/McMahonComenius.htm]]
[img[http://tbn0.google.com/images?q=tbn:85zwcU5u3iuQqM:http://www.edocere.org/images/saints/st_john_baptist_de_la_salle_150x197.jpg]]\n(1651 to 1719)\n\n[[Biography at "edocere"|http://www.edocere.org/st_john_baptist_salle_bio.htm]]\n[[Deatailed Catholic Biography|http://www.newadvent.org/cathen/08444a.htm]]
[img[http://tbn0.google.com/images?q=tbn:HjCzafSHE3lJpM:http://content.answers.com/main/content/wp/en/8/8e/Jhyoder.jpg]]\n\n[[wikipedia overview|http://en.wikipedia.org/wiki/John_Howard_Yoder]]\n[[A detailed biography|http://www.goshen.edu/mqr/pastissues/july03nation.html]]\n[[THE POLITICS OF JESUS - Summary by Nathan Hobby with James Patton|http://www.geocities.com/savageparade/poj]] \n[[Body Politics - simplified version by Nathan Hobby a.o.|http://perthanabaptists.files.wordpress.com/2007/05/bodypoliticssimplified1.pdf]]\n[[When the Politics of Jesus Makes a Difference (Stanley Hauerwas)|http://www.religion-online.org/showarticle.asp?title=109]]\n[[A sermon on "The Politics of Jesus"|http://www.stalbans.org.nz/teachings/rob_yule/jesus/jesus3-6th.htm]]\n[[Print Bibliography|http://gconline.goshen.edu/acct/prod/mennonite_review/bin/menn_writings.html]]\n[[Unpublished material of Yoder at Uni Notre Dame|http://theology.nd.edu/search/?qp=url%3Atheology.nd.edu&qt=yoder&submit=Go]]\n[[Reading Yoder, Relearning the grain of the universe.../an interactive Yoder blog site|http://readingyoder.blogspot.com/]]\n
[img[http://tbn0.google.com/images?q=tbn:2aD5MD48eqZnCM:http://www.tniv.com/retail_partners/images/photos_left/jstott.gif]]\n(1921-- )\n\n<<<\nHere, then, is the crucial question which we have been leading up to. Have we ever opened our door to Christ? Have we ever invited him in? This was exactly the question which I needed to have put to me. For, intellectually speaking, I had believed in Jesus all my life, on the other side of the door. I had regularly struggled to say my prayers through the key-hole. I had even pushed pennies under the door in a vain attempt to pacify him. I had been baptized, yes and confirmed as well. I went to church, read my Bible, had high ideals, and tried to be good and do good. But all the time, often without realising it, I was holding Christ at arm's length, and keeping him outside. I knew that to open the door might have momentous consequences. I am profoundly grateful to him for enabling me to open the door. Looking back now over more than fifty years, I realise that that simple step has changed the entire direction, course and quality of my life.\n<<<\n(Source: [[wikipedia|http://en.wikipedia.org/wiki/John_Stott#_note-2]])
[img[http://tbn0.google.com/images?q=tbn:suzrtenTNd-GVM:http://ratzingerfanclub.com/images/ratzinger_1964.jpg]]
[img[http://tbn0.google.com/images?q=tbn:NLTdhHAC1K1OnM:http://www.centropian.com/store/bookstore/religion/barth.jpg]]\n (1886-1968)\n\n<<<\nBelief cannot argue with unbelief, it can only preach to it.\n<<<\n\n[[Island of Freedom - Biography|http://www.island-of-freedom.com/BARTH.HTM]]\n[[John C. McDowell on Barth|http://www.geocities.com/johnnymcdowell/Karl_Barth.html]]\n[[Suzanne Selinger, Charlotte von Kirschbaum and Karl Barth: A Study in Biography and the History of Theology, A Review Essay by Katherine Sonderegger|http://scdc.library.ptsem.edu/mets/mets.aspx?src=PSB2000212&div=9&img=1]]\n[[Short Biography at faithnet.org.uk|http://www.faithnet.org.uk/Theology/barth.htm]]\n[[Karl Barth and The Doctrine of Reconciliation (God with us)|http://www.faithnet.org.uk/Theology/godwithus.htm]]
[img[http://tbn0.google.com/images?q=tbn:1z77wrZq3sJHVM:http://www.summit.mccsc.edu/mlk2k6/Martin%2520Luther%2520King%2520Jr.%2520Pic.jpg]]\nMartin Luther King was Christian pastor that’s why a lot of changes were brought by him in life of the country especially of the black people, which lived in infringement in USA. Because only real believer with the strong faith and God’s support can do this incredibly courage acts. According to the Bible, especially in Mathew 5 there is said: “God blesses those who worked for peace, for they will be called the children of God.” “But I say if you are angry with someone, you are object to judgment! If you are call someone an idiot, you are in danger of being brought before the high council. And if you curse someone, you are in danger of the fires of hell.” \nBeing believer he tried to make people avoid this unattractive future. Hating black people you are hurting God because we are all children of God. “You are the light of the world – like a city on a mountain, glowing in the night for all to see.”
[img[http://tbn0.google.com/images?q=tbn:Ek20vp2YTml2AM:http://www.talkingproud.us/ImagesMilitary/VaughnAlex/AlexA.jpg]]\n[img[http://www.eosdev.com/Buttons/Buts_GildedIris/eosgd1c.gif]] ^^__People:__^^\n[[Thomas Merton]] [[Stanley Hauerwas]] [[Wolfhart Pannenberg]] [[Karl Barth]] [[John Howard Yoder]] [[Don Bosco]] [[Martin-Luther King]] [[Eberhard Arnold]] [[Vladimir Solovyev]] [[Sergei Bulgakov]] [[Nikolai Berdyaev]] [[Hannah Arendt]] [[Teilhard de Chardin]] [[Flannery O'Connor]] [[Joseph Alois Ratzinger (Pope Benedict XVI)]] [[Arnold Fruchtenbaum]] [[John Stott]] [[Maria Montessori]] [[Simone Weil]] [[Martin Buber]] [[Aleksandr Men']] [[Dietrich Bonhoeffer]] [[C S Lewis]] [[Dorothy Leigh Sayers]] [[Gilbert Keith Chesterton]] [[John Baptist de la Salle]] [[Jan Amos Comenius]] [[Thomas Aquinas]] [[Francis of Assisi]] [[Augustine of Hippo]]\n\n[img[http://www.eosdev.com/Buttons/Buts_GildedIris/eosgd1c.gif]] ^^__Background:__^^\n[[Divine Revelation - God's Powerful Word|http://bistu.tiddlyspot.com/]]\n\n[img[http://www.eosdev.com/Buttons/Buts_GildedIris/eosgd1c.gif]] ^^__Background:__^^\n[[Introduction to Philosophical Thinking]]\n\n[img[http://www.eosdev.com/Buttons/Buts_GildedIris/eosgd1c.gif]] ^^__Background:__^^\n[[European History from The Collapse of the Old Powers to the End of the Twentieth Century|http://eurohist.tiddlyspot.com]]\n\n[img[http://www.eosdev.com/Buttons/Buts_GildedIris/eosgd1c.gif]] ^^__Background:__^^\n[[The Development of Christianity|http://devchri.tiddlyspot.com]]\n\n[img[http://www.eosdev.com/Buttons/Buts_GildedIris/eosgd1c.gif]] ^^__Background:__^^\n[[Historical Theology]]\n\n[img[http://www.eosdev.com/Buttons/Buts_GildedIris/eosgd1c.gif]] ^^__Background:__^^\n[[Philosophical Theology]]\n\n[[Special Projects]]\n[[The Art of Study and Research]]\n[[E-books online]]\n[[The old "Christian Thinking" site|http://inawe2.wordpress.com/]] [[run|http://manage.tiddlyspot.com/]] [[bs|http://bistu.tiddlyspot.com]] [[pics|http://benspics.tiddlyspot.com/]] [[help]]\n\n\n\n\n\n[img[http://www.eosdev.com/Buttons/Buts_GildedIris/eosgd1b.gif]] The graphic art is a creation of the very gifted designer [[janet kile harwell|http://www.eosdev.com]].
[img[http://tbn0.google.com/images?q=tbn:1nA0uhSxv0RKPM:http://www.montessori-training.org/images/1919.jpg]]\n\n\n----\nSee also [[Jan Amos Comenius]] | [[John Baptist de la Salle]] | [[Don Bosco]] |
Nicholas Berdyaev was an activist of his time. He actively took part in the editing of such magazines as "New Road" ("Новый путь") and "Questions of Life" ("Вопросы жизни"). Very often he made speeches in the religio-philosophical society in Petersburg. Since he was a philosophical educated man hr tried to solve sociological questions from the point of view of critical philosophy.\nFrom time to time he was under the influence of philosophical and social idealism and V. Soloviev. Also he had something in common with Kant's philosophy.\nFor the first time Berdyaev expressed his main ideas in his book "The sense of creativity" ("Смысл творчества"). Then he developed them. It was an idea of freedom, an idea of creation and objectification, an idea of personality and an idea of metahistorical and eschatological history.\nHis philosophy is a philosophy of personality. Personality is not an empirical individuality, but a person who is creative and free.\nBerdayev understood the freedom not like the majority of philosophers. For him it was not just a freedom of choice. He called it "uncreated freedom" because it preceded everything even God.\nDue to this freedom God creates world and man. But he couldn't control his creation. That's why the road for evil is opened. Berdayev thought that the only way to freedom was creativity. Creativity is the overrunning (выход за пределы) of "I" towards God. God created man so that man also should come to Him.\nBerdayev was a believer and at the same time he treat with criticism to the organization of church and to the history of Christianity.\n\n@@Ben: Very well summarized work! I especially like you presenting the original Russian expressions to the reader - the expressions Berdyaev was working with..\nMy proposal: __Can you research on [[Vladimir Solovyev]] and publish a summary there?__@@
[img[http://tbn0.google.com/images?q=tbn:e63ebBOgJA-RbM:http://www.rickross.com/images/arnold.jpg]]\nAccording to my opinion the exciting with the character of Eberhard Arnold is, that he already became a clever man being only 16 years old! Or even earlier...He became part of the German Student Christian Movement. He worked with Salvation Army and so on..\n\nWhat usually can we see, when a man has reached 16 years of age? What has a man achieved? Not even half of what Ebernard Arnold had done at 16. A chicken has more brain than they!\nHe made a decision! Which was: "Go and witness about my truth" -- I am impressed!\n\nAnd he studied philosophy and theology just after he had finished school. This intellect was given to him from the very begining! And he didn't lose the interest in all of that! He didn't change his mind, and became a seller in some shop..\nHe felt like to tell about Christianity. Later he established a biblical community. And tought children and adult people.\nAs we can see, what can be changed from one decision - this is a continuation of his vision in Bruderhof communities in USA, England, Germany, Australia..Many followers!\n\n@@ [[Ben]] I very much share your feelings. Although I know quite some young men who are about 16 and have a little bit more brain than chicken.. But I believe that I understand exactly what you want to say -- Yes, we need people like Eberhard Arnold.\nShort and very good summary and comment. Great!@@\n
[img[http://tbn0.google.com/images?q=tbn:sP01gwVMFHmXSM:http://www.gwu.edu/gelman/spec/kiev/treasures/buber.jpg]]\n\n[[Island of Freedom - Biography|http://www.island-of-freedom.com/BUBER.HTM]]\n[[Martin Buber: The Life of Dialogue by Maurice S. Friedman|http://www.religion-online.org/showbook.asp?title=459]]
[img[http://tbn0.google.com/images?q=tbn:teeu-K2-7TFYkM:http://www.webstein.ch/peace/mlking01.jpg]]\n(1929-1968)\n<<<\nIt really doesn't matter what happens now… some began to… talk about the threats that were out—what would happen to me from some of our sick white brothers… Like anybody, I would like to live a long life. Longevity has its place, but I'm not concerned about that now. I just want to do God's will. And He's allowed me to go up to the mountain! And I've looked over, and I've seen the Promised Land. I may not get there with you. But I want you to know tonight, that we, as a people, will get to the Promised Land. And so I'm happy tonight. I'm not worried about anything. I'm not fearing any man. My eyes have seen the Glory of the coming of the Lord! \n(In one of his last sermons)\n<<<\n[img[http://seattletimes.nwsource.com/art/mlk/quote7.gif]]\n[[Short and precise biography|http://nobelprize.org/nobel_prizes/peace/laureates/1964/king-bio.html]]\n[[Hear a historical sermon of MLK about the "Attitude of Heart"|http://www.thekingcenter.org/]]\nAn excellent comparison of [[Martin-Luther King]] and [[Thomas Merton]] wrote:\n[[Albert J. Raboteau: A Hidden Wholeness: Thomas Merton and Martin Luther King, Jr.|http://www.spiritualitytoday.org/spir2day/884057raboteau.html]]\n\n----\nKing correctly recognized that __organized, nonviolent protest against the system of southern segregation__ known as Jim Crow laws __would lead to extensive media coverage of the struggle for black equality and voting rights__. Journalistic accounts and televised footage of the daily deprivation and indignities suffered by southern blacks, and of segregationist violence and harassment of civil rights workers and marchers, produced a __wave of sympathetic public opinion that made the Civil Rights Movement the single most important issue in American politics in the early 1960s__.\n(Source: http://en.wikipedia.org/wiki/Martin_Luther_King,_Jr. as retrieved May 06, 2007)\n\n\n''__Chronology__''\n(Sources: [[The Seattle Times*|http://seattletimes.nwsource.com/mlk/king/photogallery.html]] [[wikipedia**|http://en.wikipedia.org/wiki/Martin_Luther_King,_Jr.]] )\n\n1929 \nBorn in Atlanta, Georgia as the son of Reverend Martin Luther King, Sr.**\n\n1948\nGraduated from Morehouse with a Bachelor of Arts (B.A.) degree in sociology.** \n\n1951\nCrozer Theological Seminary in Chester, Pennsylvania Bachelor of Divinity (B.D.).**\n\n1955\nAfter studying Systematic Theology at Boston University he received his Doctor of Philosophy (Ph. D.).**\n\nOn December 1, 1955, //Rosa Parks// was arrested for refusing to comply with the Jim Crow laws that required her to give up her seat to a white man. The ''Montgomery Bus Boycott'',.. led by King, soon followed.** \n\n1956-62 \nDr. Martin Luther King Jr. establishes himself as the national leader of the civil rights movement, leading boycotts and staging protests against segregation in the South.*\n\n1963-65 \nVoting rights becomes the focus of King and other civil-rights leaders. They organize protests across the nation, bringing more attention to their efforts - and more violent responses from opponents.*\n\nKing..was among the leaders of the so-called "Big Six" civil rights organizations who were instrumental in the organization of the ''March on Washington'' for Jobs and Freedom in 1963.**\n\nIn 1964, King became the youngest man to be awarded the [[Nobel Peace Prize]] (for his work as a peacemaker, promoting nonviolence and equal treatment for different races).*\n\n1966-68 \nKing's opposition to the [[Vietnam War]] makes headlines while his battle for civil rights continues. But on April 4, 1968, an assassin's bullet ended his crusade.*\n----\n__MLK's values drawn from the "Sermon on the Mount"__\n[[Zina - MLK and the Sermon on the Mount]]\n[[Kristina on Martin Luther King]]\n
[img[http://photos1.blogger.com/x/blogger2/4999/530480050058766/1600/z/39501/gse_multipart1175.jpg]]\n<html><small>Left his wife: Nicole, right: Nathan</small></html>\n\n\n\n
/***\n''NestedSlidersPlugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman\nsource: http://www.elsdesign.com/tiddlywiki/#NestedSlidersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nQuickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''\n\nYou can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.\n\nFor more details, please click on a section headline below:\n++++!!!!![Configuration]>\nDebugging messages for 'lazy sliders' deferred rendering:\n<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering\n<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered\n//''note: Enabling these settings may produce unexpected results. Use at your own risk.''//\n===\n++++!!!!![Usage]>\nWhen installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify 'default to open', 'cookiename', 'heading level', 'custom label/tooltip', 'automatic blockquote' and 'deferred rendering'.\n//{{{\n++++(cookiename)!!!!![label|tooltip]>...\ncontent goes here\n===\n//}}}\nwhere:\n* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^\nmarks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^\n* {{{(cookiename)}}}^^\nsave the slider opened/closed state, and restore this state whenever the slider is re-rendered.^^\n* {{{!}}} through {{{!!!!!}}}^^\ndisplays the slider label using a formatted headline (Hn) style instead of a button/link style^^\n* {{{[label]}}} or {{{[label|tooltip]}}}^^\nuses custom label/tooltip. (defaults are: ">/more..." and "</less...")^^\n* {{{">"}}} //(without the quotes)//^^\nautomatically adds blockquote formatting to slider content^^\n* {{{"..."}}} //(without the quotes)//^^\ndefers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^\n\n//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//\n===\n++++!!!!![Examples]>\nsimple in-line slider: \n{{{\n+++\n content\n===\n}}}\n+++\n content\n===\n----\ndefault to open: \n{{{\n++++\n content\n===\n}}}\n++++\n content\n===\n----\nuse a custom label: \n{{{\n+++[label]\n content\n===\n}}}\n+++[label]\n content\n===\n----\nuse a custom label and tooltip: \n{{{\n+++[label|tooltip]\n content\n===\n}}}\n+++[label|tooltip]\n content\n===\n----\ncontent automatically blockquoted: \n{{{\n+++>\n content\n===\n}}}\n+++>\n content\n===\n----\nall options combined //(default open, custom label/tooltip, blockquoted)//\n{{{\n++++(testcookie)[label|tooltip]>\n content\n===\n}}}\n++++(testcookie)[label|tooltip]>\n content\n===\n----\ncomplex nesting example:\n{{{\n+++[get info...|click for information]>\n put some general information here, plus a slider with more specific info:\n +++[view details...|click for details]>\n put some detail here, which could include some +++[definitions]>explaining technical terms===\n ===\n===\n}}}\n+++[get info...|click for information]>\n put some general information here, plus a slider with more specific info:\n +++[view details...|click for details]>\n put some detail here, which could include some +++[definitions]>explaining technical terms===\n === \n=== \n===\n+++!!!!![Installation]>\nimport (or copy/paste) the following tiddlers into your document:\n''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)\n===\n+++!!!!![Revision History]>\n\n++++[2006.01.03 - 1.6.2]\nWhen using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)\n===\n\n+++[2005.12.15 - 1.6.1]\nadded optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders\nremoved checkbox option for 'global' application of lazy sliders\n===\n\n+++[2005.11.25 - 1.6.0]\nadded optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)\n===\n\n+++[2005.11.21 - 1.5.1]\nrevised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.\n===\n\n+++[2005.11.20 - 1.5.0]\n added (cookiename) syntax for optional tracking and restoring of slider open/close state\n===\n\n+++[2005.11.11 - 1.4.0]\n added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style\n===\n\n+++[2005.11.07 - 1.3.0]\n removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other\n formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines\n===\n\n+++[2005.11.05 - 1.2.1]\n changed name to NestedSlidersPlugin\n more documentation\n===\n\n+++[2005.11.04 - 1.2.0]\n added alternative character-mode syntax {{{(((}}} and {{{)))}}}\n tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax\n===\n\n+++[2005.11.03 - 1.1.1]\n fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used\n code cleanup, added documentation\n===\n\n+++[2005.11.03 - 1.1.0]\n changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}\n changed name to EasySlidersPlugin\n===\n\n+++[2005.11.03 - 1.0.0]\n initial public release\n===\n\n===\n+++!!!!![Credits]>\nThis feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] based on considerable research, programming and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson\n===\n***/\n// //+++!!!!![Code]\n//{{{\nversion.extensions.nestedSliders = {major: 1, minor: 6, revision: 2, date: new Date(2006,1,3)};\n//}}}\n\n//{{{\n// options for deferred rendering of sliders that are not initially displayed\nif (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;\nif (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;\n//}}}\n\n//{{{\nconfig.formatters.push( {\n name: "nestedSliders",\n match: "\s\sn?\s\s+{3}",\n terminator: "\s\ss*\s\s={3}\s\sn?",\n lookahead: "\s\sn?\s\s+{3}(\s\s+)?(\s\s([^\s\s)]*\s\s))?(\s\s!*)?(\s\s[[^\s\s]]*\s\s])?(\s\s>?)(\s\s.\s\s.\s\s.)?\s\ss*",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n {\n // default to closed, no cookie\n var show="none"; var title=">"; var tooltip="show"; var cookie="";\n\n // extra "+", default to open\n if (lookaheadMatch[1])\n { show="block"; title="<"; tooltip="hide"; }\n\n // cookie, use saved open/closed state\n if (lookaheadMatch[2]) {\n cookie=lookaheadMatch[2].trim().substr(1,lookaheadMatch[2].length-2);\n cookie="chkSlider"+cookie;\n if (config.options[cookie]==undefined)\n { config.options[cookie] = (show=="block") }\n if (config.options[cookie])\n { show="block"; title="<"; tooltip="hide"; }\n else\n { show="none"; title=">"; tooltip="show"; }\n }\n\n // custom label/tooltip\n if (lookaheadMatch[4]) {\n title = lookaheadMatch[4].trim().substr(1,lookaheadMatch[4].length-2);\n if ((pos=title.indexOf("|")) != -1)\n { tooltip = title.substr(pos+1,title.length); title = title.substr(0,pos); }\n else\n { tooltip += " "+title; }\n }\n // use "Hn" header format instead of button/link\n if (lookaheadMatch[3]) {\n var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;\n var btn = createTiddlyElement(createTiddlyElement(w.output,"h"+lvl,null,null,null),"a",null,null,title);\n btn.onclick=onClickNestedSlider;\n btn.setAttribute("href","javascript:;");\n btn.setAttribute("title",tooltip);\n\n }\n else\n var btn = createTiddlyButton(w.output,title,tooltip,onClickNestedSlider);\n var panel = createTiddlyElement(w.output,"span",null,"sliderPanel",null);\n btn.sliderCookie = cookie;\n btn.sliderPanel = panel;\n panel.style.display = show;\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n if (!lookaheadMatch[6] || show=="block") {\n w.subWikify(lookaheadMatch[5]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);\n }\n else {\n var src = w.source.substr(w.nextMatch);\n var endpos=findMatchingDelimiter(src,"+++","===");\n panel.setAttribute("raw",src.substr(0,endpos));\n panel.setAttribute("blockquote",lookaheadMatch[5]?"true":"false");\n panel.setAttribute("rendered","false");\n w.nextMatch += endpos+3;\n if (w.source.substr(w.nextMatch,1)=="\sn") w.nextMatch++;\n if (config.options.chkDebugLazySliderDefer)\n alert("deferred '"+title+"':\sn\sn"+panel.getAttribute("raw"));\n }\n }\n }\n }\n)\n\n// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)\nfunction findMatchingDelimiter(src,starttext,endtext) {\n var startpos = 0;\n var endpos = src.indexOf(endtext);\n // check for nested delimiters\n while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {\n // count number of nested 'starts'\n var startcount=0;\n var temp = src.substring(startpos,endpos-1);\n var pos=temp.indexOf(starttext);\n while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }\n // set up to check for additional 'starts' after adjusting endpos\n startpos=endpos+endtext.length;\n // find endpos for corresponding number of matching 'ends'\n while (startcount && endpos!=-1) {\n endpos = src.indexOf(endtext,endpos+endtext.length);\n startcount--;\n }\n }\n return (endpos==-1)?src.length:endpos;\n}\n//}}}\n\n//{{{\nfunction onClickNestedSlider(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theLabel = theTarget.firstChild.data;\n var theSlider = theTarget.sliderPanel\n var isOpen = theSlider.style.display!="none";\n // if using default button labels, toggle labels\n if (theLabel==">") theTarget.firstChild.data = "<";\n else if (theLabel=="<") theTarget.firstChild.data = ">";\n // if using default tooltips, toggle tooltips\n if (theTarget.getAttribute("title")=="show")\n theTarget.setAttribute("title","hide");\n else if (theTarget.getAttribute("title")=="hide")\n theTarget.setAttribute("title","show");\n if (theTarget.getAttribute("title")=="show "+theLabel)\n theTarget.setAttribute("title","hide "+theLabel);\n else if (theTarget.getAttribute("title")=="hide "+theLabel)\n theTarget.setAttribute("title","show "+theLabel);\n // deferred rendering (if needed)\n if (theSlider.getAttribute("rendered")=="false") {\n if (config.options.chkDebugLazySliderRender)\n alert("rendering '"+theLabel+"':\sn\sn"+theSlider.getAttribute("raw"));\n var place=theSlider;\n if (theSlider.getAttribute("blockquote")=="true")\n place=createTiddlyElement(place,"blockquote");\n wikify(theSlider.getAttribute("raw"),place);\n theSlider.setAttribute("rendered","true");\n }\n // show/hide the slider\n// DISABLED: animation sets overflow:hidden, which clips nested sliders...\n// if(config.options.chkAnimate)\n// anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));\n// else\n theSlider.style.display = isOpen ? "none" : "block";\n if (this.sliderCookie && this.sliderCookie.length)\n { config.options[this.sliderCookie]=!isOpen; saveOptionCookie(this.sliderCookie); }\n return false;\n}\n//}}}\n// //===
<<gtdActionList>>
The outcome for this project is
/***\n|''Name:''|NewerTiddlerPlugin|\n|''Version:''|$Revision: 13 $ |\n|''Source:''|http://thePettersons.org/tiddlywiki.html#NewerTiddlerPlugin |\n|''Author:''|[[Paul Petterson]] |\n|''Type:''|Macro Extension |\n|''Requires:''|TiddlyWiki 1.2.33 or higher |\n!Description\nCreate a 'new tiddler' button with lots more options! Specify the text to show on the button, the name of the new tiddler (with date macro expansion), one or more tags for the new tiddlers, and what text if any to include in the new tiddler body! Uses a named parameter format, simalar to the reminder plugin.\n\nAlso - if the tiddler already exists it won't replace any of it's existing data (like tags).\n\n!Syntax\n* {{{<<newerTiddler button:"Inbox" name:"Inbox YYYY/MM/DD" tags:"Journal, inbox" text:"New stuff for today:">>}}}\n* {{{<<newerTiddler button:"@Action" name:"Action: what" tags:"@Action" text:"Add project and describe action">>}}}\n* {{{<<newerTiddler button:"New Project" name:"Project Name?" tags:"My Projects, My Inbox, Journal" template:"MyTemplate">>}}}\n!!Parameters\n* name:"Name of Tiddler"\n* tags:"Tag1, Tag2, Tag3" - tags for new tiddler, comma seperated //don't use square brackets //({{{[[}}})// for tags!//\n* button:"name for button" - the name to display instead of "new tiddler"\n* body:"what to put in the tiddler body"\n* template:"Name of a tiddler containing the text to use as the body of the new tiddler"\n\n''Note:'' if you sepecify both body and template parameters, then template parameter will be used and the body parameter overridden.\n\n!Sample Output\n* <<newerTiddler button:"Inbox" name:"Inbox YYYY/MM/DD" tags:"Journal inbox" text:"New stuff for today:">>\n* <<newerTiddler button:"@Action" name:"Action: what" tags:"@Action" text:"Add project and describe action">>\n* <<newerTiddler button:"New Project" name:"Project Name?" tags:"[[My Projects]] [[My Inbox]] Journal" template:"MyTemplate">>\n\n!Todo\n<<projectTemplate>>\n\n!Known issues\n* Must use double quotes (") around parameter values if they contain a space, can't use single quotes (').\n* can't use standard bracketted style tags, ust type in the tags space and all and put a comma between them. For example tags:"one big tag, another big tag" uses 2 tags ''one big tag'' and ''another big tag''.\n\n!Notes\n* It works fine, and I use it daily, however I haven't really tested edge cases or multiple platforms. If you run into bugs or problems, let me know!\n\n!Requests\n* Have delta-date specifiers on the name: name:"Inbox YYY/MM/DD+1" ( ceruleat@gmail.com )\n* Option to just open the tiddler instead of immediately edit it ( ceruleat@gmail.com )\n* Have date formatters in tags as well as in name (me)\n\n!Revision history\n$History: PaulsNotepad.html $\n * \n * ***************** Version 2 *****************\n * User: paulpet Date: 2/26/06 Time: 7:25p\n * Updated in $/PaulsNotepad3.0.root/PaulsNotepad3.0/PaulsPlugins/systemConfig\n * Port to tw2.0, bug fixes, and simplification!\nv1.0.2 (not released) - fixed small documentation issues.\nv1.0.1 October 13th - fixed a bug occurring only in FF\nv1.0 October 11th - Initial public release\nv0.8 October 10th - Feature complete... \nv0.7 Initial public preview\n\n!Code\n***/\n//{{{\nconfig.macros.newerTiddler = { \nname:"New(er) Tiddler",\ntags:"",\ntext:"Type Tiddler Contents Here.",\nbutton:"new(er) tiddler",\n\nreparse: function( params ) {\n var re = /([^:\s'\s"\ss]+)(?::([^\s'\s":\ss]+)|:[\s'\s"]([^\s'\s"\s\s]*(?:\s\s.[^\s'\s"\s\s]*)*)[\s'\s"])?(?=\ss|$)/g;\n var ret = new Array() ;\n var m ;\n\n while( (m = re.exec( params )) != null )\n ret[ m[1] ] = m[2]?m[2]:m[3]?m[3]:true ;\n\n return ret ;\n},\nhandler: function(place,macroName,params,wikifier,paramString,tiddler) {\n if ( readOnly ) return ;\n\n var input = this.reparse( paramString ) ;\n var tiddlerName = input["name"]?input["name"].trim():config.macros.newerTiddler.name ;\n var tiddlerTags = input["tags"]?input["tags"]:config.macros.newerTiddler.tags ;\n var tiddlerBody = input["text"]?input["text"]:config.macros.newerTiddler.text ;\n var buttonText = input["button"]?input["button"]:config.macros.newerTiddler.button ;\n var template = input["template"]?input["template"]:null;\n\n // if there is a template, use it - otherwise use the tiddlerBody text\n if ( template ) {\n tiddlerBody = store.getTiddlerText( template );\n }\n if ( tiddlerBody == null || tiddlerBody.length == 0 )\n tiddlerBody = config.macros.newerTiddler.text ;\n\n var now = new Date() ;\n tiddlerName = now.formatString( tiddlerName ) ;\n \n createTiddlyButton( place, buttonText, "", function() {\n var exists = store.tiddlerExists( tiddlerName );\n var t = store.createTiddler( tiddlerName );\n if ( ! exists )\n t.assign( tiddlerName, tiddlerBody, config.views.wikified.defaultModifier, now, tiddlerTags.readBracketedList() );\n \n story.displayTiddler(null,tiddlerName,DEFAULT_EDIT_TEMPLATE);\n story.focusTiddler(tiddlerName,"title");\n return false;\n });\n}}\n//}}}\n/***\nThis plugin is released under the [[Creative Commons Attribution 2.5 License|http://creativecommons.org/licenses/by/2.5/]]\n***/
[img[http://tbn0.google.com/images?q=tbn:DBSOiRuBmMAC3M:http://www.berdyaev.com/berdiaev/indices/ber_55-009.jpg]]\n__Summaries and comments:__\n[[Irene on Berdyaev]] \n[[Zina on Berdyaev]]\n[[Maria on Berdyaev]]\n
<div class='header' macro='gradient vert #000 #464646'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu' force='true'></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>
<<<\nNatural theology (or natural religion) is theology based on reason and ordinary experience. Thus it is distinguished from revealed theology (or revealed religion) which is based on scripture and religious experiences of various kinds; and also from transcendental theology, theology from a priori reasoning (see Immanuel Kant et alia). (Source: wikipedia)\n<<<\n[img[http://tbn0.google.com/images?q=tbn:inqY5sy1YYq8oM:http://www.upress.virginia.edu/images/robbins.jpg]] [img[http://tbn0.google.com/images?q=tbn:31jaVlTIWV4LmM:http://rosslin.blogg.se/images/rosslie_kopiera_1160559022.jpg]]\n\n\n[[Jan Verbruggen: Disciplines of Evangelical Scholarship|http://www.google.com/search?q=cache:9EPmTHzTBhoJ:westernseminary.edu/Syllabi/PDX/Spring_2007/ths697_sp07.doc+THS+697+TH.M.+Integration+Seminar&hl=en&ct=clnk&cd=1&client=firefox-a]]\n[[Generous Orthodoxy ThinkTank|http://www.generousorthodoxy.net/thinktank/]]\n\n[[John D. Woodbridge (ed.): Doing Theology in Today's World: Essays in Honor of Kenneth S. Kantzer|http://books.google.com/books?id=SgiTRZ9UwjkC&dq=doing+theology+in+today%27s+world&pg=PP1&ots=GTPupP8kCB&sig=ZiuXEa27AJGnDM-qY5Baprieqdw&prev=http://www.google.com/search%3Fq%3Ddoing%2Btheology%2Bin%2Btoday%27s%2Bworld%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dorg.mozilla:en-US:official%26client%3Dfirefox-a&sa=X&oi=print&ct=title#PPA3,M1]] This book can be read online!!!\n\n[[Christian Faith and Practice in the Modern World: Theology From an Evangelical Point of View|http://www.amazon.com/Christian-Faith-Practice-Modern-World/dp/0802802796]]\n\n\n[[Who is George Mavrodes?|http://141.211.177.75/philosophy/philosophy_detail/0,2874,19979%255Fpeople%255F17504680,00.html]]\n\n[img[http://www.eosdev.com/Buttons/Buts_GildedIris/eosgd1c.gif]] [[QUODLIBET Online Journal of Christian Theology and Philosophy|http://www.quodlibet.net/]]
<<plugins>>
! Active projects with remaining actions\n<<gtdActionList *>>\n! Projects with no open actions\n<<list tagged "project done -someday">>
*+++(gtdImportantProjectsSliderState)[Important:] <<list tagged "project important -someday" all>>===\n+++(gtdOtherProjectsSliderState)[Other:] <<list tagged "project -syntora -important -someday" all>>===
<<list tagged txtGTDReferenceContext any>>
/***\n|''Name:''|ReminderPlugin|\n|''Version:''|2.3.8.3 (Nov 28, 2006)|\n|''Source:''|http://www.geocities.com/allredfaq/reminderMacros.html|\n|''Author:''|Jeremy Sheeley(pop1280 [at] excite [dot] com)|\n|''Modified by:''|Tom Otvos|\n|''Licence:''|[[BSD open source license]]|\n|''Macros:''|reminder, showreminders, displayTiddlersWithReminders, newReminder|\n|''TiddlyWiki:''|2.0+|\n|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|\n\n!Description\nThis plugin provides macros for tagging a date with a reminder. Use the {{{reminder}}} macro to do this. The {{{showReminders}}} and {{{displayTiddlersWithReminder}}} macros automatically search through all available tiddlers looking for upcoming reminders.\n\n''This version contains a fix by Tom Otvos that modifies tag filtering when tiddlers contain no tags. In this version, if you are filtering showReminders by tag, and a tiddler has no tags, the filter will //not// match the tiddler. There are also a number of small UI-related changes to make the reminder interface a bit nicer. Do not copy this into your own TW documents unless you accept these changes.''\n\n!Installation\n* Create a new tiddler in your tiddlywiki titled ReminderPlugin and give it the {{{systemConfig}}} tag. The tag is important because it tells TW that this is executable code.\n* Double click this tiddler, and copy all the text from the tiddler's body.\n* Paste the text into the body of the new tiddler in your TW.\n* Save and reload your TW.\n* You can copy some examples into your TW as well. See [[Simple examples]], [[Holidays]], [[showReminders]] and [[Personal Reminders]]\n\n!Syntax:\n|>|See [[ReminderSyntax]] and [[showRemindersSyntax]]|\n\n!Revision history\n* v2.3.8 (Mar 9, 2006)\n**Bug fix: A global variable had snuck in, which was killing FF 1.5.0.1\n**Feature: You can now use TIDDLER and TIDDLERNAME in a regular reminder format\n* v2.3.6 (Mar 1, 2006)\n**Bug fix: Reminders for today weren't being matched sometimes.\n**Feature: Solidified integration with DatePlugin and CalendarPlugin\n**Feature: Recurring reminders will now return multiple hits in showReminders and the calendar.\n**Feature: Added TIDDLERNAME to the replacements for showReminders format, for plugins that need the title without brackets.\n* v2.3.5 (Feb 8, 2006)\n**Bug fix: Sped up reminders lots. Added a caching mechanism for reminders that have already been matched.\n* v2.3.4 (Feb 7, 2006)\n**Bug fix: Cleaned up code to hopefully prevent the Firefox 1.5.0.1 crash that was causing lots of plugins \nto crash Firefox. Thanks to http://www.jslint.com\n* v2.3.3 (Feb 2, 2006)\n**Feature: newReminder now has drop down lists instead of text boxes.\n**Bug fix: A trailing space in a title would trigger an infinite loop.\n**Bug fix: using tag:"birthday !reminder" would filter differently than tag:"!reminder birthday"\n* v2.3.2 (Jan 21, 2006)\n**Feature: newReminder macro, which will let you easily add a reminder to a tiddler. Thanks to Eric Shulman (http://www.elsdesign.com) for the code to do this.\n** Bug fix: offsetday was not working sometimes\n** Bug fix: when upgrading to 2.0, I included a bit to exclude tiddlers tagged with excludeSearch. I've reverted back to searching through all tiddlers\n* v2.3.1 (Jan 7, 2006)\n**Feature: 2.0 compatibility\n**Feature AlanH sent some code to make sure that showReminders prints a message if no reminders are found.\n* v2.3.0 (Jan 3, 2006)\n** Bug Fix: Using "Last Sunday (-0)" as a offsetdayofweek wasn't working.\n** Bug Fix: Daylight Savings time broke offset based reminders (for example year:2005 month:8 day:23 recurdays:7 would match Monday instead of Tuesday during DST.\n\n!Code\n***/\n//{{{\n\n//============================================================================\n//============================================================================\n// ReminderPlugin\n//============================================================================\n//============================================================================\n\nversion.extensions.ReminderPlugin = {major: 2, minor: 3, revision: 8, date: new Date(2006,3,9), source: "http://www.geocities.com/allredfaq/reminderMacros.html"};\n\n//============================================================================\n// Configuration\n// Modify this section to change the defaults for \n// leadtime and display strings\n//============================================================================\n\nconfig.macros.reminders = {};\nconfig.macros["reminder"] = {};\nconfig.macros["newReminder"] = {};\nconfig.macros["showReminders"] = {};\nconfig.macros["displayTiddlersWithReminders"] = {};\n\nconfig.macros.reminders["defaultLeadTime"] = [0,365];\nconfig.macros.reminders["defaultReminderMessage"] = "DIFF: TITLE on DATE ANNIVERSARY";\nconfig.macros.reminders["defaultShowReminderMessage"] = "DIFF: TITLE on DATE ANNIVERSARY -- TIDDLER";\nconfig.macros.reminders["defaultAnniversaryMessage"] = "(DIFF)";\nconfig.macros.reminders["untitledReminder"] = "Untitled Reminder";\nconfig.macros.reminders["noReminderFound"] = "Couldn't find a match for TITLE in the next LEADTIMEUPPER days."\nconfig.macros.reminders["todayString"] = "Today";\nconfig.macros.reminders["tomorrowString"] = "Tomorrow";\nconfig.macros.reminders["ndaysString"] = "DIFF days";\nconfig.macros.reminders["emtpyShowRemindersString"] = "There are no upcoming events";\n\n\n//============================================================================\n// Code\n// You should not need to edit anything \n// below this. Make sure to edit this tiddler and copy \n// the code from the text box, to make sure that \n// tiddler rendering doesn't interfere with the copy \n// and paste.\n//============================================================================\n\n// This line is to preserve 1.2 compatibility\n// if (!story) var story=window; \n//this object will hold the cache of reminders, so that we don't\n//recompute the same reminder over again.\nvar reminderCache = {};\n\nconfig.macros.showReminders.handler = function showReminders(place,macroName,params)\n{\n var now = new Date().getMidnight();\n var paramHash = {};\n var leadtime = [0,14];\n paramHash = getParamsForReminder(params);\n var bProvidedDate = (paramHash["year"] != null) || \n (paramHash["month"] != null) || \n (paramHash["day"] != null) || \n (paramHash["dayofweek"] != null);\n if (paramHash["leadtime"] != null)\n {\n leadtime = paramHash["leadtime"];\n if (bProvidedDate)\n {\n //If they've entered a day, we need to make \n //sure to find it. We'll reset the \n //leadtime a few lines down.\n paramHash["leadtime"] = [-10000, 10000];\n }\n }\n var matchedDate = now;\n if (bProvidedDate)\n {\n var leadTimeLowerBound = new Date().getMidnight().addDays(paramHash["leadtime"][0]);\n var leadTimeUpperBound = new Date().getMidnight().addDays(paramHash["leadtime"][1]);\n matchedDate = findDateForReminder(paramHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound); \n }\n\n var arr = findTiddlersWithReminders(matchedDate, leadtime, paramHash["tag"], paramHash["limit"]);\n var elem = createTiddlyElement(place,"span",null,null, null);\n var mess = "";\n if (arr.length == 0)\n {\n mess += config.macros.reminders.emtpyShowRemindersString; \n }\n for (var j = 0; j < arr.length; j++)\n {\n if (paramHash["format"] != null)\n {\n arr[j]["params"]["format"] = paramHash["format"];\n }\n else\n {\n arr[j]["params"]["format"] = config.macros.reminders["defaultShowReminderMessage"];\n }\n mess += getReminderMessageForDisplay(arr[j]["diff"], arr[j]["params"], arr[j]["matchedDate"], arr[j]["tiddler"]);\n mess += "\sn";\n }\n wikify(mess, elem, null, null);\n};\n\n\nconfig.macros.displayTiddlersWithReminders.handler = function displayTiddlersWithReminders(place,macroName,params)\n{\n var now = new Date().getMidnight();\n var paramHash = {};\n var leadtime = [0,14];\n paramHash = getParamsForReminder(params);\n var bProvidedDate = (paramHash["year"] != null) || \n (paramHash["month"] != null) || \n (paramHash["day"] != null) || \n (paramHash["dayofweek"] != null);\n if (paramHash["leadtime"] != null)\n {\n leadtime = paramHash["leadtime"];\n if (bProvidedDate)\n {\n //If they've entered a day, we need to make \n //sure to find it. We'll reset the leadtime \n //a few lines down.\n paramHash["leadtime"] = [-10000,10000];\n }\n }\n var matchedDate = now;\n if (bProvidedDate)\n {\n var leadTimeLowerBound = new Date().getMidnight().addDays(paramHash["leadtime"][0]);\n var leadTimeUpperBound = new Date().getMidnight().addDays(paramHash["leadtime"][1]);\n matchedDate = findDateForReminder(paramHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound); \n }\n var arr = findTiddlersWithReminders(matchedDate, leadtime, paramHash["tag"], paramHash["limit"]);\n for (var j = 0; j < arr.length; j++)\n {\n displayTiddler(null, arr[j]["tiddler"], 0, null, false, false, false);\n }\n};\n\nconfig.macros.reminder.handler = function reminder(place,macroName,params)\n{\n var dateHash = getParamsForReminder(params);\n if (dateHash["hidden"] != null)\n {\n return;\n }\n var leadTime = dateHash["leadtime"];\n if (leadTime == null)\n {\n leadTime = config.macros.reminders["defaultLeadTime"]; \n }\n var leadTimeLowerBound = new Date().getMidnight().addDays(leadTime[0]);\n var leadTimeUpperBound = new Date().getMidnight().addDays(leadTime[1]);\n var matchedDate = findDateForReminder(dateHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound);\n if (!window.story) \n {\n window.story=window; \n }\n if (!store.getTiddler) \n {\n store.getTiddler=function(title) {return this.tiddlers[title];};\n }\n var title = window.story.findContainingTiddler(place).id.substr(7);\n if (matchedDate != null)\n {\n var diff = matchedDate.getDifferenceInDays(new Date().getMidnight());\n var elem = createTiddlyElement(place,"span",null,null, null);\n var mess = getReminderMessageForDisplay(diff, dateHash, matchedDate, title);\n wikify(mess, elem, null, null);\n }\n else\n {\n createTiddlyElement(place,"span",null,null, config.macros.reminders["noReminderFound"].replace("TITLE", dateHash["title"]).replace("LEADTIMEUPPER", leadTime[1]).replace("LEADTIMELOWER", leadTime[0]).replace("TIDDLERNAME", title).replace("TIDDLER", "[[" + title + "]]") );\n }\n};\n\nconfig.macros.newReminder.handler = function newReminder(place,macroName,params)\n{\n // tomo - cleaned up the form layout a bit\n var today=new Date().getMidnight();\n var formstring = '<html><br/><form>';\n \n formstring += 'Year: <select name="year"><option value="">Every year</option>';\n for (var i = 0; i < 5; i++)\n {\n formstring += '<option' + ((i == 0) ? ' selected' : '') + ' value="' + (today.getFullYear() +i) + '">' + (today.getFullYear() + i) + '</option>';\n }\n formstring += '</select>&nbsp;&nbsp;Month: <select name="month"><option value="">Every month</option>';\n for (i = 0; i < 12; i++)\n {\n formstring += '<option' + ((i == today.getMonth()) ? ' selected' : '') + ' value="' + (i+1) + '">' + config.messages.dates.months[i] + '</option>';\n }\n formstring += '</select>&nbsp;&nbsp;Day: <select name="day"><option value="">Every day</option>';\n for (i = 1; i < 32; i++)\n {\n formstring += '<option' + ((i == (today.getDate() )) ? ' selected' : '') + ' value="' + i + '">' + i + '</option>';\n }\n formstring += '</select>&nbsp;&nbsp;&nbsp;&nbsp;Reminder Title: <input type="text" size="40" name="title" value="" onfocus="this.select();">&nbsp;&nbsp;<input type="button" value="Add reminder" onclick="addReminderToTiddler(this.form)">';\n formstring += '</form></html>';\n \n var panel = config.macros.slider.createSlider(place, null, "New Reminder", "Open a form to add a new reminder to this tiddler");\n wikify(formstring, panel, null, store.getTiddler(params[1]));\n};\n\n// onclick: process input and insert reminder at 'marker'\nwindow.addReminderToTiddler = function(form) {\n if (!window.story) \n {\n window.story=window; \n }\n if (!store.getTiddler) \n {\n store.getTiddler=function(title) {return this.tiddlers[title];};\n }\n var title = window.story.findContainingTiddler(form).id.substr(7);\n var tiddler=store.getTiddler(title);\n var txt='\sn<<reminder ';\n if (form.year.value != "")\n txt += 'year:'+form.year.value + ' ';\n if (form.month.value != "")\n txt += 'month:'+form.month.value + ' ';\n if (form.day.value != "")\n txt += 'day:'+form.day.value + ' ';\n txt += 'title:"'+form.title.value+'" ';\n txt +='>>';\n tiddler.set(null,tiddler.text + txt);\n window.story.refreshTiddler(title,1,true);\n store.setDirty(true);\n // tomo - make sure to save if required\n if(config.options.chkAutoSave)\n saveChanges();\n};\n\nfunction hasTag(tiddlerTags, tagFilters)\n{\n // tomo - this has been updated to work better with tag-less tiddlers\n \n //Make sure we respond well to empty tagFilterlists\n if (tagFilters.length==0) return true;\n \n var bHasTag = false;\n \n /*bNoPos says: "'till now there has been no check using a positive filter"\n Imagine a filterlist consisting of 1 negative filter:\n If the filter isn't matched, we want hasTag to be true.\n Yet bHasTag is still false ('cause only positive filters cause bHasTag to change)\n \n If no positive filters are present bNoPos is true, and no negative filters are matched so we have not returned false\n Thus: hasTag returns true.\n \n If at any time a positive filter is encountered, we want at least one of the tags to match it, so we turn bNoPos to false, which\n means bHasTag must be true for hasTag to return true*/\n var bNoPos=true;\n \n for (var t3 = 0; t3 < tagFilters.length; t3++)\n {\n var negTest = tagFilters[t3].length > 1 && tagFilters[t3].charAt(0) == '!';\n // do the positive filter test outside of the tag loop, in case there are no tags!\n if (bNoPos && !negTest) bNoPos = false;\n \n for(var t2=0; t2<tiddlerTags.length; t2++)\n {\n if (negTest) \n {\n if (tiddlerTags[t2] == tagFilters[t3].substring(1))\n {\n //If at any time a negative filter is matched, we return false\n return false;\n }\n }\n else \n {\n if (tiddlerTags[t2] == tagFilters[t3])\n {\n //A positive filter is matched. As long as no negative filter is matched, hasTag will return true\n bHasTag=true;\n }\n }\n }\n }\n return (bNoPos || bHasTag);\n};\n\n//This function searches all tiddlers for the reminder //macro. It is intended that other plugins (like //calendar) will use this function to query for \n//upcoming reminders.\n//The arguments to this function filter out reminders //based on when they will fire.\n//\n//ARGUMENTS:\n//baseDate is the date that is used as "now". \n//leadtime is a two element int array, with leadtime[0] \n// as the lower bound and leadtime[1] as the\n// upper bound. A reasonable default is [0,14]\n//tags is a space-separated list of tags to use to filter \n// tiddlers. If a tag name begins with an !, then \n// only tiddlers which do not have that tag will \n// be considered. For example "examples holidays" \n// will search for reminders in any tiddlers that \n// are tagged with examples or holidays and \n// "!examples !holidays" will search for reminders \n// in any tiddlers that are not tagged with \n// examples or holidays. Pass in null to search \n// all tiddlers.\n//limit. If limit is null, individual reminders can \n// override the leadtime specified earlier. \n// Pass in 1 in order to override that behavior.\n\nwindow.findTiddlersWithReminders = function findTiddlersWithReminders(baseDate, leadtime, tags, limit)\n{\n//function(searchRegExp,sortField,excludeTag)\n// var macroPattern = "<<([^>\s\s]+)(?:\s\s*)([^>]*)>>";\n var macroPattern = "<<(reminder)(.*)>>";\n var macroRegExp = new RegExp(macroPattern,"mg");\n var matches = store.search(macroRegExp,"title","");\n var arr = [];\n var tagsArray = null;\n if (tags != null)\n {\n tagsArray = tags.split(" ");\n }\n for(var t=matches.length-1; t>=0; t--)\n {\n if (tagsArray != null)\n {\n //If they specified tags to filter on, and this tiddler doesn't \n //match, skip it entirely.\n if ( ! hasTag(matches[t].tags, tagsArray))\n {\n continue;\n }\n }\n\n var targetText = matches[t].text;\n do {\n // Get the next formatting match\n var formatMatch = macroRegExp.exec(targetText);\n if(formatMatch && formatMatch[1] != null && formatMatch[1].toLowerCase() == "reminder")\n {\n //Find the matching date.\n \n var params = formatMatch[2] != null ? formatMatch[2].readMacroParams() : {};\n var dateHash = getParamsForReminder(params);\n if (limit != null || dateHash["leadtime"] == null)\n {\n if (leadtime == null)\n dateHash["leadtime"] = leadtime;\n else\n {\n dateHash["leadtime"] = [];\n dateHash["leadtime"][0] = leadtime[0];\n dateHash["leadtime"][1] = leadtime[1];\n }\n }\n if (dateHash["leadtime"] == null)\n dateHash["leadtime"] = config.macros.reminders["defaultLeadTime"]; \n var leadTimeLowerBound = baseDate.addDays(dateHash["leadtime"][0]);\n var leadTimeUpperBound = baseDate.addDays(dateHash["leadtime"][1]);\n var matchedDate = findDateForReminder(dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound);\n while (matchedDate != null)\n {\n var hash = {};\n hash["diff"] = matchedDate.getDifferenceInDays(baseDate);\n hash["matchedDate"] = new Date(matchedDate.getFullYear(), matchedDate.getMonth(), matchedDate.getDate(), 0, 0);\n hash["params"] = cloneParams(dateHash);\n hash["tiddler"] = matches[t].title;\n hash["tags"] = matches[t].tags;\n arr.pushUnique(hash);\n if (dateHash["recurdays"] != null || (dateHash["year"] == null))\n {\n leadTimeLowerBound = leadTimeLowerBound.addDays(matchedDate.getDifferenceInDays(leadTimeLowerBound)+ 1);\n matchedDate = findDateForReminder(dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound);\n }\n else matchedDate = null;\n }\n }\n }while(formatMatch);\n }\n if(arr.length > 1) //Sort the array by number of days remaining.\n {\n arr.sort(function (a,b) {if(a["diff"] == b["diff"]) {return(0);} else {return (a["diff"] < b["diff"]) ? -1 : +1; } });\n }\n return arr;\n};\n\n//This function takes the reminder macro parameters and\n//generates the string that is used for display.\n//This function is not intended to be called by \n//other plugins.\n window.getReminderMessageForDisplay= function getReminderMessageForDisplay(diff, params, matchedDate, tiddlerTitle)\n{\n var anniversaryString = "";\n var reminderTitle = params["title"];\n if (reminderTitle == null)\n {\n reminderTitle = config.macros.reminders["untitledReminder"];\n }\n if (params["firstyear"] != null)\n {\n anniversaryString = config.macros.reminders["defaultAnniversaryMessage"].replace("DIFF", (matchedDate.getFullYear() - params["firstyear"]));\n }\n var mess = "";\n var diffString = "";\n if (diff == 0)\n {\n diffString = config.macros.reminders["todayString"];\n }\n else if (diff == 1)\n {\n diffString = config.macros.reminders["tomorrowString"];\n }\n else\n {\n diffString = config.macros.reminders["ndaysString"].replace("DIFF", diff);\n }\n var format = config.macros.reminders["defaultReminderMessage"];\n if (params["format"] != null)\n {\n format = params["format"];\n }\n mess = format;\n//HACK! -- Avoid replacing DD in TIDDLER with the date\n mess = mess.replace(/TIDDLER/g, "TIDELER");\n mess = matchedDate.formatStringDateOnly(mess);\n mess = mess.replace(/TIDELER/g, "TIDDLER");\n if (tiddlerTitle != null)\n {\n mess = mess.replace(/TIDDLERNAME/g, tiddlerTitle);\n mess = mess.replace(/TIDDLER/g, "[[" + tiddlerTitle + "]]");\n }\n \n mess = mess.replace("DIFF", diffString).replace("TITLE", reminderTitle).replace("DATE", matchedDate.formatString("DDD MMM DD, YYYY")).replace("ANNIVERSARY", anniversaryString);\n return mess;\n};\n\n// Parse out the macro parameters into a hashtable. This\n// handles the arguments for reminder, showReminders and \n// displayTiddlersWithReminders.\nwindow.getParamsForReminder = function getParamsForReminder(params)\n{\n var dateHash = {};\n var type = "";\n var num = 0;\n var title = "";\n for(var t=0; t<params.length; t++)\n {\n var split = params[t].split(":");\n type = split[0].toLowerCase();\n var value = split[1];\n for (var i=2; i < split.length; i++)\n {\n value += ":" + split[i];\n }\n if (type == "nolinks" || type == "limit" || type == "hidden")\n {\n num = 1;\n }\n else if (type == "leadtime")\n {\n var leads = value.split("...");\n if (leads.length == 1)\n {\n leads[1]= leads[0];\n leads[0] = 0;\n }\n leads[0] = parseInt(leads[0], 10);\n leads[1] = parseInt(leads[1], 10);\n num = leads;\n }\n else if (type == "offsetdayofweek")\n {\n if (value.substr(0,1) == "-")\n {\n dateHash["negativeOffsetDayOfWeek"] = 1;\n value = value.substr(1);\n }\n num = parseInt(value, 10);\n }\n else if (type != "title" && type != "tag" && type != "format")\n {\n num = parseInt(value, 10);\n }\n else\n {\n title = value;\n t++;\n while (title.substr(0,1) == '"' && title.substr(title.length - 1,1) != '"' && params[t] != undefined)\n {\n title += " " + params[t++];\n }\n //Trim off the leading and trailing quotes\n if (title.substr(0,1) == "\s"" && title.substr(title.length - 1,1)== "\s"")\n {\n title = title.substr(1, title.length - 2);\n t--;\n }\n num = title;\n }\n dateHash[type] = num;\n }\n //date is synonymous with day\n if (dateHash["day"] == null)\n {\n dateHash["day"] = dateHash["date"];\n }\n return dateHash;\n};\n\n//This function finds the date specified in the reminder \n//parameters. It will return null if no match can be\n//found. This function is not intended to be used by\n//other plugins.\nwindow.findDateForReminder= function findDateForReminder( dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound)\n{\n if (baseDate == null)\n {\n baseDate = new Date().getMidnight();\n }\n var hashKey = baseDate.convertToYYYYMMDDHHMM();\n for (var k in dateHash)\n {\n hashKey += "," + k + "|" + dateHash[k];\n }\n hashKey += "," + leadTimeLowerBound.convertToYYYYMMDDHHMM();\n hashKey += "," + leadTimeUpperBound.convertToYYYYMMDDHHMM();\n if (reminderCache[hashKey] == null)\n {\n //If we don't find a match in this run, then we will\n //cache that the reminder can't be matched.\n reminderCache[hashKey] = false;\n }\n else if (reminderCache[hashKey] == false)\n {\n //We've already tried this date and failed\n return null;\n }\n else\n {\n return reminderCache[hashKey];\n }\n \n var bOffsetSpecified = dateHash["offsetyear"] != null || \n dateHash["offsetmonth"] != null || \n dateHash["offsetday"] != null || \n dateHash["offsetdayofweek"] != null || \n dateHash["recurdays"] != null;\n \n // If we are matching the base date for a dayofweek offset, look for the base date a \n //little further back.\n var tmp1leadTimeLowerBound = leadTimeLowerBound; \n if ( dateHash["offsetdayofweek"] != null)\n {\n tmp1leadTimeLowerBound = leadTimeLowerBound.addDays(-6); \n }\n var matchedDate = baseDate.findMatch(dateHash, tmp1leadTimeLowerBound, leadTimeUpperBound);\n if (matchedDate != null)\n {\n var newMatchedDate = matchedDate;\n if (dateHash["recurdays"] != null)\n {\n while (newMatchedDate.getTime() < leadTimeLowerBound.getTime())\n {\n newMatchedDate = newMatchedDate.addDays(dateHash["recurdays"]);\n }\n }\n else if (dateHash["offsetyear"] != null || \n dateHash["offsetmonth"] != null || \n dateHash["offsetday"] != null || \n dateHash["offsetdayofweek"] != null)\n {\n var tmpdateHash = cloneParams(dateHash);\n tmpdateHash["year"] = dateHash["offsetyear"];\n tmpdateHash["month"] = dateHash["offsetmonth"];\n tmpdateHash["day"] = dateHash["offsetday"];\n tmpdateHash["dayofweek"] = dateHash["offsetdayofweek"];\n var tmpleadTimeLowerBound = leadTimeLowerBound;\n var tmpleadTimeUpperBound = leadTimeUpperBound;\n if (tmpdateHash["offsetdayofweek"] != null)\n {\n if (tmpdateHash["negativeOffsetDayOfWeek"] == 1)\n {\n tmpleadTimeLowerBound = matchedDate.addDays(-6);\n tmpleadTimeUpperBound = matchedDate;\n\n }\n else\n {\n tmpleadTimeLowerBound = matchedDate;\n tmpleadTimeUpperBound = matchedDate.addDays(6);\n }\n\n }\n newMatchedDate = matchedDate.findMatch(tmpdateHash, tmpleadTimeLowerBound, tmpleadTimeUpperBound);\n //The offset couldn't be matched. return null.\n if (newMatchedDate == null)\n {\n return null;\n }\n }\n if (newMatchedDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))\n {\n reminderCache[hashKey] = newMatchedDate;\n return newMatchedDate;\n }\n }\n return null;\n};\n\n//This does much the same job as findDateForReminder, but\n//this one doesn't deal with offsets or recurring \n//reminders.\nDate.prototype.findMatch = function findMatch(dateHash, leadTimeLowerBound, leadTimeUpperBound)\n{\n\n var bSpecifiedYear = (dateHash["year"] != null);\n var bSpecifiedMonth = (dateHash["month"] != null);\n var bSpecifiedDay = (dateHash["day"] != null);\n var bSpecifiedDayOfWeek = (dateHash["dayofweek"] != null);\n if (bSpecifiedYear && bSpecifiedMonth && bSpecifiedDay)\n {\n return new Date(dateHash["year"], dateHash["month"]-1, dateHash["day"], 0, 0);\n }\n var bMatchedYear = !bSpecifiedYear;\n var bMatchedMonth = !bSpecifiedMonth;\n var bMatchedDay = !bSpecifiedDay;\n var bMatchedDayOfWeek = !bSpecifiedDayOfWeek;\n if (bSpecifiedDay && bSpecifiedMonth && !bSpecifiedYear && !bSpecifiedDayOfWeek)\n {\n\n //Shortcut -- First try this year. If it's too small, try next year.\n var tmpMidnight = this.getMidnight();\n var tmpDate = new Date(this.getFullYear(), dateHash["month"]-1, dateHash["day"], 0,0);\n if (tmpDate.getTime() < leadTimeLowerBound.getTime())\n {\n tmpDate = new Date((this.getFullYear() + 1), dateHash["month"]-1, dateHash["day"], 0,0);\n }\n if ( tmpDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))\n {\n return tmpDate;\n }\n else\n {\n return null;\n }\n }\n\n var newDate = leadTimeLowerBound; \n while (newDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))\n {\n var tmp = testDate(newDate, dateHash, bSpecifiedYear, bSpecifiedMonth, bSpecifiedDay, bSpecifiedDayOfWeek);\n if (tmp != null)\n return tmp;\n newDate = newDate.addDays(1);\n }\n};\n\nfunction testDate(testMe, dateHash, bSpecifiedYear, bSpecifiedMonth, bSpecifiedDay, bSpecifiedDayOfWeek)\n{\n var bMatchedYear = !bSpecifiedYear;\n var bMatchedMonth = !bSpecifiedMonth;\n var bMatchedDay = !bSpecifiedDay;\n var bMatchedDayOfWeek = !bSpecifiedDayOfWeek;\n if (bSpecifiedYear)\n {\n bMatchedYear = (dateHash["year"] == testMe.getFullYear());\n }\n if (bSpecifiedMonth)\n {\n bMatchedMonth = ((dateHash["month"] - 1) == testMe.getMonth() );\n }\n if (bSpecifiedDay)\n {\n bMatchedDay = (dateHash["day"] == testMe.getDate());\n }\n if (bSpecifiedDayOfWeek)\n {\n bMatchedDayOfWeek = (dateHash["dayofweek"] == testMe.getDay());\n }\n\n if (bMatchedYear && bMatchedMonth && bMatchedDay && bMatchedDayOfWeek)\n {\n return testMe;\n }\n};\n\n//Returns true if the date is in between two given dates\nDate.prototype.isBetween = function isBetween(lowerBound, upperBound)\n{\n return (this.getTime() >= lowerBound.getTime() && this.getTime() <= upperBound.getTime());\n}\n//Return a new date, with the time set to midnight (0000)\nDate.prototype.getMidnight = function getMidnight()\n{\n return new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0);\n};\n// Add the specified number of days to a date.\nDate.prototype.addDays = function addDays(numberOfDays)\n{\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + numberOfDays, 0, 0);\n};\n//Return the number of days between two dates.\nDate.prototype.getDifferenceInDays = function getDifferenceInDays(otherDate)\n{\n//I have to do it this way, because this way ignores daylight savings\n var tmpDate = this.addDays(0);\n if (this.getTime() > otherDate.getTime())\n {\n var i = 0;\n for (i = 0; tmpDate.getTime() > otherDate.getTime(); i++)\n {\n tmpDate = tmpDate.addDays(-1);\n }\n return i;\n }\n else\n {\n var i = 0;\n for (i = 0; tmpDate.getTime() < otherDate.getTime(); i++)\n {\n tmpDate = tmpDate.addDays(1);\n }\n return i * -1;\n }\n return 0;\n};\nfunction cloneParams(what) {\n var tmp = {};\n for (var i in what) {\n tmp[i] = what[i];\n }\n return tmp;\n}\n// Substitute date components into a string\nDate.prototype.formatStringDateOnly = function formatStringDateOnly(template)\n{\n template = template.replace("YYYY",this.getFullYear());\n template = template.replace("YY",String.zeroPad(this.getFullYear()-2000,2));\n template = template.replace("MMM",config.messages.dates.months[this.getMonth()]);\n template = template.replace("0MM",String.zeroPad(this.getMonth()+1,2));\n template = template.replace("MM",this.getMonth()+1);\n template = template.replace("DDD",config.messages.dates.days[this.getDay()]);\n template = template.replace("0DD",String.zeroPad(this.getDate(),2));\n template = template.replace("DD",this.getDate());\n return template;\n};\n\n//}}}
!Overdue actions\n<<showReminders leadtime:-365...-1 tag:"action !done" format:"DATE: @@color:red;TITLE@@ [ TIDDLER ]">>\n!Actions for today and tomorrow\n<<showReminders leadtime:0...1 tag:"action !done" format:"DIFF: @@color:red;TITLE@@ [ TIDDLER ]">>\n!All reminders for the next week\n<<showReminders leadtime:0...7 tag:"!done" format:"DIFF: @@color:red;TITLE@@ [ TIDDLER ]">>
Click on the button below to create a new reminder as a tickler:\n\n<<newReminder>>
[img[http://tbn0.google.com/images?q=tbn:qN_WQx9CHEd-mM:http://persona.rin.ru/images/22973.jpg]]\nSergei Nikolaevich Bulgakov Сергей Николаевич Булгаков\n\n[[wikipedia|http://en.wikipedia.org/wiki/Sergei_Bulgakov]]\n\n__Summaries and comments:__\nIrene\nSergei Nikolayevich Bulgakov was born in 1873 in a small town Livny of the Orlov province in family of the priest. Studied in spiritual school and in the Orlovskoy theological seminary, then in Eletskoy grammar school. In 1894 has finished a faculty of law of the Moscow University. Even during study in seminary Bulgakov has gone through religious crisis and has taken a great interest in Marxism. At university he seriously was engaged in studying of political economy. Being engaged in Marxism, Bulgakov in due course has understood an inconsistency of this doctrine. Under influence of reading of Russian religious thinkers (L.Tolstogo, F.Dostoevskogo, Solovyeva, etc.), conversations and disputes with Tolstoy he again finds religious belief. The next years- the period of the social and the publicistic activity of the philosopher. Per 1922 Sergei has been included in lists of scientists and the cultures, a subject dispatch abroad. On December, 30th, 1922 he sends from Crimea to exile, and after short stay in Constantinople, in May, 1923, on a faculty of law of Russian Scientific Institute the post of the professor of the church right and divinity holds in Prague. Soon at its nearest participation arises and the project of creation in Paris Orthodox Theological Institute is successfully carried out. \nBesides theological creativity, Sergei paid the big attention still, at least, to two spheres: to a spiritual management of Russian youth and participation in ecumenical movement. The central channel of religious activity of Russian youth abroad became Russian Student's Christian Movement. The end of the 1927 beginning 1928 passes the English-Russian religious congress which result became establishment of bilateral Commonwealth over Albania and Saint Sergeya Radonejskogo. \nIn 1939 Sergei the cancer of a throat has been found out. It has transferred dangerous operations, has visited on a threshold of death and has substantially lost ability of speech. However till last day’s lives, in heavy conditions of the occupied Paris, it did not stop to serve a liturgy and to read lectures, and also to work above new compositions. Its creativity possesses rare integrity: all to its main themes it has managed to sum up and to give distinct end. As well as in a canon of the Scriptus, its last book, it has finished it absolutely shortly before death "John's Apocalypse ". Sergei's creativity began with publicism, clauses on economic, public, religious and philosophical themes. During the same period it develops ideas of the social Christianity, including the analysis of Christian attitudes to economy and a policy. The special channel is made with the theme of Russia resolved, after Dostoevsky and Solovyev. Sergei's doctrine has passed in the development two stages, philosophy (before exile from the native land) and divinity which, differs under the form and on sources, at the same time are strongly connected by unity of intuitions and the central concepts.\nSergei Bulgakov died from throat cancer on July 12, 1944.\n\nSergei Bulgakov was an enthusiastic follower of Aleksey Khomyakov's ecumenistic idea of Union between the Russian Orthodox Church and the Anglican church. He was one of the founders of the Anglican-Orthodox ecumenical Fellowship of Saint Alban and Saint Sergius devoted to the establishment of such a Union\n\n\n
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<tiddler TspotSidebar>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
[img[http://tbn0.google.com/images?q=tbn:KDXlS00dtaM2wM:http://www.portalmundos.com/mundofilosofia/jpg/simoneweil2.jpg]]
Through the Ages
Christian Thinking
<<list tagged txtGTDSomedayContext any>>\n
[img[http://tbn0.google.com/images?q=tbn:jABIf40tHbhX6M:http://www.mobilewhack.com/images/aiptek_my_note_digital_notepad.jpg]]\nWe are looking for someone who would be willing to research in __literature and philosophy__ about one of these subjects:\n*@@The Experience and Reflection of Biblical Conversion@@\n''Zina Kirko'' is considering to research about this first subject. Her project page you will find [[here|Zina Kirko - The Experience and Reflection of Biblical Conversion]].\n*@@Christian Thinking and Writing during World War I@@\n*@@Christian Thinking and Writing during the Weimar Republic@@\n*@@Christian Thinking and Writing during World War II@@\n''Valeria Biryukova'' will research the period of WW II (1939-45). Her project page you find [[here|Valeria Biryukova - Christian Thinking and Writing during World War II]].\n*@@Christian Thinking and Writing during the Vietnam War@@\n\nIf you are interested, please make a note here!\n\n(I'll try to raise a kind of [[grant]] for these projects!)
[img[http://tbn0.google.com/images?q=tbn:7PF4-mt8cZWN4M:http://www.pbs.org/wnet/religionandethics/week217/pics/p_profile_hauerwas.jpg]]\nHe told this story many years ago:\n\n The assumption seems to be that there are only two political options:\nEither conservative support of the administration, or liberal\ncondemnation of the administration followed by efforts to let the U.N.\nhandle it.\n\n "You know, you have a point," I said. "What would be a\nChristian response to this?" Then I answered, right off the top of my\nhead, "A Christian response might be that tomorrow morning the United\nMethodist Church announces that it is sending a thousand missionaries to\nLibya. We have discovered that it is a fertile field for the gospel. We\nknow how to send missionaries. Here is at least a traditional Christian\nresponse."\n\n "You can't do that," said my adversary.\n\n "Why?" I asked. "You tell me why."\n\n "Because it's illegal to travel in Libya. President\nReagan will not give you a visa to go there."\n\n "No! That's not right," I said. "I'll admit that we can't\ngo to Libya, but not because of President Reagan. ''We can't go there\nbecause we no longer have a church that produces people who can do\nsomething this bold. But we once did."\n\n We would like a church that again asserts that God, not\nnations, rules the world, that the boundaries of God's kingdom transcend\nthose of Caesar, and that the main political task of the church is the\nformation of people who see clearly the cost of discipleship and are\nwilling to pay the price.''\n\nAlex' comment 03.05.2007:\n<<<\nNot bad, indeed!\nSo when will we do these things? There has not been such a movement in\nfor a while (or ever, really that I can recall). Imagine we would\nbegin to send about a thousand missionaries at a time! We would apply\nfor 1000 visas at various Iranian embassies around the world... We\nwould look for 1000 apartments in Ashkhabat. We would seek for 1000\nlanguage and culture study placements across Siberian universities.\nWould we accellarate, would we intensify? Would be be more effective\nin our testimony and in reaching the unreached? \n<<<\n\n[[Book Review: With the Grain of the Universe: The Church’s Witness and Natural Theology|http://www.religion-online.org/showarticle.asp?title=2121]]
|review|k\n|!Overdue actions|!All reminders for the next week|\n|<<showReminders leadtime:-365...-1 tag:"action !done" format:"DATE: @@color:red;TITLE@@ [ TIDDLER ]">>|<<showReminders leadtime:0...7 tag:"!done" format:"DIFF: @@color:red;TITLE@@ [ TIDDLER ]">>|\n|!Actions for today/tomorrow|~|\n|<<showReminders leadtime:0...1 tag:"action !done" format:"DIFF: @@color:red;TITLE@@ [ TIDDLER ]">>|~|\n|!Project Review|!Action Review|\n|<<tiddler "Project Review">>|<<tiddler "Action Review">>|\n
/***\n|''Name:''|TWUpdatePlugin|\n|''Description:''|Plugin to enable quick update of TW core|\n|''Version:''|1.0.2|\n|''Date:''|December 15, 2006|\n|''Source:''|http://www.dcubed.ca/|\n|''Author:''|Tom Otvos|\n|''~CoreVersion:''|2.0.7|\n|''Browser:''|Firefox 1.5+; InternetExplorer 6.0+|\n***/\n//{{{\n\nversion.extensions.twupdate = {major: 1, minor: 0, revision: 2, source: "http://www.dcubed.ca/"};\n\nconfig.macros.twupdate = { \n label: "update",\n sourceUrl: "http://www.tiddlywiki.com/empty.html", \n lingo: {\n prompt: "Update this TiddlyWiki from TiddlyWiki.com", \n warning: "Are you sure you want to update this document with the latest version of TiddlyWiki (and do you know that all your plugins are compatible)?\sn\snIf you want to continue, your document will first be saved with a backup.",\n success: "Update was successful. Click on 'OK' to reload the document",\n errNoHttp: "Unable to allocate an HTTP request object for the update",\n errIncompatible: "This version of TiddlyWiki cannot be updated by this plugin. Sorry.",\n errIncompatible2: "This version of TiddlyWiki is the last version that can be updated by this plugin. Sorry.",\n progressLoading: "Getting update from TiddlyWiki.com...",\n progressLoadSuccess: "File successfully loaded",\n progressLoadFailure: "File was not loaded successfully (%0)",\n progressMerging: "Merging with existing document..."\n }\n}\n\nconfig.macros.twupdate.handler = function(place,macroName,params)\n{\n if(!readOnly) {\n var label = params[0] ? params[0] : this.label;\n createTiddlyButton(place, label, this.lingo.prompt, this.onClick, null, null, null);\n }\n}\n\nconfig.macros.twupdate.onClick = function(e)\n{\n if (version.major != 2 || version.minor > 1 || (version.minor == 0 && version.revision < 7)) {\n alert(config.macros.twupdate.lingo.errIncompatible);\n return;\n }\n \n //if (version.major != 2 || version.minor != 0 || version.revision == 11) {\n // alert(config.macros.twupdate.lingo.errIncompatible2);\n // return;\n //}\n \n if (!confirm(config.macros.twupdate.lingo.warning)) return;\n\n try {\n // force a save with backup\n var saveBackups = config.options.chkSaveBackups;\n config.options.chkSaveBackups = true;\n saveChanges();\n config.options.chkSaveBackups = saveBackups;\n \n var ajax = new AjaxHelper();\n displayMessage(config.macros.twupdate.lingo.progressLoading);\n ajax.getText(config.macros.twupdate.sourceUrl, config.macros.twupdate.performUpdate); \n }\n catch (e) {\n alert(e);\n }\n\n return false;\n}\n\n// Courtesy of http://www.worldtimzone.com/res/encode/...\nfunction utf8(wide) {\n var c, s;\n var enc = "";\n var i = 0;\n while(i<wide.length) {\n c= wide.charCodeAt(i++);\n // handle UTF-16 surrogates\n if (c>=0xDC00 && c<0xE000) continue;\n if (c>=0xD800 && c<0xDC00) {\n if (i>=wide.length) continue;\n s= wide.charCodeAt(i++);\n if (s<0xDC00 || c>=0xDE00) continue;\n c= ((c-0xD800)<<10)+(s-0xDC00)+0x10000;\n }\n // output value\n if (c<0x80) enc += String.fromCharCode(c);\n else if (c<0x800) enc += String.fromCharCode(0xC0+(c>>6),0x80+(c&0x3F));\n else if (c<0x10000) enc += String.fromCharCode(0xE0+(c>>12),0x80+(c>>6&0x3F),0x80+(c&0x3F));\n else enc += String.fromCharCode(0xF0+(c>>18),0x80+(c>>12&0x3F),0x80+(c>>6&0x3F),0x80+(c&0x3F));\n }\n return enc;\n}\n\nconfig.macros.twupdate.performUpdate = function(emptyHtml, status, statusText)\n{\n // note that this is begin called from a callback from an event handler, so\n // "this" is most definitely not defined!\n \n if (status == 200)\n displayMessage(config.macros.twupdate.lingo.progressLoadSuccess);\n else {\n displayMessage(config.macros.twupdate.lingo.progressLoadFailure.format([statusText]));\n return;\n }\n displayMessage(config.macros.twupdate.lingo.progressMerging);\n \n // very important...convert the response to UTF-8 to be fully TW-compatible\n var re = /[^\su0000-\su007F]/g ;\n emptyHtml = emptyHtml.replace(re, function($0) {return(utf8($0));});\n \n // the bulk of this is cribbed from saveChanges()...\n var originalPath = document.location.toString();\n // Check we were loaded from a file URL\n if (originalPath.substr(0,5) != "file:") {\n alert(config.messages.notFileUrlError);\n if (store.tiddlerExists(config.messages.saveInstructions))\n displayTiddler(null,config.messages.saveInstructions);\n return;\n }\n var localPath = getLocalPath(originalPath);\n\n // Locate the storeArea div's\n var posOpeningDiv = emptyHtml.indexOf(startSaveArea);\n var limitClosingDiv = emptyHtml.indexOf("<!--POST-BODY-START--"+">");\n var posClosingDiv = emptyHtml.lastIndexOf(endSaveArea,limitClosingDiv == -1 ? emptyHtml.length : limitClosingDiv);\n if ((posOpeningDiv == -1) || (posClosingDiv == -1)) {\n alert(config.messages.invalidFileError.format(['empty.html']));\n return;\n }\n\n // Save new file\n var revised = emptyHtml.substr(0,posOpeningDiv + startSaveArea.length) + \n convertUnicodeToUTF8(allTiddlersAsHtml()) + "\sn\st\st" +\n emptyHtml.substr(posClosingDiv);\n var newSiteTitle = convertUnicodeToUTF8((wikifyPlain("SiteTitle") + " - " + wikifyPlain("SiteSubtitle")).htmlEncode());\n revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");\n revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPreHead","") + "\sn");\n revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPostHead","") + "\sn");\n revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPreBody","") + "\sn");\n revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPostBody","") + "\sn");\n var save = saveFile(localPath, revised);\n if (save) {\n displayMessage(config.messages.mainSaved, "file://" + localPath);\n store.setDirty(false);\n alert(config.macros.twupdate.lingo.success);\n document.location.reload();\n }\n else\n alert(config.messages.mainFailed);\n}\n\nfunction AjaxHelper()\n{\n this.http = null;\n \n try\n {\n this.http = new XMLHttpRequest()\n }\n \n catch(e)\n {\n // if we don't get an internal object, try allocating it using ActiveX, with successive\n // fallbacks to earlier MSXML versions as necessary\n try\n {\n this.http = new ActiveXObject("Msxml2.XMLHTTP.4.0")\n } \n catch(e) \n {\n try\n {\n this.http = new ActiveXObject("MSXML2.XMLHTTP")\n } \n catch(e) \n {\n try\n {\n this.http = new ActiveXObject("Microsoft.XMLHTTP")\n } \n catch(e) \n {\n this.http = null\n }\n }\n }\n }\n \n if (!this.http) throw 'Unable to allocate an HTTP request object';\n}\n\nAjaxHelper.prototype.getText = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("GET", url, callback, async, true, false);\n}\n\nAjaxHelper.prototype.getXML = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("GET", url, callback, async, true, true);\n}\n\nAjaxHelper.prototype.getHead = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("HEAD", url, callback, async, false, false);\n}\n\nAjaxHelper.prototype.abort = function()\n{\n if (this.http) this.http.abort();\n}\n\nAjaxHelper.prototype.setRequestHeader = function(name, value)\n{\n if (this.http) this.http.setRequestHeader(name, value);\n}\n\nAjaxHelper.prototype._request = function(method, url, callback, async, hasResponse, hasResponseXML)\n{\n if (!this.http) return;\n \n // get reference to request object so we can use it in closure\n var xmlHttp = this.http, helper = this;\n xmlHttp.onreadystatechange = function()\n {\n if (!async) return;\n if (xmlHttp.readyState == 4)\n callback((hasResponse ? (hasResponseXML ? xmlHttp.responseXML : xmlHttp.responseText) : null), xmlHttp.status, xmlHttp.statusText, helper._parsedResponseHeaders());\n }\n \n try {\n // need some cross-domain privileges for Firefox\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n } \n catch (e) \n {\n }\n \n xmlHttp.open(method, url, async);\n xmlHttp.send(null);\n if (!async) callback((hasResponse ? (hasResponseXML ? xmlHttp.responseXML : xmlHttp.responseText) : null), xmlHttp.status, xmlHttp.statusText, this._parsedResponseHeaders());\n }\n \n catch (e)\n {\n alert(e);\n }\n}\n\nAjaxHelper.prototype._parsedResponseHeaders = function()\n{\n if (this.http) {\n var headersArray = new Array();\n var headers = this.http.getAllResponseHeaders().split("\sn");\n for (var i = 0; i < headers.length; i++) {\n var h = headers[i].trim();\n if (h.length == 0) continue;\n // value can have ':' so do not use split here!\n var sep = h.indexOf(':');\n headersArray[h.substring(0, sep).trim()] = h.substr(sep + 1).trim();\n }\n return headersArray;\n }\n else\n return null;\n}\n\n//}}}\n
[img[http://tbn0.google.com/images?q=tbn:N4laI4dE1K89QM:http://www.mnhn.fr/teilhard/FTDC_118_P.JPG]]\n"French Jesuit paleontologist (Sarcenat, Puy~de~Dôme, 1881 - New York 1955). The scientific work of Teilhard de Chardin is situated primarily in Asia: discovery of the Peking Man (1929), explorations in India, in Java, participation in the Yellow Crossing (1931, etc.). His theological and philosophical writings, banned from publication during his lifetime, have been disseminated since his death. Enlightened by a synthesizing vision of the universal unfolding of evolution, they give validity to the phenomenon of the cerebral complexification of the human phylum, ending in the abrupt appearance of the consciousness of self (the "threshold" of reflection), then in a worldwide communication network of human thought, the noosphere, at the heart of which is acting "Christ, the capstone of evolution", who is conducting humanity, in a simultaneously immanent and transcendent fashion, towards the "Omega point" (the Kingdom of God). His principal work, the Phenomenon of Man,appeared after his death."\n//Le Grand Larousse Universel//, Tome 14, p.10095 (Translation by Janice B. Paulsen)\n\n[[The Future of Mankind by Pierre Teilhard de Chardin|http://www.religion-online.org/showbook.asp?title=2287]]\n[[IS NOOGENESIS PROGRESSING?|http://www.richmond.edu/%7Ejpaulsen/teilhard/isnoogen.html#Pierre]]\n[[Hymn of the Universe by Pierre Teilhard de Chardin|http://www.religion-online.org/showbook.asp?title=1621]]\n
[img[http://tbn0.google.com/images?q=tbn:CB8LqBaGLLc6hM:http://www.sfos.uaf.edu/research/graphics/reynolds.jpg]] [img[http://tbn0.google.com/images?q=tbn:JOtW95bt6sUNNM:http://www.rise.hs.iastate.edu/computer.jpg]] \n[[Microcontent Publishing|http://www.useit.com/alertbox/980906.html]]\n[[Working with Internet browsers/search engines]]\n[[Writing Basics in Research, etc.|http://www.studygs.net/writing/]]\n[[The Writing of a Historical Essay or Research Paper|http://www.ilstu.edu/class/hist127/guide.html]]\n[[A good example how to write your first research paper|http://www.fordham.edu/halsall/mod/ayrapetova-dec.html]]\n[[More Papers and Projects|http://www.fordham.edu/halsall/mod/modsbook01.html]] \n[[An excellent research paper - the way to do it!|http://academic.brooklyn.cuny.edu/core9/phalsall/studpages/vento.html]]\n[[ Citing Internet and Electronic Resources-APA|http://www.mlb.ilstu.edu/ressubj/subject/intrnt/apa.htm]]\n[[APA excerpt|http://www.apastyle.org/elecsource.html]] \n[[Claremont Rules on How to Write Essays|http://www.cst.edu/academic_resources/writing_center.php]]\n\n[[E-books online]]\n
[img[http://tbn0.google.com/images?q=tbn:tuAztTBIAsG03M:http://www.english.upenn.edu/Projects/knarf/Gifs/aquinas.gif]]\n1225 (or 1227?) - 1274\n\n[[Biography at "edocere"|http://www.edocere.org/st_thomas_aquinas_bio.htm]]\n[[Second Chance for Thomas|http://www.religion-online.org/showarticle.asp?title=3266]]
[img[http://tbn0.google.com/images?q=tbn:Afl2LWsb23DEvM:http://c250.columbia.edu/images/c250_celebrates/remarkable_columbians/240x240_bio_t_merton.jpg]]\n\n<<<\nMy Lord God, I have no idea where I am going. \nI do not see the road ahead of me. \nI cannot know for certain where it will end. \n\nNor do I really know myself, \nand the fact that I think that I am following your will \ndoes not mean that I am actually doing so. \nBut I believe that the desire to please you \ndoes in fact please you. \n\nAnd I hope I have that desire in all that I am doing. \nI hope that I will never do anything apart from that desire. \nAnd I know that if I do this \nyou will lead me by the right road \nthough I may know nothing about it. \n\nTherefore will I trust you always \nthough I may seem to be lost and in the shadow of death. \nI will not fear, for you are ever with me, \nand you will never leave me to face my perils alone. \n(Prayer of Thomas Merton) \n<<<\n\n<<<\nThomas Merton claims that silence is our admission that we have broken communication with God and are now willing to listen. We can be reduced to silence in times of doubt, uncertainty, nothingness, and awe. When we have exhausted all our human efforts, experience the limitations of human justice, or the finitude of human relationships, we are left with silence. Those who have experienced the sacrament of failure are more likely to know the emptying power of silence. \nKathryn Damiano\n<<<\n\n<<<\n"I have the immense joy of being man, a member of a race which God himself became incarnate. . . . If only everybody could realise this! But it cannot be explained. There is no way of telling people that they are all walking around shining like the sun." If we could all see ourselves as we really are, he reflected, "there would be no more war, no more hatred, no more cruelty, no more greed...."\n<<<\n\n[[Short bios|http://www.naz.edu/dept/library/about/merton/bio.html]]\n[[A Spiritual Star|http://www.geocities.com/ganesha_gate/merton.html]]\n[[His publications|http://www.merton.org/chrono.htm]]\n[[The Thomas Merton Center Foundation|http://www.merton.org]]\n[[The Abbey of Gethsemani|http://www.monks.org/thomasmerton.html]]\n[[Thomas Merton Resources (annotated links)|http://www.clas.ufl.edu/users/gthursby/mys/merton.htm]]\n[[The Thomas Merton Center (Bellarmine College)|http://www1.bellarmine.edu/mertoncenter/]]\n[[Thomas Merton: The Global Future and Parish Priorities|http://www.religion-online.org/showarticle.asp?title=1417]]\n[[Thomas Merton: The Pursuit of Marginality|http://www.religion-online.org/showarticle.asp?title=1784]]\n\n\n\n\nZina: I tried to find russian translations of T. Merton's works. There is a great number of translations of his books and even letters in internet. But there is no russian version of "The Seven storey mountain", only some fragments. Maybe these links can be useful to somebody:\n\nhttp://www.francis.ru/editrice/index.php?show=lib&book=1093053955#86 - "Одинокие думы"\nhttp://thmerton.msk.ru/text_last_chapter.html - Последняя глава книги "Семиярусная гора" \nhttp://thmerton.msk.ru/lww_brother_john.html - отрывки из книги "Семиярусная гора"\nhttp://thmerton.msk.ru/text.html - разные тексты\n
/***\nRequired by Tiddlyspot\n***/\n//{{{\n\nconfig.options.chkHttpReadOnly = false; // make it so you can by default see edit controls via http\n\nif (window.location.protocol != "file:")\n config.options.chkGTDLazyAutoSave = false; // disable autosave in d3\n\nconfig.tiddlyspotSiteId = 'chth';\n\n// probably will need to redo this for TW 2.2\nwith (config.shadowTiddlers) {\n SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';\n SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");\n OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");\n DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[Welcome to Tiddlyspot]] ");\n MainMenu = MainMenu.replace(/^/,"[[Welcome to Tiddlyspot]] ");\n}\n\nmerge(config.shadowTiddlers,{\n\n'Welcome to Tiddlyspot':[\n "This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",\n "",\n "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",\n "<<tiddler TspotControls>>",\n "See also GettingStarted.",\n "",\n "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \s"save to web\s" button in the column on the right.",\n "",\n "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \s"upload\s" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",\n "",\n "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki Guides|http://tiddlywikiguides.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",\n "",\n "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."\n].join("\sn"),\n\n'TspotControls':[\n "| tiddlyspot password:|<<option pasUploadPassword>>|",\n "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<<br>>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",\n "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"\n].join("\sn"),\n\n'TspotSidebar':[\n "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"\n].join("\sn"),\n\n'TspotOptions':[\n "tiddlyspot password:",\n "<<option pasUploadPassword>>",\n ""\n].join("\sn")\n\n});\n//}}}\n
If you are connected to the Internet, you can always get the latest version of this application. There are ''three'' ways you can do this:\n\nClick the following button if you simply want to get the latest changes to any of the core tiddlers that make up this application. These tiddlers are tagged "gtd", and updating in this way will not overwrite any of the core tiddlers that you may have changed unless the core tiddlers are even newer than your changes. This is the recommended way to get updates:\n**<<importUpdates "http://www.dcubed.ca/gtd-update.html">>\n\nClick the following button if you would like to get the latest changes to any of the core tiddlers, but to interactively approve each and every updated tiddler as it is loaded into your system. If there are no updated tiddlers, you will not be prompted and the update will exit quietly:\n**<<importUpdates "http://www.dcubed.ca/gtd-update.html" updates "Update interactively" "Click here to interactively update the application" confirm>>\n\nClick the following button if you want to download all of the core tiddlers, regardless of their modification date. Use this to absolutely ensure that you are running with the core application as it was originally written:\n**<<importUpdates "http://www.dcubed.ca/gtd-update.html" all "Update everything">>\n\n''For your safety, your file will be saved and a backup file will be automatically generated before any update is performed.''\n\n!!Update ~TiddlyWiki\nAs a convenience, you can easily update the ~TiddlyWiki core used by this application by clicking on the following button:\n**<<twupdate "Update TiddlyWiki">>\n\nNote that you do not //need// to use this to update ~TiddlyWiki; you can always use [[this technique|http://www.tiddlywiki.com/#HowToUpgrade]]. But a single click seems a whole lot easier!\n\n!!Import and export\nIf you want finer-grained control over moving tiddlers in and out of this system, the following tools will do the job:\n\n** +++[Import...|Import selected tiddlers from another wiki]<<importTiddlers inline>>===\n\n** +++[Export...|Export selected tiddlers from this wiki]<<exportTiddlers inline>>===\n
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |\n| 1/5/2007 8:49:27 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 8:57:3 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 8:58:29 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 9:18:53 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/4/2007 23:59:28 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 10:50:56 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 1/5/2007 10:52:53 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 1/5/2007 11:0:13 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 14:47:20 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 14:53:31 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 15:6:22 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 15:49:43 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 1/5/2007 15:55:53 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 16:8:38 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 1/5/2007 16:17:16 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 16:25:55 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 1/5/2007 16:33:30 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 1/5/2007 17:32:38 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 18:16:9 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 19:48:5 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 1/5/2007 22:53:4 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 2/5/2007 10:24:49 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 2/5/2007 10:56:49 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 2/5/2007 11:14:9 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 2/5/2007 13:45:1 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 2/5/2007 14:57:54 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 2/5/2007 15:38:55 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 2/5/2007 16:31:38 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 2/5/2007 16:35:8 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 2/5/2007 16:36:53 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/5/2007 16:58:33 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/5/2007 21:44:30 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 2/5/2007 22:26:31 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/5/2007 15:22:28 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/5/2007 17:1:55 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/5/2007 17:14:51 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/5/2007 21:12:23 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/5/2007 21:17:10 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/5/2007 21:19:57 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/5/2007 21:24:5 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/5/2007 21:30:43 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/5/2007 21:35:33 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/5/2007 21:52:30 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/5/2007 22:0:35 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 4/5/2007 9:29:17 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 4/5/2007 9:51:52 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 4/5/2007 10:3:30 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 4/5/2007 11:54:54 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 4/5/2007 17:14:19 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/5/2007 7:52:15 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 5/5/2007 9:50:0 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 5/5/2007 9:53:56 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 5/5/2007 11:49:12 | Ben | [[/|http://chth.tiddlyspot.com/#%5B%5BWhat's%20new%3F%5D%5D]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 5/5/2007 11:55:54 | Ben | [[/|http://chth.tiddlyspot.com/#%5B%5BWhat's%20new%3F%5D%5D]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 5/5/2007 11:58:12 | Ben | [[/|http://chth.tiddlyspot.com/#%5B%5BWhat's%20new%3F%5D%5D]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 5/5/2007 12:18:55 | Ben | [[/|http://chth.tiddlyspot.com/#%5B%5BWhat's%20new%3F%5D%5D]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/5/2007 13:14:19 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 5/5/2007 15:23:33 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 5/5/2007 22:50:43 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/5/2007 5:57:6 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 13:8:19 | Zina | [[index.html|http://chth.tiddlyspot.com/index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 13:45:3 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 13:45:15 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 13:49:23 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 13:49:24 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 13:53:12 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 13:53:14 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 14:0:50 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 14:1:3 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 14:4:57 | YourName | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 14:5:8 | YourName | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 18:13:16 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 18:18:39 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 18:30:56 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 18:42:53 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 18:57:46 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 19:4:23 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 19:10:50 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 19:13:7 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/5/2007 19:18:12 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 19:26:53 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 19:36:34 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 19:39:4 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 20:5:47 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 20:10:14 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 20:56:12 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 21:9:39 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 21:24:13 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 22:40:33 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/5/2007 23:50:35 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/5/2007 9:29:7 | Ben | [[/|http://chth.tiddlyspot.com/#SideBarOptions]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 7/5/2007 9:36:5 | Ben | [[/|http://chth.tiddlyspot.com/#SideBarOptions]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 7/5/2007 9:44:42 | Ben | [[/|http://chth.tiddlyspot.com/#SideBarOptions]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/5/2007 12:16:21 | Ben | [[/|http://chth.tiddlyspot.com/#%5B%5BWhat's%20new%3F%5D%5D]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/5/2007 12:51:13 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/5/2007 13:4:39 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/5/2007 13:17:8 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/5/2007 13:25:41 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/5/2007 14:35:44 | Ben | [[/|http://chth.tiddlyspot.com/#Ben]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/5/2007 14:55:23 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/5/2007 15:4:16 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/5/2007 15:19:14 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 7/5/2007 15:40:36 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/5/2007 21:52:25 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/5/2007 20:5:42 | Ben | [[/|http://chth.tiddlyspot.com/#%5B%5BMarina%20Rebrushkina%20on%20Eberhard%20Arnold%5D%5D]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/5/2007 20:35:33 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/5/2007 22:6:16 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/5/2007 22:15:28 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/5/2007 22:32:2 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 8/5/2007 22:43:6 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/5/2007 17:36:16 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/5/2007 18:1:56 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/5/2007 18:35:28 | Zina | [[index.html|http://chth.tiddlyspot.com/./index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 9/5/2007 18:36:22 | Zina | [[index.html|http://chth.tiddlyspot.com/./index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 9/5/2007 18:37:13 | Zina | [[index.html|http://chth.tiddlyspot.com/./index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/5/2007 18:45:29 | Zina | [[index.html|http://chth.tiddlyspot.com/./index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/5/2007 21:50:27 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/5/2007 21:54:19 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/5/2007 18:56:18 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/5/2007 18:59:52 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/5/2007 19:3:41 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 10/5/2007 19:13:36 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 10/5/2007 19:24:5 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 10/5/2007 19:31:41 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 10/5/2007 19:38:28 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/5/2007 21:27:2 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/5/2007 2:2:47 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/5/2007 3:22:19 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/5/2007 18:15:8 | Irene | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/5/2007 18:15:30 | Irene | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok | Ok |\n| 12/5/2007 18:21:38 | Irene | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 12/5/2007 19:1:11 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 12/5/2007 20:56:47 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 13/5/2007 14:53:37 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 13/5/2007 14:56:17 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 13/5/2007 20:31:40 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 13/5/2007 21:3:16 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 13/5/2007 21:44:44 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 13/5/2007 21:47:36 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 13/5/2007 13:7:18 | Ben | [[/|http://chth.tiddlyspot.com/#%5B%5BE-books%20online%5D%5D]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 13/5/2007 13:10:42 | Ben | [[/|http://chth.tiddlyspot.com/#%5B%5BE-books%20online%5D%5D]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/5/2007 8:44:33 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 14/5/2007 9:11:44 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/5/2007 0:45:25 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/5/2007 19:27:26 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 14/5/2007 20:19:3 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 14/5/2007 20:37:2 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 14/5/2007 21:2:26 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 14/5/2007 21:58:52 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 15/5/2007 18:1:24 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 15/5/2007 18:16:37 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 15/5/2007 19:11:22 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 15/5/2007 20:39:27 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 15/5/2007 21:55:13 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 16/5/2007 1:43:6 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 16/5/2007 16:5:12 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 16/5/2007 16:24:43 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 16/5/2007 16:27:56 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 16/5/2007 21:55:0 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 16/5/2007 22:11:35 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 16/5/2007 22:41:36 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/5/2007 20:50:12 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/5/2007 21:36:17 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/5/2007 21:52:31 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/5/2007 19:25:56 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 19/5/2007 7:30:48 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/5/2007 13:55:45 | Maria Strus | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/5/2007 13:55:53 | Maria Strus | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/5/2007 17:27:5 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 19/5/2007 17:51:28 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 19/5/2007 18:1:10 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 19/5/2007 18:5:53 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 19/5/2007 18:11:4 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 19/5/2007 18:17:26 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/5/2007 18:18:13 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 19/5/2007 21:22:46 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/5/2007 1:20:39 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/5/2007 0:32:5 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/5/2007 10:23:36 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 16:29:4 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 16:29:44 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 16:30:14 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 16:52:59 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 16:54:36 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 18:7:13 | Zina | [[index.html|http://chth.tiddlyspot.com/./index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 19:33:4 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 19:33:47 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 19:34:29 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 20:3:31 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 22:11:20 | Zina | [[index.html|http://chth.tiddlyspot.com/./index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/5/2007 23:35:47 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 12:42:10 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 26/5/2007 12:48:6 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 13:15:9 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 26/5/2007 13:17:39 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 17:34:5 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 17:34:21 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 17:36:11 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 17:38:55 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 17:57:31 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 17:58:8 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 18:16:37 | Zina | [[index.html|http://chth.tiddlyspot.com/./index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 18:33:28 | Zina | [[index.html|http://chth.tiddlyspot.com/./index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 18:48:6 | Zina | [[index.html|http://chth.tiddlyspot.com/./index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 18:59:25 | Zina | [[index.html|http://chth.tiddlyspot.com/./index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 19:14:18 | Zina | [[index.html|http://chth.tiddlyspot.com/./index.html]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 19:37:22 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 26/5/2007 20:32:16 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 27/5/2007 20:44:25 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 27/5/2007 20:49:29 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 27/5/2007 20:51:57 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/5/2007 9:47:21 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/5/2007 15:1:17 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/5/2007 15:1:42 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 28/5/2007 15:2:49 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/5/2007 14:22:36 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/5/2007 15:8:41 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 29/5/2007 15:45:4 | Ben | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/5/2007 15:26:15 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/5/2007 15:27:40 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 30/5/2007 16:52:27 | Zina | [[/|http://chth.tiddlyspot.com/]] | [[store.cgi|http://chth.tiddlyspot.com/store.cgi]] | . | index.html | . |
/***\n|''Name:''|UploadPlugin|\n|''Description:''|Save to web a TiddlyWiki|\n|''Version:''|3.4.5|\n|''Date:''|Oct 15, 2006|\n|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|\n|''Documentation:''|http://tiddlywiki.bidix.info/#UploadDoc|\n|''Author:''|BidiX (BidiX (at) bidix (dot) info)|\n|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|\n|''~CoreVersion:''|2.0.0|\n|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|\n|''Include:''|config.lib.file; config.lib.log; config.lib.options; PasswordTweak|\n|''Require:''|[[UploadService|http://tiddlywiki.bidix.info/#UploadService]]|\n***/\n//{{{\nversion.extensions.UploadPlugin = {\n major: 3, minor: 4, revision: 5, \n date: new Date(2006,9,15),\n source: 'http://tiddlywiki.bidix.info/#UploadPlugin',\n documentation: 'http://tiddlywiki.bidix.info/#UploadDoc',\n author: 'BidiX (BidiX (at) bidix (dot) info',\n license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',\n coreVersion: '2.0.0',\n browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'\n};\n//}}}\n\n////+++!![config.lib.file]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.file) config.lib.file= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.file.dirname = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(0, lastpos);\n } else {\n return filePath.substring(0, filePath.lastIndexOf("\s\s"));\n }\n};\nconfig.lib.file.basename = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("#")) != -1) \n filePath = filePath.substring(0, lastpos);\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(lastpos + 1);\n } else\n return filePath.substring(filePath.lastIndexOf("\s\s")+1);\n};\nwindow.basename = function() {return "@@deprecated@@";};\n//}}}\n////===\n\n////+++!![config.lib.log]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.log) config.lib.log= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 1}, \n date: new Date(2006,8,19)\n};\nconfig.lib.Log = function(tiddlerTitle, logHeader) {\n if (version.major < 2)\n this.tiddler = store.tiddlers[tiddlerTitle];\n else\n this.tiddler = store.getTiddler(tiddlerTitle);\n if (!this.tiddler) {\n this.tiddler = new Tiddler();\n this.tiddler.title = tiddlerTitle;\n this.tiddler.text = "| !date | !user | !location |" + logHeader;\n this.tiddler.created = new Date();\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[tiddlerTitle] = this.tiddler;\n else\n store.addTiddler(this.tiddler);\n }\n return this;\n};\n\nconfig.lib.Log.prototype.newLine = function (line) {\n var now = new Date();\n var newText = "| ";\n newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";\n newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";\n newText += config.options.txtUserName + " | ";\n var location = document.location.toString();\n var filename = config.lib.file.basename(location);\n if (!filename) filename = '/';\n newText += "[["+filename+"|"+location + "]] |";\n this.tiddler.text = this.tiddler.text + "\sn" + newText;\n this.addToLine(line);\n};\n\nconfig.lib.Log.prototype.addToLine = function (text) {\n this.tiddler.text = this.tiddler.text + text;\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[this.tiddler.tittle] = this.tiddler;\n else {\n store.addTiddler(this.tiddler);\n story.refreshTiddler(this.tiddler.title);\n store.notify(this.tiddler.title, true);\n }\n if (version.major < 2)\n store.notifyAll(); \n};\n//}}}\n////===\n\n////+++!![config.lib.options]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.options) config.lib.options = {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\n\nconfig.lib.options.init = function (name, defaultValue) {\n if (!config.options[name]) {\n config.options[name] = defaultValue;\n saveOptionCookie(name);\n }\n};\n//}}}\n////===\n\n////+++!![PasswordTweak]\n\n//{{{\nversion.extensions.PasswordTweak = {\n major: 1, minor: 0, revision: 3, date: new Date(2006,8,30),\n type: 'tweak',\n source: 'http://tiddlywiki.bidix.info/#PasswordTweak'\n};\n//}}}\n/***\n!!config.macros.option\n***/\n//{{{\nconfig.macros.option.passwordCheckboxLabel = "Save this password on this computer";\nconfig.macros.option.passwordType = "password"; // password | text\n\nconfig.macros.option.onChangeOption = function(e)\n{\n var opt = this.getAttribute("option");\n var elementType,valueField;\n if(opt) {\n switch(opt.substr(0,3)) {\n case "txt":\n elementType = "input";\n valueField = "value";\n break;\n case "pas":\n elementType = "input";\n valueField = "value";\n break;\n case "chk":\n elementType = "input";\n valueField = "checked";\n break;\n }\n config.options[opt] = this[valueField];\n saveOptionCookie(opt);\n var nodes = document.getElementsByTagName(elementType);\n for(var t=0; t<nodes.length; t++) \n {\n var optNode = nodes[t].getAttribute("option");\n if (opt == optNode) \n nodes[t][valueField] = this[valueField];\n }\n }\n return(true);\n};\n\nconfig.macros.option.handler = function(place,macroName,params)\n{\n var opt = params[0];\n if(config.options[opt] === undefined) {\n return;}\n var c;\n switch(opt.substr(0,3)) {\n case "txt":\n c = document.createElement("input");\n c.onkeyup = this.onChangeOption;\n c.setAttribute ("option",opt);\n c.className = "txtOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\n break;\n case "pas":\n // input password\n c = document.createElement ("input");\n c.setAttribute("type",config.macros.option.passwordType);\n c.onkeyup = this.onChangeOption;\n c.setAttribute("option",opt);\n c.className = "pasOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\n // checkbox link with this password "save this password on this computer"\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option","chk"+opt);\n c.className = "chkOptionInput "+opt;\n place.appendChild(c);\n c.checked = config.options["chk"+opt];\n // text savePasswordCheckboxLabel\n place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));\n break;\n case "chk":\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option",opt);\n c.className = "chkOptionInput "+opt;\n place.appendChild(c);\n c.checked = config.options[opt];\n break;\n }\n};\n//}}}\n/***\n!! Option cookie stuff\n***/\n//{{{\nwindow.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;\nwindow.loadOptionsCookie = function()\n{\n var cookies = document.cookie.split(";");\n for(var c=0; c<cookies.length; c++) {\n var p = cookies[c].indexOf("=");\n if(p != -1) {\n var name = cookies[c].substr(0,p).trim();\n var value = cookies[c].substr(p+1).trim();\n switch(name.substr(0,3)) {\n case "txt":\n config.options[name] = unescape(value);\n break;\n case "pas":\n config.options[name] = unescape(value);\n break;\n case "chk":\n config.options[name] = value == "true";\n break;\n }\n }\n }\n};\n\nwindow.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;\nwindow.saveOptionCookie = function(name)\n{\n var c = name + "=";\n switch(name.substr(0,3)) {\n case "txt":\n c += escape(config.options[name].toString());\n break;\n case "chk":\n c += config.options[name] ? "true" : "false";\n // is there an option link with this chk ?\n if (config.options[name.substr(3)]) {\n saveOptionCookie(name.substr(3));\n }\n break;\n case "pas":\n if (config.options["chk"+name]) {\n c += escape(config.options[name].toString());\n } else {\n c += "";\n }\n break;\n }\n c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";\n document.cookie = c;\n};\n//}}}\n/***\n!! Initializations\n***/\n//{{{\n// define config.options.pasPassword\nif (!config.options.pasPassword) {\n config.options.pasPassword = 'defaultPassword';\n window.saveOptionCookie('pasPassword');\n}\n// since loadCookies is first called befor password definition\n// we need to reload cookies\nwindow.loadOptionsCookie();\n//}}}\n////===\n\n////+++!![config.macros.upload]\n\n//{{{\nconfig.macros.upload = {\n accessKey: "U",\n formName: "UploadPlugin",\n contentType: "text/html;charset=UTF-8",\n defaultStoreScript: "store.php"\n};\n\n// only this two configs need to be translated\nconfig.macros.upload.messages = {\n aboutToUpload: "About to upload TiddlyWiki to %0",\n backupFileStored: "Previous file backuped in %0",\n crossDomain: "Certainly a cross-domain isue: access to an other site isn't allowed",\n errorDownloading: "Error downloading",\n errorUploadingContent: "Error uploading content",\n fileLocked: "Files is locked: You are not allowed to Upload",\n fileNotFound: "file to upload not found",\n fileNotUploaded: "File %0 NOT uploaded",\n mainFileUploaded: "Main TiddlyWiki file uploaded to %0",\n passwordEmpty: "Unable to upload, your password is empty",\n urlParamMissing: "url param missing",\n rssFileNotUploaded: "RssFile %0 NOT uploaded",\n rssFileUploaded: "Rss File uploaded to %0"\n};\n\nconfig.macros.upload.label = {\n promptOption: "Save and Upload this TiddlyWiki with UploadOptions",\n promptParamMacro: "Save and Upload this TiddlyWiki in %0",\n saveLabel: "save to web", \n saveToDisk: "save to disk",\n uploadLabel: "upload" \n};\n\nconfig.macros.upload.handler = function(place,macroName,params){\n // parameters initialization\n var storeUrl = params[0];\n var toFilename = params[1];\n var backupDir = params[2];\n var uploadDir = params[3];\n var username = params[4];\n var password; // for security reason no password as macro parameter\n var label;\n if (document.location.toString().substr(0,4) == "http")\n label = this.label.saveLabel;\n else\n label = this.label.uploadLabel;\n var prompt;\n if (storeUrl) {\n prompt = this.label.promptParamMacro.toString().format([this.toDirUrl(storeUrl, uploadDir, username)]);\n }\n else {\n prompt = this.label.promptOption;\n }\n createTiddlyButton(place, label, prompt, \n function () {\n config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password); \n return false;}, \n null, null, this.accessKey);\n};\nconfig.macros.upload.UploadLog = function() {\n return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );\n};\nconfig.macros.upload.UploadLog.prototype = config.lib.Log.prototype;\nconfig.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {\n var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";\n line += uploadDir + " | " + toFilename + " | " + backupDir + " |";\n this.newLine(line);\n};\nconfig.macros.upload.UploadLog.prototype.endUpload = function() {\n this.addToLine(" Ok |");\n};\nconfig.macros.upload.basename = config.lib.file.basename;\nconfig.macros.upload.dirname = config.lib.file.dirname;\nconfig.macros.upload.toRootUrl = function (storeUrl, username)\n{\n return root = (this.dirname(storeUrl)?this.dirname(storeUrl):this.dirname(document.location.toString()));\n}\nconfig.macros.upload.toDirUrl = function (storeUrl, uploadDir, username)\n{\n var root = this.toRootUrl(storeUrl, username);\n if (uploadDir && uploadDir != '.')\n root = root + '/' + uploadDir;\n return root;\n}\nconfig.macros.upload.toFileUrl = function (storeUrl, toFilename, uploadDir, username)\n{\n return this.toDirUrl(storeUrl, uploadDir, username) + '/' + toFilename;\n}\nconfig.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)\n{\n // parameters initialization\n storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);\n toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);\n backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);\n uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);\n username = (username ? username : config.options.txtUploadUserName);\n password = config.options.pasUploadPassword; // for security reason no password as macro parameter\n if (!password || password === '') {\n alert(config.macros.upload.messages.passwordEmpty);\n return;\n }\n if (storeUrl === '') {\n storeUrl = config.macros.upload.defaultStoreScript;\n }\n if (config.lib.file.dirname(storeUrl) === '') {\n storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;\n }\n if (toFilename === '') {\n toFilename = config.lib.file.basename(document.location.toString());\n }\n\n clearMessage();\n // only for forcing the message to display\n if (version.major < 2)\n store.notifyAll();\n if (!storeUrl) {\n alert(config.macros.upload.messages.urlParamMissing);\n return;\n }\n // Check that file is not locked\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n if (BidiX.GroupAuthoring.lock.isLocked() && !BidiX.GroupAuthoring.lock.isMyLock()) {\n alert(config.macros.upload.messages.fileLocked);\n return;\n }\n }\n \n var log = new this.UploadLog();\n log.startUpload(storeUrl, toFilename, uploadDir, backupDir);\n if (document.location.toString().substr(0,5) == "file:") {\n saveChanges();\n }\n var toDir = config.macros.upload.toDirUrl(storeUrl, toFilename, uploadDir, username);\n displayMessage(config.macros.upload.messages.aboutToUpload.format([toDir]), toDir);\n this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);\n if(config.options.chkGenerateAnRssFeed) {\n //var rssContent = convertUnicodeToUTF8(generateRss());\n var rssContent = generateRss();\n var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";\n this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password, \n function (responseText) {\n if (responseText.substring(0,1) != '0') {\n displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));\n }\n else {\n var toFileUrl = config.macros.upload.toFileUrl(storeUrl, rssPath, uploadDir, username);\n displayMessage(config.macros.upload.messages.rssFileUploaded.format(\n [toFileUrl]), toFileUrl);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n });\n }\n return;\n};\n\nconfig.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var original;\n if (document.location.toString().substr(0,4) == "http") {\n original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);\n return;\n }\n else {\n // standard way : Local file\n \n original = loadFile(getLocalPath(document.location.toString()));\n if(window.Components) {\n // it's a mozilla browser\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]\n .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);\n converter.charset = "UTF-8";\n original = converter.ConvertToUnicode(original);\n }\n catch(e) {\n }\n }\n }\n //DEBUG alert(original);\n this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password);\n};\n\nconfig.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it\n var endSaveArea = '</d' + 'iv>';\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n {\n alert(config.messages.invalidFileError.format([document.location.toString()]));\n return;\n }\n var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + \n allTiddlersAsHtml() + "\sn\st\st" +\n original.substr(posClosingDiv);\n var newSiteTitle;\n if(version.major < 2){\n newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();\n } else {\n newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();\n }\n\n revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");\n revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPreHead","") + "\sn");\n revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPostHead","") + "\sn");\n revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPreBody","") + "\sn");\n revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPostBody","") + "\sn");\n\n var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir, \n username, password, function (responseText) {\n if (responseText.substring(0,1) != '0') {\n alert(responseText);\n displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));\n }\n else {\n if (uploadDir !== '') {\n toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);\n } else {\n toFilename = config.macros.upload.basename(toFilename);\n }\n var toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n if (responseText.indexOf("destfile:") > 0) {\n var destfile = responseText.substring(responseText.indexOf("destfile:")+9, \n responseText.indexOf("\sn", responseText.indexOf("destfile:")));\n toFileUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + destfile;\n }\n else {\n toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n }\n displayMessage(config.macros.upload.messages.mainFileUploaded.format(\n [toFileUrl]), toFileUrl);\n if (backupDir && responseText.indexOf("backupfile:") > 0) {\n var backupFile = responseText.substring(responseText.indexOf("backupfile:")+11, \n responseText.indexOf("\sn", responseText.indexOf("backupfile:")));\n toBackupUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + backupFile;\n displayMessage(config.macros.upload.messages.backupFileStored.format(\n [toBackupUrl]), toBackupUrl);\n }\n var log = new config.macros.upload.UploadLog();\n log.endUpload();\n store.setDirty(false);\n // erase local lock\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n BidiX.GroupAuthoring.lock.eraseLock();\n // change mtime with new mtime after upload\n var mtime = responseText.substr(responseText.indexOf("mtime:")+6);\n BidiX.GroupAuthoring.lock.mtime = mtime;\n }\n \n \n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n }\n );\n};\n\nconfig.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir, \n username, password, callbackFn) {\n var boundary = "---------------------------"+"AaB03x"; \n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n if (window.netscape){\n try {\n if (document.location.toString().substr(0,4) != "http") {\n netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}\n }\n catch (e) {}\n } \n //DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");\n // compose headers data\n var sheader = "";\n sheader += "--" + boundary + "\sr\snContent-disposition: form-data; name=\s"";\n sheader += config.macros.upload.formName +"\s"\sr\sn\sr\sn";\n sheader += "backupDir="+backupDir\n +";user=" + username \n +";password=" + password\n +";uploaddir=" + uploadDir;\n // add lock attributes to sheader\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n var l = BidiX.GroupAuthoring.lock.myLock;\n sheader += ";lockuser=" + l.user\n + ";mtime=" + l.mtime\n + ";locktime=" + l.locktime;\n }\n sheader += ";;\sr\sn"; \n sheader += "\sr\sn" + "--" + boundary + "\sr\sn";\n sheader += "Content-disposition: form-data; name=\s"userfile\s"; filename=\s""+toFilename+"\s"\sr\sn";\n sheader += "Content-Type: " + config.macros.upload.contentType + "\sr\sn";\n sheader += "Content-Length: " + content.length + "\sr\sn\sr\sn";\n // compose trailer data\n var strailer = new String();\n strailer = "\sr\sn--" + boundary + "--\sr\sn";\n //strailer = "--" + boundary + "--\sr\sn";\n var data;\n data = sheader + content + strailer;\n //request.open("POST", storeUrl, true, username, password);\n try {\n request.open("POST", storeUrl, true); \n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if (request.status == 200)\n callbackFn(request.responseText);\n else\n alert(config.macros.upload.messages.errorUploadingContent + "\snStatus: "+request.status.statusText);\n }\n };\n request.setRequestHeader("Content-Length",data.length);\n request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);\n request.send(data); \n};\n\n\nconfig.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir, \n username, password) {\n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n try {\n if (uploadUrl.substr(0,4) == "http") {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n else {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n }\n } catch (e) { }\n //request.open("GET", document.location.toString(), true, username, password);\n try {\n request.open("GET", document.location.toString(), true);\n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\n \n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if(request.status == 200) {\n config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl, \n uploadToFilename, uploadDir, uploadBackupDir, username, password);\n }\n else\n alert(config.macros.upload.messages.errorDownloading.format(\n [document.location.toString()]) + "\snStatus: "+request.status.statusText);\n }\n };\n request.send(null);\n};\n\n//}}}\n////===\n\n////+++!![Initializations]\n\n//{{{\nconfig.lib.options.init('txtUploadStoreUrl','store.php');\nconfig.lib.options.init('txtUploadFilename','');\nconfig.lib.options.init('txtUploadDir','');\nconfig.lib.options.init('txtUploadBackupDir','');\nconfig.lib.options.init('txtUploadUserName',config.options.txtUserName);\nconfig.lib.options.init('pasUploadPassword','');\nsetStylesheet(\n ".pasOptionInput {width: 11em;}\sn"+\n ".txtOptionInput.txtUploadStoreUrl {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadFilename {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadDir {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadBackupDir {width: 25em;}\sn"+\n "",\n "UploadOptionsStyles");\nif (document.location.toString().substr(0,4) == "http") {\n config.options.chkAutoSave = false; \n saveOptionCookie('chkAutoSave');\n}\nconfig.shadowTiddlers.UploadDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadDoc ]]\sn"; \n\n//}}}\n////===\n\n////+++!![Core Hijacking]\n\n//{{{\nconfig.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;\nconfig.macros.saveChanges.label = config.macros.upload.label.saveToDisk;\n\nconfig.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;\n\nconfig.macros.saveChanges.handler = function(place)\n{\n if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))\n createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);\n};\n\n//}}}\n////===\n\n
You can contact Valeria at: Vendetta-mercy at yandex dot ru .
[img[http://tbn0.google.com/images?q=tbn:-AlcULQW7TP-fM:http://www.25idl.army.mil/ArmyMuseumDerussy/my%2520webs/museum/images/Vietnam.jpg]]\n[[A short overview with many links|http://vietnam.vassar.edu/overview.html]]
[img[http://tbn0.google.com/images?q=tbn:ovXKsFwgJL4T2M:http://all-photo.ru/portret/photos/26373-0.jpg]]\nVladimir Sergeyevich Solovyov / Владимир Сергеевич Соловьёв (1853 - 1900) \n\n[[wikipedia|http://en.wikipedia.org/wiki/Vladimir_Solovyov_%28philosopher%29]]\n\n\n----\n''Maria Strus'' on Vladimir Solovyov (//May 19, 2007//): \n\nVladimir Sergeyevich Soloviev is a great Russian philosopher, poet, publicist, literary critic, who played a great role in the development of Russian philosophy and poetry at the end of XIXth century – at the beginning of 20th century.\nSoloviev influenced upon the religious philosophy of N. A. Berdyaev, S. N. Bulgakov, E. N. Trubetskoi, and S. L. Franko.\n\nVladimir Sergeyevich Soloviev was born in Moscow.\n\nHis father Sergej Mikhailovich, a famous historian, was very strict and serious man, but at the same time he was very kind. He was especially very serious with respect to his occupation and practically every year he published one volume of his book ”The History of Russia from Ancient Times”. From the mother’s side he belonged to the Ukrainian~Polish family and one of his grandfather was G. Skovoroda, a famous Ukrainian thinker.\n[img[http://img104.mytextgraphics.com/photolava/2007/05/19/3-f1w79e8s.png]] [img[http://img105.mytextgraphics.com/photolava/2007/05/19/1-46iy20wxw.png]]\nVladimir Soloviev got his education in Moscow. It was obvious that he was very talented because from early age he began to read Slavophil and the famous German idealists. But during his last years of education in gymnasium and during the first years in the University he read about materialism and even stopped to go to the church. But later he came to Christianity again. So, being rather young, he experienced a mental crisis. It was an atheistic crisis. \n\nMaybe under the influence of materialism he decided to enter the physico~mathematical department where he studied not only a Mathematic and Physics but also natural sciences. Being at the second course of the University he moved to the historic department and persistently studied philosophical subjects. During the first year after the graduation from the university he wrote the dissertation. \nThere is some information that he was in the Moscow ecclesiastical academy. Sometimes he visited lectures as a free listener. But he lived alone and didn’t communicate with others because at the same time he was written his dissertation. He also couldn’t learn same information during the lectures because professors taught the official and generally accepted studies. And Soloviev needed his own ideas and conceptions concerning religion.\nThe title of the dissertation was “The Crisis of Western Philosophy” («Кризис западной философии») he explained why the western philosophy came to the crisis at the end of 19th century. The reason was that it was taken a one sided way of cognition and the tool of cognition was only mind. At first Soloviev showed how in Middle Ages the mind became free from theology, Church, then it became independent and then it overran and the process of segregation began.\nSoloviev defended his dissertation in 1874 when he was 21 years old. This scientific work showed that the author’s knowledge were very deep and broad.\n\nIn June 1876 Vladimir Soloviev began to work in the University but he had to leave the Moscow. He moved to Petersburg. There he defended his doctoral dissertation. In 1881 his pedagogical activity was ended after his public speaking where he asked to pardon (помиловать) the murderers of Alexander II. \n[img[http://img105.mytextgraphics.com/photolava/2007/05/19/4-46iy3b1od.png]]\nAfter this event he was alone practicing asceticism. He moved from place to place, from one house to another, from one country to another. He didn’t have enough money and his friend always borrowed him. Very often he even couldn’t buy clothes. So, his life was awful, but at the same time he wrote a lot of books.\nVladimir Soloviev died in 1900.\nHe was unusual person. Many people who were acquainted with him described him as a beautiful person, but there was something mystical in his face.\nIn the childhood he saw some female being (существо), especially its face. It has space character. When this had happened he was 8 years old and he stopped to believe in materialism. First it was in the church in Moscow. At the second time he consciously tried to find it. It happened during his academic trip to Europe. When Soloviev hardly worked in the library he suddenly saw this very beautiful face again.\nHe went to Egypt. To his mind Egypt was a country of big religion and there he could see this face again. When he walked over the city he fell asleep just on the cold ground and when he awoke he could see another world for a moment. All this events he described in his poem “Three meetings” («Три свидания» who would like to read it, here it is: http://rozamira.org/lib/names/s/soloviev_vs/three_meetings.htm#ftn_poem)\nWhen he was in Egypt he was a conscious Christian and he decided to write a book. His main ides was to connected religion, philosophy and science. He proved that a man was a comprehensive whole. The faith was the ability to perceive and understand the Divine Revelation. Soloviev told that the Nature had the integrated soul. His experience with the Soul of the World led him to the thought about the animation (одухотворенность) of the space. He looked for and found the name of this beginning – its name is Sophia- the wisdom. There was written in the Bible about the Divine Wisdom. Soloviev understood the Divine Wisdom as a concentration of the world which looked for freedom. Consequently the world moved away from its harmonic state. Naturally he began to think about the problem of the unity of Christians. Soloviev reflected under this question and he thought about the overcoming of it. First he asked a question: What is Christian faith? Then he decided that if Russia Tsar and Pope will find common language, the Christianity will be insuperable (неодолимо).He tried it to get off the ground, but he had no supporters.\n\nHe wrote that the world was going to brake down, it was going to fall into pieces and he tried to find some primary source which could join and combine the whole world. When he saw that his project fall down he decided to write a book about the Christian ethics.\nIn the social life Soloviev was a democrat and a fighter for justice.\nAlthough he was alone he liked a good company, liked jokes. He also wrote parodies and satirical poems.\n He attempted to synthesize religion, scientific knowledge, and mystical experience in a system based on the idea of “Godmanhood”\nVladimir Soloviev was a great Russian philosopher. He was an expositor of Bible. All his life he felt that he should be a teacher, a prophet, an orator. He didn’t want to be a professor– it was too boring for him. He also was an interpreter and translator of Plato and different biblical texts. He was an author of books which could be as an introduction to the Christian life. It is a pity that his life wasn’t as great as his thoughts.\n[img[http://img106.mytextgraphics.com/photolava/2007/05/19/2-46ixzbv6f.png]]
[img[http://tbn0.google.com/images?q=tbn:1O27MKzkaSSpHM:http://www.dhm.de/lemo/objekte/pict/ba103392/index.jpg]]\nA good entrance into the whole discussion about the //Weimar Republic// gives [[wikipedia|http://en.wikipedia.org/wiki/Weimar_Republic]].
\n\n[img[http://tbn0.google.com/images?q=tbn:rK9VLxcs7BABvM:http://www.montereybay.com/creagrus/FurSea_N-MMeyers-9Fb03.jpg]]\n\n@@[[Ben]] Zina starts to collect material for her research paper. Please help her with good ideas and hints to electronical or print sources. Her own web site has the following address: ''http://zinakirko.googlepages.com''. Thank you!\n__We have two commitments:__\n*[[Zina Kirko - The Experience and Reflection of Biblical Conversion]]\n*[[Valeria Biryukova - Christian Thinking and Writing during World War II]].\nThe list is open and we still wait for more researchers..@@\n\n@@[[Ben]] You want to know about the most recent movements on this web site? Go to the right side bar and click //Timeline//. There you have it.@@\n\n@@[[Ben]] We are looking for volunteers who would be willing to research on various subjects. There are three new themes added under [[Special Projects]]. Please, consider to work on one of them.@@\n\n\n@@<html><h3>How can I publish on this website? How does it work?</h3></html>Dear Students at the HGEU!\n\nHere now the correct way how to __add, change or publish__ something new on this web site:\n\n''If you want to add or correct something on a published, existing page''\n1. Open 'options' on the right sidebar and fill in the password and your name\n2. Click twice the published page and add/change the opened source text\n3. Click the 'done' button in the right upper corner of the page\n4. Click 'save to web' button on the right sidebar\n\n''If you want to publish your own new page''\n1. Click 'new tiddler' on the upper part of the right sidebar\n2. Click twice the new page and write into the source text\n3. Click the 'done' button in the right upper corner of the tiddler\n4. Click 'save to web' on the right sidebar\n
[img[http://tbn0.google.com/images?q=tbn:QaucyH3TDTGugM:http://www.clie.es/modules/shop/shop_image/author/e8e9940e43125e4bddbdddea7c550130.jpg]]\n1928 --\n[[God’s Presence in History|http://www.religion-online.org/showarticle.asp?title=1710]]
__''Using //Google//''__\n*If you look for definitions...\nYou type the command "define:" and immediately add the word whose explanation you are looking for. \nHere an example: \nYou are looking for an explanation of the expression "constitution".\nYou write into the //google// search box: "define:constitution"
[img[http://tbn0.google.com/images?q=tbn:6Tl_o9Ev8JW0IM:http://www.chichester.gov.uk/museum/images/2%2520-%2520World%2520War%25201%2520-%2520Walter%2520Dew%2520Snr%2520-%2520Royal%2520West%2520Sussex%2520Regiment%25201915-l.jpg]]\nA first impressive overview gives [[wikipedia|http://en.wikipedia.org/wiki/World_War_I]].
You can email Zina: zinakirko at mail dot ru or simply click <html><a href='mailto:zinakirko@mail.ru'>here</a></html> !
Zina:\n1) Same value for everyone - Matthew 5:45 \n2) Non-violence - Matthew 5:39-41 / 5:44-47\n3) Truth as honesty - Matthew 5:8 / 5:37 / 6:4 \n truth as justice - Matthew - 5:6 /6: 33 / 7:1-2 /7:12\n4) Peace - 5:9 / 5:24-25 /5:44 \n5) Freedom - 5:3 / 6:25
Materials in which i search for information:\n\n1) Literary Converts, Joseph Pearce: have not found yet\n\n2) Regeneration and conversion,W. E. Best:\nhttp://www.webbmt.org/EngHTML2/regeneration_and_conversion1.htm#INTRODUCTION%20TO%20PART%20II\n\n3) Several articles from Quodlibet online Journal of Christian theology and pfilosophy: http://www.quodlibet.net/archive/\n\n4) Words to Winners of Souls, Horatius Bonar: \nhttp://bpc.org/resources/articles/bonar/winners.html\n\n5) Пособие по Православной Аскетике для современного юношества, Св.Т.Алферов: http://www.wco.ru/biblio/books/timofey1/Main.htm\n\n6) Встреча с Богом живым,А.Сурожский: http://psylib.org.ua/books/_antsu02.htm#top\n\n7) The Varieties of Religious Experience,William James: \nhttp://www.religion-online.org/showbook.asp?title=1637\n\n8) "Transforming your life: the process of conversion","God's Holy Day Plan","The church Jesus built": http://www.ucg.org/litreq/\n\n9) Interesting source: http://beutel.narod.ru/write/convert.htm\n\nPeople, whose conversions i am going to research:\n-\n-\n-\n\n//Very good job done! I am really impressed.// Ben\n//Hi Zina! I have sent you a longer email. Please have a look at mail.ru!//\n____________________________________________________________________\n\n
[img[http://images-partners-tbn.google.com/images?q=tbn:mzvkSvVJDd-ExM:http://www.chapelhillrarebooks.com/catalog/images/28934.jpg]]\nOne of John Calvin's major ideas which he promoted in his theology became very influential in America in the 18th century. It was the statement that God had divided human beings in "the Elect" and "the Damned". \n\nJ. Calvin never preached Racism but this idea of two divisions allowed landowners to rationalize enslaving a race of black people. Racial bigotry took it's most cruel form in the South. Flannery O'Connor was strictly against it. Her story "The Artificial Nigger" contains her classic style anti racist irony which she used also in other stories.\n \nOld man Mr. Head decided to take his grandson Nelson to Atlanta with an intention to show him life beyond their house. Nelson was proud to think that he was born in Atlanta. Part of upbringing of Nelson who had never seen black people consisted of being carefully taught how necessary it was to fear them. But walking in the city Mr. Head and Nelson found themselves lost in a Negro quarter among increasing numbers of Negroes. But despite they lost the way Mr. Head refused to speak to any Negroes and sent Nelson to ask directions reminding him that the boy was born in this place. O'Connor's irony surfaces with Mr. Head growling "anybody wants to be from this nigger heaven can be from it." Some time later when they left Negro quarter Nelson accidentally knocked down an elderly white and she demanded a policeman be called. Mr. Head was embarrassed and denied any connection to Nelson. This action shocked the women and Nelson. Mr. Head's denial was O'Connor's comparison with St Peter's denial of Christ during the Passion. Mr. Head lost his authority in the eyes of the boy who refused even to walk alongside of him. Near the end of the day they found themselves lost again. Mr. Head asked the direction and called Nelson to go home but because of the betrayal home meant nothing for Nelson already. \nHe couldn't forgive his grandfather.\n\nBy the way they saw a plaster statue of a Negro intended to portray of happy Negro about to eat, but instead it conveyed an impression of total misery with its age and shabbiness. The boy looked at his grandfather waiting for an explanation and that had given Mr. Head the opportunity to show the child that he was still wise. "An Artificial Nigger", - he said, - They ain't got enough real ones here. They got to have an artificial one." This moment, like contemplating a crucifix, brought Mr. Head and Nelson back together. They could both felt it as an action of mercy. Looking at the statue Nelson discovered his kinship with Negroes. \n\nGrandfather's betrayal gave him understanding of how all the humanity was betrayed in the Garden of Eden. For Mr. Head the encounter with the statue was the moment of grace. He had never known before what mercy felt like because he had been too good to deserve any. The denial of Nelson caused suffering of Mr. Head. But his acceptance of suffering led to a knowledge of how it could be used for spiritual growth. He had understood how much he depended on God's mercy.\n\nAfflictions and our reactions on them are the means by which we attain spiritual maturity and secure eternal salvation. God's grace is always there for us to cooperate with but most of us reject it, preferring instead to tough it out on our own. In doing so we refuse to accept the challenge of the world, and we reject any involvement in the Divine plan.\n\nThis story shows how fear and prejudice inhibit freedom and block awareness of our duty to seek knowledge and wisdom. Liberty guaranteed only if it is tempered with the knowledge that complacency is not a virtue. The bottom line scripted by O'Connor is "we are not judged by what we are basically. We are judged by how hard we use what we have been given. Success in human terms means nothing to the Lord".\n\n@@Ben's comment:\nAnother excellent summary. This time Zina managed to summarize one of the most complex master works of Flannery O'Connor.@@
[img[http://tbn0.google.com/images?q=tbn:GUWRjUojPuf_DM:http://www.enotes.com/images/nineteenth-century/nclc_0001_0061_0_img0016.jpg]]\n\nZina: I am going to start my project today, but i think i will "work" on it in July. Now i am going to search for information and to collect it. I shall point all the steps of my work on this page and i do not mind this page to be opened to everyone.\n\n25.05.07. - i am starting the project. \nQuestion: Ben, please, define minimal and maximal possible size of this work.\n\n[[Ben]] //The research paper/essay shouldn't have more than 20 pages. That is, it should be a condensed form of much more material that you will find and work on.//\n\nQuestion: Ben, i have a task to define my audience, but i have no idea who will read my future research. Maybe you can tell me it?\n\n[[Ben]] //The audience will be instructors of our and other universities, students and all kinds of people that are interested in that subject. We want to print and publish a collection of essays, including yours.//\n\n26.05.07. - i begin to form a list of people who have unusual experience of conversion.\nQuestion: Ben, how do you think, should i publish this list on this page?\n\n[[Ben]] //The best would be to start a new page on this web site ("new tiddler") and to link it on the page we are now conversing on. As you know, the principle is very easy: the title of the new page is put into double brackets// [[ ]] //on this page. \nLet us say: You start a new page with the title: "Zina - first material / ideas".\nWhen we both converse on the page we are on now you point to your "working place" with// [[Zina - first material / ideas]] .\n\n//I am excited that you can start already. I understood you that you could only begin in July. But to start the collection of material already now is a great and very pleasant surprise! Greetings, Ben//\n\nThank you, Ben, for your help. The more i read on my topic in internet, the more i become excited with this work. Now i try to understand and to form in my mind the future general content of it.\n\nQuestion: Can i use russian materials?\n\n[[Ben]] //Of course, at any rate you should use Russian sources!!!//\n\n\nNow with the help of Ben i have a website for my project: zinakirko.googlepages.com\n\nI have already created there three pages about:\n\n- Materials in which i search for information and some idirect facts : http://zinakirko.googlepages.com/home \n\n- People with unusual Stories of Conversion:\nhttp://zinakirko.googlepages.com/people\n\n- First theses and Ideas: \nhttp://zinakirko.googlepages.com/chaosofthesesandideas \n\n \n
The book ” Surprised by Joy”, written by C.S. Lewis seven years before his death, is one of the premier Christian apologist of the 20-th century. In this book he explained why he became a Christian and narrated “directly and unabashedly” about specific details of his personal life.\nLife of S.C. Lewis interested a great number of people, that is why, despite his own detail narration about it, many authors wrote critiques of it. And a lot of “secondary sources” about his personal life appeared. It is very sad, because Lewis himself did not approve it. And all his life, as a critic, he fought against it.\nHe began with the description of peace and grace of his childhood. He described himself, his brother, the home library and his imaginary world of miracles and adventures. In his childhood he got an experience of feeling real joy, but after the death of his mother he lost it. During his life, C.S. Lewis experimented with various Eastern beliefs, Aristotelian ethics, he balanced between pantheism and theism and even was an atheist. Hard and complicated was not only his internal life, but also an external. He went through many life tests and difficulties. But despite them all he became an outstanding person. He succeed as literary critic, teacher in Oxford, author of children books and writer of Christian apologetics. But before returning to Christianity he went through a long way of fight with himself. And on this way there were people and factors which made him change his opinion. ” Surprised by Joy” is about them. In this book C.S. Lewis described his long searching for “joy” and the recovery of a child-like wonderment at the world and its mysteries after his conversion. He supposed that joy was an experience of the transcendent, which was available in earthly loves, aesthetics and later he understood that it also could be found in the Creator.\nIn this book C.S. Lewis depicted only those people, events and ideas which had direct influence on his conversion. He distinguished two persons who influenced his change a lot. First of them was William Kirkpatrick. He was atheist and that is why he could not help C.S. Lewis to believe directly, but he convinced him, that the base for the belief was in the fact that the reason alone could not bring person to the central truth. Another important person was his oxford friend Owen Barfield. He proved C.S. Lewis, that not all “out of date” things had to be discredited and that Christianity could be a way for people even in 20-th century. And there were also two popular writers who influenced Lewis’ conversion. First was George MacDonald, whose works convinced C.S. Lewis that there was another world, despite of the material. And the second was G. K. Chesterton. After reading his book “The Everlasting Man”, C.S. Lewis got a full picture of Christianity and understood its role in world’s history. With the help of these people C.S. Lewis found the joy, he sought for a so long period of time.
In the preface of his book “The Everlasting man”, C.K. Chesterton explains that it is not easy for all people to understand Christian Religion. Because of their tiredness, habits and everyday routine the majority of people nowadays can’t be surprised any more. Getting used to something, people become tired and it is practically impossible to revive truth which is familiar to them for a very long time. The fuss and press of our modern life hinder people to perceive real beauty of things. Maybe that is why to understand something people should throw away their scepticism and become like children, who are ready to believe, perceive and understand.\nIn the chapter ” The strangest story in the world” C.K. Chesterton mentions that Jesus Christ was the first who advised to be like children. In this chapter C.K. Chesterton also describes personality of Christ, his life story, his mission and the role of his life and death in the fate of all the World.\nFirst of all C.K. Chesterton explains why Jesus Christ was not just a smart person or wise philosopher, but the son of God. By his point of view only in three cases person can talk in a manner as if he was God: mad person, somebody with great megalomania or a real son of God. Jesus Christ was wise, equitable, equable and calm, that is why he could not be mad. He was kind, merciful, all his life was devoted to help to other people, for whom he finally died , that is why he had no megalomania.No one great philosopher or wiseman before Christ had never called himself God. Moreover the greater and the wiser the person, the better he knows how far he is from God. Only God is great enough to call himself God. It means that only the third variant seems to be true.\nJesus Christ was thinking not just as an ordinary person. As Chesterton told, he was thinking “on three planes at once”. His wisdom was amazingly deep and complicated. It was hidden in parables, which are still difficult to understand even today. In the Gospel must be found something much more complicated than “simple morality”. Because of his ability to think in such way Jesus Christ differed from other people and was higher than any human creature of those times and even today.\nAnd the main proof for divinity of Jesus Christ is the fact that he knew about his mission. He had an aim and all his words, deeds and conducts served this goal. He knew about his death, about betrayal, but he also knew that it would serve the achievement of his goal. On the same reason he did not vanish before the judgment-seat of Pontius Pilate. His goal and his philosophy were much higher than just a human aim or human philosophy.\nIt means that Jesus Christ was not just an ordinary person, who had very deep and wise philosophy and who successfully preached it, but he was somebody much higher than human creature, somebody who came with a mission to this world, and whose goal was to change it. In this chapter C.K. Chesterton compare Jesus Christ with new Adam, who gave the beginning of new Era. All the mythes, old religions, teachings, gods and heroes died with Christ. All the ancient world died with him. And a new history began.
N. Berdyaev's thinking is very closely connected with his religious beliefs. The fundamental idea of his philosophy is the concept of freedom. He distinguishes two major kinds of man's freedom: irrational freedom and rational freedom.\nRational freedom is submission to the moral law. People try to achieve such freedom through rights and the law but it is only formal limitations imposed on the individual. It is natural and connected with necessity, determinateness, passive endurance, immobility. And therefore, it is not the absolute freedom. Such freedom leads to slavery.\nIrrational freedom has a much more general meaning. It is rooted in the "nothing". It was not created by God and existed before his creation appeared; therefore it is prior to good and evil. Actions of a being possessing free will can't be foreseen even by God, since they are entirely free. Our will is free and God never forces it.\nBerdyaev supposed that freedom can't be established. It is already given to people from the very beginning as a duty. That is why freedom is not so much what we demand as what is demanded of us. People are "the prisoners of freedom". But man became a slave because freedom is difficult, whereas slavery is easy. Irrational freedom is in itself purely spiritual. Spirit is the subject, life, fire, creative activity. It is burdensome but inevitable duty.\nThe goal of mankind is not to establish rational freedom but to learn how to bear spiritual freedom. This idea was the reason for the fact that Berdyaev moved away from Marxism, and was opposed to communism. Complete freedom by his opinion would definitely weaken such an organization.\nFreedom is connected with personality. N. Berdyaev thought that the entire world is nothing in comparison with human personality. Personality is the self from inside which is free. Man is a personality not by nature but by spirit. By nature he is only an individual. Personality is the universe inside oneself. But personality is not part of the universe, the universe is a part of personality, it is its quality. It includes the potentiality of the universal. Being a spirit, personality is not self-sufficient, not egocentric. Being separated from God personality suffers from the disease of isolation and it creates its constant internal conflict. Only personality possesses capacity to feel suffering and joy. Nothing in the object world, nation or state or society, or social institution, or church, possesses this capacity. The image of human personality is not only a human image; it is also the image of God. In that fact lie hidden all the enigmas and mysteries of man. Man is a dual entity, living both in the world of nature and spirit and needing attainment of wholeness. A person can't completely be a citizen of the world and of the state; he is a citizen of the Kingdom of God. But God is present only in irrational freedom and acts only through freedom. Liberation from slavery can be achieved through the realization of personality and creativeness.\nBerdyaev's creativity means a way to express the freedom. God created man in his own image, and God is a creator. Therefore man's purpose is to create and he can start to create from emptiness, without "raw material", just like God created the world. He separates it into two basic parts: the creative idea and the material realization of the idea. The idea is the element of freedom in creativity and realization of the idea imposes the limitations of the material world on it. Once the idea is realized it becomes a part of the material world. Creativity means a participation in the mystery of existence. It is the transformation of self and the world. The task of man's creativity is to make the material world more like the spiritual world within us.\n\n@@Ben: Competent and good work. Did you study the Russian or the English materials for your summary?@@\n\n\nZina: I used N. Berdyav's works in Russian and English critiques on them. Berdyaev's explanations are very interesting but extremely difficult. He describes his idea, for example personality, not directly, but through a great number of details, comparisons, examples and parallels, which finally at the end of the chapter give the reader full picture of his thought. It is not easy to retell it in few words. \n\n@@Ben: I am very much impressed how you read, understand and reflect this really complex challenge. How many years do you study philosophy already?@@\n\n\nZina: Actually I’ve never "studied" philosophy. I just have read a number of books on it. Probably I began to read them when I was 11-12. \n\n\n
[[Eberhard Arnold]] was a Christian writer, philosopher and theologian, who understood that studying and understanding teaching of Christ is not enough and the soul alone can’t fulfill all of Jesus’ commandments. He understood the need of real life-experience in the community whose life is based on the teachings of Christ especially on His Sermon on the Mount. \nIn 1920 E. Arnold founded [[Bruderhof]] community who searched for life of simplicity, brotherhood and nonviolence. There were only seven members in it at the beginning. Now Bruderhof is an international Christian community with over 2500 members in it. \nLife in the community is based on faith, freedom, love-action, sacrifice and work. Faith is the center of their life, which is Spirit-driven. All they do and think is defined by the Spirit. The spirit-filled life arises from faith has been witnessed to over the centuries especially by the Jewish prophets and later by the first Christians who lived in Spirit and shared everything in common. A voluntary decision to be lead by Spirit is the freedom of the individuals. The fullness of life in the community can be found only at the cost of complete self-sacrifice. True joy can be achieved only in work. And love-action is the main basis of everything they do. \nThe Bruderhof members believe that society is a system of injustice with violence, fear and isolation in it. And they must witness the fact that God’s spirit is at work in the world today calling people to the ways of peace, love and brotherhood. The Bruderhof believe that planet Earth must be conquered in order to set up this new social order, unity and joy. To do this God calls them to community. It is the necessity and obligation.\nAll members donate their money and possessions to the community as a whole. They don’t send their children to the public educational establishments until 9th grade. Family is considered to be the primary unit of the community but it contains also single persons. \nThey live in community also because all life created by God exists in a communal order and works toward community. Life in community means life in Spirit and community is the sign of coming Kingdom of God. In the same way as each individual organism consists of millions of independent cells humankind will become one organism in future. That’s why Arnold’s significance is not limited to his relatively small communities. Some day the whole family of humankind will be one community.<html><h3>Comparison of Dietrich Bonhoeffer and Eberhard Arnold in regard to "Living Together"</h3></html>[img[http://tbn0.google.com/images?q=tbn:dBMEI187e_VX_M:http://bocs.hu/images/konyv12.jpg]]\nThe Books of E. Arnold and [[Dietrich Bonhoeffer]] have a lot of similar features, but I think explanations of E. Arnold are even deeper and more complex. Both of them were talking about real life experience of teaching of Christ, about meaning of faith, love, self-sacrifice and work. Both of them explained that life of every believer and of whole the community is defined by “coming from outside” or it is “Spirit-driven”. \nBut D. Bonhoeffer made a big accent on the fact that life “in flesh” among Christians is a privilege. Christians should not depend on it. E. Arnold, however, considered that life in community is a necessity and obligation. Maybe these different views depend on goals of both authors. D. Bonhoeffer wrote this book when he illegally instructed priests, their lives were under a big risk and he wanted to encourage them to be brave and to save true faith. And E. Arnold wrote his book earlier and had an aim to unite all the mankind.\n@@[[Ben]] Your very deep observation raises an old question: How much does the environment of a writer/philosopher influence the point of view he expresses in his works? Arnold wrote his book shortly after [[World War I]] during the [[Weimar Republic]]. The air was filled with optimism and new ideas of democratization. Bonhoeffer wrote his book after //1933//.@@<html><h3>Some personal thoughts</h3></html>[img[http://tbn0.google.com/images?q=tbn:iZ_U6Vw8b6Ft6M:http://www.evergreenpres.net/KoinoniaColor.jpg]]\nIt is interesting that people of Bruderhof really practice life of [[simplicity|http://bistu.tiddlyspot.com/#%5B%5BMt%2018%3A1-5%5D%5D]] and don’t allow their spirit to depend on such things as money and private property. But I think I would not have understood why these people share everything in common and live this way, if I wouldn't have heard a sermon of Ben about the attitude of being [[“poor in spirit”|http://www.silk.net/RelEd/beatitudespoor.htm]].\n@@[[Ben]] Thank you for connecting Jesus' "Poverty in the Spirit" (Sermon on the Mount) with Arnold's concept of [[koinonia κοινωνια]]. I also believe that Arnold had exactly Jesus' programmatic sermon in mind.@@
Maybe my opinion is not right, but here are my thoughts about life of C.S. Lewis.\nWhen C.S. Lewis was young, he was surrounded by atmosphere of love, beauty and harmony. It was folded up of his relationship with mother, brother, from books he read. I am sure that he thought, that wonderful life described in his favourite books (such as “The secret garden” of Frances Burnett )was real life, which was waiting for him outside the home of his parents. But then he clashed with grim truth of reality. He saw the death of his mother, he saw cruelness and moral falling of his friends at school. And he understood, how bad it was connected with ideal life he knew before. People were not so kind, life was not full of adventures, and nobody wanted to correct it. He understood that material world is not connected with ideal and he decided to renounce from the ideal. He always associated all the best in life first of all with religion and God, that is why the highest form of his protest was expressed in denying them. He became atheist, but it did not make his life better.\nAll his next life he was trying to find this ideal world of love, beauty and harmony, which he tasted once in childhood and simultaneously he was trying to prove that it did not exist . He sought it in mythology, in literature, but it always was only ideal world, only a dream, but not reality. His teacher William Kirkpatrick helped him to prove it by method of clear reasoning. Rationally he understood, that ideal world did not exist, but his soul knew that it existed. All his life he tried to convince his reason, that it was not illusion, but truth. And once, he had found the fact, which had broken all the arguments of his reason and then he began to believe and he again got an ideal world, full of love, beauty and harmony. I am sure, that all his life he wanted to believe, but couldn’t. As for me i don’t think that there is something really exciting in biography of C.S. Lewis. Moreover I think that it is really banal situation. It happen every day everywhere . After childhood the majority of people lose practically all their belief and then they try to find it, but practically always they can’t find it.\nSometimes they try to convince their reason, but they have no time in their everyday life to think about it, or they try and then begin to believe more and more that God is not exist, somebody don’t want to find anything at all, because he hadn’t tasted it before. C.S. Lewis was lucky to find it. Honestly, I really want to know what was this fact, which convinced his reason finally.
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteAction'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view gtd.project'></span></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div>\n<div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='toolbar' macro='toolbar changeContext projectify deleteAction closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view gtd.project link'></span></div>\n<div class='subtitle'><span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>)&nbsp;<span macro='gtdActionCompleted'></span>complete</div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div><br/>\n<div macro='newReminder'></div>\n
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteContext'></div>\n<div class='title' macro='view title'></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='toolbar' macro='toolbar newAction closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='tagging'><span class='subtitle'><span macro='gtdToggleState chkGTDActionListReviewMode'></span>Review next actions only</span></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>
Completed document conversion. Do not delete this tiddler unless you want to rebuild the action metadata.\n\nThis tiddler also contains document-specific preferences which, if deleted, will revert to default settings.
[[What is a "grant"?|http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla:en-US:official&defl=en&q=define:grant&sa=X&oi=glossary_definition&ct=title]]
<<<\nA Wiki is basically a shared, online, persistent whiteboard\n<<<\n\n[[tiddlywiki manual|http://www.tiddlywiki.com/]]\n[[tiddlywiki guides|http://tiddlywikiguides.org/index.php?title=TiddlyWiki_Guides]]\n[[tiddlywikitips|http://tiddlywikitips.com/]]\n[[TiddlyWiki for the rest of us|http://giffmex.org/twfortherestofus.html]]\n[[How to format text|http://giffmex.org/twfortherestofus.html#%5B%5BHow%20to%20Format%20Text%5D%5D]]
Excellent essay on [[wikipedia|http://en.wikipedia.org/wiki/Koinonia]].
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteProject deleteProjectAll'></div>\n<div class='title' macro='view title'></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='toolbar' macro='toolbar newProjectAction archiveProject deleteProject deleteProjectAll closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><!-- <span macro='view modifier link'></span>, --><span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>)&nbsp;<span macro='gtdToggleTag important'></span>important&nbsp;<span macro='gtdToggleTag someday'></span>defer</div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div><br/><div macro='newReminder'></div>
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div><div class='subtitle' macro='today "DDD, MMM DD, YYYY hh:0mm"'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>
[[Stanley Hauerwas]], a Mennonite Theologian told this story many years ago:\n\n The assumption seems to be that there are only two political options:\nEither conservative support of the administration, or liberal\ncondemnation of the administration followed by efforts to let the U.N.\nhandle it.\n\n "You know, you have a point," I said. "What would be a\nChristian response to this?" Then I answered, right off the top of my\nhead, "A Christian response might be that tomorrow morning the United\nMethodist Church announces that it is sending a thousand missionaries to\nLibya. We have discovered that it is a fertile field for the gospel. We\nknow how to send missionaries. Here is at least a traditional Christian\nresponse."\n\n "You can't do that," said my adversary.\n\n "Why?" I asked. "You tell me why."\n\n "Because it's illegal to travel in Libya. President\nReagan will not give you a visa to go there."\n\n "No! That's not right," I said. "I'll admit that we can't\ngo to Libya, but not because of President Reagan. We can't go there\nbecause we no longer have a church that produces people who can do\nsomething this bold. But we once did."\n\n We would like a church that again asserts that God, not\nnations, rules the world, that the boundaries of God's kingdom transcend\nthose of Caesar, and that the main political task of the church is the\nformation of people who see clearly the cost of discipleship and are\nwilling to pay the price. (Source:
<<<\nA Wiki is basically a shared, online, persistent whiteboard...\n<<<\n\nA wiki (IPA: [ˈwɪ.kiː] or [ˈwiː.kiː]) is a website that allows visitors to add, remove, edit and change content. A collaborative technology for organizing information on Web sites, the first wiki (WikiWikiWeb) was developed by Ward Cunningham in the mid-1990s. Wikis allows for linking among any number of pages. This ease of interaction and operation makes a wiki an effective tool for mass collaborative authoring. Wikipedia, an online encyclopaedia, is one of the best known wikis. Open-source wikis (such as Wikipedia) have been criticized for their reliability: certain individuals may maliciously introduce false or misleading content.[4] Proponents rely on their community of users who can catch these malicious contents and correct them. Wikis in general assume a basic assumption of the goodness of people.[4]\n(Source: http://en.wikipedia.org/wiki/Wikipedia:Community_Portal, retrieved May 5, 2007)
Eberhard Arnold was born July 26, 1883 in Koenigsberg. His father was a\ndoctor of theology and philosophy. At age 16 Eberhard experienced an\ninner change which he acknowledged as God's acceptance and forgiveness\nof his sins. After school he studied philosophy and theology in\nBreslau, Halle, Erlangen. He married Emmy von Hollander in 1909.\n\nEberhard was troubled by the church's connection to the state, which I\nthink, is interesting in his life view. __Interesting, because faith in\nGod gives you freedom, and church's connection with state is a thing\nthat can drive things against God and true faith.__\n\nEberhard started a Christian community in Sannerz in central Germany to\nteach people about things that the Holy Spirit revealed to him. The\ncommunity experienced both growth and trouble. In 1926 he established\nthe Rhoen Bruderhof in the Fulda district.\n\n[img[http://tbn0.google.com/images?q=tbn:hf4b1hSlvas0JM:http://www.tparents.org/Library/Unification/Publications/Community/hutterites_cover.jpg]]\nThe vision of Arnold's communities continues today in USA, England,\nGermany, Austria. His son and grandson followed his footsteps.\n\nI think that Arnold's community Bruderhof is the important thing he\nmade, because people, in such a community can come closer to God as he\nis, __without the influence of state and government__.\n\n@@[[Ben]] Thank you, little wolf, for pointing to the connection of state and church. You are very right: One of the essential principles of the Bruderhof and other Christian communities with that spirit has always been to be independant from any power system, f.i. the government. Very good thought!@@\n