login/commits: nav widget for common pagination links
authorMischa POSLAWSKY <perl@shiar.org>
Sun, 6 Dec 2020 07:28:11 +0000 (08:28 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Sat, 19 Dec 2020 02:01:43 +0000 (03:01 +0100)
widget/login/commits.php
widget/nav.php [new file with mode: 0644]

index 72f897eee197cfce2bad6c5fbe549991e66251e2..c2d6449542afc46ee85571376385347927f7d271 100644 (file)
@@ -26,17 +26,9 @@ if ( $log = popen($gitcmd, 'r') ) {
        print "</ul>\n\n";
        pclose($log);
 
-       $navbase = $Page->handler == 'login/commits' ? '?' : '/login/commits?';
-       $nav = [];
-       $nav[] = sprintf('Pagina %d', ceil($offset / $pagesize) + 1);
-       if ($lines >= $pagesize) {
-               $nav[] = sprintf('<a href="%sstart=%d">%s</a>', $navbase, $offset + $pagesize, 'eerder');
+       $navoptions = ["start=$offset", "n=$pagesize", "total=$lines"];
+       if ($Page->handler != 'login/commits') {
+               $navoptions[] = 'link=login/commits';
        }
-       if ($offset > $pagesize) {
-               $nav[] = sprintf('<a href="%sstart=%d">%s</a>', $navbase, $offset - $pagesize, 'later');
-       }
-       if ($offset > 0) {
-               $nav[] = sprintf('<a href="%s">%s</a>', $navbase, 'laatste');
-       }
-       printf('<p class="nav">%s</p>'."\n\n", implode(' • ', $nav));
+       print $Page->widget('nav', $navoptions);
 }
diff --git a/widget/nav.php b/widget/nav.php
new file mode 100644 (file)
index 0000000..38b5714
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+$navbase = '?';
+if (isset($Page->place['link'])) {
+       $navbase = '/'.$Page->place['link'].'?';
+}
+
+$nav = [];
+$nav[] = sprintf('Pagina %d', ceil($Page->place['start'] / $Page->place['n']) + 1);
+if ($Page->place['total'] >= $Page->place['n']) {
+       $nav[] = sprintf('<a href="%sstart=%d">%s</a>', $navbase, $Page->place['start'] + $Page->place['n'], 'eerder');
+}
+if ($Page->place['start'] > $Page->place['n']) {
+       $nav[] = sprintf('<a href="%sstart=%d">%s</a>', $navbase, $Page->place['start'] - $Page->place['n'], 'later');
+}
+if ($Page->place['start'] > 0) {
+       $nav[] = sprintf('<a href="%s">%s</a>', $navbase, 'laatste');
+}
+printf('<p class="nav">%s</p>'."\n\n", implode(' • ', $nav));