From 6bb3b233c8a73d4fe4e5024794029fdc75a9f1bb Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 14 Sep 2012 09:36:46 -0400
Subject: [PATCH] Expose ReceivePack to Groovy hooks (issue 125)
---
src/com/gitblit/wicket/pages/RootPage.java | 50 ++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 44 insertions(+), 6 deletions(-)
diff --git a/src/com/gitblit/wicket/pages/RootPage.java b/src/com/gitblit/wicket/pages/RootPage.java
index 636ed00..4858368 100644
--- a/src/com/gitblit/wicket/pages/RootPage.java
+++ b/src/com/gitblit/wicket/pages/RootPage.java
@@ -64,6 +64,7 @@
IModel<String> username = new Model<String>("");
IModel<String> password = new Model<String>("");
+ List<RepositoryModel> repositoryModels = new ArrayList<RepositoryModel>();
public RootPage() {
super();
@@ -177,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");
@@ -209,7 +213,7 @@
GitBlit.self().setCookie(response, user);
}
- if (!continueToOriginalDestination()) {
+ if (!session.continueRequest()) {
PageParameters params = getPageParameters();
if (params == null) {
// redirect to this page
@@ -223,6 +227,16 @@
}
}
}
+
+ protected List<RepositoryModel> getRepositoryModels() {
+ if (repositoryModels.isEmpty()) {
+ final UserModel user = GitBlitWebSession.get().getUser();
+ List<RepositoryModel> repositories = GitBlit.self().getRepositoryModels(user);
+ repositoryModels.addAll(repositories);
+ Collections.sort(repositoryModels);
+ }
+ return repositoryModels;
+ }
protected void addDropDownMenus(List<PageRegistration> pages) {
@@ -231,7 +245,7 @@
protected List<DropDownMenuItem> getRepositoryFilterItems(PageParameters params) {
final UserModel user = GitBlitWebSession.get().getUser();
Set<DropDownMenuItem> filters = new LinkedHashSet<DropDownMenuItem>();
- List<RepositoryModel> repositories = GitBlit.self().getRepositoryModels(user);
+ List<RepositoryModel> repositories = getRepositoryModels();
// accessible repositories by federation set
Map<String, AtomicInteger> setMap = new HashMap<String, AtomicInteger>();
@@ -307,19 +321,19 @@
}
protected List<RepositoryModel> getRepositories(PageParameters params) {
- final UserModel user = GitBlitWebSession.get().getUser();
if (params == null) {
- return GitBlit.self().getRepositoryModels(user);
+ return getRepositoryModels();
}
boolean hasParameter = false;
+ String projectName = WicketUtils.getProjectName(params);
String repositoryName = WicketUtils.getRepositoryName(params);
String set = WicketUtils.getSet(params);
String regex = WicketUtils.getRegEx(params);
String team = WicketUtils.getTeam(params);
int daysBack = params.getInt("db", 0);
- List<RepositoryModel> availableModels = GitBlit.self().getRepositoryModels(user);
+ List<RepositoryModel> availableModels = getRepositoryModels();
Set<RepositoryModel> models = new HashSet<RepositoryModel>();
if (!StringUtils.isEmpty(repositoryName)) {
@@ -329,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);
+ }
}
}
}
@@ -402,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