Sha256: 1d3e11ddbfe719f3a55e137a3c91f5e6dfba7dd2f6ec4f35c7cfc55f790d981a

Contents?: true

Size: 1.63 KB

Versions: 2

Compression:

Stored size: 1.63 KB

Contents

#          Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
# All files in this distribution are subject to the terms of the Ruby license.

module Ramaze
  module Helper::Sequel
    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)}">&lt;&nbsp;Prev</a>)
      else
        out << %(<span class="paginator_prev">&lt;&nbsp;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&nbsp;&gt;</a>)
      else
        out << %(<span class="paginator_next">Next&nbsp;&gt;</span>)
      end
      out << '</div>'
      out.join(" ")
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ramaze-0.3.9 lib/ramaze/helper/sequel.rb
ramaze-0.3.9.1 lib/ramaze/helper/sequel.rb