Mercurial > hg > fapweb
annotate pages/vote.inc.php @ 1069:5f92fa5e683a
Refactor how the "AJAX" stuff works.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 24 Jan 2017 17:25:48 +0200 |
parents | ffacd904fd1f |
children | 7e497188e4c6 |
rev | line source |
---|---|
0 | 1 <? |
151 | 2 // |
571
ce11ea112a65
Change the header blurb a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
565
diff
changeset
|
3 // FAPWeb - Simple Web-based Demoparty Management System |
151 | 4 // Competition voting page |
1001 | 5 // (C) Copyright 2012-2015 Tecnic Software productions (TNSP) |
151 | 6 // |
98
0f00192e64af
Obey userKeyLength site setting here when printing voting login.
Matti Hamalainen <ccr@tnsp.org>
parents:
79
diff
changeset
|
7 $sessionType = "user"; |
32 | 8 |
110 | 9 |
10 function stGetVoteButton() | |
11 { | |
12 return | |
709 | 13 " <div class=\"voteControls\">\n". |
326 | 14 " ".stGetFormSubmitInput("vote", "Submit votes and log out", "")."\n". |
15 " </div>\n"; | |
110 | 16 } |
17 | |
127
6b71472cda77
A tiny bit of work on voting.
Matti Hamalainen <ccr@tnsp.org>
parents:
126
diff
changeset
|
18 |
0 | 19 // Check if voting is enabled |
20 if (!stChkSetting("allowVoting")) | |
789
24bbd1f89794
Add few new settings, bump database version.
Matti Hamalainen <ccr@tnsp.org>
parents:
786
diff
changeset
|
21 echo stGetSetting("votingDisabled"); |
0 | 22 else |
110 | 23 if (!stUserSessionAuth(FALSE)) |
0 | 24 { |
110 | 25 // Perform authentication if we are not in session already |
190 | 26 $userKeyLen = stGetSetting("userKeyLength"); |
304
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
27 |
358
0244aeeab6e7
Use GET for error parameter.
Matti Hamalainen <ccr@tnsp.org>
parents:
343
diff
changeset
|
28 if (($error = stGetRequestItem("error", 0, TRUE)) != 0) |
304
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
29 { |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
30 echo |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
31 "<h1>Voting system login failed</h1>\n". |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
32 "<p class=\"notice\">\n"; |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
33 |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
34 switch ($error) |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
35 { |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
36 case 1: |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
37 echo "The votekey does not exist. Please try again."; |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
38 break; |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
39 |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
40 case 2: |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
41 echo "There was an error in the system. Contact an administrator."; |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
42 break; |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
43 |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
44 case 3: |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
45 echo |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
46 "The votekey is not yet activated, try again later. If ". |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
47 "you are certain that it should be working now, go pester an organizer."; |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
48 break; |
672 | 49 |
50 default: | |
51 echo | |
52 "Undefined error occured."; | |
53 break; | |
304
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
54 } |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
55 |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
56 echo |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
57 "</p>\n"; |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
58 } |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
59 else |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
60 { |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
61 echo |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
62 "<h1>Voting system</h1>\n"; |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
63 } |
7181350076c1
Change how user login errors are handled.
Matti Hamalainen <ccr@tnsp.org>
parents:
302
diff
changeset
|
64 |
68 | 65 echo |
709 | 66 "<div class=\"voteLogin\">\n". |
67 " ".stGetFormStart("vote", "usrlogin.php"). | |
110 | 68 " ".stGetFormHiddenInput("mode", "vote")."\n". |
69 " ".stGetFormHiddenInput("goto", "vote")."\n". | |
70 " Enter your vote key:\n". | |
248
8d46f1358233
Add autofocus in vote login as well.
Matti Hamalainen <ccr@tnsp.org>
parents:
242
diff
changeset
|
71 " ".stGetFormTextInput($userKeyLen > 30 ? $userKeyLen : 30, $userKeyLen, "key", "", "", "", "autocomplete=\"off\" autofocus=\"autofocus\"")."\n". |
110 | 72 " ".stGetFormSubmitInput("login", "Login")."\n". |
709 | 73 " </form>\n". |
74 "</div>\n"; | |
32 | 75 } |
76 else | |
110 | 77 if (($mode = stGetSessionItem("mode")) == "vote") |
32 | 78 { |
285
4c00e9cbb84e
Work on the voting interface.
Matti Hamalainen <ccr@tnsp.org>
parents:
278
diff
changeset
|
79 ?> |
999
3714c6c53529
Add helpful notice for people who have JavaScript disabled while voting.
Matti Hamalainen <ccr@tnsp.org>
parents:
988
diff
changeset
|
80 <noscript> |
3714c6c53529
Add helpful notice for people who have JavaScript disabled while voting.
Matti Hamalainen <ccr@tnsp.org>
parents:
988
diff
changeset
|
81 <div class="notice">If your browser supports JavaScript, enable it for smoother voting experience.</div> |
3714c6c53529
Add helpful notice for people who have JavaScript disabled while voting.
Matti Hamalainen <ccr@tnsp.org>
parents:
988
diff
changeset
|
82 </noscript> |
285
4c00e9cbb84e
Work on the voting interface.
Matti Hamalainen <ccr@tnsp.org>
parents:
278
diff
changeset
|
83 <script type="text/javascript"> |
68 | 84 |
285
4c00e9cbb84e
Work on the voting interface.
Matti Hamalainen <ccr@tnsp.org>
parents:
278
diff
changeset
|
85 function updateVote(eid, value) |
4c00e9cbb84e
Work on the voting interface.
Matti Hamalainen <ccr@tnsp.org>
parents:
278
diff
changeset
|
86 { |
330 | 87 var msuccess = function(txt) |
88 { | |
89 } | |
90 | |
91 var mfail = function(txt) | |
92 { | |
786 | 93 jsMessageBox("<h1>Ooops, an error occured</h2><p>Something went wrong, votes might not be submitted. :(</p>"); |
330 | 94 } |
95 | |
342
3175ec252c73
Rename sendPOSTRequest() to jsSendPOSTRequest().
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
96 jsSendPOSTRequest("action=set&entry_id="+eid+"&vote="+value, msuccess, mfail); |
285
4c00e9cbb84e
Work on the voting interface.
Matti Hamalainen <ccr@tnsp.org>
parents:
278
diff
changeset
|
97 return false; |
4c00e9cbb84e
Work on the voting interface.
Matti Hamalainen <ccr@tnsp.org>
parents:
278
diff
changeset
|
98 } |
4c00e9cbb84e
Work on the voting interface.
Matti Hamalainen <ccr@tnsp.org>
parents:
278
diff
changeset
|
99 |
4c00e9cbb84e
Work on the voting interface.
Matti Hamalainen <ccr@tnsp.org>
parents:
278
diff
changeset
|
100 </script> |
4c00e9cbb84e
Work on the voting interface.
Matti Hamalainen <ccr@tnsp.org>
parents:
278
diff
changeset
|
101 <? |
68 | 102 // Try fetching previously stored votes |
103 $sql = stPrepareSQL( | |
302
828fc30e3c94
Some work on vote backend stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
295
diff
changeset
|
104 "SELECT entry_id,value FROM votes WHERE key_id=%d", |
828fc30e3c94
Some work on vote backend stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
295
diff
changeset
|
105 stGetSessionItem("key_id")); |
32 | 106 |
221
2b39068c4968
Tiny bit of work on voting code.
Matti Hamalainen <ccr@tnsp.org>
parents:
190
diff
changeset
|
107 $votes = array(); |
68 | 108 if (($res = stExecSQL($sql)) !== false) |
5
76c3b89d7b11
Improve voting, clean up the code, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
4
diff
changeset
|
109 { |
68 | 110 foreach ($res as $vote) |
221
2b39068c4968
Tiny bit of work on voting code.
Matti Hamalainen <ccr@tnsp.org>
parents:
190
diff
changeset
|
111 $votes[$vote["entry_id"]] = $vote["value"]; |
68 | 112 } |
0 | 113 |
68 | 114 // Output voting system HTML |
115 echo | |
276 | 116 "<h1>Voting system</h1>\n". |
117 stGetFormStart("vote", "usrajax.php"). | |
118 " ".stGetFormHiddenInput("mode", "done")."\n". | |
119 " ".stGetFormHiddenInput("action", "submit")."\n". | |
789
24bbd1f89794
Add few new settings, bump database version.
Matti Hamalainen <ccr@tnsp.org>
parents:
786
diff
changeset
|
120 " ".stGetFormHiddenInput("onerror", "noauthvote")."\n". |
276 | 121 stGetVoteButton(); |
32 | 122 |
988
7d7bd913649c
Order the compos on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
972
diff
changeset
|
123 foreach (stExecSQL("SELECT * FROM compos WHERE visible<>0 AND voting<>0 ORDER BY id") as $compo) |
68 | 124 { |
972 | 125 $esql = stPrepareSQL("FROM entries WHERE (flags & %d)=0 AND compo_id=%d", EFLAG_DISQUALIFIED, $compo["id"]); |
598
ba84d8e35d6b
Do not count entries that have been flagged as disqualified.
Matti Hamalainen <ccr@tnsp.org>
parents:
571
diff
changeset
|
126 $nentries = stFetchSQLColumn("SELECT COUNT(*) ".$esql); |
242
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
127 if ($nentries > 0) |
5
76c3b89d7b11
Improve voting, clean up the code, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
4
diff
changeset
|
128 { |
76c3b89d7b11
Improve voting, clean up the code, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
4
diff
changeset
|
129 echo |
242
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
130 " <table class=\"vote\">\n". |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
131 " <tr>\n". |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
132 " <th class=\"vshown\">#</th>\n". |
726 | 133 " <th class=\"vcompo\">".chentities($compo["name"])."</th>\n"; |
333
018817535fab
Make voting more visually pleasant(?).
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
134 for ($i = stGetSetting("voteMax"); $i >= stGetSetting("voteMin"); $i--) |
5
76c3b89d7b11
Improve voting, clean up the code, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
4
diff
changeset
|
135 { |
708 | 136 echo " <th class=\"vvalue\">".$i."</th>\n"; |
5
76c3b89d7b11
Improve voting, clean up the code, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
4
diff
changeset
|
137 } |
708 | 138 echo |
26
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
24
diff
changeset
|
139 " </tr>\n"; |
5
76c3b89d7b11
Improve voting, clean up the code, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
4
diff
changeset
|
140 |
242
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
141 $row = 0; |
972 | 142 foreach (stExecSQL("SELECT * ".$esql." ORDER BY show_id ASC") as $entry) |
242
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
143 { |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
144 $eid = $entry["id"]; |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
145 echo |
295 | 146 " <tr class=\"".($row % 2 == 1 ? "rodd" : "reven")."\">\n". |
147 " <td class=\"vshown\">".($entry["show_id"] > 0 ? $entry["show_id"] : "-")."</td>\n". | |
712 | 148 " <td class=\"ventry\">\n". |
729
0d064dcef03e
Vote page layout adjustments and add missing </td> tag for entries.
Matti Hamalainen <ccr@tnsp.org>
parents:
726
diff
changeset
|
149 " <div class=\"vpreview\">"; |
712 | 150 |
774
d6668b73bb01
Modularize preview HTML stuff into a function stPrintPreviewElements().
Matti Hamalainen <ccr@tnsp.org>
parents:
732
diff
changeset
|
151 stPrintPreviewElements($compo, $entry); |
721
69a829f687a9
Preliminary work for entry previews.
Matti Hamalainen <ccr@tnsp.org>
parents:
712
diff
changeset
|
152 |
712 | 153 echo |
729
0d064dcef03e
Vote page layout adjustments and add missing </td> tag for entries.
Matti Hamalainen <ccr@tnsp.org>
parents:
726
diff
changeset
|
154 "</div>\n". |
712 | 155 " <div class=\"vinfo\">". |
156 "<span class=\"vtitle\">".$entry["name"]."</span>". | |
157 ($compo["show_authors"] ? "<span class=\"vby\"> by </span><span class=\"vauthor\">".$entry["author"]."</span>" : ""). | |
729
0d064dcef03e
Vote page layout adjustments and add missing </td> tag for entries.
Matti Hamalainen <ccr@tnsp.org>
parents:
726
diff
changeset
|
158 "</div>\n". |
0d064dcef03e
Vote page layout adjustments and add missing </td> tag for entries.
Matti Hamalainen <ccr@tnsp.org>
parents:
726
diff
changeset
|
159 " </td>\n"; |
242
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
160 |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
161 $val = isset($votes[$eid]) ? $votes[$eid] : 0; |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
162 |
333
018817535fab
Make voting more visually pleasant(?).
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
163 for ($i = stGetSetting("voteMax"); $i >= stGetSetting("voteMin"); $i--) |
242
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
164 { |
333
018817535fab
Make voting more visually pleasant(?).
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
165 $nid = "ve".$eid."_".$i; |
242
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
166 echo |
729
0d064dcef03e
Vote page layout adjustments and add missing </td> tag for entries.
Matti Hamalainen <ccr@tnsp.org>
parents:
726
diff
changeset
|
167 " <td class=\"vvalue\">". |
333
018817535fab
Make voting more visually pleasant(?).
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
168 "<input type=\"radio\" id=\"".$nid. |
018817535fab
Make voting more visually pleasant(?).
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
169 "\" name=\"ventry".$eid."\" value=\"".$i."\" ". |
018817535fab
Make voting more visually pleasant(?).
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
170 "onClick=\"updateVote(".$eid.",".$i.")\" ". |
018817535fab
Make voting more visually pleasant(?).
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
171 ($val == $i ? "checked=\"checked\" ": "")."/>". |
018817535fab
Make voting more visually pleasant(?).
Matti Hamalainen <ccr@tnsp.org>
parents:
330
diff
changeset
|
172 "<label for=\"".$nid."\"></label>". |
708 | 173 "</td>\n"; |
242
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
174 } |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
175 |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
176 echo |
295 | 177 " </tr>\n"; |
242
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
178 |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
179 $row++; |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
180 } |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
181 echo |
c52ca3a89989
Some random broken work on vote page.
Matti Hamalainen <ccr@tnsp.org>
parents:
226
diff
changeset
|
182 " </table>\n"; |
68 | 183 } |
184 } | |
5
76c3b89d7b11
Improve voting, clean up the code, etc.
Matti Hamalainen <ccr@tnsp.org>
parents:
4
diff
changeset
|
185 |
68 | 186 echo |
225 | 187 stGetVoteButton(). |
188 "</form>\n"; | |
68 | 189 } |
190 else | |
110 | 191 if ($mode == "done") |
68 | 192 { |
193 // Voting finished | |
226
548a106b3f5b
Use setting instead of hardcoded text.
Matti Hamalainen <ccr@tnsp.org>
parents:
225
diff
changeset
|
194 echo stGetSetting("voteFinishedText"); |
68 | 195 stSessionEnd(SESS_USER); |
0 | 196 } |
110 | 197 ?> |