]> git.plutz.net Git - confetti/blobdiff - cards/new_card.sh
styling for iban assignment
[confetti] / cards / new_card.sh
index edc7bc920edc9c087cb7c7c1dc8d8c9e6e22d7d0..69f89c662f87dfa6fb3a35cc5a3520d0ac446f10 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/zsh
+#!/bin/sh
 
 # Copyright 2014, 2019 Paul Hänsch
 #
@@ -23,6 +23,31 @@ order="$(REF o)"
 uid="$(timeid)$(randomid)"  # 32 Octets UID, starting with timestamp
 card="${uid}.vcf"
 
+vcf_escape(){
+  for each in "$@"; do
+    printf %s\\n "$each" \
+    | sed -E ':X;$!{N;bX}; s;\r\n;\n;g; s;([;,\\]);\\\1;g; s;\n;\\n;g;'
+  done \
+  | sed -E ':X;$!{N;bX}; s;\n;\;;g'
+}
+
+IFS='|' read -r date fn ln bday bmonth byear tel tcell junk1 email junk2 note <<-EOF
+       $(POST seed |tr \\t \|)
+       EOF
+
+[ ${#byear} = 1 ] && byear="200$byear"
+[ ${#byear} = 2 ] && byear="20$byear"
+[ ${#bmonth} = 1 ] && bmonth="0$bmonth"
+[ ${#bday} = 1 ] && bday="0$bday"
+
+mn=""
+case $fn in
+  *\ *)
+    mn="${fn#* }"
+    fn="${fn%% *}"
+    ;;
+esac
+
 mkdir -p "${_DATA}/lock/vcard/"
 lockdir="${_DATA}/lock/vcard/${card}/"
 lockfile=${lockdir}/${SESSION_ID}
@@ -31,17 +56,20 @@ if mkdir "$lockdir"; then
   cat >"$lockfile" <<-EOF
        BEGIN:VCARD
        VERSION:4.0
-       N:;;;;
-       BDAY:
-       TEL:
-       EMAIL:
+       N:$(vcf_escape "$ln" "$fn" "$mn" "" "")
+       FN:$(vcf_escape "${fn}${mn:+ }${mn} ${ln}")
+       BDAY:$(parse_date "${byear}-${bmonth}-${bday}")
+       TEL:$(vcf_escape "$tel")
+       TEL;TYPE=CELL:$(vcf_escape "$tcell")
+       EMAIL:$(vcf_escape "$email")
+       X-ZACK-JOINDATE:$(parse_date "$date")
        ADR:
-       NOTE:
+       NOTE:$(vcf_escape "$note")
        UID:${uid}
        END:VCARD
        EOF
-  REDIRECT "/cards/?o=${order}&f=${filter}&e=${card}"
+  REDIRECT "${_BASE}/cards/?o=${order}&f=${filter}&e=${card}"
 else
   SET_COOKIE session message="EDITLOCK"
-  REDIRECT "/cards/?o=${order}&f=${filter}"
+  REDIRECT "${_BASE}/cards/?o=${order}&f=${filter}"
 fi