Do not return 403 when clicking on Gitweb breadcrumb

A message "Forbidden" was displayed when clicking on any part of the
breadcrumb trail displayed at the top of Gitweb pages. That happened for
projects with parent folders because browsing parent folders is not
supported by Gerrit.

Now when the user clicks on the parent folder, redirect to Gerrit projects
list screen with the parent folder path as the filter.

Change-Id: I86dfb3f29d8da6ee02efc95470673fe70a1f2d3e
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java
index f593caca..8f0a202 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java
@@ -29,6 +29,7 @@
 
 package com.google.gerrit.httpd.gitweb;
 
+import com.google.gerrit.common.PageLinks;
 import com.google.gerrit.common.data.GerritConfig;
 import com.google.gerrit.extensions.restapi.Url;
 import com.google.gerrit.httpd.GitWebConfig;
@@ -79,6 +80,8 @@
   private static final Logger log =
       LoggerFactory.getLogger(GitWebServlet.class);
 
+  private static final String PROJECT_LIST_ACTION = "project_list";
+
   private final Set<String> deniedActions;
   private final int bufferSize = 8192;
   private final File gitwebCgi;
@@ -119,7 +122,6 @@
 
     deniedActions.add("forks");
     deniedActions.add("opml");
-    deniedActions.add("project_list");
     deniedActions.add("project_index");
 
     _env = new EnvList();
@@ -363,6 +365,12 @@
       return;
     }
 
+    if (params.get("a").equals(PROJECT_LIST_ACTION)) {
+      rsp.sendRedirect(req.getContextPath() + "/#" + PageLinks.ADMIN_PROJECTS
+          + "?filter=" + Url.encode(params.get("pf") + "/"));
+      return;
+    }
+
     String name = params.get("p");
     if (name == null) {
       rsp.sendError(HttpServletResponse.SC_NOT_FOUND);