]> git.plutz.net Git - confetti/blobdiff - cards/filter_card.sh
portable sed usage
[confetti] / cards / filter_card.sh
index 9c79459fab9fe4b84dda311bd7e70c8d876c8caa..e7d1114a2deb3077c0bfe10584ed3dea044d4962 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/zsh
+#!/bin/sh
 
 # Copyright 2014, 2017, 2019 Paul Hänsch
 #
 # You should have received a copy of the GNU Affero General Public License
 # along with Confetti.  If not, see <http://www.gnu.org/licenses/>. 
 
-if [ "$(POST choice)" = new_filter ]; then
-  filter="$(
-    seq 0 100 |while read n; do
-      filter_type="$(POST "filter_type${n}")"
-      filter_text="$(POST "filter_text${n}")"
-      [ ! "$filter_type" -a ! "$filter_text"  ] && break
-      if [ "$filter_type" = CATEGORIES ]; then
-        printf '^CATEGORIES:'
-        seq 0 $(POST_COUNT filter_cat$n) |while read m; do
-          printf '|%s' "$(POST filter_cat$n $m)"
-        done
-      else
-        printf '^%s:%s' "$filter_type" "$filter_text"
-      fi
-    done | sed -r \
-           's;\|+;\|;g;   s;\^+;\^;g;   s;:\|;:;g;
-            :X;   s;\^[^:]*:\^;\^;g;   /\^[^:]*:\^/bX;
-            s;^\^;;;   s;\^[^:]*:$;;;'
-  )"
-  REDIRECT "/cards/?order=$(POST order)&filter=${filter}"
-else
-  REDIRECT '/cards/'
-fi
+filter="$(
+  seq 0 100 |while read n; do
+    filter_type="$(POST "filter_type${n}")"
+    filter_text="$(POST "filter_text${n}")"
+    [ ! "$filter_type" -a ! "$filter_text"  ] && break
+    if [ "$filter_type" = CATEGORIES ]; then
+      printf '^CATEGORIES:'
+      seq 0 $(POST_COUNT filter_cat$n) |while read m; do
+        printf '|%s' "$(POST filter_cat$n $m)"
+      done
+    else
+      printf '^%s:%s' "$filter_type" "$filter_text"
+    fi
+  done | sed -E \
+         's;\|+;\|;g;   s;\^+;\^;g;   s;:\|;:;g;
+          :X;   s;\^[^:]*:\^;\^;g;   /\^[^:]*:\^/bX;
+          s;^\^;;;   s;\^[^:]*:$;;;'
+)"
+
+case $(POST choice) in
+  filter)
+    REDIRECT "/cards/?o=$(POST order)&f=${filter}"
+    ;;
+  new_filter)
+    REDIRECT "/cards/?o=$(POST order)&f=${filter}&newfilter=yes"
+    ;;
+  *)
+    REDIRECT '/cards/'
+    ;;
+esac