From 2039c4c91343d754c1c92b39b4523d4d8a50c936 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Tue, 22 Feb 2022 19:32:09 +0100 Subject: [PATCH] generate tagging section from cached order --- widgets.sh | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/widgets.sh b/widgets.sh index 46fdbf6..23afd9d 100755 --- a/widgets.sh +++ b/widgets.sh @@ -230,7 +230,7 @@ w_delete(){ } w_tagging(){ - local tag category d + local tctag oldcat category tag cat <<-EOF [a href="#multitag" Add Tags / Remove Tags] @@ -238,19 +238,26 @@ w_tagging(){ [a href="#" X] EOF - printf 'Tags\n%s\n' "$w_tagcategories" \ - | while read -r category; do - [ "$category" ] || continue - printf '[fieldset [legend %s:][div .tagselect\n' "$category" - printf %s "$w_tags" \ - | { [ "$category" = 'Tags' ] && grep -avF ':' || grep -awF "${category}"; } \ - | while read -r tag; do - [ "$tag" ] || continue - d="${tag#-}"; d="${d#*:}" - printf '[label [checkbox "tag" "%s"] %s]\n' "$tag" "$d" - done - printf ']]' + oldcat="Tags" + printf '[fieldset [legend %s:][div .tagselect\n' "Tags" + printf '%s\n' "$w_tags" \ + | while read tctag; do + [ "$tctag" ] || continue + category="${tctag#-}"; category="${category%%:*}" + tag="${tctag#-}"; tag="${tag#*:}" + + [ "${tag}" = "${tctag#-}" ] \ + && category="Tags" + + if [ "$category" != "$oldcat" ]; then + printf ']]' + printf '[fieldset [legend %s:][div .tagselect\n' "$category" + fi + printf '[label [checkbox "tag" "%s"] %s]\n' "$tctag" "$tag" + + oldcat="$category" done + printf ']]' cat <<-EOF [fieldset [legend New:][textarea name=newtag\n] -- 2.39.2