X-Git-Url: https://git.plutz.net/?p=confetti;a=blobdiff_plain;f=courses%2Flist.sh;h=93ed174dc4f924b74c295a3d9b9bdacef5f89885;hp=a0eb6d16ef61318c8e45ee114964d1ef0a0e0d65;hb=c0302919c54331fc9fe3785f7d2a44e639e1bba0;hpb=057ad3bc6e2d4c7bcc5d93047b0426e7e608d25a diff --git a/courses/list.sh b/courses/list.sh index a0eb6d1..93ed174 100755 --- a/courses/list.sh +++ b/courses/list.sh @@ -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 ­$( + [div .section .basic . $( cal_item "$course" SUMMARY DTSTART RRULE )] - [div .section .COMMENT ­$(cal_item "$course" COMMENT)] - [div .section .attendance [h3 $(l10n course_attendance) ] [ul ­ - $(grep -F " ${cardfile##*/}" "$_DATA/mappings/attendance" |while read each discard; do - printf '[li [a .item .attendance href="/courses#%s" ­%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 }