X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/be8164cf1573a79487b94f1a7667de2ffdac2d17..88541c523d9f7624a100a6956f89410aec3afe06:/app/controllers/changeset_controller.rb diff --git a/app/controllers/changeset_controller.rb b/app/controllers/changeset_controller.rb index 5c4201354..cfe86de51 100644 --- a/app/controllers/changeset_controller.rb +++ b/app/controllers/changeset_controller.rb @@ -5,17 +5,17 @@ class ChangesetController < ApplicationController require 'xml/libxml' skip_before_filter :verify_authenticity_token, :except => [:list] - before_filter :authorize_web, :only => [:list] - before_filter :set_locale, :only => [:list] + before_filter :authorize_web, :only => [:list, :feed] + before_filter :set_locale, :only => [:list, :feed] before_filter :authorize, :only => [:create, :update, :delete, :upload, :include, :close] before_filter :require_allow_write_api, :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] - before_filter :check_api_readable, :except => [:create, :update, :delete, :upload, :download, :query, :list] - before_filter(:only => [:list]) { |c| c.check_database_readable(true) } + before_filter :check_api_readable, :except => [:create, :update, :delete, :upload, :download, :query, :list, :feed] + before_filter(:only => [:list, :feed]) { |c| c.check_database_readable(true) } after_filter :compress_output - around_filter :api_call_handle_error, :except => [:list] - around_filter :web_timeout, :only => [:list] + around_filter :api_call_handle_error, :except => [:list, :feed] + around_filter :web_timeout, :only => [:list, :feed] # Helper methods for checking consistency include ConsistencyValidations @@ -174,16 +174,12 @@ class ChangesetController < ApplicationController created = XML::Node.new "create" created << elt.to_xml_node else - # get the previous version from the element history - prev_elt = elt.class.find([elt.id, elt.version]) unless elt.visible - # if the element isn't visible then it must have been deleted, so - # output the *previous* XML + # if the element isn't visible then it must have been deleted deleted = XML::Node.new "delete" - deleted << prev_elt.to_xml_node + deleted << elt.to_xml_node else - # must be a modify, for which we don't need the previous version - # yet... + # must be a modify modified = XML::Node.new "modify" modified << elt.to_xml_node end @@ -270,6 +266,24 @@ class ChangesetController < ApplicationController return end end + + if params[:friends] + if @user + changesets = changesets.where(:user_id => @user.friend_users.public) + elsif request.format == :html + require_user + return + end + end + + if params[:nearby] + if @user + changesets = changesets.where(:user_id => @user.nearby) + elsif request.format == :html + require_user + return + end + end if params[:bbox] bbox = BoundingBox.from_bbox_params(params) @@ -286,7 +300,15 @@ class ChangesetController < ApplicationController user_link = render_to_string :partial => "user", :object => user end - if user and bbox + if params[:friends] and @user + @title = t 'changeset.list.title_friend' + @heading = t 'changeset.list.heading_friend' + @description = t 'changeset.list.description_friend' + elsif params[:nearby] and @user + @title = t 'changeset.list.title_nearby' + @heading = t 'changeset.list.heading_nearby' + @description = t 'changeset.list.description_nearby' + elsif 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 @@ -310,9 +332,9 @@ class ChangesetController < ApplicationController @bbox = bbox @edits = changesets.order("changesets.created_at DESC").offset((@page - 1) * @page_size).limit(@page_size).preload(:user, :changeset_tags) - end - render :action => :list + render :action => :list + end end ##