before_filter :offline_redirect, :only => [:create, :edit, :delete, :data, :api_data, :api_create]
around_filter :api_call_handle_error, :only => [:api_details, :api_data, :api_create]
- caches_action :list, :view, :layout => false
+ caches_action :list, :unless => :logged_in?, :layout => false
+ caches_action :view, :layout => false
caches_action :georss, :layout => true
cache_sweeper :trace_sweeper, :only => [:create, :edit, :delete, :api_create], :unless => STATUS == :database_offline
cache_sweeper :tracetag_sweeper, :only => [:create, :edit, :delete, :api_create], :unless => STATUS == :database_offline
@target_user = target_user
@display_name = target_user.display_name if target_user
@all_tags = tagset.values
- @trace = Trace.new(:visibility => default_visibility) if @user
end
def mine
def create
if params[:trace]
logger.info(params[:trace][:gpx_file].class.name)
+
if params[:trace][:gpx_file].respond_to?(:read)
begin
do_create(params[:trace][:gpx_file], params[:trace][:tagstring],
@trace.valid?
@trace.errors.add(:gpx_file, "can't be blank")
end
+ else
+ @trace = Trace.new(:visibility => default_visibility)
end
+
@title = t 'trace.create.upload_trace'
end
trace.visible = false
trace.save
flash[:notice] = t 'trace.delete.scheduled_for_deletion'
- redirect_to :action => :view, :display_name => @user.display_name, :id => nil
+ redirect_to :action => :list, :display_name => @user.display_name
else
render :nothing => true, :status => :bad_request
end
trace = Trace.find(params[:id])
if trace.public? or trace.user == @user
- send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => 'attachment')
+ if request.format == Mime::XML
+ send_file(trace.xml_file, :filename => "#{trace.id}.xml", :type => Mime::XML.to_s, :disposition => 'attachment')
+ else
+ send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => 'attachment')
+ end
else
render :nothing => true, :status => :forbidden
end