common template code into a partial.
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
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
# 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
--- /dev/null
+<%= render :partial => 'trace_paging_nav' %>
+
+<table id="keyvalue" cellpadding="3">
+ <tr>
+ <th></th>
+ <th></th>
+ </tr>
+ <%= render :partial => 'trace', :collection => @traces unless @traces.nil? %>
+</table>
+
+<%= render :partial => 'trace_paging_nav' %>
+
+<%= render :partial => 'trace_optionals' %>
-<%
- 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 %>
| <%= link_to 'See all traces', {:controller => 'trace', :action => 'list'} %>
<% end %>
-
<br />
<br />
-<%= render :partial => 'trace_paging_nav' %>
-
-<table id="keyvalue" cellpadding="3">
- <tr>
- <th></th>
- <th></th>
- </tr>
- <%= render :partial => 'trace', :collection => @traces %>
-</table>
-<%= render :partial => 'trace_paging_nav' %>
-
-<%= render :partial => 'trace_optionals' %>
+<%= render :partial => 'trace_list' %>
<%= submit_tag 'Upload' %> | <a href="http://wiki.openstreetmap.org/index.php/Upload">help</a>
</td></tr>
</table>
-
<% end %>
-<%= render :partial => 'trace_paging_nav' %>
-<table id="keyvalue" cellpadding="3">
- <tr>
- <th></th>
- <th></th>
- </tr>
- <%= render :partial => 'trace', :collection => @traces unless @traces.nil? %>
-</table>
-<%= render :partial => 'trace_paging_nav' %>
+<%= render :partial => 'trace_list' %>
<% end %>
-
-<%= render :partial => 'trace_optionals' %>