X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=widgets.sh;h=84b656774c3ead4b1f2c2a5334e67f496e7b6eb4;hb=df289a9cb8ad5a53f29222f1fd9ce68ce35d1889;hp=df141e786cb3854cfff1bf2aa8f398f3e9de278e;hpb=d13a512829cd9cf5d2a364a9a6cee3ce7f614f02;p=serve0 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