]> projects.mako.cc - selectricity-live/commitdiff
merged in changes from devel
author<mako@atdot.cc> <>
Wed, 5 Sep 2007 12:55:50 +0000 (08:55 -0400)
committer<mako@atdot.cc> <>
Wed, 5 Sep 2007 12:55:50 +0000 (08:55 -0400)
37 files changed:
app/controllers/about_controller.rb [new file with mode: 0644]
app/controllers/account_controller.rb
app/controllers/application.rb
app/controllers/election_controller.rb
app/controllers/front_controller.rb [moved from app/controllers/site_controller.rb with 88% similarity]
app/controllers/graph_controller.rb
app/controllers/quickvote_controller.rb
app/helpers/front_helper.rb [moved from app/helpers/site_helper.rb with 100% similarity]
app/views/about/_sidebar.rhtml [new file with mode: 0644]
app/views/about/anywhere.rhtml [moved from public/selectricity-anywhere.html with 88% similarity]
app/views/about/features.rhtml [new file with mode: 0644]
app/views/about/overview.rhtml [new file with mode: 0644]
app/views/about/privacy.rhtml [new file with mode: 0644]
app/views/about/team.rhtml [new file with mode: 0644]
app/views/about/thanks.rhtml [new file with mode: 0644]
app/views/about/why.rhtml [new file with mode: 0644]
app/views/account/login.rhtml
app/views/account/signup.rhtml
app/views/account/summary.rhtml
app/views/election/_progress.rhtml
app/views/front/_basic_login.rhtml [moved from app/views/site/_basic_login.rhtml with 80% similarity]
app/views/front/_user_summary.rhtml [moved from app/views/site/_user_summary.rhtml with 68% similarity]
app/views/front/index.rhtml [moved from app/views/site/index.rhtml with 93% similarity]
app/views/layouts/frontpage.rhtml
app/views/layouts/main.rhtml
app/views/quickvote/_pref_tables.rhtml
app/views/quickvote/not_viewable.rhtml
config/routes.rb
db/create.sql
public/images/selectricity_team_photo.jpg [new file with mode: 0644]
public/stylesheets/about.css [new symlink]
public/stylesheets/account.css [new symlink]
public/stylesheets/election.css
public/stylesheets/main.css
public/stylesheets/voter.css
test/functional/front_controller_test.rb [moved from test/functional/site_controller_test.rb with 65% similarity]
test/functional/quickvote_controller_test.rb

diff --git a/app/controllers/about_controller.rb b/app/controllers/about_controller.rb
new file mode 100644 (file)
index 0000000..4138694
--- /dev/null
@@ -0,0 +1,20 @@
+class AboutController < ApplicationController
+  layout 'main'
+  
+  before_filter :add_sidebar
+
+  def index
+    redirect_to :action => 'overview'
+  end
+
+  def features
+  end
+
+  private
+  def add_sidebar
+    @sidebar_content = render_to_string :partial => 'sidebar',
+                                        :locals => { :page => action_name }
+  end
+
+end
+
index c9388f6f52c542fc7e6081556ccdb5ae661282a8..6595b9b1144fb017a108233d683dadbd13fb0139 100644 (file)
@@ -22,7 +22,7 @@ class AccountController < ApplicationController
         self.current_user.remember_me
         cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at }
       end
-      redirect_back_or_default(:controller => '/site', :action => 'index')
+      redirect_back_or_default :controller => 'front'
       flash[:notice] = "Logged in successfully"
     end
   end
@@ -36,7 +36,7 @@ class AccountController < ApplicationController
     return unless request.post?
     @user.save!
     self.current_user = @user
-    redirect_back_or_default(:controller => '/site', :action => 'index')
+    redirect_back_or_default :controller => 'front'
     flash[:notice] = "Thanks for signing up!"
   rescue ActiveRecord::RecordInvalid
     render :action => 'signup'
