From 925eaabf42cbbbe2ceac8e1bb95c11ec8be5f375 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Fri, 4 May 2012 09:51:22 +0200 Subject: [PATCH] use a real pager now --- data/templates/list.htm | 22 ++------------ data/templates/pager.htm | 48 ++++++++++++++++++++++++++++++ data/templates/search.htm | 2 +- src/phorkie/Html/Pager.php | 57 ++++++++++++++++++++++++++++++++++++ src/phorkie/Repositories.php | 4 +-- www/list.php | 19 ++++-------- www/search.php | 16 ++-------- www/www-header.php | 1 + 8 files changed, 119 insertions(+), 50 deletions(-) create mode 100644 data/templates/pager.htm create mode 100644 src/phorkie/Html/Pager.php diff --git a/data/templates/list.htm b/data/templates/list.htm index b92e588..d0732ea 100644 --- a/data/templates/list.htm +++ b/data/templates/list.htm @@ -8,24 +8,6 @@ {% endfor %} - + {% include 'pager.htm' %} + {% endblock %} diff --git a/data/templates/pager.htm b/data/templates/pager.htm new file mode 100644 index 0000000..085a281 --- /dev/null +++ b/data/templates/pager.htm @@ -0,0 +1,48 @@ +{% set links = pager.getLinks() %} +{% if pager.numPages > 1 %} + +{% endif %} \ No newline at end of file diff --git a/data/templates/search.htm b/data/templates/search.htm index 39350c0..074b5e6 100644 --- a/data/templates/search.htm +++ b/data/templates/search.htm @@ -15,7 +15,7 @@ {% include 'repo-list.htm' %} {% endfor %} - {{pager.getLinks.all|raw}} + {% include 'pager.htm' %} {% endif %} {% endblock %} diff --git a/src/phorkie/Html/Pager.php b/src/phorkie/Html/Pager.php new file mode 100644 index 0000000..f5c8105 --- /dev/null +++ b/src/phorkie/Html/Pager.php @@ -0,0 +1,57 @@ +pager = \Pager::factory( + array( + 'mode' => 'Sliding', + 'perPage' => $perPage, + 'delta' => 2, + 'totalItems' => $itemCount, + 'currentPage' => $currentPage, + 'urlVar' => 'page', + 'append' => false, + 'path' => '/', + 'fileName' => $filename, + 'separator' => '###', + 'spacesBeforeSeparator' => 0, + 'spacesAfterSeparator' => 0, + 'curPageSpanPre' => '', + 'curPageSpanPost' => '', + 'firstPagePre' => '', + 'firstPageText' => 'first', + 'firstPagePost' => '', + 'lastPagePre' => '', + 'lastPageText' => 'last', + 'lastPagePost' => '', + 'prevImg' => '« prev', + 'nextImg' => 'next »', + ) + ); + } + + + public function getLinks() + { + $arLinks = $this->pager->getLinks(); + $arLinks['pages'] = explode('###', $arLinks['pages']); + return $arLinks; + } + + public function numPages() + { + return $this->pager->numPages(); + } +} + +?> diff --git a/src/phorkie/Repositories.php b/src/phorkie/Repositories.php index dc3387b..dc26a17 100644 --- a/src/phorkie/Repositories.php +++ b/src/phorkie/Repositories.php @@ -38,7 +38,7 @@ class Repositories * @param integer $page Page number, beginning with 0 * @param integer $perPage Number of repositories per page * - * @return array Array of Repositories + * @return array Array of Repositories first, number of repositories second */ public function getList($page = 0, $perPage = 10) { @@ -53,7 +53,7 @@ class Repositories $r->loadById(substr($oneDir, 0, -4)); $repos[] = $r; } - return $repos; + return array($repos, count($dirs)); } } diff --git a/www/list.php b/www/list.php index a75fda8..911f26d 100644 --- a/www/list.php +++ b/www/list.php @@ -11,28 +11,21 @@ if (isset($_GET['page'])) { if (!is_numeric($_GET['page'])) { throw new Exception_Input('List page is not numeric'); } - $page = (int)$_GET['page']; + $page = (int)$_GET['page'] - 1; } $perPage = 10; -$repos = $rs->getList($page, $perPage); +list($repos, $repoCount) = $rs->getList($page, $perPage); -$links = array('prev' => null, 'next' => null); -if ($page > 0) { - $links['prev'] = '/list/' . ($page - 1); - if ($page - 1 == 0) { - $links['prev'] = '/list'; - } -} -if (count($repos) && count($repos) == $perPage) { - $links['next'] = '/list/' . ($page + 1); -} +$pager = new Html_Pager( + $repoCount, $perPage, $page + 1, '/list/%d' +); render( 'list', array( 'repos' => $repos, - 'links' => $links, + 'pager' => $pager, ) ); ?> diff --git a/www/search.php b/www/search.php index 9461b0d..cb72c6a 100644 --- a/www/search.php +++ b/www/search.php @@ -26,21 +26,9 @@ $search = $db->getSearch(); $sres = $search->search($query, $page, $perPage); -//fix non-static factory method error -error_reporting(error_reporting() & ~E_STRICT); -$pager = \Pager::factory( - array( - 'mode' => 'Sliding', - 'perPage' => 10, - 'delta' => 2, - 'totalItems' => $sres->getResults(), - 'currentPage' => $page + 1, - 'urlVar' => 'page', - 'path' => '/', - 'fileName' => $sres->getLink($query), - ) +$pager = new Html_Pager( + $sres->getResults(), $perPage, $page + 1, $sres->getLink($query) ); - render( 'search', array( diff --git a/www/www-header.php b/www/www-header.php index f381872..c0b18d3 100644 --- a/www/www-header.php +++ b/www/www-header.php @@ -56,6 +56,7 @@ $twig = new \Twig_Environment( 'debug' => true ) ); +//$twig->addExtension(new \Twig_Extension_Debug()); function render($tplname, $vars) { -- 2.30.2