From aba687547fe6e800530a9c20ccab24fc2152d6b0 Mon Sep 17 00:00:00 2001 From: paul Date: Mon, 17 Oct 2016 14:14:35 +0000 Subject: [PATCH] assignment of categories svn path=/trunk/; revision=133 --- actions/edit_categories.sh | 3 +-- actions/update_categories.sh | 51 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100755 actions/update_categories.sh diff --git a/actions/edit_categories.sh b/actions/edit_categories.sh index 7f767e9..2c34d26 100755 --- a/actions/edit_categories.sh +++ b/actions/edit_categories.sh @@ -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 . 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 index 0000000..c3b2e4c --- /dev/null +++ b/actions/update_categories.sh @@ -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 . + +. "$_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" -- 2.39.2