@@ -47,7 +47,7 @@ class AccountController < ApplicationController
     cookies.delete :auth_token
     reset_session
     flash[:notice] = "You have been logged out."
-    redirect_back_or_default(:controller => '/site', :action => 'index')
+    redirect_back_or_default :controller => 'front'
   end
   #======================================================================
   
index 5b55d0bc97c1a23c6ef0653dbe04bb987062b009..a71d7b4626c7ae26ebb8bd18a112908da3c2e680 100644 (file)
@@ -6,10 +6,17 @@ class ApplicationController < ActionController::Base
   helper :user
   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 add_stylesheets
index 1affe0fbd254bc2622eaa4756242963ac7ede00b..89a2c22ef10e5b4fa588d9235f1651ba74827644 100644 (file)
@@ -5,8 +5,6 @@ class ElectionController < ApplicationController
   require_dependency "candidate"
   layout 'main'
 
-  #before_filter :login_required
-
   ## methods for displaying, creating,
   ## and manipulating election overview data
   ####################################################################
similarity index 88%
rename from app/controllers/site_controller.rb
rename to app/controllers/front_controller.rb
index d432a03b9fb5457277d6dafc9a0660a369bd45eb..c4a198da265dbbebe6b9b481c6f832568151a286 100644 (file)
@@ -1,10 +1,8 @@
-class SiteController < ApplicationController
+class FrontController < ApplicationController
   layout 'frontpage'
   require_dependency "user"
   require_dependency "election"
   require_dependency "account"
-  include Sitealizer
-  before_filter :use_sitealizer
 
   def index
     @quickvotes = QuickVote.find(:all).sort {|a,b| b.enddate <=> a.enddate}[0..1]
@@ -23,7 +21,6 @@ class SiteController < ApplicationController
         # if we have no record of them, set the user back to
              # nothing and start again
         session[:user] = nil
-        
       end
     end
   end
index 413ebb0c10617d9e5ac38e2cc1a3ed0e74933008..0ef4e71a3ae145c78a19bcb1b1c7c88484c82e2b 100644 (file)
@@ -2,7 +2,8 @@ require 'date'
 class GraphController < ApplicationController  
   class GruffGraff
     
-    COLORS = ['#74CE00', '#005CD9', '#DC0D13', '#131313', '#990033']
+    COLORS = ['#74CE00', '#005CD9', '#DC0D13', '#131313', '#A214A4', 'EFF80E',
+              '90E5E6', 'F58313', '437D3D', '0E026C']
     BACKGROUND_COLORS = ['#74CE00', '#FFFFFF'] #for green and white background
     
     def initialize(options)
@@ -45,6 +46,7 @@ class GraphController < ApplicationController
         end
       else #one dimensional array, just pass it in
       @graph.data( options.fetch(:data_name, "Data"), options[:data] )
+      @graph.hide_legend = true
       end
       
       # set the labels or create an empty hash
@@ -87,6 +89,8 @@ class GraphController < ApplicationController
     @election = Election.find(params[:id])
     data, labels, scale = get_votes_per_interval_data(@election)
     
