From 396d8ce31348878001a1f5541d9d403d01a04212 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 7 Jun 2009 11:24:11 +0000 Subject: [PATCH] Use some rails magic to avoid having to duplicate all the changeset list controller methods for the RSS feeds. --- app/controllers/changeset_controller.rb | 84 +++---------------- .../changeset/{list_rss.rxml => list.rxml} | 3 - .../{list_bbox_rss.rxml => list_bbox.rxml} | 3 - .../{list_user_rss.rxml => list_user.rxml} | 3 - app/views/layouts/site.rxml | 2 + config/routes.rb | 12 +-- 6 files changed, 19 insertions(+), 88 deletions(-) rename app/views/changeset/{list_rss.rxml => list.rxml} (99%) rename app/views/changeset/{list_bbox_rss.rxml => list_bbox.rxml} (99%) rename app/views/changeset/{list_user_rss.rxml => list_user.rxml} (99%) create mode 100644 app/views/layouts/site.rxml diff --git a/app/controllers/changeset_controller.rb b/app/controllers/changeset_controller.rb index 3d5c8dd4b..8d029aae5 100644 --- a/app/controllers/changeset_controller.rb +++ b/app/controllers/changeset_controller.rb @@ -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 #------------------------------------------------------------ diff --git a/app/views/changeset/list_rss.rxml b/app/views/changeset/list.rxml similarity index 99% rename from app/views/changeset/list_rss.rxml rename to app/views/changeset/list.rxml index a22d834ea..95e10e8fb 100644 --- a/app/views/changeset/list_rss.rxml +++ b/app/views/changeset/list.rxml @@ -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 - diff --git a/app/views/changeset/list_bbox_rss.rxml b/app/views/changeset/list_bbox.rxml similarity index 99% rename from app/views/changeset/list_bbox_rss.rxml rename to app/views/changeset/list_bbox.rxml index 73e705fe1..172523cba 100644 --- a/app/views/changeset/list_bbox_rss.rxml +++ b/app/views/changeset/list_bbox.rxml @@ -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 - diff --git a/app/views/changeset/list_user_rss.rxml b/app/views/changeset/list_user.rxml similarity index 99% rename from app/views/changeset/list_user_rss.rxml rename to app/views/changeset/list_user.rxml index 4db0bd515..ed6c6459d 100644 --- a/app/views/changeset/list_user_rss.rxml +++ b/app/views/changeset/list_user.rxml @@ -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 - diff --git a/app/views/layouts/site.rxml b/app/views/layouts/site.rxml new file mode 100644 index 000000000..90198e8f4 --- /dev/null +++ b/app/views/layouts/site.rxml @@ -0,0 +1,2 @@ +xml.instruct! +xml << yield diff --git a/config/routes.rb b/config/routes.rb index aead14cf9..1b5d483c6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -82,15 +82,15 @@ ActionController::Routing::Routes.draw do |map| map.connect '/browse/relation/:id', :controller => 'browse', :action => 'relation', :id => /\d+/ map.connect '/browse/relation/:id/history', :controller => 'browse', :action => 'relation_history', :id => /\d+/ map.connect '/browse/changeset/:id', :controller => 'browse', :action => 'changeset', :id => /\d+/ - map.connect '/browse/changesets', :controller => 'changeset', :action => 'list' - map.connect '/browse/changesets/rss', :controller => 'changeset', :action => 'list_rss' + map.connect '/browse/changesets', :controller => 'changeset', :action => 'list', :format => 'rhtml' + map.connect '/browse/changesets/rss', :controller => 'changeset', :action => 'list', :format => 'rxml' # web site map.root :controller => 'site', :action => 'index' map.connect '/', :controller => 'site', :action => 'index' map.connect '/edit', :controller => 'site', :action => 'edit' - map.connect '/history', :controller => 'changeset', :action => 'list_bbox' - map.connect '/history/rss', :controller => 'changeset', :action => 'list_bbox_rss' + map.connect '/history', :controller => 'changeset', :action => 'list_bbox', :format => 'rhtml' + map.connect '/history/rss', :controller => 'changeset', :action => 'list_bbox', :format => 'rxml' map.connect '/export', :controller => 'site', :action => 'export' map.connect '/login', :controller => 'user', :action => 'login' map.connect '/logout', :controller => 'user', :action => 'logout' @@ -144,8 +144,8 @@ ActionController::Routing::Routes.draw do |map| # user pages map.connect '/user/:display_name', :controller => 'user', :action => 'view' - map.connect '/user/:display_name/edits', :controller => 'changeset', :action => 'list_user' - map.connect '/user/:display_name/edits/rss', :controller => 'changeset', :action => 'list_user_rss' + map.connect '/user/:display_name/edits', :controller => 'changeset', :action => 'list_user', :format => 'rhtml' + map.connect '/user/:display_name/edits/rss', :controller => 'changeset', :action => 'list_user', :format => 'rxml' map.connect '/user/:display_name/make_friend', :controller => 'user', :action => 'make_friend' map.connect '/user/:display_name/remove_friend', :controller => 'user', :action => 'remove_friend' map.connect '/user/:display_name/diary', :controller => 'diary_entry', :action => 'list' -- 2.43.2