From 819aebfb5343f918d510ba65c56e84ea24496ae6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Sat, 20 Apr 2024 21:32:56 +0200 Subject: [PATCH 01/16] styling for iban assignment --- ledgers/iban_assign.awk | 4 ++-- ledgers/index.cgi | 43 +++++++++++++++++++++++++++++++--------- style.css | 44 ++++++++++++++++++++++++++++++++++++++--- 3 files changed, 77 insertions(+), 14 deletions(-) diff --git a/ledgers/iban_assign.awk b/ledgers/iban_assign.awk index eac5b44..68a5727 100755 --- a/ledgers/iban_assign.awk +++ b/ledgers/iban_assign.awk @@ -73,8 +73,8 @@ ledger && strftime("%Y-%m-%d", $2, "UTC") == $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) { diff --git a/ledgers/index.cgi b/ledgers/index.cgi index 87af8b1..dbf8ee8 100755 --- a/ledgers/index.cgi +++ b/ledgers/index.cgi @@ -39,33 +39,58 @@ credit() { 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 diff --git a/style.css b/style.css index 98b839d..742163b 100644 --- a/style.css +++ b/style.css @@ -368,6 +368,9 @@ body.categories form.namelist ul.namelist > li ul li { display: inline-block; } + +/* ======== Ledgers Page ======== */ + form.ibanassign, form.ledgers { padding: .125em 1em 0 1em; @@ -388,12 +391,47 @@ form.ledgers { .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; } -- 2.39.2 From acf7b97ca0deee3e2d2cf328e7c3951d57ea8a2f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Sat, 11 May 2024 17:05:01 +0200 Subject: [PATCH 02/16] enable deletion of ledgers --- ledgers/delete.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100755 ledgers/delete.sh diff --git a/ledgers/delete.sh b/ledgers/delete.sh new file mode 100755 index 0000000..7b41921 --- /dev/null +++ b/ledgers/delete.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +delete="$(POST delete |PATH)" +dtable="${_DATA}/ledgers/${delete##*/}" + +if [ "$dtable" ]; then + rm -- "${dtable}" \ + || SET_COOKIE 0 message="Unable to delete ledger: \"$(HTML "$delete")\"" +else + SET_COOKIE 0 message="No such ledger: \"$(HTML "$delete")\"" +fi + +REDIRECT "${_BASE}/ledgers/" -- 2.39.2 From 9078cf1dcaa8de851315250a2a602cabced9f4fe Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Sat, 11 May 2024 17:05:49 +0200 Subject: [PATCH 03/16] form submit for IBAN Assignments --- ledgers/iban_assign.sh | 28 ++++++++++++++++++++++++++++ ledgers/index.cgi | 8 ++++++-- style.css | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 2 deletions(-) create mode 100755 ledgers/iban_assign.sh diff --git a/ledgers/iban_assign.sh b/ledgers/iban_assign.sh new file mode 100755 index 0000000..cabeae7 --- /dev/null +++ b/ledgers/iban_assign.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +printf '%s\r\n' "Content-Type: text/plain" "" + +for key in $(POST_KEYS); do case $key in + use_*) + use_iban="${use_iban} ${key#use_} " + ;; +esac; done +echo Use IBANS: +echo "$use_iban" +echo + +[ "$use_iban" ] && for key in $(POST_KEYS); do case $key in + check_*_*) + iban="${key#check_}" iban="${iban%_*}" + [ ! "${use_iban##* "${iban}" *}" ] && check="${check} ${key#check_} " + ;; +esac; done +echo Checked: +echo "$check" +echo + +for use in $check; do + iban="${use%_*}" + fn="$(POST "fn_${use}")" + echo Assign $iban to $fn +done diff --git a/ledgers/index.cgi b/ledgers/index.cgi index dbf8ee8..685ee85 100755 --- a/ledgers/index.cgi +++ b/ledgers/index.cgi @@ -61,21 +61,24 @@ credit() { amount="${record#* * * * * }" amount="${amount%% *}" printf '[p .principal . %s][p .date %s][p .amount %s][p .subject . %s]' \ "$(UNSTRING "$principal" |HTML)" "$date" "$(credit "$amount")" "$(UNSTRING "$subject" |HTML)" + printf '[input type=checkbox id="use_%s" name="use_%s" value=true]' "$iban" "$iban" 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] + [input .card name="fn_${iban}_$n" value="$(HTML "$name")" .disabled tabindex="-1"] [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 type=checkbox id="check_${iban}_$((n+m))" name="check_${iban}_$((n+m))" value=true] [input .card name="fn_${iban}_$((n+m))" value="" placeholder="${l10n_attendant}" list="lattendants"] [label .add for="check_${iban}_$((n+m))" . +] EOF done + printf '[label for="use_%s" . %s]' "$iban" "$(l10n Accept Suggestions)" + printf '[label for="use_%s" . %s]' "$iban" "$(l10n Ignore Suggestions)" elif [ $state = unknown ]; then date="${data%% *}" principal="${data#* * * }" principal="${principal%% *}" @@ -94,5 +97,6 @@ credit() { fi printf ']' done + printf '[button type=submit . %s]' "$(l10n Submit Changes)" printf ' ]' } | yield_page ledgers diff --git a/style.css b/style.css index 742163b..13d41a0 100644 --- a/style.css +++ b/style.css @@ -403,6 +403,9 @@ form.ledgers { font-weight: bold; } +.ibanassign fieldset.iban input[name^="fn_"].disabled { + pointer-events: none; +} .ibanassign fieldset.iban input[name^="check_"], .ibanassign fieldset.iban input[name^="check_"] + input, .ibanassign fieldset.iban input[name^="check_"] + input + label { @@ -435,3 +438,36 @@ form.ledgers { background-color: #FDD; border-radius: 0 2pt 2pt 0; } + +.ibanassign fieldset.iban input[name^="use_"] { + display: none; +} +.ibanassign fieldset.iban input[name^="use_"]:checked ~ input { + background-color: #DFD; + pointer-events: none; + border-color: #888; +} +.ibanassign fieldset.iban input[name^="use_"]:checked ~ label.del, +.ibanassign fieldset.iban input[name^="use_"]:checked ~ label.add { + display: none !important; +} + +.ibanassign fieldset.iban label[for^="use_"] { + display: block; + float: right; + padding: .25em .5em; + background-color: #AAF; + border: 1pt solid; +} + +.ibanassign fieldset.iban input[name^="use_"] ~ label[for^="use_"] { display: block; } +.ibanassign fieldset.iban input[name^="use_"] ~ label[for^="use_"] + label[for^="use_"] { display: none; } +.ibanassign fieldset.iban input[name^="use_"]:checked ~ label[for^="use_"] { display: none; } +.ibanassign fieldset.iban input[name^="use_"]:checked ~ label[for^="use_"] + label[for^="use_"] { display: block; } + +.ibanassign > button { + position: sticky; + bottom: 0; + margin: auto; + display: block; +} -- 2.39.2 From 4e7da5b8a7edf35a5f0432c296ae8fcbcd9cf91c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Sat, 11 May 2024 22:09:22 +0200 Subject: [PATCH 04/16] form submit of assignments --- ledgers/iban_assign.sh | 45 +++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/ledgers/iban_assign.sh b/ledgers/iban_assign.sh index cabeae7..9faf223 100755 --- a/ledgers/iban_assign.sh +++ b/ledgers/iban_assign.sh @@ -1,15 +1,22 @@ #!/bin/sh -printf '%s\r\n' "Content-Type: text/plain" "" +. "$_EXEC/pdiread.sh" +. "$_EXEC/session_lock.sh" + +UIDLIST="$( + pdi_load "$_DATA/vcard/"*.vcf \ + | sed -Ez ' + s/\nBEGIN;:VCARD\n([^\n]+\n)*FN;:([^\n]+)\n([^\n]+\n)*UID;:([^\n]+)\n([^\n]+\n)*END;:VCARD\n/UID:\4 FN:\2/g + ' +)" + +# printf '%s\r\n' "Content-Type: text/plain" "" for key in $(POST_KEYS); do case $key in use_*) use_iban="${use_iban} ${key#use_} " ;; esac; done -echo Use IBANS: -echo "$use_iban" -echo [ "$use_iban" ] && for key in $(POST_KEYS); do case $key in check_*_*) @@ -17,12 +24,26 @@ echo [ ! "${use_iban##* "${iban}" *}" ] && check="${check} ${key#check_} " ;; esac; done -echo Checked: -echo "$check" -echo -for use in $check; do - iban="${use%_*}" - fn="$(POST "fn_${use}")" - echo Assign $iban to $fn -done +{ printf '[ul .results' + for use in $check; do + iban="${use%_*}" + fn="$(POST "fn_${use}")" + uid="${UIDLIST%% FN:"$fn"${BR}*}" uid="${uid##*${BR}UID:}" + + cfile="${_DATA}/vcard/${uid}.vcf" + if SLOCK "$cfile" >/dev/null; then + card="$(pdi_load "$cfile")" + cnum="$(pdi_count "$card" X-IBAN)" + pdi_update_value "$card" X-IBAN "$((cnum + 1))" "$iban" >"$cfile" + printf '[li .success . [span .name . %s] [span .uid . (UID: %s)] assigned IBAN [span .iban . %s]]' \ + "$(HTML "$fn")" "$(HTML "$uid")" "$(HTML "$iban")" + RELEASE_SLOCK "$cfile" + else + printf '[li .error . [span .name . %s] [span .uid . (UID: %s)] is being edited elsewhere]' + "$(HTML "$fn")" "$(HTML "$uid")" + fi + done + printf ']' + printf '[a .button href=/ledgers/ . %s]' "$(l10n Back)" +} | yield_page ledgers_assign -- 2.39.2 From df20f046b4ff4e58a5b93ce152926325c7e15767 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Sun, 12 May 2024 16:43:28 +0200 Subject: [PATCH 05/16] simplified pipeline protocol --- ledgers/iban_assign.awk | 4 +++- ledgers/index.cgi | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ledgers/iban_assign.awk b/ledgers/iban_assign.awk index 68a5727..57ab62d 100755 --- a/ledgers/iban_assign.awk +++ b/ledgers/iban_assign.awk @@ -1,5 +1,7 @@ #!/bin/awk -f +function dbg( text ) { print text >>"/dev/stderr"; } + function STRING( inp ) { gsub(/\\/, "\\\\", inp); gsub(/\n/, "\\n", inp); @@ -52,7 +54,7 @@ BEGIN { fn = n = uid = iban = tmp = ""; split("", ibans); } -strftime("%Y-%m-%d", $1, "UTC") == $2 && strftime("%Y-%m-%d", $3, "UTC") == $4 { ledger = 1; } +/^BEGIN:LEDGERS$/ { ledger = 1; } ledger && strftime("%Y-%m-%d", $2, "UTC") == $1 { if ($3 in iban_uid) { diff --git a/ledgers/index.cgi b/ledgers/index.cgi index 685ee85..f55850d 100755 --- a/ledgers/index.cgi +++ b/ledgers/index.cgi @@ -41,6 +41,7 @@ credit() { printf ']' l10n_attendant="$(l10n attendant)" { pdi_load "${_DATA}"/vcard/*.vcf + printf 'BEGIN:LEDGERS\n' cat "${_DATA}"/ledgers/????-??-??\ -\ ????-??-??\ -\ ????.tbl } | "${_EXEC}"/ledgers/iban_assign.awk \ | while read -r state iban data; do -- 2.39.2 From 50266fa18f563d8da371a7bf06c796db41b08ace Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Sun, 12 May 2024 17:47:56 +0200 Subject: [PATCH 06/16] put known IBANs at the bottom of list --- ledgers/iban_assign.awk | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ledgers/iban_assign.awk b/ledgers/iban_assign.awk index 57ab62d..0491617 100755 --- a/ledgers/iban_assign.awk +++ b/ledgers/iban_assign.awk @@ -73,12 +73,6 @@ ledger && strftime("%Y-%m-%d", $2, "UTC") == $1 { } END { - for (iban in sure) { - line = "sure " iban; - split(sure[iban], uids, / /); - for (k in uids) line = line " " STRING(uids[k] "/" uid_fn[uids[k]]); - print line; - } for (iban in unsure) { line = "guess " iban " " STRING(unsure_rec[iban]); split(unsure[iban], uids, / /); @@ -89,4 +83,10 @@ END { line = "unknown " iban " " unknown[iban]; print line; } + for (iban in sure) { + line = "sure " iban; + split(sure[iban], uids, / /); + for (k in uids) line = line " " STRING(uids[k] "/" uid_fn[uids[k]]); + print line; + } } -- 2.39.2 From 1ddf37b85b097f69a0d59f5a04f14509d1dd8ec0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Sun, 12 May 2024 17:48:40 +0200 Subject: [PATCH 07/16] bugfix: find actual UID in files --- ledgers/iban_assign.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ledgers/iban_assign.sh b/ledgers/iban_assign.sh index 9faf223..8d9ae99 100755 --- a/ledgers/iban_assign.sh +++ b/ledgers/iban_assign.sh @@ -8,6 +8,7 @@ UIDLIST="$( | sed -Ez ' s/\nBEGIN;:VCARD\n([^\n]+\n)*FN;:([^\n]+)\n([^\n]+\n)*UID;:([^\n]+)\n([^\n]+\n)*END;:VCARD\n/UID:\4 FN:\2/g ' + echo )" # printf '%s\r\n' "Content-Type: text/plain" "" @@ -31,7 +32,8 @@ esac; done fn="$(POST "fn_${use}")" uid="${UIDLIST%% FN:"$fn"${BR}*}" uid="${uid##*${BR}UID:}" - cfile="${_DATA}/vcard/${uid}.vcf" + # cfile="${_DATA}/vcard/${uid}.vcf" + cfile="$(grep -lxF "UID;:${uid}" "${_DATA}/vcard/"*.vcf || grep -lxF "UID:${uid}" "${_DATA}/vcard/"*.vcf)" if SLOCK "$cfile" >/dev/null; then card="$(pdi_load "$cfile")" cnum="$(pdi_count "$card" X-IBAN)" -- 2.39.2 From 9631f7d188d59cc11fc14629a66583b07b187a72 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Sun, 12 May 2024 17:50:22 +0200 Subject: [PATCH 08/16] Mark modified fieldsets visually --- ledgers/index.cgi | 10 +++++++--- style.css | 22 +++++++++++++--------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/ledgers/index.cgi b/ledgers/index.cgi index f55850d..f2c2bf0 100755 --- a/ledgers/index.cgi +++ b/ledgers/index.cgi @@ -45,6 +45,9 @@ credit() { cat "${_DATA}"/ledgers/????-??-??\ -\ ????-??-??\ -\ ????.tbl } | "${_EXEC}"/ledgers/iban_assign.awk \ | while read -r state iban data; do + iban="$(UNSTRING "$iban")" + [ ! "$iban" ] && iban="??????????" + printf '[input type=checkbox id="use_%s" name="use_%s" value=true]' "$iban" "$iban" printf '[fieldset .iban .%s [legend . %s ]' \ "$state" "$iban" if [ $state = sure ]; then @@ -62,7 +65,6 @@ credit() { amount="${record#* * * * * }" amount="${amount%% *}" printf '[p .principal . %s][p .date %s][p .amount %s][p .subject . %s]' \ "$(UNSTRING "$principal" |HTML)" "$date" "$(credit "$amount")" "$(UNSTRING "$subject" |HTML)" - printf '[input type=checkbox id="use_%s" name="use_%s" value=true]' "$iban" "$iban" n=0; for card in $cards; do n=$((n+1)); uid="${card%%/*}" name="$(UNSTRING "${card#*/}")" cat <<-EOF @@ -78,8 +80,8 @@ credit() { [label .add for="check_${iban}_$((n+m))" . +] EOF done - printf '[label for="use_%s" . %s]' "$iban" "$(l10n Accept Suggestions)" - printf '[label for="use_%s" . %s]' "$iban" "$(l10n Ignore Suggestions)" + printf '[label .button for="use_%s" . %s]' "$iban" "$(l10n Accept Suggestions)" + printf '[label .button for="use_%s" . %s]' "$iban" "$(l10n Ignore Suggestions)" elif [ $state = unknown ]; then date="${data%% *}" principal="${data#* * * }" principal="${principal%% *}" @@ -95,6 +97,8 @@ credit() { [label .add for="check_${iban}_$((n+m))" . +] EOF done + printf '[label .button for="use_%s" . %s]' "$iban" "$(l10n Accept Suggestions)" + printf '[label .button for="use_%s" . %s]' "$iban" "$(l10n Ignore Suggestions)" fi printf ']' done diff --git a/style.css b/style.css index 13d41a0..a8ebe90 100644 --- a/style.css +++ b/style.css @@ -403,6 +403,8 @@ form.ledgers { font-weight: bold; } +.ibanassign fieldset.iban.sure .card { margin-right: 1em; } + .ibanassign fieldset.iban input[name^="fn_"].disabled { pointer-events: none; } @@ -439,16 +441,18 @@ form.ledgers { border-radius: 0 2pt 2pt 0; } -.ibanassign fieldset.iban input[name^="use_"] { +.ibanassign input[name^="use_"] { display: none; } -.ibanassign fieldset.iban input[name^="use_"]:checked ~ input { +.ibanassign input[name^="use_"]:checked + fieldset.iban.guess { background-color: #EFD; } +.ibanassign input[name^="use_"]:checked + fieldset.iban.unknown { background-color: #FED; } +.ibanassign input[name^="use_"]:checked + fieldset.iban input { background-color: #DFD; pointer-events: none; border-color: #888; } -.ibanassign fieldset.iban input[name^="use_"]:checked ~ label.del, -.ibanassign fieldset.iban input[name^="use_"]:checked ~ label.add { +.ibanassign input[name^="use_"]:checked + fieldset.iban label.del, +.ibanassign input[name^="use_"]:checked + fieldset.iban label.add { display: none !important; } @@ -456,14 +460,14 @@ form.ledgers { display: block; float: right; padding: .25em .5em; - background-color: #AAF; + background-color: #DDF; border: 1pt solid; } -.ibanassign fieldset.iban input[name^="use_"] ~ label[for^="use_"] { display: block; } -.ibanassign fieldset.iban input[name^="use_"] ~ label[for^="use_"] + label[for^="use_"] { display: none; } -.ibanassign fieldset.iban input[name^="use_"]:checked ~ label[for^="use_"] { display: none; } -.ibanassign fieldset.iban input[name^="use_"]:checked ~ label[for^="use_"] + label[for^="use_"] { display: block; } +.ibanassign input[name^="use_"] + fieldset.iban label[for^="use_"] { display: block; } +.ibanassign input[name^="use_"] + fieldset.iban label[for^="use_"] + label[for^="use_"] { display: none; } +.ibanassign input[name^="use_"]:checked + fieldset.iban label[for^="use_"] { display: none; } +.ibanassign input[name^="use_"]:checked + fieldset.iban label[for^="use_"] + label[for^="use_"] { display: block; } .ibanassign > button { position: sticky; -- 2.39.2 From 785c5f7e7828e93a2c6629036d8808865a0eec11 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Mon, 13 May 2024 20:56:19 +0200 Subject: [PATCH 09/16] link to ledgers from cards --- cards/list.sh | 1 + l10n.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/cards/list.sh b/cards/list.sh index 9511fc1..e12d760 100755 --- a/cards/list.sh +++ b/cards/list.sh @@ -104,6 +104,7 @@ print_card(){ $(card_item "$card" CATEGORIES) ] [div .control + [a .button .item href="${_BASE}/ledgers/account.sh?card=${cardfile##*/}" $(l10n ledger)] [a .button .item href="${_BASE}/cards/edit_card.sh?card=${cardfile##*/}" $(l10n edit)] [a .button .item href="${_BASE}/cards/export_card.sh?card=${cardfile##*/}" $(l10n vcf_export)] ] diff --git a/l10n.sh b/l10n.sh index d9e01d0..9780a09 100755 --- a/l10n.sh +++ b/l10n.sh @@ -85,6 +85,7 @@ l10n_global() { edit) printf %s "Bearbeiten";; edit_categories) printf %s "Kategorien Bearbeiten";; vcf_export) printf %s "Vcard Exportieren";; + ledger) printf %s "Buchungen";; control) printf %s "Aktionen";; delete) printf %s "entfernen";; edit_update) printf %s "Daten übernehmen";; -- 2.39.2 From de473d4e02928b374781a1930e052dfb215a6201 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Mon, 13 May 2024 20:57:59 +0200 Subject: [PATCH 10/16] Squashed 'cgilite/' changes from 397847d..ad6888a ad6888a style support for