From 13a3f5bc3e2d25fc76850f86070dc34efe60d77a Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 07 Sep 2012 22:06:15 -0400
Subject: [PATCH] Draft project pages, project metadata, and RSS feeds

---
 src/com/gitblit/wicket/pages/RootPage.java |   31 ++++++++++++++++++++++++++++++-
 1 files changed, 30 insertions(+), 1 deletions(-)

diff --git a/src/com/gitblit/wicket/pages/RootPage.java b/src/com/gitblit/wicket/pages/RootPage.java
index 40f7aec..4858368 100644
--- a/src/com/gitblit/wicket/pages/RootPage.java
+++ b/src/com/gitblit/wicket/pages/RootPage.java
@@ -178,6 +178,9 @@
 			PageParameters pp = getPageParameters();
 			if (pp != null) {
 				PageParameters params = new PageParameters(pp);
+				// remove named project parameter
+				params.remove("p");
+
 				// remove named repository parameter
 				params.remove("r");
 
@@ -230,6 +233,7 @@
 			final UserModel user = GitBlitWebSession.get().getUser();
 			List<RepositoryModel> repositories = GitBlit.self().getRepositoryModels(user);
 			repositoryModels.addAll(repositories);
+			Collections.sort(repositoryModels);
 		}
 		return repositoryModels;
 	}
@@ -322,6 +326,7 @@
 		}
 
 		boolean hasParameter = false;
+		String projectName = WicketUtils.getProjectName(params);
 		String repositoryName = WicketUtils.getRepositoryName(params);
 		String set = WicketUtils.getSet(params);
 		String regex = WicketUtils.getRegEx(params);
@@ -338,6 +343,27 @@
 				if (model.name.equalsIgnoreCase(repositoryName)) {
 					models.add(model);
 					break;
+				}
+			}
+		}
+
+		if (!StringUtils.isEmpty(projectName)) {
+			// try named project
+			hasParameter = true;			
+			if (projectName.equalsIgnoreCase(GitBlit.getString(Keys.web.repositoryRootGroupName, "main"))) {
+				// root project/group
+				for (RepositoryModel model : availableModels) {
+					if (model.name.indexOf('/') == -1) {
+						models.add(model);
+					}
+				}
+			} else {
+				// named project/group
+				String group = projectName.toLowerCase() + "/";
+				for (RepositoryModel model : availableModels) {
+					if (model.name.toLowerCase().startsWith(group)) {
+						models.add(model);
+					}
 				}
 			}
 		}
@@ -411,6 +437,9 @@
 			}
 			models = timeFiltered;
 		}
-		return new ArrayList<RepositoryModel>(models);
+		
+		List<RepositoryModel> list = new ArrayList<RepositoryModel>(models);
+		Collections.sort(list);
+		return list;
 	}
 }

--
Gitblit v1.9.1