# four main cases:
# 1 - all traces, logged in = all public traces + all user's (i.e + all mine)
# 2 - all traces, not logged in = all public traces
- # 3 - user's traces, logged in as same user = all user's traces
+ # 3 - user's traces, logged in as same user = all user's traces
# 4 - user's traces, not logged in as that user = all user's public traces
if target_user.nil? # all traces
if @user
conditions = ["gpx_files.visibility in ('public', 'identifiable') AND gpx_files.user_id = ?", target_user.id] #4
end
end
-
+
if params[:tag]
@tag = params[:tag]
conditions[0] += " AND 0 = 1"
end
end
-
+
conditions[0] += " AND gpx_files.visible = ?"
conditions << true
end
end
end
-
+
# final helper vars for view
@action = action
@display_name = target_user.display_name if target_user
@all_tags = tagset.values
+ @trace = Trace.new(:visibility => default_visibility) if @user
end
def mine
- # Load the preference of whether the user set the trace public the last time
- @trace = Trace.new
- visibility = @user.preferences.find(:first, :conditions => {:k => "gps.trace.visibility"})
- if visibility
- @trace.visibility = visibility.v
- elsif @user.preferences.find(:first, :conditions => {:k => "gps.trace.public", :v => "default"}).nil?
- @trace.visibility = "private"
- else
- @trace.visibility = "public"
- end
- list(@user, "mine")
+ redirect_to :action => :list, :display_name => @user.display_name
end
def view
begin
do_create(params[:trace][:gpx_file], params[:trace][:tagstring],
params[:trace][:description], params[:trace][:visibility])
- rescue
+ rescue => ex
+ logger.debug ex
end
if @trace.id
@trace.visibility = params[:trace][:visibility]
if @trace.save
redirect_to :action => 'view'
- end
+ end
end
else
render :nothing => true, :status => :forbidden
conditions << params[:tag]
end
- traces = Trace.find(:all, :include => :user, :conditions => conditions,
+ traces = Trace.find(:all, :include => :user, :conditions => conditions,
:order => "timestamp DESC", :limit => 20)
rss = OSM::GeoRSS.new
else
@user.preferences.create(:k => "gps.trace.visibility", :v => visibility)
end
-
+
end
def offline_warning
redirect_to :action => :offline if OSM_STATUS == :gpx_offline
end
+ def default_visibility
+ visibility = @user.preferences.find(:first, :conditions => {:k => "gps.trace.visibility"})
+
+ if visibility
+ visibility.v
+ elsif @user.preferences.find(:first, :conditions => {:k => "gps.trace.public", :v => "default"}).nil?
+ "private"
+ else
+ "public"
+ end
+ end
+
end