]> git.plutz.net Git - confetti/blobdiff - templates/view_attendee.sh
basic editing functions
[confetti] / templates / view_attendee.sh
index 8a0f2d53b6aae0170ef544de02c6fdcadc8367b1..01fb3f0383565c3f9baa56a26aac6b1eb2367705 100755 (executable)
@@ -44,7 +44,7 @@ item_name[VERSION]=""
 item_name[XML]=""
 
 l10n() {
-  [ -n "$item_name[$1]" ] && echo "$item_name[$1]" || echo "$1"
+  [ -n "$item_name[$1]" ] && echo -n "$item_name[$1]" || echo -n "$1"
 }
 
 view_card_item() {
@@ -57,8 +57,8 @@ view_card_item() {
       echo "<h2 CLASS=\"FN\">$value</h2>"
       ;;
     *)
-      echo "<span class=\"item\"><span class=\"KEY $key\">$(l10n "$key")"
-      [ -n "$tag[TYPE]" ] && echo "($tag[TYPE])"
+      echo -n "<span class=\"item\"><span class=\"KEY $key\">$(l10n "$key")"
+      [ -n "$tag[TYPE]" ] && echo -n "($tag[TYPE])"
       echo ":</span>"
       ;|
     EMAIL)
@@ -73,9 +73,29 @@ view_card_item() {
   esac
 }
 
+edit_card_item() {
+  case "$key" in
+    BEGIN|VERSION|END);;
+    PHOTO)
+      echo "<img class=\"PHOTO\" src=\"data:image/$tag[TYPE];base64,$value\"/>"
+      ;;
+    *)
+      echo -n "<span class=\"item\"><span class=\"KEY\">$(l10n "$key")"
+      [ -n "$tag[TYPE]" ] && echo -n "($tag[TYPE])"
+      echo ":</span>"
+      ;|
+    *)
+      echo "<input class=\"VALUE\" name=\"$key\" value=\"$value\" /></item>"
+      ;;
+  esac
+}
+
 view_attendee() {  #Parameter: Cardfile
-  key=""
-  vcf_parse "$1" |while read -r line; do
+  cardfile="$1"
+  cachefile="cache/vcf_$(basename "$cardfile").cache"
+  unset key
+  [ "$cachefile" -nt "$cardfile" ] && cat "$cachefile" \
+  || vcf_parse "$cardfile" |while read -r line; do
     declare -A tag
     case "$line" in
       value*) eval "$line";;
@@ -86,6 +106,30 @@ view_attendee() {  #Parameter: Cardfile
         else
           view_card_item
           eval "$line"
+         unset value
+         unset tag
+        fi
+      ;;
+    esac
+  done |tee "$cachefile"
+}
+
+edit_attendee() {
+  cardfile="$1"
+  unset key
+  vcf_parse "$cardfile" |while read -r line; do
+    declare -A tag
+    case "$line" in
+      value*) eval "$line";;
+      tag*)   eval "$line";;
+      key*)
+        if [ -z "$key" ]; then
+          eval "$line"
+        else
+          edit_card_item
+          eval "$line"
+         unset value
+         unset tag
         fi
       ;;
     esac