+    hide_legend = true
+    
     graph = GruffGraff.new( :graph_type => Gruff::Line,
                             :data_name => @election.name,
                             :data => data,
index cc57bb51d80ff8f825a3d88119ccbf90b4e22ef3..5bf259caf7427d89a9149437ee52844bac93a295 100644 (file)
@@ -115,7 +115,7 @@ class QuickvoteController < ApplicationController
              @voter.reload
       end
     else
-      redirect_to :controller => 'site'
+      redirect_to :controller => 'front'
     end
   end
 
@@ -198,7 +198,7 @@ class QuickvoteController < ApplicationController
   def results
     unless @election = QuickVote.ident_to_quickvote(params[:ident])
       flash[:notice] = "Cannot find quickvote #{params[:ident]}."
-      redirect_to :controller => 'site'
+      redirect_to :controller => 'front'
       return
     end
     if @election.viewable == 0 && @election.active == 1
diff --git a/app/views/about/_sidebar.rhtml b/app/views/about/_sidebar.rhtml
new file mode 100644 (file)
index 0000000..a624e0d
--- /dev/null
@@ -0,0 +1,28 @@
+<h2>Information and Documentation</h2>
+
+<% steps = [ ['overview', 'Overview'],
+             ['features', 'Major Features' ],
+#             ['why', 'Why Selectricity?' ],
+             ['team', 'The Team'],
+             ['thanks', 'Acknowledgements'],
+             ['privacy', 'Privacy Policy' ],
+             ['anywhere', 'Selectricity Anywhere'] ] %>
+
+<div id="progress_bar">
+
+<ul>
+<% steps.each_with_index do |kv, i| -%>
+  <% step, description = *kv %>
+  <li class="<%= step == page ? 'step_selected' : 'step_unselected' -%><%=
+    " last" if i + 1 == steps.length -%>">
+    <% if step == page %>
+      <%= description  %>
+    <% else %>
+      <%= link_to description, :action => step %>
+    <% end %>
+  </li>
+<% end %>
+</ul>
+
+</div> 
+
similarity index 88%
rename from public/selectricity-anywhere.html
rename to app/views/about/anywhere.rhtml
index ffc32b14742acde71c9e1f2383670832552893f9..f644ade173bb7edd674a37bf706ec5ae9db0e16e 100644 (file)
@@ -1,11 +1,8 @@
-<html>
-   <link rel="stylesheet" type="text/css" href="stylesheets/main.css" />
-   <div id="top">
-  <h3>Selectricity Anywhere<br />
-  <font size="-1">Voting Machinery for the <em>Mobile</em> Masses</font></h3>
+<div id="title-header">
+  <span class="header">Selectricity Anywhere</span>
+  <span class="subheader"></span>
 </div>
 
-
 <p><em>Selectricity Anywhere</em> 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 <a href="http://selectricity.media.mit.edu">Selectricity</a>,
 a flexible web-based interface to the same voting machinery.</p>
 
-<h2>Usage</h2>
+<div class="normal-header">
+  <span class="header">Usage</span>
+  <span class="subheader"></span>
+</div>
 
 <p>You can use <em>Selectricity Anywhere</em> 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.</p>
 </div>
 
-<p>Please direct messages to: <strong><em><a href="mailto:vote@mako.cc">vote@mako.cc</a></em></strong></p>
+<p>Please direct messages to: <strong><em><a href="mailto:vote@selectricity.org">vote@selectricity.org</a></em></strong></p>
 
 
-<h3>Creating a New Election</h3>
+<div class="normal-header">
+  <span class="header">Creating a New Election</span>
+  <span class="subheader"></span>
+</div>
 
 <p>To create a new election, send a message of the following form:</p>
 
@@ -70,7 +73,11 @@ for use in new votes.</p>
 <p><tt>new lunch CVMT</tt></p>
 </div>
 
-<h3>Voting</h3>
+
+<div class="normal-header">
+  <span class="header">Voting</span>
+  <span class="subheader"></span>
+</div>
 
 <p>To vote in an election, send a message of the following form:</p>
 
@@ -94,7 +101,10 @@ express a preference of Thai over Vietnamese over Mexican over Chinese
 in the election created in the example above.</p>
 </div>
 
-<h3>View Results</h3>
+<div class="normal-header">
+  <span class="header">View Results</span>
+  <span class="subheader"></span>
+</div>
 
 <p>To view the results of an election, send a message of one of the
 following forms:</p>
@@ -116,7 +126,10 @@ the message from .</p>
 <p><tt>res lunch</tt></p>
 </div>
 
-<h3>Information on a Vote</h3>
+<div class="normal-header">
+  <span class="header">Information on a Vote</span>
+  <span class="subheader"></span>
+</div>
 
 <p>To receive information on a vote, send a message of the following
 form:</p>
@@ -138,7 +151,7 @@ from.</p>
 <p><tt>info lunch</tt></p>
 </div>
 
-<h3>General Help</h3>
+<h2>General Help</h2>
 
 <p>To receive help on using the system, send a message of the following
 form:</p>
@@ -153,8 +166,10 @@ form:</p>
 designed to fit inside a 155 character text message and will be
 <em>much</em> less extensive than the help on this page.</p>
 
-
-<h2>Advanced Usage</h2>
+<div class="normal-header">
+  <span class="header">Advanced Usage</span>
+  <span class="subheader"></span>
+</div>
 
 <p>There are two advanced types of usages that users of <em>Selectricity
 Anywhere</em> might want to be aware of.</p>
@@ -181,8 +196,6 @@ described in the section on getting <em>Information on a Vote</em>.</p>
 <p><tt>new lunch CVMT c:chinese v:vietnamese m:mexican t:thai</tt></p>
 </div>
 
-<h3>Alternative Voting Methods</h3>
-
 <p>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 <em>Information on a Vote</em>.</p>
 <p><tt>new lunch CVMT method:approval</tt></p>
 </div>
 
-<hr />
-<p><font size="-1">Copyleft 2006 ::
-<a href="http://www.media.mit.edu">MIT Media Lab</a> and
-<a href="http://mako.cc">Benjamin Mako Hill</a></font></p>
-</html>
diff --git a/app/views/about/features.rhtml b/app/views/about/features.rhtml
new file mode 100644 (file)
index 0000000..e322b2d
--- /dev/null
@@ -0,0 +1,77 @@
+<div id="title-header">
+  <span class="header">Features</span>
+  <span class="subheader"></span>
+</div>
+
+<p>Selectricity is a flexible and powerful. This page lists some of the
+major features that Selectricity has to offer. <!-- We're adding
+features quickly. You can stay up to date on feature development on the
+<%= link_to("Selectricity News blog", "http://blog.selectricity.org") %>
+--></p>
+
+<div class="normal-header">
+  <span class="header">QuickVotes</span>
+  <span class="subheader"></span>
+</div>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>The best way to learn more is to <%= link_to "create a quickvote",
+:controller => 'quickvote', :action => 'create' %> now!</p>
+
+<div class="normal-header">
+  <span class="header">Anywhere</span>
+  <span class="subheader"></span>
+</div>
+
+<p>Selectricity puts powerful election machinery into the palm of your
+hand.</p>
+
+<p>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.</p>
+
+<div class="normal-header">
+  <span class="header">Elections</span>
+  <span class="subheader">Coming Soon</span>
+</div>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<!-- 
+<p>To create a Selectriicty Election you must first <%= link_to "log in",
+:controller => 'account', :action => 'login' %>.</p>
+-->
+
+<div class="normal-header">
+  <span class="header">API</span>
+  <span class="subheader">Coming Soon</span>
+</div>
+
+Programmers and hackers may want to use Selectricity from within their
+own site or to embed Selectricity functional into their own system.
+Selectricity makes that simple with a featureful API and the ability to
+"embed" elections. 
diff --git a/app/views/about/overview.rhtml b/app/views/about/overview.rhtml
new file mode 100644 (file)
index 0000000..3ef66f9
--- /dev/null
@@ -0,0 +1,24 @@
+<div id="title-header">
+  <span class="header">About Selectricity</span>
+  <span class="subheader"></span>
+</div>
+
+<p> 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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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!</p>
+
diff --git a/app/views/about/privacy.rhtml b/app/views/about/privacy.rhtml
new file mode 100644 (file)
index 0000000..5567d87
--- /dev/null
@@ -0,0 +1,24 @@
+<div id="title-header">
+  <span class="header">Privacy Policy</span>
+  <span class="subheader"></span>
+</div>
+
+<p>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 <em>never</em> be shared
+with any third party. Private information will never be sold for any
+reason.</p>
+
+<p>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") %>.</p>
+
+<p>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 <em>aggregated form</em>
+after being stripped of any identifiable information.</p>
+
diff --git a/app/views/about/team.rhtml b/app/views/about/team.rhtml
new file mode 100644 (file)
index 0000000..13f3330
--- /dev/null
@@ -0,0 +1,74 @@
+<div id="title-header">
+  <span class="header">Team</span>
+  <span class="subheader"></span>
+</div>
+
+<div class="photo">
+  <img src="/images/selectricity_team_photo.jpg" alt="Team Photo" />
+</div>
+
+<p>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.</p>
+
+<div class="normal-header">
+  <span class="header">Benjamin Mako Hill</span>
+  <span class="subheader"></span>
+</div>
+
+<p>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") %></p>
+
+<div class="normal-header">
+  <span class="header">Alyssa Wright</span>
+  <span class="subheader"></span>
+</div>
+
+<p>Alyssa Wright is a Masters student at the MIT Media Lab. Her role in
+Selectricity includes coordination of design and business
+development.</p>
+
+<div class="normal-header">
+  <span class="header">Justin Sharps</span>
+  <span class="subheader"></span>
+</div>
+
+<p>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.</p>
+
+
+<div class="normal-header">
+  <span class="header">Courtland Allen</span>
+  <span class="subheader"></span>
+</div>
+
+<p>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.</p>
+
+<div class="normal-header">
+  <span class="header">John Dong</span>
+  <span class="subheader"></span>
+</div>
+
+<p>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.</p>
+
diff --git a/app/views/about/thanks.rhtml b/app/views/about/thanks.rhtml
new file mode 100644 (file)
index 0000000..fdf4ce7
--- /dev/null
@@ -0,0 +1,25 @@
+<div id="title-header">
+  <span class="header">Acknowledgments</span>
+  <span class="subheader"></span>
+</div>
+
+<p>Selectricity is made possible through the generous support of a
+series of organizations and groups.</p>
+
+<p>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 <em>HyperChad</em>.</p>
+
+<p>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") %>. <em>MTVu</em> has
+also played an important role in publicizing the project.</p>
+
diff --git a/app/views/about/why.rhtml b/app/views/about/why.rhtml
new file mode 100644 (file)
index 0000000..8f52bfc
--- /dev/null
@@ -0,0 +1,6 @@
+<div id="title-header">
+  <span class="header">Features</span>
+  <span class="subheader"></span>
+</div>
+
+
index a14ff99dc1276b61aa113bd5576d0c5fbc0be699..77b87368d5f8f722481a60a611a011b8caaefc9d 100644 (file)
@@ -1,3 +1,8 @@
+<div id="title-header">
+  <span class="header">Account Login</span>
+  <span class="subheader"></span>
+</div>
+
 <% form_tag do -%>
 <p><label for="login">Login</label><br/>
 <%= text_field_tag 'login' %></p>
index f5228d8b390ff4c06ae79779bbb34ad0ce924c5c..bdb2599d042b8957dd0a2e71a43b0cc0f755ea53 100644 (file)
@@ -1,3 +1,8 @@
+<div id="title-header">
+  <span class="header">Account Sign Up</span>
+  <span class="subheader"></span>
+</div>
+
 <%= error_messages_for :user %>
 <% form_for :user do |f| -%>
 
@@ -6,7 +11,8 @@
 
 <p><label for="email">Email</label><br/>
 <%= f.text_field :email %><br />
-People participating in elections you're administrating will contact you 
+
+<p>People participating in elections you're administrating will contact you 
 at this address.</p>
 
 <p><label for="password">Password</label><br/>
index d15e4425b36e6abb3d0e48043900b577cbb705db..e6d231f29fa1162fc3dfb0fed4be19cd67990ea9 100644 (file)
@@ -1,4 +1,9 @@
-<h3>This is your user summary profile, <%=h @user.login.capitalize %></h3>
+<div id="title-header">
+  <span class="header">Account Summary</span>
+  <span class="subheader"></span>
+</div>
+
+<h3>This is your account summary profile, <%=h @user.login.capitalize %></h3>
 
 <p>
 E-mail: <%=h @user.email %><br />
index 40beb60b590931d2f62a7c6b1f8bc8638b4a9840..e95ccd214087ec995a2c3b62c853d76c447bdf4b 100644 (file)
@@ -3,7 +3,8 @@
                       ['voters', 'Voters'],
                       ['review', 'Review'] ] %>
 <h2>Progress</h2>
