From 357109c5a5518db5925f49a6700a87e7ed30ca14 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 28 Dec 2011 16:19:29 -0500
Subject: [PATCH] Unit testing. Documentation.
---
src/com/gitblit/wicket/pages/RootPage.java | 101 ++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 93 insertions(+), 8 deletions(-)
diff --git a/src/com/gitblit/wicket/pages/RootPage.java b/src/com/gitblit/wicket/pages/RootPage.java
index a907c73..ebb4d65 100644
--- a/src/com/gitblit/wicket/pages/RootPage.java
+++ b/src/com/gitblit/wicket/pages/RootPage.java
@@ -17,7 +17,13 @@
import java.text.MessageFormat;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Pattern;
import org.apache.wicket.PageParameters;
@@ -37,6 +43,7 @@
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.PageRegistration;
+import com.gitblit.wicket.PageRegistration.DropDownMenuItem;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.NavigationPanel;
@@ -64,14 +71,17 @@
@Override
protected void setupPage(String repositoryName, String pageName) {
- if (GitBlit.getBoolean(Keys.web.authenticateAdminPages, true)) {
- boolean allowAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, false);
+ boolean authenticateView = GitBlit.getBoolean(Keys.web.authenticateViewPages, false);
+ boolean authenticateAdmin = GitBlit.getBoolean(Keys.web.authenticateAdminPages, true);
+ boolean allowAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, true);
+
+ if (authenticateAdmin) {
showAdmin = allowAdmin && GitBlitWebSession.get().canAdmin();
// authentication requires state and session
setStatelessHint(false);
} else {
- showAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, false);
- if (GitBlit.getBoolean(Keys.web.authenticateViewPages, false)) {
+ showAdmin = allowAdmin;
+ if (authenticateView) {
// authentication requires state and session
setStatelessHint(false);
} else {
@@ -92,6 +102,11 @@
if (showAdmin || showRegistrations) {
pages.add(new PageRegistration("gb.federation", FederationPage.class));
}
+
+ if (!authenticateView || (authenticateView && GitBlitWebSession.get().isLoggedIn())) {
+ addDropDownMenus(pages);
+ }
+
NavigationPanel navPanel = new NavigationPanel("navPanel", getClass(), pages);
add(navPanel);
@@ -125,8 +140,8 @@
WicketUtils.setInputPlaceholder(pwField, getString("gb.password"));
loginForm.add(pwField);
add(loginForm);
- if (GitBlit.getBoolean(Keys.web.authenticateViewPages, true)
- || GitBlit.getBoolean(Keys.web.authenticateAdminPages, true)) {
+
+ if (authenticateView || authenticateAdmin) {
loginForm.setVisible(!GitBlitWebSession.get().isLoggedIn());
} else {
loginForm.setVisible(false);
@@ -165,6 +180,76 @@
setResponsePage(getApplication().getHomePage());
}
}
+ }
+
+ protected void addDropDownMenus(List<PageRegistration> pages) {
+
+ }
+
+ protected List<DropDownMenuItem> getFilterMenuItems() {
+ final UserModel user = GitBlitWebSession.get().getUser();
+ Set<DropDownMenuItem> filters = new LinkedHashSet<DropDownMenuItem>();
+ List<RepositoryModel> repositories = GitBlit.self().getRepositoryModels(user);
+
+ // accessible repositories by federation set
+ Map<String, AtomicInteger> setMap = new HashMap<String, AtomicInteger>();
+ for (RepositoryModel repository : repositories) {
+ for (String set : repository.federationSets) {
+ String key = set.toLowerCase();
+ if (setMap.containsKey(key)) {
+ setMap.get(key).incrementAndGet();
+ } else {
+ setMap.put(key, new AtomicInteger(1));
+ }
+ }
+ }
+ if (setMap.size() > 0) {
+ List<String> sets = new ArrayList<String>(setMap.keySet());
+ Collections.sort(sets);
+ for (String set : sets) {
+ filters.add(new DropDownMenuItem(MessageFormat.format("{0} ({1})", set,
+ setMap.get(set).get()), "set", set));
+ }
+ // divider
+ filters.add(new DropDownMenuItem());
+ }
+
+ // user's team memberships
+ if (user != null && user.teams.size() > 0) {
+ List<TeamModel> teams = new ArrayList<TeamModel>(user.teams);
+ Collections.sort(teams);
+ for (TeamModel team : teams) {
+ filters.add(new DropDownMenuItem(MessageFormat.format("{0} ({1})", team.name,
+ team.repositories.size()), "team", team.name));
+ }
+ // divider
+ filters.add(new DropDownMenuItem());
+ }
+
+ // custom filters
+ String customFilters = GitBlit.getString(Keys.web.customFilters, null);
+ if (!StringUtils.isEmpty(customFilters)) {
+ boolean addedExpression = false;
+ List<String> expressions = StringUtils.getStringsFromValue(customFilters, "!!!");
+ for (String expression : expressions) {
+ if (!StringUtils.isEmpty(expression)) {
+ addedExpression = true;
+ filters.add(new DropDownMenuItem(null, "x", expression));
+ }
+ }
+ // if we added any custom expressions, add a divider
+ if (addedExpression) {
+ filters.add(new DropDownMenuItem());
+ }
+ }
+
+ if (filters.size() > 0) {
+ // add All Repositories
+ filters.add(new DropDownMenuItem(MessageFormat.format("{0} ({1})",
+ getString("gb.tokenJurDescription"), repositories.size()), null, null));
+ }
+
+ return new ArrayList<DropDownMenuItem>(filters);
}
protected List<RepositoryModel> getRepositories(PageParameters params) {
@@ -220,7 +305,7 @@
} else if (!StringUtils.isEmpty(team)) {
// filter the repositories by the specified teams
List<String> teams = StringUtils.getStringsFromValue(team, ",");
-
+
// need TeamModels first
List<TeamModel> teamModels = new ArrayList<TeamModel>();
for (String name : teams) {
@@ -229,7 +314,7 @@
teamModels.add(model);
}
}
-
+
// brute-force our way through finding the matching models
List<RepositoryModel> matchingModels = new ArrayList<RepositoryModel>();
for (RepositoryModel repositoryModel : models) {
--
Gitblit v1.9.1