-# Filters added to this controller will be run for all controllers in the application.
-# Likewise, all the methods added will be available for all controllers.
+# Selectricity: Voting Machinery for the Masses
+# 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/>.
+
+# Filters added to this controller will be run for all controllers in
+# the application. Likewise, all the methods added will be available
+# for all controllers.
class ApplicationController < ActionController::Base
include AuthenticatedSystem
helper :user
- model :user
-
- def day_votes
-
- @election = Election.find(params[:id])
- line = Gruff::Line.new
- line.title = "Voters Per Day"
- line.font = File.expand_path('/usr/X11R6/lib/X11/fonts/TTF/Vera.ttf', RAILS_ROOT)
- line.data("#{@election.name}", voter_days["voters_per_day"] )
- line.labels = voter_days["days_hash"]
- line.x_axis_label = "Date"
- line.y_axis_label = "Number of Votes"
- line.minimum_value = 0.0
- line.draw
- send_data(line.to_blob,
- :disposition => 'inline',
- :type => 'image/png',
- :filename => "dayvotes#{@poll.id}.png")
+ require_dependency "user"
+
+ include Sitealizer
+ before_filter :add_stylesheets
+ #before_filter :use_sitealizer
+
+ def initialize
+ @stylesheets = []
+
+
+ # this is defined is a sketchy way in the sitealizer mixin
+ # initalize. since i'm overloading that, i'm calling it here
+ $visits = [] unless $visits
end
-
- def voter_days
- @election = Election.find(params[:id])
- voter_times = Array.new
- unique_days = Array.new
- voters_per_day = Array.new
- days_hash = Hash.new
-
- @election.votes.each do |vote|
- voter_times << vote.time unless voter_times.any? {|utime| utime == vote.time}
+
+ def add_stylesheets
+ file = "#{Dir.pwd}/public/stylesheets/#{controller_name}.css"
+ if File.exists? file
+ @stylesheets << controller_name
end
-
- voter_times.sort!
-
- voter_times.each_with_index do |time, index|
- count = 1
- unless unique_days.any? { |d1| d1.eql?(time.mon.to_s+"/"+time.day.to_s) }
- unique_days << (time.mon.to_s+"/"+time.day.to_s)
- count += (voter_times[(index+1)..-1].find_all {|t| t.mon == time.mon && t.day == time.day}).size
- voters_per_day << count
- end
+ end
+
+ #both election_controller and quickvote_controller need this method
+ def sort_candidates
+ @vote = Vote.find(params[:id])
+
+ @vote.rankings.each do |ranking|
+ ranking.rank = params['rankings-list'].index(ranking.candidate.id.to_s) + 1
+ ranking.save
end
-
- unique_days.each_with_index do |fmtdate, index|
- days_hash[index] = fmtdate
- end
- return { "voters_per_day" => voters_per_day, "days_hash" => days_hash }
-
+ render :nothing => true
end
end