This adds simple pagination (next and prev links), to project lists, analogous to what is done for commit history lists. --- gitweb/gitweb.perl | 26 ++++++++++++++++++++++++++ 1 files changed, 26 insertions(+), 0 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index d0687f4..135ca55 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -255,6 +255,9 @@ our %highlight_ext = ( map { $_ => 'xml' } qw(xhtml html htm), ); +# Set this to non-zero to enable project list pagination +our $projects_per_page = 0; + # You define site-wide feature defaults here; override them with # $GITWEB_CONFIG as necessary. our %feature = ( @@ -4613,9 +4616,19 @@ sub git_project_list_body { my @projects = fill_project_list_info($projlist, $check_forks); $order ||= $default_projects_order; + $page ||= 0; + if ($projects_per_page) { + $from = $page * $projects_per_page unless defined $from; + $to = $from + $projects_per_page - 1 unless defined $to; + } $from = 0 unless defined $from; $to = $#projects if (!defined $to || $#projects < $to); + my $prev_link = $cgi->a({-href => href(-replay=>1, page=>$page-1), + -accesskey => "p", -title => "Alt-p"}, "prev") if ($page > 0); + my $next_link = $cgi->a({-href => href(-replay=>1, page=>$page+1), + -accesskey => "n", -title => "Alt-n"}, "next") if ($#$projlist > $to); + my %order_info = ( project => { key => 'path', type => 'str' }, descr => { key => 'descr_long', type => 'str' }, @@ -4709,6 +4722,19 @@ sub git_project_list_body { print "<td colspan=\"5\">$extra</td>\n" . "</tr>\n"; } + + if ($prev_link or $next_link) { + print "<tr>\n"; + if ($check_forks) { + print "<td></td>\n"; + } + print "<td colspan=\"5\">"; + print $prev_link if $prev_link; + print " ⋅ " if $prev_link and $next_link; + print $next_link if $next_link; + print "</td>\n</tr>\n"; + } + print "</table>\n"; } -- 1.7.2.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html