Poll Position: Advanced Capabilities
More Poll Position documentation:
Poll Position is more than the sum of its parts. A few ideas are explored below.
Per-Page Result Options
You may need to create different poll results for the Main Index and Entry
archives, for example. The PollDisplayResults
tag will help do this, but
first you need to set a form element in the poll form. (You’ll need to use a
custom poll form to add the needed input object; CompletePoll
can not be used
to do this.)
<input type="hidden" name="display_results" value="entry" />
display_results
will be submitted with the poll, and it’s value is available
in the PollDIsplayResults
tag in the results template, as below.
<div class="poll-results">
<p>PollDisplayResults tag: <mt:PollDisplayResults></p>
<mt:If tag="PollDisplayResults" eq="entry">
<mt:PollChartImage>
<mt:Else>
<mt:PollChoices>
<div class="poll-result">
<p><mt:PollChoiceText> has <mt:PollChoiceVotes> votes.</p>
</div>
</mt:PollChoices>
</mt:If>
</div>
<div class="poll-total">
<p>Total votes: <span><mt:PollTotalVotes></span></p>
</div>
Quiz Correct Choice
After submitting a respons to a quiz the visitor will surely want to know if
they chose correctly. The results template supplied at
plugins/PollPosition/default_templates/poll_position_results.mtml
includes
this capability, though a brief explanation may be helpful. Refer to the
following code snippet:
<mt:QuizCorrectChoiceID setvar="correct">
<mt:If tag="PollSelectedChoiceID" eq="$correct">
<p>Correct! You've got the right answer!</p>
<mt:Else>
<p>Sorry, wrong answer! The correct answer is <mt:QuizCorrectChoiceText>.</p>
</mt:If>
The tag QuizCorrectChoiceID
is returning the ID of the Choice selected by the
author when the quiz was created. This value is saved to a variable (correct
).
The tag PollSelectedChoiceID
contains the ID of teh Choice selected by the
user when they submitted a response, and is simply compared to the saved
variable which contains the ID of the correct choice.
HTML and CSS Bar Charts
Use Movable Type template tags to do the math and help generate HTML/CSS bar
charts. The following code snippet works by calling the calculate_percent
and
supplying a numerator (with the PollChoiceVotes
tag) and a denominator
(supplied by the Choice with the most results and the PollTotalVotes
tag),
which calculates the percentages as needed.
<mt:PollTotalVotes setvar="total_votes">
<mt:SetVarTemplate name="calculate_percent">
<mt:SetVarBlock name="percent"><mt:Var name="numerator" op="/" value="$denominator"></mt:SetVarBlock>
<mt:SetVarBlock name="percent"><mt:Var name="percent" op="*" value="100"></mt:SetVarBlock>
<mt:Var name="percent" sprintf="%.0f">%
</mt:SetVarTemplate>
<mt:Var name="graph_largest_result" value="0">
<mt:PollChoices>
<mt:If tag="PollChoiceVotes" gt="$graph_largest_result">
<mt:PollChoiceVotes setvar="graph_largest_result">
</mt:If>
</mt:PollChoices>
<table class="poll-results" cellspacing="0" cellpadding="0" border="0">
<mt:PollChoices>
<mt:PollChoiceVotes setvar="choice_votes">
<tr>
<td class="poll-choice-text">
<mt:PollChoiceText>
</td>
<td class="poll-choice-scale">
<span style="width: <mt:Var name="calculate_percent" numerator="$choice_votes" denominator="$graph_largest_result">;"></span>
</td>
<td class="poll-choice-percent">
<mt:Var name="calculate_percent" numerator="$choice_votes" denominator="$total_votes">
</td>
<td class="poll-choice-votes vote-count-<mt:Var name="choice_votes">">
<mt:Var name="choice_votes">
</td>
</tr>
</mt:PollChoices>
</table>