アジェンダコピーしておくこと\n\n\n\n\n
過去の事例を参考に添付する\n\n\n\n\n
/***\nAutoCloseMessagePlugin\n***/\n//{{{\nconfig.autoCloseMessage = {\n timeout: 2000\n};\n\njavascript:(\n function() {\n var orig_displayMessage = displayMessage;\n displayMessage = hook_displayMessage;\n\n function hook_displayMessage(text,linkText) {\n orig_displayMessage(text,linkText);\n setTimeout("clearMessage()", config.autoCloseMessage.timeout);\n }\n }\n)();\n//}}}
はじめに今自分の「注意を引くこと」''すべて''をリストアップします。仕事の予定、生活の用事、将来の目標等、ありとあらゆることを入力してください。初回はこの作業に数時間かかるかもしれません。その後は「注意を引くこと」が発生したり思い出したりしたら追加します。\n\nここで記入する「注意を引くこと」とは、必ずしも具体的な予定である必要はありません。具体的な行動の決定、スケジューリング、不要項目の削除等は後のプロセスで行うので、ここでは興味の対象や懸案事項を思いつくまま書いてください。\n\n!操作手順\n「注意を引くこと」が思いついたら「新着リスト」メニューの<<gtdNewTiddler ToDo>>をクリックしてください。1件の「注意を引くこと」に対して1個の記事を作成します。\n項目名と、内容説明(空欄でも可)が書けたら「決定」をクリックして確定してください。\n新規に作成された記事には、「todo」タグと「INBOX」タグが自動的に設定されます。todoタグはGTDのプロセスで追跡する対象であることを示します。INBOXタグは現在のステータスが未処理であることを表し、このタグがついた記事は[[INBOX]]を開くと一覧表示されます。\n\n「注意を引くこと」が大量にある場合は、[[ToDoの一括生成機能|Tips:ToDoの一括生成]]を使用すると楽に入力できます。\n\n\n^^次:[[Processing - 処理]]^^
GTDStyleWiki
毎日、スケジュール([[TicklerFile]]もしくは[[カレンダー]])を参照して、当日分の項目を実行します。\n\nまた、「次の行動リスト」も随時チェックして、今が適切なときであれば実行します。\n適切なときかどうかは以下の観点から判断します。\n*状況(道具は手元にそろっているか? 実行する場所にいるか?)\n*使える時間(実行するだけの十分な時間はあるか?)\n*使えるエネルギー(実行するだけのモチベーションがあるか?)\n*重要度(今できる残項目の中でもっとも重要か?)\n\n^^前:[[Reviewing - レビュー]]
\nGTDStyleWikiはTiddlyWikiをGTD用に拡張したソフトウェアです。\n\n!特長\n*TiddlyWikiのプラグインとしてGTD用~ToDo管理機能を実装\n*カテゴリーをカスタマイズ可能な[[次の行動リスト|次の行動リスト一覧]]\n*[[カレンダー]]、TicklerFileの2種類のスケジュール管理ビュー\n*[[ステータスタグ|機能説明:ステータスタグ]]による柔軟なステータス管理\n*ポップアップメニューによる選択式ステータス設定\n*日本語完全対応\n*IE、Firefox、Opera対応(~WindowsXP上で動作確認済)\n!ダウンロード\n 以下のファイルをダウンロードして解凍。\n [[gtdstyle.zip|http://www.geocities.jp/wikistyle/gtd/gtdstyle.zip]]\n\n ダウンロード後の設定については[[環境の準備]]を参照してください。\n\n!操作方法\n [[マニュアル|マニュアル目次]]を参照してください。\n\n!作成の動機\nGTDの原典「仕事を成し遂げる技術」を読んだときに、この~ToDo管理システムはソフトウェアのツールを使ってやるべきだと感じましたが、ネット上をいろいろ探してみても満足のいくツールが見つからず、結局自分で作ることにしました。また、GTDの本を読んでもワークフロー的に細かいところが分かりづらく、プログラミングすることでロジックを明確にしたかったという意図もあります。\n\n自分がツールに求める要件としては次のようなものです。\n#サーバに情報を置かないこと\n#GTDのステータス(Inbox、Pending、~NextAction、Calendar、Waiting、Done等)が表現できること\n#状況別リストと日時別リストの両方を管理できること\n#プロジェクトを管理できること\n#リストからリストへの転記が少ないこと\n#メニュー、リスト名、項目名に日本語が使用できること\n上記1.は、近年職場の情報セキュリティ管理が厳しくなってきて、外部サーバへアクセスしづらくなったのと、個人情報をサーバに置くことの抵抗感からです。そのためローカルWikiであるTiddlyWikiベースのツールを使用するのがよさそうに思いましたが、~GtdTiddlyWikiを調べてみるとリストからリストへの転記が多く、操作性にいまいち馴染めませんでした。そこでTiddlyWikiをベースに以下の方針で自作することにしました。\n*1ToDoにつき1Tiddlerとする\n*タグを条件にしてリストに振り分けることで転記を不要とする\n*タグ入力をメニュー選択式にして操作性を向上させる\n*TicklerFileは面白そうなので実装したい\n*GTDシステムとしての整合性を考慮し、カレンダーやチェックボックスは既存マクロを使用しない\n\n!履歴\n [[技術資料:履歴]]\n
\n\n\n\n\n
/***\n\n!!Version\n1.1\n\n!!Description\nカレンダーを表示する.\n\n!!Usage\n{{{<<gtdCalendar offset open size>>}}}\n\n|!offset|表示月のオフセット-1:先月、0:今月、1:来月 ...|\n|!open|"open"を指定すると当日分のスケジュールが開いた状態で表示される|\n|!size|フォントサイズ|\n\n!!Configuration\n開始曜日(0:Sun, 1:Mon, 2:Tue ...) <<option txtGtdCalendarStartDay>>\n\n***/\n\n//{{{\nif (config.options.txtGtdCalendarStartDay == undefined)\n config.options.txtGtdCalendarStartDay = 0;\n\nconfig.macros.gtdCalendar = {\n scheduledDate: null,\n holidays: null\n};\n\nconfig.macros.gtdCalendar.handler = function(place,macroName,params)\n{\n var m = config.macros.gtdCalendar;\n\n refreshStyles("gtdStyleSheet");\n\n var wrapper = createTiddlyElement(place,"div",null,"calendar",null);\n\n if (!m.holidays)\n m.holidays = m.getHolidays();\n\n wrapper.name = "gtdCalendar";\n wrapper.setAttribute("monthOffset", "0");\n wrapper.setAttribute("yearOffset", "0");\n\n if (params[0]) wrapper.setAttribute("monthOffset", params[0]);\n if (params[2]) wrapper.style.fontSize = params[2];\n\n m.show(wrapper);\n if (params[1] == "open") {\n var now = new Date();\n m.openContent(wrapper, now.formatString("YYYY0MM0DD"));\n }\n}\n\n// document.getElementsByName()では動的に作られたノードが\n// 取得できないバグ(IE、Opera)対策\nconfig.macros.gtdCalendar.getElementsByName = function(place, tag, name)\n{\n var list = new Array();\n var tmplist = place.getElementsByTagName(tag);\n for (var i=0; i<tmplist.length; i++)\n if (tmplist[i].name == name)\n list.push(tmplist[i]);\n return list;\n}\n\nconfig.macros.gtdCalendar.refresh = function(hint) {\n\n var m = config.macros.gtdCalendar;\n var cnt = 0;\n var cal = m.getElementsByName(document, "div", "gtdCalendar");\n for (var i = 0; i < cal.length; i++) {\n var links = cal[i].getElementsByTagName("a");\n for (var j = 0; j < hint.length; j++) {\n for (var k = 0; k < links.length; k++) {\n var param = links[k].getAttribute("param");\n if (param == hint[j]) {\n var td = links[k].parentNode;\n if (m.scheduledDate[hint[j]] == undefined\n || m.scheduledDate[hint[j]] == 0)\n td.className = td.className.replace(/calendarExist/, "calendarEmpty");\n else\n td.className = td.className.replace(/calendarEmpty/, "calendarExist");\n break;\n }\n }\n }\n\n var content = cal[i].lastChild;\n if (content.className=="calendarContents") {\n var datestr = content.getAttribute("date");\n var now = new Date();\n if (datestr == now.formatString("YYYY0MM0DD")) {\n m.closeContent(cal[i]);\n m.openContent(cal[i], datestr);\n } else {\n for (var j = 0; j < hint.length; j++) {\n if (datestr == hint[j]) {\n m.closeContent(cal[i]);\n m.openContent(cal[i], datestr);\n break;\n }\n }\n }\n }\n }\n}\n\nconfig.macros.gtdCalendar.show = function(place) {\n\n var m = config.macros.gtdCalendar;\n if (!m.scheduledDate)\n m.scheduledDate = m.getScheduledDate();\n\n var theDay = new Date();\n theDay.setDate(1);\n theDay.setFullYear(theDay.getFullYear() + Number(place.getAttribute("yearOffset")));\n theDay.setMonth(theDay.getMonth() + Number(place.getAttribute("monthOffset")));\n\n removeChildren(place);\n\n var tbl = createTiddlyElement(place, 'table');\n var tbody = createTiddlyElement(tbl, 'tbody');\n\n var tr = createTiddlyElement(tbody, 'tr');\n\n // ヘッダ表示\n var cssClass = 'calendarHeader';\n var e;\n var td;\n td = createTiddlyElement(tr, 'td', null, cssClass);\n e = createTiddlyButton(td, "<<", "last year", this.onClick);\n e.setAttribute("param", "LastYear");\n td = createTiddlyElement(tr, 'td', null, cssClass);\n e = createTiddlyButton(td, "<", "last month", this.onClick);\n e.setAttribute("param", "LastMonth");\n\n var thisMonth = theDay.formatString(m.headerFormat);\n var theClass;\n if (m.scheduledDate[theDay.formatString("YYYY0MM00")])\n theClass = cssClass + ' calendarExist';\n else\n theClass = cssClass + ' calendarEmpty';\n theClass = theClass + ' calendarClose';\n td = createTiddlyElement(tr, 'td', null, theClass);\n td.setAttribute("colSpan", 3);\n e = createTiddlyButton(td, thisMonth, thisMonth, this.onClick);\n e.setAttribute("param", theDay.formatString("YYYY0MM00"));\n\n td = createTiddlyElement(tr, 'td', null, cssClass);\n e = createTiddlyButton(td, ">", "next month", this.onClick);\n e.setAttribute("param", "NextMonth");\n td = createTiddlyElement(tr, 'td', null, cssClass);\n e = createTiddlyButton(td, ">>", "next year", this.onClick);\n e.setAttribute("param", "NextYear");\n\n\n // 曜日表示\n tr = createTiddlyElement(tbody, 'tr');\n for (var pos = 0; pos < 7; pos++) {\n var e = createTiddlyElement(tr, 'td', null, 'calendarDays', m.days[m.pos2day(pos)]);\n }\n tr = createTiddlyElement(tbody, 'tr');\n\n // 1日~末日表示\n var now = (new Date()).formatString("YYYY0MM0DD");\n theDay.setDate(1 - m.day2pos(theDay.getDay())); // 1日の週の開始曜日に設定\n var nextDay = new Date(theDay);\n var monthCnt = 0;\n if (theDay.getDate() == 1) // 1日が日曜日の場合足かけ2ヶ月分(それ以外はあしかけ3ヶ月分)\n monthCnt = 1;\n var youbi = m.pos2day(0);\n for (;;) {\n var datestr = theDay.formatString("YYYY0MM0DD");\n var mmdd = datestr.substr(4);\n var cssClass = 'calendarClose';\n if (youbi == 0 || youbi == 6 || m.holidays[datestr] || m.holidays[mmdd])\n cssClass = cssClass + ' calendarHoliday';\n else\n cssClass = cssClass + ' calendarWeekday';\n if (monthCnt == 1)\n cssClass = cssClass + ' calendarThisMonth';\n else\n cssClass = cssClass + ' calendarOtherMonth';\n if (datestr == now)\n cssClass = cssClass + ' calendarToday';\n if (m.scheduledDate[datestr])\n cssClass = cssClass + ' calendarExist';\n else\n cssClass = cssClass + ' calendarEmpty';\n var td = createTiddlyElement(tr, 'td', null, cssClass);\n var tooltip = theDay.getDate();\n if (m.holidays[datestr] && m.holidays[datestr] != true)\n tooltip = tooltip + ' ' + m.holidays[datestr];\n else if (m.holidays[mmdd] && m.holidays[mmdd] != true)\n tooltip = tooltip + ' ' + m.holidays[mmdd];\n var e = createTiddlyButton(td, theDay.getDate(), tooltip, this.onClick);\n e.setAttribute("param", datestr);\n\n nextDay.setDate(theDay.getDate() + 1)\n youbi = nextDay.getDay();\n if (theDay.getMonth() != nextDay.getMonth())\n monthCnt++;\n if (monthCnt == 1 && m.day2pos(youbi) == 0)\n tr = createTiddlyElement(tbody, 'tr');\n if (monthCnt >= 2 && m.day2pos(youbi) == 0)\n break;\n theDay.setTime(nextDay.getTime());\n }\n}\n\nconfig.macros.gtdCalendar.onClick = function(e)\n{\n var m = config.macros.gtdCalendar;\n\n var calendar;\n for (calendar = this.parentNode;\n calendar.className != 'calendar';\n calendar = calendar.parentNode)\n if (! calendar)\n return false;\n\n var param = this.getAttribute("param");\n if (param.match(/^[0-9]{8}$/)) {\n m.openContent(calendar, param);\n\n } else if (param == "LastMonth") {\n var month = Number(calendar.getAttribute("monthOffset"))\n month -= 1;\n calendar.setAttribute("monthOffset", String(month));\n m.show(calendar);\n } else if (param == "NextMonth") {\n var month = Number(calendar.getAttribute("monthOffset"))\n month += 1;\n calendar.setAttribute("monthOffset", String(month));\n m.show(calendar);\n } else if (param == "LastYear") {\n var year = Number(calendar.getAttribute("yearOffset"))\n year -= 1;\n calendar.setAttribute("yearOffset", String(year));\n m.show(calendar);\n } else if (param == "NextYear") {\n var year = Number(calendar.getAttribute("yearOffset"))\n year += 1;\n calendar.setAttribute("yearOffset", String(year));\n m.show(calendar);\n }\n\n return false;\n}\n\n\nconfig.macros.gtdCalendar.openContent = function(wrapper, datestr)\n{\n var old = config.macros.gtdCalendar.closeContent(wrapper);\n if (datestr == old)\n return;\n\n var dates = wrapper.getElementsByTagName("td");\n for (var i = 0; i<dates.length; i++) {\n if (!dates[i].firstChild.tagName)\n continue;\n var p = dates[i].firstChild.getAttribute("param");\n if (p && p == datestr) {\n dates[i].className = dates[i].className.replace(/calendarClose/, "calendarOpen");\n break;\n }\n }\n\n var calendarContent = createTiddlyElement(null,"div",null,"calendarContents",null);\n wrapper.insertBefore(calendarContent, null);\n var text = config.macros.gtdCalendar.getDateItem(datestr);\n calendarContent.setAttribute("date", datestr);\n wikify(text,calendarContent,null,null);\n}\n\nconfig.macros.gtdCalendar.closeContent = function(wrapper)\n{\n var datestr = null;\n\n var content = wrapper.lastChild;\n if (content.className=="calendarContents") {\n datestr = content.getAttribute("date");\n wrapper.removeChild(wrapper.lastChild);\n\n var dates = wrapper.getElementsByTagName("td");\n for (var i = 0; i<dates.length; i++) {\n if (!dates[i].firstChild.tagName)\n continue;\n var p = dates[i].firstChild.getAttribute("param");\n if (p && p == datestr) {\n dates[i].className = dates[i].className.replace(/calendarOpen/, "calendarClose");\n break;\n }\n }\n }\n\n return datestr;\n}\n\n\nconfig.macros.gtdCalendar.getScheduledDate = function()\n{\n var list = new Array();\n store.forEachTiddler(function(title,tiddler) {\n if (tiddler.tags.find("todo") != null) {\n for(var t=0; t<tiddler.tags.length; t++) {\n var yyyymmdd = tiddler.tags[t];\n if(yyyymmdd.match(/^[0-9]{8}$/)) {\n if (list[yyyymmdd] == undefined)\n list[yyyymmdd] = 0;\n list[yyyymmdd]++;\n var yyyymm00 = yyyymmdd.substr(0,6) + "00";\n if (list[yyyymm00] == undefined)\n list[yyyymm00] = 0;\n list[yyyymm00]++;\n break;\n }\n }\n }\n });\n return list;\n}\n\nconfig.macros.gtdCalendar.getDateItem = function(datestr, min) {\n\n var m = config.macros.gtdCalendar;\n\n var regex;\n var list = [];\n var overList = [];\n\n var now = new Date();\n var nowstr = now.formatString("YYYY0MM0DD");\n var nownum = Number(nowstr);\n if (datestr == nowstr) {\n regex = '^[0-9]{8}$';\n store.forEachTiddler(function(title,tiddler) {\n if (tiddler.tags.find("todo") == null)\n return;\n for(var t=0; t<tiddler.tags.length; t++)\n if(tiddler.tags[t].match(regex)) {\n var tiddlerDate = tiddler.tags[t];\n if (Number(tiddlerDate) > nownum)\n return;\n var text = tiddlerDate + ' [[' + tiddler.title + ']]';\n if (tiddlerDate == nowstr)\n list.push(text);\n else\n overList.push(text);\n break;\n }\n });\n } else {\n var day = datestr.substr(6);\n if (day == '00')\n regex = '^' + datestr.substr(0,6) + '[0-9]{2}$';\n else\n regex = '^' + datestr + '$';\n store.forEachTiddler(function(title,tiddler) {\n if (tiddler.tags.find("todo") == null)\n return;\n for(var t=0; t<tiddler.tags.length; t++)\n if(tiddler.tags[t].match(regex)) {\n var tiddlerDate = tiddler.tags[t];\n var text = tiddlerDate + ' [[' + tiddler.title + ']]';\n list.push(text);\n break;\n }\n });\n }\n\n list.sort();\n var content = "";\n if (datestr.substr(6) != '00')\n content = '<<gtdNewTiddler todo ' + datestr + '>><<br>><<br>>';\n for (var i = 0; i < list.length; i++) {\n var tiddlerDate = list[i].substr(0,8);\n var dt = newDateYYYYMMDD(tiddlerDate);\n if (Number(tiddlerDate) < nownum)\n content = content + '@@color:red;' + dt.formatString(m.listDateFormat) + '@@ ';\n else if (tiddlerDate == nowstr)\n content = content + "''" + dt.formatString(m.listDateFormat) + "'' ";\n else\n content = content + dt.formatString(m.listDateFormat) + ' ';\n content = content + list[i].substr(8);\n if (i + 1 < list.length)\n content = content + "<<br>>";\n }\n\n if (overList.length > 0) {\n content = content + "\sn----\sn";\n overList.sort();\n for (var i = 0; i < overList.length; i++) {\n var dt = newDateYYYYMMDD(overList[i].substr(0,8));\n content = content + '@@color:red;' + dt.formatString(m.listMonthDateFormat) + '@@ '\n + overList[i].substr(8);\n if (i + 1 < overList.length)\n content = content + "<<br>>";\n }\n }\n\n var cnt = list.length + overList.length;\n if (cnt > 0)\n cnt--;\n if (datestr.substr(6) != '00')\n cnt += 2;\n for (var t = 0; t < min - cnt; t++)\n content = content + '<<br>>';\n return content;\n}\n\n\nconfig.macros.gtdCalendar.getHolidays = function()\n{\n var list = new Array();\n var text = store.getTiddlerText("Holiday");\n if (text) {\n var lines = text.split("\sn");\n for (i = 0; i<lines.length; i++) {\n if (lines[i].match(/^([0-9]+)\ss+(\sS+)/))\n list[RegExp.$1] = RegExp.$2;\n else if (lines[i].match(/^([0-9]+)/))\n list[RegExp.$1] = true;\n }\n }\n\n return list;\n}\n\nconfig.macros.gtdCalendar.day2pos = function(day)\n{\n var start = Number(config.options.txtGtdCalendarStartDay);\n var pos = day - start;\n if (pos < 0)\n pos += 7;\n return pos;\n}\n\nconfig.macros.gtdCalendar.pos2day = function(pos)\n{\n var start = Number(config.options.txtGtdCalendarStartDay);\n var day = start + pos;\n if (day > 6)\n day -= 7;\n return day;\n}\n\n//}}}\n
/***\nknown bug:\n <<chk>>や%% を、/%や{{{で無効化するとバグる\n そのTiddler内のチェックステータスがおかしくなる\n***/\n\n//{{{\nconfig.macros.chk = {};\nconfig.macros.chk.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n this.createCheckbox(place,\n (params[0]=="checked" ? true : false),\n "macro", tiddler);\n\n}\n\nconfig.macros.chk.createCheckbox = function(place, checked, type, tiddler)\n{\n var num = 0;\n var nodes = place.getElementsByTagName('input');\n for(var t=0; t<nodes.length; t++) {\n var className = nodes[t].getAttribute("class");\n if(className == "chk")\n num = parseInt(nodes[t].getAttribute("number")) + 1;\n }\n\n var title = "";\n if (tiddler instanceof Tiddler)\n title = tiddler.title;\n\n var c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.setAttribute("class","chk");\n c.setAttribute("tiddler", title);\n c.setAttribute("number",num);\n c.setAttribute("mtype",type);\n c.onclick = config.macros.chk.onClick;\n place.appendChild(c);\n c.checked = checked;\n}\n\n\nconfig.macros.chk.onClick = function(e)\n{\n var title = this.getAttribute("tiddler");\n if (title == "") {\n this.checked = true;\n return false;\n }\n\n var tiddler = store.getTiddler(title);\n var tags = tiddler.tags;\n\n var num = parseInt(this.getAttribute("number"), 10);\n var type = this.getAttribute("mtype");\n\n var macrotag;\n if (type == "formatter") {\n if (this.checked)\n macrotag = "%$";\n else\n macrotag = "%%";\n } else {\n if (this.checked)\n macrotag = "<<chk checked>>";\n else\n macrotag = "<<chk>>";\n }\n\n var regex = new RegExp("(<<chk( +checked)? *>>|%[%$])", "mg");\n var match;\n for (var i = 0; i <= num; i++)\n match = regex.exec(tiddler.text);\n var text = tiddler.text.substr(0, match.index) + macrotag + tiddler.text.substr(match.index + match[1].length);\n\n tiddler.set(null, text);\n story.refreshTiddler(title,DEFAULT_VIEW_TEMPLATE,true);\n store.setDirty(true);\n return false;\n}\n\nconfig.formatters.push(\n{\n name: "checklist",\n match: "%[%$]",\n terminator: "\s\sn",\n handler: function(w)\n {\n config.macros.chk.createCheckbox(\n w.output,\n (w.matchText=="%$" ? true : false),\n "formatter", w.tiddler);\n }\n});\n\n//}}}\n\n
/***\n\n gtdDeleteItems tag limit exec\n\n例:\n &#60;&#60;gtdDeleteItems ごみ箱 14&#62;&#62;\n &#60;&#60;gtdDeleteItems ごみ箱 all&#62;&#62;\n &#60;&#60;gtdDeleteItems ごみ箱 14 true&#62;&#62;\n &#60;&#60;gtdDeleteItems ごみ箱 all true&#62;&#62;\n***/\n\n//{{{\nconfig.macros.gtdDeleteItems = {};\n\nconfig.macros.gtdDeleteItems.handler = function(place,macroName,params)\n{\n var wrapper = createTiddlyElement(place, "span");\n\n var text;\n if (params[2]) {\n var limit;\n if (params[1] == "all")\n limit = 0;\n else\n limit = Number(params[1]);\n var cnt = config.macros.gtdDeleteItems.deleteTiddlers(params[0], limit);\n\n if (params[1] == "all")\n text = this.txtDeleteAll.replace("%0", params[0]);\n else\n text = this.txtDelete.replace("%0", params[0]).replace("%1", params[1]);\n text = text.replace("%2", cnt);\n createTiddlyText(wrapper, text);\n\n } else {\n var all;\n if (params[1] == "all") {\n text = this.txtConfirmDeleteAll.replace("%0", params[0]);\n createTiddlyText(wrapper, text);\n all = true;\n } else {\n text = this.txtConfirmDelete.replace("%0", params[0]);\n var s = text.split("%1");\n createTiddlyText(wrapper, s[0]);\n var input = document.createElement("input");\n input.setAttribute("param","limit");\n input.size = 3;\n input.value = params[1];\n wrapper.appendChild(input);\n createTiddlyText(wrapper, s[1]);\n all = false;\n }\n\n var btn = createTiddlyButton(wrapper, this.txtExecute, this.txtExecuteTooltip, this.onClick);\n btn.setAttribute("tag", params[0]);\n if (all)\n btn.setAttribute("param", "all");\n else\n btn.setAttribute("param", "limit");\n }\n}\n\nconfig.macros.gtdDeleteItems.onClick = function()\n{\n var tag = this.getAttribute("tag");\n\n var cnt;\n if (this.getAttribute("param") == "all")\n cnt = config.macros.gtdDeleteItems.deleteTiddlers(tag, 0);\n else {\n var input = this.parentNode.getElementsByTagName("input")\n var type = input[0].getAttribute("param");\n if (type == "limit") {\n var limit = Number(input[0].value);\n cnt = config.macros.gtdDeleteItems.deleteTiddlers(tag, limit);\n }\n }\n\n alert(config.macros.gtdDeleteItems.txtResult.replace("%0", String(cnt)));\n return false;\n}\n\nconfig.macros.gtdDeleteItems.deleteTiddlers = function(tag, limit)\n{\n var now = new Date();\n var limitDate = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate() - limit + 1);\n\n var cnt = 0;\n var tiddlers = store.getTaggedTiddlers(tag);\n\n var max = tiddlers.length;\n for (var i = 0; i < max; i++)\n if (tiddlers[i].modified < limitDate) {\n store.deleteTiddler(tiddlers[i].title);\n cnt++;\n }\n if (cnt > 0)\n store.setDirty(true);\n return cnt;\n}\n\n//}}}\n
/***\n &#60;&#60;gtdImportItems&#62;&#62;\n***/\n//{{{\nconfig.macros.gtdImportItems = {};\nconfig.macros.gtdImportItems.handler = function(place,macroName,params)\n{\n var wrapper = createTiddlyElement(place, "span");\n\n var input;\n var btn;\n var text;\n createTiddlyText(wrapper, "File: ");\n input = document.createElement("input");\n input.setAttribute("param","file");\n input.size = 30;\n if (params[0] && params[0] != "null")\n input.value = params[0];\n wrapper.appendChild(input);\n createTiddlyElement(wrapper, "br");\n\n createTiddlyText(wrapper, "Tag: ");\n input = document.createElement("input");\n input.setAttribute("param","tag");\n input.size = 15;\n if (params[1] && params[1] != "null")\n input.value = params[1];\n wrapper.appendChild(input);\n createTiddlyElement(wrapper, "br");\n createTiddlyElement(wrapper, "br");\n\n btn = createTiddlyButton(wrapper, "Execute", "Execute", this.onClick);\n}\n\nconfig.macros.gtdImportItems.onClick = function()\n{\n var file;\n var tag;\n\n // フォームから文字列取得\n var input = this.parentNode.getElementsByTagName("input");\n for (var i=0; i<input.length; i++) {\n var type = input[i].getAttribute("param");\n if (type == "file") {\n file = input[i].value;\n } else if (type == "tag") {\n tag = input[i].value;\n }\n }\n\n // パス付加\n if (!file || !tag)\n return false;\n var localPath = getLocalPath(document.location.toString());\n var p;\n var fullpath;\n if((p = localPath.lastIndexOf("/")) != -1)\n fullpath = localPath.substr(0,p) + "/" + file;\n else if((p = localPath.lastIndexOf("\s\s")) != -1)\n fullpath = localPath.substr(0,p) + "\s\s" + file;\n else\n fullpath = localPath + "." + file;\n\n // ファイル読み込み\n var importFile = loadFile(fullpath);\n if (!importFile) {\n alert("File open error: " + fullpath);\n return false;\n }\n\n // Tiddler部切り出し\n var posOpeningDiv = importFile.indexOf(startSaveArea);\n var posClosingDiv = importFile.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1)) {\n alert(config.messages.invalidFileError.format([file]));\n return false;\n }\n var start = posOpeningDiv + startSaveArea.length;\n var len = posClosingDiv - start;\n var divs = importFile.substr(start, len);\n\n // Tiddler部のテキストをデコード\n var lines = divs.split("\sn");\n for (var i=0; i<lines.length; i++)\n lines[i] = convertUTF8ToUnicode(lines[i]);\n var text = lines.join("\sn");\n\n // ワークエリアにデコードしたテキストを挿入\n var workArea = document.createElement("div");\n workArea.id = "gtdImportWorkArea";\n workArea.innerHTML = text;\n\n // tags属性が指定タグと一致するDIVを探す\n var cnt = 0;\n for (var t = workArea.firstChild; t;) {\n var nextChild = t.nextSibling\n if (t.tagName == "DIV") {\n var tagstr = t.getAttribute("tags").htmlDecode();\n var tags = tagstr.readBracketedList();\n\n if (tags.find(tag) == null)\n workArea.removeChild(t);\n else\n cnt++;\n }\n t = nextChild;\n }\n if (workArea.firstChild) {\n var storeArea = document.getElementById("storeArea");\n storeArea.appendChild(workArea);\n store.loadFromDiv("gtdImportWorkArea", "store");\n storeArea.removeChild(workArea);\n }\n store.setDirty(true);\n alert(String(cnt) + "items imported.");\n return false;\n}\n\n//}}}\n
/***\n ver 1.1\n***/\n//{{{\n\n// Tiddlerタイトルと同名のタグがついているTiddler一覧\n// 更新日付つきで表示\nconfig.macros.gtdListWithDate = {};\nconfig.macros.gtdListWithDate.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var tag = tiddler.title;\n var list = store.getTaggedTiddlers(tag, "title");\n\n list.sort(function (a,b) {\n if(a.modified == b.modified)\n return(0);\n else\n return (a.modified < b.modified) ? +1 : -1;\n });\n\n createTiddlyText(place, config.macros.gtdItemList.cntFormat.replace("%0", String(list.length)));\n createTiddlyElement(place, "br");\n\n for (var t = 0; t < list.length; t++) {\n createTiddlyText(place, list[t].modified.formatString(config.macros.gtdItemList.dateFormat) + ' ');\n createTiddlyLink(place, list[t].title, true);\n if (t < list.length - 1)\n createTiddlyElement(place, 'br');\n }\n}\n\n// Tiddlerタイトルと同名のタグがついているTiddler一覧\nconfig.macros.gtdClosedItemList = {};\nconfig.macros.gtdClosedItemList.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var tag = tiddler.title;\n var list = store.getTaggedTiddlers(tag, "title");\n for (var t = 0; t < list.length; t++) {\n createTiddlyLink(place, list[t].title, true);\n if (t < list.length - 1)\n createTiddlyElement(place, 'br');\n }\n}\n\n// NextActionタグがついているTiddler一覧と\n// そのTiddler名のタグがついているTiddler一覧\nconfig.macros.gtdNextActionList = {};\nconfig.macros.gtdNextActionList.handler = function(place,macroName,params)\n{\n var list = store.getTaggedTiddlers('NextAction', 'title');\n for (var t = 0; t < list.length; t++) {\n createTiddlyElement(place, "h3", null, null, list[t].title);\n config.macros.gtdItemList.handler(place, "gtdItemList", [list[t].title]);\n }\n}\n\n// 第1引数で指定したタグがついているTiddler一覧\n// 第2引数以降に指定したタグは一覧から除外される\nconfig.macros.gtdList = {};\nconfig.macros.gtdList.handler = function(place,macroName,params)\n{\n var tag = params[0];\n var list = store.getTaggedTiddlers(tag, "title");\n for (var t = 0; t < list.length; t++) {\n var skip = false;\n for (var p = 1; p < params.length; p++)\n if (list[t].title == params[p])\n skip = true;\n if (skip)\n continue;\n createTiddlyLink(place, list[t].title, true);\n if (t < list.length - 1)\n createTiddlyElement(place, 'br');\n }\n}\n\n\n// Tiddlerタイトルと同名のタグがついているTiddler一覧\n// 第1引数を指定すると、指定したタグがついているTiddler一覧\n// ただしtodoタグがついているTiddlerのみ\n// 先頭に件数を表示\nconfig.macros.gtdItemList = {\n sizetable: {\n "+3": ["2.5em","1.1em"],\n "+2": ["2.0em","1.3em"],\n "+1": ["1.5em","1.3em"],\n "-1": ["0.8em","1.0em"],\n "-2": ["0.7em","1.0em"],\n "-3": ["0.6em","1.0em"]\n }\n};\nconfig.macros.gtdItemList.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var tag;\n if (params[0])\n tag = params[0];\n else\n tag = tiddler.title;\n var list = [];\n var zoomlist = [];\n var linelist = [];\n store.forEachTiddler(function(title,tiddler) {\n if ((tiddler.tags.find(tag) != null) && (tiddler.tags.find('todo') != null)) {\n list.push(tiddler.title);\n var zoom = "";\n var line = "";\n for (var i = 0; i < tiddler.tags.length; i++)\n if (tiddler.tags[i].match(/^([+\s-][1-3])$/)) {\n zoom = config.macros.gtdItemList.sizetable[RegExp.$1][0];\n line = config.macros.gtdItemList.sizetable[RegExp.$1][1];\n }\n zoomlist.push(zoom);\n linelist.push(line);\n }\n });\n\n createTiddlyText(place, config.macros.gtdItemList.cntFormat.replace("%0", String(list.length)));\n createTiddlyElement(place, "br");\n\n for (var t = 0; t < list.length; t++) {\n var e = createTiddlyLink(place, list[t], true);\n if (zoomlist[t] != "") {\n e.style.fontSize = zoomlist[t];\n e.style.lineHeight = linelist[t];\n }\n if (t < list.length - 1)\n createTiddlyElement(place, 'br');\n }\n}\n\n//}}}
//{{{\nconfig.macros.gtdVersion = {\n verno: "1.1.0",\n id: '$Id: index.html 7 2006-08-02 20:17:01Z kei $'\n};\nconfig.macros.gtdVersion.handler = function(place,macroName,params)\n{\n createTiddlyText(place, this.verno);\n}\n\nstore.addNotification("gtdStyleSheet", refreshStyles);\n\nconfig.commands.saveTiddler.handler = function(event,src,title)\n{\n var newTitle = story.saveTiddler(title,event.shiftKey);\n if (newTitle) {\n story.displayTiddler(null,newTitle);\n var tiddler = store.getTiddler(newTitle);\n for (var i = 0; i < tiddler.tags.length; i++) {\n if (config.gtdrefresher.isList(tiddler.tags[i]))\n config.gtdrefresher.setListDirty();\n else if (tiddler.tags[i] == "NextAction")\n config.gtdrefresher.setMenuDirty();\n else if (tiddler.tags[i].match(/^[0-9]{8}$/))\n config.gtdrefresher.pushDate(tiddler.tags[i]);\n }\n config.gtdrefresher.refresh();\n }\n return false;\n}\n\nconfig.commands.deleteTiddler.handler = function(event,src,title)\n{\n var deleteIt = true;\n if (config.options.chkConfirmDelete)\n deleteIt = confirm(this.warning.format([title]));\n if (deleteIt) {\n var tiddler = store.getTiddler(title);\n for (var i = 0; i < tiddler.tags.length; i++) {\n if (config.gtdrefresher.isList(tiddler.tags[i]))\n config.gtdrefresher.setListDirty();\n else if (tiddler.tags[i] == "NextAction")\n config.gtdrefresher.setMenuDirty();\n else if (tiddler.tags[i].match(/^[0-9]{8}$/))\n config.gtdrefresher.popDate(tiddler.tags[i]);\n }\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if(config.options.chkAutoSave)\n saveChanges();\n config.gtdrefresher.refresh();\n }\n\n return false;\n}\n\nconfig.macros.gtdCountTodo = {};\nconfig.macros.gtdCountTodo.handler = function(place,macroName,params)\n{\n var list = store.getTaggedTiddlers("todo", "title");\n createTiddlyText(place, String(list.length));\n}\n\nfunction GtdRefresher()\n{\n this.isListDirty = false;\n this.isDateDirty = false;\n this.isMenuDirty = false;\n this.notifySchedule = new Array();\n this.listNames = new Array();\n this.closeStatus = new Array();\n this.init();\n}\n\nGtdRefresher.prototype.init = function()\n{\n var lists = store.getTaggedTiddlers("List");\n for (var i = 0; i < lists.length; i++)\n this.listNames.push(lists[i].title);\n\n lists = store.getTaggedTiddlers("Close");\n for (var i = 0; i < lists.length; i++)\n this.closeStatus.push(lists[i].title);\n}\n\nGtdRefresher.prototype.isList = function(tag)\n{\n var ret = false;\n if (this.listNames.find(tag) != null)\n ret = true;\n return ret;\n}\n\nGtdRefresher.prototype.isCloseStatus = function(tag)\n{\n var ret = false;\n if (this.closeStatus.find(tag) != null)\n ret = true;\n return ret;\n}\n\nGtdRefresher.prototype.setListDirty = function()\n{\n this.isListDirty = true;\n}\n\nGtdRefresher.prototype.setMenuDirty = function()\n{\n this.isMenuDirty = true;\n}\n\nGtdRefresher.prototype.pushDate = function(datestr)\n{\n var cal = config.macros.gtdCalendar;\n var yyyymmdd = datestr;\n var yyyymm00 = datestr.substr(0,6) + "00";\n if (cal.scheduledDate[yyyymmdd] == undefined)\n cal.scheduledDate[yyyymmdd] = 0;\n if (cal.scheduledDate[yyyymm00] == undefined)\n cal.scheduledDate[yyyymm00] = 0;\n cal.scheduledDate[yyyymmdd]++;\n cal.scheduledDate[yyyymm00]++;\n this.notifySchedule.push(yyyymmdd);\n this.notifySchedule.push(yyyymm00);\n this.isDateDirty = true;\n}\n\nGtdRefresher.prototype.popDate = function(datestr)\n{\n var cal = config.macros.gtdCalendar;\n var yyyymmdd = datestr;\n var yyyymm00 = datestr.substr(0,6) + "00";\n cal.scheduledDate[yyyymmdd]--;\n cal.scheduledDate[yyyymm00]--;\n this.notifySchedule.push(yyyymmdd);\n this.notifySchedule.push(yyyymm00);\n this.isDateDirty = true;\n}\n\nGtdRefresher.prototype.refresh = function()\n{\n if (this.isMenuDirty) {\n this.init();\n refreshDisplay();\n this.isMenuDirty = false;\n return;\n }\n\n if (this.isListDirty) {\n var lists = store.getTaggedTiddlers("List");\n for (var i = 0; i < lists.length; i++)\n story.refreshTiddler(lists[i].title, DEFAULT_VIEW_TEMPLATE, true);\n this.isListDirty = false;\n }\n\n if (this.isDateDirty) {\n config.macros.gtdCalendar.refresh(this.notifySchedule);\n config.macros.gtdTicklerFile.refresh(this.notifySchedule);\n this.notifySchedule = new Array();\n this.isDateDirty = false;\n }\n}\n\nconfig.gtdrefresher = new GtdRefresher();\n//}}}
GTDStyleWiki\nTiddlyWiki\n[[マニュアル|マニュアル目次]]\n[[書式|技術資料:TiddlyWiki書式一覧]]\n[[Version]]
<<gtdNewTiddler ToDo>>\n[[INBOX]]\n[[未決]]\n
//{{{\nconfig.macros.gtdmenu = {};\nconfig.macros.gtdmenu.createSlider = function(place,cookie,title,tooltip)\n{\n var cookie = cookie ? cookie : "";\n var h = createTiddlyElement(place, "h3");\n var btn = createTiddlyButton(h,title,tooltip,this.onClickSlider);\n var panel = createTiddlyElement(place,"div",null,"sliderPanel",null);\n panel.setAttribute("cookie",cookie);\n panel.style.display = config.options[cookie] ? "block" : "none";\n return panel;\n}\n\nconfig.macros.gtdmenu.handler = function(place,macroName,params)\n{\n var panel = this.createSlider(place,params[0],params[2],params[3]);\n var text = store.getTiddlerText(params[1]);\n if(text)\n wikify(text,panel,null,store.getTiddler(params[1]));\n}\n\nconfig.macros.gtdmenu.onClickSlider = function(e)\n{\n if (!e) var e = window.event;\n var n = this.parentNode.nextSibling;\n var cookie = n.getAttribute("cookie");\n var isOpen = n.style.display != "none";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(n,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n n.style.display = isOpen ? "none" : "block";\n config.options[cookie] = !isOpen;\n saveOptionCookie(cookie);\n return false;\n}\n\n//}}}
<<search>>\n<<closeAll>>\n<<newTiddler>>\n<<saveChanges>>
[[次の行動リスト一覧]]\n<<gtdList NextAction>>\n
<<gtdList Open INBOX 未決>>\n<<gtdList Close>>\n
<<gtdList Schedule>>\n<<gtdCalendar>>
[[システム設定]]\n<<saveMyEmpty>>\n[[ごみ箱整理]]\n<<gtdNewTiddler NextAction>>\n[[タグ置換]]\n[[アップグレード]]
/***\n機能:デフォルトタグ付の新規Tiddler作成\n書式:\n &#60;&#60;gtdNewTiddler [ToDo|NextAction] [YYYYMMDD]&#62;&#62;\n***/\n\n//{{{\nconfig.macros.gtdNewTiddler = {\n defaultText: "",\n defaultIeText: "\sn\sn\sn\sn", // 5行未満のtiddlerはレイアウトが崩れるバグ対応(IE)\n accessKey: "N"\n};\n\nconfig.macros.gtdNewTiddler.handler = function(place,macroName,params)\n{\n var lingo = config.macros.gtdNewTiddler;\n\n var isAction = false;\n if (params[0] && (params[0] == "NextAction"))\n isAction = true;\n\n var btn;\n if (isAction) {\n btn = createTiddlyButton(place,lingo.newActionLabel,lingo.newActionPrompt,\n this.onClickAction,null,null,this.accessKey);\n btn.setAttribute("params", "NextAction");\n } else {\n btn = createTiddlyButton(place,lingo.newItemLabel,lingo.newItemPrompt,\n this.onClickItem,null,null,this.accessKey);\n var tags = "todo";\n if (params[1])\n tags = tags + " " + params[1];\n else\n tags = tags + " " + "INBOX";\n btn.setAttribute("params", tags);\n }\n}\n\nconfig.macros.gtdNewTiddler.onClickAction = function()\n{\n var defaultTitle = config.macros.newTiddler.title;\n var actionName = window.prompt(config.macros.gtdNewTiddler.inputActionPrompt, "");\n if (!actionName || (actionName == ""))\n return false;\n\n var tiddler = store.createTiddler(actionName);\n var now = new Date();\n var text = "<<gtdItemList>>";\n if (config.browser.isIE)\n text += config.macros.gtdNewTiddler.defaultIeText;\n tiddler.set(actionName, text, config.options.txtUserName, now, \n ["UserList", "List", "NextAction"], now);\n displayTiddler(this, actionName, DEFAULT_VIEW_TEMPLATE);\n config.gtdrefresher.setMenuDirty();\n config.gtdrefresher.refresh();\n return false;\n}\n\nconfig.macros.gtdNewTiddler.onClickItem = function()\n{\n var defaultTitle = config.macros.newTiddler.title;\n var org_defaultText = config.views.editor.defaultText;\n if (config.browser.isIE)\n config.views.editor.defaultText = config.macros.gtdNewTiddler.defaultIeText;\n else\n config.views.editor.defaultText = config.macros.gtdNewTiddler.defaultText;\n\n story.displayTiddler(null, defaultTitle, DEFAULT_EDIT_TEMPLATE);\n var tiddler = document.getElementById(story.idPrefix + defaultTitle);\n var children = tiddler.getElementsByTagName("input")\n for (var t=0; t<children.length; t++)\n if(children[t].getAttribute("edit") == "tags")\n children[t].value = this.getAttribute("params");\n story.focusTiddler(defaultTitle, "title");\n\n config.views.editor.defaultText = org_defaultText;\n\n return false;\n}\n//}}}\n\n
/***\n\n!!Version\n1.1\n\n!!Description\ntodoタグがついたTiddlerにポップアップカレンダー表示ボタンをつける。ViewTemplate用。\n\n!!Usage\n{{{<<gtdPopupCalendar>>}}}\nViewTemplateに登録する場合は以下\n{{{<span macro='gtdPopupCalendar'></span>}}}\n\n!!Configuration\n開始曜日はGtdCalendarMacroで設定したものが有効になる。\n\n***/\n//{{{\n\nconfig.macros.gtdPopupCalendar = {\n button: null,\n year: 0,\n month: 0\n};\n\nconfig.macros.gtdPopupCalendar.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var m = config.macros.gtdPopupCalendar;\n if(tiddler instanceof Tiddler) {\n var title = tiddler.title;\n if (tiddler.tags.find("todo") != null) {\n var btn = createTiddlyButton(place, m.text, m.tooltip ,this.onClick);\n btn.setAttribute("tiddler", title);\n for(var t=0; t < tiddler.tags.length; t++)\n if (tiddler.tags[t].match(/[0-9]{8}/))\n btn.setAttribute("date", tiddler.tags[t]);\n }\n }\n}\n\n\nconfig.macros.gtdPopupCalendar.onClick = function(e)\n{\n if (!e) var e = window.event;\n\n var m = config.macros.gtdPopupCalendar;\n m.year = 0;\n m.month = 0;\n m.button = this;\n m.show(e);\n\n return false;\n}\n\nconfig.macros.gtdPopupCalendar.show = function(e)\n{\n var m = config.macros.gtdPopupCalendar;\n\n var popup = Popup.createDiv(m.button);\n\n var datestr = m.button.getAttribute("date");\n var date;\n if (datestr)\n date = newDateYYYYMMDD(datestr);\n else\n date = new Date();\n date.setDate(1); // 31日等の場合月移動するとおかしくなるので1日にセット\n date.setFullYear(date.getFullYear() + m.year);\n date.setMonth(date.getMonth() + m.month);\n\n m.makeContent(popup, date);\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n\n}\n\nconfig.macros.gtdPopupCalendar.makeContent = function(place, date) {\n var m = config.macros.gtdPopupCalendar;\n var mm = config.macros.gtdCalendar;\n\n var theClass = 'popupCalendarButton';\n\n // ヘッダ表示\n var e;\n e = createTiddlyButton(place, "<<", "last year", this.onClickDate, theClass);\n e.setAttribute("param", "LastYear");\n this.setWidth(e, 25);\n e = createTiddlyButton(place, "<", "last month", this.onClickDate, theClass);\n e.setAttribute("param", "LastMonth");\n this.setWidth(e, 25);\n var thisMonth = date.formatString("YYYY 0MM");\n e = createTiddlyElement(place, "span", null, theClass, thisMonth);\n this.setWidth(e, 25*3);\n e = createTiddlyButton(place, ">", "next month", this.onClickDate, theClass);\n e.setAttribute("param", "NextMonth");\n this.setWidth(e, 25);\n e = createTiddlyButton(place, ">>", "next year", this.onClickDate, theClass);\n e.setAttribute("param", "NextYear");\n this.setWidth(e, 25);\n createTiddlyElement(place, 'br');\n\n // 曜日表示\n for (var pos = 0; pos < 7; pos++) {\n var e = createTiddlyElement(place, 'span', null, 'popupCalendarText', mm.days[mm.pos2day(pos)]);\n m.setWidth(e, 25);\n }\n createTiddlyElement(place, 'br');\n\n // 1日以前の空白表示\n var cnt = 0;\n var theDay = date;\n theDay.setDate(1);\n for (var d = 0; d < mm.day2pos(theDay.getDay()); d++) {\n var e = createTiddlyElement(place, 'span', null, theClass, ' ');\n m.setWidth(e, 25);\n cnt++;\n }\n\n // 1日~末日表示\n var now = (new Date()).formatString("YYYY0MM0DD");\n var current = m.button.getAttribute("date");\n\n var mon = theDay.getMonth();\n var nextDay = theDay;\n for (; theDay.getMonth() == mon; theDay = nextDay) {\n var datestr = theDay.formatString("YYYY0MM0DD");\n var cssClass = theClass;\n if (datestr == now)\n cssClass = cssClass + ' popupCalendarToday';\n if (datestr == current)\n cssClass = cssClass + ' popupCalendarCurrent';\n var e = createTiddlyButton(place, theDay.getDate(), theDay.getDate(), this.onClickDate, cssClass);\n e.setAttribute("param", datestr);\n m.setWidth(e, 25);\n cnt++;\n nextDay.setDate(theDay.getDate() + 1)\n if ((cnt >= 7) && (nextDay.getMonth() == mon)) {\n createTiddlyElement(place, 'br');\n cnt = 0;\n }\n }\n\n // 末日以降の空白表示\n for (; cnt < 7; cnt++) {\n var e = createTiddlyElement(place, 'span', null, theClass, ' ');\n m.setWidth(e, 25);\n }\n}\n\nconfig.macros.gtdPopupCalendar.onClickDate = function(e)\n{\n if (!e) var e = window.event;\n\n var m = config.macros.gtdPopupCalendar;\n\n var param = this.getAttribute("param");\n if (param.match(/^[0-9]{8}$/)) {\n var title = m.button.getAttribute("tiddler");\n config.macros.gtdTagChooser.setStatusTag(title, param);\n\n } else if (param == "LastMonth") {\n m.month -= 1;\n m.show(e);\n } else if (param == "NextMonth") {\n m.month += 1;\n m.show(e);\n } else if (param == "LastYear") {\n m.year -= 1;\n m.show(e);\n } else if (param == "NextYear") {\n m.year += 1;\n m.show(e);\n }\n\n return false;\n}\n\n\nconfig.macros.gtdPopupCalendar.setWidth = function(elem, width)\n{\n var padding = String((width - elem.offsetWidth)/2) + "px";\n elem.style.paddingLeft = padding;\n elem.style.paddingRight = padding;\n}\n\n\nPopup.createDiv = function(root)\n{\n Popup.remove();\n var popup = createTiddlyElement(document.body,"div","popup","popup",null);\n Popup.stack.push({root: root, popup: popup});\n return popup;\n}\n\n//}}}\n
//{{{\nconfig.macros.saveMyEmpty = {};\nconfig.macros.saveMyEmpty.handler = function(place)\n{\n if (!readOnly)\n createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,null);\n}\n\nconfig.macros.saveMyEmpty.onClick = function(e)\n{\n saveMyEmpty();\n return false;\n}\n\nfunction taggedTiddlersAsHtml()\n{\n var savedTiddlers = [];\n var tiddlers = store.reverseLookup("tags", config.macros.saveMyEmpty.tag, true, "title");\n for (var t = 0; t < tiddlers.length; t++)\n savedTiddlers.push(tiddlers[t].saveToDiv());\n return savedTiddlers.join("\sn");\n}\n\nfunction saveMyEmpty()\n{\n clearMessage();\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 {\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 // Load the original file\n var original = loadFile(localPath);\n if(original == null)\n {\n alert(config.messages.cantSaveError);\n if(store.tiddlerExists(config.messages.saveInstructions))\n displayTiddler(null,config.messages.saveInstructions);\n return;\n }\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([localPath]));\n return;\n }\n // Save new file\n var emptyPath,p;\n if((p = localPath.lastIndexOf("/")) != -1)\n emptyPath = localPath.substr(0,p) + "/" + config.macros.saveMyEmpty.filename;\n else if((p = localPath.lastIndexOf("\s\s")) != -1)\n emptyPath = localPath.substr(0,p) + "\s\s" + config.macros.saveMyEmpty.filename;\n else\n emptyPath = localPath + "." + config.macros.saveMyEmpty.filename;\n\n var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + \n convertUnicodeToUTF8(taggedTiddlersAsHtml()) + "\sn\st\st" +\n original.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(emptyPath,revised);\n if(save)\n {\n displayMessage(config.macros.saveMyEmpty.message,"file://" + emptyPath);\n store.setDirty(false);\n }\n else\n alert(config.messages.mainFailed);\n}\n//}}}\n
//{{{\nconfig.macros.gtdTagChooser = {\n tags: []\n};\n\n// リンククリック時のハンドラ。ポップアップメニューを表示する\nconfig.macros.gtdTagChooser.onClick = function(e)\n{\n var m = config.macros.gtdTagChooser;\n\n if (!e) var e = window.event;\n var popup = Popup.create(this);\n m.tags = m.getTagList();\n\n if(m.tags.length == 0)\n createTiddlyText(createTiddlyElement(popup,"li"),m.popupNone);\n var listItem;\n for (var t=0; t<m.tags.length; t++) {\n if (m.tags[t] == '<hr>')\n createTiddlyElement(listItem, "hr");\n else {\n listItem = createTiddlyElement(popup,"li");\n var theTag = createTiddlyButton(listItem,m.tags[t],m.tagTooltip.format([m.tags[t]]),m.onTagClick);\n theTag.setAttribute("tag",m.tags[t]);\n theTag.setAttribute("tiddler", this.getAttribute("tiddler"));\n }\n }\n\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\n// ポップアップメニュー項目作成\nconfig.macros.gtdTagChooser.getTagList = function()\n{\n var list = new Array();\n var tmplist = store.getTaggedTiddlers("Open", "title");\n for (var t = 0; t < tmplist.length; t++) {\n if (tmplist[t].title != "INBOX")\n list.push(tmplist[t].title);\n }\n list.push('<hr>');\n\n tmplist = store.getTaggedTiddlers("NextAction", "title");\n for (var t = 0; t < tmplist.length; t++) {\n list.push(tmplist[t].title);\n }\n list.push('<hr>');\n\n tmplist = store.getTaggedTiddlers("Close", "title");\n for (var t = 0; t < tmplist.length; t++) {\n list.push(tmplist[t].title);\n }\n\n return list;\n}\n\n\n// ポップアップメニュー項目選択ハンドラ\nconfig.macros.gtdTagChooser.onTagClick = function(e)\n{\n var m = config.macros.gtdTagChooser;\n\n var tag = this.getAttribute("tag");\n var title = this.getAttribute("tiddler");\n\n m.setStatusTag(title, tag);\n\n return false;\n};\n\nconfig.macros.gtdTagChooser.setStatusTag = function(title, tag)\n{\n var tiddler = store.getTiddler(title);\n var tiddlerTags = tiddler.tags;\n if (!tiddlerTags)\n tiddlerTags = new Array();\n\n // Listタグの削除\n for (var i = tiddlerTags.length - 1; i >= 0; i--)\n if (config.gtdrefresher.isList(tiddlerTags[i])) {\n tiddlerTags.splice(i, 1);\n config.gtdrefresher.setListDirty();\n }\n\n // 日付タグの削除\n for (var t = 0; t < tiddlerTags.length; t++)\n if (tiddlerTags[t].match(/^[0-9]{8}$/)) {\n config.gtdrefresher.popDate(tiddlerTags[t]);\n tiddlerTags.splice(t, 1);\n }\n\n // タグの追加\n tiddlerTags.push(tag);\n\n var p;\n // 「資料」か「ごみ箱」のときはtodoタグを削除\n if (config.gtdrefresher.isCloseStatus(tag))\n if ((p = tiddlerTags.find("todo")) != null)\n tiddlerTags.splice(p, 1);\n\n tiddler.set(null, null, null, new Date(), tiddlerTags);\n //story.saveTiddler(title, true);\n store.setDirty(true);\n\n if (config.gtdrefresher.isList(tag))\n config.gtdrefresher.setListDirty();\n else if (tag.match(/^[0-9]{8}$/))\n config.gtdrefresher.pushDate(tag);\n\n // リスト、スケジュールのリフレッシュ\n config.gtdrefresher.refresh();\n\n // 当該Tiddlerのリフレッシュ\n story.refreshTiddler(title,DEFAULT_VIEW_TEMPLATE,true);\n\n// refreshDisplay();\n}\n\n\n// リンク作成\nconfig.macros.gtdTagChooser.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n if(tiddler instanceof Tiddler) {\n var title = tiddler.title;\n var m = config.macros.gtdTagChooser;\n if (tiddler.tags.find("todo") != null) {\n var btn = createTiddlyButton(place,m.text,m.tooltip,this.onClick);\n btn.setAttribute("tiddler", title);\n }\n }\n}\n//}}}\n
//{{{\nconfig.macros.gtd = {};\n\nconfig.macros.gtdTicklerFile = {\n dateFormat: "0DD",\n monthFormat: "MMM",\n dateTabWidth: 60,\n monthTabWidth: 100,\n datesPerLine: 7,\n monthsPerLine: 3\n};\n\nconfig.macros.gtdTicklerFile.handler = function(place,macroName,params) {\n\n if (params[0] && (params[0] != 'null')) this.datesPerLine = params[0];\n if (params[1] && (params[1] != 'null')) this.monthsPerLine = params[1];\n if (params[2] && (params[2] != 'null')) this.dateTabWidth = params[2];\n if (params[3] && (params[3] != 'null')) this.monthTabWidth = params[3];\n if (params[4] && (params[4] != 'null')) this.dateFormat = params[4];\n if (params[5] && (params[5] != 'null')) this.monthFormat = params[5];\n\n\n // ラッパー作成\n var wrapper = createTiddlyElement(place,"div",null,null,null);\n var tabset = createTiddlyElement(wrapper,"div",null,null,null);\n tabset.name = "gtdTicklerFile";\n\n // 日付タグのついたTiddlerをチェック\n var cal = config.macros.gtdCalendar;\n if (!cal.scheduledDate)\n cal.scheduledDate = cal.getScheduledDate();\n\n // タブリスト作成\n var tablist = this.createTabList();\n var tmplist = [];\n\n // インデントの深さ計算\n var indentCount = 0;\n for (var t in tablist)\n if (tablist[t] == "<br>") indentCount++;\n indentCount--;\n\n // 逆順にループしてタブ表示\n while (tablist.length > 0) {\n var tab = tablist.pop();\n if (tab == '<br>') {\n this.createIndent(tabset, indentCount);\n indentCount--;\n while (tmplist.length > 0) {\n var label = tmplist.pop();\n this.createTab(tabset,label,label,"dummy",config.macros.gtdTicklerFile.onClickTab);\n }\n createTiddlyElement(tabset, 'br');\n } else {\n tmplist.push(tab);\n }\n }\n\n // 当日タブ選択\n var now = new Date();\n this.switchTab(tabset, now.formatString(this.dateFormat));\n}\n\nconfig.macros.gtdTicklerFile.createTab = function(tabset, datestr, prompt, content, handler)\n{\n // 指定書式に従い表示文字列生成\n var dt = newDateYYYYMMDD(datestr);\n var label;\n var isMonthTab;\n var key;\n if (datestr.substr(6) == '00') {\n isMonthTab = true;\n label = dt.formatString(this.monthFormat);\n } else {\n isMonthTab = false;\n label = dt.formatString(this.dateFormat);\n }\n\n // 項目の有無によりスタイル決定\n var cssClass;\n if ((config.macros.gtdCalendar.scheduledDate[datestr] == undefined)\n || (config.macros.gtdCalendar.scheduledDate[datestr] == 0))\n cssClass = "ticklerTab ticklerEmpty ticklerUnsel";\n else \n cssClass = "ticklerTab ticklerExist ticklerUnsel";\n\n // TiddlyButton生成\n var tab = createTiddlyButton(tabset, label, prompt, handler, cssClass);\n tab.setAttribute("tab",label);\n tab.setAttribute("date",datestr);\n tab.setAttribute("content",content);\n tab.title = label;\n\n // タブ幅の設定\n var padding;\n if (isMonthTab)\n padding = String((this.monthTabWidth - tab.offsetWidth)/2) + "px";\n else\n padding = String((this.dateTabWidth - tab.offsetWidth)/2) + "px";\n tab.style.paddingLeft = padding;\n tab.style.paddingRight = padding;\n};\n\nconfig.macros.gtdTicklerFile.createTabList = function() {\n var tablist = [];\n var now = new Date();\n var label;\n\n // <br>push\n tablist.push('<br>');\n\n // 当日~末日push\n var theDay;\n var cnt = 0;\n for (theDay = new Date();\n theDay.getMonth() == now.getMonth();\n theDay.setDate(theDay.getDate() + 1)) {\n\n // 指定日毎に<br>push\n if ((cnt != 0) && (cnt % this.datesPerLine == 0))\n tablist.push('<br>');\n cnt++;\n\n tablist.push(theDay.formatString('YYYY0MM0DD'));\n }\n\n // <br>push\n tablist.push('<br>');\n\n // 当月push\n label = now.formatString('YYYY0MM00');\n tablist.push(label);\n\n // <br>push\n tablist.push('<br>');\n\n // 1日~前日push\n cnt = 0;\n var nextMonth1st = new Date(theDay);\n for (; (theDay.getDate() < now.getDate())\n && (theDay.getMonth() == nextMonth1st.getMonth());\n theDay.setDate(theDay.getDate() + 1)) {\n // 指定日毎に<br>push\n if ((cnt != 0) && (cnt % this.datesPerLine == 0))\n tablist.push('<br>');\n cnt++;\n\n tablist.push(theDay.formatString('YYYY0MM0DD'));\n }\n\n // <br>push\n if (cnt > 0)\n tablist.push('<br>');\n\n // 翌月push\n theDay = nextMonth1st;\n label = theDay.formatString('YYYY0MM00');\n tablist.push(label);\n\n // <br>push\n tablist.push('<br>');\n\n // 翌々月~前月push\n cnt = 0;\n for (theDay.setMonth(theDay.getMonth() + 1);\n theDay.getMonth() != now.getMonth();\n theDay.setMonth(theDay.getMonth() + 1)) {\n\n // 指定月毎に<br>push\n if ((cnt != 0) && (cnt % this.monthsPerLine == 0))\n tablist.push('<br>');\n cnt++;\n label = theDay.formatString('YYYY0MM00');\n tablist.push(label);\n }\n\n return tablist;\n};\n\n\nconfig.macros.gtdTicklerFile.createIndent = function(place, n) {\n var s = "";\n for (var i = 0; i < n; i++)\n s = s + '&nbsp;&nbsp;';\n var e = createTiddlyElement(place,"span");\n e.innerHTML = s;\n}\n\n\n\nconfig.macros.gtdTicklerFile.onClickTab = function(e)\n{\n config.macros.gtdTicklerFile.switchTab(this.parentNode,this.getAttribute("tab"));\n return false;\n}\n\nconfig.macros.gtdTicklerFile.switchTab = function(tabset,tab)\n{\n var stat = "open";\n\n // タブ親の子ノードリスト取得\n var nodes = tabset.childNodes;\n // 子ノードに対してループ\n for(var t=0; t<nodes.length; t++)\n // 子ノードのtab属性が指定タブ名だったら\n if(nodes[t].getAttribute && nodes[t].getAttribute("tab") == tab) {\n // 選択\n theTab = nodes[t];\n // 既に選択済みのタブをクリックした場合\n if (theTab.className.match(/ticklerSel/)) {\n stat = "close";\n theTab.className = theTab.className.replace(/ticklerSel/, 'ticklerUnsel');\n } else\n theTab.className = theTab.className.replace(/ticklerUnsel/, 'ticklerSel');\n } else\n // 非選択\n nodes[t].className = nodes[t].className.replace(/ticklerSel/, 'ticklerUnsel');\n\n nodes[0].setAttribute("status", stat);\n\n // どれかのタブが選択されたら\n if(theTab) {\n var thisLine = false;\n for (var tab = tabset.firstChild; tab; tab = tab.nextSibling) {\n if (tab == theTab)\n thisLine = true;\n // 次の兄弟ノードがコンテンツの場合\n if (tab.nextSibling && (tab.nextSibling.className == "ticklerTabContents"))\n // 削除\n tabset.removeChild(tab.nextSibling);\n // 選択タブの次のBRの位置にタブコンテンツ挿入\n if (thisLine && stat == "open" && tab.tagName == 'BR') {\n // divエレメント作成\n var tabContent = createTiddlyElement(null,"div",null,"ticklerTabContents",null);\n var theDate = theTab.getAttribute("date");\n tabContent.setAttribute("date", theDate);\n // BRの直後にコンテンツ挿入\n tabset.insertBefore(tabContent,tab.nextSibling);\n // タブのcontent属性からコンテンツタイトル取得\n var text = config.macros.gtdCalendar.getDateItem(theDate, 3);\n wikify(text,tabContent,null,null);\n thisLine = false;\n }\n }\n }\n}\n\n\nconfig.macros.gtdTicklerFile.refresh = function(hint) {\n\n var m = config.macros.gtdCalendar;\n\n var cnt = 0;\n var tic = m.getElementsByName(document, "div", "gtdTicklerFile");\n for (var i = 0; i < tic.length; i++) {\n var links = tic[i].getElementsByTagName("a");\n for (var j = 0; j < hint.length; j++) {\n for (var k = 0; k < links.length; k++) {\n if (links[k].className && links[k].className.search("ticklerTab") >= 0) {\n var param = links[k].getAttribute("date");\n if (param == hint[j]) {\n if (m.scheduledDate[hint[j]] == undefined\n || m.scheduledDate[hint[j]] == 0)\n links[k].className = links[k].className.replace(/ticklerExist/, "ticklerEmpty");\n else\n links[k].className = links[k].className.replace(/ticklerEmpty/, "ticklerExist");\n break;\n }\n }\n }\n }\n\n var mm = config.macros.gtdTicklerFile;\n var contents = tic[i].getElementsByTagName("div");\n if (!contents) continue;\n\n var content = contents[0];\n if (content.className=="ticklerTabContents") {\n var datestr = content.getAttribute("date");\n var now = new Date();\n var label;\n if (datestr == now.formatString("YYYY0MM0DD")) {\n if (datestr.substr(6) == '00')\n label = now.formatString(mm.monthFormat);\n else\n label = now.formatString(mm.dateFormat);\n mm.switchTab(tic[i], label);\n mm.switchTab(tic[i], label);\n } else {\n for (var j = 0; j < hint.length; j++) {\n if (datestr == hint[j]) {\n var dt = newDateYYYYMMDD(datestr);\n if (datestr.substr(6) == '00')\n label = dt.formatString(mm.monthFormat);\n else\n label = dt.formatString(mm.dateFormat);\n mm.switchTab(tic[i], label);\n mm.switchTab(tic[i], label);\n break;\n }\n }\n }\n }\n }\n}\n\nnewDateYYYYMMDD = function(ymd) {\n var y = Number(ymd.substr(0,4));\n var m = Number(ymd.substr(4,2)) - 1;\n var d;\n if (ymd.substr(6) == '00')\n d = 1;\n else\n d = Number(ymd.substr(6,2));\n return new Date(y, m, d);\n}\n\n\n//}}}\n
/***\n\n!!Version\n1.0\n\n!!Description\n~ToDoアイテムを一括生成します。\n*[~ToDo生成]ボタンを表示する\n*[~ToDo生成]ボタンを押すと、本文に書かれた各行をタイトルとする~ToDoアイテムを生成する\n*本文の各行から生成アイテムへのリンクを付加し、チェックボックスをつける\n*処理実行後、[~ToDo生成]ボタンは削除される\n\n(用途)\n#プロジェクトの本文に書いたアクションリストから~ToDo記事を生成する\n#テキスト形式の~ToDoリストから、項目のインポートを容易にする\n※注\n 同名の記事が既にある場合は生成しない\n 空行、マクロ等は無視する\n\n!!Usage\n{{{<<todo>>}}}\n\n***/\n//{{{\nconfig.macros.todo = {};\n\nconfig.macros.todo.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var m = config.macros.todo;\n\n var title = "";\n if (tiddler instanceof Tiddler)\n title = tiddler.title;\n\n btn = createTiddlyButton(place, m.label, m.prompt, m.onClick);\n btn.setAttribute("tiddler", title);\n}\n\nconfig.macros.todo.onClick = function()\n{\n var m = config.macros.todo;\n\n if (!confirm(m.alert))\n return false;\n\n var title = this.getAttribute("tiddler");\n if (title == "") {\n return false;\n }\n\n var text = store.getTiddlerText(title);\n while (text.match(/<<[^>]*>>/) != null)\n text = text.replace(/<<[^>]*>>/, "");\n while (text.match(/\s/%[^%]*%\s//) != null)\n text = text.replace(/\s/%[^%]*%\s//, "");\n while (text.match(/%[%\s$] ?/) != null)\n text = text.replace(/%[%\s$] ?/, "");\n while (text.match(/\s[\s[|\s]\s]/) != null)\n text = text.replace(/\s[\s[|\s]\s]/, "");\n\n list = text.split("\sn");\n var cnt = 0;\n for (var i = 0; i < list.length; i++) {\n var s = list[i];\n var indent = "";\n if (s.match(/^((\ss| )+)/))\n indent = RegExp.$1;\n s = s.replace(/^(\ss| )+/,"");\n s = s.replace(/(\ss| )+$/,"");\n if (s == "")\n continue;\n list[i] = indent + "%% [[" + s + "]]";\n cnt += m.createTiddler(s);\n }\n\n var tiddler = store.createTiddler(title);\n tiddler.set(title, list.join("\sn"));\n\n refreshDisplay();\n story.refreshTiddler(title, DEFAULT_VIEW_TEMPLATE, true);\n\n alert(m.message.replace(/%0/, String(cnt)));\n return false;\n}\n\nconfig.macros.todo.createTiddler = function(title)\n{\n if (store.tiddlerExists(title))\n return 0;\n\n var tiddler = store.createTiddler(title);\n var now = new Date();\n var text = "";\n if (config.browser.isIE)\n text += config.macros.gtdNewTiddler.defaultIeText;\n tiddler.set(title, text, config.options.txtUserName, now, \n ["todo", "INBOX"], now);\n\n return 1;\n}\n\n//}}}\n
//{{{\n\nmerge(config.macros.gtdTagChooser, {\n text: "ステータス変更",\n tooltip: "ステータスを変更して別のリストに格納します",\n tagTooltip: "ステータスを'%0'に変更します"\n});\n\nmerge(config.macros.gtdPopupCalendar, {\n text: "カレンダー",\n tooltip: "実行日を設定します"\n});\n\nmerge(config.macros.gtdCalendar, {\n headerFormat: "YYYY 0MM",\n listDateFormat: "0DD日",\n listMonthDateFormat: "MMM0DD日",\n days: ['日', '月', '火', '水', '木', '金', '土'],\n newItemLabel: "新規アイテム",\n newItemPrompt: "ToDoを新規作成します"\n});\n\nmerge(config.macros.gtdTicklerFile, {\n newItemLabel: "新規ToDo",\n newItemPrompt: "ToDoを新規作成します"\n});\n\nmerge(config.macros.gtdNewTiddler, {\n newItemLabel: "新規ToDo",\n newItemPrompt: "ToDoを新規作成します",\n newActionLabel: "次の行動リスト追加",\n newActionPrompt: "「次の行動リスト」を新規作成します",\n inputActionPrompt: "次の行動リスト名を入力して下さい"\n});\n\nmerge(config.macros.gtdItemList, {\n cntFormat: "全%0件",\n dateFormat: "0MM月0DD日"\n});\n\nmerge(config.macros.gtdDeleteItems, {\n txtDelete: "「%0」から%1日たったアイテムを削除しました(%2件)",\n txtDeleteAll: "「%0」からすべてのアイテムを削除しました(%2件)",\n txtConfirmDelete: "「%0」から%1日たったアイテムを削除します",\n txtConfirmDeleteAll: "「%0」からすべてのアイテムを削除します",\n txtResult: "%0件のアイテムをを削除しました",\n txtExecute: "実行",\n txtExecuteTooltip: "削除実行"\n});\n\nmerge(config.macros.todo, {\n label: "ToDo生成",\n prompt: "各行をタイトルとするToDoアイテムを生成します",\n alert: "ToDoアイテムを生成しますか?",\n message: "%0件のToDoアイテムを生成しました"\n});\n\nmerge(config.macros.saveMyEmpty, {\n tag: "GTD",\n filename: "gtdempty.html",\n label: "テンプレート保存",\n prompt: "GTDテンプレートファイルを保存する",\n message: "GTDテンプレートファイルを保存しました"\n});\n\n//}}}\n
0101 元日\n20060102 振替休日\n20060109 成人の日\n20070108 成人の日\n0211 建国記念の日\n20070212 振替休日\n0321 春分の日\n20060429 みどりの日\n20070429 昭和の日\n20070430 振替休日\n0503 憲法記念日\n20060504 振替休日\n20070504 みどりの日\n0505 こどもの日\n20060717 海の日\n20070716 海の日\n20060918 敬老の日\n20070917 敬老の日\n0923 秋分の日\n20070924 振替休日\n20071008 体育の日\n20061009 体育の日\n1103 文化の日\n1123 勤労感謝の日\n1223 天皇誕生日\n20071224 振替休日\n
<<gtdItemList>>\n\n\n\n\n
<<gtdmenu chkMenuMain GtdMenuMain メインメニュー メインメニュー>><<gtdmenu chkMenuInbox GtdMenuInbox 新着リスト 新着リスト>><<gtdmenu chkMenuSchedule GtdMenuSchedule スケジュール スケジュール>><<gtdmenu chkMenuNextAction GtdMenuNextAction 次の行動リスト 次の行動リスト>><<gtdmenu chkMenuOtherList GtdMenuOtherList その他リスト その他リスト>><<gtdmenu chkMenuTool GtdMenuTool メンテナンス メンテナンス>><<gtdmenu chkMenuHelp GtdMenuHelp ヘルプ ヘルプ>>\n!!!~TiddlyWiki
「新着リスト」メニューから[[未決]]を開きます。ここには「自分が適任で2分以内には完了しない単一のアクション」がリストになっているはずです。これらの各項目に対して特定の日に行うべきなのか、実行できる状況になったときに行うべきなのか検討します。\n\n''特定の日に行う''\n 各記事の上部にある「カレンダー」ボタンをクリックして実行する日を選択します。\n 実行時刻も決まっている場合、タイトルを「09:00 社内打ち合わせ」のように変更します。\n\n''実行できる状況になったときに行う''\n 各記事の上部にある「ステータス変更」ボタンをクリックして、「コンピュータで」、「外出時に」等の「次の行動リスト」の項目を選択します。\n\nまた、「その他リスト」メニューの[[プロジェクト]]には複数アクションからなる項目があります。これらについて、ブレイクダウンされた各アクションを~ToDoとして「新着リスト」メニューの<<gtdNewTiddler ToDo>>から登録します。\n\n\n^^前:[[Processing - 処理]] 次:[[Reviewing - レビュー]]^^
<div class='header' macro='gradient vert #18f #06b'>\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='sidebar'>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\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>
「新着リスト」メニューから[[INBOX]]を開いて、項目があれば順に分類していきます。ポイントとしては、この項目に対するアクションは何か?という観点で判断することと、時間のかかる項目は今すぐに実行せずに分類だけ行うことです。\n\n!操作手順\n*[[INBOX]]から、1件選択します。(本システムでは一番下の項目から選択した方が操作がスムーズです)\n*開いた記事内の右上に「ステータス変更」と「カレンダー」ボタンがあり、それらをクリックするとステータスや実行日が変更できます。\n*以下の基準でステータスを振り分けていきます\n**よく考えたら不要のもの → 「ごみ箱」\n**実行すべきアクションが特にないもの → 「資料」\n**当面アクションを起こさないもの → 「いつか/もしかしたら」\n**複数のアクションからなるもの → 「プロジェクト」\n**2分以内に終わらせることが可能なもの → すぐに実行する。実行後「ごみ箱」へ\n**他人が適任のアクション → 電話やメールで他人に依頼する。依頼後「連絡待ち」へ\n**実行日がすでに明確なもの → カレンダーで実行日設定\n**実行日は未定だが、近いうちに自分でやるもの → 「未決」\n*これを[[INBOX]]が空になるまで繰り返します\n\n^^前:[[Collection - 収集]] 次:[[Organizing - 整理]]^^
/***\n\n!~ReplaceTag Macro - タグ名一括置換マクロ\n\n使用方法\n#新規Tiddlerに、このTiddlerの内容をペースト\n#systemConfigタグをつけて保存してからリロード\n#以下の置換設定フォームに、検索文字列、置換文字列を入力してExecuteボタンを押す\n----\n<<replaceTag>>\n----\n注.\n*オートセーブを有効にしていても、一括置換実行後の変更内容は''自動保存されません''。安全のためにそのような仕様にしています。置換が想定どおりに行われていることを十分確認の上、save changesで明示的に保存してください。置換に失敗していたら、リロードすることで置換前の状態に戻ります。\n*検索は完全一致で行います。「Wiki」で検索しても「~TiddlyWiki」タグはマッチしません。正規表現//regex//を指定した場合も''^''//regex//''$''のように先頭記号と終端記号を付加してから検索を行います。部分一致で検索すると予期せぬ置換をしてしまう可能性が高いため、このような仕様にしています。\n*正規表現では、置換後文字列に$1、$2、$3 ...が使用できます。\n  例\n   検索文字列: {{{NG([0-9][0-9])}}}\n   置換文字列: {{{OK$1}}}\n     の場合、以下のように置換される\n   置換前タグ: {{{NG01 NG02 NG03}}}\n   置換後タグ: {{{OK01 OK02 OK03}}}\n***/\n\n//{{{\nconfig.macros.replaceTag = {};\n\nconfig.macros.replaceTag.handler = function(place,macroName,params)\n{\n var input;\n\n createTiddlyText(place, "Search: ");\n var input = document.createElement("input");\n input.setAttribute("param","src");\n input.size = 20;\n place.appendChild(input);\n createTiddlyElement(place, "br");\n\n createTiddlyText(place, "Replace: ");\n input = document.createElement("input");\n input.setAttribute("param","dst");\n input.size = 20;\n place.appendChild(input);\n createTiddlyElement(place, "br");\n\n createTiddlyText(place, "Regular Expression: ");\n input = document.createElement("input");\n input.setAttribute("type","checkbox");\n input.setAttribute("param","regex");\n place.appendChild(input);\n createTiddlyElement(place, "br");\n createTiddlyElement(place, "br");\n\n btn = createTiddlyButton(place, "Execute", "start replace tag strings", this.onClick);\n\n}\n\nconfig.macros.replaceTag.onClick = function()\n{\n var srcStr = "";\n var dstStr = "";\n var isRegex = false;\n\n var children = this.parentNode.getElementsByTagName("input")\n for (var t=0; t<children.length; t++) {\n var type = children[t].getAttribute("param");\n if (type == "src")\n srcStr = children[t].value;\n else if (type == "dst")\n dstStr = children[t].value;\n else if (type == "regex")\n if (children[t].checked)\n isRegex = true;\n }\n\n if ((srcStr != "") && (dstStr != "")) {\n var cnt;\n if (isRegex)\n cnt = config.macros.replaceTag.executeReplaceRegex(srcStr, dstStr);\n else\n cnt = config.macros.replaceTag.executeReplace(srcStr, dstStr);\n alert(String(cnt) + " tiddlers replaced. Save changes if you need.");\n }\n return false;\n}\n\nconfig.macros.replaceTag.executeReplace = function(srcStr, dstStr)\n{\n var cnt = 0;\n store.forEachTiddler(function(title,tiddler) {\n var tiddlerTags = tiddler.tags ? tiddler.tags : [];\n if ((p = tiddlerTags.find(srcStr)) != null) {\n tiddlerTags.splice(p, 1, dstStr);\n tiddler.set(null, null, null, null, tiddlerTags);\n cnt++;\n }\n });\n return cnt;\n}\n\nconfig.macros.replaceTag.executeReplaceRegex = function(srcRegex, dstStr)\n{\n var re = new RegExp("^" + srcRegex + "$");\n var cnt = 0;\n store.forEachTiddler(function(title,tiddler) {\n for(var t=0; t<tiddler.tags.length; t++) {\n if(tiddler.tags[t].match(re)) {\n tiddler.tags[t] = tiddler.tags[t].replace(re, dstStr);\n tiddler.set(null, null, null, null, tiddler.tags);\n cnt++;\n }\n }\n });\n return cnt;\n}\n//}}}\n
週に1回程度、時間をとってリストを見直します。これまでのプロセスを厳密に行っているつもりでも、数日たつとリストと現実の状況に微妙な差が出てきます。そのため、このレビュープロセスでリストを最新の状態にすることは非常に重要です。\n\n[[INBOX]]、[[未決]]\n まだ記入していない「気になること」はないか?\n 未処理のまま放置されている項目はないか?\n\n[[カレンダー]]\n 今日までの作業でやり残しているものはないか?\n 日程が変更になった項目はないか?\n\n[[次の行動リスト一覧]]\n 更新もれや、作業もれはないか?\n 状況が変わって、作業不要になった項目はないか?\n\n[[プロジェクト]]\n 状況が変わって、次の行動リストやカレンダーに記入できるようになった項目はないか?\n 優先度が下がって[[いつか/もしかしたら]]にステータス変更できる項目はないか?\n\n[[いつか/もしかしたら]]\n 状況が変わって、次の行動リストやカレンダーに記入できるようになった項目はないか?\n\n\n^^前:[[Organizing - 整理]] 次:[[Doing - 実行]]^^
<<slider chkSliderOptionsPanel OptionsPanel '設定 »' 'TiddlyWikiの設定を変更する'>>
version <<gtdVersion>>
%$GTD Style Wiki
http://www.geocities.jp/wikistyle/gtd/
/*{{{*/\n/* 2ペイン化レイアウト調整 */\n#mainMenu {\n position: relative;\n left: 0;\n width: 14.8em;\n text-align: left;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.0em;\n}\n\n#sidebar {\n position: absolute;\n left: 1em;\n width: 16em;\n font-size: .9em;\n}\n\n#displayArea {\n margin: 1em 1em 3em 17em;\n}\n/*}}}*/\n\n/*{{{*/\n/* 見出し */\nh1 {\n max-width: 60%;\n padding-top: 0.3em;\n color: #fff;\n background: #07a;\n}\n\nh2,h3,h4,h5 {\n margin: 0.5em 0em 0.3em 0em;\n padding-top: 0.2em;\n color: #000;\n background: #fff;\n border-left: 8px solid #07a;\n border-bottom: 1px solid #07a;\n max-width: 15em;\n font-weight: normal;\n}\n\n/* ヘッダ部の大きさ */\n.headerForeground {\n padding: 1.0em 0em 0.7em 1em;\n}\n\n/* ヘッダ部(影)の大きさ */\n.headerShadow {\n padding: 1.0em 0em 0.7em 1em;\n left: 1px;\n top: 1px;\n}\n\n/* ヘッダ部の色 */\n.header {\n background: #08c;\n border-bottom: solid #fe4;\n border-bottom-width: 2px;\n}\n\n/* ヘッダ部タイトルの文字サイズ */\n.siteTitle {\n font-size: 1.7em;\n}\n\n/* ヘッダ部サブタイトルの文字サイズ */\n.siteSubtitle {\n font-size: 1.0em;\n}\n\n/* ページ全体の背景色 */\nbody {\n background: #fff;\n}\n/*}}}*/\n\n/*{{{*/\n\n/* ボタンの枠線 */\n.button {\n border: 0px;\n}\n\n/* 記事タイトルの色 */\n.title {\n color: #fff;\n background: #08c;\n width: 15em;\n padding: 0.2em 0em 0em 0.5em;\n}\n\n/* 記事の署名、日付の色 */\n.subtitle {\n font-size: 0.9em;\n}\n\n/* 記事本文エリアの色 */\n.tiddlerbody {\n border: 1px solid #048;\n padding: 6px;\n}\n\n\n/* 表タイトルカラムの色 */\n.viewer th {\n background: #699;\n}\n\n/* ソース表示エリアの色 */\n.viewer pre {\n border: 1px solid #66a;\n background: #eef;\n}\n\n/*}}}*/\n
<<timeline modified 30>>
<<gtdTicklerFile 7 3 null null '0DD(DDD)'>>
<<gtdTicklerFile 1 1 null null '0DD(DDD)'>>
TiddlyWikiはひとつのHTMLファイルだけで作られたローカルWikiです。\n\nWikiエンジンは~JavaScriptで書かれておりHTMLファイルに埋め込まれています。また、プラグイン機能を持っていて、~JavaScriptを記述した記事により自由に拡張できるようになっています。GTDStyleWikiでは、このプラグイン機能によりGTD用の機能を追加しています。\n\n書式: [[技術資料:TiddlyWiki書式一覧]]\n公式サイト: http://www.tiddlywiki.com/
初回の収集プロセス時など多くの~ToDoを入力することがありますが、その場合ひとつひとつ「新規~ToDo」から入力するのはけっこう大変です。以下のように一括生成機能を利用すると便利です。\n\n例.\n''1.~ToDoリストの作成''\nタイトル:(任意)\nタグ:なし\n本文:\n{{{\n<<todo>>\n 洗面所に棚を取り付ける\n 夏期休暇の旅行計画を立てる\n Ruby on Railsについて調べる\n 冷蔵庫のヨーグルトがいよいよ危ない状態に\n     :\n}}}\nここで{{{<<todo>>}}}と書いた箇所は@@[~ToDo生成]@@ボタンになります。\n\n''2.~ToDoアイテムの生成''\n上記の@@[~ToDo生成]@@ボタンを押すと、各行をタイトルとした~ToDoアイテムが生成されます。(空行は無視されます)\n\n''3.~ToDoリストの削除''\n各~ToDoアイテムが正しく生成できたら、1.で作成したリストは不要なので削除します。\n\n※todoマクロは[[プロジェクトの細分化|Tips:プロジェクトの細分化操作]]でも使用するためチェックボックスやリンクが自動的に付加されますが、ここではリンク等は使いません。\n
プロジェクトを細分化する場合、ブレイクダウンされたアクションと親プロジェクトの関連を維持するために以下のようにするのがお勧めです。子アイテムの作成には~ToDoアイテム一括生成マクロtodoが便利です。\n\n例.\n''1.親プロジェクト~ToDo設定''\nタイトル:歓迎会開催\nタグ:todo、プロジェクト\n本文:\n{{{\n<<todo>>\n 歓迎会日程候補検討\n 歓迎会参加者確認\n 歓迎会日程決定、店予約\n 歓迎会開催通知メール送信\n}}}\nここで{{{<<todo>>}}}と書いた箇所は@@[~ToDo生成]@@ボタンになります。\n\n''2.子アクション~ToDoの生成''\n上記の@@[~ToDo生成]@@ボタンを押すと、以下のタイトルの~ToDoアイテムが生成されます。\n 歓迎会日程候補検討\n 歓迎会参加者確認\n 歓迎会日程決定、店予約\n 歓迎会開催通知メール送信\n\nまた、親のプロジェクト~ToDoの本文から、子のアクション~ToDoへのリンクが自動的に張られます。TiddlyWikiにはリンク元参照機能があるため、「リンク元」ボタンで子から親への関連もたどれます。\nさらに各項目の先頭には、GTDStyleWikiの[[チェックボックス|機能説明:チェックボックス]]が付加されます。子~ToDoが完了したらチェックするようにすると分かりやすいと思います。
「次の行動リスト」の名前を変更したい場合、そのリストに~ToDoがない場合は、そのままリスト記事のタイトルを変更するだけです。\n\nリストに~ToDoがある場合は、リスト記事のタイトルを変更するとともに、[[タグ置換]]を使って変更前のタグ名を変更後のタグ名に一括置換します。
~ToDoをリスト表示するとき、バブルマップやタグクラウドのように大きさで重要度を表現できるようにしてみました。\n\n~ToDo項目に「+1」、「-2」等のタグ名(-3~+3)をつけると、その数値に応じてフォントが拡大/縮小されます。優先度というよりも、自分の心を占める割合(完了時にすっきりする度合)で大きさを決めると、嫌な~ToDoも気分的に着手しやすくなると思います。\n
TiddlyWikiでは、主にブラウザのセキュリティ機能により、そのままでは保存機能が使用できないケースがあります。以下は~WindowsXPにて確認しました。\n\n''IEの場合''\nGTDStyleWikiファイルのプロパティを見てブロックされているようであれば「ブロック解除」をする。\nまた、「ツール」→「インターネットオプション」→「詳細設定」→「セキュリティ」→「マイ コンピュータのファイルでのアクティブ コンテンツの実行を許可する」にチェックする。\nバックアップフォルダを指定している場合、そのフォルダが存在しているか確認する。\n\n''Firefoxの場合''\n日本語パス名を使用する場合、Zephyr氏の~TWSaveSJPathPatchを入れる。\nhttp://flow.dip.jp/mt/archives/u/twmemo.html#TWSaveSJPathPatch\n\n''Operaの場合''\nC:\sDocuments and Settings\sユーザ名\s.java.policyファイルに書き込み許可の設定を記述する。\n\n以下のサイトにさらに詳しく書きました。\n http://www.geocities.jp/wikistyle/#FAQ
日付だけでなく、実行時刻も決まっている~ToDoは以下の例のようにタイトルに時刻をつけて登録します。[[カレンダー]]には、その日の~ToDoがタイトルでソートされて表示されるので、時刻を先頭につけておくと時刻順に並ぶことになります。\n\n例.\n 「09:30 部内会議」、「20:00 駅前の和民で飲み会」\n
TiddlyWiki\n version <<version>>\n © 2006 [[osmosoft|http://www.osmosoft.com]]\n http://www.tiddlywiki.com/\n ~~[[RSS|http://www.tiddlywiki.com/index.xml]]~~\n\nGTDStyleWiki plugin\n version <<gtdVersion>>\n © 2006 [[style|http://blogstyle.seesaa.net/]]\n http://www.geocities.jp/wikistyle/gtd/\n ~~[[RSS|http://www.geocities.jp/wikistyle/gtd/index.xml]]~~\n
<div class='title' macro='view title'></div>\n<div class='tiddlerbody'>\n<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[YYYY年0MM月0DD日]]'></span> (作成日 <span macro='view created date [[YYYY年0MM月0DD日]]'></span>) <span macro='gtdTagChooser'></span> <span macro='gtdPopupCalendar'></span></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>\n</div>
/*{{{*/\n.ticklerTab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.ticklerTabContents {\n padding: 0.5em;\n background: #def;\n border: 1px solid #79d;\n}\n\n.ticklerSel {\n color: #fff;\n background: #36a;\n border-left: 1px solid #58c;\n border-top: 1px solid #58c;\n border-right: 1px solid #148;\n}\n\n.ticklerUnsel {\n color: #358;\n background: #9bf;\n border-left: 1px solid #bdf;\n border-top: 1px solid #bdf;\n border-right: 1px solid #79d;\n}\n\n.ticklerExist {\n font-weight: bold;\n}\n\n.ticklerEmpty {\n font-weight: normal;\n}\n\n\n/* ---------------- */\n.popupCalendarButton {\n color: #eee;\n}\n\n.popupCalendarText {\n color: #04b;\n}\n\n.popupCalendarToday {\n background: #06d;\n}\n\n.popupCalendarCurrent {\n font-weight: bold;\n}\n\n/* ---------------- */\n.calendar {\n line-height: 1.4em;\n font-size: 1.0em;\n}\n\n.calendar .button {\n color: inherit;\n background: transparent;\n border: none;\n}\n\n.calendar table {\n border-spacing: 10px;\n border-collapse: collapse;\n border: 1px solid #79d;\n margin: 1px;\n}\n\n.calendar tr {\n text-align: center;\n border: 0px;\n}\n\n.calendar td {\n border: 0px;\n margin:0px 0px 0px 0px;\n padding:0px 0px 0px 0px;\n}\n\n.calendarHeader {\n color: #111;\n background: #dff;\n}\n\n.calendarDays {\n width: 2em;\n color: #fff;\n background: #4ad;\n}\n\n.calendarThisMonth .button {\n color: #111;\n}\n\n.calendarOtherMonth .button {\n color: #aaa;\n}\n\n.calendarWeekday {\n background: transparent;\n}\n\n.calendarHoliday {\n background: #dff;\n}\n\n.calendarToday {\n background: #ffa;\n}\n\n.calendarExist {\n font-weight: bold;\n}\n\n.calendarEmpty {\n font-weight: normal;\n}\n\n.calendarOpen {\n text-decoration: underline;\n}\n\n.calendarClose {\n text-decoration: none;\n}\n\n.calendarContents {\n font-size: 1.1em;\n overflow: hidden;\n padding: 0.5em;\n color: #014;\n background: #eee;\n border: 1px solid #ccc;\n margin: 0.5em 0.5em 0em 0em;\n}\n\n#mainMenu .calendarContents {\n font-size: 0.9em;\n}\n\n/* ---------------- */\n/*}}}*/\n\n
<<gtdItemList>>\n\n\n\n\n
<<gtdListWithDate>>\n\n\n\n\n
\n<<gtdDeleteItems ごみ箱 30>>\n\nTips:\n [[ごみ箱自動整理]]@@(←クリックするとごみ箱が強制的に\n 整理されるので注意!)@@をDefaultTiddlersに登録しておくと、\n 起動時にごみ箱をチェックして30日以上たったアイテムを\n 自動的に削除します。
<<gtdDeleteItems ごみ箱 30 true>>\n\n\n\n
ソフトウェアの新バージョンが出たときは以下の手順でアップグレードしてください。ただし事前に必ずバックアップを取った上で行うようにお願いします。\n\n!~TiddlyWikiのアップグレード\n*ブラウザで現行バージョンを開く\n*開いている状態で、現行バージョンのHTMLファイルに新バージョンを上書きする\n*メインメニューから「保存」を選択\n*リロードすると新バージョンになります\n\n!~GTDTiddlyWikiのアップグレード\nGTDStyleWikiをアップグレードする場合は、以下の2種類の方法があります。通常は、旧ファイルに新機能をインポートする方が楽だと思います。\n\n!!旧ファイルに新機能をインポート\n#GTDStyleWikiの新バージョンと旧バージョンを同じフォルダに置く\n#新バージョンをブラウザで開く\n#<<saveChanges>>ボタンを押してファイルを一旦保存する<<br>>(これにより使用ブラウザに見合ったエンコード形式に変換されます)\n#旧バージョンをブラウザで開く\n#旧バージョンの下のフォームに、新バージョンファイル名とインポート対象のタグ名(GTD)を入力。Executeボタンを押してインポート実行(成功した場合80件前後の記事がインポートされます)\n※StyleSheet等を自分でカスタマイズしていて上書きしたくない場合は、2.の時点で新バージョンの\n 記事からGTDタグを外しておいてください\n\n!!新ファイルに~ToDo項目をインポート\n#GTDStyleWikiの新バージョンと旧バージョンを同じフォルダに置く\n#新バージョンをブラウザで開く\n#新バージョンの下のフォームに、旧バージョンファイル名とインポート対象のタグ名(todo)を入力。Executeボタンを押してインポート実行\n#同様に、フォームに「Import」、「~UserList」、「資料」、(必要であれば「ごみ箱」)等のタグ名を入力しインポートを実行する\n※上記以外にSiteTitle、SiteSubtitle、StyleSheet等インポートしたい記事があれば、\n 旧バージョンの対象記事にあらかじめ「Import」等のタグ名をつけておいてインポートしてください\n\n<<gtdImportItems>>\n\n※インポートする記事と同名の記事が既にある場合、上書きされてしまうので十分注意してください。\n\n※IEやOperaの場合、インポート時にIO処理のCPU負荷が非常に高くなります。\n 件数にもよりますが処理完了まで数十秒~数分間待ってみてください。\n
<<gtdCalendar 0 open 1.0em>>\n
<<gtdItemList>>\n\n\n\n\n
|タイトル設定|SiteTitle|\n|サブタイトル設定|SiteSubtitle|\n|初期表示設定|DefaultTiddlers|\n\n\n
<<replaceTag>>
<<gtdItemList>>\n\n\n\n\n
!!チュートリアル\n*[[環境の準備]]\n*[[Collection - 収集]]\n*[[Processing - 処理]]\n*[[Organizing - 整理]]\n*[[Reviewing - レビュー]]\n*[[Doing - 実行]]\n!!機能説明\n*[[メインメニュー|機能説明:メインメニュー]]\n*[[ステータスタグ|機能説明:ステータスタグ]]\n*[[リスト|機能説明:リスト]]\n*[[カレンダー|機能説明:カレンダー]]\n*[[TicklerFile|機能説明:TicklerFile]]\n*[[チェックボックス|機能説明:チェックボックス]]\n!!Tips\n*[[ToDoの一括生成|Tips:ToDoの一括生成]]\n*[[日時指定のToDo項目|Tips:日時指定のToDo項目]]\n*[[プロジェクトの細分化操作|Tips:プロジェクトの細分化操作]]\n*[[リスト名を変更したい|Tips:リスト名を変更したい]]\n*[[保存関係のトラブルシューティング|Tips:保存関係のトラブルシューティング]]\n*[[リスト項目の強調表示|Tips:リスト項目の強調表示]]\n!!技術資料\n*[[TiddlyWiki書式一覧|技術資料:TiddlyWiki書式一覧]]\n*[[記事一覧|技術資料:記事一覧]]\n*[[履歴|技術資料:履歴]]\n
売れそうな本はブックオフへ持っていく\n\n\n\n\n
\n\n\n\n
<<gtdItemList>>\n\n\n\n\n
見積もり条件について意識あわせできているか?\n現状の確度は?\n\n\n\n\n\n\n\n
<<gtdItemList>>\n\n\n\n\n
\n\n\n\n\n\n
\n!一般\n|!項目|!記法|\n|リンク|{{{WikiWord}}}<<br>>{{{file:|http:|https:|mailto:|ftp:}}}<<br>>{{{[[リンク先]]}}}<<br>>{{{[[表示文字列|リンク先]]}}}|\n|リンク抑止|{{{~WikiWord}}}|\n|リスト|{{{*、**、***}}}|\n|番号付リスト|{{{#、##、###}}}|\n|見出し|{{{!見出し1、!!見出し2、!!!見出し3}}}|\n|水平線|{{{----}}}|\n|等幅表示|&#123;&#123;&#123; ~ &#125;&#125;&#125; ソース表示用<<br>>/*&#123;&#123;&#123;*/ ~ /*&#125;&#125;&#125;*/ CSS用<<br>>&#47;&#47;&#123;&#123;&#123; ~ &#47;&#47;&#125;&#125;&#125; プラグイン用<<br>><!---&#123;&#123;&#123;---> ~ <!---&#125;&#125;&#125;---> テンプレート用|\n|引用|{{{>、>>、>>>}}}<<br>>{{{<<< ~ <<<}}}|\n|画像|{{{[img[title|filename]]}}}<<br>>{{{[img[filename]]}}}<<br>>{{{[img[title|filename][link]]}}}<<br>>{{{[img[filename][link]]}}}<<br>>{{{[<img[filename]]}}} 左フローティング<<br>>{{{[>img[filename]]}}} 右フローティング|\n|埋め込みHTML|{{{<html> ~ </html>}}}|\n|コメント|{{{/% ~ %/}}}|\n|プラグイン用コメント|{{{/*** ~ ***/}}}|\n|テンプレート用コメント|{{{<!--- ~ --->}}}|\n\n!文字装飾\n|!項目|!記法|\n|''ボールド'' |{{{''ボールド''}}} |\n|==取り消し線== |{{{==取り消し線==}}} |\n|__アンダーライン__ |{{{__アンダーライン__}}} (_を2個ずつ両側に書く) |\n|//イタリック// |{{{//イタリック//}}} |\n|上付き文字: 2^^3^^=8 |{{{2^^3^^=8}}} |\n|下付き文字: a~~ij~~ = -a~~ji~~ |{{{a~~ij~~ = -a~~ji~~}}} |\n|@@ハイライト@@ |{{{@@ハイライト@@}}} |\n|CSS直接指定: @@color:green;文字緑@@|{{{@@color:green;文字緑@@}}}|\n\n!テーブル\n|!項目|!記法|\n|通常項目||項目||\n|タイトル||!タイトル||\n|右結合||>||\n|上結合||~||\n|位置指定|右、左、または両方にスペース|\n|キャプション||c|\n|ヘッダ||h|\n|フッタ||f|\n|スタイル指定||k|\n|背景色||bgcolor(#88FFFF):項目||\n
!履歴\nv1.1.0 2006.08.02\n 月末にカレンダーの次月/前月ボタンの挙動がおかしくなるバグを修正\n カレンダーの開始曜日を変更可能にした。GtdCalendarMacro参照\n サイドメニューがメインフレームに重ならないようスタイルシートを調整\n ~ToDo一括生成マクロGtdTodoMacro追加\n [[リスト項目の強調表示|Tips:リスト項目の強調表示]]機能追加\n\nv1.0.1 2006.07.14\n ダウンロードすると広告が挿入されるので配布形態をzipにした。機能的な変更は無し。\n\nv1.0.0 2006.07.02\n 最初のバージョン\n
\n!初期状態の記事一覧\n''マクロ''\n|!記事|!説明|!タグ|\n|[[GtdMacro]]|バージョン表示、画面更新等|GTD ~GTDsys systemConfig|\n|[[GtdCalendarMacro]]|カレンダー表示|GTD ~GTDsys systemConfig|\n|[[GtdCheckMacro]]|チェックボックス|GTD ~GTDsys systemConfig|\n|[[GtdDeleteItemsMacro]]|古い記事の削除|GTD ~GTDsys systemConfig|\n|[[GtdImportItemsMacro]]|記事のインポート|GTD ~GTDsys systemConfig|\n|[[GtdListMacro]]|記事タイトル一覧表示|GTD ~GTDsys systemConfig|\n|[[GtdNewTiddlerMacro]]|GTD用記事新規作成|GTD ~GTDsys systemConfig|\n|[[GtdPopupCalendarMacro]]|日付タグ設定用カレンダー|GTD ~GTDsys systemConfig|\n|[[GtdTagChooserMacro]]|ステータス設定用メニュー|GTD ~GTDsys systemConfig|\n|[[GtdTicklerFileMacro]]|TicklerFile表示|GTD ~GTDsys systemConfig|\n|[[GtdMenuMacro]]|折りたたみ可能メニュー|GTD ~GTDsys systemConfig|\n|[[GtdTodoMacro]]|~ToDoアイテム一括生成|GTD ~GTDsys systemConfig|\n|[[GtdxTranslation]]|GTD日本語メッセージ|GTD ~GTDsys systemConfig|\n|[[Holiday]]|祝日設定用記事|GTD ~GTDsys|\n|[[GtdSaveEmptyMacro]]|テンプレートファイル作成|GTD ~GTDsys systemConfig|\n|[[日本語メッセージ]]|TiddlyWikiメッセージ翻訳|GTD ~GTDsys systemConfig|\n|[[ReplaceTagMacro]]|タグ置換|GTD ~GTDsys systemConfig|\n\n''メニュー等''\n|!記事|!説明|!タグ|\n|[[GtdMenuMain]]|メインメニュー本体|GTD ~GTDsys|\n|[[GtdMenuInbox]]|新着リストメニュー本体|GTD ~GTDsys|\n|[[GtdMenuSchedule]]|スケジュールメニュー本体|GTD ~GTDsys|\n|[[GtdMenuNextAction]]|次の行動リストメニュー本体|GTD ~GTDsys|\n|[[GtdMenuOtherList]]|その他リストメニュー本体|GTD ~GTDsys|\n|[[GtdMenuTool]]|メンテナンスメニュー本体|GTD ~GTDsys|\n|[[GtdMenuHelp]]|ヘルプメニュー本体|GTD ~GTDsys|\n|[[gtdStyleSheet]]|GTD用スタイルシート|GTD ~GTDsys|\n|[[Version]]|バージョン表示|GTD ~GTDsys|\n\n''システム記事カスタマイズ''\n|!記事|!説明|!タグ|\n|[[SiteTitle]]|タイトル表示||\n|[[SiteSubtitle]]|バージョン表示||\n|[[DefaultTiddlers]]|起動時画面設定||\n|[[MainMenu]]|GTDメニュー追加|GTD ~GTDsys|\n|[[PageTemplate]]|2ペイン化|GTD ~GTDsys|\n|[[ViewTemplate]]|ステータス、カレンダーボタン追加|GTD ~GTDsys|\n|[[SideBarOptions]]|メニュー項目移動|GTD ~GTDsys|\n|[[StyleSheet]]|2ペイン化(GTD関係はgtdStyleSheet)|GTD ~GTDsys|\n|[[TabTimeline]]|最大表示数制限|GTD ~GTDsys|\n\n''スケジュール''\n|!記事|!タグ|\n|[[カレンダー]]|GTD ~GTDsys Schedule|\n|[[TicklerFile]]|GTD ~GTDsys Schedule|\n|[[TicklerFile(一列表示)]]|Sample|\n\n''リスト''\n|!記事|!タグ|\n|[[INBOX]]|GTD ~GTDsys List Open|\n|[[未決]]|GTD ~GTDsys List Open|\n|[[コンピュータで]]|GTD ~GTDsys List ~NextAction|\n|[[協議事項]]|GTD ~GTDsys List ~NextAction|\n|[[外出時に]]|GTD ~GTDsys List ~NextAction|\n|[[職場で]]|GTD ~GTDsys List ~NextAction|\n|[[自宅で]]|GTD ~GTDsys List ~NextAction|\n|[[読む/検討する]]|GTD ~GTDsys List ~NextAction|\n|[[電話]]|GTD ~GTDsys List ~NextAction|\n|[[いつか/もしかしたら]]|GTD ~GTDsys List Open|\n|[[連絡待ち]]|GTD ~GTDsys List Open|\n|[[プロジェクト]]|GTD ~GTDsys List Open|\n|[[次の行動リスト一覧]]|GTD ~GTDsys List|\n|[[資料]]|GTD ~GTDsys List Close|\n|[[ごみ箱]]|GTD ~GTDsys List Close|\n\n''ツール''\n|!記事|!タグ|\n|[[システム設定]]|GTD ~GTDsys|\n|[[ごみ箱整理]]|GTD ~GTDsys|\n|[[ごみ箱自動整理]]|GTD ~GTDsys|\n|[[タグ置換]]|GTD ~GTDsys|\n|[[アップグレード]]|GTD ~GTDsys|\n\n''ドキュメント''\n|!記事|!タグ|\n|[[GTDStyleWiki]]|GTD ~GTDdoc|\n|[[TiddlyWiki]]|GTD ~GTDdoc|\n|[[マニュアル目次]]|GTD ~GTDdoc|\n|[[環境の準備]]|GTD ~GTDdoc|\n|[[Collection - 収集]]|GTD ~GTDdoc|\n|[[Processing - 処理]]|GTD ~GTDdoc|\n|[[Organizing - 整理]]|GTD ~GTDdoc|\n|[[Reviewing - レビュー]]|GTD ~GTDdoc|\n|[[Doing - 実行]]|GTD ~GTDdoc|\n|[[機能説明:TicklerFile]]|GTD ~GTDdoc|\n|[[機能説明:カレンダー]]|GTD ~GTDdoc|\n|[[機能説明:ステータスタグ]]|GTD ~GTDdoc|\n|[[機能説明:チェックボックス]]|GTD ~GTDdoc|\n|[[機能説明:メインメニュー]]|GTD ~GTDdoc|\n|[[機能説明:リスト]]|GTD ~GTDdoc|\n|[[Tips:ToDoの一括生成]]|GTD ~GTDdoc|\n|[[Tips:プロジェクトの細分化操作]]|GTD ~GTDdoc|\n|[[Tips:リスト名を変更したい]]|GTD ~GTDdoc|\n|[[Tips:保存関係のトラブルシューティング]]|GTD ~GTDdoc|\n|[[Tips:日時指定のToDo項目]]|GTD ~GTDdoc|\n|[[Tips:リスト項目の強調表示]]|GTD ~GTDdoc|\n|[[技術資料:TiddlyWiki書式一覧]]|GTD ~GTDdoc|\n|[[技術資料:記事一覧]]|GTD ~GTDdoc|\n|[[技術資料:履歴]]|GTD ~GTDdoc|\n\n''サンプル~ToDo''\n|!記事|!タグ|\n|各種|Sample|\n\n!タグ一覧\n|!意味|!タグ|\n|テンプレート|GTD|\n|システム|~GTDsys|\n|ドキュメント|~GTDdoc|\n|サンプル~ToDo|Sample|\n|スケジュール|Schedule|\n|リスト|List|\n|次の行動リスト|~NextAction|\n|ユーザ定義リスト|~UserList|\n|オープン状態リスト|Open|\n|クローズ状態リスト|Close|\n|オープン状態の~ToDo|todo|\n|状況待ち~ToDo|//次の行動リスト名//|\n|時間待ち~ToDo|//YYYYMMDD//|\n|資料|資料|\n|ごみ箱|ごみ箱|
\n\n\n\n\n\n
//{{{\n//\n// 日本語メッセージ for Ver 2.0.6\n//\n// http://hsj.jp/works/archives/001471.html\n// を元にVer2.0.6対応させたものです\n//\n\n// Shadow Tiddlers\nconfig.shadowTiddlers.GettingStarted = "TiddlyWikiを開始するためには、まず以下のシステム設定用記事を編集してください:\sn*SiteTitleとSiteSubtitle: このページのタイトル、サブタイトル。また、セーブ後はブラウザのタイトルバーにも表示されます。\sn*MainMenu: 通常左側に表示されるメインメニュー\sn*DefaultTiddlers: このTiddlyWikiを開いたときに最初に表示する記事。\sn署名として使用するあなたの名前を入力してください:<<option txtUserName>>";\nconfig.shadowTiddlers.SideBarOptions = "<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'YYYY年0MM月0DD日'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel '設定 »' 'TiddlyWikiの設定を変更する'>>";\nconfig.shadowTiddlers.OptionsPanel = "これらの設定はご使用のブラウザ内に保存されます。\sn\sn署名として使用するあなたの名前をWikiWord形式(例 JoeBloggs)で入力してください。\sn\sn<<option txtUserName>>\sn<<option chkSaveBackups>> バックアップ取得\sn<<option chkAutoSave>> 自動保存\sn<<option chkRegExpSearch>> 正規表現による検索\sn<<option chkCaseSensitiveSearch>> 英文字大小区別検索\sn<<option chkAnimate>> アニメーション\sn\sn[[詳細な設定|AdvancedOptions]]";\nconfig.shadowTiddlers.AdvancedOptions = "<<option chkGenerateAnRssFeed>> RSSファイル生成\sn<<option chkOpenInNewWindow>> 新しいウィンドウでリンクを開く\sn<<option chkSaveEmptyTemplate>> 空のテンプレートファイル(empty.html)を保存する\sn<<option chkToggleLinks>> 既に開いているTiddlerをクリックした時に閉じる\sn^^(Ctrl+クリック等のキーアサインを変更します)^^\sn<<option chkHttpReadOnly>> HTTP経由でのアクセス時に編集機能を隠す\sn<<option chkForceMinorUpdate>> マイナーアップデートモードをデフォルトとする\sn^^(Shift+'決定'やCtrl-Shift-Enterのキーアサインを変更します)^^\sn<<option chkConfirmDelete>> 削除前に確認する\sn記事編集エディットボックスの最大行数: <<option txtMaxEditRows>>\snバックアップ保存用フォルダ: <<option txtBackupFolder>>\sn";\nconfig.shadowTiddlers.SideBarTabs = "<<tabs txtMainTab '更新順' '更新順に表示する' TabTimeline '全て' '全ての記事一覧' TabAll 'タグ' 'タグ一覧' TabTags 'その他' 'その他の記事' TabMore>>";\nconfig.shadowTiddlers.TabMore = "<<tabs txtMoreTab '未定義' 'リンクされているが存在しない記事一覧' TabMoreMissing '未参照' 'どこからもリンクされていない記事一覧' TabMoreOrphans 'システム' 'システム設定用記事一覧' TabMoreShadowed>>";\nconfig.shadowTiddlers.ViewTemplate = "<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></div>\sn<div class='title' macro='view title'></div>\sn<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[YYYY年0MM月0DD日]]'></span> (作成日 <span macro='view created date [[YYYY年0MM月0DD日]]'></span>)</div>\sn<div class='tagging' macro='tagging'></div>\sn<div class='tagged' macro='tags'></div>\sn<div class='viewer' macro='view text wikified'></div>\sn<div class='tagClear'></div>";\n\n// メッセージ\nconfig.messages.customConfigError = "システム設定にてエラー発生。'%1' - %0";\nconfig.messages.savedSnapshotError = "保存に失敗しました。詳細は http://www.tiddlywiki.com/#DownloadSoftware をご覧ください。";\nconfig.messages.subtitleUnknown = "(不明)";\nconfig.messages.undefinedTiddlerToolTip = "'%0'という記事はありません。";\nconfig.messages.shadowedTiddlerToolTip = "'%0'という記事はありませんが、システム用に予約されています";\nconfig.messages.externalLinkTooltip = "(外部リンク) %0";\nconfig.messages.noTags = "タグの設定されていない記事";\nconfig.messages.notFileUrlError = "変更を保存したい場合、このTiddlyWikiをファイルに保存(ダウンロード)する必要があります。";\nconfig.messages.cantSaveError = "セーブに失敗しました。このブラウザが対応していないか(Firefox推奨)、ファイルのパス名に使用できない文字が含まれています。";\nconfig.messages.invalidFileError = "元のファイル '%0' は妥当なTiddlyWikiのファイルではありません。";\nconfig.messages.backupSaved = "バックアップファイルを保存しました。";\nconfig.messages.backupFailed = "バックアップファイルの保存に失敗しました。";\nconfig.messages.rssSaved = "RSSファイルを保存しました。";\nconfig.messages.rssFailed = "RSSファイルの保存に失敗しました。";\nconfig.messages.emptySaved = "空のテンプレートファイルを保存しました。";\nconfig.messages.emptyFailed = "空のテンプレートファイルの保存に失敗しました。";\nconfig.messages.mainSaved = "TiddlyWikiファイルを保存しました。";\nconfig.messages.mainFailed = "TiddlyWikiファイルの保存に失敗しました。修正内容は保存されていません。";\nconfig.messages.macroError = "マクロ実行時エラー: <<%0>>";\nconfig.messages.macroErrorDetails = "マクロ実行中にエラーが発生しました。<<%0>>:\sn%1";\nconfig.messages.overwriteWarning = "'%0'という記事はすでに存在します。OKを選択すると上書きします。";\nconfig.messages.unsavedChangesWarning = "警告! 保存されていない変更が存在します。\sn\snOKを選択:保存\snCancelを選択:編集内容を破棄";\nconfig.messages.messageClose.text = "閉じる";\nconfig.messages.messageClose.tooltip = "このメッセージエリアを閉じます";\nconfig.messages.dates.months = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月","12月"];\nconfig.messages.dates.days = ["日", "月", "火", "水", "木", "金", "土"];\nconfig.messages.confirmExit = "変更が保存されていません。このまま終了すると変更内容が失われます。";\n\n// Tiddler表示時ツールバーなど\nconfig.views.wikified.tag.labelNoTags = "タグはありません";\nconfig.views.wikified.tag.labelTags = "タグ: ";\nconfig.views.wikified.tag.openTag = "タグ '%0' を開く";\nconfig.views.wikified.tag.tooltip = "タグ'%0'の関連記事を表示します";\nconfig.views.wikified.tag.openAllText = "全て開く";\nconfig.views.wikified.tag.openAllTooltip = "この記事をすべて開く";\nconfig.views.wikified.tag.popupNone = "タグ'%0'はこれ以外の記事には設定されていません";\nconfig.views.wikified.defaultText = "'%0'は存在しません。ダブルクリックで作成できます。";\nconfig.views.wikified.defaultModifire = "(未定義)";\nconfig.views.wikified.shadowModifire = "(システム)";\nconfig.views.editor.tagPrompt = "下段にはスペース区切りでタグ名を入力します。スペースを含むタグ名は[[括弧で 囲みます]]。また、既存タグ名からの選択も可能です。»";\nconfig.views.editor.tagChooser.text = "タグ";\nconfig.views.editor.tagChooser.tooltip = "既存のタグから追加するものを選択してください";\nconfig.views.editor.tagChooser.popupNone = "タグが設定されていません";\nconfig.views.editor.tagChooser.tagTooltip = "タグ'%0'を追加します";\nconfig.views.editor.defaultText = "'%0'の内容を入力してください。";\n\n// Each has a 'handler' member that is inserted later\nconfig.macros.search.label = "検索";\nconfig.macros.search.prompt = "このTiddlyWiki内を検索します。";\nconfig.macros.search.successMsg = "%0 件見つかりました。- %1";\nconfig.macros.search.failureMsg = "%0 に該当する記事はありません。";\nconfig.macros.tagging.label = "タグ";\nconfig.macros.tagging.labelNotTag = "タグなし";\nconfig.macros.tagging.tooltip = "タグ'%0'のついた記事一覧";\nconfig.macros.timeline.dateFormat = "YYYY年MM月DD日";\nconfig.macros.allTags.tooltip = "タグ'%0'のついた記事を全て表示します";\nconfig.macros.allTags.noTags = "タグが設定されていません";\n\nconfig.macros.list.all.prompt = "アルファベット順の記事一覧";\nconfig.macros.list.missing.prompt = "存在しない記事一覧";\nconfig.macros.list.orphans.prompt = "リンクされていない記事一覧";\nconfig.macros.list.shadowed.prompt= "システム設定用記事一覧";\n\nconfig.macros.closeAll.label = "全て閉じる";\nconfig.macros.closeAll.prompt = "編集中以外の全ての記事を閉じます";\nconfig.macros.permaview.label = "ビューのURL";\nconfig.macros.permaview.prompt = "現在の表示状態を示すURLをアドレス欄に表示します";\nconfig.macros.saveChanges.label = "保存";\nconfig.macros.saveChanges.prompt = "すべての記事を保存します";\nconfig.macros.newTiddler.label = "新規作成";\nconfig.macros.newTiddler.prompt = "新しい記事を作成します";\nconfig.macros.newTiddler.title = "新規記事";\nconfig.macros.newJournal.label = "新規日記";\nconfig.macros.newJournal.prompt = "新しい記事を現在の日付をタイトルとして作成します";\n\n\n// Tiddler編集時ツールバーなど\nconfig.commands.closeTiddler.text = "閉じる";\nconfig.commands.closeTiddler.tooltip = "この記事を閉じます";\nconfig.commands.closeOthers.text = "他を閉じる";\nconfig.commands.closeOthers.tooltip = "この記事以外を全て閉じます";\nconfig.commands.editTiddler.text = "編集";\nconfig.commands.editTiddler.tooltip = "この記事を編集しま。";\nconfig.commands.editTiddler.readOnlyText = "表示";\nconfig.commands.editTiddler.readOnlyTooltip = "この記事のソースを表示します";\nconfig.commands.saveTiddler.text = "決定";\nconfig.commands.saveTiddler.tooltip = "編集内容を確定します";\nconfig.commands.saveTiddler.readOnlyText = "終了";\nconfig.commands.saveTiddler.readOnlyTooltip = "通常表示に戻ります";\nconfig.commands.cancelTiddler.text = "取消";\nconfig.commands.cancelTiddler.tooltip = "編集内容を破棄します";\nconfig.commands.cancelTiddler.warning = "編集内容を破棄しますか? '%0'?";\nconfig.commands.cancelTiddler.readOnlyText = "終了";\nconfig.commands.cancelTiddler.readOnlyTooltip = "通常表示に戻ります";\nconfig.commands.deleteTiddler.text = "削除";\nconfig.commands.deleteTiddler.tooltip = "この記事を削除します";\nconfig.commands.deleteTiddler.warning = "本当にこの記事を削除しますか '%0'?";\nconfig.commands.permalink.text = "記事のURL";\nconfig.commands.permalink.tooltip = "この記事を示すURLをアドレス欄に表示します";\nconfig.commands.references.text = "リンク元";\nconfig.commands.references.tooltip = "この記事にリンクしている記事一覧を表示します";\nconfig.commands.references.popupNone = "リンクされていません";\nconfig.commands.jump.text = "ジャンプ";\nconfig.commands.jump.tooltip = "表示中の他の記事へ移動します";\n\n//}}}
<<gtdItemList>>\n\n\n\n\n
%$[[物置にスペースを作る]]\n%%[[当面読まない本を物置に移動する]]\n%%[[不要な本、書類を廃棄]]\n\n\n
\n\n\n\n\n\n
GTDの原書にある~TicklerFileをソフトウェア的に再現したものです。(翻訳本では「備忘録」となっています)\n\n~TicklerFileは本来、指定日になったら見る必要のある資料を入れる物理的な書類入れですが、GTDStyleWikiではカレンダーと同じように資料とスケジュールを区別なく管理します。\n*日付を選択すると、その日になったら実行する項目を表示します\n*月名を選択すると、その月に実行する項目すべてを表示します\n*今日の日付を選択した場合は、当日分の項目とともに、クローズしていない過去分についても表示します\n*一覧表示された項目のうち、当日分は日付が''ボールド''で、過去分は日付が@@color:red;赤い文字@@で表示されます\nマクロの引数設定により、原書にあるような[[一列表示|TicklerFile(一列表示)]]もできますが、長くなりすぎて使いにくいと思うので[[通常タイプ|TicklerFile]]の使用をお勧めします。\n
日付指定の~ToDoを管理するのがカレンダーです。[[カレンダー]]と[[43フォルダー]]はビューが異なるだけで、同じ内容を表示します。メインメニューにあるカレンダーもまったく同じものなので、自分の使いやすいビューを使うようにしてください。\n*日付を選択すると、その日になったら実行する項目を表示します\n*月名を選択すると、その月に実行する項目すべてを表示します\n*今日の日付を選択した場合は、当日分の項目とともに、クローズしていない過去分についても表示します\n*一覧表示された項目のうち、当日分は日付が''ボールド''で、過去分は日付が@@color:red;赤い文字@@で表示されます\n\n項目は項目名でソートされて表示されます。この機能を利用して、時刻指定の~ToDoの項目名を 「15:00 打ち合わせ」のようにすると、表示するときに時刻順にソートされるので便利です。\n\n[[Holiday]]\n 祝日設定用記事です。YYYYMMDD形式またはMMDD形式の日付と祝日名を\n 記述することでカレンダーに反映されます。祝日名は省略可能です。\n ※43フォルダーには祝日表示機能はありません
~ToDo項目を新規作成すると、各記事にステータス設定ボタンとカレンダーボタンが表示され、以下に示すステータスタグを選択的に設定できるようになります。GTDStyleWikiでは、これらのステータスを随時更新していくことで~ToDoの進捗を管理します。\n\n!!オープン状態を示すタグ\n''todo''\n GTDの「open loop(終わっていない仕事)」状態にあることを示すタグです。\n このタグがつけられた~ToDo項目はクローズするまで管理されます。\n\n!!オープン状態の詳細を示すタグ\nオープン状態にある~ToDo項目は「todo」タグとともに、その詳細を示す以下のタグのいずれかがつけられます。\n\n''INBOX''\n 新着の~ToDoで未処理のものを示します。\n\n''未決''\n 「処理」プロセスで他人に委託したり、2分以内に終わらせることができないことが\n 判明した項目を示します。\n\n''いつか/もしかしたら''\n 当面着手しない項目を示します。\n\n''プロジェクト''\n 複数の~ToDoからなる項目を示します。\n\n''連絡待ち''\n 他人に委託している項目を示します。\n\n''//次の行動リスト名//''\n 「外出時に」や「職場で」など、実行できる状況になったら実行する項目を示します。\n\n''//YYYYMMDD形式の日付//''\n 指定日になったら実行する項目を示します。特に実行することはなくても指定日に\n なったら参照すべき資料にもこのタグをつけます。\n\n!!クローズ状態を示すタグ\n以下のタグはアイテムがクローズ状態であることをを示します。これらのタグをステータス設定ボタンから設定するとtodoタグは自動的に外されます。\n\n''資料''\n 今は使用しないが、いつか必要になる情報を示します。\n\n''ごみ箱''\n 実行不要の項目、あるいは完了した項目を示します。\n\n
ユーザーが自由に利用できるチェックボックスを用意しました。チェック状態はcookieではなく記事に直接記録されるため別のマシン上でファイルを開いても状態が維持されます。\n\n[[Tips:プロジェクトの細分化操作]]で説明しているように、プロジェクト~ToDoに、ブレイクダウンしたサブ~ToDoを書いてチェックボックスをつけておくと便利です。\n\n書式:\n{{{\n%%未完アクション名\n}}}\n%%未完アクション名\n\n{{{\n%$完了済アクション名\n}}}\n%$完了済アクション名\n
メインメニューには以下の項目が並んでいます。見出し部分をクリックすると内容が折りたたまれます。\n\n!!メインメニュー\nTiddlyWiki本来の機能で使用頻度が多いボタンです。\n''検索''\n 記事を検索します。\n''全て閉じる''\n 全ての記事を閉じます。\n''新規作成''\n 記事を作成します。__ToDoの新規作成はここではなく、後述の「新規~ToDo」\n から行います。__\n''保存''\n 変更を保存します。ステータスを変更したときなどはオートセーブ機能を\n 有効にしていても自動保存されないため、このボタンでセーブします。\n\n!!新着リスト\nGTDの「抽出」「処理」プロセスで使用するボタンとリストです。ここのリストは常に空になるように随時更新してください。\n''新規~ToDo''\n GTDの~ToDoはこのボタンで作成します。ここで作成したアイテムは\n INBOXに入ります。\n''INBOX''\n 作成されて何も処理されていない~ToDoはこのリストに入ります。\n ボタンをクリックすると一覧表示されます。\n''未決''\n GTDの「処理」プロセス実施後、具体的な行動が未定の~ToDoは\n このリストに入ります。\n\n!!スケジュール\n実行日が決まっている~ToDoはここで管理します。カレンダーとTicklerFileは表示形式が異なるだけで同じアイテムが表示されます。自分の好きな方を使用してください。\n''カレンダー''\n カレンダー形式で~ToDoを表示します。\n''~TicklerFile''\n 備忘録(~TicklerFile)形式で~ToDoを表示します。\n\n!!次の行動リスト\n状況に応じて実行する~ToDoはここで管理します。初期状態では以下のような典型的な状況の行動リストが用意されています。「次の行動リスト一覧」をクリックすると全てのリストの内容が一覧表示されます。メンテナンスメニューの「次の行動リスト追加」でリストを追加することもできます。次の行動リストの記事を削除するとメニューからも削除されます。\n''次の行動リスト一覧''\n 以下のリストの内容を全てマージして表示します。\n''コンピュータで''\n''協議事項''\n''外出時に''\n''職場で''\n''自宅で''\n''読む/検討する''\n''電話''\n\n!!その他リスト\n上記以外のリストはここに表示されます。\n''いつか/もしかしたら''\n''プロジェクト''\n''連絡待ち''\n''ごみ箱''\n''資料''\n\n!!メンテナンス\n設定や保守関係の機能はここにあります。\n''システム設定''\n HTMLのタイトルや初期表示画面等を設定します\n''テンプレート保存''\n ~ToDoがまったく含まれないファイルを生成します。\n (GTDタグがついた記事のみ保存されます)\n''ごみ箱整理''\n ごみ箱の内容を手動で削除します。\n 自動で削除する方法についても説明があります。 \n''次の行動リスト追加''\n 「次の行動リスト」にカテゴリーを追加します\n''タグ置換''\n タグ名の一斉変更を行います(上級者用機能)\n''アップグレード''\n ~TiddlyWikiや~GTDStyleWikiの新バージョンが出たときに\n アップグレードする手順の説明があります。\n\n!!ヘルプ\nドキュメント記事へのリンクがあります。\n''~GTDStyleWiki''\n ~GTDStyleWikiの説明です。\n''~TiddlyWiki''\n ~TiddlyWikiの簡単な説明です。\n''マニュアル''\n ~GTDStyleWikiの操作マニュアルです。\n''書式''\n ~TiddlyWikiのWiki記法一覧を表示します。\n''バージョン''\n バージョン番号を表示します。公式サイトへのリンクもここにあります。\n\n!!~TiddlyWiki\nTiddlyWiki本来のメニューで、上にないものはこれ以降に表示されます。
GTDStyleWikiのリストは、GTDの一般的なリストとまったく同じ概念です。各[[ステータスタグ|機能説明:ステータスタグ]]がつけられた~ToDoは自動的にそれぞれのリストに振り分けられ、リストを開くと一覧表示されます。\n\n[[INBOX]]\n 新着の~ToDoで未処理のものを一覧表示します。\n\n[[未決]]\n 「処理」プロセスで他人に委託したり、2分以内に終わらせることができないことが\n 判明した項目を一覧表示します。\n\n[[いつか/もしかしたら]]\n 当面着手しない項目を一覧表示します。\n\n[[プロジェクト]]\n 複数の~ToDoからなる項目を一覧表示します。\n\n[[連絡待ち]]\n 他人に委託している項目を一覧表示します。\n\n''//次の行動リスト//''\n 「外出時に」や「職場で」など、実行できる状況になったら実行する項目を一覧表示します。\n 次の行動リストは、メンテナンスメニューから「次の行動リスト追加」を選択することで新しい\n リストを追加することができます。\n\n[[次の行動リスト一覧]]\n 全行動リストとそのリストの内容を一覧表示します。\n\n[[カレンダー]]\n[[43フォルダー]]\n カレンダーと43フォルダーはビューが異なるだけで、同じ内容を\n 表示します。\n ・日付を選択すると、その日になったら実行する項目を表示します\n ・月名を選択すると、その月に実行する項目すべてを表示します\n ・今日の日付を選択した場合は、当日分の項目とともに、クローズ\n  していない過去分についても表示します\n\n[[資料]]\n 今は使用しないが、いつか必要になる情報を一覧表示します。\n\n[[ごみ箱]]\n 実行不要の項目、あるいは完了した項目を最終更新日でソートして表示します。\n\n
<<gtdNextActionList>>
\n\n\n\n\n\n
\n!1.ダウンロード\n 以下のファイルをダウンロードして解凍します。\n [[gtdstyle.zip|http://www.geocities.jp/wikistyle/gtd/gtdstyle.zip]]\n\n!2.セキュリティ関連設定\n保存機能を有効にするために設定が必要な場合があります。以下の記事を参考に設定してください。\n [[Tips:保存関係のトラブルシューティング]]\n\n!3.空ファイルの作成\nこのファイルには、初期状態ではサンプルの~ToDoが含まれています。以下の操作でサンプルを含まない空ファイル(gtdempty.html)を生成します。\n 「メンテナンス」メニュー → 「テンプレート保存」\n\n生成したファイルを、自分の分かりやすい名前にリネームします。\n\n!4.ブラウザで開く\n上記3.で作成したファイルをブラウザで開きます。カスタマイズが不要であれば、これでもう使い始めることができます。とりあえず使ってみて、カスタマイズを後からすることも可能です。\n\n※保存機能が使用できない場合は、[[Tips:保存関係のトラブルシューティング]]を参照してください。\n\n!5.タイトル等のカスタマイズ\n「メンテナンス」メニュー → 「システム設定」を選択して記事を開きます。記事にあるリンク先の内容を変更するとHTMLのタイトル等を変更することができます。\n\n!6.「次の行動リスト」のカスタマイズ\n「次の行動リスト」メニューには、あらかじめGTDの標準的な状況別カテゴリーが用意されています。これらを変更する場合は以下のように行います。\n|リストの追加|「メンテナンス」メニュー → 「次の行動リスト追加」|\n|リストの削除|「次の行動リストメニュー → 削除対象を選択 <<br>>→ 記事をダブルクリックで編集モードにする → 「削除」選択|\n|リスト名変更|「次の行動リストメニュー → 変更対象を選択 <<br>>→ 記事をダブルクリックで編集モードにする → タイトルを変更|\n\n\n^^次:[[Collection - 収集]]^^
<<gtdItemList>>\n\n\n\n\n
<<gtdItemList>>\n\n\n\n\n
<<gtdItemList>>\n\n\n\n\n
<<gtdClosedItemList>>\n\n\n\n\n
<<gtdItemList 連絡待ち>>\n\n\n\n\n
60W型電球型蛍光灯
<<gtdItemList>>\n\n\n\n\n
\n\n\n\n\n\n