assignment of categories
authorpaul <paul@plutz.net>
Mon, 17 Oct 2016 14:14:35 +0000 (14:14 +0000)
committerpaul <paul@plutz.net>
Mon, 17 Oct 2016 14:14:35 +0000 (14:14 +0000)
svn path=/trunk/; revision=133

actions/edit_categories.sh
actions/update_categories.sh [new file with mode: 0755]

index 7f767e9..2c34d26 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/zsh
 
-# Copyright 2015 Paul Hänsch
+# Copyright 2015 - 2016 Paul Hänsch
 #
 # This file is part of Confetti.
 # 
@@ -18,7 +18,6 @@
 # along with Confetti.  If not, see <http://www.gnu.org/licenses/>. 
 
 catfile="${_DATA}/mappings/categories"
-cgi_post
 
 remove="${_POST[remove]}"
 newcat="${_POST[newcat]}"
diff --git a/actions/update_categories.sh b/actions/update_categories.sh
new file mode 100755 (executable)
index 0000000..c3b2e4c
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/zsh
+
+# Copyright 2016 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/>. 
+
+. "$_EXEC"/pages/categories.sh
+
+catfile="${_DATA}/mappings/categories"
+
+set_categories(){
+  card="${_DATA}/vcard/$1"
+  cats="$2"
+  cardcats="$(sed -nr 's;^CATEGORIES(\;[^":]+|\;"[^"]+")*:([^\r]+)\r?$;\2;p' "$card")"
+
+  debug "CARD: $card"
+  debug "CATS: $cardcats"
+  debug "NEW:  $cats"
+  if [ "$cats" != "$cardcats" ]; then
+    sed -ri '
+      /^CATEGORIES[;:]/d
+      /^END:VCARD *\r?$/iCATEGORIES:'"$cats"'\r
+    ' "${card}"
+  fi
+}
+
+listcards |while read card; do
+  cardcats=''
+  for n in "$card" "$card"{0..100}; do
+    if [ -z "${_POST[$n]}" ]; then
+      set_categories "$card" "$cardcats"
+      break
+    fi
+    cardcats="${cardcats}${cardcats:+,}${_POST[$n]}"
+  done
+done
+
+redirect "?p=categories"