]> git.plutz.net Git - serve0/blobdiff - actions/multitag.sh
rename p attribute to pn, and use p for cgi page name instead
[serve0] / actions / multitag.sh
index b321257a2729ee370ca87b0a7d0b7f50df132241..ddd96c3f47a20666b165d749a6ee8e5efb1e6436 100755 (executable)
@@ -1,5 +1,10 @@
 #!/bin/zsh
 
+filter="$_GET[\"f\"]"
+search="$_GET[\"s\"]"
+order=$(echo "$_GET[\"o\"]" |egrep '^(Name|Date|Length)$')
+page=$(echo "$_GET[\"pn\"]" |egrep '^[0-9]+$')
+
 addtag(){
   meta="$1"
   tag="$2"
@@ -20,30 +25,26 @@ $description
 EOF
 }
 
-n=0
-if [ -n "${CONTENT_LENGTH}" -a "${CONTENT_LENGTH}" -gt 0 ]; then
-(head -c "${CONTENT_LENGTH}"; echo)|sed 's/&/\n/g' |while read line; do
-  if expr "$line" : "tagsel=" >/dev/null; then
-    n=$(($n + 1))
-    tagsel[$n]="$(echo -e "$(sed -nr 's:(^|&)tagsel=(.*)(&|$):\2:;s:&.*$::;s:\+: :g;s:%:\\x:g;p' <<<"$line" )")"
-  elif expr "$line" : "ctag=" >/dev/null; then
-    tag="$(sed -r 's:^ctag=(.*)$:\1:;s:\+:_:g;s:%:\\x:g' <<<"$line")"
-    tag="$(echo -e "${tag}" |sed -r 's:\t| :_:g;s:^!|\r|\$|\^::g;s:\\:\\\\:g;s/</\&lt\;/g;s/>/\&gt\;/g')"
-    for i in {1..$n}; do
-      addtag "${_DATA}/meta/$tagsel[$i].meta" "$tag"
-      rm "${_DATA}/cache/$tagsel[$i].cache" 2>/dev/null
+cgi_post
+n=''
+while [ -n "$_POST[\"tagsel$n\"]" ]; do
+  tagsel="$_POST[\"tagsel$n\"]"
+  ( t=''
+    while [ -n "$_POST[\"ctag$t\"]" ]; do
+      echo "$_POST[\"ctag$t\"]"
+      [ -z "$t" ] && t=0 || t=$(($t + 1))
     done
-  elif expr "$line" : 'tags=.\+' >/dev/null; then
-    tags="$(sed -r 's:^tags=(.*)$:\1:;s:\+:_:g;s:%:\\x:g' <<<"$line")"
-    tags="$(echo -e "${tags}" |sed -r 's:\t| :_:g;s:^!|\r|\$|\^::g;s:\\:\\\\:g;s/</\&lt\;/g;s/>/\&gt\;/g')"
-    for i in {1..$n}; do echo "$tags" |while read tag; do
-      addtag "${_DATA}/meta/$tagsel[$i].meta" "$tag"
-      rm "${_DATA}/cache/$tagsel[$i].cache" 2>/dev/null
-    done; done
-  fi
+    echo "$_POST[\"tags\"]"
+  ) |sed -r 's:\t| :_:g;s:^!|\r|\$|\^::g;s:\\:\\\\:g;s/</\&lt\;/g;s/>/\&gt\;/g' \
+  | while read tag; do
+    addtag "${_DATA}/meta/$tagsel.meta" "$tag"
+  done
+  rm "${_DATA}/cache/$tagsel.cache" 2>/dev/null
+
+  [ -z "$n" ] && n=0 || n=$(($n + 1))
 done
-fi
 
 rm "${_DATA}"/cache/\?* 2>/dev/null
+[ -n "$_POST[\"tags\"]" ] && rm "${_DATA}"/cache/taglist 2>/dev/null
 
-echo -n "Location: i?${QUERY_STRING}#$info\n\n"
+echo -n "Location: ?o=$order&s=$search&f=$filter&pn=$page\n\n"