Use some rails magic to avoid having to duplicate all the changeset
list controller methods for the RSS feeds.
This commit is contained in:
parent
d71c95e775
commit
396d8ce313
6 changed files with 19 additions and 88 deletions
|
@ -1,7 +1,7 @@
|
|||
# The ChangesetController is the RESTful interface to Changeset objects
|
||||
|
||||
class ChangesetController < ApplicationController
|
||||
layout 'site', :except => [ :list_rss, :list_user_rss, :list_bbox_rss ]
|
||||
layout 'site'
|
||||
require 'xml/libxml'
|
||||
|
||||
before_filter :authorize_web, :only => [:list, :list_user, :list_bbox]
|
||||
|
@ -255,35 +255,20 @@ class ChangesetController < ApplicationController
|
|||
# list edits (open changesets) in reverse chronological order
|
||||
def list
|
||||
conditions = conditions_nonempty
|
||||
|
||||
|
||||
# @changesets = Changeset.find(:all, :order => "closed_at DESC", :conditions => ['closed_at < ?', DateTime.now], :limit=> 20)
|
||||
|
||||
|
||||
#@edit_pages, @edits = paginate(:changesets,
|
||||
# :include => [:user, :changeset_tags],
|
||||
# :conditions => conditions,
|
||||
# :order => "changesets.created_at DESC",
|
||||
# :per_page => 20)
|
||||
#
|
||||
|
||||
@edits = Changeset.find(:all,
|
||||
:order => "changesets.created_at DESC",
|
||||
:conditions => conditions,
|
||||
:limit => 20)
|
||||
|
||||
end
|
||||
|
||||
##
|
||||
# list edits (open changesets) in reverse chronological order
|
||||
def list_rss
|
||||
conditions = conditions_nonempty
|
||||
# @changesets = Changeset.find(:all, :order => "closed_at DESC", :conditions => ['closed_at < ?', DateTime.now], :limit=> 20)
|
||||
|
||||
#@edit_pages, @edits = paginate(:changesets,
|
||||
# :include => [:user, :changeset_tags],
|
||||
# :conditions => conditions,
|
||||
# :order => "changesets.created_at DESC",
|
||||
# :per_page => 20)
|
||||
#
|
||||
|
||||
@edits = Changeset.find(:all,
|
||||
:order => "changesets.created_at DESC",
|
||||
:conditions => conditions,
|
||||
:limit => 20)
|
||||
|
||||
end
|
||||
|
||||
##
|
||||
|
@ -310,31 +295,6 @@ class ChangesetController < ApplicationController
|
|||
render :template => 'user/no_such_user', :status => :not_found
|
||||
end
|
||||
end
|
||||
|
||||
##
|
||||
# list edits (changesets) belonging to a user
|
||||
def list_user_rss
|
||||
user = User.find_by_display_name(params[:display_name], :conditions => {:visible => true})
|
||||
|
||||
if user
|
||||
@display_name = user.display_name
|
||||
if not user.data_public? and @user != user
|
||||
@edits = nil
|
||||
render
|
||||
else
|
||||
conditions = cond_merge conditions, ['user_id = ?', user.id]
|
||||
conditions = cond_merge conditions, conditions_nonempty
|
||||
@edit_pages, @edits = paginate(:changesets,
|
||||
:include => [:user, :changeset_tags],
|
||||
:conditions => conditions,
|
||||
:order => "changesets.created_at DESC",
|
||||
:per_page => 20)
|
||||
end
|
||||
else
|
||||
@not_found_user = params[:display_name]
|
||||
render :template => 'user/no_such_user', :status => :not_found
|
||||
end
|
||||
end
|
||||
|
||||
##
|
||||
# list changesets in a bbox
|
||||
|
@ -344,6 +304,8 @@ class ChangesetController < ApplicationController
|
|||
bbox = params['bbox']
|
||||
elsif params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat']
|
||||
bbox = h(params['minlon']) + ',' + h(params['minlat']) + ',' + h(params['maxlon']) + ',' + h(params['maxlat'])
|
||||
elsif params['format'] == "rxml"
|
||||
raise OSM::APIBadUserInput.new("Bounding box must be supplied for the RSS feed")
|
||||
else
|
||||
#TODO: fix bugs in location determination for history tab (and other tabs) then uncomment this redirect
|
||||
#redirect_to :action => 'list'
|
||||
|
@ -364,30 +326,6 @@ class ChangesetController < ApplicationController
|
|||
|
||||
@bbox = sanitise_boundaries(bbox.split(/,/)) unless bbox==nil
|
||||
end
|
||||
|
||||
##
|
||||
# list changesets in a bbox
|
||||
def list_bbox_rss
|
||||
# support 'bbox' param or alternatively 'minlon', 'minlat' etc
|
||||
if params['bbox']
|
||||
bbox = params['bbox']
|
||||
elsif params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat']
|
||||
bbox = h(params['minlon']) + ',' + h(params['minlat']) + ',' + h(params['maxlon']) + ',' + h(params['maxlat'])
|
||||
else
|
||||
raise OSM::APIBadUserInput.new("Bounding box must be supplied for /history/rss")
|
||||
end
|
||||
|
||||
conditions = conditions_bbox(bbox);
|
||||
conditions = cond_merge conditions, conditions_nonempty
|
||||
|
||||
@edit_pages, @edits = paginate(:changesets,
|
||||
:include => [:user, :changeset_tags],
|
||||
:conditions => conditions,
|
||||
:order => "changesets.created_at DESC",
|
||||
:per_page => 20)
|
||||
|
||||
@bbox = sanitise_boundaries(bbox.split(/,/)) unless bbox==nil
|
||||
end
|
||||
|
||||
private
|
||||
#------------------------------------------------------------
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
xml.instruct!
|
||||
|
||||
xml.rss("version" => "2.0",
|
||||
"xmlns:geo" => "http://www.w3.org/2003/01/geo/wgs84_pos#",
|
||||
"xmlns:georss" => "http://www.georss.org/georss") do
|
||||
|
@ -48,4 +46,3 @@ xml.rss("version" => "2.0",
|
|||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,5 +1,3 @@
|
|||
xml.instruct!
|
||||
|
||||
xml.rss("version" => "2.0",
|
||||
"xmlns:geo" => "http://www.w3.org/2003/01/geo/wgs84_pos#",
|
||||
"xmlns:georss" => "http://www.georss.org/georss") do
|
||||
|
@ -48,4 +46,3 @@ xml.rss("version" => "2.0",
|
|||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,5 +1,3 @@
|
|||
xml.instruct!
|
||||
|
||||
xml.rss("version" => "2.0",
|
||||
"xmlns:geo" => "http://www.w3.org/2003/01/geo/wgs84_pos#",
|
||||
"xmlns:georss" => "http://www.georss.org/georss") do
|
||||
|
@ -48,4 +46,3 @@ xml.rss("version" => "2.0",
|
|||
end
|
||||
end
|
||||
end
|
||||
|
2
app/views/layouts/site.rxml
Normal file
2
app/views/layouts/site.rxml
Normal file
|
@ -0,0 +1,2 @@
|
|||
xml.instruct!
|
||||
xml << yield
|
Loading…
Add table
Add a link
Reference in a new issue