diff --git a/public_html/media/css/paginator.css b/public_html/media/css/paginator.css
index 140daa3a..b5c04441 100644
--- a/public_html/media/css/paginator.css
+++ b/public_html/media/css/paginator.css
@@ -10,12 +10,12 @@
.paginator li {
display: inline-block;
+ margin-right: 0.5em;
}
.paginator li a {
display: inline-block;
padding: 0.2em 0.5em;
- margin-right: 0.5em;
background: #eee;
border: 1px solid silver;
color: black;
diff --git a/src/Views/paginator.phtml b/src/Views/paginator.phtml
index ad35bae3..b4df0eed 100644
--- a/src/Views/paginator.phtml
+++ b/src/Views/paginator.phtml
@@ -1,60 +1,77 @@
context->transport->paginator->pageCount;
- $delta = 3;
- $pagesVisible = array_merge($pagesVisible, range($this->context->transport->paginator->page - $delta, $this->context->transport->paginator->page + $delta));
- $pagesVisible = array_filter($pagesVisible, function($x) { return $x >= 1 and $x <= $this->context->transport->paginator->pageCount; });
- $pagesVisible = array_unique($pagesVisible);
- sort($pagesVisible, SORT_NUMERIC);
+$page = $this->context->transport->paginator->page;
+$pageCount = $this->context->transport->paginator->pageCount;
- if (!function_exists('pageUrl'))
+$delta = 3;
+$pagesVisible = [1, $pageCount];
+$pagesVisible = array_merge($pagesVisible, range($page - $delta, $page + $delta));
+$pagesVisible = array_filter($pagesVisible, function($x) use ($pageCount) { return $x >= 1 and $x <= $pageCount; });
+$pagesVisible = array_unique($pagesVisible);
+sort($pagesVisible, SORT_NUMERIC);
+
+$finalPages = [$pagesVisible[0]];
+for ($i = 1; $i < count($pagesVisible); $i ++)
+{
+ $prevPage = $pagesVisible[$i - 1];
+ $subPage = $pagesVisible[$i];
+ if ($subPage - $prevPage == 2)
+ $finalPages []= $subPage - 1;
+ elseif ($subPage - $prevPage > 2)
+ $finalPages []= null;
+ $finalPages []= $subPage;
+}
+$pagesVisible = $finalPages;
+
+if (!function_exists('pageUrl'))
+{
+ function pageUrl($page)
{
- function pageUrl($page)
- {
- $context = \Chibi\Registry::getContext();
- $controller = $context->route->simpleControllerName;
- $action = $context->route->simpleActionName;
- $page = max(1, $page);
- $page = min($context->transport->paginator->pageCount, $page);
- $params = $context->route->arguments;
- $params['page'] = $page;
- return \Chibi\UrlHelper::route($controller, $action, $params);
- }
+ $context = \Chibi\Registry::getContext();
+ $controller = $context->route->simpleControllerName;
+ $action = $context->route->simpleActionName;
+ $page = max(1, min($context->transport->paginator->pageCount, $page));
+ $params = $context->route->arguments;
+ $params['page'] = $page;
+ return \Chibi\UrlHelper::route($controller, $action, $params);
}
+}
?>