class RailsAdminContent::Paginate

Public Class Methods

new(scope, options = {}) click to toggle source
# File lib/rails_admin_content/paginate.rb, line 4
def initialize(scope, options = {})
  @scope, @options = scope, options
end

Public Instance Methods

to_s() click to toggle source
# File lib/rails_admin_content/paginate.rb, line 8
def to_s
  return "" unless @scope
  current_page, total_pages = @options[:spage].to_i, RailsAdminContent::Client.total_nums / @options[:stint] + 1
  # return "共#{RailsAdminContent::Client.total_nums}条数据" if total_pages <= 1
  param_name = @options["param_name"] || "page"
  url = @options["url"] || ""
  helpers.content_tag :div, :class => "pagination" do
    helpers.content_tag :ul do
      result = ''
      result += helpers.content_tag(:li, class: 'previous'){helpers.link_to("‹ 上一页","#{url}?#{param_name}=#{current_page-1}")} if current_page.to_i > 1
      if total_pages > 8
        1.upto(3) { |i| result << page_link(i, current_page) }
        if current_page > 1 and current_page < total_pages
          result << helpers.content_tag(:li, helpers.link_to("...",'#'), class: 'disabled') if current_page > 5
          min = current_page > 4 ? current_page-1 : 4
          max = current_page < total_pages-4 ? current_page+2 : total_pages-2
          (min..max-1).each { |i| result << page_link(i, current_page) } if max >= min+1
          result << helpers.content_tag(:li, helpers.link_to("...", "#"), class: 'disabled') if current_page < total_pages-4
        else
          result << helpers.content_tag(:li, helpers.link_to("...",'#'), class: 'disabled')
        end
        (total_pages-2..total_pages).each{ |i| result << page_link(i, current_page) }
      else
        (1..total_pages).each{ |i| result << page_link(i, current_page) }
      end
      result += helpers.content_tag(:li, class: "next"){helpers.link_to("下一页 ›", "#{url}?#{param_name}=#{current_page+1}")} if current_page < total_pages
      result += helpers.content_tag(:li, class: 'disabled total_pages'){helpers.link_to "共#{RailsAdminContent::Client.total_nums}条数据", "#"}
      result.html_safe
    end
  end

end

Private Instance Methods

helpers() click to toggle source
# File lib/rails_admin_content/paginate.rb, line 48
def helpers
  ActionController::Base.helpers
end