# The ChangesetController is the RESTful interface to Changeset objects
class ChangesetController < ApplicationController
- layout 'site'
+ layout 'site', :except => :rss
require 'xml/libxml'
- session :off, :except => [:list, :list_user, :list_bbox]
before_filter :authorize_web, :only => [:list, :list_user, :list_bbox]
+ before_filter :set_locale, :only => [:list, :list_user, :list_bbox]
before_filter :authorize, :only => [:create, :update, :delete, :upload, :include, :close]
before_filter :require_public_data, :only => [:create, :update, :delete, :upload, :include, :close]
before_filter :check_api_writable, :only => [:create, :update, :delete, :upload, :include]
# changeset.
#
# Returns: a diffResult document, as described in
- # http://wiki.openstreetmap.org/index.php/OSM_Protocol_Version_0.6
+ # http://wiki.openstreetmap.org/wiki/OSM_Protocol_Version_0.6
def upload
# only allow POST requests, as the upload method is most definitely
# not idempotent, as several uploads with placeholder IDs will have
render :template => 'user/no_such_user', :status => :not_found
end
end
+
+ ##
+ # list edits (changesets) belonging to a user
+ def 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