class TraceController < ApplicationController
+ layout 'site'
+
before_filter :authorize_web
before_filter :authorize, :only => [:api_details, :api_data, :api_create]
- layout 'site'
+ before_filter :check_database_availability, :except => [:api_details, :api_data, :api_create]
+ before_filter :check_read_availability, :only => [:api_details, :api_data, :api_create]
# Counts and selects pages of GPX traces for various criteria (by user, tags, public etc.).
# target_user - if set, specifies the user to fetch traces for. if not set will fetch all traces
def view
@trace = Trace.find(params[:id])
- @title = "Viewing trace #{@trace.name}"
- if !@trace.visible?
- render :nothing => true, :status => :not_found
- elsif !@trace.public? and @trace.user.id != @user.id
- render :nothing => true, :status => :forbidden
+
+ if @trace and @trace.visible? and
+ (@trace.public? or @trace.user.id == @user.id)
+ @title = "Viewing trace #{@trace.name}"
+ else
+ flash[:notice] = "Trace not found!"
+ redirect_to :controller => 'trace', :action => 'list'
end
rescue ActiveRecord::RecordNotFound
- render :nothing => true, :status => :not_found
+ flash[:notice] = "Trace not found!"
+ redirect_to :controller => 'trace', :action => 'list'
end
def create
conditions[0] += " AND users.display_name = ?"
conditions << params[:display_name]
end
-
+
if params[:tag]
conditions[0] += " AND EXISTS (SELECT * FROM gpx_file_tags AS gft WHERE gft.gpx_id = gpx_files.id AND gft.tag = ?)"
conditions << params[:tag]
@trace.timestamp = Time.now
if @trace.save
- File.rename(filename, @trace.trace_name)
+ FileUtils.mv(filename, @trace.trace_name)
else
FileUtils.rm_f(filename)
end