diff options
-rw-r--r-- | app/controllers/track_controller.rb | 17 | ||||
-rw-r--r-- | app/controllers/user_controller.rb | 5 | ||||
-rw-r--r-- | app/helpers/link_to_helper.rb | 4 | ||||
-rw-r--r-- | app/models/track_thing.rb | 30 | ||||
-rw-r--r-- | app/views/user/show.rhtml | 5 | ||||
-rw-r--r-- | config/routes.rb | 3 | ||||
-rw-r--r-- | todo.txt | 1 |
7 files changed, 58 insertions, 7 deletions
diff --git a/app/controllers/track_controller.rb b/app/controllers/track_controller.rb index 970b2a52a..cd459d83e 100644 --- a/app/controllers/track_controller.rb +++ b/app/controllers/track_controller.rb @@ -5,7 +5,7 @@ # Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved. # Email: francis@mysociety.org; WWW: http://www.mysociety.org/ # -# $Id: track_controller.rb,v 1.14 2008-05-12 10:21:34 francis Exp $ +# $Id: track_controller.rb,v 1.15 2008-05-12 10:57:43 francis Exp $ class TrackController < ApplicationController @@ -68,6 +68,21 @@ class TrackController < ApplicationController end end + # Track a user + def track_user + @track_user = User.find_by_url_name(params[:url_name]) + @track_thing = TrackThing.create_track_for_user(@track_user) + ret = self.track_set + if ret + if @track_thing.track_medium == 'feed' + redirect_to :controller => 'track', :action => 'atom_feed', :track_id => @track_thing.id + else + flash[:notice] = "You are " + ret + " tracking this person!" + redirect_to user_url(@track_user) + end + end + end + # Generic request tracker - set @track_thing before calling def track_set diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 5e6d5ba3a..73fbce9d6 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_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: user_controller.rb,v 1.45 2008-03-25 17:25:09 francis Exp $ +# $Id: user_controller.rb,v 1.46 2008-05-12 10:57:43 francis Exp $ class UserController < ApplicationController # Show page about a set of users with same url name @@ -21,6 +21,9 @@ class UserController < ApplicationController @same_name_users = User.find(:all, :conditions => [ "name = ? and email_confirmed and id <> ?", @display_user.name, @display_user.id ], :order => "created_at") @is_you = !@user.nil? && @user.id == @display_user.id + + # Track corresponding to this page + @track_thing = TrackThing.create_track_for_user(@display_user) end # Login form diff --git a/app/helpers/link_to_helper.rb b/app/helpers/link_to_helper.rb index 8a36121e8..c5556bfa2 100644 --- a/app/helpers/link_to_helper.rb +++ b/app/helpers/link_to_helper.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: link_to_helper.rb,v 1.29 2008-05-12 10:21:35 francis Exp $ +# $Id: link_to_helper.rb,v 1.30 2008-05-12 10:57:44 francis Exp $ module LinkToHelper @@ -91,6 +91,8 @@ module LinkToHelper track_list_url(:view => 'successful') elsif track_thing.track_type == 'public_body_updates' track_public_body_url(:url_name => track_thing.public_body.url_name) + elsif track_thing.track_type == 'user_updates' + track_user_url(:url_name => track_thing.tracked_user.url_name) else raise "unknown tracking type " + track_thing.track_type end diff --git a/app/models/track_thing.rb b/app/models/track_thing.rb index d074cea03..53e5817b0 100644 --- a/app/models/track_thing.rb +++ b/app/models/track_thing.rb @@ -21,7 +21,7 @@ # Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved. # Email: francis@mysociety.org; WWW: http://www.mysociety.org/ # -# $Id: track_thing.rb,v 1.16 2008-05-12 10:21:35 francis Exp $ +# $Id: track_thing.rb,v 1.17 2008-05-12 10:57:44 francis Exp $ class TrackThing < ActiveRecord::Base belongs_to :tracking_user, :class_name => 'User' @@ -39,6 +39,7 @@ class TrackThing < ActiveRecord::Base 'all_new_requests', 'all_successful_requests', 'public_body_updates', + 'user_updates' ] validates_inclusion_of :track_medium, :in => [ @@ -76,6 +77,14 @@ class TrackThing < ActiveRecord::Base return track_thing end + def TrackThing.create_track_for_user(user) + track_thing = TrackThing.new + track_thing.track_type = 'user_updates' + track_thing.tracked_user = user + track_thing.track_query = "variety:sent requested_by:" + user.url_name + return track_thing + end + # Return hash of text parameters describing the request etc. include LinkToHelper def params @@ -148,7 +157,24 @@ class TrackThing < ActiveRecord::Base # Other :feed_sortby => 'described', # for RSS, as newest would give a date for responses possibly days before description } - else + elsif self.track_type == 'user_updates' + @params = { + # Website + :set_title => "How would you like track the person '" + CGI.escapeHTML(self.tracked_user.name) + "'?", + :list_description => "'<a href=\"/user/" + CGI.escapeHTML(self.tracked_user.url_name) + "\">" + CGI.escapeHTML(self.tracked_user.name) + "</a>', a person", # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how + :verb_on_page => "Be told about new requests by this person", + :verb_on_page_already => "being told about new requests by this person", + # Email + :title_in_email => "New FOI requests by '" + self.tracked_user.name + "'", + :title_in_rss => "New FOI requests by '" + self.tracked_user.name + "'", + # Authentication + :web => "To be told about new requests by '" + CGI.escapeHTML(self.tracked_user.name) + "'", + :email => "Then you will be emailed whenever '" + CGI.escapeHTML(self.tracked_user.name) + "' requests something", + :email_subject => "Confirm you want to be told about new requests by '" + CGI.escapeHTML(self.tracked_user.name) + "'", + # Other + :feed_sortby => 'described', # for RSS, as newest would give a date for responses possibly days before description + } + else raise "unknown tracking type " + self.track_type end end diff --git a/app/views/user/show.rhtml b/app/views/user/show.rhtml index c862dbf69..16b15c7ea 100644 --- a/app/views/user/show.rhtml +++ b/app/views/user/show.rhtml @@ -8,6 +8,11 @@ <% end %> <% end%> +<div id="request_sidebar"> + <h2>People tracking this person</h2> + <%= render :partial => 'track/tracking_people_and_link', :locals => { :track_thing => @track_thing } %> +</div> + <div class="single_user" id="user-<%=@display_user.id.to_s%>"> <h1><%=@title%></h1> <p class="subtitle">Joined WhatDoTheyKnow on <%= simple_date(@display_user.created_at) %></p> diff --git a/config/routes.rb b/config/routes.rb index 66548275c..9b8b34270 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.60 2008-05-12 10:21:35 francis Exp $ +# $Id: routes.rb,v 1.61 2008-05-12 10:57:44 francis Exp $ ActionController::Routing::Routes.draw do |map| @@ -63,6 +63,7 @@ ActionController::Routing::Routes.draw do |map| track.track_request 'track/request/:url_title', :action => 'track_request' track.track_list '/track/list/:view', :action => 'track_list', :view => nil track.track_public_body "/track/body/:url_name", :action => 'track_public_body' + track.track_user "/track/user/:url_name", :action => 'track_user' track.update '/track/update/:track_id', :action => 'update' track.atom_feed '/track/feed/:track_id', :action => 'atom_feed' @@ -36,7 +36,6 @@ Next Things to track - don't ever return users / public bodies for now! - anything requesty with keyword - - requests by a particular user Link to /list/successful from /list |