diff options
-rw-r--r-- | app/controllers/admin_request_controller.rb | 39 | ||||
-rw-r--r-- | app/models/outgoing_message.rb | 11 | ||||
-rw-r--r-- | app/views/admin_public_body/show.rhtml | 2 | ||||
-rw-r--r-- | app/views/admin_request/list.rhtml | 25 | ||||
-rw-r--r-- | app/views/admin_request/show.rhtml | 37 | ||||
-rw-r--r-- | app/views/layouts/admin.rhtml | 1 | ||||
-rw-r--r-- | config/routes.rb | 3 | ||||
-rw-r--r-- | todo.txt | 4 |
8 files changed, 117 insertions, 5 deletions
diff --git a/app/controllers/admin_request_controller.rb b/app/controllers/admin_request_controller.rb new file mode 100644 index 000000000..d480084c4 --- /dev/null +++ b/app/controllers/admin_request_controller.rb @@ -0,0 +1,39 @@ +# app/controllers/admin_request_controller.rb: +# Controller for editing public bodies from the admin interface. +# +# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. +# Email: francis@mysociety.org; WWW: http://www.mysociety.org/ +# +# $Id: admin_request_controller.rb,v 1.1 2007-12-17 00:34:55 francis Exp $ + +class AdminRequestController < ApplicationController + layout "admin" + + def index + list + render :action => 'list' + end + + def list + @info_requests = InfoRequest.paginate :order => "created_at desc", :page => params[:page], :per_page => 100 + end + + def show + @info_request = InfoRequest.find(params[:id]) + end + + def resend + @outgoing_message = OutgoingMessage.find(params[:outgoing_message_id]) + @outgoing_message.resend_message + flash[:notice] = "Outgoing message resent" + redirect_to admin_url('request/show/' + @outgoing_message.info_request.id.to_s) + end + +# def destroy +# InfoRequest.find(params[:id]).destroy +# redirect_to admin_url('request/list') +# end + + private + +end diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb index e6d716b0f..af3ace9e4 100644 --- a/app/models/outgoing_message.rb +++ b/app/models/outgoing_message.rb @@ -20,7 +20,7 @@ # Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. # Email: francis@mysociety.org; WWW: http://www.mysociety.org/ # -# $Id: outgoing_message.rb,v 1.11 2007-12-11 12:16:29 francis Exp $ +# $Id: outgoing_message.rb,v 1.12 2007-12-17 00:34:55 francis Exp $ class OutgoingMessage < ActiveRecord::Base belongs_to :info_request @@ -66,7 +66,16 @@ class OutgoingMessage < ActiveRecord::Base else raise "Message id #{self.id} has type '#{self.message_type}' which send_message can't handle" end + end + # An admin function + def resend_message + if self.message_type == 'initial_request' and self.status == 'sent' + self.status = 'ready' + send_message + else + raise "Message id #{self.id} has type '#{self.message_type}' status '#{self.status}' " + end end end diff --git a/app/views/admin_public_body/show.rhtml b/app/views/admin_public_body/show.rhtml index 26b49cf80..e5132528c 100644 --- a/app/views/admin_public_body/show.rhtml +++ b/app/views/admin_public_body/show.rhtml @@ -1,4 +1,4 @@ -<% @title = h(@public_body.name) %> +<% @title = "Public body - " + h(@public_body.name) %> <h1><%=@title%></h1> diff --git a/app/views/admin_request/list.rhtml b/app/views/admin_request/list.rhtml new file mode 100644 index 000000000..9472ac8c1 --- /dev/null +++ b/app/views/admin_request/list.rhtml @@ -0,0 +1,25 @@ +<% @title = 'Listing FOI requests' %> + +<h1><%=@title%></h1> + +<table> + <tr> + <% for column in InfoRequest.content_columns %> + <th><%= column.human_name %></th> + <% end %> + </tr> + +<% for info_request in @info_requests %> + <tr class="<%= cycle('odd', 'even') %>"> + <td><%= link_to h(info_request.title), 'show/' + info_request.id.to_s %></td> + <% for column in InfoRequest.content_columns.map { |c| c.name } - [ "title" ] %> + <td><%=h info_request.send(column) %></td> + <% end %> + </tr> +<% end %> +</table> + +<%= will_paginate(@info_requests) %> + +<br /> + diff --git a/app/views/admin_request/show.rhtml b/app/views/admin_request/show.rhtml new file mode 100644 index 000000000..e9f5ba59a --- /dev/null +++ b/app/views/admin_request/show.rhtml @@ -0,0 +1,37 @@ +<% @title = "FOI request - " + h(@info_request.title) %> + +<h1><%=@title%></h1> + +<p> +<% for column in InfoRequest.content_columns %> + <b><%= column.human_name %>:</b> <%=h @info_request.send(column.name) %> + <br/> +<% end %> +</p> + +<h2>Outgoing messages</h2> + +<table> + <tr> + <% for column in OutgoingMessage.content_columns %> + <th><%= column.human_name %></th> + <% end %> + <th>Actions</th> + </tr> + +<% for outgoing_message in @info_request.outgoing_messages %> + <tr class="<%= cycle('odd', 'even') %>"> + <% for column in OutgoingMessage.content_columns.map { |c| c.name } %> + <td><%=h outgoing_message.send(column) %></td> + <% end %> + <td> + <% form_tag '../resend' do %> + <%= hidden_field_tag 'outgoing_message_id', outgoing_message.id %> + <%= submit_tag "Resend" %> + <% end %> + </td> + </tr> +<% end %> +</table> + + diff --git a/app/views/layouts/admin.rhtml b/app/views/layouts/admin.rhtml index ad30f4924..1dd4dc89f 100644 --- a/app/views/layouts/admin.rhtml +++ b/app/views/layouts/admin.rhtml @@ -12,6 +12,7 @@ <p><b>FOIFA admin interface:</b> <%= link_to 'Public bodies', admin_url('body/list') %> +| <%= link_to 'Requests', admin_url('request/list') %> </p> <p style="color: green"><%= flash[:notice] %></p> diff --git a/config/routes.rb b/config/routes.rb index 7d3c48f9b..cbb1ca40d 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.24 2007-11-28 19:20:39 francis Exp $ +# $Id: routes.rb,v 1.25 2007-12-17 00:34:56 francis Exp $ ActionController::Routing::Routes.draw do |map| # The priority is based upon order of creation: first created -> highest priority. @@ -36,6 +36,7 @@ ActionController::Routing::Routes.draw do |map| # paths to work on the live site proxied over HTTPS to secure.mysociety.org map.connect '/admin/:action', :controller => 'admin', :action => 'index' map.connect '/admin/body/:action/:id', :controller => 'admin_public_body' + map.connect '/admin/request/:action/:id', :controller => 'admin_request' # Sample of named route: # map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase' @@ -5,14 +5,14 @@ Please send me a copy of the contract signed with Veolia for refuse and recyclin Next ==== +Cope with bouncing requests + Either rotate log files, or merge with Apache ones Let requester send follow-ups Do something after 20 working days if you get no response Forgotten password link -Email has already been taken hasn't got a way to sign in -Link from error page for signin/signup to go to other one Remember me box Work out how to get it to tell you code coverage of .rhtml files |