]> git.plutz.net Git - confetti/blobdiff - cards/filter_card.sh
merge from cgilite
[confetti] / cards / filter_card.sh
diff --git a/cards/filter_card.sh b/cards/filter_card.sh
new file mode 100755 (executable)
index 0000000..aacacbb
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# Copyright 2014, 2017, 2019 Paul Hänsch
+#
+# This file is part of Confetti.
+# 
+# Confetti is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# Confetti is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with Confetti.  If not, see <http://www.gnu.org/licenses/>. 
+
+filter="$(
+  seq 0 100 |while read n; do
+    filter_type="$(POST "filter_type${n}")"
+    filter_text="$(POST "filter_text${n}")"
+    if [ ! "$filter_type" -a ! "$filter_text"  ]; then
+      break
+    elif [ "$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
+    elif [ "$filter_type" = course ]; then
+      printf '^course:'
+      seq 0 $(POST_COUNT filter_course$n) |while read m; do
+        printf '|%s' "$(POST filter_course$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"
+    ;;
+  export_csv)
+    REDIRECT "/cards/export_csv.sh?o=$(POST order)&f=${filter}"
+    ;;
+  *)
+    REDIRECT '/cards/'
+    ;;
+esac