diff --git a/core/paginator.class.php b/core/paginator.class.php deleted file mode 100644 index 463f92d1..00000000 --- a/core/paginator.class.php +++ /dev/null @@ -1,52 +0,0 @@ -body = $this->build_paginator($page_number, $total_pages, $page, $query); - $this->section = "main"; - $this->position = 90; - } - - private function gen_page_link($base_url, $query, $page, $name) { - $link = make_link("$base_url/$page", $query); - return "$name"; - } - - private function gen_page_link_block($base_url, $query, $page, $current_page, $name) { - $paginator = ""; - if($page == $current_page) $paginator .= ""; - $paginator .= $this->gen_page_link($base_url, $query, $page, $name); - if($page == $current_page) $paginator .= ""; - return $paginator; - } - - private function build_paginator($current_page, $total_pages, $base_url, $query) { - $next = $current_page + 1; - $prev = $current_page - 1; - $rand = rand(1, $total_pages); - - $at_start = ($current_page <= 1 || $total_pages <= 1); - $at_end = ($current_page >= $total_pages); - - $first_html = $at_start ? "First" : $this->gen_page_link($base_url, $query, 1, "First"); - $prev_html = $at_start ? "Prev" : $this->gen_page_link($base_url, $query, $prev, "Prev"); - $random_html = $this->gen_page_link($base_url, $query, $rand, "Random"); - $next_html = $at_end ? "Next" : $this->gen_page_link($base_url, $query, $next, "Next"); - $last_html = $at_end ? "Last" : $this->gen_page_link($base_url, $query, $total_pages, "Last"); - - $start = $current_page-5 > 1 ? $current_page-5 : 1; - $end = $start+10 < $total_pages ? $start+10 : $total_pages; - - $pages = array(); - foreach(range($start, $end) as $i) { - $pages[] = $this->gen_page_link_block($base_url, $query, $i, $current_page, $i); - } - $pages_html = implode(" | ", $pages); - - return "

$first_html | $prev_html | $random_html | $next_html | $last_html". - "
<< $pages_html >>

"; - } -} diff --git a/ext/comment/theme.php b/ext/comment/theme.php index ce3f156d..ea6ba677 100644 --- a/ext/comment/theme.php +++ b/ext/comment/theme.php @@ -16,7 +16,7 @@ class CommentListTheme extends Themelet { $page->set_title("Comments"); $page->set_heading("Comments"); $page->add_block(new Block("Navigation", $nav, "left")); - $page->add_block(new Paginator("comment/list", null, $page_number, $total_pages), 90); + $this->display_paginator($page, "comment/list", null, $page_number, $total_pages); } public function display_recent_comments($page, $comments) { diff --git a/ext/index/theme.php b/ext/index/theme.php index cc9e572e..d80549db 100644 --- a/ext/index/theme.php +++ b/ext/index/theme.php @@ -32,7 +32,7 @@ class IndexTheme extends Themelet { $page->add_block(new Block("Navigation", $nav, "left", 0)); if(count($images) > 0) { $page->add_block(new Block("Images", $this->build_table($images, $query), "main", 10)); - $page->add_block(new Paginator("post/list", $query, $this->page_number, $this->total_pages)); + $this->display_paginator($page, "post/list", $query, $this->page_number, $this->total_pages); } else { $page->add_block(new Block("No Images Found", "No images were found to match the search criteria")); diff --git a/themes/danbooru/comment.theme.php b/themes/danbooru/comment.theme.php index c90b6260..905be603 100644 --- a/themes/danbooru/comment.theme.php +++ b/themes/danbooru/comment.theme.php @@ -16,7 +16,7 @@ class CommentListTheme extends Themelet { $page->set_title("Comments"); $page->set_heading("Comments"); $page->add_block(new Block("Navigation", $nav, "left")); - $page->add_block(new Paginator("comment/list", null, $page_number, $total_pages), 90); + $this->display_paginator($page, "comment/list", null, $page_number, $total_pages); $page->disable_left(); } diff --git a/themes/danbooru/index.theme.php b/themes/danbooru/index.theme.php index 8d0966b8..d07aadef 100644 --- a/themes/danbooru/index.theme.php +++ b/themes/danbooru/index.theme.php @@ -26,7 +26,7 @@ class IndexTheme extends Themelet { $page->add_block(new Block("Search", $nav, "left", 0)); if(count($images) > 0) { $page->add_block(new Block("Images", $this->build_table($images, $query), "main", 10)); - $page->add_block(new Paginator("post/list", $query, $this->page_number, $this->total_pages)); + $this->display_paginator($page, "post/list", $query, $this->page_number, $this->total_pages); } else { $page->add_block(new Block("No Images Found", "No images were found to match the search criteria")); diff --git a/themes/danbooru/themelet.class.php b/themes/danbooru/themelet.class.php index 067a99e9..6763598c 100644 --- a/themes/danbooru/themelet.class.php +++ b/themes/danbooru/themelet.class.php @@ -7,5 +7,50 @@ class Themelet { $page->add_block(new NavBlock()); $page->add_block(new Block("Error", $message)); } + + public function display_paginator($page, $base, $query, $page_number, $total_pages) { + $body = $this->build_paginator($page_number, $total_pages, $base, $query); + $page->add_block(new Block(null, $body, "main", 90)); + } + + private function gen_page_link($base_url, $query, $page, $name) { + $link = make_link("$base_url/$page", $query); + return "$name"; + } + + private function gen_page_link_block($base_url, $query, $page, $current_page, $name) { + $paginator = ""; + if($page == $current_page) $paginator .= ""; + $paginator .= $this->gen_page_link($base_url, $query, $page, $name); + if($page == $current_page) $paginator .= ""; + return $paginator; + } + + private function build_paginator($current_page, $total_pages, $base_url, $query) { + $next = $current_page + 1; + $prev = $current_page - 1; + $rand = rand(1, $total_pages); + + $at_start = ($current_page <= 1 || $total_pages <= 1); + $at_end = ($current_page >= $total_pages); + + $first_html = $at_start ? "First" : $this->gen_page_link($base_url, $query, 1, "First"); + $prev_html = $at_start ? "Prev" : $this->gen_page_link($base_url, $query, $prev, "Prev"); + $random_html = $this->gen_page_link($base_url, $query, $rand, "Random"); + $next_html = $at_end ? "Next" : $this->gen_page_link($base_url, $query, $next, "Next"); + $last_html = $at_end ? "Last" : $this->gen_page_link($base_url, $query, $total_pages, "Last"); + + $start = $current_page-5 > 1 ? $current_page-5 : 1; + $end = $start+10 < $total_pages ? $start+10 : $total_pages; + + $pages = array(); + foreach(range($start, $end) as $i) { + $pages[] = $this->gen_page_link_block($base_url, $query, $i, $current_page, $i); + } + $pages_html = implode(" | ", $pages); + + return "

$first_html | $prev_html | $random_html | $next_html | $last_html". + "
<< $pages_html >>

"; + } } ?> diff --git a/themes/default/themelet.class.php b/themes/default/themelet.class.php index f01e4c5f..d27b0581 100644 --- a/themes/default/themelet.class.php +++ b/themes/default/themelet.class.php @@ -7,5 +7,51 @@ class Themelet { $page->add_side_block(new NavBlock()); $page->add_main_block(new Block("Error", $message)); } + + + public function display_paginator($page, $base, $query, $page_number, $total_pages) { + $body = $this->build_paginator($page_number, $total_pages, $base, $query); + $page->add_block(new Block(null, $body, "main", 90)); + } + + private function gen_page_link($base_url, $query, $page, $name) { + $link = make_link("$base_url/$page", $query); + return "$name"; + } + + private function gen_page_link_block($base_url, $query, $page, $current_page, $name) { + $paginator = ""; + if($page == $current_page) $paginator .= ""; + $paginator .= $this->gen_page_link($base_url, $query, $page, $name); + if($page == $current_page) $paginator .= ""; + return $paginator; + } + + private function build_paginator($current_page, $total_pages, $base_url, $query) { + $next = $current_page + 1; + $prev = $current_page - 1; + $rand = rand(1, $total_pages); + + $at_start = ($current_page <= 1 || $total_pages <= 1); + $at_end = ($current_page >= $total_pages); + + $first_html = $at_start ? "First" : $this->gen_page_link($base_url, $query, 1, "First"); + $prev_html = $at_start ? "Prev" : $this->gen_page_link($base_url, $query, $prev, "Prev"); + $random_html = $this->gen_page_link($base_url, $query, $rand, "Random"); + $next_html = $at_end ? "Next" : $this->gen_page_link($base_url, $query, $next, "Next"); + $last_html = $at_end ? "Last" : $this->gen_page_link($base_url, $query, $total_pages, "Last"); + + $start = $current_page-5 > 1 ? $current_page-5 : 1; + $end = $start+10 < $total_pages ? $start+10 : $total_pages; + + $pages = array(); + foreach(range($start, $end) as $i) { + $pages[] = $this->gen_page_link_block($base_url, $query, $i, $current_page, $i); + } + $pages_html = implode(" | ", $pages); + + return "

$first_html | $prev_html | $random_html | $next_html | $last_html". + "
<< $pages_html >>

"; + } } ?>