X-ZACK-LEAVEDATE) printf %s "Abmelde­datum";;
X-ZACK-JOINDATE_short) printf %s "Anm.";;
X-ZACK-LEAVEDATE_short) printf %s "Abm.";;
+ X-IBAN) printf %s "IBAN";;
*) l10n_global "$word";;
esac
[ $(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 .address $(
+ edit_item "$card" ADR
+ [ $(pdi_count "$card" X-IBAN) -gt 0 ] && edit_item "$card" X-IBAN
+ )]
[div .section .note $(edit_item "$card" NOTE)]
[div .section .attendance
[h3 $(l10n course_attendance) ] [div .attendance $(
[div .item .newfield
[select name="newfield"
[option value="" disabled="disabled" selected="selected" $(l10n edit_addfieldtext)]
- $(for f in NICKNAME EMAIL TEL IMPP ADR URL NOTE X-ZACK-LEAVEDATE; do
+ $(for f in NICKNAME EMAIL TEL IMPP ADR URL NOTE X-ZACK-LEAVEDATE X-IBAN; do
printf '[option value="%s" %s] ' "$f" "$(l10n "$f")"
done)
][button type="submit" name="action" value="addfield" $(l10n edit_addfield)]
)]
[div .section .phone . $(card_item "$card" TEL)]
[div .section .message . $(card_item "$card" EMAIL IMPP URL)]
- [div .section .address . $(card_item "$card" ADR)]
+ [div .section .address . $(card_item "$card" ADR X-IBAN)]
[div .section .note . $(card_item "$card" NOTE)]
[div .section .attendance [h3 $(l10n course_attendance) ] [ul
$(grep -F " ${cardfile##*/}" "$_DATA/mappings/attendance" |while read each discard; do
action="$(POST action)"
newfield="$(POST newfield |grep -m 1 -xE '[A-Z][A-Z0-9-]*')"
-if printf '%s\n' "$action" |grep -qxE 'addfield [A-Z][A-Z0-9]*'; then
+if printf '%s\n' "$action" |grep -qxE 'addfield [A-Z][A-Z0-9-]*'; then
newfield="${action##* }"
action=addfield
fi
/^BEGIN;:VCARD$/ { fn = n = id = iban = tmp = ""; }
- /^UID;[^:]*:/ { uid = $0; sub(/^[^;]+;[^:]*:/, "", uid); }
- /^FN;[^:]*:/ { fn = $0; sub(/^[^;]+;[^:]*:/, "", fn); }
- /^N;[^:]*:/ { n = $0; sub(/^[^;]+;[^:]*:/, "", n); sub(/;.*$/, "", n); }
-/^X-IBAN;[^:]*:/ { tmp = $0; sub(/^[^;]+;[^:]*:/, "", tmp); iban = iban ? iban " " tmp : tmp; }
+ /^UID;[^:]*:/ { uid = $0; sub(/^[^;]+;[^:]*:/, "", uid); }
+ /^FN;[^:]*:/ { fn = $0; sub(/^[^;]+;[^:]*:/, "", fn); }
+ /^N;[^:]*:/ { n = $0; sub(/^[^;]+;[^:]*:/, "", n); sub(/;.*$/, "", n); }
+/^X-IBAN;[^:]*:/ { iban = $0; sub(/^[^;]+;[^:]*:/, "", iban); ibans[length(ibans)] = iban; }
/^END;:VCARD$/ {
uid_n[uid] = n; uid_fn[uid] = fn; uid_iban[uid] = iban;
- split(iban, ibans, / /);
- for (iban in ibans) iban_uid[iban] = iban_uid[iban] ? iban_uid[iban] " " uid : uid;
- fn = n = uid = iban = tmp = "";
+ for (iban in ibans) iban_uid[ibans[iban]] = iban_uid[ibans[iban]] ? iban_uid[ibans[iban]] " " uid : uid;
+ fn = n = uid = iban = tmp = ""; split("", ibans);
}
strftime("%Y-%m-%d", $1, "UTC") == $2 && strftime("%Y-%m-%d", $3, "UTC") == $4 { ledger = 1; }
END {
for (iban in sure) {
line = "sure " iban;
- split(iban_uid[iban], uids, / /);
- for (uid in uids) line = line " " STRING(uid "/" uid_fn[uid]);
+ split(sure[iban], uids, / /);
+ for (k in uids) line = line " " STRING(uids[k] "/" uid_fn[uids[k]]);
print line;
}
for (iban in unsure) {
printf '[option value="%s"]' "$(HTML "$name")"
done
printf ']'
+ l10n_attendant="$(l10n attendant)"
{ pdi_load "${_DATA}"/vcard/*.vcf
cat "${_DATA}"/ledgers/????-??-??\ -\ ????-??-??\ -\ ????.tbl
} | "${_EXEC}"/ledgers/iban_assign.awk \
| while read -r state iban data; do
printf '[fieldset .iban .%s [legend . %s ]' \
"$state" "$iban"
- if [ $state = sure ]; then
+ if [ $state = sure ]; then
+ for card in $data; do
+ uid="${card%%/*}" name="$(UNSTRING "${card#*/}")"
+ printf '[span .card . %s]' "$(HTML "${name}")"
+ done
:
elif [ $state = guess ]; then
record="$(UNSTRING "${data%% *}")"
cards="${data#* }"
+ date="${record%% *}"
principal="${record#* * * }" principal="${principal%% *}"
subject="${record#* * * * }" subject="${subject%% *}"
amount="${record#* * * * * }" amount="${amount%% *}"
- printf '[p .principal . %s][p .amount %s][p .subject . %s]' \
- "$(UNSTRING "$principal" |HTML)" "$(credit "$amount")" "$(UNSTRING "$subject" |HTML)"
- printf '[h4 . %s]' "$(l10n Guesses)"
- for card in $cards; do
- uid="${card%%/*}" name="$(UNSTRING "${card#*/}")"
- printf '[input .card key="cardfn" value="%s" placeholder="%s" list=lattendants]' "$(HTML "${name}")" "$(l10n attendent)"
+ printf '[p .principal . %s][p .date %s][p .amount %s][p .subject . %s]' \
+ "$(UNSTRING "$principal" |HTML)" "$date" "$(credit "$amount")" "$(UNSTRING "$subject" |HTML)"
+ n=0; for card in $cards; do
+ n=$((n+1)); uid="${card%%/*}" name="$(UNSTRING "${card#*/}")"
+ cat <<-EOF
+ [input type=checkbox id="check_${iban}_$n" name="check_${iban}_$n" value=true checked=checked]
+ [input .card name="fn_${iban}_$n" value="$(HTML "$name")" disabled=disabled]
+ [label .del for="check_${iban}_$n" . -]
+ EOF
+ done
+ for m in 1 2 3 4 5 6 7 8; do
+ cat <<-EOF
+ [input type=checkbox id="check_${iban}_$((n+m))" name="check_${iban}_$((n+m))" value=false]
+ [input .card name="fn_${iban}_$((n+m))" value="" placeholder="${l10n_attendant}" list="lattendants"]
+ [label .add for="check_${iban}_$((n+m))" . +]
+ EOF
done
elif [ $state = unknown ]; then
+ date="${data%% *}"
principal="${data#* * * }" principal="${principal%% *}"
subject="${data#* * * * }" subject="${subject%% *}"
amount="${data#* * * * * }" amount="${amount%% *}"
- printf '[p .principal . %s][p .amount %s][p .subject . %s]' \
- "$(UNSTRING "$principal" |HTML)" "$(credit "$amount")" "$(UNSTRING "$subject" |HTML)"
+ printf '[p .principal . %s][p .date %s][p .amount %s][p .subject . %s]' \
+ "$(UNSTRING "$principal" |HTML)" "$date" "$(credit "$amount")" "$(UNSTRING "$subject" |HTML)"
+ printf '[input name="check_" type=hidden][input type=hidden][label .del]'
+ n=0; for m in 1 2 3 4 5 6 7 8; do
+ cat <<-EOF
+ [input type=checkbox id="check_${iban}_$((n+m))" name="check_${iban}_$((n+m))" value=false]
+ [input .card name="fn_${iban}_$((n+m))" value="" placeholder="${l10n_attendant}" list="lattendants"]
+ [label .add for="check_${iban}_$((n+m))" . +]
+ EOF
+ done
fi
printf ']'
done
display: inline-block;
}
+
+/* ======== Ledgers Page ======== */
+
form.ibanassign,
form.ledgers {
padding: .125em 1em 0 1em;
.ibanassign fieldset.iban p.principal {
font-size: .875em;
}
-.ibanassign fieldset.iban p.amount,
-.ibanassign fieldset.iban p.subject {
+.ibanassign fieldset.iban p.date,
+.ibanassign fieldset.iban p.amount {
+ font-size: .875em;
display: inline-block;
vertical-align: top;
+ margin-right: .75em;
+ margin-bottom: 0;
}
.ibanassign fieldset.iban p.amount {
font-weight: bold;
- margin-right: .75em;
+}
+
+.ibanassign fieldset.iban input[name^="check_"],
+.ibanassign fieldset.iban input[name^="check_"] + input,
+.ibanassign fieldset.iban input[name^="check_"] + input + label {
+ display: none;
+}
+.ibanassign fieldset.iban input[name^="check_"]:checked + input,
+.ibanassign fieldset.iban input[name^="check_"]:checked + input + label.del,
+.ibanassign fieldset.iban input[name^="check_"] + input + label.del + input + input + label.add,
+.ibanassign fieldset.iban input[name^="check_"]:checked + input + label + input + input + label.add {
+ display: inline;
+}
+.ibanassign fieldset.iban input[name^="check_"]:checked + input + label.add,
+.ibanassign fieldset.iban input[name^="check_"] + input + label.del + input:checked + input + label.add,
+.ibanassign fieldset.iban input[name^="check_"]:checked + input + label + input:checked + input + label.add {
+ display: none;
+}
+
+.ibanassign fieldset.iban input[name^="check_"] + input + label {
+ vertical-align: bottom;
+ line-height: 2.5em;
+ padding: .375em .625em;
+ border: .5pt solid;
+}
+.ibanassign fieldset.iban input[name^="check_"] + input + label.add {
+ background-color: #DFD;
+ border-radius: 2pt;
+}
+.ibanassign fieldset.iban input[name^="check_"] + input + label.del {
+ margin: 0 .5em 0 -.25em;
+ background-color: #FDD;
+ border-radius: 0 2pt 2pt 0;
}