diff options
author | louise <louise> | 2007-10-15 22:26:13 +0000 |
---|---|---|
committer | louise <louise> | 2007-10-15 22:26:13 +0000 |
commit | c0a50ab51dc85feca3eb571351e40e9e41588be8 (patch) | |
tree | 4d512a1c66c847658dd08dd41a86f9503f37f657 | |
parent | 850ecc72e4467ba6f465a0eaa657bc8d9c7067b2 (diff) |
Rejigged routing in favour of mostly model-focused controllers
-rw-r--r-- | app/controllers/index_controller.rb | 19 | ||||
-rw-r--r-- | app/controllers/list_controller.rb | 16 | ||||
-rw-r--r-- | app/controllers/new_controller.rb | 51 | ||||
-rw-r--r-- | app/controllers/request_controller.rb | 45 | ||||
-rw-r--r-- | app/views/body/show.rhtml | 2 | ||||
-rw-r--r-- | app/views/layouts/default.rhtml | 4 | ||||
-rw-r--r-- | app/views/user/index.rhtml | 2 | ||||
-rw-r--r-- | config/routes.rb | 27 | ||||
-rw-r--r-- | test/functional/admin_public_body_controller_test.rb | 2 | ||||
-rw-r--r-- | test/functional/file_request_controller_test.rb | 6 |
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 |