From: Selectricity Anywhere tries to help groups make better
decisions in their everyday lives. It tries to make voting technology
created for state elections and government use easily accessible for
@@ -17,7 +14,10 @@ election methods library with a focus on preferential decision-making.
It is similar to Selectricity,
a flexible web-based interface to the same voting machinery. You can use Selectricity Anywhere entirely by sending and
receiving emails or short text messages (SMS). In the US, most mobile
@@ -34,10 +34,13 @@ Dropping), although the system can support other preferential and
non-preferential voting methods. Please direct messages to: vote@mako.cc Please direct messages to: vote@selectricity.org To create a new election, send a message of the following form:Information and Documentation
+
+<% steps = [ ['overview', 'Overview'],
+ ['features', 'Major Features' ],
+# ['why', 'Why Selectricity?' ],
+ ['team', 'The Team'],
+ ['thanks', 'Acknowledgements'],
+ ['privacy', 'Privacy Policy' ],
+ ['anywhere', 'Selectricity Anywhere'] ] %>
+
+
+<% steps.each_with_index do |kv, i| -%>
+ <% step, description = *kv %>
+
+
+Selectricity Anywhere
+
- Voting Machinery for the Mobile MassesUsage
+Creating a New Election
+
new lunch CVMT
-To vote in an election, send a message of the following form:
@@ -94,7 +101,10 @@ express a preference of Thai over Vietnamese over Mexican over Chinese in the election created in the example above. -To view the results of an election, send a message of one of the following forms:
@@ -116,7 +126,10 @@ the message from .res lunch
-To receive information on a vote, send a message of the following form:
@@ -138,7 +151,7 @@ from.info lunch
-To receive help on using the system, send a message of the following form:
@@ -153,8 +166,10 @@ form: designed to fit inside a 155 character text message and will be much less extensive than the help on this page. - -There are two advanced types of usages that users of Selectricity Anywhere might want to be aware of.
@@ -181,8 +196,6 @@ described in the section on getting Information on a Vote.new lunch CVMT c:chinese v:vietnamese m:mexican t:thai
-During vote creation, users can specify a voting method other than the default (Condorcet with cloneproof Schwartz sequential dropping). @@ -222,8 +235,3 @@ described in the section on getting Information on a Vote.
new lunch CVMT method:approval
-Copyleft 2006 :: -MIT Media Lab and -Benjamin Mako Hill
- diff --git a/app/views/about/features.rhtml b/app/views/about/features.rhtml new file mode 100644 index 0000000..e322b2d --- /dev/null +++ b/app/views/about/features.rhtml @@ -0,0 +1,77 @@ +Selectricity is a flexible and powerful. This page lists some of the +major features that Selectricity has to offer.
+ +QuickVotes are elections that are designed to be as simple and easy +as possible. They are like polls but are built on Selectricity's +heavy-duty election manchinery. They can be created in under a minute +and voted on in just a few seconds.
+ +QuickVotes are meant for simple, quick decisions. They are not +limited to registered lists of voters. They support simple lists of +options -- no pictures, no position statements, and no long +descriptions. They are simple enough to decide where a group is going to +dinner, what you're going to name a project, or when to have a group +meeting.
+ +The best way to learn more is to <%= link_to "create a quickvote", +:controller => 'quickvote', :action => 'create' %> now!
+ +Selectricity puts powerful election machinery into the palm of your +hand.
+ +To use Selectricity, users need to access to a computer and a web +browser -- which they don't always have in front of them. <%= link_to( +"Sectricity Anywhere", :action => 'anywhere') %> solves this problem. +It provides an interface to the system technology entirely accessible +through short emails and optimized for sending use over email/SMS from +any mobile phone.
+ +Selectricity Elections showcase all of what Selectricity has to +offer. They support lists of candidates or choices with position +statements and pictures and secure lists of voters. They have start and +end dates and features to help made votes both anonymous and +voter-verifiable.
+ +Selectricity Elections have been used by student groups to elect +officers and by non-profit organizations to elect their boards of +directors. They bring some of the best of what the world of high-tech +election technology has to offer to bear on every day +decision-making.
+ + + +Selectricity is voting machinery for the masses. We help groups make +better decisions, more easily. We allow voting, usually in form of +ranking a list of choices in order of preference, and have the computer +help groups make better decisions.
+ +Selectricity is simple to use and convenient. Anyone can create the +simplest election in under a minute and voting is even easier. Results +can be computed instaneously.
+ +Selectricity is powerful and secure. It has been used for electing +the boards of non-profit organizations and or choosing the officers of +student groups. It is simple and fast enough to help a group decide +where to go to dinner or when to have a meeting. It's flexible enough to +be integrated into an outside website or used from a mobile phone.
+ +The best way to learn more about Selectricity is to use it. Get started +by <%= link_to "creating a QuickVote", :controller => 'quickvote', +:action => 'create' %> now!
+ diff --git a/app/views/about/privacy.rhtml b/app/views/about/privacy.rhtml new file mode 100644 index 0000000..5567d87 --- /dev/null +++ b/app/views/about/privacy.rhtml @@ -0,0 +1,24 @@ +Selectricity respects its users' privacy. Private information on how +individuals use Selectricity including, but not limited to, information +on how users vote in anonymous elections will never be shared +with any third party. Private information will never be sold for any +reason.
+ +QuickVotes publish list of IP addresses of voters to all voters to +allow them to check results for vote flooding. Please be aware of this +feature and the fact that this information may be publicly disclosed for +QuickVotes to other voters. This does not affect full Selectricity +Elections. Users wanting to use these features anonymously are +encouraged to use an anonymity system like <%= link_to("Tor", +"http://tor.eff.org") %>.
+ +Aggregate information on site usage (e.g., summaries of how many +users, how often they visited, the average time spent on the site, etc.) +may be collected and shared with others in aggregated form +after being stripped of any identifiable information.
+ diff --git a/app/views/about/team.rhtml b/app/views/about/team.rhtml new file mode 100644 index 0000000..13f3330 --- /dev/null +++ b/app/views/about/team.rhtml @@ -0,0 +1,74 @@ +Selectricity was designed and built in the <%= link_to("MIT Media +Lab", "http://www.media.mit.edu") %> in the <%= link_to("Computing +Culture group", "http://compcult.media.mit.edu") %>. The team (pictured +above from left to right), includes Benjamin Mako Hill, Alyssa Wright, +Justin Sharps, Courtland Allen, and John Dong.
+ +Benjamin Mako Hill is the founder and leader of the project. He is a +long-time free software developer and advocate and a rebel with rather +too many causes. More information on Mako and his many projects can be +found on <%= link_to("his website", "http://mako.cc") %>
+ +Alyssa Wright is a Masters student at the MIT Media Lab. Her role in +Selectricity includes coordination of design and business +development.
+ +Justin Sharps is a native of Southern California who spent summer +2007 in Massachusetts (bleh) convincing himself that sitting in front of +a computer for more than 8 hours a day is, in fact, an OK way to spend +the summer. For the project, Justin focused on visualizing the results +of the elections and implementing the user system to keep track of +voters. Justin loves programming when not occupied by any of his +numerous hobbies such as homework, doing homework, hiding from homework, +or setting homework on fire. He also likes cars, expensive jeans, and +sunsets.
+ + +Hailing from the cold, hard, paved, 2-lane streets of Atlanta, +Courtland Allen is now a junior at MIT majoring in Computer Science. +When not sitting in front of his computer creating websites and what +not, he can be found teaching beginner CSS classes or spending +(generally) unproductive time chilling with his fraternity brothers. +His motto is, "Think for yourself." Courtland contributed to the visual +design of the site including its HTML, CSS styling, and images.
+ +John Dong is a MIT undergraduate and a hacker. His role on +Selectricity involved writing tests and designing and building the API +interface. He's also an administrator on the <%= link_to("Ubuntu Forums", +"http://www.ubuntuforums.com") %> and leader of the Ubuntu backports +project.
+ diff --git a/app/views/about/thanks.rhtml b/app/views/about/thanks.rhtml new file mode 100644 index 0000000..fdf4ce7 --- /dev/null +++ b/app/views/about/thanks.rhtml @@ -0,0 +1,25 @@ +Selectricity is made possible through the generous support of a +series of organizations and groups.
+ +The <%= link_to "MIT Media Lab", "http://www.media.mit.edu" %> funded +work on the project during its first year as a research prototype. In +particular, the <%= link_to("Electronic Publishing", +"http://ep.media.mit.edu") %> research group supported the creation of +the <%= link_to("RubyVote", "http://rubyvote.rubyforge.org") %> library +while the <%= link_to("Computing Culture", +"http://compcult.media.mit.edu") %> research group supported the +creation of much of Selectricity and an earlier research prototype +called HyperChad.
+ +Funding for the current version of the project comes from the <%= +link_to("Digital Incubator", "http://www.digitalincubator.net/") %> +initiative -- a joint effort between <%= link_to("MTV", +"http://www.mtv.com") %>/<%= link_to("MTVu", "http://www.mtvu.com") %> +and <%= link_to("Cisco", "http://www.cisco.com") %>. MTVu has +also played an important role in publicizing the project.
+ diff --git a/app/views/about/why.rhtml b/app/views/about/why.rhtml new file mode 100644 index 0000000..8f52bfc --- /dev/null +++ b/app/views/about/why.rhtml @@ -0,0 +1,6 @@ +
<%= text_field_tag 'login' %>
<%= f.text_field :email %>
-People participating in elections you're administrating will contact you
+
+
People participating in elections you're administrating will contact you at this address.
diff --git a/app/views/account/summary.rhtml b/app/views/account/summary.rhtml
index d15e442..e6d231f 100644
--- a/app/views/account/summary.rhtml
+++ b/app/views/account/summary.rhtml
@@ -1,4 +1,9 @@
-
E-mail: <%=h @user.email %>
diff --git a/app/views/election/_progress.rhtml b/app/views/election/_progress.rhtml
index 40beb60..98ee63d 100644
--- a/app/views/election/_progress.rhtml
+++ b/app/views/election/_progress.rhtml
@@ -1,16 +1,13 @@
-<% progress_steps = [ ['overview', 'General Information'],
- ['candidates', 'Candidates'],
- ['voters', 'Voters'],
- ['review', 'Review'] ] %>
<%= submit_tag 'Log in' %>
<% end %> -<%= link_to 'Register for an account', :controller => 'account', :action => 'signup' %>
-<%= link_to 'Lost or forgot your password?', :controller => 'account', :action => 'forgot_password' %>
+ diff --git a/app/views/site/_user_summary.rhtml b/app/views/front/_user_summary.rhtml similarity index 68% rename from app/views/site/_user_summary.rhtml rename to app/views/front/_user_summary.rhtml index e37cafb..3b541c8 100644 --- a/app/views/site/_user_summary.rhtml +++ b/app/views/front/_user_summary.rhtml @@ -1,5 +1,5 @@ <% if @current_elections.length < 1 %> - You have not created any elections. +You have not created any elections.
<% else %><%= link_to "Create a new election", :controller => 'election', :action => 'new' %>
- - diff --git a/app/views/site/index.rhtml b/app/views/front/index.rhtml similarity index 93% rename from app/views/site/index.rhtml rename to app/views/front/index.rhtml index e0e34a2..ee8c2bb 100644 --- a/app/views/site/index.rhtml +++ b/app/views/front/index.rhtml @@ -26,10 +26,12 @@ <% else %>You must have an account to start a new vote or to administer an - existing vote. You can log in or create a new account below.
+ existing vote. You can log in below. <%= render :partial => 'basic_login' %> <% end %> +Full elections creation is not yet public. <%= link_to("Contact us", + "mailto:team@selectricity.org") %> for access.
Sorry, the creator of this QuickVote has decided this election shouldn't be visible while the QuickVote is running.
-<%= link_to "Selectricity Home", :controller => 'site' %> \ No newline at end of file +<%= link_to "Selectricity Home", :controller => 'front' %> diff --git a/config/routes.rb b/config/routes.rb index cce54e9..f763da9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -11,9 +11,11 @@ ActionController::Routing::Routes.draw do |map| # You can have the root of your site routed by hooking up '' # -- just remember to delete public/index.html. - map.connect 'index.html', :controller => "site", :action => "index" - map.connect '', :controller => "site", :action => "index" + map.connect '', :controller => "front" + map.connect '/sitealizer/:action', :controller => 'sitealizer' + + map.connect 'quickvote/:action/:id', :controller => 'quickvote', :requirements => { :action => /(create|add_candidate|sort_candidates|my_quickvotes)/ } diff --git a/public/images/selectricity_team_photo.jpg b/public/images/selectricity_team_photo.jpg new file mode 100644 index 0000000..f34b7b7 Binary files /dev/null and b/public/images/selectricity_team_photo.jpg differ diff --git a/public/stylesheets/about.css b/public/stylesheets/about.css new file mode 120000 index 0000000..9e8c660 --- /dev/null +++ b/public/stylesheets/about.css @@ -0,0 +1 @@ +election.css \ No newline at end of file diff --git a/public/stylesheets/account.css b/public/stylesheets/account.css new file mode 120000 index 0000000..9e8c660 --- /dev/null +++ b/public/stylesheets/account.css @@ -0,0 +1 @@ +election.css \ No newline at end of file diff --git a/public/stylesheets/election.css b/public/stylesheets/election.css index dce594f..725502a 100644 --- a/public/stylesheets/election.css +++ b/public/stylesheets/election.css @@ -2,10 +2,6 @@ a { color: #dc0d13; } -#title-header { - background-color: #dc0d13; -} - #title-header .header { background-color: #dc0d13; } diff --git a/public/stylesheets/main.css b/public/stylesheets/main.css index 632a47f..418e892 100644 --- a/public/stylesheets/main.css +++ b/public/stylesheets/main.css @@ -362,7 +362,7 @@ li.moveable { width: 400px; border-width: 2px; border-style: solid; - border-color: #73BF26; + border-color: #999999; padding: 7px; padding-bottom: 12px; margin-bottom: 20px; @@ -375,7 +375,7 @@ li.moveable { padding: 5px 5px 5px 15px; font-size: 12px; margin: -7px; - background-color: #73BF26; + background-color: #999999; color: #fff; border-bottom: 0px; } @@ -390,7 +390,7 @@ li.moveable { width: 400px; border-width: 2px; border-style: solid; - border-color: #4D801A; + border-color: #dc0d13; padding: 7px; padding-bottom: 12px; margin-bottom: 20px; @@ -405,7 +405,7 @@ li.moveable { padding: 5px 5px 5px 15px; font-size: 12px; margin: -7px; - background-color: #4D801A; + background-color: #dc0d13; color: #fff; border-bottom: 0px; } @@ -415,19 +415,35 @@ li.moveable { padding: 5px; } -#election_creation_progress_bar ul li { +#progress_bar ul li { display: block; list-style: default; } -#election_creation_progress_bar li.step_selected { +#progress_bar li.step_selected { + font-weight: bold; +} + +#progress_bar li.step_unselected { + color: #CCCCCC; font-weight: bold; } -#election_creation_progress_bar li.step_unselected { +#progress_bar li.step_unselected { color: #CCCCCC; font-weight: bold; } +#progress_bar li.step_unselected a { + text-decoration: none; +} + +div.photo { + text-align: center; + margin-bottom: 1.5em; +} +div.photo img { + border: 1px black solid; +} diff --git a/public/stylesheets/voter.css b/public/stylesheets/voter.css index 8f5c734..98b94dc 100644 --- a/public/stylesheets/voter.css +++ b/public/stylesheets/voter.css @@ -2,10 +2,6 @@ a { color: #005cd9; } -#title-header { - background-color: #005cd9; -} - #title-header .header { background-color: #005cd9; } diff --git a/test/functional/site_controller_test.rb b/test/functional/front_controller_test.rb similarity index 65% rename from test/functional/site_controller_test.rb rename to test/functional/front_controller_test.rb index ad9f06c..2941c89 100644 --- a/test/functional/site_controller_test.rb +++ b/test/functional/front_controller_test.rb @@ -1,12 +1,12 @@ require File.dirname(__FILE__) + '/../test_helper' -require 'site_controller' +require 'front_controller' # Re-raise errors caught by the controller. -class SiteController; def rescue_action(e) raise e end; end +class FrontController; def rescue_action(e) raise e end; end -class SiteControllerTest < Test::Unit::TestCase +class FrontControllerTest < Test::Unit::TestCase def setup - @controller = SiteController.new + @controller = FrontController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new end