diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/admin_request_controller.rb | 18 | ||||
-rw-r--r-- | app/models/info_request.rb | 18 | ||||
-rw-r--r-- | app/views/admin_public_body/_form.rhtml | 2 | ||||
-rw-r--r-- | app/views/admin_request/edit.rhtml | 21 |
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. |