Module: Ramaze::Helper::Sequel
- Defined in:
- lib/ramaze/helper/sequel.rb
Instance Method Summary collapse
-
#paginator(paginated, target) ⇒ Object
Very crude paginator, may contain serious bugs, please fix :) pass it the result of YourModel.paginate, target is where links point to.
Instance Method Details
#paginator(paginated, target) ⇒ Object
Very crude paginator, may contain serious bugs, please fix :) pass it the result of YourModel.paginate, target is where links point to.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 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 |
# File 'lib/ramaze/helper/sequel.rb', line 9 def paginator(paginated, target) page_count = paginated.page_count prev_page = paginated.prev_page current_page = paginated.current_page next_page = paginated.next_page lower = (current_page - 3).abs lower = lower == 0 ? 1 : lower out = ['<div class="paginator">'] if prev_page out << %(<a class="paginator_prev" href="#{Rs(target, prev_page)}">< Prev</a>) else out << %(<span class="paginator_prev">< Prev</span>) end if current_page > 3 out << %(<a class="paginator_page" href="#{Rs(target, 1)}">#{1}</a> ... ) end lower.upto(current_page) do |pc| next if pc == current_page out << %(<a class="paginator_page" href="#{Rs(target, pc)}">#{pc}</a>) end out << %(<span class="paginator_current">#{current_page}</span>) current_page.upto([page_count, current_page + 3].min) do |pc| next if pc == current_page out << %(<a class="paginator_page" href="#{Rs(target, pc)}">#{pc}</a>) end if current_page < (page_count - 3) out << %(.. <a class="paginator_page" href="#{Rs(target, page_count)}">#{page_count}</a>) end if next_page out << %(<a class="paginator_next" href="#{Rs(target, next_page)}">Next ></a>) else out << %(<span class="paginator_next">Next ></span>) end out << '</div>' out.join(" ") end |