]> git.plutz.net Git - busy/blob - templates/Tasks.page
upgraded to fit new shcgi revision, slightly better input validation, switched to...
[busy] / templates / Tasks.page
1 #!/bin/zsh
2
3 show_search(){
4   if [ -n "$search" ]; then
5     echo "<h1>Tasks search results for: $search</h1>"
6     for each in $(grep -ile "$search" Tasks/<0000000000-9999999999>_<000-999>); do
7       id=$(sed -r 's:^.*/::;s:.task$::' <<<$each)
8       echo "<div class='search'><a href='./?p=Tasks&amp;i=$id'><h2>$(date -d @$(cut -d_ -f1 <<<"$id"))</h2></a>"
9       grep -C1 -ie "$search" "$each" |sed "s:$search:<b>&</b>:g;s:$:<br>:g"
10       echo '</div>'
11     done
12     echo '<hr>'
13   fi
14 }
15
16 show_task(){
17   datafile="Tasks/$info"
18   metafile="Tasks/$info.meta"
19   headline="$(sed -rn '/^headline=/{s:^[a-z]+=(.+)$:\1:p;q}' "$metafile")"
20   taskstatus="$(sed -rn '/^status=/{s:^[a-z]+=(.+)$:\1:p;q}' "$metafile")"
21   section="$(sed -rn '/^section=/{s:^[a-z]+=(.+)$:\1:p;q}' "$metafile")"
22   attendant="$(sed -rn '/^attendant=/{s:^[a-z]+=(.+)$:\1:p;q}' "$metafile")"
23   [ -z "$section" ] && section='(none)'
24   [ -z "$attendant" ] && attendant='(none)'
25   cat <<TasksEND
26     <div class="Task">
27       <div class="wikitext">
28       <h1>$headline</h1>
29       $(_wiki "$datafile")
30       </div>
31       <table><tr>
32       <td><b>Status</b><br>
33       $taskstatus</td>
34       <td><b>Section</b><br>
35       $section</td>
36       <td><b>Attendant</b><br>
37       $attendant</td>
38       </tr></table>
39     </div>
40 TasksEND
41 }
42
43 setup_task(){
44   cat <<TaskEnd
45   <form class="Task" style="height:20em;" method="post" action="?action=taskmeta" accept-charset="UTF-8">
46     <h1>$new</h1>
47     <input type="hidden" name="headline" value="$new">
48     <input type="hidden" name="status" value="new">
49     <div style="width:60%;left:3.5em;">
50       <b>Description:</b><br>
51       <textarea name="description" rows="11"></textarea>
52     </div><div style="width:30%;right:.5em;">
53       <b>Section:</b><br>
54       <select name="section" size="6" style="width:80%">
55       $(for each in $(egrep -hx 'section=.+' Tasks/<0000000000-9999999999>_<000-999>.meta |sort -u); do
56           echo "<option>$(sed 's:section=::' <<<"$each")</option>"
57         done)
58       </select><br>
59       <b>other section:</b><br>
60       <input type="text" name="section">
61       <input type="submit" name="submit" value="Robots click here" style="display:none;">
62       <input type="submit" name="submit" value="Create Task">
63       <input type="submit" name="submit" value="Robots click here" style="display:none;">
64     </div>
65   </form>
66 TaskEnd
67 }
68
69 list_tasks(){
70   stat -c '' Tasks/<0000000000-9999999999>_<000-999>.meta \
71   && for each in Tasks/<0000000000-9999999999>_<000-999>.meta(.om); do
72     info="$(basename "$each" |sed 's:.meta$::')"
73     headline="$(sed -rn '/^headline=/{s:^[a-z]+=(.+)$:\1:p;q}' "$each")"
74     taskstatus="$(sed -rn '/^status=/{s:^[a-z]+=(.+)$:\1:p;q}' "$each")"
75     section="$(sed -rn '/^section=/{s:^[a-z]+=(.+)$:\1:p;q}' "$each")"
76     attendant="$(sed -rn '/^attendant=/{s:^[a-z]+=(.+)$:\1:p;q}' "$each")"
77     [ -z "$section" ] && section='(none)'
78     [ -z "$attendant" ] && attendant='(none)'
79     cat <<TasksEND
80       <div class="Task">
81         <a href="./?p=Tasks&amp;i=${info}"><b>$headline</b></a><br>
82         <span><b>Status:</b> $taskstatus</span>
83         <span><b>Section:</b> $section</span>
84         <span><b>Attendant:</b> $attendant</span>
85       </div>
86 TasksEND
87   done
88 }
89
90 new_task(){
91   cat <<TasksEND
92       <a id='newTask_button' class='function' href='#' onclick='javascript:show_screen("newTask");hide_screen("newTask_button");'>New Task</a>
93       <div id="newTask" style="display: none;">
94         <form action="./" method="get" accept-charset="UTF-8">
95           <b>Headline:</b><br>
96           <input type="hidden" name="p" value="Tasks">
97           <textarea name="n" rows="2" style="width:99%;"></textarea><br>
98           <input type="submit" value="Submit">
99           <a class="function" href="#" onclick="javascript:hide_screen('newTask');show_screen('newTask_button');">Cancel</a>
100         </form>
101       </div>
102 TasksEND
103 }
104
105 cat <<TasksEND
106   <div id="LEFT">
107     <form method="GET" action="./" accept-charset="utf-8">
108       <input type="hidden" name="p" value="Tasks">
109       <input type="text" name="s" placeholder="Search"><br>
110       <input type="submit" value="Search Tasks">
111     </form>
112     <hr>
113     $(show_search)
114   </div><div id="MAIN">
115
116     $([ -n "$info" -a -r "Tasks/$info" -a -r "Tasks/$info.meta" ] && show_task)
117     $([ -z "$info" -a -n "$new" ] && setup_task)
118     $([ -z "$info" -a -z "$new" ] && list_tasks)
119  </div> <div id="RIGHT">
120     $($ACL_CREATETASK && [ -z "$new" ] && new_task)
121  </div>
122 TasksEND