d1bb75c9c29e974443dd3d7619e0651c2adfa0f0
[confetti] / templates / edit_course.sh
1 # Copyright 2014 Paul Hänsch
2 #
3 # This file is part of Confetti.
4
5 # Confetti is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9
10 # Confetti is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU Affero General Public License for more details.
14
15 # You should have received a copy of the GNU Affero General Public License
16 # along with Confetti.  If not, see <http://www.gnu.org/licenses/>. 
17
18 SUP_FIELDS=(SUMMARY COMMENT)
19 [ -z "$values[UID]" ] && values[UID]="$(uuidgenerator)"
20
21 dtstart="$values[DTSTART]"
22 [ -z "$dtstart" ] && dtstart=$(date +%Y%m%dT%H%M%S)
23
24 echo "$dtstart" |case "$dtstart" in
25   *Z)
26     sed -rn 's:^([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2})([0-9]{2})([0-9]{2})Z$:\1-\2-\3 \4\:\5\:\6 UTC:p'
27     ;;
28   TZID*)
29     sed -rn 's:^TZID=(.+)\:([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2})([0-9]{2})([0-9]{2})$:TZ="\1" \2-\3-\4 \5\:\6\:\7:p'
30     ;;
31   *)
32     sed -rn 's:^([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2})([0-9]{2})([0-9]{2})$:\1-\2-\3 \4\:\5\:\6:p'
33     ;;
34 esac |read dts_date
35
36 dts_year=$(date -d "$dts_date" +%Y)
37 dts_month=$(date -d "$dts_date" +%m)
38 dts_dom=$(date -d "$dts_date" +%d)
39 dts_dow=$(date -d "$dts_date" +%u)
40 dts_weekday=$(date -d "$dts_date" +%A)
41 dts_hour=$(date -d "$dts_date" +%H)
42 dts_min=$(date -d "$dts_date" +%M)
43 dts_sec=$(date -d "$dts_date" +%S)
44
45 rrule="$values[RRULE]"
46 rr_int="$(echo $rrule |sed -rn 's:^.*INTERVAL=([0-9]+)(;.*)?$:\1:p')"
47 rr_count="$(echo $rrule |sed -rn 's:^.*COUNT=([0-9]+)(;.*)?$:\1:p')"
48 rr_freq="$(echo $rrule |sed -rn 's:^.*FREQ=(YEARLY|MONTHLY|WEEKLY|DAILY)(;.*)?$:\1:p')"
49 rr_uyear="$(echo $rrule |sed -rn 's:^.*UNTIL=([0-9]{4})([0-9]{2})([0-9]{2})T[0-9]{6}Z(;.*)?$:\1:p')"
50 rr_umonth="$(echo $rrule |sed -rn 's:^.*UNTIL=([0-9]{4})([0-9]{2})([0-9]{2})T[0-9]{6}Z(;.*)?$:\2:p')"
51 rr_uday="$(echo $rrule |sed -rn 's:^.*UNTIL=([0-9]{4})([0-9]{2})([0-9]{2})T[0-9]{6}Z(;.*)?$:\3:p')"
52 if [ -n "$rr_count" ]; then
53   rr_limit=COUNT
54 elif [ -n "$rr_uyear" ]; then
55   rr_limit=UNTIL
56 else
57   rr_limit=ETERN
58 fi
59
60 echo '<div id="'${id}'" class="course">'
61 echo '<form action="?action=update_course" method="POST">'
62 echo '<input type="hidden" name="course" value="'${id}'"/>'
63 echo '  <div class="section basic">'
64 echo '    <h2>'$(l10n SUMMARY)'</h2>'
65 echo '    <input type="text" class="item SUMMARY" name="SUMMARY" value="'$values[SUMMARY]'" />'
66 echo '    <h3>'$(l10n COMMENT)'</h3>'
67 for n in COMMENT COMMENT{0..10}; do [ -n "$values[$n]" ] &&\
68   echo '    <textarea class="item COMMENT" name="COMMENT">'$values[$n]'</textarea>'
69 done
70 echo '  </div>'
71
72 echo '  <div class="section dtstart">'
73 echo '    <h3>'$(l10n DTSTART)'</h3>'
74 echo '    <select class="DTSYEAR" name="DTSYEAR" onchange="this.form.submit();">'
75 for y in {$(($dts_year - 50))..$(($dts_year + 50))}; do
76   echo '    <option value="'$y'" '$([ "$y" -eq "$dts_year" ] && echo 'selected="selected"')'>'$y'</option>'
77 done
78 echo '    </select>'
79 echo '    <select class="DTSMONTH" name="DTSMONTH" onchange="this.form.submit();">'
80 for m in {01..12}; do
81   echo '    <option value="'$m'" '$([ "$m" -eq "$dts_month" ] && echo 'selected="selected"')'>'$(date -d ${dts_year}-${m}-1 +%B)'</option>'
82 done
83 echo '    </select>'
84 echo '    <button class="DTS" type="submit" name="DTS" value="update">'$(l10n edit_dtscal)'</button>'
85 for wd in mon tue wed thu fri sat sun; do
86   echo -n '<span class="DTSCALHEAD">'$(date -d $wd +%a)'</span>'
87 done
88 fdom=$(date -d ${dts_year}-${dts_month}-1 +%u)
89 while [ "$fdom" -gt 1 ]; do
90   echo -n '<span class="DTSCAL"></span>'
91   fdom=$(($fdom - 1))
92 done
93 cnt=$(date -d ${dts_year}-${dts_month}-1 +%s)
94 while [ "$(date -d @$cnt +%m)" = "$dts_month" ]; do
95   dn=$(date -d @$cnt +%d)
96   echo -n '<input type="radio" class="DTSCAL" name="DTSDAY" value="'$dn'" id="DTSCAL_'$dn'" '$([ $dn = $dts_dom ] && echo checked)'><label for="DTSCAL_'$dn'" class="DTSCAL">'$dn'</label>'
97   cnt=$(($cnt + 86400))
98 done
99 echo '    <br />'
100 echo '    <span class="DTSTIME">'$(l10n time)':</span>'
101 echo '    <select class="DTSTIME" name="DTSHOUR">'
102 for h in {00..23}; do
103   echo '    <option value="'$h'" '$([ "$h" -eq "$dts_hour" ] && echo 'selected="selected"')'>'$h'</option>'
104 done
105 echo '    </select>:<select class="DTSTIME" name="DTSMINUTE">'
106 for m in 00 05 10 15 20 25 30 35 40 45 50 55; do
107   echo '    <option value="'$m'" '$([ "$m" -eq "$dts_min" ] && echo 'selected="selected"')'>'$m'</option>'
108 done
109 echo '    </select>'
110 echo '  </div>'
111
112 echo '  <div class="section recur">'
113 echo '    <h3>'$(l10n RRULE)'</h3>'
114 echo '    <span class="item">'
115 echo '    '$(l10n t_every)''
116 echo '    <select class="RRULE INTERVAL" name="RRULE_INTERVAL">'
117 for i in {1..365}; do
118   echo '    <option value="'$i'" '$([ "$i" = "$rr_int" ] && echo 'selected="selected"')'>'$i'</option>'
119 done
120 echo '    </select>'
121 echo '    <select class="RRULE FREQ" name="RRULE_FREQ">'
122 for f in DAILY WEEKLY MONTHLY YEARLY; do
123   echo '    <option value="'$f'" '$([ "$f" = "$rr_freq" ] && echo 'selected="selected"')'>'$(l10n $f)'</option>'
124 done
125 echo '    </select></span>'
126 echo '    <span class="item">'
127 echo '    <input type="radio" name="RRULE_LIMIT" value="ETERN" '$([ "$rr_limit" = ETERN ] && echo 'checked="checked"')'>'$(l10n t_eternal)'</input><br/>'
128 echo '    </span><span class="item">'
129 echo '    <input type="radio" name="RRULE_LIMIT" value="COUNT" '$([ "$rr_limit" = COUNT ] && echo 'checked="checked"')'></input>'
130 echo '    <select class="RRULE COUNT" name="RRULE_COUNT">'
131 for t in {1..365}; do
132   echo '    <option value="'$t'" '$([ "$t" = "$rr_count" ] && echo 'selected="selected"')'>'$t'</option>'
133 done
134 echo '    </select>'$(l10n t_times)'</span>'
135 echo '    <span class="item">'
136 echo '    <input type="radio" name="RRULE_LIMIT" value="UNTIL" '$([ "$rr_limit" = UNTIL ] && echo 'checked="checked"')'>'$(l10n t_until)'</input>'
137 echo '    <select class="RRULE UYEAR" name="RRULE_UYEAR">'
138 for uy in {${dts_year}..$(($dts_year + 50))}; do
139   echo '    <option value="'$uy'" '$([ "$uy" = "$rr_uyear" ] && echo 'selected="selected"')'>'$uy'</option>'
140 done
141 echo '    </select>'
142 echo '    <select class="RRULE UMONTH" name="RRULE_UMONTH">'
143 for um in {01..12}; do
144   echo '    <option value="'$um'" '$([ "$um" = "$rr_umonth" ] && echo 'selected="selected"')'>'$(date -d 2000-${um}-1 +%B)'</option>'
145 done
146 echo '    </select>'
147 echo '    <select class="RRULE UDAY" name="RRULE_UDAY">'
148 for ud in {01..31}; do
149   echo '    <option value="'$ud'" '$([ "$ud" = "$rr_uday" ] && echo 'selected="selected"')'>'$ud'</option>'
150 done
151 echo '    </select></span>'
152 echo '  </div>'
153
154 echo '  <div class="section select_attendance">'
155 echo '    <h3>'$(l10n course_attendance)'</h3>'
156 listcards |while read card; do
157   cfile="$_DATA/vcard/$card"
158   aname=$(sed -rn 's:^N(;[^"\:]+|;"[^"]+")*\:([^;]*)(\;[^;]*)(\;[^;]*)?(\;[^;]*)?(\;[^;]*)?$:\5 \3 \4 \2 \6:p' "$cfile" \
159           |sed -r 's:,: :;s:\;: :g;s: +: :g' \
160           |tr -d '\r'
161          )
162   selected=$(sed -rn "/^$id\t$card\$/{s;^.*\$;checked=\"checked\";p;q}" "${_DATA}/mappings/attendance")
163   echo '    <label><input type="checkbox" class="item" name="attendance" value="'$card'" '$selected'>'$aname'</label>'
164 done
165 echo '  </div>'
166
167 echo '  <div class="control">'
168 echo '    <select class="item" name="newfield">'
169 echo '      <option value="" disabled="disabled" selected="selected">'$(l10n edit_addfieldtext)'</option>'
170             for f in $SUP_FIELDS; do echo "<option value=\"$f\">$(l10n $f)</option>"; done
171 echo '    </select'
172 echo '    ><button class="item" type="submit" name="action" value="addfield">'$(l10n edit_addfield)'</button>'
173 echo '    <button class="item" type="submit" name="action" value="update">'$(l10n edit_update)'</button>'
174 echo '    <button class="item" type="submit" name="action" value="delete">'$(l10n edit_delete)'</button>'
175 echo '    <button class="item" type="submit" name="action" value="cancel">'$(l10n edit_cancel)'</button>'
176 echo '  </div>'
177 echo '<input type="hidden" name="UID" value="'$values["UID"]'"/>'
178 echo '</form>'
179 echo '</div>'
180