]> projects.mako.cc - selectricity/blobdiff - app/controllers/voter_controller.rb
fixed licensing information for selectricity
[selectricity] / app / controllers / voter_controller.rb
index cdc045da05c3e680d425918a7c0670685590eff5..c0634695e971db632506d491ebd5192865086973 100644 (file)
@@ -2,21 +2,11 @@
 # Copyright (C) 2007, 2008 Benjamin Mako Hill <mako@atdot.cc>
 # Copyright (C) 2007 Massachusetts Institute of Technology
 #
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public
-# License along with this program.  If not, see
-# <http://www.gnu.org/licenses/>.
+# This program is free software. Please see the COPYING file for
+# details.
 
 class VoterController < ApplicationController
+  helper :sparklines
   layout 'main'
   require_dependency "voter"
   require_dependency "vote"
@@ -26,11 +16,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 +42,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 +51,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 +96,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 +154,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 +183,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?