X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/e9ab43cd302926f5741f9f1cd16ffb79e0f88482..0f6dda6050204cba832bbe290a16181cbca0a77f:/app/controllers/changeset_controller.rb diff --git a/app/controllers/changeset_controller.rb b/app/controllers/changeset_controller.rb index 3d5c8dd4b..e451f6d04 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,140 +255,64 @@ 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 + if params[:display_name] + user = User.find_by_display_name(params[:display_name], :conditions => { :visible => true }) - @edits = Changeset.find(:all, - :order => "changesets.created_at DESC", - :conditions => conditions, - :limit => 20) - - end - - ## - # list edits (changesets) belonging to a user - def list_user - 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) + if user + if user.data_public? or user == @user + conditions = cond_merge conditions, ['user_id = ?', user.id] + else + conditions = cond_merge conditions, ['false'] + end + elsif request.format == :html + @title = t 'user.no_such_user.title' + @not_found_user = params[:display_name] + render :template => 'user/no_such_user', :status => :not_found end - else - @not_found_user = params[:display_name] - 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 + if params[:bbox] + bbox = params[:bbox] + elsif params[:minlon] and params[:minlat] and params[:maxlon] and params[:maxlat] + bbox = params[:minlon] + ',' + params[:minlat] + ',' + params[:maxlon] + ',' + params[:maxlat] end - end - - ## - # list changesets in a bbox - def list_bbox - # 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 - #TODO: fix bugs in location determination for history tab (and other tabs) then uncomment this redirect - #redirect_to :action => 'list' - - # For now just render immediately, and skip the db - render - return + + if bbox + conditions = cond_merge conditions, conditions_bbox(bbox) + bbox = BoundingBox.from_s(bbox) + bbox_link = render_to_string :partial => "bbox", :object => bbox 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 - ## - # 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']) + if user + user_link = render_to_string :partial => "user", :object => user + end + + if user and bbox + @title = t 'changeset.list.title_user_bbox', :user => user.display_name, :bbox => bbox.to_s + @heading = t 'changeset.list.heading_user_bbox', :user => user.display_name, :bbox => bbox.to_s + @description = t 'changeset.list.description_user_bbox', :user => user_link, :bbox => bbox_link + elsif user + @title = t 'changeset.list.title_user', :user => user.display_name + @heading = t 'changeset.list.heading_user', :user => user.display_name + @description = t 'changeset.list.description_user', :user => user_link + elsif bbox + @title = t 'changeset.list.title_bbox', :bbox => bbox.to_s + @heading = t 'changeset.list.heading_bbox', :bbox => bbox.to_s + @description = t 'changeset.list.description_bbox', :bbox => bbox_link else - raise OSM::APIBadUserInput.new("Bounding box must be supplied for /history/rss") + @title = t 'changeset.list.title' + @heading = t 'changeset.list.heading' + @description = t 'changeset.list.description' 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 #------------------------------------------------------------ # utility functions below.