From 7f927856071799039923e9e1f00652819792987a Mon Sep 17 00:00:00 2001 From: paul <paul@plutz.net> Date: Thu, 28 Nov 2013 03:50:44 +0000 Subject: [PATCH] improved visual style svn path=/trunk/; revision=22 --- export.sh | 9 +++ index.cgi | 8 +- pages/attendees.sh | 2 +- templates/attendees.css.sh | 71 +++++++++++------- templates/attendees.html.sh | 1 - templates/text_attendee.sh | 2 + templates/view_attendee.sh | 142 +++++++++++++++++++++++++----------- 7 files changed, 160 insertions(+), 75 deletions(-) create mode 100755 export.sh diff --git a/export.sh b/export.sh new file mode 100755 index 0000000..aa8570a --- /dev/null +++ b/export.sh @@ -0,0 +1,9 @@ +#!/bin/zsh + +case "$_GET[\"export\"]" in + vcard) + echo -n "Content-Type: text/vcard;charset=utf-8\n\n" + card="$_GET[\"card\"]" + cat "$_DATA/vcard/$card" + ;; +esac diff --git a/index.cgi b/index.cgi index 6bd36d5..a7edbb1 100755 --- a/index.cgi +++ b/index.cgi @@ -46,4 +46,10 @@ cgi_get . "$_EXEC/constants.sh" -[ -n "$_GET[\"action\"]" ] && . "$_EXEC/action.sh" || . "$_EXEC/page.sh" +if [ -n "$_GET[\"action\"]" ]; then + . "$_EXEC/action.sh" +elif [ -n "$_GET[\"export\"]" ]; then + . "$_EXEC/export.sh" +else + . "$_EXEC/page.sh" +fi diff --git a/pages/attendees.sh b/pages/attendees.sh index aecc95d..00bbd43 100755 --- a/pages/attendees.sh +++ b/pages/attendees.sh @@ -124,7 +124,7 @@ vcf_parse() { ;; *) [ -n "$n" ] && fn="$n" - [ -n "$fn" -a -n "$nick" ] && fn="$fn aka. $nick" + #[ -n "$fn" -a -n "$nick" ] && fn="$fn aka. $nick" [ -n "$fn" ] && echo -E "003 FN:$fn" \ || echo -E "003 FN:$nick" echo -E "$line" diff --git a/templates/attendees.css.sh b/templates/attendees.css.sh index c024559..126a952 100644 --- a/templates/attendees.css.sh +++ b/templates/attendees.css.sh @@ -6,48 +6,63 @@ cat <<EOF #cardlist {} .cardlist .card { - margin: 4px 10%; + margin: 4px 5%; border-width: 1px; border-style: solid; - padding: .5em 1em 1em 120px; + padding: 0; overflow: auto; - min-height: 160px; + width:130ex; display: block; } -.cardlist .card .PHOTO { - float: left; - position: relative; - left: -110px; - border-width: 1px; - border-style: solid; - padding: 1px; - margin: 1em -110px 1em .5em; - width: 96px; - max-height: 144px; +.cardlist .card .section { + float:left; + display: inline-block; + width: 20ex; + margin: .125em .5ex .5ex .5ex; + background: #EEE; + padding: 0 .2em .2em .2em; +} +.cardlist .card .control { + float: right; + background: #EEF; + text-align: right; + margin-right: 0; +} +.cardlist .card .control .item { + margin-right: 1ex; + border-style: solid double solid solid; + border-width: 1px 3px 1px 1px; + background: #FFF; + padding: .1em 1ex; + min-width: 10ex; + margin-top: .2em; + border-color: #000; } - -.cardlist .card .item { +.cardlist .card .control .item:hover{ + border-width: 1px 1px 1px 1px; +} + +.cardlist .card .section .sectitle { display: block; - white-space: nowrap; - height: 1.2em; + font-weight: bold; + margin: .2em .2em .2em .2em; } -.cardlist .card .KEY { - display: inline; - margin: 0px; - font: normal bold 1em sans-serif; +.cardlist .card .section .item { + max-width: 20ex; + display: block; + word-wrap: break-word; } -.cardlist .card .VALUE { - display: inline; - margin: 0px; - font: normal normal 1em sans-serif; +.cardlist .card .section .PHOTO { + width: 20ex; + max-heigth: 30ex; } -.cardlist .card .FN { - margin: .25em .5em 1em 0px; - font: normal bold 2em sans-serif; +.cardlist .card .section .FN { + font-weight: bold; + font-size: 1.2em; } EOF diff --git a/templates/attendees.html.sh b/templates/attendees.html.sh index c4430a7..337de10 100644 --- a/templates/attendees.html.sh +++ b/templates/attendees.html.sh @@ -55,7 +55,6 @@ $(listcards |while read card; do x_EOF else cat <<x_EOF <div id="${id}" class="card"> - <p class="control"><a href="?page=attendees&edit=${id}#${id}">$(l10n edit)</a></p> $(view_attendee "$id") </div> x_EOF diff --git a/templates/text_attendee.sh b/templates/text_attendee.sh index 509fb47..1942b9f 100755 --- a/templates/text_attendee.sh +++ b/templates/text_attendee.sh @@ -51,6 +51,8 @@ item_name[VERSION]="" item_name[XML]="" item_name[edit]="Bearbeiten" +item_name[vcf_export]="Vcard Exportieren" +item_name[control]="Aktionen" item_name[edit_update]="Daten Ãbernehmen" item_name[edit_cancel]="Abbrechen" item_name[edit_addfieldtext]="Feld hinzufügen" diff --git a/templates/view_attendee.sh b/templates/view_attendee.sh index a96444a..c8a80fb 100755 --- a/templates/view_attendee.sh +++ b/templates/view_attendee.sh @@ -1,49 +1,103 @@ -view_card_item() { - case "$key" in - BEGIN|VERSION|END|N|NICKNAME);; - PHOTO) - echo "<img class=\"PHOTO\" src=\"data:image/$tag[TYPE];base64,$value\"/>" - ;; - FN) - echo "<h2 CLASS=\"FN\">$value</h2>" - ;; - *) - echo -n "<span class=\"item\"><span class=\"KEY $key\">$(l10n "$key")" - [ -n "$tag[TYPE]" ] && echo -n "($tag[TYPE])" - echo ":</span>" - ;| - EMAIL) - echo "<a href=\"mailto:$value\" class=\"VALUE $key\">$value</a></span>" - ;; - IMPP) - echo "<a href=\"$value\" class=\"VALUE $key\">"$(echo "$value" |cut -d: -f2-)"</a></span>" - ;; - *) - echo "<span class=\"VALUE $key\">$value</span></span>" - ;; - esac +print_card() { + echo ' <div class="section basic">' + echo ' <span class="item FN">'$values[FN]'</span>' + [ -n "$value[GENDER]" ] && \ + echo ' <span class="item GENDER">'$(l10n $values[GENDER])'</span>' + for n in NICKNAME NICKNAME{0..10}; do [ -n "$values[$n]" ] &&\ + echo ' <span class="item NICKNAME">aka. '$values[$n]'</span>' + done + [ -n "$values[BDAY]" ] &&\ + echo ' <span class="item BDAY"><b>*:</b> '$values[BDAY]'</span>' + if [ -n "$values[SOUND]" ]; then + echo ' <audio controls="controls" class="item SOUND">' + echo ' <source type="audio/ogg" src="data:audio/ogg;base64,'$values[SOUND]'" />' + echo ' </audio>' + fi + [ -n "$values[PHOTO]" ] &&\ + echo ' <img class="item PHOTO" src="data:image/'$tags[PHOTO_TYPE]';base64,'$values[PHOTO]'" />' + [ -n "$values[LOGO]" ] &&\ + echo ' <img class="item LOGO" src="data:image/'$tags[LOGO_TYPE]';base64,'$values[LOGO]'" />' + echo ' </div>' + echo '' + echo ' <div class="section phone">' + echo ' <span class="sectitle">'$(l10n TEL)'</span>' + for n in TEL TEL{0..10}; do [ -n "$values[$n]" ] &&\ + echo ' <span class="item TEL">'$tags[${n}_TYPE]' '$values[$n]'</span>' + done + echo ' </div>' + echo '' + echo ' <div class="section message">' + echo ' <span class="sectitle">'$(l10n EMAIL)'</span>' + for n in EMAIL EMAIL{0..10}; do [ -n "$values[$n]" ] &&\ + echo ' <span class="item EMAIL"><a href="mailto:'$values[$n]'">'$values[$n]'</a></span>' + done + [ -n "$values[IMPP]" ] && \ + echo ' <span class="sectitle">'$(l10n IMPP)'</span>' + for n in IMPP IMPP{0..10}; do [ -n "$values[$n]" ] &&\ + echo ' <span class="item IMPP">'$tags[${n}_TYPE]' <a href="'$values[$n]'">'$values[$n]'</a></span>' + done + echo ' </div>' + echo '' + echo ' <div class="section address">' + echo ' <span class="sectitle">'$(l10n ADR)'</span>' + for n in ADR ADR{0..10}; do [ -n "$values[$n]" ] &&\ + echo ' <span class="item ADR">'$values[$n]'</span>' + done + [ -n "$values[URL]" ] && \ + echo ' <span class="sectitle">'$(l10n URL)'</span>' + for n in URL URL{0..10}; do [ -n "$values[$n]" ] &&\ + echo ' <span class="item URL"><a href="'$values[$n]'">'$values[$n]'</a></span>' + done + echo ' </div>' + echo '' + echo ' <div class="section note">' + echo ' <span class="sectitle">'$(l10n NOTE)'</span>' + for n in NOTE NOTE{0..10}; do [ -n "$values[$n]" ] &&\ + echo ' <span class="item IMPP">'$values[$n]'</span>' + done + echo ' </div>' + echo '' + echo ' <div class="section control">' + echo ' <a class="item control" href="?page=attendees&edit='${id}'#'${id}'">'$(l10n edit)'</a>' + echo ' <a class="item control" href="?export=vcard&card='${id}'">'$(l10n vcf_export)'</a>' + echo ' </div>' } view_attendee() { #Parameter: Cardfile - cardfile="vcard/$1" - cachefile="cache/${1}.cache" + id="$1" + cardfile="vcard/$id" + cachefile="cache/${id}.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";; - tag*) eval "$line";; - key*) - if [ -z "$key" ]; then - eval "$line" - else - view_card_item - eval "$line" - unset value - unset tag - fi - ;; - esac - done |tee "$cachefile" + if [ "$cachefile" -nt "$cardfile" ]; then + cat "$cachefile" + else + declare -A tags + declare -A values + 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 + values[$key]="$value" + for t in ${(k)tag}; do + tags[${key}_$t]="$tag[$t]" + done + eval "$line" + if [ -n "$values[$key]" ]; then + n=0 + while [ -n "$values[$key$n]" ]; do n=$(($n + 1)); done + key=$key$n + fi + unset value + unset tag + fi + ;; + esac + done + print_card |tee "$cachefile" + fi } -- 2.39.5