]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/trace_controller.rb
We can cache the trace list for logged in users now
[rails.git] / app / controllers / trace_controller.rb
index c51f54c5e713b13899e2bb606b1875c5e6c8037b..abd59aeb26bfddaa29ed4f6ce2d747d28ffee335 100644 (file)
@@ -15,18 +15,17 @@ class TraceController < ApplicationController
   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, :unless => :logged_in?, :layout => false
-  caches_action :view, :layout => false
+  caches_action :list, :view, :layout => false
   caches_action :georss, :layout => true
   cache_sweeper :trace_sweeper, :only => [:create, :edit, :delete, :api_create], :unless => OSM_STATUS == :database_offline
   cache_sweeper :tracetag_sweeper, :only => [:create, :edit, :delete, :api_create], :unless => OSM_STATUS == :database_offline
 
   # 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 list(target_user = nil, action = "list")
+  def list
     # from display name, pick up user id if one user's traces only
     display_name = params[:display_name]
-    if target_user.nil? and !display_name.blank?
+    if !display_name.blank?
       target_user = User.find(:first, :conditions => { :status => ["active", "confirmed"], :display_name => display_name })
       if target_user.nil?
         @title = t'trace.no_such_user.title'
@@ -103,7 +102,7 @@ class TraceController < ApplicationController
     end
 
     # final helper vars for view
-    @action = action
+    @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
@@ -143,6 +142,10 @@ class TraceController < ApplicationController
           logger.info("id is #{@trace.id}")
           flash[:notice] = t 'trace.create.trace_uploaded'
 
+          if @user.traces.count(:conditions => { :inserted => false }) > 4
+            flash[:warning] = t 'trace.trace_header.traces_waiting', :count => @user.traces.count(:conditions => { :inserted => false })
+          end
+
           redirect_to :action => 'mine'
         end
       else