X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/f1faffd4d1954f855f6450fc8e5c62ea5f457113..3b75e9241507c0672dabaec44ecb83148df979b6:/app/controllers/trace_controller.rb diff --git a/app/controllers/trace_controller.rb b/app/controllers/trace_controller.rb index 41c488e0f..f97e5ecd2 100644 --- a/app/controllers/trace_controller.rb +++ b/app/controllers/trace_controller.rb @@ -33,7 +33,7 @@ class TraceController < ApplicationController @title = if target_user.nil? t "trace.list.public_traces" elsif current_user && current_user == target_user - t "trace.list.your_traces" + t "trace.list.my_traces" else t "trace.list.public_traces_from", :user => target_user.display_name end @@ -112,16 +112,14 @@ class TraceController < ApplicationController begin do_create(params[:trace][:gpx_file], params[:trace][:tagstring], params[:trace][:description], params[:trace][:visibility]) - rescue => ex + rescue StandardError => ex logger.debug ex end if @trace.id flash[:notice] = t "trace.create.trace_uploaded" - if current_user.traces.where(:inserted => false).count > 4 - flash[:warning] = t "trace.trace_header.traces_waiting", :count => current_user.traces.where(:inserted => false).count - end + flash[:warning] = t "trace.trace_header.traces_waiting", :count => current_user.traces.where(:inserted => false).count if current_user.traces.where(:inserted => false).count > 4 redirect_to :action => :list, :display_name => current_user.display_name end @@ -149,9 +147,9 @@ class TraceController < ApplicationController if Acl.no_trace_download(request.remote_ip) head :forbidden elsif request.format == Mime[:xml] - send_file(trace.xml_file, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment") + send_data(trace.xml_file.read, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment") elsif request.format == Mime[:gpx] - send_file(trace.xml_file, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment") + send_data(trace.xml_file.read, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment") else send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment") end @@ -176,9 +174,7 @@ class TraceController < ApplicationController @trace.description = params[:trace][:description] @trace.tagstring = params[:trace][:tagstring] @trace.visibility = params[:trace][:visibility] - if @trace.save - redirect_to :action => "view", :display_name => current_user.display_name - end + redirect_to :action => "view", :display_name => current_user.display_name if @trace.save end end rescue ActiveRecord::RecordNotFound @@ -190,13 +186,13 @@ class TraceController < ApplicationController if !trace.visible? head :not_found - elsif current_user.nil? || trace.user != current_user + elsif current_user.nil? || (trace.user != current_user && !current_user.administrator? && !current_user.moderator?) head :forbidden else trace.visible = false trace.save flash[:notice] = t "trace.delete.scheduled_for_deletion" - redirect_to :action => :list, :display_name => current_user.display_name + redirect_to :action => :list, :display_name => trace.user.display_name end rescue ActiveRecord::RecordNotFound head :not_found @@ -205,9 +201,7 @@ class TraceController < ApplicationController def georss @traces = Trace.visible_to_all.visible - if params[:display_name] - @traces = @traces.joins(:user).where(:users => { :display_name => params[:display_name] }) - end + @traces = @traces.joins(:user).where(:users => { :display_name => params[:display_name] }) if params[:display_name] @traces = @traces.tagged(params[:tag]) if params[:tag] @traces = @traces.order("timestamp DESC") @@ -290,9 +284,9 @@ class TraceController < ApplicationController if trace.public? || trace.user == current_user if request.format == Mime[:xml] - send_file(trace.xml_file, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment") + send_data(trace.xml_file.read, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment") elsif request.format == Mime[:gpx] - send_file(trace.xml_file, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment") + send_data(trace.xml_file.read, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment") else send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment") end