]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/trace_controller.rb
Remove bogus setting of title attribute.
[rails.git] / app / controllers / trace_controller.rb
index 288a4a67b676d6002f50fd1ea638ea68e5dc52b8..94a7415f0de559022991f18bcec3d7a6535a513c 100644 (file)
@@ -5,22 +5,25 @@ class TraceController < ApplicationController
  
   # 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
-  #  paging_action - the action that will be linked back to from view
-  def list (target_user = nil, paging_action = 'list')
-    @title = 'public GPS traces'
-    @title += " tagged with #{params[:tag]}" if params[:tag]
-    @traces_per_page = 20
-    page_index = params[:page] ? params[:page].to_i - 1 : 0 # nice 1-based page -> 0-based page index
-
+  def list (target_user = nil)
     # 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 and display_name != ''
-      @paging_action = 'view'
+    if target_user.nil? and !display_name.blank?
       @display_name = display_name
-      @title += " from #{@display_name}"
       target_user = User.find(:first, :conditions => [ "display_name = ?", display_name])
     end
 
+    # set title
+    if target_user.nil?
+      @title = "public GPS traces"
+    elsif target_user.id == @user.id
+      @title = "your GPS traces"
+    else
+      @title = "public GPS traces from #{target_user.display_name}"
+    end
+
+    @title += " tagged with #{params[:tag]}" if params[:tag]
+
     opt = Hash.new
     opt[:include] = [:user, :tags] # load users and tags from db at same time as traces
 
@@ -52,18 +55,9 @@ class TraceController < ApplicationController
     end
     
     opt[:conditions] = conditions
+    opt[:per_page] = 20
 
-    # count traces using all options except limit
-    @max_trace = Trace.count(opt)
-    @max_page = Integer((@max_trace + 1) / @traces_per_page) 
-    
-    # last step before fetch - add paging options
-    opt[:limit] = @traces_per_page
-    if page_index > 0
-      opt[:offset] = @traces_per_page * page_index
-    end
-
-    @traces = Trace.find(:all , opt)
+    @trace_pages, @traces = paginate(:traces, opt)
     
     # put together SET of tags across traces, for related links
     tagset = Hash.new
@@ -79,13 +73,11 @@ class TraceController < ApplicationController
     # final helper vars for view
     @display_name = display_name
     @all_tags = tagset.values
-    @paging_action = paging_action # the action that paging requests should route back to, e.g. 'list' or 'mine'
-    @page = page_index + 1 # nice 1-based external page numbers
   end
 
   def mine
     if @user
-      list(@user, 'mine') unless @user.nil?
+      list(@user) unless @user.nil?
     else
       redirect_to :controller => 'user', :action => 'login', :referer => request.request_uri
     end
@@ -98,6 +90,8 @@ class TraceController < ApplicationController
         render :nothing, :status => :forbidden if @trace.user.id != @user.id
       end
     end
+  rescue ActiveRecord::RecordNotFound
+    render :nothing => true, :status => :not_found
   end
 
   def create