-<div id="election_creation_progress_bar">
+
+<div id="progress_bar">
 
 <ul>
 <% progress_steps.each_with_index do |kv, i| -%>
similarity index 80%
rename from app/views/site/_basic_login.rhtml
rename to app/views/front/_basic_login.rhtml
index 12a63dd9110b89c7c442310ea62c38ab884481b0..16ddc8dadd89ee1baeb4b12eb68c794d2ce8cedb 100644 (file)
@@ -8,6 +8,5 @@
   <p><%= submit_tag 'Log in' %></p>
 <% end %>
 
-<p><%= link_to 'Register for an account', :controller => 'account', :action => 'signup' %></p>
-
 <p><%= link_to 'Lost or forgot your password?', :controller => 'account', :action => 'forgot_password' %></p>
+
similarity index 68%
rename from app/views/site/_user_summary.rhtml
rename to app/views/front/_user_summary.rhtml
index e37cafb60a0b9f1792313749b5c5465ef0623c02..3b541c8f49975859d28c1d49049985dac4001446 100644 (file)
@@ -1,5 +1,5 @@
 <% if @current_elections.length < 1 %>
-  <em>You have not created any elections.</em>
+  <p><em>You have not created any elections.</em></p>
 <% else %>
   <ul>
   <% for election in @current_elections %>
