#369: added BootstrapLinkRenderer

This commit is contained in:
Vokhmin Alexey V 2014-10-27 23:28:50 +03:00
parent ea5a9c8b05
commit 3b2ebcd3f3
3 changed files with 82 additions and 0 deletions

View File

@ -9,6 +9,16 @@ module PaginateHelper
{page: page, per_page: per_page} {page: page, per_page: per_page}
end end
def will_paginate(collection_or_options = nil, options = {})
if collection_or_options.is_a? Hash
options, collection_or_options = collection_or_options, nil
end
options.merge!(renderer: BootstrapLinkRenderer) unless options[:renderer]
options.merge!(next_label: I18n.t('datatables.next_label')) unless options[:next_label]
options.merge!(previous_label: I18n.t('datatables.previous_label')) unless options[:previous_label]
super *[collection_or_options, options].compact
end
def angularjs_will_paginate(collection_or_options = nil, options = {}) def angularjs_will_paginate(collection_or_options = nil, options = {})
if collection_or_options.is_a? Hash if collection_or_options.is_a? Hash
options, collection_or_options = collection_or_options, nil options, collection_or_options = collection_or_options, nil

View File

@ -0,0 +1,62 @@
# See: https://github.com/bootstrap-ruby/will_paginate-bootstrap/blob/master/lib/bootstrap_pagination/bootstrap_renderer.rb
class BootstrapLinkRenderer < WillPaginate::ActionView::LinkRenderer
ELLIPSIS = "&hellip;"
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: ul_class)
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", tag("span", page), class: "active")
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", tag("span", text), class: "%s disabled" % classname)
end
end
def gap
tag("li", tag("span", ELLIPSIS), class: "disabled")
end
def previous_page
num = @collection.current_page > 1 && @collection.current_page - 1
previous_or_next_page(num, @options[:previous_label], "prev")
end
def next_page
num = @collection.current_page < @collection.total_pages && @collection.current_page + 1
previous_or_next_page(num, @options[:next_label], "next")
end
def ul_class
["pagination", @options[:class]].compact.join(" ")
end
end

View File

@ -0,0 +1,10 @@
= simple_form_for(@<%= singular_table_name %>) do |f|
= f.error_notification
.form-inputs
<%- attributes.each do |attribute| -%>
= f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %>
<%- end -%>
.form-actions
= f.button :submit