Merge branch 'js/add-e-submodule-fix'
[gitweb.git] / gitweb / gitweb.perl
index c81743b0a189eba2ecf54d90889399d55800f73f..9ee58114d946a4fb751590b7bd74d15d1894aef2 100755 (executable)
@@ -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 {
@@ -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
@@ -5161,11 +5163,18 @@ sub git_patchset_body {
 sub git_project_search_form {
        my ($searchtext, $search_use_regexp);
 
+       my $limit = '';
+       if ($project_filter) {
+               $limit = " in '$project_filter/'";
+       }
+
        print "<div class=\"projsearch\">\n";
        print $cgi->startform(-method => 'get', -action => $my_uri) .
-             $cgi->hidden(-name => 'a', -value => 'project_list') . "\n" .
-             $cgi->textfield(-name => 's', -value => $searchtext,
-                             -title => 'Search project by name and description',
+             $cgi->hidden(-name => 'a', -value => 'project_list')  . "\n";
+       print $cgi->hidden(-name => 'pf', -value => $project_filter). "\n"
+               if (defined $project_filter);
+       print $cgi->textfield(-name => 's', -value => $searchtext,
+                             -title => "Search project by name and description$limit",
                              -size => 60) . "\n" .
              "<span title=\"Extended regular expression\">" .
              $cgi->checkbox(-name => 'sr', -value => 1, -label => 're',
@@ -5173,8 +5182,9 @@ sub git_project_search_form {
              "</span>\n" .
              $cgi->submit(-name => 'btnS', -value => 'Search') .
              $cgi->end_form() . "\n" .
-             $cgi->a({-href => href(project => undef, searchtext => undef)},
-                     'List all projects') . "<br />\n";
+             $cgi->a({-href => href(project => undef, searchtext => undef,
+                                    project_filter => $project_filter)},
+                     esc_html("List all projects$limit")) . "<br />\n";
        print "</div>\n";
 }