From df289a9cb8ad5a53f29222f1fd9ce68ce35d1889 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Tue, 22 Feb 2022 20:01:29 +0100 Subject: [PATCH] generate advfilter section from cached tag order --- widgets.sh | 56 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/widgets.sh b/widgets.sh index df141e7..84b6567 100755 --- a/widgets.sh +++ b/widgets.sh @@ -180,31 +180,39 @@ w_advsearch(){ EOF f="|${f#\~}|" - printf '*\n%s\n$\n' "$w_tagcategories" \ - | while read -r category; do - lbid="cat_${n}_${category}" - - t='' - [ "$category" = '*' -a "${f%%|${category}:*}" ] && t=checked - [ "$category" != '*' -a ! "${f%%|${category}:*}" ] && t=checked - [ "$category" != '*' -a ! "${f%%|-${category}:*}" ] && t=checked - - printf '[radio "cat_%i" "%s" .cat %s id="%s"][label for="%s" %s] - [div .catselect\n' \ - $n "$category" "$t" "$lbid" "$lbid" "$category" - - printf '%s\n' "$w_tags" \ - | { [ "$category" = '*' ] && grep -avF ':' || grep -awF "${category}"; } \ - | while read -r tag; do - [ "$tag" ] || continue - t=''; [ ! "${f%%*|${tag}|*}" ] && t=checked - d="${tag#-}"; d="${d#*:}" - printf '[label [checkbox "tag_%s" "%s" %s] %s]' "$n" "$tag" "$t" "$d" - done - d="${f##*\$:}" d="${d%%\|*}" - [ "$category" = \$ ] && printf '[input name="tag_%i" value="%s"]' "$n" "$(HTML "$d")" - printf '\n]' + printf '%s\n$:\n' "$w_tags" \ + | while read tctag; do + [ "$tctag" ] || continue + category="${tctag#-}"; category="${category%%:*}" + tag="${tctag#-}"; tag="${tag#*:}" + [ "${tag}" = "${tctag#-}" ] \ + && category="*" + + if [ "$category" != "$oldcat" ]; then + [ "$oldcat" ] && printf '\n]' + lbid="cat_${n}_${category}" + + t='' + [ "$category" = '*' -a "${f%%|${category}:*}" ] && t=checked + [ "$category" != '*' -a ! "${f%%|${category}:*}" ] && t=checked + [ "$category" != '*' -a ! "${f%%|-${category}:*}" ] && t=checked + + printf '[radio "cat_%i" "%s" .cat %s id="%s"][label for="%s" %s] + [div .catselect\n' \ + $n "$category" "$t" "$lbid" "$lbid" "$category" + fi + + if [ "$category" = '$' ]; then + tag="${f##*\$:}" tag="${tag%%\|*}" + printf '[input name="tag_%i" value="%s"]' "$n" "$(HTML "$tag")" + else + t=''; [ ! "${f%%*|${tctag}|*}" ] && t=checked + printf '[label [checkbox "tag_%s" "%s" %s] %s]' "$n" "$tctag" "$t" "$tag" + fi + + oldcat="$category" done + [ "$w_tags" ] && printf '\n]' printf ']' done -- 2.39.2