create new open voter to allow open full elections
[selectricity-live] / app / controllers / voter_controller.rb
index cdc045da05c3e680d425918a7c0670685590eff5..d7f589db7f9d0b1d2e62d4806e11db686fd67ed3 100644 (file)
@@ -17,6 +17,7 @@
 # <http://www.gnu.org/licenses/>.
 
 class VoterController < ApplicationController
+  helper :sparklines
   layout 'main'
   require_dependency "voter"
   require_dependency "vote"
@@ -26,11 +27,11 @@ class VoterController < ApplicationController
     if params[:election_id]
       @election = Election.find(params[:election_id])
       unless @election.authenticated?
-        @voter = Voter.find(:all,
+        @voter = OpenVoter.find(:all,
           :conditions => ["session_id = ? and election_id = ?",
           session.session_id, @election.id])[0]
       
-        @voter = Voter.new unless @voter
+        @voter = OpenVoter.new unless @voter
 
         @voter.election = @election
         @voter.session_id = session.session_id
@@ -52,7 +53,7 @@ class VoterController < ApplicationController
         @voter.vote = Vote.new 
         @voter.save
       end
-      
+    
       @voter.vote.set_defaults! if @voter.vote.rankings.empty?
 
       # if the election is now finished 
@@ -61,6 +62,19 @@ class VoterController < ApplicationController
       else
         @sidebar_content = render_to_string(:partial => 'vote_sidebar')
         if @election.embeddable? and params[:embed] == "true"
+          #look for custom theme, and assign to instance variabels for widget use
+          if @election.embed_custom_string
+            @top_bar = SkinPicture.find(:first,
+            :conditions => ["filename = ?", @election.embed_custom_string + "top_bar.png"])
+            @default_image = SkinPicture.find(:first,
+            :conditions => ["filename = ?", @election.embed_custom_string + "default_image.png"])
+            @bg1 = SkinPicture.find(:first,
+            :conditions => ["filename = ?", @election.embed_custom_string + "bg1.png"])
+            @bg2 = SkinPicture.find(:first,
+            :conditions => ["filename = ?", @election.embed_custom_string + "bg2.png"])
+            @bottom_bar = SkinPicture.find(:first,
+            :conditions => ["filename = ?", @election.embed_custom_string + "bottom_bar.png"])
+          end
           render :template => 'embed/full_vote', :layout => 'embed'
         else
           render :action => 'full_vote'
@@ -93,8 +107,8 @@ class VoterController < ApplicationController
   def details
     if authenticate
       @election = @voter.election
-      @votes = @election.votes.select {|v| v.confirmed? }.randomize
-      @voters = @votes.collect {|v| v.voter}.randomize
+      @votes = @election.votes.select {|v| v.confirmed? }.shuffle
+      @voters = @votes.collect {|v| v.voter}.shuffle
       render :action => 'details'
     else
       redirect_to :action => 'index'
@@ -151,6 +165,19 @@ class VoterController < ApplicationController
       @names = @election.names_by_id
         
       @sidebar_content = render_to_string(:partial => 'results_sidebar')
+      #look for custom theme, and assign to instance variabels for widget use
+      if @election.embed_custom_string
+        @top_bar = SkinPicture.find(:first,
+        :conditions => ["filename = ?", @election.embed_custom_string + "top_bar.png"])
+        @default_image = SkinPicture.find(:first,
+        :conditions => ["filename = ?", @election.embed_custom_string + "default_image.png"])
+        @bg1 = SkinPicture.find(:first,
+        :conditions => ["filename = ?", @election.embed_custom_string + "bg1.png"])
+        @bg2 = SkinPicture.find(:first,
+        :conditions => ["filename = ?", @election.embed_custom_string + "bg2.png"])
+        @bottom_bar = SkinPicture.find(:first,
+        :conditions => ["filename = ?", @election.embed_custom_string + "bottom_bar.png"])
+      end
       if @election.embeddable? and params[:embed] == "true"
         render :template => 'embed/results', :layout => 'embed'
       else
@@ -167,7 +194,7 @@ class VoterController < ApplicationController
     if password == "open"
       election = Election.find(params[:format])
       unless election.authenticated?
-        @voter = Voter.find(:all,
+        @voter = OpenVoter.find(:all,
           :conditions => ["session_id = ? and election_id = ?",
                           session.session_id, election.id])[0]
         @password = "open." + election.id.to_s

Benjamin Mako Hill || Want to submit a patch?