From eb7b883648361c921af2aede387bebade267f90b Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 23 Dec 2011 17:45:33 -0500
Subject: [PATCH] CSS styling for dropdown menus
---
src/com/gitblit/wicket/pages/RootPage.java | 74 +++++++++++++++++++++++++++++++++----
1 files changed, 66 insertions(+), 8 deletions(-)
diff --git a/src/com/gitblit/wicket/pages/RootPage.java b/src/com/gitblit/wicket/pages/RootPage.java
index a907c73..0278470 100644
--- a/src/com/gitblit/wicket/pages/RootPage.java
+++ b/src/com/gitblit/wicket/pages/RootPage.java
@@ -17,7 +17,9 @@
import java.text.MessageFormat;
import java.util.ArrayList;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Set;
import java.util.regex.Pattern;
import org.apache.wicket.PageParameters;
@@ -37,6 +39,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 +67,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 +98,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 +136,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 +176,53 @@
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>();
+
+ // accessible repositories by federation set
+ for (RepositoryModel repository : GitBlit.self().getRepositoryModels(user)) {
+ for (String set : repository.federationSets) {
+ filters.add(new DropDownMenuItem(set, "set", set));
+ }
+ }
+ if (filters.size() > 0) {
+ // divider
+ filters.add(new DropDownMenuItem());
+ }
+
+ // user's team memberships
+ if (user != null && user.teams.size() > 0) {
+ for (TeamModel team : user.teams) {
+ filters.add(new DropDownMenuItem(team.name, "team", team.name));
+ }
+ // divider
+ filters.add(new DropDownMenuItem());
+ }
+
+ // custom filters
+ String customFilters = GitBlit.getString(Keys.web.customFilters, null);
+ if (!StringUtils.isEmpty(customFilters)) {
+ List<String> expressions = StringUtils.getStringsFromValue(customFilters, "!!!");
+ for (String expression : expressions) {
+ filters.add(new DropDownMenuItem(null, "x", expression));
+ }
+ }
+
+ if (filters.size() > 0) {
+ // if we have any filters, add the divider
+ filters.add(new DropDownMenuItem());
+ // add All Repositories
+ filters.add(new DropDownMenuItem("All Repositories", null, null));
+ }
+
+ return new ArrayList<DropDownMenuItem>(filters);
}
protected List<RepositoryModel> getRepositories(PageParameters params) {
@@ -220,7 +278,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 +287,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