]> git.plutz.net Git - confetti/blobdiff - courses/list.sh
implement course edit and updates
[confetti] / courses / list.sh
index a0eb6d16ef61318c8e45ee114964d1ef0a0e0d65..93ed174dc4f924b74c295a3d9b9bdacef5f89885 100755 (executable)
@@ -2,72 +2,42 @@
 
 . "${_EXEC}"/pdiread.sh
 
-edit_card(){
-  local cardfile="$_DATA/vcard/$1" 
-  local tempfile card
+edit_course(){
+  local coursefile="$_DATA/ical/$1" 
+  local tempfile course
 
   . $_EXEC/session_lock.sh
 
-  if ! tempfile="$(CHECK_SLOCK "$cardfile")"; then
-    printf '[div .message %s]' "$(l10n "This card is not set up for editing within this session.")"
+  if ! tempfile="$(CHECK_SLOCK "$coursefile")"; then
+    printf '[div .message %s]' "$(l10n "This course is not set up for editing within this session.")"
   else
-    card="$(pdi_load "$tempfile")"
+    course="$(pdi_load "$tempfile")"
     cat <<-EOF
-       [form .card #${cardfile##*/} action="/cards/update_card.sh" method="POST"
+       [form .course #${coursefile##*/} action="/courses/update_course.sh" method="POST"
+          [input type="hidden" name="course" value="${coursefile##*/}"]
          [input type="hidden" name="tid" value="$(transid ${tempfile})"]
-         [div .section .basic $(
-           edit_item "$card" N GENDER
-           [ "$(pdi_count "$card" NICKNAME)" -gt 0 ] \
-           && edit_item "$card" NICKNAME
-           edit_item "$card" BDAY
-           edit_item "$card" X-ZACK-JOINDATE
-           [ "$(pdi_count "$card" X-ZACK-LEAVEDATE)" -gt 0 ] \
-           && edit_item "$card" X-ZACK-LEAVEDATE
-           card_item "$card" SOUND PHOTO LOGO
-         )]
-         [div .section .phone   $(edit_item "$card" TEL)]
-         [div .section .message $(
-           edit_item "$card" EMAIL
-           [ $(pdi_count "$card" IMPP) -gt 0 ] && edit_item "$card" IMPP
-           [ $(pdi_count "$card" URL ) -gt 0 ] && edit_item "$card" URL
-         )]
-         [div .section .address $(edit_item "$card" ADR)]
-         [div .section .note    $(edit_item "$card" NOTE)]
-         [div .section .attendance
-           [h3 $(l10n course_attendance) ] $(
-           for course in "$_DATA"/ical/*.ics; do
-             printf '[label [input type="checkbox" name="attendance" value="%s" %s] %s]' \
-                    "${course##*/}" \
-                    "$(grep -qF "${course##*/} ${cardfile##*/}" "$_DATA/mappings/attendance" \
-                       && printf 'checked="checked"'
-                    )" \
-                    "$(pdi_value "$(pdi_load "$course")" SUMMARY |unescape |HTML)"
-           done)
-           [h3 $(l10n CATEGORIES) ] $(
-           grep -xE '[^ ]+' "$_DATA"/mappings/categories |while read -r cat; do
-             printf '[label [input type="checkbox" name="attendance" value="%s" %s] %s]' \
-                    "$(HTML "$cat")" \
-                    "$(seq 1 $(pdi_count "$card" CATEGORIES) |while read c; do
-                      pdi_value "$card" CATEGORIES $c |grep -qxF "$cat" \
-                      && printf 'checked="checked"' && break
-                    done)" \
-                    "$(HTML "$cat")"
-           done)
-         ]
-         [div .control
-           [select .item name="newfield"
-             [option value="" disabled="disabled" selected="selected" $(l10n edit_addfieldtext)]
-             $(for f in NICKNAME EMAIL TEL IMPP ADR URL NOTE; do
-               printf '[option value="%s" %s] ' "$f" "$(l10n "$f")"
-             done)
-          ][button .item type="submit" name="action" value="addfield" $(l10n edit_addfield)]
-           [button .item type="submit" name="action" value="update"   $(l10n edit_update)]
-           [input type="checkbox" #delete] [label .item for="delete" $(l10n edit_delete)]
-             [button .item type="submit" name="action" value="delete"]
-           [button .item type="submit" name="action" value="cancel"   $(l10n edit_cancel)]
-         ]
-         [input type="hidden" name="UID" value="$(pdi_value "$card" UID |HTML)"]
-         [input type="hidden" name="card" value="${cardfile##*/}"]
+          [div .section .basic . $(
+            edit_item "$course" SUMMARY COMMENT
+          )]
+          [div .section .dtstart . $(
+            edit_item "$course" DTSTART
+          )]
+          [div .section .recur . $(
+            edit_item "$course" RRULE
+          )]
+          [div .section .select_attendance . $(
+            edit_item "$course" attendance
+          )]
+          [div .control
+            [select .item name=newfield
+              [option disabled="disabled" selected . $(l10n edit_addfieldtext)]
+              $(for f in $SUP_FIELDS; do printf '[option value="%s" . %s]\n' "$f" "$(l10n "$f")"; done)
+            ]
+            [button .item type="submit" name="action" value="addfield" . $(l10n edit_addfield)]
+            [button .item type="submit" name="action" value="update"   . $(l10n edit_update)]
+            [button .item type="submit" name="action" value="delete"   . $(l10n edit_delete)]
+            [button .item type="submit" name="action" value="cancel"   . $(l10n edit_cancel)]
+          ]'
        ]
        EOF
   fi
@@ -78,25 +48,38 @@ print_course(){
   local course="$(pdi_load "$coursefile")"
   cat <<-EOF
     [div .course #${coursefile##*/}
-      [div .section .basic &shy;$(
+      [div .section .basic $(
         cal_item "$course" SUMMARY DTSTART RRULE
       )]
-      [div .section .COMMENT   &shy;$(cal_item "$course" COMMENT)]
-      [div .section .attendance [h3 $(l10n course_attendance) ] [ul &shy;
-        $(grep -F "    ${cardfile##*/}" "$_DATA/mappings/attendance" |while read each discard; do
-          printf '[li [a .item .attendance href="/courses#%s" &shy;%s]]' \
+      [div .section .COMMENT   $(cal_item "$course" COMMENT)]
+      [div .section .attendance [h3 $(l10n course_attendance) ] [ul 
+        $(grep -F "${coursefile##*/}   " "$_DATA/mappings/attendance" |while read discard each; do
+          printf '[li [a .item .attendance href="/cards/#%s" . %s]]\n' \
                  "$each" \
-                 "$(pdi_value "$(pdi_load "$_DATA/ical/$each")" SUMMARY |unescape |HTML)"
-        done)]
-        $(cal_item "$card" CATEGORIES)
+                 "$(pdi_value "$(pdi_load "$_DATA/vcard/$each")" FN |unescape |HTML)"
+        done |sort -k7)]
       ]
       [div .control
-        [a .item href="" $(l10n edit)]
+        [a .item href="/courses/edit_course.sh?course=${coursefile##*/}" $(l10n edit)]
+        [a .item href="/courses/export_pdf.sh?course=${coursefile##*/}" target="blank" $(l10n courselist)]
+        [a .item href="/courses/export_ical.sh?course=${coursefile##*/}" $(l10n ics_export)]
+        [a .item href="mailto:zack@vuesch.org?bcc=$(course_mail "${coursefile##*/}" |HTML)" $(l10n course_mail)]
       ]
     ]
        EOF
 }
 
+course_mail() {
+  course="$1"
+  grep -F "${course}   " "$_DATA/mappings/attendance" |while read junk card; do
+    cat "${_DATA}/vcard/${card}"
+  done \
+  | pdi_load - \
+  | sed -rn 's;^EMAIL(\;[^:]*)*:(.+)\r?$;\2,;p' \
+  | tr -d \\n \
+  | unescape
+}
+
 print_courses(){
   local calfile cachefile date size name ldate=0 lsize lname
 
@@ -125,7 +108,7 @@ order_courses() {
 }
 
 list_courses(){
-  printf '%s\n' ${_DATA}/courses/*.ics \
+  printf '%s\n' ${_DATA}/ical/*.ics \
   | order_courses \
   | print_courses
 }