]> git.plutz.net Git - webpoll/blobdiff - poll.sh
bugfix: avoid octal interpretation of leading zeros
[webpoll] / poll.sh
diff --git a/poll.sh b/poll.sh
index d7c0defa4b0cc896a24965327d2e2a6e7b8081e6..bb5bc8db1d213dc0b46d3bdebacfe5a24d257c3f 100644 (file)
--- a/poll.sh
+++ b/poll.sh
@@ -4,7 +4,19 @@ 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
@@ -79,8 +91,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 +212,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}"
   
@@ -209,6 +229,13 @@ else
            $(DBM "$file" get description |markdown)
          ]
          $(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.<br/> [submit "bookmark" "add" Set Cookie]]'
+          fi)
        ]
        EOF
 fi