</li>
<% end
+elseif $"vote" <> "" then
+ showNormal := false;
+ val id = Web.stoi ($"vote");
+ val poll = Poll.lookupPoll id %>
+
+<table>
+<tr> <td align="right"><b>Poll#</b>:</td> <td><% id %></td> </tr>
+<tr> <td align="right"><b>Title</b>:</td> <td><% Web.html (#title poll) %></td> </tr>
+<tr> <td align="right"><b>Start</b>:</td> <td><% Web.html (#starts poll) %></td> </tr>
+<tr> <td align="right"><b>End</b>:</td> <td><% Web.html (#ends poll) %></td> </tr>
+<tr> <td align="right"><b>Votes/person</b>:</td> <td><% #votes poll %></td> </tr>
+<tr> <td align="right" valign="top"><b>Description</b>:</td> <td><% Web.htmlNl (#descr poll) %></td> </tr>
+</table>
+
+<h3><b>Choices</b></h3>
+
+<form action="poll">
+<input type="hidden" name="vote2" value="<% id %>">
+<% val choices = Poll.listChoicesWithMyVotes id;
+if #votes poll = 1 then %>
+<select name="v">
+<option value="">Abstain</option>
+<% else %>
+<select name="v" multiple size="<% length choices %>">
+<% end
+foreach (you, cho) in choices do %>
+ <option value="<% #id cho %>"<% if you then %> selected<% end %>><% Web.html (#descr cho) %></option>
+<% end %></select><br><br>
+<input type="submit" value="Vote">
+</form>
+
+<% elseif $"vote2" <> "" then
+ val id = Web.stoi ($"vote2");
+ val poll = Poll.lookupPoll id;
+ editingPoll := SOME id;
+
+ val votes = case Web.getMultiParam "v" of
+ [""] => []
+ | v => map Web.stoi v;
+
+ if length votes > #votes poll then
+ %><h3><b>You can't vote for that many different choices!</b></h3><%
+ elseif not (Poll.noDupes votes) then
+ %><h3><b>You can't vote multiple times for the same choice!</b></h3><%
+ else
+ Poll.vote (Init.getUserId (), id, votes)
+ %><h3><b>Thanks for voting!</b></h3>
+<% end
+
elseif $"cmd" = "add" then
val title = $"title";
val starts = $"starts";
editingPoll := SOME (#id poll) %>
<h3><b>"<% Web.html (#descr cho) %>" deleted!</b></h3>
+<% elseif $"report" <> "" then
+ showNormal := false;
+ val id = Web.stoi ($"report");
+
+ val poll = Poll.lookupPoll id;
+ val canModify = Poll.canModify poll %>
+
+<h3><b>Vote Report</b></h3>
+
+<table>
+<tr> <td align="right"><b>Poll#</b>:</td> <td><% id %></td> </tr>
+<tr> <td align="right"><b>Title</b>:</td> <td><% Web.html (#title poll) %></td> </tr>
+<tr> <td align="right"><b>Start</b>:</td> <td><% Web.html (#starts poll) %></td> </tr>
+<tr> <td align="right"><b>End</b>:</td> <td><% Web.html (#ends poll) %></td> </tr>
+<tr> <td align="right"><b>Votes/person</b>:</td> <td><% #votes poll %></td> </tr>
+<tr> <td align="right" valign="top"><b>Description</b>:</td> <td><% Web.htmlNl (#descr poll) %></td> </tr>
+</table>
+
+<br><hr><br>
+
+<table>
+<tr> <td><b>Votes</b></td> <td><b>Choice</b></td> <td><b>Voters</b></td> </tr>
+<% foreach (_, total, cho) in Poll.listChoicesWithVotes id do %>
+ <tr> <td><% total %></td> <td><% Web.html (#descr cho) %></td> <td>
+<% ref first = true;
+ foreach user in Poll.listVoters (#id cho) do
+ if first then
+ first := false
+ else
+ %>, <%
+ end
+ %><a href="user?id=<% #id user %>"><% #name user %></a><%
+ end
+ %></td> </tr><%
+end %>
+</table>
+
<% elseif $"id" <> "" then
editingPoll := SOME (Web.stoi ($"id"))
<% switch editingPoll of
SOME id =>
- val pol = Poll.lookupPoll id;
- val canModify = Poll.canModify pol %>
+ val poll = Poll.lookupPoll id;
+ val canModify = Poll.canModify poll %>
<table>
<% if canModify then %><tr> <td></td> <td><a href="poll?mod=<% id %>">Edit poll data</a></td> </tr><% end %>
<tr> <td align="right"><b>Poll#</b>:</td> <td><% id %></td> </tr>
-<tr> <td align="right"><b>Title</b>:</td> <td><% Web.html (#title pol) %></td> </tr>
-<tr> <td align="right"><b>Start</b>:</td> <td><% Web.html (#starts pol) %></td> </tr>
-<tr> <td align="right"><b>End</b>:</td> <td><% Web.html (#ends pol) %></td> </tr>
-<tr> <td align="right"><b>Votes/person</b>:</td> <td><% #votes pol %></td> </tr>
-<tr> <td align="right" valign="top"><b>Description</b>:</td> <td><% Web.htmlNl (#descr pol) %></td> </tr>
+<tr> <td align="right"><b>Title</b>:</td> <td><% Web.html (#title poll) %></td> </tr>
+<tr> <td align="right"><b>Start</b>:</td> <td><% Web.html (#starts poll) %></td> </tr>
+<tr> <td align="right"><b>End</b>:</td> <td><% Web.html (#ends poll) %></td> </tr>
+<tr> <td align="right"><b>Votes/person</b>:</td> <td><% #votes poll %></td> </tr>
+<tr> <td align="right" valign="top"><b>Description</b>:</td> <td><% Web.htmlNl (#descr poll) %></td> </tr>
</table>
-<h3><b>Choices</b></h3>
+<h3><b>Choices<% if Poll.takingVotes poll then %><a href="poll?vote=<% id %>">(Vote!)</a><% end %></b></h3>
+
+<% if Poll.takingVotes poll then %>
+<table>
+<tr> <td><b>You</b></td> <td><b>Total</b></td> </tr>
+<% foreach (you, total, cho) in Poll.listChoicesWithVotes id do %>
+ <tr> <td align="center"><% if you then %>X<% end %></td>
+ <td align="center"><% total %></td>
+ <td><% Web.html (#descr cho) %></td>
+<% if canModify then %>
+<td><i>(<% #seq cho %>)</i>
+<a href="poll?modChoice=<% #id cho %>">[Modify]</a>
+<a href="poll?delChoice=<% #id cho %>">[Delete]</a></td>
+<% end %></tr>
+<% end %>
+</table>
-<% foreach cho in Poll.listChoices id do %>
+<a href="poll?report=<% id %>">Vote Report</a>
+<% else
+foreach cho in Poll.listChoices id do %>
<li> <% Web.html (#descr cho) %>
<% if canModify then %>
<i>(<% #seq cho %>)</i>
<a href="poll?modChoice=<% #id cho %>">[Modify]</a>
<a href="poll?delChoice=<% #id cho %>">[Delete]</a>
<% end %></li>
-<% end %>
+<% end
+end %>
<% if canModify then %>
<br><hr><br>