login/pass: error messages below page title
[minimedit.git] / widget / login / commits.php
index b86b6c5f8d76f2034fe722070916efd047290f47..2060a33158775b434ce2003a4e542769114334bd 100644 (file)
@@ -4,8 +4,9 @@ if (!function_exists('popen')) {
        return;
 }
 
-$pagesize = intval(@$Place['n'] ?: @$_GET['n']) ?: 20;
-$gitcmd = "git log -n $pagesize --pretty='%at\t%an\t%s'";
+$baseurl = 'login/commits';
+$pagesize = intval(@$Page->place['n'] ?: @$_GET['n']) ?: 20;
+$gitcmd = "git log -n $pagesize --pretty='%h\t%at\t%an\t%s'";
 
 if ( $offset = intval(@$_GET['start']) ) {
        $gitcmd .= " --skip=$offset";
@@ -15,27 +16,24 @@ if ( $log = popen($gitcmd, 'r') ) {
        $lines = 0;
        print "<ul>\n";
        while ( $line = fgets($log) ) {
-               list ($atime, $author, $message) = explode("\t", $line, 3);
+               list ($id, $atime, $author, $message) = explode("\t", $line, 4);
                list ($author) = explode(' ', $author); # first name only
-               printf('<li>%s <small class="date">%s • %s</small></li>'."\n",
-                       $message, $author, strftime('%F %H:%M', $atime)
+               $html = htmlspecialchars(rtrim($message));
+               $html .= sprintf(' <small class="date">%s • %s</small>',
+                       htmlspecialchars($author), strftime('%F %H:%M', $atime)
                );
+               $html = sprintf('<a href="%s">%s</a>',
+                       "/$baseurl/$id", $html
+               );
+               print "<li>$html</li>\n";
                $lines++;
        }
        print "</ul>\n\n";
        pclose($log);
 
-       $navbase = $Page == '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');
-       }
-       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));
+       $limit = $offset + $lines + 1; # assume one more
+       print $Page->widget('nav', [
+               'start' => $offset, 'n' => $pagesize, 'total' => $limit,
+               'link' => $Page->link == $baseurl ? NULL : $baseurl,
+       ]);
 }