]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/trace_controller.rb
Fixed error handling in the name search and tidied things up a bit.
[rails.git] / app / controllers / trace_controller.rb
index 2d4a26c29bcd951b07dc68cdf66a605276cce189..288a4a67b676d6002f50fd1ea638ea68e5dc52b8 100644 (file)
@@ -103,7 +103,7 @@ class TraceController < ApplicationController
   def create
     name = params[:trace][:gpx_file].original_filename.gsub(/[^a-zA-Z0-9.]/, '_') # This makes sure filenames are sane
 
-    do_create(name, params[:trace][:tagstring], params[:trace][:description]) do |f|
+    do_create(name, params[:trace][:tagstring], params[:trace][:description], params[:trace][:public]) do |f|
       f.write(params[:trace][:gpx_file].read)
     end
 
@@ -118,7 +118,7 @@ class TraceController < ApplicationController
   def data
     trace = Trace.find(params[:id])
     if trace and (trace.public? or (@user and @user == trace.user))
-      send_file(trace.trace_name, :filename => "#{trace.id}.gpx", :type => trace.mime_type, :disposition => 'attachment')
+      send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => 'attachment')
     else
       render :nothing, :status => :not_found
     end
@@ -200,7 +200,7 @@ class TraceController < ApplicationController
   end
 
   def api_create
-    do_create(params[:filename], params[:tags], params[:description]) do |f|
+    do_create(params[:filename], params[:tags], params[:description], true) do |f|
       f.write(request.raw_post)
     end
 
@@ -213,12 +213,13 @@ class TraceController < ApplicationController
 
 private
 
-  def do_create(name, tags, description)
+  def do_create(name, tags, description, public)
     filename = "/tmp/#{rand}"
 
     File.open(filename, "w") { |f| yield f }
 
-    @trace = Trace.new({:name => name, :tagstring => tags, :description => description})
+    @trace = Trace.new({:name => name, :tagstring => tags,
+                        :description => description, :public => public})
     @trace.inserted = false
     @trace.user = @user
     @trace.timestamp = Time.now