1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
% use POSIX;
% my $last_page = POSIX::ceil($total / $limit);
% my $current_page = int($offset / $limit) + 1;
% my $prev_offset = ($offset - $limit) < 0 ? 0 : $offset - $limit;
% my $next_offset = $offset + $limit;
% my $last_offset = ($last_page - 1) * $limit;
<nav class="text-center">
<ul class="pagination">
% if ($current_page == 1) {
<li class="page-item disabled">
<a class="page-link">First</a>
% }
% else {
<li class="page-item">
% my $url = url_with->query([offset => 0]);
<a class="page-link" href="<%= $url %>">First</a>
% }
</li>
% if ($current_page == 1) {
<li class="page-item disabled">
<a class="page-link">Previous</a>
% }
% else {
<li class="page-item">
% my $url = url_with->query([offset => $prev_offset]);
<a class="page-link" href="<%= $url %>">Previous</a>
% }
</li>
% my $start = $current_page >= 3 ? $current_page - 2 : 1;
% $start = $start >= ($last_page - 4) ? $last_page - 4 : $start;
% $start = 1 if $start < 1;
% my $end = $last_page < ($start + 4) ? $last_page : $start + 4;
% for my $i ($start .. $end) {
% if ($i == $current_page) {
<li class="page-item active"><a class="page-link"><%= $i %></a></li>
% }
% else {
<li class="page-item">
% my $url = url_with->query([offset => ($i - 1) * $limit]);
<a class="page-link" href="<%= $url %>"><%= $i %></a>
</li>
% }
% }
% if ($current_page >= $last_page) {
<li class="page-item disabled">
<a class="page-link">Next</a>
% }
% else {
<li class="page-item">
% my $url = url_with->query([offset => $next_offset]);
<a class="page-link" href="<%= $url %>">Next</a>
% }
</li>
% if ($current_page >= $last_page) {
<li class="page-item disabled">
<a class="page-link">Last</a>
% }
% else {
<li class="page-item">
% my $url = url_with->query([offset => $last_offset]);
<a class="page-link" href="<%= $url %>">Last</a>
% }
</li>
</ul>
</nav>
|