]> git.plutz.net Git - serve0/commitdiff
alliw text search (and exclusion) in advfilter
authorPaul Hänsch <paul@plutz.net>
Fri, 12 Mar 2021 10:23:59 +0000 (11:23 +0100)
committerPaul Hänsch <paul@plutz.net>
Fri, 12 Mar 2021 10:23:59 +0000 (11:23 +0100)
advsearch.sh
list.sh
widgets.sh

index 3a2f33389fc54180bfc6f48dadee482d2a15c458..10546185cc865bdcc6ea847c442b8dabdd10490f 100644 (file)
@@ -11,9 +11,11 @@ for n in 1 2 3 4 5 6 7 8 9; do
     tag="$(POST tag_$n $m)"
     [ ! "${tag##${cat}:*}" ] || [ ! "${tag##-${cat}:*}" ] || [ "$cat" = '*' -a "${tag##*:*}" ] \
     && f="${f}${tag}|"
+    [ "$cat" = \$ ] && f="${f}\$:${tag}|"
   done
   f="${f%[|^]}^"
 done
-f="${f%^}"
+f="$(printf '%s' "$f" |sed -E 's;[~|^]+$;;')"
+#f="${f%^}"
 
 REDIRECT "$(URL "${ITEM}")?o=${order}&f=${f}"
diff --git a/list.sh b/list.sh
index 6c09a43ad4983c216666384e77445f0b241d802f..60609b62c2f26c05dbeef788979d163ac0c178c3 100644 (file)
--- a/list.sh
+++ b/list.sh
@@ -51,10 +51,14 @@ list_item() {
   STRING "$FILTER^" \
   | sed -E 's;\^;\n;g; s;[]\/\(\)\\\^\$\?\.\+\*\;\[\{\}];\\&;g' \
   | while read -r f; do
-    [ "${f#\~}" ] || continue
-    [ "${f#\~}" = "$f" ] \
-    && fex="/(\ttags=([^\t]*,)?)(${f})((,[^\t]*)?\t)/{${fex}}" \
-    || fex="/(\ttags=([^\t]*,)?)(${f#\~})((,[^\t]*)?\t)/d; ${fex}"
+    [ "${f##*[A-Z]*}" ] && tl="y;ABCDEFGHIJKLMNOPQRSTUVWXYZ;abcdefghijklmnopqrstuvwxyz;;"
+    case $f in
+      ''|~) continue;;
+      ~\\\$:*) fex="h; ${tl} /${f#~\\\$:}/d; g;${fex}";;
+      \\\$:*) fex="h; ${tl} /${f#\\\$:}/{g;${fex}}";;
+      ~*) fex="/(\ttags=([^\t]*,)?)(${f#\~})((,[^\t]*)?\t)/d; ${fex}";;
+       *) fex="/(\ttags=([^\t]*,)?)(${f})((,[^\t]*)?\t)/{${fex}}";;
+    esac
     printf '%s\n' "${fex}"
   done \
   | tail -n1
index cd9dda30ca344037e5db60751e9c8a990eec9bfe..5cd371b7e8ae47040db55a617c04fdefc3ca2f9a 100644 (file)
@@ -188,7 +188,7 @@ w_advsearch(){
             $n "${t:+checked}" $n $n
 
     f="|${f#\~}|"
-    printf '*\n%s\n' "$w_tagcategories" \
+    printf '*\n%s\n$\n' "$w_tagcategories" \
     | while read -r category; do
       lbid="cat_${n}_${category}"
 
@@ -217,6 +217,8 @@ w_advsearch(){
         # printf '[option %s value="%s"\n%s]' "$t" "$tag" "$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" "$d"
       printf '\n]'
     done
     printf ']'