@@ -9,6 +9,3 @@
   </ul>
 <% end %>
 
-<p><%= link_to "Create a new election", :controller => 'election', :action => 'new' %></p>
-<p></p>
-
similarity index 93%
rename from app/views/site/index.rhtml
rename to app/views/front/index.rhtml
index e0e34a278475fbdf1f49b97a26f972d0c2f75a57..ee8c2bb51c4930d28cf825a6590648a70c08d396 100644 (file)
   <% else %>
     
     <p>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.</p>
+    existing vote. You can log in <!-- or create a new account -->below.</p>
     
     <%= render :partial => 'basic_login' %>
   <% end %>
+  <p>Full elections creation is not yet public. <%= link_to("Contact us",
+   "mailto:team@selectricity.org") %> for access.</p>
 
   </div>
 </div>
index d5a5f01e7cef0a36364f5e83efbfd1a3fa621dc2..fd9817021dd781697691ab2faece924e69894faf 100644 (file)
        <% else %>
       <%= link_to("login", :controller => "account", :action => "login")
       %>
-      &nbsp;&nbsp;<%= link_to("sign up", :controller => "account", 
-                                :action => "signup")%>
+      &nbsp;&nbsp;<%= link_to "sign up", :controller => "account", 
+                                :action => "signup" %>
     <% end -%>
