1
0
Fork 0
mirror of https://github.com/kaminari/kaminari.git synced 2022-11-09 13:44:37 -05:00

merge mongoid/document and mongoid/criteria into one file

This commit is contained in:
Akira Matsuda 2011-02-18 08:07:23 +09:00
parent 32300200a9
commit 65a1626f73
4 changed files with 59 additions and 67 deletions

View file

@ -1,5 +1,63 @@
module Kaminari
module Mongoid
DEFAULT_PER_PAGE = 25
module Criteria
extend ActiveSupport::Concern
included do
delegate :page, :per, :num_pages, :current_page, :limit_value, :to => '@klass'
end
end
module Document
extend ActiveSupport::Concern
included do
# Fetch the values at the specified page number
# Model.page(5)
scope :page, lambda {|num|
limit(default_per_page).offset(default_per_page * ([num.to_i, 1].max - 1))
} do
# Specify the <tt>per_page</tt> value for the preceding <tt>page</tt> scope
# Model.page(3).per(10)
def per(num)
if (n = num.to_i) <= 0
self
else
limit(n).offset(options[:skip] / options[:limit] * n)
end
end
# Total number of pages
def num_pages
(count.to_f / options[:limit]).ceil
end
# Current page number
def current_page
(options[:skip] / options[:limit]) + 1
end
def limit_value
options[:limit]
end
end
# Overrides the default per_page value per model
# class Article < ActiveRecord::Base
# paginates_per 10
# end
def self.paginates_per(val)
@_default_per_page = val
end
# This model's default per_page value
# returns 25 unless explicitly overridden via <tt>paginates_per</tt>
def self.default_per_page
@_default_per_page || Kaminari::Mongoid::DEFAULT_PER_PAGE
end
end
end
end
end

View file

@ -1,11 +0,0 @@
module Kaminari
module Mongoid
module Criteria
extend ActiveSupport::Concern
included do
delegate :page, :per, :num_pages, :current_page, :limit_value, :to => '@klass'
end
end
end
end

View file

@ -1,53 +0,0 @@
module Kaminari
module Mongoid
module Document
extend ActiveSupport::Concern
included do
# Fetch the values at the specified page number
# Model.page(5)
scope :page, lambda {|num|
limit(default_per_page).offset(default_per_page * ([num.to_i, 1].max - 1))
} do
# Specify the <tt>per_page</tt> value for the preceding <tt>page</tt> scope
# Model.page(3).per(10)
def per(num)
if (n = num.to_i) <= 0
self
else
limit(n).offset(options[:skip] / options[:limit] * n)
end
end
# Total number of pages
def num_pages
(count.to_f / options[:limit]).ceil
end
# Current page number
def current_page
(options[:skip] / options[:limit]) + 1
end
def limit_value
options[:limit]
end
end
# Overrides the default per_page value per model
# class Article < ActiveRecord::Base
# paginates_per 10
# end
def self.paginates_per(val)
@_default_per_page = val
end
# This model's default per_page value
# returns 25 unless explicitly overridden via <tt>paginates_per</tt>
def self.default_per_page
@_default_per_page || Kaminari::Mongoid::DEFAULT_PER_PAGE
end
end
end
end
end

View file

@ -11,10 +11,8 @@ module Kaminari
end
if defined? ::Mongoid
require File.join(File.dirname(__FILE__), 'mongoid')
require File.join(File.dirname(__FILE__), 'mongoid/criteria')
require File.join(File.dirname(__FILE__), 'mongoid/document')
::Mongoid::Criteria.send :include, Kaminari::Mongoid::Criteria
::Mongoid::Document.send :include, Kaminari::Mongoid::Document
::Mongoid::Criteria.send :include, Kaminari::Mongoid::Criteria
end
::ActionView::Base.send :include, Kaminari::Helpers
end