admin/commits: page indication and navigation
authorMischa POSLAWSKY <perl@shiar.org>
Tue, 12 Dec 2017 20:09:11 +0000 (21:09 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Tue, 12 Dec 2017 21:05:14 +0000 (22:05 +0100)
admin/commits.php

index 932a5568510b21e4ca22445ec0700af47de824b7..7a97ad04f40b3e5b937ae929fd72d643b6489d39 100644 (file)
@@ -2,7 +2,12 @@
 $pagesize = 20;
 $gitcmd = "git log -n $pagesize --pretty='%at\t%an\t%s'";
 
+if ( $offset = intval(@$_GET['start']) ) {
+       $gitcmd .= " --skip=$offset";
+}
+
 if ( $log = popen($gitcmd, 'r') ) {
+       $lines = 0;
        print "<ul>\n";
        while ( $line = fgets($log) ) {
                list ($atime, $author, $message) = explode("\t", $line, 3);
@@ -10,7 +15,21 @@ if ( $log = popen($gitcmd, 'r') ) {
                printf('<li>%s <small class="date">%s • %s</small></li>'."\n",
                        $message, $author, strftime('%F %H:%M', $atime)
                );
+               $lines++;
        }
        print "</ul>\n\n";
        pclose($log);
+
+       $nav = [];
+       $nav[] = sprintf('Pagina %d', floor($offset / $pagesize) + 1);
+       if ($offset > 0) {
+               $nav[] = sprintf('<a href="?start=%d">%s</a>', 0, 'laatste');
+       }
+       if ($offset > $pagesize) {
+               $nav[] = sprintf('<a href="?start=%d">%s</a>', $offset - $pagesize, 'later');
+       }
+       if ($lines >= $pagesize) {
+               $nav[] = sprintf('<a href="?start=%d">%s</a>', $offset + $pagesize, 'eerder');
+       }
+       printf("<p>%s</p>\n\n", implode(' • ', $nav));
 }