-      &nbsp;&nbsp;<%= link_to("help/about", :controller => "site", 
-                               :action => 'about')%>
+      &nbsp;&nbsp;<%= link_to "help/about", :controller => 'about' %>
       </div>
          <a href="index.html"><h1>selectricity: voting machinery for the masses</h1></a>
     </div>
index bdb206a9fc8af29049a0d7e35190fb7602411df1..c34e797b6f60028658061777bfe2fad261e2f67e 100644 (file)
@@ -17,8 +17,7 @@
   <div id="page-wrapper">
 
     <div id="left-side">
-      <%= link_to "<h1>Selectricity</h1>",
-                  :controller => 'site', :action => 'index' %>
+      <%= link_to "<h1>Selectricity</h1>", :controller => 'front' %>
 
       <div id="left-side-content">
         <% if flash[:notice]%>
           <%= link_to "logout", :controller => "account",
                       :action => "logout" %> 
         <% else %>
-          <%= link_to("login", :controller => "account", :action => "login")
-          %>/<%= link_to("sign up", :controller => "account", :action => "signup")%>
+          <%= link_to "login", :controller => "account", :action => "login" 
+          %>/<%= link_to "sign up", :controller => "account", :action => "signup" %>
         <% end %> 
         </div>
 
         <div id="bar-right">
