Created
September 17, 2010 09:12
-
-
Save loonies/583956 to your computer and use it in GitHub Desktop.
Kohana float pagination view
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
First Previous 1 2 3 ... 22 23 24 25 26 [27] 28 29 30 31 32 ... 48 49 50 Next Last | |
*/ | |
// Number of page links in the begin and end of whole range | |
$count_out = ( ! empty($config['count_out'])) ? (int) $config['count_out'] : 3; | |
// Number of page links on each side of current page | |
$count_in = ( ! empty($config['count_in'])) ? (int) $config['count_in'] : 5; | |
// Beginning group of pages: $n1...$n2 | |
$n1 = 1; | |
$n2 = min($count_out, $total_pages); | |
// Ending group of pages: $n7...$n8 | |
$n7 = max(1, $total_pages - $count_out + 1); | |
$n8 = $total_pages; | |
// Middle group of pages: $n4...$n5 | |
$n4 = max($n2 + 1, $current_page - $count_in); | |
$n5 = min($n7 - 1, $current_page + $count_in); | |
$use_middle = ($n5 >= $n4); | |
// Point $n3 between $n2 and $n4 | |
$n3 = (int) (($n2 + $n4) / 2); | |
$use_n3 = ($use_middle && (($n4 - $n2) > 1)); | |
// Point $n6 between $n5 and $n7 | |
$n6 = (int) (($n5 + $n7) / 2); | |
$use_n6 = ($use_middle && (($n7 - $n5) > 1)); | |
// Links to display as array(page => content) | |
$links = array(); | |
// Generate links data in accordance with calculated numbers | |
for ($i = $n1; $i <= $n2; $i++) | |
{ | |
$links[$i] = $i; | |
} | |
if ($use_n3) | |
{ | |
$links[$n3] = '…'; | |
} | |
for ($i = $n4; $i <= $n5; $i++) | |
{ | |
$links[$i] = $i; | |
} | |
if ($use_n6) | |
{ | |
$links[$n6] = '…'; | |
} | |
for ($i = $n7; $i <= $n8; $i++) | |
{ | |
$links[$i] = $i; | |
} | |
?> | |
<p class="pagination"> | |
<?php if ($first_page !== FALSE): ?> | |
<a href="<?php echo $page->url($first_page) ?>" rel="first"><?php echo __('First') ?></a> | |
<?php else: ?> | |
<?php echo __('First') ?> | |
<?php endif ?> | |
<?php if ($previous_page !== FALSE): ?> | |
<a href="<?php echo $page->url($previous_page) ?>" rel="prev"><?php echo __('Previous') ?></a> | |
<?php else: ?> | |
<?php echo __('Previous') ?> | |
<?php endif ?> | |
<?php foreach ($links as $number => $content): ?> | |
<?php if ($number === $current_page): ?> | |
<strong><?php echo $content ?></strong> | |
<?php else: ?> | |
<a href="<?php echo $page->url($number) ?>"><?php echo $content ?></a> | |
<?php endif ?> | |
<?php endforeach ?> | |
<?php if ($next_page !== FALSE): ?> | |
<a href="<?php echo $page->url($next_page) ?>" rel="next"><?php echo __('Next') ?></a> | |
<?php else: ?> | |
<?php echo __('Next') ?> | |
<?php endif ?> | |
<?php if ($last_page !== FALSE): ?> | |
<a href="<?php echo $page->url($last_page) ?>" rel="last"><?php echo __('Last') ?></a> | |
<?php else: ?> | |
<?php echo __('Last') ?> | |
<?php endif ?> | |
</p><!-- .pagination --> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment