post index noe works

This commit is contained in:
albert
2011-06-24 18:22:54 -04:00
parent 9ac7f85f0b
commit 1ad075c05a
17 changed files with 91 additions and 136 deletions

View File

@@ -1,5 +1,4 @@
require "danbooru/paginator/active_record_extension"
require "danbooru/paginator/collection_extension"
require "danbooru/paginator/numbered_collection_extension"
require "danbooru/paginator/sequential_collection_extension"

View File

@@ -6,29 +6,29 @@ module Danbooru
extend ActiveSupport::Concern
module ClassMethods
def page(p)
if use_sequential_paginator?(p)
paginate_sequential(p)
def paginate(page)
if use_sequential_paginator?(page)
paginate_sequential(page)
else
paginate_numbered(p)
paginate_numbered(page)
end
end
def use_sequential_paginator?(p)
p =~ /[ab]\d+/i
def use_sequential_paginator?(page)
page =~ /[ab]\d+/i
end
def paginate_sequential(p)
if p =~ /b(\d+)/
def paginate_sequential(page)
if page =~ /b(\d+)/
paginate_sequential_before($1)
elsif p =~ /a(\d+)/
elsif page =~ /a(\d+)/
paginate_sequential_after($1)
else
paginate_numbered(p)
paginate_sequential_before
end
end
def paginate_sequential_before(before_id)
def paginate_sequential_before(before_id = nil)
c = limit(records_per_page)
if before_id.to_i > 0
@@ -48,17 +48,17 @@ module Danbooru
end
end
def paginate_numbered(p)
p = [p.to_i, 1].max
limit(records_per_page).offset((p - 1) * records_per_page).tap do |obj|
def paginate_numbered(page)
page = [page.to_i, 1].max
limit(records_per_page).offset((page - 1) * records_per_page).tap do |obj|
obj.extend(NumberedCollectionExtension)
obj.total_pages = (obj.total_count / records_per_page.to_f).ceil
obj.current_page = p
obj.total_pages = (obj.total_count.to_f / records_per_page).ceil
obj.current_page = page
end
end
def records_per_page
Danbooru.config.posts_per_p
Danbooru.config.posts_per_page
end
# taken from kaminari (https://github.com/amatsuda/kaminari)

View File

@@ -1,6 +0,0 @@
module Danbooru
module Paginator
module CollectionExtension
end
end
end

View File

@@ -3,24 +3,12 @@ module Danbooru
module NumberedCollectionExtension
attr_accessor :current_page, :total_pages
def self.extended(obj)
obj.extend(Danbooru::Paginator::CollectionExtension)
end
def is_first_page?
current_page == 1
end
def is_last_page?
current_page == total_pages
end
def is_sequential_paginator?
false
end
def is_numbered_paginator?
true
current_page >= total_pages
end
end
end

View File

@@ -3,10 +3,6 @@ module Danbooru
module SequentialCollectionExtension
attr_accessor :sequential_paginator_mode
def self.extended(obj)
obj.extend(Danbooru::Paginator::CollectionExtension)
end
def is_first_page?
size == 0
end
@@ -15,14 +11,6 @@ module Danbooru
size == 0
end
def is_sequential_paginator?
true
end
def is_numbered_paginator?
false
end
def to_a
if sequential_paginator_mode == :before
super
@@ -30,22 +18,6 @@ module Danbooru
super.reverse
end
end
def before_id
if size > 0
self[-1].id
else
nil
end
end
def after_id
if size > 0
self[0].id
else
nil
end
end
end
end
end