multiple logical fixes in vcard updater
[confetti] / templates / view_attendee.sh
1 print_card() {
2   echo '  <div class="section basic">'
3   echo '    <span class="item FN">'$values[FN]'</span>'
4   [ -n "$value[GENDER]" ] && \
5     echo '    <span class="item GENDER">'$(l10n $values[GENDER])'</span>'
6   for n in NICKNAME NICKNAME{0..10}; do [ -n "$values[$n]" ] &&\
7     echo '    <span class="item NICKNAME">aka. '$values[$n]'</span>'
8   done
9   [ -n "$values[BDAY]" ] &&\
10     echo '    <span class="item BDAY"><b>*:</b> '$values[BDAY]'</span>'
11   if [ -n "$values[SOUND]" ]; then
12     echo '    <audio controls="controls" class="item SOUND">'
13     echo '      <source type="audio/ogg" src="data:audio/ogg;base64,'$values[SOUND]'" />'
14     echo '    </audio>'
15   fi
16   [ -n "$values[PHOTO]" ] &&\
17     echo '    <img class="item PHOTO" src="data:image/'$tags[PHOTO_TYPE]';base64,'$values[PHOTO]'" />'
18   [ -n "$values[LOGO]" ] &&\
19     echo '    <img class="item LOGO" src="data:image/'$tags[LOGO_TYPE]';base64,'$values[LOGO]'" />'
20   echo '  </div>'
21   echo ''
22   echo '  <div class="section phone">'
23   echo '    <span class="sectitle">'$(l10n TEL)'</span>'
24   for n in TEL TEL{0..10}; do [ -n "$values[$n]" ] &&\
25     echo '    <span class="item TEL">'$tags[${n}_TYPE]' '$values[$n]'</span>'
26   done
27   echo '  </div>'
28   echo ''
29   echo '  <div class="section message">'
30   [ -n "$values[EMAIL]" ] && \
31     echo '    <span class="sectitle">'$(l10n EMAIL)'</span>'
32   for n in EMAIL EMAIL{0..10}; do [ -n "$values[$n]" ] &&\
33     echo '    <span class="item EMAIL"><a href="mailto:'$values[$n]'">'$values[$n]'</a></span>'
34   done
35   [ -n "$values[IMPP]" ] && \
36     echo '    <span class="sectitle">'$(l10n IMPP)'</span>'
37   for n in IMPP IMPP{0..10}; do [ -n "$values[$n]" ] &&\
38     echo '    <span class="item IMPP">'$tags[${n}_TYPE]' <a href="'$values[$n]'">'$values[$n]'</a></span>'
39   done
40   echo '  </div>'
41   echo ''
42   echo '  <div class="section address">'
43   echo '    <span class="sectitle">'$(l10n ADR)'</span>'
44   for n in ADR ADR{0..10}; do [ -n "$values[$n]" ] &&\
45     echo '    <span class="item ADR">'$values[$n]'</span>'
46   done
47   [ -n "$values[URL]" ] && \
48     echo '    <span class="sectitle">'$(l10n URL)'</span>'
49   for n in URL URL{0..10}; do [ -n "$values[$n]" ] &&\
50     echo '    <span class="item URL"><a href="'$values[$n]'">'$values[$n]'</a></span>'
51   done
52   echo '  </div>'
53   echo ''
54   echo '  <div class="section note">'
55   echo '    <span class="sectitle">'$(l10n NOTE)'</span>'
56   for n in NOTE NOTE{0..10}; do [ -n "$values[$n]" ] &&\
57     echo '    <span class="item NOTE">'$values[$n]'</span>'
58   done
59   echo '  </div>'
60   echo ''
61   echo '  <div class="section control">'
62   echo '    <a class="item control" href="?page=attendees&edit='${id}'#'${id}'">'$(l10n edit)'</a>'
63   echo '    <a class="item control" href="?export=vcard&card='${id}'">'$(l10n vcf_export)'</a>'
64   echo '  </div>'
65 }
66
67 view_attendee() {  #Parameter: Cardfile
68   id="$1"
69   cardfile="vcard/$id"
70   cachefile="cache/${id}.cache"
71   unset key
72   if [ "$cachefile" -nt "$cardfile" ]; then
73     cat "$cachefile"
74   else
75     declare -A tags
76     declare -A values
77     vcf_parse "$cardfile" |while read -r line; do
78       declare -A tag
79       case "$line" in
80         value*) eval "$line";;
81         tag*)   eval "$line";;
82         key*)
83           if [ -z "$key" ]; then
84             eval "$line"
85           else
86             values[$key]="$value"
87             for t in ${(k)tag}; do
88               tags[${key}_$t]="$tag[$t]"
89             done
90             eval "$line"
91             if [ -n "$values[$key]" ]; then
92               n=0
93               while [ -n "$values[$key$n]" ]; do n=$(($n + 1)); done
94               key=$key$n
95             fi
96             unset value
97             unset tag
98           fi
99         ;;
100       esac
101     done
102     print_card |tee "$cachefile"
103   fi
104 }