pagination: refactor page limits.
Refactor page limits to a) be explicitly listed in the User class (not hidden away in the Danbooru config) and b) explicitly depend on the CurrentUser (not implicitly by way of Danbooru.config.max_numbered_pages).
This commit is contained in:
@@ -16,12 +16,12 @@ module PaginationHelper
|
||||
html.html_safe
|
||||
end
|
||||
|
||||
def use_sequential_paginator?(records)
|
||||
params[:page] =~ /[ab]/ || records.current_page >= Danbooru.config.max_numbered_pages
|
||||
def use_sequential_paginator?(records, page_limit)
|
||||
params[:page] =~ /[ab]/ || records.current_page >= page_limit
|
||||
end
|
||||
|
||||
def numbered_paginator(records)
|
||||
if use_sequential_paginator?(records)
|
||||
def numbered_paginator(records, page_limit: CurrentUser.user.page_limit)
|
||||
if use_sequential_paginator?(records, page_limit)
|
||||
return sequential_paginator(records)
|
||||
end
|
||||
|
||||
@@ -36,35 +36,35 @@ module PaginationHelper
|
||||
|
||||
if records.total_pages <= (window * 2) + 5
|
||||
1.upto(records.total_pages) do |page|
|
||||
html << numbered_paginator_item(page, records.current_page)
|
||||
html << numbered_paginator_item(page, records.current_page, page_limit)
|
||||
end
|
||||
|
||||
elsif records.current_page <= window + 2
|
||||
1.upto(records.current_page + window) do |page|
|
||||
html << numbered_paginator_item(page, records.current_page)
|
||||
html << numbered_paginator_item(page, records.current_page, page_limit)
|
||||
end
|
||||
html << numbered_paginator_item("...", records.current_page)
|
||||
html << numbered_paginator_final_item(records.total_pages, records.current_page)
|
||||
html << numbered_paginator_item("...", records.current_page, page_limit)
|
||||
html << numbered_paginator_final_item(records.total_pages, records.current_page, page_limit)
|
||||
elsif records.current_page >= records.total_pages - (window + 1)
|
||||
html << numbered_paginator_item(1, records.current_page)
|
||||
html << numbered_paginator_item("...", records.current_page)
|
||||
html << numbered_paginator_item(1, records.current_page, page_limit)
|
||||
html << numbered_paginator_item("...", records.current_page, page_limit)
|
||||
(records.current_page - window).upto(records.total_pages) do |page|
|
||||
html << numbered_paginator_item(page, records.current_page)
|
||||
html << numbered_paginator_item(page, records.current_page, page_limit)
|
||||
end
|
||||
else
|
||||
html << numbered_paginator_item(1, records.current_page)
|
||||
html << numbered_paginator_item("...", records.current_page)
|
||||
html << numbered_paginator_item(1, records.current_page, page_limit)
|
||||
html << numbered_paginator_item("...", records.current_page, page_limit)
|
||||
if records.present?
|
||||
right_window = records.current_page + window
|
||||
else
|
||||
right_window = records.current_page
|
||||
end
|
||||
(records.current_page - window).upto(right_window) do |page|
|
||||
html << numbered_paginator_item(page, records.current_page)
|
||||
html << numbered_paginator_item(page, records.current_page, page_limit)
|
||||
end
|
||||
if records.present?
|
||||
html << numbered_paginator_item("...", records.current_page)
|
||||
html << numbered_paginator_final_item(records.total_pages, records.current_page)
|
||||
html << numbered_paginator_item("...", records.current_page, page_limit)
|
||||
html << numbered_paginator_final_item(records.total_pages, records.current_page, page_limit)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -78,16 +78,16 @@ module PaginationHelper
|
||||
html.html_safe
|
||||
end
|
||||
|
||||
def numbered_paginator_final_item(total_pages, current_page)
|
||||
if total_pages <= Danbooru.config.max_numbered_pages
|
||||
numbered_paginator_item(total_pages, current_page)
|
||||
def numbered_paginator_final_item(total_pages, current_page, page_limit)
|
||||
if total_pages <= page_limit
|
||||
numbered_paginator_item(total_pages, current_page, page_limit)
|
||||
else
|
||||
""
|
||||
end
|
||||
end
|
||||
|
||||
def numbered_paginator_item(page, current_page)
|
||||
return "" if page.to_i > Danbooru.config.max_numbered_pages
|
||||
def numbered_paginator_item(page, current_page, page_limit)
|
||||
return "" if page.to_i > page_limit
|
||||
|
||||
html = []
|
||||
if page == "..."
|
||||
|
||||
Reference in New Issue
Block a user