@php
$prev_dots = $next_dots = false;
if ($page > $max_page) {
$page = $max_page;
$prev = $page - 1;
$next = $page + 1;
}
if ($page == 1) {
$page_range = ['current' => (int) $page];
if ($max_page >= 2) { $page_range['n1'] = (int) $page + 1; }
if ($max_page >= 3) { $page_range['n2'] = (int) $page + 2; }
if ($max_page >= 4) { $page_range['n3'] = (int) $page + 3; }
if ($max_page >= 5) {
$page_range['n4'] = (int) $page + 4;
if (($max_page - ($page_range['n4'])) >= $page_range['n4']) { $next_dots = true; }
}
} elseif ($page == 2) {
$page_range = [
'p1' => (int) $page - 1,
'current' => (int) $page,
];
if ($max_page >= 3) { $page_range['n1'] = (int) $page + 1; }
if ($max_page >= 4) { $page_range['n2'] = (int) $page + 2; }
if ($max_page >= 5) {
$page_range['n3'] = (int) $page + 3;
if (($max_page - ($page_range['n3'])) >= $page_range['n3']) { $next_dots = true; }
}
} elseif ($page == ($max_page - 1)) {
$p3 = (int) $page - 3;
$p2 = (int) $page - 2;
$p1 = (int) $page - 1;
$n1 = (int) $page + 1;
$page_range = [];
if ($p3 > 0) { $page_range['p3'] = $p3; }
if ($p2 > 0) { $page_range['p2'] = $p2; }
if ($p1 > 0) { $page_range['p1'] = $p1; }
$page_range['current'] = (int) $page;
if ($n1 > 0) { $page_range['n1'] = $n1; }
if (($prev - 2) < ($prev - 1)) { $prev_dots = true; }
} elseif ($page == $max_page) {
$p4 = (int) $page - 4;
$p3 = (int) $page - 3;
$p2 = (int) $page - 2;
$p1 = (int) $page - 1;
if ($p4 > 0) { $page_range['p4'] = $p4; }
if ($p3 > 0) { $page_range['p3'] = $p3; }
if ($p2 > 0) { $page_range['p2'] = $p2; }
if ($p1 > 0) { $page_range['p1'] = $p1; }
$page_range['current'] = (int) $page;
if($max_page > 3) {
if (($prev - 2) < ($prev - 1)) { $prev_dots = true; }
} else {
$prev_dots = false;
}
} else {
$p2 = (int) $page - 2;
$p1 = (int) $page - 1;
$n1 = (int) $page + 1;
$n2 = (int) $page + 2;
if ($p2 > 0) { $page_range['p2'] = $p2; }
if ($p1 > 0) { $page_range['p1'] = $p1; }
$page_range['current'] = (int) $page;
if ($n1 > 0) { $page_range['n1'] = $n1; }
if ($n2 > 0) { $page_range['n2'] = $n2; }
if ($page == 3) {
if (isset($page_range['n2'])) {
if (($max_page - ($page_range['n2'])) >= $page_range['n2']) { $next_dots = true; }
}
} else {
if (($prev - 2) < ($prev - 1)) { $prev_dots = true; }
if (($next + 2) <= $max_page) { $next_dots = true; }
}
}
@endphp
@if ($prev_dots)
...
@endif
@if (isset($page_range['p4']))
{{ $page_range['p4'] }}
@endif
@if (isset($page_range['p3']))
{{ $page_range['p3'] }}
@endif
@if (isset($page_range['p2']))
{{ $page_range['p2'] }}
@endif
@if (isset($page_range['p1']))
{{ $page_range['p1'] }}
@endif
{{ $page }}
@if (isset($page_range['n1']))
{{ $page_range['n1'] }}
@endif
@if (isset($page_range['n2']))
{{ $page_range['n2'] }}
@endif
@if (isset($page_range['n3']))
{{ $page_range['n3'] }}
@endif
@if (isset($page_range['n4']))
{{ $page_range['n4'] }}
@endif
@if ($next_dots)
...
@endif