gitweb: More per-view navigation bar links

Navigation bars in various views were empty or missed important items that
should have been there, e.g. getting a snapshot in tree view or log of
ancestry in commit view...

This feeble patch attempts to consolidate that.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Petr Baudis 2006-09-22 03:19:41 +02:00 коммит произвёл Junio C Hamano
Родитель 609ff267fb
Коммит cae1862a3b
1 изменённых файлов: 38 добавлений и 4 удалений

Просмотреть файл

@ -2441,6 +2441,9 @@ sub git_blame2 {
$cgi->a({-href => href(action=>"blob", hash=>$hash, hash_base=>$hash_base, file_name=>$file_name)}, $cgi->a({-href => href(action=>"blob", hash=>$hash, hash_base=>$hash_base, file_name=>$file_name)},
"blob") . "blob") .
" | " . " | " .
$cgi->a({-href => href(action=>"history", hash=>$hash, hash_base=>$hash_base, file_name=>$file_name)},
"history") .
" | " .
$cgi->a({-href => href(action=>"blame", file_name=>$file_name)}, $cgi->a({-href => href(action=>"blame", file_name=>$file_name)},
"head"); "head");
git_print_page_nav('','', $hash_base,$co{'tree'},$hash_base, $formats_nav); git_print_page_nav('','', $hash_base,$co{'tree'},$hash_base, $formats_nav);
@ -2507,6 +2510,9 @@ sub git_blame {
$cgi->a({-href => href(action=>"blob", hash=>$hash, hash_base=>$hash_base, file_name=>$file_name)}, $cgi->a({-href => href(action=>"blob", hash=>$hash, hash_base=>$hash_base, file_name=>$file_name)},
"blob") . "blob") .
" | " . " | " .
$cgi->a({-href => href(action=>"history", hash=>$hash, hash_base=>$hash_base, file_name=>$file_name)},
"history") .
" | " .
$cgi->a({-href => href(action=>"blame", file_name=>$file_name)}, $cgi->a({-href => href(action=>"blame", file_name=>$file_name)},
"head"); "head");
git_print_page_nav('','', $hash_base,$co{'tree'},$hash_base, $formats_nav); git_print_page_nav('','', $hash_base,$co{'tree'},$hash_base, $formats_nav);
@ -2682,6 +2688,10 @@ sub git_blob {
" | "; " | ";
} }
$formats_nav .= $formats_nav .=
$cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
hash=>$hash, file_name=>$file_name)},
"history") .
" | " .
$cgi->a({-href => href(action=>"blob_plain", $cgi->a({-href => href(action=>"blob_plain",
hash=>$hash, file_name=>$file_name)}, hash=>$hash, file_name=>$file_name)},
"plain") . "plain") .
@ -2717,6 +2727,9 @@ sub git_blob {
} }
sub git_tree { sub git_tree {
my ($ctype, $suffix, $command) = gitweb_check_feature('snapshot');
my $have_snapshot = (defined $ctype && defined $suffix);
if (!defined $hash) { if (!defined $hash) {
$hash = git_get_head_hash($project); $hash = git_get_head_hash($project);
if (defined $file_name) { if (defined $file_name) {
@ -2740,7 +2753,23 @@ sub git_tree {
my $base = ""; my $base = "";
my ($have_blame) = gitweb_check_feature('blame'); my ($have_blame) = gitweb_check_feature('blame');
if (defined $hash_base && (my %co = parse_commit($hash_base))) { if (defined $hash_base && (my %co = parse_commit($hash_base))) {
git_print_page_nav('tree','', $hash_base); my @views_nav = ();
if (defined $file_name) {
push @views_nav,
$cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
hash=>$hash, file_name=>$file_name)},
"history"),
$cgi->a({-href => href(action=>"tree",
hash_base=>"HEAD", file_name=>$file_name)},
"head");
}
if ($have_snapshot) {
# FIXME: Should be available when we have no hash base as well.
push @views_nav,
$cgi->a({-href => href(action=>"snapshot")},
"snapshot");
}
git_print_page_nav('tree','', $hash_base, undef, undef, join(' | ', @views_nav));
git_print_header_div('commit', esc_html($co{'title'}) . $ref, $hash_base); git_print_header_div('commit', esc_html($co{'title'}) . $ref, $hash_base);
} else { } else {
undef $hash_base; undef $hash_base;
@ -2885,17 +2914,22 @@ sub git_commit {
my ($ctype, $suffix, $command) = gitweb_check_feature('snapshot'); my ($ctype, $suffix, $command) = gitweb_check_feature('snapshot');
my $have_snapshot = (defined $ctype && defined $suffix); my $have_snapshot = (defined $ctype && defined $suffix);
my $formats_nav = ''; my @views_nav = ();
if (defined $file_name && defined $co{'parent'}) { if (defined $file_name && defined $co{'parent'}) {
my $parent = $co{'parent'}; my $parent = $co{'parent'};
$formats_nav .= push @views_nav,
$cgi->a({-href => href(action=>"blame", hash_parent=>$parent, file_name=>$file_name)}, $cgi->a({-href => href(action=>"blame", hash_parent=>$parent, file_name=>$file_name)},
"blame"); "blame");
} }
if (defined $co{'parent'}) {
push @views_nav,
$cgi->a({-href => href(action=>"shortlog", hash=>$hash)}, "shortlog"),
$cgi->a({-href => href(action=>"log", hash=>$hash)}, "log");
}
git_header_html(undef, $expires); git_header_html(undef, $expires);
git_print_page_nav('commit', defined $co{'parent'} ? '' : 'commitdiff', git_print_page_nav('commit', defined $co{'parent'} ? '' : 'commitdiff',
$hash, $co{'tree'}, $hash, $hash, $co{'tree'}, $hash,
$formats_nav); join (' | ', @views_nav));
if (defined $co{'parent'}) { if (defined $co{'parent'}) {
git_print_header_div('commitdiff', esc_html($co{'title'}) . $ref, $hash); git_print_header_div('commitdiff', esc_html($co{'title'}) . $ref, $hash);