X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=poll.sh;h=8e55600ed85ecabf7b766e88f6e930cbd415c64a;hb=HEAD;hp=d7c0defa4b0cc896a24965327d2e2a6e7b8081e6;hpb=5238c404a50861cf1dbbe610d2c4977c048d3b12;p=webpoll diff --git a/poll.sh b/poll.sh index d7c0def..8e55600 100644 --- a/poll.sh +++ b/poll.sh @@ -1,10 +1,25 @@ #!/bin/sh +. "${_EXEC}/comments.sh" +. "${_EXEC}/languages.sh" + id="$(checkid "${PATH_INFO#/}")" file="${_DATA}/${id}" #cancel if poll is invalid -[ "$id" -a -f "$file" ] || REDIRECT "$_BASE/" +if [ ! "$id" -o ! -f "$file" ]; then + page_home; + return 0 +fi + +if expr match "$bookmarks" ".*${id}.*" >/dev/null; then + : +elif [ "$bookmarks" ]; then + SET_COOKIE +$((182 * 86400)) bookmarks="${bookmarks} ${id}" Path="${_BASE}/" +fi + +admin="$(expr match "$bookmarks" ".*$id/\([a-zA-Z0-9:=]\{16\}\).*")" +admin="$(DBM "$file" get adminkey |grep -xF "$admin")" tkey() { # convert time stamps for use in POST keys @@ -60,6 +75,8 @@ table_poll() { local edit="$(GET edit)" local time date span name yes no maybe yc nc mc + table_date="${table_date:-"%A
%B %_d, %Y"}" + [ "$timelist" ] || return 1 printf '[table .poll [thead\n' @@ -70,7 +87,7 @@ table_poll() { span=0; for time in $timelist; do case $time in ${date}*) span=$((span + 1));; esac; done - date -d "$date" +"[th colspan=\"${span}\" . %A
%B %_d, %Y]"; + date -d "$date" +"[th colspan=\"${span}\" . ${table_date}]"; done printf '[th]]\n' fi @@ -79,8 +96,12 @@ table_poll() { if [ "$splittimes" = yes -o "$todall" ]; then printf '[tr .tod [th]' for time in $timelist; do - [ "${time#*_}" = "${time}" ] && time="${time}_" - printf '[th . %s]' "${time#*_}" + case $time in + *-*-*_*:*) time="${time#*_}";; + *-*-*) time="";; + *:*);; # time="${time}" + esac + printf '[th . %s]' "${time}" done printf '[th]]\n' fi @@ -196,6 +217,10 @@ if [ "$REQUEST_METHOD" = POST ]; then DBM "$file" delete "reply_yes_${delete}" DBM "$file" delete "reply_no_${delete}" DBM "$file" delete "reply_maybe_${delete}" + + elif [ "$(POST bookmark)" -a ! "$bookmarks" ]; then + SET_COOKIE +$((182 * 86400)) bookmarks="${id}" Path="${_BASE}/" + fi REDIRECT "${_BASE}${PATH_INFO}" @@ -203,12 +228,24 @@ else pagename="$(pagename "$id")" yield_page "$pagename" poll <<-EOF - [form method=POST + [main [section .description [h1 .title $(HTML "$pagename")] $(DBM "$file" get description |markdown) ] - $(table_poll || printf '[p Poll parameters are invalid]') + [form method=POST + $(table_poll || printf '[p Poll parameters are invalid]') + + $(if [ "$admin" ]; then + printf '[section .bookmark You have bookmarked the admin page of this poll: [a href="./%s" modify poll]]' "$(URL ${id}/${admin})" + elif [ "$bookmarks" ]; then + printf '[section .bookmark This poll has been bookmarked and is accessible via a link on the front page.]' + else + printf '[section .bookmark Polls are accessible only via their URL. You can set a Cookie to bookmark all polls you visit. Bookmarked polls will be listed on the frontpage.
[submit "bookmark" "add" Set Cookie]]' + fi) + ] + + $(w_comments) ] EOF fi