X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=index.cgi;h=efae974727b9340b4206c613059a3648de079ab8;hb=3fdd2a599459588ed9054c16ce20b79d27faa353;hp=37fb901dc293102c0b2e29828cf56dcf38507006;hpb=29d373df8f2b25ef5866f63d354d3553b3bbbead;p=webpoll diff --git a/index.cgi b/index.cgi index 37fb901..efae974 100755 --- a/index.cgi +++ b/index.cgi @@ -44,8 +44,8 @@ pagename() { fi } -[ "$REQUEST_METHOD" = POST ] && case ${PATH_INFO} in - /) +page_home() { + if [ "$REQUEST_METHOD" = POST ]; then case $(POST start) in date) id="$(randomid)" @@ -58,55 +58,10 @@ pagename() { REDIRECT "$_BASE/$id/newoptions" ;; *) REDIRECT "$_BASE/";; - esac - ;; - /*/newdate) - id="${PATH_INFO%/newdate}"; id="${id#/}" - file="$_DATA/$id" - month="$(POST month |grep -m 1 -xE '[0-9]{4}-(0[1-9]|1[012])')" - todremove="$(POST todremove |grep -m 1 -xE '[0-9]+')" - DBM "$file" set title "$(POST title)" - DBM "$file" set description "$(POST description)" - DBM "$file" set dates "$( - for date in $(seq 1 $(POST_COUNT date)); do - POST date "$date" - printf \\n - done \ - | grep -xE '^[0-9]{4}-((01|03|05|07|08|10|12)-([012][0-9]|3[01])|(04|06|09|11)-([012][0-9]|30)|02-[012][0-9])$' \ - | sort -u - )" - DBM "$file" set todall "$( - for todcount in $(seq 1 $(POST_COUNT todstart)); do - [ "$todremove" -eq "$todcount" ] 2>&- && continue; - todstart="$(POST todstart "$todcount")" - todend="$(POST todend "$todcount")" - [ "${todstart%:??}" -lt "${todend%:??}" -o "${todstart%:??}" -eq "${todend%:??}" -a "${todstart#*:}" -lt "${todend#*:}" ] \ - 2>&- \ - && { printf '%02i:%02i-%02i:%02i\n' "${todstart%:??}" "${todstart#*:}" "${todend%:??}" "${todend#*:}"; }\ - || { [ "${todstart%:??}" -ge 0 -a "${todstart#*:}" -ge 0 ] 2>&- && printf '%02i:%02i-\n' "${todstart%:??}" "${todstart#*:}"; } - done |grep -xE '^([01][0-9]|2[0-3]):([0-5][0-9])-(([01][0-9]|2[0-3]):([0-5][0-9]))?$' |sort -u - )" - if [ "$(POST cancel)" = cancel ]; then - rm -- "$file" - REDIRECT "$_BASE/" - elif [ "$(POST addtime)" = global ]; then - DBM "$file" append todall "${BR}-" - REDIRECT "$_BASE$PATH_INFO${month:+?month=}${month}" - elif [ "$month" ]; then - REDIRECT "$_BASE$PATH_INFO?month=$month" - else - REDIRECT "$_BASE$PATH_INFO" - fi - ;; -esac - - -case ${PATH_INFO} in - /favicon.ico) printf '%s\r\n' 'Content-Length: 0' '';; - /common.css) FILE "$_EXEC/cgilite/common.css";; - /widgets.css|/webpoll.css) FILE "${_EXEC}/${PATH_INFO}";; - /) recent="$(COOKIE pages)" - yield_page "Start a Poll" "home" <<-EOF + esac + else + recent="$(COOKIE pages)" + yield_page "Start a Poll" "home" <<-EOF [form method=post [submit "start" "date" Start a new poll] $(if [ "$recent" ]; then @@ -119,53 +74,16 @@ case ${PATH_INFO} in fi) ] EOF - ;; - /*/newdate) - id="${PATH_INFO%/newdate}"; id="${id#/}" - file="$_DATA/$id" - month="$(GET month |grep -m1 -xE '[0-9]{4}-(0[1-9]|1[012])' || date +%Y-%m)" - Y="${month%-*}"; m="${month#*-}"; Y=${Y#0}; m=${m#0}; - [ "$m" = 1 ] && prev=$(printf '%04i-%02i' $((Y - 1)) 12) || prev=$(printf '%04i-%02i' $Y $((m - 1))) - [ "$m" = 12 ] && next=$(printf '%04i-%02i' $((Y + 1)) 01) || next=$(printf '%04i-%02i' $Y $((m + 1))) - dates="$(DBM "$file" get dates)" - days="$(printf %s "$dates" |sed -E "/^${month}-/!d; s;^.*-([0-9]{2})$;\1;g")" - additional="$(printf %s "$dates" |sed -E "/^${month}-/d;")" - todall="$(DBM "$file" get todall)" + fi +} +page_newdate() { . $_EXEC/newdate.sh; } - yield_page "$(pagename "$id")" "newdate" <<-EOF - $(dlist_timeofday) - [form method=post - [input name=title value="$(DBM "$file" get title |HTML)" placeholder="Title"] - [textarea name=description placeholder="Description" . $(DBM "$file" get description |HTML)] - [fieldset .date - $(printf '[hidden "date" "%s"]' $additional) - [submit "month" "$prev" Previous Month] - $(w_month multiple date "$month" $days) - [submit "month" "$next" Next Month] - [hidden "month" "$month"] - ] - [fieldset .timeofday - [label .todstart Start Time (optional): - ] - [label .todend End Time (optional): - ] - $(c=0; for time in ${todall:--}; do - c=$((c + 1)) - printf ' - - - [submit "todremove" "%i" -] - ' "${time%-*}" "${time#*-}" "${c}" - done) - [submit "addtime" "global" + Add time option] - ] - [submit "cancel" "cancel" Cancel] - [submit "post" "post" Post Event] - ] - EOF - ;; +case ${PATH_INFO} in + /favicon.ico) printf '%s\r\n' 'Content-Length: 0' '';; + /common.css) FILE "$_EXEC/cgilite/common.css";; + /widgets.css|/webpoll.css) FILE "${_EXEC}/${PATH_INFO}";; + /) page_home;; + /*/newdate) page_newdate;; /*/newoptions);; *);; esac