From: Junio C Hamano Date: Tue, 14 Feb 2012 20:57:17 +0000 (-0800) Subject: Merge branch 'bl/gitweb-project-filter' X-Git-Tag: v1.7.10-rc0~84 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/a49060324a5470f1722a24efebae81c0e6ff042a?ds=inline;hp=-c Merge branch 'bl/gitweb-project-filter' * bl/gitweb-project-filter: gitweb: Harden and improve $project_filter page title --- a49060324a5470f1722a24efebae81c0e6ff042a diff --combined gitweb/gitweb.perl index 87a95e2769,877193f282..3fc7380a5e --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@@ -52,7 -52,7 +52,7 @@@ sub evaluate_uri # as base URL. # Therefore, if we needed to strip PATH_INFO, then we know that we have # to build the base URL ourselves: - our $path_info = $ENV{"PATH_INFO"}; + our $path_info = decode_utf8($ENV{"PATH_INFO"}); if ($path_info) { if ($my_url =~ s,\Q$path_info\E$,, && $my_uri =~ s,\Q$path_info\E$,, && @@@ -817,9 -817,9 +817,9 @@@ sub evaluate_query_params while (my ($name, $symbol) = each %cgi_param_mapping) { if ($symbol eq 'opt') { - $input_params{$name} = [ $cgi->param($symbol) ]; + $input_params{$name} = [ map { decode_utf8($_) } $cgi->param($symbol) ]; } else { - $input_params{$name} = $cgi->param($symbol); + $input_params{$name} = decode_utf8($cgi->param($symbol)); } } } @@@ -1131,10 -1131,8 +1131,10 @@@ sub dispatch if (!defined $action) { if (defined $hash) { $action = git_get_type($hash); + $action or die_error(404, "Object does not exist"); } elsif (defined $hash_base && defined $file_name) { $action = git_get_type("$hash_base:$file_name"); + $action or die_error(404, "File or directory does not exist"); } elsif (defined $project) { $action = 'summary'; } else { @@@ -2401,7 -2399,7 +2401,7 @@@ sub get_feed_info return unless (defined $project); # some views should link to OPML, or to generic project feed, # or don't have specific feed yet (so they should use generic) - return if ($action =~ /^(?:tags|heads|forks|tag|search)$/x); + return if (!$action || $action =~ /^(?:tags|heads|forks|tag|search)$/x); my $branch; # branches refs uses 'refs/heads/' prefix (fullname) to differentiate @@@ -2775,7 -2773,7 +2775,7 @@@ sub git_populate_project_tagcloud } my $cloud; - my $matched = $cgi->param('by_tag'); + my $matched = $input_params{'ctag'}; if (eval { require HTML::TagCloud; 1; }) { $cloud = HTML::TagCloud->new; foreach my $ctag (sort keys %ctags_lc) { @@@ -3744,7 -3742,7 +3744,7 @@@ sub get_page_title unless (defined $project) { if (defined $project_filter) { - $title .= " - " . to_utf8($project_filter); + $title .= " - projects in '" . esc_path($project_filter) . "'"; } return $title; } @@@ -3906,7 -3904,7 +3906,7 @@@ sub print_search_form -values => ['commit', 'grep', 'author', 'committer', 'pickaxe']) . $cgi->sup($cgi->a({-href => href(action=>"search_help")}, "?")) . " search:\n", - $cgi->textfield(-name => "s", -value => $searchtext) . "\n" . + $cgi->textfield(-name => "s", -value => $searchtext, -override => 1) . "\n" . "" . $cgi->checkbox(-name => 'sr', -value => 1, -label => 're', -checked => $search_use_regexp) . @@@ -5345,7 -5343,7 +5345,7 @@@ sub git_project_list_body my $check_forks = gitweb_check_feature('forks'); my $show_ctags = gitweb_check_feature('ctags'); - my $tagfilter = $show_ctags ? $cgi->param('by_tag') : undef; + my $tagfilter = $show_ctags ? $input_params{'ctag'} : undef; $check_forks = undef if ($tagfilter || $searchtext); @@@ -6261,7 -6259,7 +6261,7 @@@ sub git_tag sub git_blame_common { my $format = shift || 'porcelain'; - if ($format eq 'porcelain' && $cgi->param('js')) { + if ($format eq 'porcelain' && $input_params{'javascript'}) { $format = 'incremental'; $action = 'blame_incremental'; # for page title etc }