aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/track_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/track_controller.rb')
-rw-r--r--app/controllers/track_controller.rb22
1 files changed, 13 insertions, 9 deletions
diff --git a/app/controllers/track_controller.rb b/app/controllers/track_controller.rb
index 15da7f327..83e05ebbc 100644
--- a/app/controllers/track_controller.rb
+++ b/app/controllers/track_controller.rb
@@ -3,7 +3,7 @@
# social bookmarking.
#
# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved.
-# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
+# Email: hello@mysociety.org; WWW: http://www.mysociety.org/
class TrackController < ApplicationController
@@ -80,10 +80,7 @@ class TrackController < ApplicationController
# Track a search term
def track_search_query
- # XXX should be better thing in rails routes than having to do this
- # join just to get / and . to work in a query.
- query_array = params[:query_array]
- @query = query_array.join("/")
+ @query = params[:query_array]
# XXX more hackery to make alternate formats still work with query_array
if /^(.*)\.json$/.match(@query)
@@ -119,7 +116,7 @@ class TrackController < ApplicationController
# Generic request tracker - set @track_thing before calling
def track_set
if @user
- @existing_track = TrackThing.find_by_existing_track(@user, @track_thing)
+ @existing_track = TrackThing.find_existing(@user, @track_thing)
if @existing_track
flash[:notice] = _("You are already following updates about {{track_description}}", :track_description => @track_thing.params[:list_description])
return true
@@ -156,11 +153,17 @@ class TrackController < ApplicationController
def atom_feed_internal
@xapian_object = perform_search([InfoRequestEvent], @track_thing.track_query, @track_thing.params[:feed_sortby], nil, 25, 1)
+ # We're assuming that a request to a feed url with no format suffix wants atom/xml
+ # so set that as the default, regardless of content negotiation
+ request.format = 'xml' unless params[:format]
respond_to do |format|
- format.atom { render :template => 'track/atom_feed', :content_type => "application/atom+xml" }
format.json { render :json => @xapian_object.results.map { |r| r[:model].json_for_api(true,
- lambda { |t| @template.highlight_and_excerpt(t, @xapian_object.words_to_highlight, 150) }
+ lambda { |t| view_context.highlight_and_excerpt(t, @xapian_object.words_to_highlight, 150) }
) } }
+ format.any { render :template => 'track/atom_feed',
+ :formats => ['atom'],
+ :layout => false,
+ :content_type => 'application/atom+xml' }
end
end
@@ -181,7 +184,8 @@ class TrackController < ApplicationController
if new_medium == 'delete'
track_thing.destroy
flash[:notice] = _("You are no longer following {{track_description}}.", :track_description => track_thing.params[:list_description])
- redirect_to params[:r]
+ redirect_to URI.parse(params[:r]).path
+
# Reuse code like this if we let medium change again.
#elsif new_medium == 'email_daily'
# track_thing.track_medium = new_medium