55 lines
No EOL
1.4 KiB
Ruby
55 lines
No EOL
1.4 KiB
Ruby
include WillPaginate
|
|
|
|
class FoundationPaginationRenderer < WillPaginate::ActionView::LinkRenderer
|
|
def to_html
|
|
list_items = pagination.map do |item|
|
|
case item
|
|
when Fixnum
|
|
page_number(item)
|
|
else
|
|
send(item)
|
|
end
|
|
end.join(@options[:link_separator])
|
|
|
|
tag("ul", list_items, class: 'pagination', role: 'navigation', 'aria-label' => 'Pagination')
|
|
end
|
|
|
|
def container_attributes
|
|
super.except(*[:link_options])
|
|
end
|
|
|
|
protected
|
|
|
|
def page_number(page)
|
|
link_options = @options[:link_options] || {}
|
|
|
|
if page == current_page
|
|
tag :li, page, :class => ('current')
|
|
else
|
|
tag :li, link(page, page, link_options.merge(:rel => rel_value(page)))
|
|
end
|
|
end
|
|
|
|
def previous_or_next_page(page, text, classname)
|
|
link_options = @options[:link_options] || {}
|
|
if page
|
|
tag :li, link(text, page, link_options), :class => classname
|
|
else
|
|
tag :li, '', :class => "%s disabled" % classname
|
|
end
|
|
end
|
|
|
|
def gap
|
|
tag :li, '', class: 'ellipsis', 'aria-hidden' => 'true'
|
|
end
|
|
|
|
def previous_page
|
|
num = @collection.current_page > 1 && @collection.current_page - 1
|
|
previous_or_next_page(num, '', "pagination-previous")
|
|
end
|
|
|
|
def next_page
|
|
num = @collection.current_page < @collection.total_pages && @collection.current_page + 1
|
|
previous_or_next_page(num, '', "pagination-next")
|
|
end
|
|
end |