aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlouise <louise>2007-10-15 22:26:13 +0000
committerlouise <louise>2007-10-15 22:26:13 +0000
commitc0a50ab51dc85feca3eb571351e40e9e41588be8 (patch)
tree4d512a1c66c847658dd08dd41a86f9503f37f657
parent850ecc72e4467ba6f465a0eaa657bc8d9c7067b2 (diff)
Rejigged routing in favour of mostly model-focused controllers
-rw-r--r--app/controllers/index_controller.rb19
-rw-r--r--app/controllers/list_controller.rb16
-rw-r--r--app/controllers/new_controller.rb51
-rw-r--r--app/controllers/request_controller.rb45
-rw-r--r--app/views/body/show.rhtml2
-rw-r--r--app/views/layouts/default.rhtml4
-rw-r--r--app/views/user/index.rhtml2
-rw-r--r--config/routes.rb27
-rw-r--r--test/functional/admin_public_body_controller_test.rb2
-rw-r--r--test/functional/file_request_controller_test.rb6
10 files changed, 70 insertions, 104 deletions
diff --git a/app/controllers/index_controller.rb b/app/controllers/index_controller.rb
deleted file mode 100644
index e15e72fdd..000000000
--- a/app/controllers/index_controller.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-# controllers/index_controller.rb:
-# Main page of site.
-#
-# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
-# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
-#
-# $Id: index_controller.rb,v 1.2 2007-10-09 17:29:43 francis Exp $
-
-class IndexController < ApplicationController
- def index
- respond_to do |format|
- format.html
- end
- end
-
- private
-
-end
-
diff --git a/app/controllers/list_controller.rb b/app/controllers/list_controller.rb
deleted file mode 100644
index 0bd336573..000000000
--- a/app/controllers/list_controller.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# app/controllers/list_controller.rb:
-# Show all of the FOI requests in the system.
-#
-# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
-# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
-#
-# $Id: list_controller.rb,v 1.3 2007-10-09 17:29:43 francis Exp $
-
-class ListController < ApplicationController
- def index
- @info_request_pages, @info_requests = paginate :info_requests, :per_page => 25, :order => "created_at desc"
- end
-
- private
-
-end
diff --git a/app/controllers/new_controller.rb b/app/controllers/new_controller.rb
deleted file mode 100644
index 1da6f1398..000000000
--- a/app/controllers/new_controller.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-# app/controllers/new_controller.rb:
-# Interface for building a new FOI request.
-#
-# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
-# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
-#
-# $Id: new_controller.rb,v 1.4 2007-10-10 16:06:17 francis Exp $
-
-class NewController < ApplicationController
- def index
- # render index.rhtml template
- end
-
- def create
- # Create both FOI request and the first request message
- @info_request = InfoRequest.new(params[:info_request])
- @outgoing_message = OutgoingMessage.new(params[:outgoing_message].merge({
- :status => 'ready',
- :message_type => 'initial_request'
- }))
- @info_request.outgoing_messages << @outgoing_message
- @outgoing_message.info_request = @info_request
-
- # This automatically saves dependent objects, such as @info_request, in the same transaction
- if not @info_request.valid?
- render :action => 'index'
- elsif authenticated?
- @info_request.user = authenticated_user
- @info_request.save
- flash[:notice] = "Your Freedom of Information request has been created."
- redirect_to :controller => 'request', :id => @info_request
- end
-
- # Save both models
-# valid = @info_request.valid?
-# valid &&= @outgoing_message.valid? # XXX maybe there is a nicer way of preventing lazy boolean evaluation than this
-# if valid
-# if authenticated?
-# @info_request.save!
-# @outgoing_message.save!
-# end
-# else
-# render :action => 'index'
-# end
- end
-
- private
-
-end
-
-
diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb
index e860d43ef..3b278d728 100644
--- a/app/controllers/request_controller.rb
+++ b/app/controllers/request_controller.rb
@@ -4,13 +4,54 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: request_controller.rb,v 1.2 2007-10-09 17:29:43 francis Exp $
+# $Id: request_controller.rb,v 1.3 2007-10-15 22:26:37 louise Exp $
class RequestController < ApplicationController
- def index
+
+ def show
@info_request = InfoRequest.find(params[:id])
end
+ def list
+ @info_request_pages, @info_requests = paginate :info_requests, :per_page => 25, :order => "created_at desc"
+ end
+
+ def frontpage
+ end
+
+ def create
+ # Create both FOI request and the first request message
+ @info_request = InfoRequest.new(params[:info_request])
+ @outgoing_message = OutgoingMessage.new(params[:outgoing_message].merge({
+ :status => 'ready',
+ :message_type => 'initial_request'
+ }))
+ @info_request.outgoing_messages << @outgoing_message
+ @outgoing_message.info_request = @info_request
+
+ # This automatically saves dependent objects, such as @info_request, in the same transaction
+ if not @info_request.valid?
+ render :action => 'new'
+ elsif authenticated?
+ @info_request.user = authenticated_user
+ @info_request.save
+ flash[:notice] = "Your Freedom of Information request has been created."
+ redirect_to :controller => 'request', :action => "show", :id => @info_request
+ end
+
+ # Save both models
+# valid = @info_request.valid?
+# valid &&= @outgoing_message.valid? # XXX maybe there is a nicer way of preventing lazy boolean evaluation than this
+# if valid
+# if authenticated?
+# @info_request.save!
+# @outgoing_message.save!
+# end
+# else
+# render :action => 'index'
+# end
+ end
+
private
end
diff --git a/app/views/body/show.rhtml b/app/views/body/show.rhtml
index f454a8b4d..2519a9362 100644
--- a/app/views/body/show.rhtml
+++ b/app/views/body/show.rhtml
@@ -5,7 +5,7 @@
<p>Freedom of Information requests made to this body:</p>
<ul>
<% for info_request in @public_body.info_requests %>
-<li><%= link_to h(info_request.title), :controller => 'request', :action => 'index', :id => info_request %></li>
+<li><%= link_to h(info_request.title), :controller => 'request', :action => 'show', :id => info_request %></li>
<% end %>
</ul>
diff --git a/app/views/layouts/default.rhtml b/app/views/layouts/default.rhtml
index 1153ce602..fe519a4ad 100644
--- a/app/views/layouts/default.rhtml
+++ b/app/views/layouts/default.rhtml
@@ -23,9 +23,9 @@
<% if not (controller.action_name == 'signin' or controller.action_name == 'signup') %>
<div id="logged_in_bar">
<% if @user %>
- Hello, <%=h(@user.name)%>! (<%= link_to "Logout", :action => 'signout', :r => request.request_uri %>)
+ Hello, <%=h(@user.name)%>! (<%= link_to "Logout", :controller => 'user', :action => 'signout', :r => request.request_uri %>)
<% else %>
- Hello! (<%= link_to "Login or register", { :action => 'signin', :r => request.request_uri } %>)
+ Hello! (<%= link_to "Login or register", { :controller => 'user', :action => 'signin', :r => request.request_uri } %>)
<% end %>
</div>
<% end %>
diff --git a/app/views/user/index.rhtml b/app/views/user/index.rhtml
index 535eab8d9..fe314a07e 100644
--- a/app/views/user/index.rhtml
+++ b/app/views/user/index.rhtml
@@ -11,7 +11,7 @@
<p>Freedom of Information requests made by this person:</p>
<ul>
<% for info_request in display_user.info_requests %>
- <li><%= link_to h(info_request.title), :controller => 'request', :action => 'index', :id => info_request %></li>
+ <li><%= link_to h(info_request.title), :controller => 'request', :action => 'show', :id => info_request %></li>
<% end %>
</ul>
<% end %>
diff --git a/config/routes.rb b/config/routes.rb
index be9a1f7f3..fc981702f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -4,7 +4,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: routes.rb,v 1.12 2007-10-11 22:01:37 francis Exp $
+# $Id: routes.rb,v 1.13 2007-10-15 22:26:38 louise Exp $
ActionController::Routing::Routes.draw do |map|
# The priority is based upon order of creation: first created -> highest priority.
@@ -12,17 +12,28 @@ ActionController::Routing::Routes.draw do |map|
# Sample of regular route:
# map.connect 'products/:id', :controller => 'catalog', :action => 'view'
# Keep in mind you can assign values other than :controller and :action
- map.connect "/new/:action", :controller => 'new'
- map.connect "/list/:action", :controller => 'list'
- map.connect "/request/:id", :controller => 'request', :action => 'index'
- map.connect "/user/:name", :controller => 'user', :action => 'index'
+
+ map.with_options :controller => 'request' do |request|
+ request.connect '/', :action => 'frontpage'
+ request.connect '/list', :action => 'list'
+ request.connect '/index', :action => 'index'
+ request.connect '/new', :action => 'new'
+ request.connect '/create', :action => 'create'
+ request.connect '/request/:id', :action => 'show'
+ end
+
+ map.with_options :controller => 'user' do |user|
+ user.connect '/signin', :action => 'signin'
+ user.connect '/signup', :action => 'signup'
+ user.connect '/signout', :action => 'signout'
+ user.connect "/user/:name", :action => 'index'
+ end
+
map.connect "/body/:short_name", :controller => 'body', :action => 'show'
map.connect '/admin/:action', :controller => 'admin', :action => 'index'
map.connect '/admin/body/:action/:id', :controller => 'admin_public_body'
- map.connect "/:action/:id", :controller => 'index'
-
# Sample of named route:
# map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
# This route can be invoked with purchase_url(:id => product.id)
@@ -39,6 +50,6 @@ ActionController::Routing::Routes.draw do |map|
# FAI: Turned off for now, as to be honest I don't trust it from a security point of view.
#map.connect ':controller/:action/:id.:format'
#map.connect ':controller/:action/:id'
- map.connect '/:controller/:action'
+ # map.connect '/:controller/:action'
end
diff --git a/test/functional/admin_public_body_controller_test.rb b/test/functional/admin_public_body_controller_test.rb
index 80628aff9..b78d29dce 100644
--- a/test/functional/admin_public_body_controller_test.rb
+++ b/test/functional/admin_public_body_controller_test.rb
@@ -12,7 +12,7 @@ class AdminPublicBodyControllerTest < Test::Unit::TestCase
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
- @first_id = public_bodies(:first).id
+ @first_id = public_bodies(:one).id
end
def test_index
diff --git a/test/functional/file_request_controller_test.rb b/test/functional/file_request_controller_test.rb
index 05d17d5e5..7e3bdd156 100644
--- a/test/functional/file_request_controller_test.rb
+++ b/test/functional/file_request_controller_test.rb
@@ -1,10 +1,10 @@
require File.dirname(__FILE__) + '/../test_helper'
-require 'file_request_controller'
+require 'request_controller'
# Re-raise errors caught by the controller.
-class FileRequestController; def rescue_action(e) raise e end; end
+class RequestController; def rescue_action(e) raise e end; end
-class FileRequestControllerTest < Test::Unit::TestCase
+class RequestControllerTest < Test::Unit::TestCase
def setup
@controller = FileRequestController.new
@request = ActionController::TestRequest.new