]> git.plutz.net Git - confetti/blobdiff - courses/widgets.sh
some course editing ui
[confetti] / courses / widgets.sh
index 41fc6866b70e6ea7d739d624a310c372795c2112..9e4fdd0d3119884657b9c032b22e2a2009d08320 100755 (executable)
@@ -113,43 +113,49 @@ edit_item(){
 
   for item in $@; do
     cnt="$(pdi_count "$course" "$item")"
-    [ $cnt -lt 1 ] && cnt=1
+    [ "$cnt" -lt 1 ] && cnt=1
 
     case $item in
       DTSTART)
-        dtstart="$(pdi_value "$course" DTSTART |cal_date)"
-        ystart="${dtstart%%-*}"; ystart="${ystart##* }"
-        mstart="${dtstart#*-}"; mstart="${mstart%%-*}"
-        dstart="${dtstart##*-}"; dstart="${dstart%% *}"
-        hhstart="${dtstart##* }"; hhstart="${hhstart%%:*}"
-        mmstart="${dtstart##*:}";
+        local dtstart="$(pdi_value "$course" DTSTART |cal_date)"
+        local ystart="${dtstart%%-*}"; ystart="${ystart##* }"
+        local mstart="${dtstart#*-}"; mstart="${mstart%%-*}"
+        local dstart="${dtstart##*-}"; dstart="${dstart%% *}"
+        local hhstart="${dtstart##* }"; hhstart="${hhstart%%:*}"
+        local mmstart="${dtstart##*:}";
+        local m mn cdow d
 
         printf '[div .section .DTSTART][h3 %s]' "$(l10n DTSTART)"
-        printf '[select .DTSYEAR name="DTSYEAR" onchange="this.form.submit();"'
+        printf '[select .DTSYEAR name="DTSYEAR" onchange="this.form.submit();"\n'
         seq $((ystart - 50)) $((ystart + 50)) |while read y; do
-          printf '[option value="%i" %s %i]' $y "$([ $y -eq $ystart ] && printf selected)" $y
+          printf '[option value="%i" %s %i]\n' $y "$([ $y -eq $ystart ] && printf selected)" $y
         done
         printf ']'
-        printf '[select .DTSMONTH name="DTSMONTH" onchange="this.form.submit();"'
-        seq 1 12 |while read m; do
-          printf '[option value="%i" %s %s]' $m "$([ $m -eq $mstart ] && printf selected)" "$(date -d "2000-${m}-01" +%B)"
+        printf '[select .DTSMONTH name="DTSMONTH" onchange="this.form.submit();"\n'
+        m=1; for mn in $(l10n January February March April May June July August September October November December); do
+          printf '[option value="%i" %s . %s]\n' $m "$(selected $m $mstart)" "$mn"
+          m=$((m+1))
         done
-        printf '][submit "DTS" "update" .DTS %s]' "$(l10n edit_dtscal)"
-        printf 'mon tue wed thu fri sat sun' |xargs -n1 date -d '{}' +"[span .DTSCALHEAD %a]"
-        seq 2 "$(date -d ${ystart}-${mstart}-1 +%u)" |xargs -n1 printf '[span .DTSCAL]'
-        cnt=$(date -d ${dts_year}-${dts_month}-1 +%s)
-        dn=1; while [ "$(date ${ystart}-${mstart}-${dn} +%m)" -eq "$mstart" ]; do
-          printf '[input .DTSCAL type="radio" name="DTSDAY" #DTSCAL_%i value="%i" %s][label .DTSCAL for="DTSCAL_%i" %i]' \
-                 $dn $n "$([ $dn -eq "$dstart" ] && printf checked)" $dn $dn
-          dn=$((dn + 1))
+        printf '][submit "DTS" "update" .DTS %s]\n' "$(l10n edit_dtscal)"
+        printf '[table .dtscalt [tr'
+        printf '[th . %s]' $(l10n Mon Tue Wed Thu Fri Sat Sun)
+        printf ']\n[tr '
+        cdow="$(date -d ${ystart}-${mstart}-1 +%u)"
+        seq 2 $cdow |xargs -n1 printf '[td .padding .%s]'
+        d=1; while [ "$d" -lt 29 ] || [ "$(date -d ${ystart}-${mstart}-${d} +%m)" -eq "$mstart" ]; do
+          [ $cdow -eq 1 -a $d -ne 1 ] && printf ']\n[tr '
+          printf '[td [input .DTSCAL type="radio" name="DTSDAY" #DTSCAL_%i value="%i" %s][label .DTSCAL for="DTSCAL_%i" %i]]' \
+                 $d $d "$(checked $d $dstart)" $d $d
+          d=$((d + 1)); cdow=$(((cdow + 1) % 7))
         done 2>/dev/null
+        printf ']]\n'
         printf '[span .DTSTIME %s:][select .DTSTIME name="DTSHOUR"' "$(l10n time)"
-        seq 0 23 |while read h; do
-          printf '[option value="%i" %s %i]' $h "$([ $h -eq $hhstart ] && printf checked)" $h
+        seq 00 23 |while read h; do
+          printf '[option value="%i" %s %02i]' $h "$(selected "$h" "$hhstart")" $h
         done
         printf ']:[select .DTSTIME name="DTSMINUTE"'
-        seq 0 5 55 |while read m; do
-          printf '[option value="%i" %s %i]' $m "$([ $m -eq $mmstart ] && printf checked)" $m
+        seq 00 5 55 |while read m; do
+          printf '[option value="%i" %s %02i]' $m "$(selected "$m" "$mmstart")" $m
         done
         printf ']'
         ;;