X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/39c5d8caa71b29d70bb136d6e0a560426e089112..a1853204faefd8270e3db4a988ef373ea1ab342d:/app/controllers/trace_controller.rb?ds=sidebyside diff --git a/app/controllers/trace_controller.rb b/app/controllers/trace_controller.rb index eaeb4f5d0..5eb9a0ff7 100644 --- a/app/controllers/trace_controller.rb +++ b/app/controllers/trace_controller.rb @@ -31,14 +31,14 @@ class TraceController < ApplicationController # set title @title = if target_user.nil? - t "trace.list.public_traces" + t ".public_traces" elsif current_user && current_user == target_user - t "trace.list.your_traces" + t ".my_traces" else - t "trace.list.public_traces_from", :user => target_user.display_name + t ".public_traces_from", :user => target_user.display_name end - @title += t "trace.list.tagged_with", :tags => params[:tag] if params[:tag] + @title += t ".tagged_with", :tags => params[:tag] if params[:tag] # four main cases: # 1 - all traces, logged in = all public traces + all user's (i.e + all mine) @@ -94,13 +94,13 @@ class TraceController < ApplicationController if @trace && @trace.visible? && (@trace.public? || @trace.user == current_user) - @title = t "trace.view.title", :name => @trace.name + @title = t ".title", :name => @trace.name else - flash[:error] = t "trace.view.trace_not_found" + flash[:error] = t ".trace_not_found" redirect_to :action => "list" end rescue ActiveRecord::RecordNotFound - flash[:error] = t "trace.view.trace_not_found" + flash[:error] = t ".trace_not_found" redirect_to :action => "list" end @@ -112,16 +112,13 @@ 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[:notice] = t ".trace_uploaded" + flash[:warning] = t ".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 @@ -139,7 +136,7 @@ class TraceController < ApplicationController @trace = Trace.new(:visibility => default_visibility) end - @title = t "trace.create.upload_trace" + @title = t ".upload_trace" end def data @@ -149,9 +146,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 +173,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 +185,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 + flash[:notice] = t ".scheduled_for_deletion" + redirect_to :action => :list, :display_name => trace.user.display_name end rescue ActiveRecord::RecordNotFound head :not_found @@ -205,9 +200,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") @@ -263,15 +256,7 @@ class TraceController < ApplicationController trace = Trace.visible.find(params[:id]) if trace.user == current_user - new_trace = Trace.from_xml(request.raw_post) - - unless new_trace && new_trace.id == trace.id - raise OSM::APIBadUserInput.new("The id in the url (#{trace.id}) is not the same as provided in the xml (#{new_trace.id})") - end - - trace.description = new_trace.description - trace.tags = new_trace.tags - trace.visibility = new_trace.visibility + trace.update_from_xml(request.raw_post) trace.save! head :ok @@ -298,9 +283,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