Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Apr 2014 00:31:02 +0000 (UTC)
From:      Dag-Erling Smørgrav <des@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r264576 - user/des/fbp/lib/FBP/Controller
Message-ID:  <201404170031.s3H0V29T023202@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: des
Date: Thu Apr 17 00:31:02 2014
New Revision: 264576
URL: http://svnweb.freebsd.org/changeset/base/264576

Log:
  Allow admins to see inactive polls.
  Add safeguards to prevent voting on inactive polls.

Modified:
  user/des/fbp/lib/FBP/Controller/Poll.pm

Modified: user/des/fbp/lib/FBP/Controller/Poll.pm
==============================================================================
--- user/des/fbp/lib/FBP/Controller/Poll.pm	Thu Apr 17 00:18:51 2014	(r264575)
+++ user/des/fbp/lib/FBP/Controller/Poll.pm	Thu Apr 17 00:31:02 2014	(r264576)
@@ -31,7 +31,7 @@ sub poll :Chained('/') :Path :CaptureArg
     $pid = $1;
     my $poll = $c->model('FBP::Poll')->find($pid);
     $c->detach('/default')
-	unless $poll && $poll->active;
+	unless $poll && ($poll->active || $c->user->admin);
     $c->stash(poll => $poll);
     my $psession = ($c->session->{$pid} //= {});
     if (!$$psession{answers}) {
@@ -93,6 +93,8 @@ sub vote :Chained('poll') :Path :Args(0)
 	unless $question;
 
     # Did the user submit any answers?
+    delete($c->req->params->{answer})
+	unless $poll->active;
     if ($c->req->params->{qid} ~~ $qid && $c->req->params->{answer}) {
 	my $answer = $c->req->params->{answer};
 	$answer = [ $answer ]
@@ -113,6 +115,7 @@ sub vote :Chained('poll') :Path :Args(0)
     } elsif ($c->req->params->{done}) {
 	# Validate all the answers
 	foreach $question ($questions->all) {
+	    next unless $poll->active; # hack
 	    try {
 		my $answer = $answers->{$question->id};
 		$question->validate_answer(@{$answer // []});
@@ -173,7 +176,8 @@ sub review :Chained('poll') :Path :Args(
 
     # Validate the answers
     try {
-	$poll->validate_answer(%$answers);
+	$poll->validate_answer(%$answers)
+	    unless $poll->active; # hack
     } catch {
 	$c->stash(error => $_);
 	$c->detach();



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404170031.s3H0V29T023202>