gitweb: Add git_page_nav for later use
authorJakub Narebski <jnareb@gmail.com>
Sun, 30 Jul 2006 12:59:57 +0000 (14:59 +0200)
committerJunio C Hamano <junkio@cox.net>
Mon, 31 Jul 2006 01:38:17 +0000 (18:38 -0700)
Adds git_page_nav subroutine to factor out the generation of the
navigation bar. Based on Sven Verdoolaege code

Message-Id: <20050618113121.GA13122@pc117b.liacs.nl>
http://marc.theaimsgroup.com/?l=git&m=111909432415478&w=2

I tried for the refactored navbar generate the same result.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
gitweb/gitweb.cgi
index 98505551cd3e2f5fb5eaf516e86ce16be6084fa5..d0d3f3efb1fdb97a624a6175867fa5a33305298e 100755 (executable)
@@ -385,6 +385,40 @@ sub die_error {
        exit;
 }
 
+sub git_page_nav {
+       my ($current, $suppress, $head, $treehead, $treebase, $extra) = @_;
+       $extra = '' if !defined $extra; # pager or formats
+
+       my @navs = qw(summary shortlog log commit commitdiff tree);
+       if ($suppress) {
+               @navs = grep { $_ ne $suppress } @navs;
+       }
+
+       my %arg = map { $_, ''} @navs;
+       if (defined $head) {
+               for (qw(commit commitdiff)) {
+                       $arg{$_} = ";h=$head";
+               }
+               if ($current =~ m/^(tree | log | shortlog | commit | commitdiff | search)$/x) {
+                       for (qw(shortlog log)) {
+                               $arg{$_} = ";h=$head";
+                       }
+               }
+       }
+       $arg{tree} .= ";h=$treehead" if defined $treehead;
+       $arg{tree} .= ";hb=$treebase" if defined $treebase;
+
+       print "<div class=\"page_nav\">\n" .
+               (join " | ",
+                map { $_ eq $current
+                                        ? $_
+                                        : $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=$_$arg{$_}")}, "$_")
+                                }
+                @navs);
+       print "<br/>$extra<br/>\n" .
+             "</div>\n";
+}
+
 sub git_get_type {
        my $hash = shift;