-          <%= link_to("help/about", :controller => "site", :action => "about") %>
+          <%= link_to "help/about", :controller => 'about' %>
         </div>
       </div> <!-- end of top-bar -->
       
index 3479167d226296cc14a0864c47b1299d2efb452a..588ec22d8aa88e19883fc1cda0a08c06bb6edbcb 100644 (file)
@@ -7,6 +7,9 @@
 <!-- This table shows how many times each choice was ranked above the other, 
        with percentages-->
 <table class="preftable">
+<caption>Each number shows how many times the candidate on the left beat the 
+matching candidate on the top. The Schulze/Condorcet winner is on the top of the 
+left column.</caption>
   <tr>
        <td></td>
        <% candidates.each do |candidate| -%>
@@ -34,6 +37,9 @@
 <br />
 <!-- This table generates a margin of victory -->
 <table class="preftable">
+<caption>A simplification of the above data. The winner is on the left; each cell
+names the defeated candidate and the magnitude of the victory in parenthesis.
+</caption>
   <% candidates.each do |victor| %>
   <tr>
     <th><%=h @names[victor] %></th>
index 3c5532e264b0c5612dd67cedc43025d131856e18..24361d93f5117258b0a07230c8a9b08489724fa5 100644 (file)
@@ -1,3 +1,3 @@
 <p>Sorry, the creator of this QuickVote has decided this election shouldn't
        be visible while the QuickVote is running. </p>
-<%= link_to "Selectricity Home", :controller => 'site' %>
\ No newline at end of file
+<%= link_to "Selectricity Home", :controller => 'front' %>
index cce54e96e432cecbaf9710877ebddf5ce49090ad..f763da980f30581afe26449b168263812e239a0b 100644 (file)
@@ -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)/ }
index c28dd36c48e616c427b1ef8dcc3f8737c11d8288..2acf948b6ab57958f97ad5f8e30db30f799e37e5 100644 (file)
@@ -114,32 +114,6 @@ create table sessions (
  index      session_index (sessid)
 );
 
-# CREATE users TABLE
-#####################################
-#DROP TABLE IF EXISTS `users`;
-#CREATE TABLE `users` (
-#  `id` int(11) NOT NULL auto_increment,
-#  `login` varchar(80) NOT NULL default '',
-#  `salted_password` varchar(40) NOT NULL default '',
-#  `email` varchar(60) NOT NULL default '',
-#  `firstname` varchar(40) default NULL,
-#  `lastname` varchar(40) default NULL,
-#  `salt` varchar(40) NOT NULL default '',
-#  `verified` int(11) default '0',
-#  `role` varchar(40) default NULL,
-#  `security_token` varchar(40) default NULL,
-#  `token_expiry` datetime default NULL,
-#  `created_at` datetime default NULL,
-#  `updated_at` datetime default NULL,
-#  `logged_in_at` datetime default NULL,
-#  `deleted` int(11) default '0',
-#  `delete_after` datetime default NULL,
-#  PRIMARY KEY  (`id`)
-#) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-#Following is the new users table that goes with acts_as_authenticated
-#Is simpler for now, saving the old table while in transition between 
-#the two for ideas on what attributes may be helpful/necessary
 drop table if exists users;
 create table users (
        id                        int         not null auto_increment,
diff --git a/public/images/selectricity_team_photo.jpg b/public/images/selectricity_team_photo.jpg
new file mode 100644 (file)
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 (symlink)
index 0000000..9e8c660
--- /dev/null
@@ -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 (symlink)
index 0000000..9e8c660
--- /dev/null
@@ -0,0 +1 @@
+election.css
\ No newline at end of file
index dce594f6b941f27d7933ae21508b9a0b2265ee1d..725502a6543d0e0895bc74866510edc09d372da1 100644 (file)
@@ -2,10 +2,6 @@ a {
        color: #dc0d13;
 }
 
-#title-header {
-    background-color: #dc0d13;
-}
-
 #title-header .header {
        background-color: #dc0d13;
 }
