diff options
-rw-r--r-- | app/controllers/application.rb | 6 | ||||
-rw-r--r-- | app/controllers/request_controller.rb | 8 | ||||
-rw-r--r-- | app/models/outgoing_message.rb | 15 | ||||
-rw-r--r-- | app/models/request_mailer.rb | 12 | ||||
-rw-r--r-- | app/views/layouts/default.rhtml | 7 | ||||
-rw-r--r-- | app/views/request_mailer/initial_request.rhtml | 7 | ||||
-rw-r--r-- | config/environment.rb | 14 | ||||
-rw-r--r-- | config/general-example | 27 | ||||
-rw-r--r-- | db/migrate/012_add_sent_outgoing_message.rb | 8 | ||||
-rw-r--r-- | public/stylesheets/main.css | 6 | ||||
-rw-r--r-- | todo.txt | 17 |
11 files changed, 99 insertions, 28 deletions
diff --git a/app/controllers/application.rb b/app/controllers/application.rb index e86fe7338..0241ec66e 100644 --- a/app/controllers/application.rb +++ b/app/controllers/application.rb @@ -6,7 +6,7 @@ # Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. # Email: francis@mysociety.org; WWW: http://www.mysociety.org/ # -# $Id: application.rb,v 1.15 2007-10-16 21:17:14 louise Exp $ +# $Id: application.rb,v 1.16 2007-10-24 11:39:37 francis Exp $ class ApplicationController < ActionController::Base @@ -138,5 +138,7 @@ class ApplicationController < ActionController::Base return request.env["REMOTE_USER"] end end - end + + + diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb index dfc614e59..0f0a7167c 100644 --- a/app/controllers/request_controller.rb +++ b/app/controllers/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: request_controller.rb,v 1.5 2007-10-16 21:17:14 louise Exp $ +# $Id: request_controller.rb,v 1.6 2007-10-24 11:39:37 francis Exp $ class RequestController < ApplicationController @@ -16,12 +16,13 @@ class RequestController < ApplicationController @info_request_pages, @info_requests = paginate :info_requests, :per_page => 25, :order => "created_at desc" end - def frontpage end # Form for creating new request def new + # Read parameters in - public body can be passed from front page + @info_request = InfoRequest.new(params[:info_request]) end # Page new form posts to @@ -41,7 +42,8 @@ class RequestController < ApplicationController elsif authenticated? @info_request.user = authenticated_user @info_request.save - flash[:notice] = "Your Freedom of Information request has been created." + @outgoing_message.send_message + flash[:notice] = "Your Freedom of Information request has been created and sent on its way." redirect_to request_url(:id => @info_request) end diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb index ed2b415ae..4ed0f58ee 100644 --- a/app/models/outgoing_message.rb +++ b/app/models/outgoing_message.rb @@ -5,7 +5,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.5 2007-10-16 08:57:32 francis Exp $ +# $Id: outgoing_message.rb,v 1.6 2007-10-24 11:39:37 francis Exp $ class OutgoingMessage < ActiveRecord::Base belongs_to :info_request @@ -16,15 +16,20 @@ class OutgoingMessage < ActiveRecord::Base validates_inclusion_of :message_type, :in => ['initial_request'] #, 'complaint'] + # Deliver outgoing message + # Note: You can test this from script/console with, say: + # InfoRequest.find(1).outgoing_messages[0].send_message def send_message if message_type == 'initial_request' if status == 'ready' - # test this with: - # InfoRequest.find(1).outgoing_messages[0].send_message - RequestMailer.deliver_initial_request(info_request, self) + sent_at = Time.now + status = 'sent' + save + elsif status == 'sent' + raise "Message id #{id} has already been sent" else - raise "Message id #{id} not ready for send_message" + raise "Message id #{id} not in state for send_message" end else raise "Message id #{id} has type '#{message_type}' which send_message can't handle" diff --git a/app/models/request_mailer.rb b/app/models/request_mailer.rb index c6b99159e..0e1c2be12 100644 --- a/app/models/request_mailer.rb +++ b/app/models/request_mailer.rb @@ -4,15 +4,17 @@ # Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. # Email: francis@mysociety.org; WWW: http://www.mysociety.org/ # -# $Id: request_mailer.rb,v 1.1 2007-10-16 08:57:32 francis Exp $ +# $Id: request_mailer.rb,v 1.2 2007-10-24 11:39:37 francis Exp $ class RequestMailer < ActionMailer::Base def initial_request(info_request, outgoing_message) - @from = 'francis@flourish.org' # XXX - @recipients = 'frabcus@fastmail.fm' - # XXX check with staging site - #@recipients = info_request.public_body.request_email + @from = info_request.user.email + if MySociety::Config.getbool("STAGING_SITE", 1) + @recipients = @from + else + @recipients = info_request.public_body.request_email + end @subject = 'Freedom of Information Request - ' + info_request.title @body = {:info_request => info_request, :outgoing_message => outgoing_message} end diff --git a/app/views/layouts/default.rhtml b/app/views/layouts/default.rhtml index b645876e7..d480d82e9 100644 --- a/app/views/layouts/default.rhtml +++ b/app/views/layouts/default.rhtml @@ -6,9 +6,14 @@ <%= stylesheet_link_tag 'main' %> </head> <body> + <% if MySociety::Config.getbool("STAGING_SITE", 1) %> + <div id="staging"> + This is a test version of the site. FOI requests will not be sent to real public bodies. + </div> + <% end %> <div id="header"> <h1> - <a href="/">Government Spy</a> + <a href="/">GovernmentSpy</a> <span id="beta">Beta</span> </h1> <div id="tagline">Freeing your information from them</div> diff --git a/app/views/request_mailer/initial_request.rhtml b/app/views/request_mailer/initial_request.rhtml index 795773c74..14f2d184f 100644 --- a/app/views/request_mailer/initial_request.rhtml +++ b/app/views/request_mailer/initial_request.rhtml @@ -2,6 +2,9 @@ Dear <%= @info_request.public_body.name %>, <%= @outgoing_message.body %> ------------ +-- -This message was sent using FOIFA. Blah. +Sent using GovernmentSpy, a project of UKCOD, registered charity number +1076346. If this is not the correct address for Freedom of Information +requests, please let us know by contacting team@governmentspy and we'll make +sure future ones go to the right place. diff --git a/config/environment.rb b/config/environment.rb index 2e3fc4db2..2b3211690 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -10,6 +10,11 @@ RAILS_GEM_VERSION = '1.2.1' unless defined? RAILS_GEM_VERSION # Bootstrap the Rails environment, frameworks, and default configuration require File.join(File.dirname(__FILE__), 'boot') +# MySociety specific helper functions +$:.push("../rblib") +load "validate.rb" +load "config.rb" + Rails::Initializer.run do |config| # Settings in config/environments/* take precedence over those specified here @@ -42,6 +47,10 @@ Rails::Initializer.run do |config| config.active_record.default_timezone = :utc # See Rails::Configuration for more options + + # Load intial mySociety config + MySociety::Config.set_file(File.join(config.root_path, 'config', 'general'), true) + MySociety::Config.load_default end # Add new inflection rules using the following format @@ -62,10 +71,6 @@ ActiveRecord::Errors.default_error_messages[:blank] = "must be filled in" # Include your application configuration below -# Include our own helper functions -$:.push("../rblib") -load "validate.rb" - # Output HTML 4.0 compliant code, using method described in this ticket # http://dev.rubyonrails.org/ticket/6009 ActionView::Helpers::TagHelper.module_eval do @@ -74,3 +79,4 @@ ActionView::Helpers::TagHelper.module_eval do end end + diff --git a/config/general-example b/config/general-example new file mode 100644 index 000000000..172145343 --- /dev/null +++ b/config/general-example @@ -0,0 +1,27 @@ +<?php +/* + * general-example: + * Example values for the "general" config file. + * + * Configuration parameters, in PHP syntax. Configuration parameters are set + * using the PHP define('OPTION_...', '...') function. Both perl and PHP code + * parse this properly, so you can use comments and conditionals and whatnot, + * but unless essential it's better to keep it simple.... + * + * Copy this file to one called "general" in the same directory. Or + * have multiple config files and use a symlink to change between them. + * + * Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. + * Email: francis@mysociety.org; WWW: http://www.mysociety.org + * + * $Id: general-example,v 1.1 2007-10-24 11:39:38 francis Exp $ + * + */ + +// URL for use in emails etc. +define('OPTION_BASE_URL', 'http://127.0.0.1:3000'); + +// For test sites +define('OPTION_STAGING_SITE', 1); + +?> diff --git a/db/migrate/012_add_sent_outgoing_message.rb b/db/migrate/012_add_sent_outgoing_message.rb new file mode 100644 index 000000000..f99c4d55f --- /dev/null +++ b/db/migrate/012_add_sent_outgoing_message.rb @@ -0,0 +1,8 @@ +class AddSentOutgoingMessage < ActiveRecord::Migration + def self.up + add_column :outgiong_messages, :sent_at, :datetime + end + + def self.down + end +end diff --git a/public/stylesheets/main.css b/public/stylesheets/main.css index f4e64d057..c78f5aa0f 100644 --- a/public/stylesheets/main.css +++ b/public/stylesheets/main.css @@ -25,6 +25,12 @@ a:hover, a:active { /* Site-wide layout */ +#staging { + text-align: center; + border-bottom: solid 2px #ff0000; + background: #ffbbbb; +} + #header { border-bottom: solid 1px #4e451b; margin: 0; @@ -1,16 +1,11 @@ -Use something other than session for post redirect store, so can go via email -If you recently made a request, then a login will try to make it again because - all the stuff for the post redirect is in the session. Consider again - Send confirmation email Send actual FOIFA request Make it say "dear" as default letter -Write some tests (try it their way, at every level) +Make sure index for every controller shows all, and the /controller/:id URLs go to a show action -Make sure index for every controller shows all, and the /controller/:id URls go to a show action Escape/simplify short name properly in URLs of public bodies For public bodies whose short names are renamed, make old URL still work and redirect @@ -21,6 +16,12 @@ Shitty using sessions for redirect back - you lose if you click login link elsewhere in same browser, and then do sign in on original. It trashes your whole request. +Use something other than session for post redirect store, so can go via email +If you recently made a request, then a login will try to make it again because + all the stuff for the post redirect is in the session. Consider again + +Write some tests (try it their way, at every level) + Tidying ======= @@ -55,8 +56,12 @@ Maybe we SHOULD reveal their email to the public body, why not? Later ===== +Add postal address at City University to request + Read wiki page lots http://www.mysociety.org/moin.cgi/FreedomOfInformation +And comments on proposal +http://www.mysociety.org/2006/04/04/freedom-of-information-archive/ Check FOE site lots http://community.foe.co.uk/tools/right_to_know/request_generator.html |