[dw-free] number of participants in poll question
[commit: http://hg.dwscoalition.org/dw-free/rev/03e6393d0809]
http://bugs.dwscoalition.org/show_bug.cgi?id=1522
Display number of participants in poll results.
Patch from LiveJournal; prepared for Dreamwidth by
yvi.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=1522
Display number of participants in poll results.
Patch from LiveJournal; prepared for Dreamwidth by
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Files modified:
- bin/upgrading/en.dat
- cgi-bin/LJ/Poll.pm
-------------------------------------------------------------------------------- diff -r 8bdc3476e3c5 -r 03e6393d0809 bin/upgrading/en.dat --- a/bin/upgrading/en.dat Sat Aug 01 14:31:59 2009 +0000 +++ b/bin/upgrading/en.dat Sat Aug 01 10:09:53 2009 -0500 @@ -2319,6 +2319,8 @@ poll.error.whovote=whovote must be 'all' poll.isclosed=This poll is closed. +poll.participants=, participants: [[total]] + poll.pollnum=Poll #[[num]] poll.scaleanswers=<b>Mean:</b> [[mean]] <b>Median:</b> [[median]] <b>Std. Dev</b> [[stddev]] diff -r 8bdc3476e3c5 -r 03e6393d0809 cgi-bin/LJ/Poll.pm --- a/cgi-bin/LJ/Poll.pm Sat Aug 01 14:31:59 2009 +0000 +++ b/cgi-bin/LJ/Poll.pm Sat Aug 01 10:09:53 2009 -0500 @@ -961,21 +961,36 @@ sub render { } $ret .= LJ::Lang::ml('poll.security2', { 'whovote' => LJ::Lang::ml('poll.security.'.$self->whovote), 'whoview' => LJ::Lang::ml('poll.security.'.$whoview) }); - $ret .= "<br />\n"; - - if ( $mode eq 'enter' ) { - $ret .= "[ <a href='$LJ::SITEROOT/poll/?id=$pollid&mode=results'>" . BML::ml( 'poll.seeresults' ) . "</a> ] " if $self->can_view( $remote ); + if ( $mode eq 'enter' && $self->can_view( $remote ) ) { + $ret .= "<br />\n"; + $ret .= "[ <a href='$LJ::SITEROOT/poll/?id=$pollid&mode=results'>" . BML::ml( 'poll.seeresults' ) . "</a> ] "; } elsif ( $mode eq 'results' ) { + #include number of participants + my $sth = ""; + if ($self->is_clustered) { + $sth = $self->journal->prepare("SELECT count(DISTINCT userid) FROM pollresult2 WHERE pollid=? AND journalid=?"); + $sth->execute($pollid, $self->journalid); + } else { + $sth = $dbr->prepare("SELECT count(DISTINCT userid) FROM pollresult WHERE pollid=?"); + $sth->execute($pollid); + } + my ($participants) = $sth->fetchrow_array; + $ret .= LJ::Lang::ml('poll.participants', { 'total' => $participants }); + $ret .= "<br />\n"; + # change vote link $ret .= "[ <a href='$LJ::SITEROOT/poll/?id=$pollid&mode=enter'>" . BML::ml( 'poll.changevote' ) . "</a> ]" if $self->can_vote( $remote ) && !$self->is_closed; + } else { + $ret .= "<br />\n"; } + my $results_table = ""; ## go through all questions, adding to buffer to return foreach my $q (@qs) { my $qid = $q->pollqid; my $text = $q->text; LJ::Poll->clean_poll(\$text); - $ret .= "<p>$text</p><div style='margin: 10px 0 10px 40px'>"; + $results_table .= "<p>$text</p><div style='margin: 10px 0 10px 40px'>"; ### get statistics, for scale questions my ($valcount, $valmean, $valstddev, $valmedian); @@ -1027,7 +1042,7 @@ sub render { if ($mode eq "results") { ### to see individual's answers my $posterid = $self->posterid; - $ret .= qq { + $results_table .= qq { <a href='$LJ::SITEROOT/poll/?id=$pollid&qid=$qid&mode=ans' class='LJ_PollAnswerLink' lj_pollid='$pollid' lj_qid='$qid' lj_posterid='$posterid' lj_page='0' lj_pagesize="$pagesize" id="LJ_PollAnswerLink_${pollid}_$qid"> @@ -1063,7 +1078,7 @@ sub render { if ($q->type eq "text" && $do_form) { my ($size, $max) = split(m!/!, $q->opts); - $ret .= LJ::html_text({ 'size' => $size, 'maxlength' => $max, + $results_table .= LJ::html_text({ 'size' => $size, 'maxlength' => $max, 'name' => "pollq-$qid", 'value' => $preval{$qid} }); } elsif ($q->type eq 'drop' && $do_form) { #### drop-down list @@ -1074,7 +1089,7 @@ sub render { LJ::Poll->clean_poll(\$item); push @optlist, ($itid, $item); } - $ret .= LJ::html_select({ 'name' => "pollq-$qid", + $results_table .= LJ::html_select({ 'name' => "pollq-$qid", 'selected' => $preval{$qid} }, @optlist); } elsif ($q->type eq "scale" && $do_form) { #### scales (from 1-10) questions @@ -1086,17 +1101,17 @@ sub render { # few opts, display radios if ($do_radios) { - $ret .= "<table><tr valign='top' align='center'>"; + $results_table .= "<table><tr valign='top' align='center'>"; for (my $at=$from; $at<=$to; $at+=$by) { - $ret .= "<td style='text-align: center;'>"; - $ret .= LJ::html_check({ 'type' => 'radio', 'name' => "pollq-$qid", + $results_table .= "<td style='text-align: center;'>"; + $results_table .= LJ::html_check({ 'type' => 'radio', 'name' => "pollq-$qid", 'value' => $at, 'id' => "pollq-$pollid-$qid-$at", 'selected' => (defined $preval{$qid} && $at == $preval{$qid}) }); - $ret .= "<br /><label for='pollq-$pollid-$qid-$at'>$at</label></td>"; + $results_table .= "<br /><label for='pollq-$pollid-$qid-$at'>$at</label></td>"; } - $ret .= "</tr></table>\n"; + $results_table .= "</tr></table>\n"; # many opts, display select # but only if displaying form @@ -1106,7 +1121,7 @@ sub render { for (my $at=$from; $at<=$to; $at+=$by) { push @optlist, ($at, $at); } - $ret .= LJ::html_select({ 'name' => "pollq-$qid", 'selected' => $preval{$qid} }, @optlist); + $results_table .= LJ::html_select({ 'name' => "pollq-$qid", 'selected' => $preval{$qid} }, @optlist); } } else { @@ -1116,10 +1131,10 @@ sub render { if ($q->type eq "scale") { # implies ! do_form my $stddev = sprintf("%.2f", $valstddev); my $mean = sprintf("%.2f", $valmean); - $ret .= LJ::Lang::ml('poll.scaleanswers', { 'mean' => $mean, 'median' => $valmedian, 'stddev' => $stddev }); - $ret .= "<br />\n"; + $results_table .= LJ::Lang::ml('poll.scaleanswers', { 'mean' => $mean, 'median' => $valmedian, 'stddev' => $stddev }); + $results_table .= LJ::Lang::ml('poll.scaleanswers', { 'mean' => $mean, 'median' => $valmedian, 'stddev' => $stddev }); $do_table = 1; - $ret .= "<table>"; + $results_table .= "<table>"; } my @items = $self->question($qid)->items; @@ -1142,10 +1157,10 @@ sub render { # displaying a radio or checkbox if ($do_form) { - $ret .= LJ::html_check({ 'type' => $q->type, 'name' => "pollq-$qid", - 'value' => $itid, 'id' => "pollq-$pollid-$qid-$itid", - 'selected' => ($preval{$qid} =~ /\b$itid\b/) }); - $ret .= " <label for='pollq-$pollid-$qid-$itid'>$item</label><br />"; + $results_table .= LJ::html_check({ 'type' => $q->type, 'name' => "pollq-$qid", + 'value' => $itid, 'id' => "pollq-$pollid-$qid-$itid", + 'selected' => ($preval{$qid} =~ /\b$itid\b/) }); + $results_table .= " <label for='pollq-$pollid-$qid-$itid'>$item</label><br />"; next; } @@ -1155,28 +1170,30 @@ sub render { my $width = 20+int(($count/$maxitvotes)*380); if ($do_table) { - $ret .= "<tr valign='middle'><td align='right'>$item</td>"; - $ret .= "<td><img src='$LJ::IMGPREFIX/poll/leftbar.gif' style='vertical-align:middle' height='14' width='7' alt='' />"; - $ret .= "<img src='$LJ::IMGPREFIX/poll/mainbar.gif' style='vertical-align:middle' height='14' width='$width' alt='' />"; - $ret .= "<img src='$LJ::IMGPREFIX/poll/rightbar.gif' style='vertical-align:middle' height='14' width='7' alt='' /> "; - $ret .= "<b>$count</b> ($percent%)</td></tr>"; + $results_table .= "<tr valign='middle'><td align='right'>$item</td>"; + $results_table .= "<td><img src='$LJ::IMGPREFIX/poll/leftbar.gif' style='vertical-align:middle' height='14' width='7' alt='' />"; + $results_table .= "<img src='$LJ::IMGPREFIX/poll/mainbar.gif' style='vertical-align:middle' height='14' width='$width' alt='' />"; + $results_table .= "<img src='$LJ::IMGPREFIX/poll/rightbar.gif' style='vertical-align:middle' height='14' width='7' alt='' /> "; + $results_table .= "<b>$count</b> ($percent%)</td></tr>"; } else { - $ret .= "<p>$item<br />"; - $ret .= "<span style='white-space: nowrap'><img src='$LJ::IMGPREFIX/poll/leftbar.gif' style='vertical-align:middle' height='14' alt='' />"; - $ret .= "<img src='$LJ::IMGPREFIX/poll/mainbar.gif' style='vertical-align:middle' height='14' width='$width' alt='' />"; - $ret .= "<img src='$LJ::IMGPREFIX/poll/rightbar.gif' style='vertical-align:middle' height='14' width='7' alt='' /> "; - $ret .= "<b>$count</b> ($percent%)</span></p>"; + $results_table .= "<p>$item<br />"; + $results_table .= "<span style='white-space: nowrap'><img src='$LJ::IMGPREFIX/poll/leftbar.gif' style='vertical-align:middle' height='14' alt='' />"; + $results_table .= "<img src='$LJ::IMGPREFIX/poll/mainbar.gif' style='vertical-align:middle' height='14' width='$width' alt='' />"; + $results_table .= "<img src='$LJ::IMGPREFIX/poll/rightbar.gif' style='vertical-align:middle' height='14' width='7' alt='' /> "; + $results_table .= "<b>$count</b> ($percent%)</span></p>"; } } if ($do_table) { - $ret .= "</table>"; + $results_table .= "</table>"; } } - $ret .= "</div>"; + $results_table .= "</div>"; } + + $ret .= $results_table; if ($do_form) { $ret .= LJ::html_submit( --------------------------------------------------------------------------------