# encoding: UTF-8 # Almost entirely taken from http://thewebfellas.com/blog/2010/8/22/revisited-roll-your-own-pagination-links-with-will_paginate-and-rails-3 # #

Pages Navigation

# class PaginationListLinkRenderer < WillPaginate::ActionView::LinkRenderer def to_html html = pagination.map do |item| if item.is_a?(Integer) page_number(item, @options[:remote]) else send(item) end end.join(@options[:link_separator]) @options[:container] ? html_container(html) : html end protected def gap tag(:li, "…", class: "gap") end def page_number(page, remote = nil) unless page == current_page tag(:li, link(page, page, {rel: rel_value(page)}.merge(:"data-remote" => remote))) else tag(:li, tag(:span, page, class: "current")) end end def previous_page num = @collection.current_page > 1 && @collection.current_page - 1 previous_or_next_page(num, @options[:previous_label], 'previous', @options[:remote]) end def next_page num = @collection.current_page < @collection.total_pages && @collection.current_page + 1 previous_or_next_page(num, @options[:next_label], 'next', @options[:remote]) end def previous_or_next_page(page, text, classname, remote = nil) if page tag(:li, link(text, page, {:"data-remote" => remote}), class: classname, title: classname) else tag(:li, tag(:span, text, class: "disabled"), class: classname, title: classname) end end def html_container(html) tag(:h4, "Pages Navigation", class: "landmark heading") + tag(:ol, html, container_attributes.merge(class: "pagination actions", role: "navigation", title: "pagination")) end end