aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/track_controller.rb17
-rw-r--r--app/controllers/user_controller.rb5
-rw-r--r--app/helpers/link_to_helper.rb4
-rw-r--r--app/models/track_thing.rb30
-rw-r--r--app/views/user/show.rhtml5
-rw-r--r--config/routes.rb3
-rw-r--r--todo.txt1
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'
diff --git a/todo.txt b/todo.txt
index 78bbb89a8..bdb998671 100644
--- a/todo.txt
+++ b/todo.txt
@@ -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