voter.destroy
end
+ def remind_voter
+ voter_array= FullVoter.find(:all, :conditions => ["email = ?", params[:email]])
+ voter_array.delete_if {|voter| voter.election.active == 0}
+ unless voter_array.empty?
+ VoterNotify.deliver_reminder(voter_array)
+ end
+ end
+
## methods for computing and printing results
####################################################################
def results
marker = GMarker.new([location.lat,location.lng],
:title => "Voter",
- :info_window => (voter.ipaddress or "unknown") \
- + " " + voter.vote.votestring)
+ :info_window => (voter.ipaddress or "unknown"))
@map.overlay_init(marker)
end
end
redirect_to :action => 'index'
end
end
-
+
private
def authenticate
password = params[:id]
@body = { :voter => voter }
end
- def reminder(voter)
+ def reminder(voter_array)
+ @subject = "Selectricity Election Reminder!"
+ @recipients = voter_array[0].email
+ @from = MAIL_CONFIG[:from]
+ @sent_on = Time.now
+ @body = { :voter_array => voter_array }
end
end
-<h2>This is your user summary profile, <%=h @user.login.capitalize %></h2>
+<h3>This is your user summary profile, <%=h @user.login.capitalize %></h3>
<p>
E-mail: <%=h @user.email %><br />
</p>
<p>Your Elections:
- <table class="voterbox">
+ <table class="voterbox" id="election">
<tr>
<% Election.content_columns.each do |column| -%>
<% next if column.name.eql?("viewable") || column.name.eql?("quickuser")\
- || column.name.eql?("active") %>
+ || column.name.eql?("active") || column.name.eql?("anonymous") %>
<th><%= column.human_name %></th>
<% end -%>
</tr>
<% end -%>
</td>
<td><%=h election.description %></td>
- <td>
- <% if election.anonymous == 0 -%>
- No
- <% else -%>
- Yes
- <% end -%>
- </td>
<td><%=h election.startdate.strftime("%x") %></td>
<td><%=h election.enddate.strftime("%x") %></td>
<td>
</table>
</p>
+<br />
+
<p>
Your Quickvotes:
<table class="voterbox">
--- /dev/null
+The message has been sent, please check your inbox soon.
\ No newline at end of file
<%= link_to("sign up", :controller => "account",
:action => "signup")%>
<% end -%>
- <%= link_to ("help/about", :controller => "site",
+ <%= link_to("help/about", :controller => "site",
:action => 'about')%>
</div>
<a href="index.html"><h1>selectricity: voting machinery for the masses</h1></a>
<%= stylesheet_link_tag "common", :media => "all" %>
<%= stylesheet_link_tag "main", :media => "all" %>
<%= stylesheet_link_tag *(@stylesheets) %>
- <%= stylesheet_link_tag "ie6hacks", :media => "all" if \
- request.user_agent =~ /msie\s(5\.[5-9]|[6]\.[0-9]*).*(win)/i %>
+ <%begin%>
+ <%= stylesheet_link_tag "ie6hacks", :media => "all" if
+ request.user_agent =~ /msie\s(5\.[5-9]|[6]\.[0-9]*).*(win)/i %>
+ <%rescue NoMethodError%>
+ <%end%>
<%= javascript_include_tag "prototype", "effects", "dragdrop", "controls" %>
</head>
-<% candidates = @election.condorcet_result.ranked_candidates.flatten -%>
+<% candidates = @election.ssd_result.ranked_candidates.flatten -%>
<% voters = @election.voters.size %>
-<% matrix = @election.condorcet_result.matrix %>
-<% victories = @election.condorcet_result.victories_and_ties %>
+<% matrix = @election.ssd_result.matrix %>
+<% victories = @election.ssd_result.victories_and_ties %>
+<% if candidates.size <= 7 -%>
<!-- This table shows how many times each choice was ranked above the other,
with percentages-->
<table class="preftable">
</tr>
<% end -%>
</table>
-
+<br />
<!-- This table generates a margin of victory -->
<table class="preftable">
<% candidates.each do |victor| %>
</tr>
<% end -%>
</table>
+<% end -%>
+
<% end %></span>
</div>
+<% unless @election.election_method == method -%>
+<%= render :partial => 'result', :object => @results[method]%>
+<% end -%>
<%= render :partial => 'methodinfo_' + method,
- :object => @results[@election.election_method] %>
+ :object => @results[method] %>
</div>
<p>This election was run using:
<strong><%= ELECTION_TYPES[@election.election_method] %></strong></p>
-<p>View results with other methods:<br />
+<p>View results using other methods:<br />
<% type_hash = {}; ELECTION_TYPES.each {|k,v| type_hash[v] = k} %>
<%= select_tag 'election_type_select', options_for_select(type_hash, @election.election_method) %></p>
<h2>Statistics</h2>
<%= image_tag( graph_url( :action => 'votes_per_interval', :id => @election ))%>
+<br />
+<br />
+
+<h2>Voter Report</h2>
+
+<p><%= link_to "[Map/List of Voters]", :controller => "quickvote",
+ :action => "list_voters", :id => @election.id %></p>
<span class="subheader"><%=h @voter.election.description.capitalize %></span>
</div>
+<div class="clear-div"></div>
+
<div class="main-content">
<% if @voter.voted? %>
end
%>
- <%=h((w.host == nil or w.host.empty?) ? voter.ipaddress : w.host)%>
+ <%=h((w.host == nil or w.host.empty?) ? voter.ipaddress : w.host.reverse.slice(0,30).reverse)%>
</td>
<td>
<%org=(w.all.grep(/^(OrgName|org-name)/)[0] or "").sub(/^(OrgName|org-name)\:/,'').strip+" - "+ (w.all.grep(/^(NetName|netname)/)[0] or "").sub(/^(NetName|netname)\:/,'').strip %>
- <% if org =~ /IANA/ %>
+ <% if org =~ /asdfasdf/ %>
<%= "No additional information" %>
<% else %>
<%= h(org) %>
<p><strong>Number of voters:</strong></p>
<blockquote>
- <%= @election.voters.reject {|v| not v.voted? }.length %> (see below for details)
+ <%= @election.voters.reject {|v| not v.voted? }.length %>
</blockquote>
<%= render :partial => 'result_box',
<div class="clear-div"></div>
-<div class="normal-header">
- <span class="header">Voter Report</span>
- <span class="subheader"></span>
-</div>
-
-<p><%= link_to "[View All Voters]", :controller => "quickvote", :action => "list_voters", :id => @election.id %></p>
-<br />
-
<!--
<%= image_tag( graph_url( :action => 'choices_positions', :id => @election ) ) %><br />
-->
--- /dev/null
+<h4>Deleted your email? Lost your password?</h4>
+<p>Not to worry, enter the email at which you were supposed to receive your
+password, and we'll hook you up with a set of magic numbers that shall grant
+access to the chambers within. Hoo-rah!</p>
+
+<% form_tag :controller => 'election', :action => 'remind_voter' do %>
+
+ <p><span label for="email">Email</label></span>
+ <%= text_field_tag :email %></p>
+
+ <%= submit_tag "Submit" %>
+<% end -%>
--- /dev/null
+Voter!
+
+Either you or an election administrator has requested you receive a reminder for an election you've been registered in.
+
+Here are the election(s) for which you are currently registered and your tokens to enter each election:
+<% @voter_array.each do |voter| -%>
+<%= voter.election.name %>: <%= voter.password %>
+<% end -%>
+
+
+If you feel there is a technical error, please contact:
+
+ help@selectricity.org
+ (Selectricity Tech Support)
+
+Thanks and happy voting!
+Selectricity Staff
Voter!
-This is an automated message sent by selectricity.media.mit.edu.
+This is an automated message sent by Selectricity.
You have been listed as a voter in an upcoming election.
The election title: <%= @voter.election.name %>
To read more about the election, the candidates, and to vote, you will
-need to use the following token to log in to selectricity.media.mit.edu:
+need to use the following token to log in to Selectricity:
<%= @voter.password %>
Alternatively, you can just click this URL:
- http://selectricity.media.mit.edu<%= url_for :controller => 'election', :action => 'show', :id => @voter.election %>
+ http://selectricity.org<%= url_for :controller => 'voter' %>
If you have any questions or if you feel you have received this message
in error, you should contact:
Alternatively, if you feel there is a technical error, please contact:
- help@selectricity.media.mit.edu
+ help@selectricity.org
(Selectricity Tech Support)
Thanks and happy voting!
Selectricity Staff
-
-
+
# Include your application configuration below
-MAIL_CONFIG = { :from => 'Selectricity <info@selectricity.media.mit.edu>'}
+MAIL_CONFIG = { :from => 'Selectricity <info@selectricity.org>'}
require 'uniq_token'
require 'randarray'
t.column "rank", :integer
end
+ create_table "sessions", :force => true do |t|
+ t.column "sessid", :string
+ t.column "data", :text
+ t.column "updated_at", :datetime
+ end
+
+ add_index "sessions", ["sessid"], :name => "session_index"
+
create_table "sitealizer", :force => true do |t|
t.column "path", :string
t.column "ip", :string
if ip_range.include? self.ip and l[1].length > 0
return Object.instance_eval("Server::#{l[1]}.new")
end
- return Server::Ripe.new
+ return Server::Arin.new
end
end
ipv6_list = YAML::load_file(File.dirname(__FILE__) + '/data/ipv6.yaml')
server = server_with_hash(ipv6_list)
unless server.kind_of? Server::Server
- return Server::Ripe.new
+ return Server::Arin.new
else
return server
end
}
.preftable th {
+ font-family: verdana,arial,helvetica,sans-serif;
border-width: 2px;
border-color: #999999;
border-style: solid;
text-align: center;
font-weight: bold;
- padding: 5px 5px 5px 15px;
+ padding: 5px 5px 5px 5px;
background-color: #999999;
- color: #fff;
+ color: #FFFFFF;
}
.preftable td {
padding-left: 5px;
}
+/* voterbox#election is used on user summary page */
+.voterbox#election { border-color: #990d13; }
+
+.voterbox#election th {
+ background-color: #dc0d13;
+ border-color: #dc0d13;
+}
+
+.voterbox#election td { border-color: #990d13;}
+
+
.rbmoreinfo hr {
width: 100%;
height: 10px;