<?php if (!defined('PmWiki')) exit(); /** Simple GTD Task List Manager for PmWiki Written by (c) Petko Yotov 2008-2015 This text is written for PmWiki; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. See pmwiki.php for full details and lack of warranty. Copyright 2008-2015 Petko Yotov http://5ko.fr */ $RecipeInfo['GTD-TLM']['Version'] = '20150405'; Markup_e('gtd-tlm', '<split', '/\\(:gtd-tlm\\s*(.*?):\\)/i', "FmtGTD(\$pagename,\$m[1])"); SDV($GTDheader, "<script type='text/javascript'><!-- AutoAppendStr = \"$[Autoappend/sticky is set to]\"; //--></script><script type='text/javascript' src='\$FarmPubDirUrl/gtd-tlm.js'></script>"); SDV($GTDfooter, "<script type='text/javascript'><!-- populate_itemlist(\"{\$GTDstartup}\"); document.GTDactionform.itemlist.oncontextmenu=new Function('return false'); document.GTDactionform.taglist.oncontextmenu=new Function('return false'); //--></script>"); SDV($GTDform, <<<EOF <form name='GTDactionform' onsubmit='return go(this.command.value);return false;' method="post" action="\$PageUrl"> <table border="0" cellpadding='0' cellspacing='2'> <tr> <td valign='top' align='right'>$[Command]:</td> <td valign='top'>#GTDcmdline#</td> </tr> <tr> <td valign='top' align='right'><select name="taglist" size="#GTDlines#" onmouseup="click_list(this, btn(event));" ondblclick="click_list(this, 'DOUBLE');" class="gtd taglist"> <option value="">$[Tags]</option> </select></td> <td valign='top'><select name="itemlist" size="#GTDlines#" onmouseup="click_list(this, btn(event));" class="gtd itemlist"> <option value="">$[Tasks]</option> </select></td> </tr></table> $[Display]: <input #GTDshow_top# id="c0" type="checkbox" name='show_top' onclick="go('?');"/> <label for="c0"><b>!</b> $[Top]</label> <input #GTDshow_next# id="c1" type="checkbox" name='show_next' onclick="go('?');"/> <label for="c1">$[Next]</label> <input #GTDshow_waitingfor# id="c2" type="checkbox" name='show_waitingfor' onclick="go('?');"/> <label class='waitingfor' for="c2"><b>;</b> $[Waiting for]</label> <input #GTDshow_done# id="c3" type="checkbox" name='show_done' onclick="go('?');"/> <label class='done' for="c3"><b>.</b> $[Done]</label> <input #GTDshow_maybe# id="c4" type="checkbox" name='show_maybe' onclick="go('?');"/> <label class='maybe' for="c4"><b>?</b> $[Maybe]</label> <input #GTDshow_ref# id="c5" type="checkbox" name='show_ref' onclick="go('?');"/> <label class='ref' for="c5"><b>:</b> $[Reference]</label> </form> <form name="GTDdataform" method="post" action="\$PageUrl"> #GTDsubmitbutton# <input type="hidden" name="basetime-tlm" value="#GTDnow#" /> <input type="hidden" name="datapage" value="#GTDdatapage#" /> <input type="hidden" name="rawdata" value="#GTDrawdata#" /> <input type="hidden" name="action" value="editGTDdata" /> </form> EOF ); SDV($GTDQuickRef, " (:table class=frame cellspacing=6 style='font-size:small;':) (:cell valign=top:) '''Commands :'''\\\\ %kbd%'''+''' stuff @tag%% add a line\\\\ %kbd%'''*''' stuff%% autoappend \"stuff\" in next added lines\\\\ %kbd%'''=''' stuff @tag%% modify selected line\\\\ %kbd%'''?''' search -excl%% search for (filter) lines\\\\ '''tags :''' @context \$project @tag\\\\ '''line prefixes :''' %kbd%'''!''' high priority%% %kbd%'''.''' done%% \\\\ %kbd%'''?''' maybe%% %kbd%''';''' waitingfor%% %kbd%''':''' reference%% (:cell valign=top:) '''Task list :'''\\\\ right-click, shift+click : modify status\\\\ middle-click, ctrl+click : copy to command line\\\\ '''@Tag list :''' double-click : filter task list\\\\ right-click, shift+click : undo filter tasks\\\\ middle-click, ctrl+click : copy to command line\\\\ '''checks :''' filter tasks by status (:tableend:) "); SDV($GTDdefaultdata, "Add a task with \"+ stuff\" then press Enter. After some additions/changes, press \"Save changes\". Read the gtd-tlm cookbook manual \$pmwiki @online . Created contexts @work @home @anywhere @phone @computer ? Check Cookbook:GTD-TLM for updates \$pmwiki @online"); SDVA($HandleActions, array('editGTDdata'=>'HandleGTD')); SDVA($HandleAuth, array('editGTDdata' => 'edit')); function FmtGTD($pagename, $args) { global $FmtPV, $HTMLFooterFmt, $HTMLHeaderFmt, $GTDdefaultdata, $GTDform, $GTDheader, $GTDfooter, $GTDQuickRef, $Now, $GTD; static $TLMnum = 0; if($TLMnum>0) return; $TLMnum++; $opt = ParseArgs($args); $datapage = $GTD['datapage'] = MakePageName($pagename, IsEnabled($opt['datapage'], "$pagename-gtddata")); $dpage = RetrieveAuthPage($datapage,'read',1, READPAGE_CURRENT);//ask for pw if needed if(!$dpage) Abort("? No read permissions at $datapage."); if(!@$dpage['text'])$text = $GTDdefaultdata; else $text = preg_replace("/^\\s*\\[@\\s*(.*)\\s*@\\]\\s*$/s", '$1', $dpage['text']); $GTD['rawdata'] = htmlspecialchars($text); $GTD['now'] = $Now; foreach(array('top', 'waitingfor', 'next', 'done', 'maybe', 'ref') as $v) $GTD["show_$v"] = intval(IsEnabled($opt[$v], 1) ) ? 'checked="checked"' : ''; $GTD["submitbutton"] = intval(@$opt['readonly']) ? '' : FmtPageName('<input name="b" type="button" value="$[Save changes]" onclick="savechanges();"/>', $pagename); $GTD['lines'] = IsEnabled($opt['lines'], 10); $clines = intval(IsEnabled($opt['clines'], 2)) ; if($clines<1) $clines = 2; $cmdattr = "name='command' class='gtd cmdline' ondblclick=\"this.value=''\" onblur='CMDfocus=0;' onkeydown='javascript:return keyCapt(event, 1);'"; $GTD['cmdline'] = $clines == 1? "<input type='text' size='40' $cmdattr/>" :"<textarea rows='$clines' cols='40' $cmdattr></textarea>"; if(@$opt['startup']) $FmtPV['$GTDstartup'] = "\"{$opt['startup']}\""; $HTMLHeaderFmt['gtd'] = $GTDheader; $HTMLFooterFmt['gtd'] = FmtPageName($GTDfooter, $pagename); $out = PPRE('/#GTD(\w+)#/', '$GLOBALS["GTD"][$m[1]]', FmtPageName($GTDform, $pagename)); if(IsEnabled($opt['quickref'], 1)) return PRR(Keep($out)."\n$GTDQuickRef"); else return Keep($out); } function HandleGTD($pagename, $auth='edit') { $datapage = MakePageName($pagename, $_REQUEST['datapage']); $dpage = RetrieveAuthPage($datapage,$auth,1);#will ask for pw if needed $newpage = $dpage; $newpage['text'] = "[@\n". stripmagic($_REQUEST['rawdata'])."\n@]"; UpdatePage($datapage, $dpage, $newpage); Redirect($pagename); }