aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2012-05-04 09:51:22 +0200
committerChristian Weiske <cweiske@cweiske.de>2012-05-04 09:51:22 +0200
commit925eaabf42cbbbe2ceac8e1bb95c11ec8be5f375 (patch)
treefdaa9c143ac3e10ac3d52d2957c75a0b06d77e74
parent35764754559c893569625c115707eb3bf73d1cfd (diff)
downloadphorkie-925eaabf42cbbbe2ceac8e1bb95c11ec8be5f375.tar.gz
phorkie-925eaabf42cbbbe2ceac8e1bb95c11ec8be5f375.zip
use a real pager now
-rw-r--r--data/templates/list.htm22
-rw-r--r--data/templates/pager.htm48
-rw-r--r--data/templates/search.htm2
-rw-r--r--src/phorkie/Html/Pager.php57
-rw-r--r--src/phorkie/Repositories.php4
-rw-r--r--www/list.php19
-rw-r--r--www/search.php16
-rw-r--r--www/www-header.php1
8 files changed, 119 insertions, 50 deletions
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 %}
</ul>
-<ul class="pager">
- {% if links.prev %}
- <li class="previous">
- <a href="{{links.prev}}">&larr; prev</a>
- </li>
- {% else %}
- <li class="previous disabled">
- <a href="#">&larr; prev</a>
- </li>
- {% endif %}
- {% if links.next %}
- <li class="next">
- <a href="{{links.next}}">next &rarr;</a>
- </li>
- {% else %}
- <li class="next disabled">
- <a href="#">next &rarr;</a>
- </li>
- {% endif %}
-</ul>
+ {% 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 %}
+<div class="pagination pagination-centered">
+<ul>
+ {% if links.first %}
+ <li>
+ {{links.first|raw}}
+ </li>
+ {% else %}
+ <li class="disabled"><a href="#">first</a></li>
+ {% endif %}
+ {% if links.back %}
+ <li>
+ {{links.back|raw}}
+ </li>
+ {% else %}
+ <li class="disabled"><a href="#">« prev</a></li>
+ {% endif %}
+
+ {% for page in links.pages %}
+ {% if page|length <= 3 %}
+ <li class="active">
+ <a href="#">{{page|raw}}</a>
+ </li>
+ {% else %}
+ <li>
+ {{page|raw}}
+ </li>
+ {% endif %}
+ {% endfor %}
+
+ {% if links.next %}
+ <li>
+ {{links.next|raw}}
+ </li>
+ {% else %}
+ <li class="disabled"><a href="#">next »</a></li>
+ {% endif %}
+ {% if links.last %}
+ <li>
+ {{links.last|raw}}
+ </li>
+ {% else %}
+ <li class="disabled"><a href="#">last</a></li>
+ {% endif %}
+</ul>
+</div>
+{% 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 %}
</ul>
- {{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 @@
+<?php
+namespace phorkie;
+
+class Html_Pager
+{
+ protected $pager;
+
+ /**
+ * @param integer $currentPage Current page, beginning with 1
+ */
+ public function __construct($itemCount, $perPage, $currentPage, $filename)
+ {
+ //fix non-static factory method error
+ error_reporting(error_reporting() & ~E_STRICT);
+ $this->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)
{