From 07ad4a36ea398f4bba431d19d5d99e0160ad814b Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 8 Aug 2007 23:58:37 +0000 Subject: [PATCH] Use the rails paginator to paginate the trace list, and abstract some common template code into a partial. --- app/controllers/trace_controller.rb | 18 ++++-------------- app/views/trace/_trace_list.rhtml | 13 +++++++++++++ app/views/trace/_trace_paging_nav.rhtml | 21 +++++++-------------- app/views/trace/list.rhtml | 14 +------------- app/views/trace/mine.rhtml | 13 +------------ 5 files changed, 26 insertions(+), 53 deletions(-) create mode 100644 app/views/trace/_trace_list.rhtml 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' %> -- 2.43.2