index 16b10bfef028ed463ab08fae6dd91802b60b66cf..418e892534c4e06780c5d080b37331e0a06efbfb 100644 (file)
@@ -267,12 +267,17 @@ li.moveable {
 }
 
 .preftable {
+       font-family: verdana,arial,helvetica,sans-serif;
        border-spacing: 0px;
-         border-width: 2px;
-         border-color: #999999;
-         border-style: solid;
+       border-width: 2px;
+       border-color: #999999;
+       border-style: solid;
+       caption-side: top;
+}
+.preftable caption { 
+  font-family: verdana,arial,helvetica,sans-serif;
+  font-size: 0.9em;
 }
-
 .preftable th {
        font-family: verdana,arial,helvetica,sans-serif;
        border-width: 2px;
@@ -290,7 +295,6 @@ li.moveable {
   border-width: 1px;
   border-color: #999999;
   border-style: solid;
-
   text-align: right;
   padding-right: 5px;
   padding-left: 5px;
@@ -335,7 +339,6 @@ li.moveable {
        
 .voterbox#election td { border-color: #990d13;}
 
-
 .rbmoreinfo hr {
   width: 100%;
   height: 10px;
@@ -359,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;
@@ -372,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;
 }
@@ -387,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;
@@ -402,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;
 }
@@ -412,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;
+}
 
index 8f5c734a97893e760a79d281a1ad6c849440242f..98b94dc456159ad119b348b5b2748ab557bcd2a9 100644 (file)
@@ -2,10 +2,6 @@ a {
     color: #005cd9;
 }
 
-#title-header {
-       background-color: #005cd9;
-}
-
 #title-header .header {
        background-color: #005cd9;
 }
similarity index 65%
rename from test/functional/site_controller_test.rb
rename to test/functional/front_controller_test.rb
index ad9f06cd9d8aa2b3f60abe8cca525d84b3be315e..2941c89c7190b3f90d3d5585ec880d700579b9d4 100644 (file)
@@ -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
index fbeb4a53a0dadf20ae1cd50be68fc41208ec1098..60ddb1b86f036e66362074f755914f90dc9cfa72 100644 (file)
@@ -60,7 +60,7 @@ class QuickvoteControllerTest < Test::Unit::TestCase
 
   def test_get_quickvote_nonexistent
     get :index, { 'ident' => "idontexist" }
-    assert_redirected_to :controller => 'site'
+    assert_redirected_to :controller => 'front'
   end
 
   def test_get_result_empty_vote
@@ -72,7 +72,7 @@ class QuickvoteControllerTest < Test::Unit::TestCase
   def test_get_result_nonexistent
     test_create_quickvote
     get :results, { 'ident' => 'asdflaksdjf' }
-    assert_redirected_to :controller => 'site'
+    assert_redirected_to :controller => 'front'
   end
 
   def test_get_result_with_a_vote

Benjamin Mako Hill || Want to submit a patch?