gph-poll

a dynamic poll for geomyidae(8)
git clone git://src.adamsgaard.dk/gph-poll # fast
git clone https://src.adamsgaard.dk/gph-poll.git # slow
Log | Files | Refs | LICENSE Back to index

commit afc543e950f5de12d04241690ddcc9e555ce744e
parent f376c25d72b12a1a4db4f0343bd00af1915a5504
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date:   Tue, 30 Mar 2021 13:54:08 +0200

allow voting by selecting items in ranking

Diffstat:
Mindex.dcgi | 30+++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/index.dcgi b/index.dcgi @@ -9,12 +9,14 @@ polldb="poll.db" polldescription="description.txt" polldir="poll" -# TODO: Lock access for database trimming. -if [ -n "${search}" ]; then +if [ -n "${search}" -o "${arguments}" ]; then tmpdb="$(mktemp)" - tail -n 99 "${polldb}" > "${tmpdb}" - printf "%s\n" "${search}" | expand -t 4 >> "${tmpdb}" - mv "${tmpdb}" "${polldb}" + if [ -r "$polldb" ]; then + tail -n 99 "${polldb}" > "${tmpdb}" + fi + printf "%s%s\n" "${search}" "${arguments}" \ + | expand -t 4 >> "${tmpdb}" + cat "${tmpdb}" > "${polldb}" fi printf '\n' @@ -23,11 +25,17 @@ if [ -r "$polldescription" ]; then cat "$polldescription" fi -printf '[7|Your choice: _______|/%s|server|port]\n\n' "$polldir" -printf 'Ranking:\n\n' +if [ -r "$polldb" ]; then + printf '\nRanking:\n\n' + sort "${polldb}" \ + | uniq -c \ + | sort -nr \ + | while read -r count option; do + printf '[1|(%s) %s|/%s?%s|server|port]\n' \ + "$count" "$option" "$polldir" "$option" + done +fi -sort "${polldb}" \ - | uniq -c \ - | sort -nr +printf '\n[7|Add new choice: _______|/%s|server|port]\n' "$polldir" -printf '\n[1|<< back|/|server|port]\r\n' +printf '\n[1|<< back|/|server|port]\n'