+++ /dev/null
-#!/bin/sh
-
-[ -z "$_GET[\"order\"]" ] && _GET["order"]=DOW
-
-listcourses() {
- case "$_GET[\"filtertype\"]" in
- *) ls -1 ${_DATA}/ical/*ics 2>/dev/null
- ;;
- esac |case "$_GET[\"order\"]" in
- DOW)
- while read file; do
- icstime="$(sed -rn 's:^DTSTART\:(TZID=.*\:)?([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2})([0-9]{2})([0-9]{2})Z?\r$:\2-\3-\4 \5\:\6\:\7:p' "$file")"
- echo "$(date -d "$icstime" "+%u %H%M%S")\t$file"
- done
- ;;
- TOD)
- while read file; do
- icstime="$(sed -rn 's:^DTSTART\:(TZID=.*\:)?([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2})([0-9]{2})([0-9]{2})Z?\r$:\2-\3-\4 \5\:\6\:\7:p' "$file")"
- echo "$(date -d "$icstime" +%H%M%S)\t$file"
- done
- ;;
- *)
- sed -r 's:^.*$:x\t&:'
- ;;
- esac |sort |sed -r 's:^.*\t(.*/)([^/]+)$:\2:'
-}
-
-ics_parse() {
- tr -d '\n' <"$1" |sed -r 's:\r ::g;s:\r:\n:g' |tr -d '\r' \
- | sed -r 's:^([^;\:]+)(;[^"\:]+|;"[^"]+")*\:(.*)$:key="\1"\nvalue="\3"\ntag=\2:g' \
- | while read -r line; do
- case "$line" in
- key=*) echo -E "$line"
- ;;
- value=*) echo -E "$line"
- ;;
- tag=*) ot=''
- echo -E "$line" \
- | sed -r 's:^tag=::;s:\;([A-Z+_-]+="[^"]+"|[A-Z+_-]+=[^\;]+):\n\1:g;' \
- | sed -r 's:([A-Z+_-]+)="?(.*)"?:tag\[\1\]="\2":g' \
- | sed -r '/^ *$/d' \
- | sort |while read -r tag; do
- nt="$(echo -E "$tag" |sed -r 's:^tag\[([A-Z+_-]+)\]="(.*)"$:\1:')"
- nv="$(echo -E "$tag" |sed -r 's:^tag\[([A-Z+_-]+)\]="(.*)"$:\2:')"
- [ "$nt" = "$ot" ] && vl="$nv,$vl" || vl="$nv"
- echo -E "tag[$nt]=\"$vl\""
- ot="$nt"
- done
- ;;
- esac
- done
-}
-
-view_course() { #Parameter: Calendarfile
- id="$1"
- calendarfile="$_DATA/ical/${id}"
- cachefile="$_DATA/cache/${id}.cache"
- unset key
- if [ "$cachefile" -nt "$calendarfile" ]; then
- cat "$cachefile"
- else
- declare -A tags
- declare -A values
- ics_parse "$calendarfile" |while read -r line; do
- declare -A tag
- case "$line" in
- value*) eval "$line";;
- tag*) eval "$line";;
- key*)
- if [ -z "$key" ]; then
- eval "$line"
- else
- values[$key]="$value"
- for t in ${(k)tag}; do
- tags[${key}_$t]="$tag[$t]"
- done
- eval "$line"
- if [ -n "$values[$key]" ]; then
- n=0
- while [ -n "$values[$key$n]" ]; do n=$(($n + 1)); done
- key=$key$n
- fi
- unset value
- unset tag
- fi
- ;;
- esac
- done
- . ${_EXEC}/templates/view_course.sh |tee "$cachefile"
- fi
-}
-
-edit_course() { #Parameter: Calendarfile
- id="$1"
- calendarfile="$_DATA/ical/$id"
- tempfile="$_DATA/temp/$id"
- [ -f "$tempfile" ] && calendarfile="$tempfile"
- unset key
-
- declare -A tags
- declare -A values
- ics_parse "$calendarfile" |while read -r line; do
- declare -A tag
- case "$line" in
- value*) eval "$line";;
- tag*) eval "$line";;
- key*)
- if [ -z "$key" ]; then
- eval "$line"
- else
- [ -n "$value" ] && values[$key]="$value" || values[$key]='\r'
- for t in ${(k)tag}; do
- tags[${key}_$t]="$tag[$t]"
- done
- eval "$line"
- if [ -n "$values[$key]" ]; then
- n=0
- while [ -n "$values[${key}${n}]" ]; do n=$(($n + 1)); done
- key=$key$n
- fi
- unset value
- unset tag
- fi
- ;;
- esac
- done
- . ${_EXEC}/templates/edit_course.sh
-}
-
-case "$1" in
- title)
- echo "Kurse"
- ;;
- css)
- . ${_EXEC}/templates/courses.css.sh
- ;;
- body)
- . ${_EXEC}/templates/text_courses.sh
- . ${_EXEC}/templates/courses.html.sh
- ;;
-esac
-