#369: added BootstrapLinkRenderer
This commit is contained in:
parent
ea5a9c8b05
commit
3b2ebcd3f3
|
@ -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
|
||||||
|
|
|
@ -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 = "…"
|
||||||
|
|
||||||
|
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
|
|
@ -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
|
Loading…
Reference in New Issue