-# Copyright 2014 - 2019 Paul Hänsch
+# Copyright 2014 - 2019, 2021 Paul Hänsch
#
# This file is part of Confetti.
#
grep -vxE '^[ ]*$' "${_DATA}/mappings/categories"
}
+list_courses() {
+ local file name cachefile="${_DATA}/cache/courses.ui.cache"
+ if [ $cachefile -nt "${_DATA}/ical" ]; then
+ cat "$cachefile"
+ else
+ for file in "$_DATA/ical"/*.ics; do
+ name="$(pdi_value "$(pdi_load "$file")" SUMMARY || l10n "(unnamed course)" |unescape |HTML)"
+ printf '%s/%s\n' "${file##*/}" "$name"
+ done \
+ | sort -t/ -k2 |tee "$cachefile"
+ fi
+}
+
w_filter_item() {
n=$3
cat <<EOF
[fieldset .item
[legend $(l10n filter_item):]
- $(for field in any name street zip TEL BDAY CATEGORIES; do
- printf '[input id="%s%i" type="radio" name="filter_type%i" value="%s" %s]
- [label for="%s%i" %s ]' \
+ $(for field in any name street zip TEL BDAY CATEGORIES course; do
+ printf '[input .tab id="%s%i" type="radio" name="filter_type%i" value="%s" %s][label for="%s%i" %s ]' \
"$field" "$n" "$n" "$field" "$([ "$1" = "$field" ] && printf checked )" \
"$field" "$n" "$(l10n filter_$field)"
done)
- [input type="text" name="filter_text$n" value="$([ "$1" = CATEGORIES ] || HTML "$2")" placeholder="$(l10n filter_placeholder)"]
- [fieldset .categories
+ [input .tab type="text" name="filter_text$n" value="$([ "$1" = CATEGORIES -o "$1" = course ] || HTML "$2")" placeholder="$(l10n filter_placeholder)"]
+ [fieldset .tab .categories
$(list_categories | while read cat; do
- printf '[label [checkbox "filter_cat%i" "|%s" %s] %s ]' \
+ printf '[label [checkbox "filter_cat%i" "|%s" %s] %s ] ' \
"$n" "$(HTML "$cat")" \
"$(printf %s "$cat" |grep -qxEe "$2" && printf checked )" \
"$(HTML "$cat")"
done)
- [a href="/cards/categories.sh" $(l10n edit_categories)]
+ [a href="${_BASE}/categories/" $(l10n edit_categories)]
+ ]
+ [fieldset .tab .courses
+ $(list_courses | while IFS=/ read course coursename; do
+ printf '[label [checkbox "filter_course%i" "|%s" %s] %s ] ' \
+ "$n" "$(HTML "${course##*/}")" \
+ "$(printf %s "${course##*/}" |grep -qxEe "$2" && printf checked )" \
+ "$coursename"
+ done)
]
]
EOF
w_filter_diag(){
cat <<EOF
- [form .filter action="/cards/filter_card.sh" method="POST"
+ [form .filter action="${_BASE}/cards/filter_card.sh" method="POST"
[h1 $(l10n filter_label)]
[input type="hidden" name="page" value="cards"]
w_filter_item "${fil%%:*}" "${fil#*:}" $n
n=$((n + 1))
done
- w_filter_item any '' $n
+ [ "$n" -eq 0 -o "$(GET newfilter)" ] && w_filter_item any '' $n
)
-
+ [button type="submit" name="choice" value="new_filter" $(l10n filter_more)]
[fieldset class="order"
[legend $(l10n filter_order):]
[label [radio "order" "firstname" $( [ "$order" = firstname ] && printf checked )] $(l10n filter_firstname)]
[label [radio "order" "lastname" $( [ "$order" = lastname ] && printf checked )] $(l10n filter_lastname)]
[label [radio "order" "bdate" $( [ "$order" = bdate ] && printf checked )] $(l10n filter_bdate)]
]
- [button type="submit" name="choice" value="new_filter" $(l10n filter_apply)]
+ [button type="submit" name="choice" value="filter" $(l10n filter_apply)]
[button type="submit" name="choice" value="del_filter" $(l10n filter_cancel)]
+ [button type="submit" name="choice" value="export_csv" $(l10n export_csv)]
]
EOF
}
cnt="$(pdi_count "$card" "$item")"
case $item in
- FN) printf '[h2 .item .FN ­%s]' "$(pdi_value "$card" FN |unescape |HTML)"
+ FN) printf '[h2 .item .FN . %s]' "$(pdi_value "$card" FN |unescape |HTML)"
;;
- GENDER) printf '[span .item .GENDER ­%s]' "$(pdi_value "$card" GENDER |l10n)"
+ GENDER) printf '[span .item .GENDER . %s]' "$(pdi_value "$card" GENDER |l10n)"
;;
NICKNAME) seq 1 $cnt |while read c; do
- printf '[span .item .NICKNAME ­aka. "%s"]' \
+ printf '[span .item .NICKNAME . aka. "%s"]' \
"$(pdi_value "$card" NICKNAME $c |unescape |HTML)"
done
;;
EMAIL)
[ $cnt -gt 0 ] && printf '[h3 %s]' "$(l10n EMAIL)"
seq 1 $cnt |while read c; do
- printf '[a .item .EMAIL href="mailto:%s" ­%s]' \
+ printf '[a .item .EMAIL href="mailto:%s" . %s]' \
"$(pdi_value "$card" EMAIL $c |unescape |HTML)" \
"$(pdi_value "$card" EMAIL $c |unescape |HTML)"
done
seq 1 $cnt |while read c; do
teltype="$(pdi_attrib "$card" TEL $c TYPE)"
[ "$teltype" ] \
- && printf '[span .item .TEL [span .type ­%s:] %s]' \
+ && printf '[span .item .TEL [span .type . %s:] %s]' \
"$(l10n "TYPE=$teltype" |HTML)" \
"$(pdi_value "$card" TEL $c |unescape |HTML)" \
- || printf '[span .item .TEL ­%s]' \
+ || printf '[span .item .TEL . %s]' \
"$(pdi_value "$card" TEL $c |unescape |HTML)"
done
;;
+ ADR)[ $cnt -gt 0 ] && printf '[h3 %s]' "$(l10n "$item")"
+ shy="$(printf '\302\255')"
+ seq 1 $cnt |while read c; do
+ printf '[span .item .%s . %s]' "$item" \
+ "$(pdi_value "$card" "$item" $c |sed -r "s;(straße|weg|damm|allee|ufer);${shy}\1;g" |unescape |HTML)"
+ done
+ ;;
*)[ $cnt -gt 0 ] && printf '[h3 %s]' "$(l10n "$item")"
seq 1 $cnt |while read c; do
- printf '[span .item .%s ­%s]' "$item" \
+ printf '[span .item .%s . %s]' "$item" \
"$(pdi_value "$card" "$item" $c |unescape |HTML)"
done
;;
EOF
else
N="$(pdi_value "$card" FN |unescape)"
- n1="${N%%[a-z]*}" n1="${N#$n1}"
- [ "$n1" ] || n1="${N##* }"
+ n1="${N##* }"
n2="${N%$n1}"
fi
printf '
[input .item .N name="5N" placeholder="%s" value="%s"]
' "$(l10n "$item")" \
"$(l10n n_pre)" "$(HTML "$n4")" \
- "$(l10n n_first)" "$(HTML "$n2" "$n3")" \
+ "$(l10n n_first)" "$(HTML "${n2}$([ "$n2" -a "$n3" ] && printf ' ')${n3}")" \
"$(l10n n_last)" "$(HTML "$n1")" \
"$(l10n n_post)" "$(HTML "$n5")"
;;