aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/admin_request_controller.rb18
-rw-r--r--app/models/info_request.rb18
-rw-r--r--app/views/admin_public_body/_form.rhtml2
-rw-r--r--app/views/admin_request/edit.rhtml21
4 files changed, 48 insertions, 11 deletions
diff --git a/app/controllers/admin_request_controller.rb b/app/controllers/admin_request_controller.rb
index 504ce0c23..7ab1caf1d 100644
--- a/app/controllers/admin_request_controller.rb
+++ b/app/controllers/admin_request_controller.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: admin_request_controller.rb,v 1.6 2008-02-15 11:18:55 francis Exp $
+# $Id: admin_request_controller.rb,v 1.7 2008-02-29 13:21:13 francis Exp $
class AdminRequestController < ApplicationController
layout "admin"
@@ -38,17 +38,29 @@ class AdminRequestController < ApplicationController
old_title = @info_request.title
old_prominence = @info_request.prominence
+ old_described_state = @info_request.described_state
+ old_awaiting_description = @info_request.awaiting_description
- if @info_request.update_attributes(params[:info_request])
+ @info_request.title = params[:info_request][:title]
+ @info_request.prominence = params[:info_request][:prominence]
+ if @info_request.described_state != params[:info_request][:described_state]
+ @info_request.set_described_state(params[:info_request][:described_state], @info_request.get_last_event.id.to_i)
+ end
+ @info_request.awaiting_description = params[:info_request][:awaiting_description] == "true" ? true : false
+
+ if @info_request.valid?
+ @info_request.save!
@info_request.log_event("edit",
{ :editor => admin_http_auth_user(),
:old_title => old_title, :title => @info_request.title,
:old_prominence => old_prominence, :prominence => @info_request.prominence,
+ :old_described_state => old_described_state, :described_state => @info_request.described_state,
+ :old_awaiting_description => old_awaiting_description, :awaiting_description => @info_request.awaiting_description
})
flash[:notice] = 'Request successfully updated.'
redirect_to request_admin_url(@info_request)
else
- render :action => 'edit_outgoing'
+ render :action => 'edit'
end
end
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index 5eab7ba4d..707c0249f 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -21,7 +21,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: info_request.rb,v 1.50 2008-02-28 14:04:46 francis Exp $
+# $Id: info_request.rb,v 1.51 2008-02-29 13:21:14 francis Exp $
require 'digest/sha1'
@@ -42,7 +42,7 @@ class InfoRequest < ActiveRecord::Base
belongs_to :dsecribed_last_incoming_message_id
- # user described state (also update in info_request_event)
+ # user described state (also update in info_request_event, admin_request/edit.rhtml)
validates_inclusion_of :described_state, :in => [
'waiting_response',
'waiting_clarification',
@@ -75,7 +75,7 @@ public
url_title = url_title[0..31]
end
# For request with same name as others, tag on the request numeric id
- while not InfoRequest.find_by_url_title(url_title).nil?
+ while not InfoRequest.find_by_url_title(url_title, :conditions => ["id <> ?", self.id] ).nil?
url_title += "-" + self.id.to_s
end
write_attribute(:url_title, url_title)
@@ -345,7 +345,17 @@ public
end
end
- # Display versino of status
+ # Returns last event
+ def get_last_event
+ events = self.info_request_events.find(:all, :order => "created_at")
+ if events.size == 0
+ return nil
+ else
+ return events[-1]
+ end
+ end
+
+ # Display version of status
def display_status
status = self.calculate_status
if self.awaiting_description
diff --git a/app/views/admin_public_body/_form.rhtml b/app/views/admin_public_body/_form.rhtml
index 1a89edf02..68cbed624 100644
--- a/app/views/admin_public_body/_form.rhtml
+++ b/app/views/admin_public_body/_form.rhtml
@@ -3,7 +3,7 @@
<!--[form:public_body]-->
<p><label for="public_body_name">Name</label><br/>
<%= text_field 'public_body', 'name', :size => 60 %></p>
-<p><label for="public_body_short_name">Short name (also used to make URL, leave blank for same as name)</label><br/>
+<p><label for="public_body_short_name">Short name (also used to make URL, leave blank for same as name. Don't worry about breaking URLs through renaming, as the history is used to redirect)</label><br/>
<%= text_field 'public_body', 'short_name', :size => 60 %></p>
<p><label for="public_body_tag_string">Tags</label><br/>
<%= text_field 'public_body', 'tag_string', :size => 40 %></p>
diff --git a/app/views/admin_request/edit.rhtml b/app/views/admin_request/edit.rhtml
index 48af4f1f3..46ab70ca0 100644
--- a/app/views/admin_request/edit.rhtml
+++ b/app/views/admin_request/edit.rhtml
@@ -4,13 +4,28 @@
<% form_tag '../update/' + @info_request.id.to_s do %>
- <p><label for="info_request_title">Title</label><br/>
+ <p><label for="info_request_title">Title</label> (warning: editing this will break URLs right now)<br/>
<%= text_field 'info_request', 'title', :size => 50 %></p>
- <p><label for="info_request_prominence">Prominence</label><br/>
+ <p><label for="info_request_prominence">Prominence</label> (whether is shown in lists of requests or not)<br/>
<%= select( 'info_request', "prominence", { "normal" => "normal", "backpage" => "backpage"}) %>
- <%= submit_tag 'Save' %>
+ <p><label for="info_request_awaiting_description">Awaiting description</label><br/>
+ <%= select('info_request', "awaiting_description", [["Yes",true],["No",false]]) %>
+ </p>
+
+ <p><label for="info_request_described_state">Described state</label><br/>
+ <%= select( 'info_request', "described_state",
+ [
+ 'waiting_response',
+ 'waiting_clarification',
+ 'rejected',
+ 'successful',
+ 'partially_successful',
+ 'requires_admin',
+ ]) %>
+
+ <%= submit_tag 'Save' %>
<p><strong>Note:</strong> To edit the actual request body text, click edit
next to the specific outgoing message.