X-Git-Url: https://projects.mako.cc/source/selectricity/blobdiff_plain/eaf661eb6a8571bc24b180cfc731f3b9b38a8fff..91c9d10ebdbdd37b03fd287a9923759f85561d20:/app/controllers/application.rb?ds=sidebyside diff --git a/app/controllers/application.rb b/app/controllers/application.rb index bab76f9..1387b29 100644 --- a/app/controllers/application.rb +++ b/app/controllers/application.rb @@ -1,55 +1,59 @@ -# 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 +# 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 +# . + +# 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 + end + + #both election_controller and quickvote_controller need this method + def sort_candidates - 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 + @vote = Vote.find(params[:id]) - unique_days.each_with_index do |fmtdate, index| - days_hash[index] = fmtdate - end - return { "voters_per_day" => voters_per_day, "days_hash" => days_hash } - + @vote.rankings.each do |ranking| + ranking.rank = params['rankings-list'].index(ranking.candidate.id.to_s) + 1 + ranking.save + end + render :nothing => true end end