diff --git a/app/controllers/trace_controller.rb b/app/controllers/trace_controller.rb
index 288a4a67b..de8b17f30 100644
--- a/app/controllers/trace_controller.rb
+++ b/app/controllers/trace_controller.rb
@@ -9,7 +9,6 @@ class TraceController < ApplicationController
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
# from display name, pick up user id if one user's traces only
@@ -52,18 +51,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,8 +69,8 @@ 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
+## @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
diff --git a/app/views/trace/_trace_list.rhtml b/app/views/trace/_trace_list.rhtml
new file mode 100644
index 000000000..c1547027a
--- /dev/null
+++ b/app/views/trace/_trace_list.rhtml
@@ -0,0 +1,13 @@
+<%= render :partial => 'trace_paging_nav' %>
+
+
+
+ |
+ |
+
+ <%= render :partial => 'trace', :collection => @traces unless @traces.nil? %>
+
+
+<%= render :partial => 'trace_paging_nav' %>
+
+<%= render :partial => 'trace_optionals' %>
diff --git a/app/views/trace/_trace_paging_nav.rhtml b/app/views/trace/_trace_paging_nav.rhtml
index 6a22876cb..a7e752893 100644
--- a/app/views/trace/_trace_paging_nav.rhtml
+++ b/app/views/trace/_trace_paging_nav.rhtml
@@ -1,19 +1,12 @@
-<%
- range_start = ((@page - 1) * @traces_per_page) + 1
- range_end = (@page==@max_page ? @max_trace : (@page * @traces_per_page))
-%>
+<% current_page = @trace_pages.current_page %>
Showing page
-<%= @page %> (<%= range_start %><%
-if (@max_trace != range_start) # if more than 1 trace on page
- %>-<%= range_end %><%
+<%= current_page.number %> (<%= current_page.first_item %><%
+if (current_page.first_item < current_page.last_item) # if more than 1 trace on page
+ %>-<%= current_page.last_item %><%
end %>
-of <%= @max_trace %>)
+of <%= @trace_pages.item_count %>)
-<% if @page > 1 %>
- | <%= link_to 'previous page', {:controller => 'trace', :display_name => @display_name, :action => @paging_action, :page => @page-1}, {:title => 'previous page'} %>
-<% end %>
-
-<% if @page < @max_page %>
- | <%= link_to 'next page', {:controller => 'trace', :display_name => @display_name, :action => @paging_action, :page => @page+1}, {:title => 'next page'} %>
+<% if @trace_pages.page_count > 1 %>
+ | <%= pagination_links(@trace_pages) %>
<% end %>
diff --git a/app/views/trace/list.rhtml b/app/views/trace/list.rhtml
index 237fd7ae4..57e72fab4 100644
--- a/app/views/trace/list.rhtml
+++ b/app/views/trace/list.rhtml
@@ -10,19 +10,7 @@
| <%= link_to 'See all traces', {:controller => 'trace', :action => 'list'} %>
<% end %>
-
-<%= render :partial => 'trace_paging_nav' %>
-
-
-
- |
- |
-
- <%= render :partial => 'trace', :collection => @traces %>
-
-<%= render :partial => 'trace_paging_nav' %>
-
-<%= render :partial => 'trace_optionals' %>
+<%= render :partial => 'trace_list' %>
diff --git a/app/views/trace/mine.rhtml b/app/views/trace/mine.rhtml
index 661f73c52..db5a8503a 100644
--- a/app/views/trace/mine.rhtml
+++ b/app/views/trace/mine.rhtml
@@ -25,19 +25,8 @@
<%= submit_tag 'Upload' %> | help
-
<% end %>
-<%= render :partial => 'trace_paging_nav' %>
-
-
- |
- |
-
- <%= render :partial => 'trace', :collection => @traces unless @traces.nil? %>
-
-<%= render :partial => 'trace_paging_nav' %>
+<%= render :partial => 'trace_list' %>
<% end %>
-
-<%= render :partial => 'trace_optionals' %>