Update pagination classes moving into a module
This commit is contained in:
parent
663a1321d2
commit
10d980b6e1
|
@ -1,55 +1,56 @@
|
||||||
module Jekyll
|
module Jekyll
|
||||||
|
module Generators
|
||||||
|
class Pagination < Generator
|
||||||
|
# This generator is safe from arbitrary code execution.
|
||||||
|
safe true
|
||||||
|
|
||||||
class Pagination < Generator
|
# Generate paginated pages if necessary.
|
||||||
# This generator is safe from arbitrary code execution.
|
#
|
||||||
safe true
|
# site - The Site.
|
||||||
|
#
|
||||||
# Generate paginated pages if necessary.
|
# Returns nothing.
|
||||||
#
|
def generate(site)
|
||||||
# site - The Site.
|
site.pages.dup.each do |page|
|
||||||
#
|
paginate(site, page) if Pager.pagination_enabled?(site.config, page.name)
|
||||||
# Returns nothing.
|
|
||||||
def generate(site)
|
|
||||||
site.pages.dup.each do |page|
|
|
||||||
paginate(site, page) if Pager.pagination_enabled?(site.config, page.name)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Paginates the blog's posts. Renders the index.html file into paginated
|
|
||||||
# directories, e.g.: page2/index.html, page3/index.html, etc and adds more
|
|
||||||
# site-wide data.
|
|
||||||
#
|
|
||||||
# site - The Site.
|
|
||||||
# page - The index.html Page that requires pagination.
|
|
||||||
#
|
|
||||||
# {"paginator" => { "page" => <Number>,
|
|
||||||
# "per_page" => <Number>,
|
|
||||||
# "posts" => [<Post>],
|
|
||||||
# "total_posts" => <Number>,
|
|
||||||
# "total_pages" => <Number>,
|
|
||||||
# "previous_page" => <Number>,
|
|
||||||
# "next_page" => <Number> }}
|
|
||||||
def paginate(site, page)
|
|
||||||
all_posts = site.site_payload['site']['posts']
|
|
||||||
pages = Pager.calculate_pages(all_posts, site.config['paginate'].to_i)
|
|
||||||
(1..pages).each do |num_page|
|
|
||||||
pager = Pager.new(site.config, num_page, all_posts, pages)
|
|
||||||
if num_page > 1
|
|
||||||
newpage = Page.new(site, site.source, page.dir, page.name)
|
|
||||||
newpage.pager = pager
|
|
||||||
newpage.dir = File.join(page.dir, paginate_path(site, num_page))
|
|
||||||
site.pages << newpage
|
|
||||||
else
|
|
||||||
page.pager = pager
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
private
|
# Paginates the blog's posts. Renders the index.html file into paginated
|
||||||
def paginate_path(site, num_page)
|
# directories, e.g.: page2/index.html, page3/index.html, etc and adds more
|
||||||
format = site.config['paginate_path']
|
# site-wide data.
|
||||||
format.sub(':num', num_page.to_s)
|
#
|
||||||
|
# site - The Site.
|
||||||
|
# page - The index.html Page that requires pagination.
|
||||||
|
#
|
||||||
|
# {"paginator" => { "page" => <Number>,
|
||||||
|
# "per_page" => <Number>,
|
||||||
|
# "posts" => [<Post>],
|
||||||
|
# "total_posts" => <Number>,
|
||||||
|
# "total_pages" => <Number>,
|
||||||
|
# "previous_page" => <Number>,
|
||||||
|
# "next_page" => <Number> }}
|
||||||
|
def paginate(site, page)
|
||||||
|
all_posts = site.site_payload['site']['posts']
|
||||||
|
pages = Pager.calculate_pages(all_posts, site.config['paginate'].to_i)
|
||||||
|
(1..pages).each do |num_page|
|
||||||
|
pager = Pager.new(site.config, num_page, all_posts, pages)
|
||||||
|
if num_page > 1
|
||||||
|
newpage = Page.new(site, site.source, page.dir, page.name)
|
||||||
|
newpage.pager = pager
|
||||||
|
newpage.dir = File.join(page.dir, paginate_path(site, num_page))
|
||||||
|
site.pages << newpage
|
||||||
|
else
|
||||||
|
page.pager = pager
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def paginate_path(site, num_page)
|
||||||
|
format = site.config['paginate_path']
|
||||||
|
format.sub(':num', num_page.to_s)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class Pager
|
class Pager
|
||||||
|
@ -115,5 +116,4 @@ module Jekyll
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue