Class: Saint::Pager
- Inherits:
-
Object
- Object
- Saint::Pager
- Includes:
- Rack::Utils, Utils
- Defined in:
- lib/saint/pager.rb
Constant Summary
- VAR =
"saint-page"- SIDE_PAGES =
5- ITEMS_PER_PAGE =
10
Constants included from Utils
Utils::BOOLEAN_FILTERS, Utils::BOOLEAN_OPTIONS
Instance Attribute Summary (collapse)
-
- (Object) html
readonly
Returns the value of attribute html.
-
- (Object) items
readonly
Returns the value of attribute items.
-
- (Object) items_per_page
readonly
Returns the value of attribute items_per_page.
-
- (Object) page_label
readonly
Returns the value of attribute page_label.
-
- (Object) page_number
readonly
Returns the value of attribute page_number.
-
- (Object) pages
readonly
Returns the value of attribute pages.
Instance Method Summary (collapse)
-
- (Object) filters_string
returns query string without page var.
-
- (Pager) initialize(page = 1, items = ITEMS_PER_PAGE, items_per_page = ITEMS_PER_PAGE)
constructor
A new instance of Pager.
- - (Object) link_page(page, route = nil)
- - (Object) paginate(opts = {})
-
- (Object) query_string(*page_or_params)
returns query string including page var.
Methods included from Utils
column_format, escape_html, #format_date__time, normalize_string, number_to_human_size, saint_view, unescape_html
Constructor Details
- (Pager) initialize(page = 1, items = ITEMS_PER_PAGE, items_per_page = ITEMS_PER_PAGE)
A new instance of Pager
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/saint/pager.rb', line 13 def initialize page = 1, items = ITEMS_PER_PAGE, items_per_page = ITEMS_PER_PAGE @items, @items_per_page = items, items_per_page @pages = (@items.to_f / @items_per_page.to_f).ceil @pages = 1 if @pages < 1 @page_label = page.to_i @page_label = 1 if @page_label < 1 @page_label = @pages if @page_label > @pages && @pages > 1 @page_number = @page_label - 1 end |
Instance Attribute Details
- (Object) html (readonly)
Returns the value of attribute html
11 12 13 |
# File 'lib/saint/pager.rb', line 11 def html @html end |
- (Object) items (readonly)
Returns the value of attribute items
11 12 13 |
# File 'lib/saint/pager.rb', line 11 def items @items end |
- (Object) items_per_page (readonly)
Returns the value of attribute items_per_page
11 12 13 |
# File 'lib/saint/pager.rb', line 11 def items_per_page @items_per_page end |
- (Object) page_label (readonly)
Returns the value of attribute page_label
11 12 13 |
# File 'lib/saint/pager.rb', line 11 def page_label @page_label end |
- (Object) page_number (readonly)
Returns the value of attribute page_number
11 12 13 |
# File 'lib/saint/pager.rb', line 11 def page_number @page_number end |
- (Object) pages (readonly)
Returns the value of attribute pages
11 12 13 |
# File 'lib/saint/pager.rb', line 11 def pages @pages end |
Instance Method Details
- (Object) filters_string
returns query string without page var
66 67 68 |
# File 'lib/saint/pager.rb', line 66 def filters_string '?' << @filters_string end |
- (Object) link_page(page, route = nil)
70 71 72 73 |
# File 'lib/saint/pager.rb', line 70 def link_page page, route = nil route ||= @route route.to_s.sub('[__%s__]' % VAR, page.to_s) end |
- (Object) paginate(opts = {})
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/saint/pager.rb', line 25 def paginate opts = {} @opts = opts @filters_string = @opts[:query] || build_nested_query(@opts[:filters]||{}) @query_string = [ "?", @filters_string, (@filters_string.size > 0 ? "&" : ""), "%s=[__%s__]" % [VAR, VAR], ].join @route = @opts[:route].to_s + @query_string side_pages = opts[:side_pages] || SIDE_PAGES @page_min = @page_label - side_pages @page_min = @pages - side_pages * 2 if (@page_label + side_pages) > @pages @page_max = @page_label + side_pages @page_max = side_pages * 2 if @page_label < side_pages @page_max = @pages if @page_max > @pages @page_min = 1 if @page_min < 1 @page_prev = @page_label > 1 ? @page_label - 1 : nil @page_next = @page_label < @pages ? @page_label + 1 : nil return if opts[:skip_render] @html = saint_view.render_view(::File.join('pager', (@opts[:template] || :default).to_s)) self end |
- (Object) query_string(*page_or_params)
returns query string including page var
59 60 61 62 63 |
# File 'lib/saint/pager.rb', line 59 def query_string *page_or_params page, params = @page_label, {} page_or_params.each { |a| a.is_a?(Hash) ? params.update(a) : page = a } link_page(page, '%s%s%s' % [@query_string, ('&' if params.size > 0), build_nested_query(params)]) end |