From 856f3fc2a8365c141d1418d3cfff502be233c104 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 05 May 2014 11:17:14 -0400
Subject: [PATCH] Overhaul menu item classes and add AdminMenuExtension point
---
src/main/java/com/gitblit/wicket/GitBlitWebApp.java | 145 +++++++++++++++++++++++++++++++++++++-----------
1 files changed, 111 insertions(+), 34 deletions(-)
diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
index 1a46a1f..dc79af2 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
+++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java
@@ -28,10 +28,19 @@
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.protocol.http.WebApplication;
-import com.gitblit.GitBlit;
import com.gitblit.IStoredSettings;
import com.gitblit.Keys;
-import com.gitblit.utils.StringUtils;
+import com.gitblit.manager.IAuthenticationManager;
+import com.gitblit.manager.IFederationManager;
+import com.gitblit.manager.IGitblit;
+import com.gitblit.manager.INotificationManager;
+import com.gitblit.manager.IPluginManager;
+import com.gitblit.manager.IProjectManager;
+import com.gitblit.manager.IRepositoryManager;
+import com.gitblit.manager.IRuntimeManager;
+import com.gitblit.manager.IUserManager;
+import com.gitblit.tickets.ITicketService;
+import com.gitblit.transport.ssh.IPublicKeyManager;
import com.gitblit.wicket.pages.ActivityPage;
import com.gitblit.wicket.pages.BlamePage;
import com.gitblit.wicket.pages.BlobDiffPage;
@@ -42,28 +51,33 @@
import com.gitblit.wicket.pages.ComparePage;
import com.gitblit.wicket.pages.DocPage;
import com.gitblit.wicket.pages.DocsPage;
+import com.gitblit.wicket.pages.EditMilestonePage;
+import com.gitblit.wicket.pages.EditTicketPage;
+import com.gitblit.wicket.pages.ExportTicketPage;
import com.gitblit.wicket.pages.FederationRegistrationPage;
import com.gitblit.wicket.pages.ForkPage;
import com.gitblit.wicket.pages.ForksPage;
import com.gitblit.wicket.pages.GitSearchPage;
-import com.gitblit.wicket.pages.GravatarProfilePage;
import com.gitblit.wicket.pages.HistoryPage;
import com.gitblit.wicket.pages.LogPage;
import com.gitblit.wicket.pages.LogoutPage;
import com.gitblit.wicket.pages.LuceneSearchPage;
import com.gitblit.wicket.pages.MetricsPage;
import com.gitblit.wicket.pages.MyDashboardPage;
+import com.gitblit.wicket.pages.MyTicketsPage;
+import com.gitblit.wicket.pages.NewMilestonePage;
+import com.gitblit.wicket.pages.NewTicketPage;
import com.gitblit.wicket.pages.OverviewPage;
import com.gitblit.wicket.pages.PatchPage;
import com.gitblit.wicket.pages.ProjectPage;
import com.gitblit.wicket.pages.ProjectsPage;
-import com.gitblit.wicket.pages.RawPage;
import com.gitblit.wicket.pages.ReflogPage;
import com.gitblit.wicket.pages.RepositoriesPage;
import com.gitblit.wicket.pages.ReviewProposalPage;
import com.gitblit.wicket.pages.SummaryPage;
import com.gitblit.wicket.pages.TagPage;
import com.gitblit.wicket.pages.TagsPage;
+import com.gitblit.wicket.pages.TicketsPage;
import com.gitblit.wicket.pages.TreePage;
import com.gitblit.wicket.pages.UserPage;
import com.gitblit.wicket.pages.UsersPage;
@@ -74,13 +88,57 @@
private final Map<String, CacheControl> cacheablePages = new HashMap<String, CacheControl>();
- private IStoredSettings settings;
+ private final IStoredSettings settings;
+
+ private final IRuntimeManager runtimeManager;
+
+ private final IPluginManager pluginManager;
+
+ private final INotificationManager notificationManager;
+
+ private final IUserManager userManager;
+
+ private final IAuthenticationManager authenticationManager;
+
+ private final IPublicKeyManager publicKeyManager;
+
+ private final IRepositoryManager repositoryManager;
+
+ private final IProjectManager projectManager;
+
+ private final IFederationManager federationManager;
+
+ private final IGitblit gitblit;
+
+ public GitBlitWebApp(
+ IRuntimeManager runtimeManager,
+ IPluginManager pluginManager,
+ INotificationManager notificationManager,
+ IUserManager userManager,
+ IAuthenticationManager authenticationManager,
+ IPublicKeyManager publicKeyManager,
+ IRepositoryManager repositoryManager,
+ IProjectManager projectManager,
+ IFederationManager federationManager,
+ IGitblit gitblit) {
+
+ super();
+ this.settings = runtimeManager.getSettings();
+ this.runtimeManager = runtimeManager;
+ this.pluginManager = pluginManager;
+ this.notificationManager = notificationManager;
+ this.userManager = userManager;
+ this.authenticationManager = authenticationManager;
+ this.publicKeyManager = publicKeyManager;
+ this.repositoryManager = repositoryManager;
+ this.projectManager = projectManager;
+ this.federationManager = federationManager;
+ this.gitblit = gitblit;
+ }
@Override
public void init() {
super.init();
-
- settings = GitBlit.getSettings();
// Setup page authorization mechanism
boolean useAuthentication = settings.getBoolean(Keys.web.authenticateViewPages, false)
@@ -114,7 +172,6 @@
mount("/tag", TagPage.class, "r", "h");
mount("/tree", TreePage.class, "r", "h", "f");
mount("/blob", BlobPage.class, "r", "h", "f");
- mount("/raw", RawPage.class, "r", "h", "f");
mount("/blobdiff", BlobDiffPage.class, "r", "h", "f");
mount("/commitdiff", CommitDiffPage.class, "r", "h");
mount("/compare", ComparePage.class, "r", "h");
@@ -126,6 +183,15 @@
mount("/users", UsersPage.class);
mount("/logout", LogoutPage.class);
+ // setup ticket urls
+ mount("/tickets", TicketsPage.class, "r", "h");
+ mount("/tickets/new", NewTicketPage.class, "r");
+ mount("/tickets/edit", EditTicketPage.class, "r", "h");
+ mount("/tickets/export", ExportTicketPage.class, "r", "h");
+ mount("/milestones/new", NewMilestonePage.class, "r");
+ mount("/milestones/edit", EditMilestonePage.class, "r", "h");
+ mount("/mytickets", MyTicketsPage.class, "r", "h");
+
// setup the markup document urls
mount("/docs", DocsPage.class, "r");
mount("/doc", DocPage.class, "r", "h", "f");
@@ -135,14 +201,13 @@
mount("/registration", FederationRegistrationPage.class, "u", "n");
mount("/activity", ActivityPage.class, "r", "h");
- mount("/gravatar", GravatarProfilePage.class, "h");
mount("/lucene", LuceneSearchPage.class);
mount("/project", ProjectPage.class, "p");
mount("/projects", ProjectsPage.class);
mount("/user", UserPage.class, "user");
mount("/forks", ForksPage.class, "r");
mount("/fork", ForkPage.class, "r");
-
+
getMarkupSettings().setDefaultMarkupEncoding("UTF-8");
super.init();
}
@@ -180,9 +245,9 @@
public final Session newSession(Request request, Response response) {
GitBlitWebSession gitBlitWebSession = new GitBlitWebSession(request);
- String forcedLocale = settings.getString(Keys.web.forceDefaultLocale, null);
- if (!StringUtils.isEmpty(forcedLocale)) {
- gitBlitWebSession.setLocale(new Locale(forcedLocale));
+ Locale forcedLocale = runtime().getLocale();
+ if (forcedLocale != null) {
+ gitBlitWebSession.setLocale(forcedLocale);
}
return gitBlitWebSession;
}
@@ -197,7 +262,7 @@
* @return true if Gitblit is running in debug mode
*/
public boolean isDebugMode() {
- return GitBlit.isDebugMode();
+ return runtimeManager.isDebugMode();
}
/*
@@ -205,52 +270,64 @@
* step towards modularization across multiple commits.
*/
public Date getBootDate() {
- return GitBlit.getBootDate();
+ return runtimeManager.getBootDate();
}
public Date getLastActivityDate() {
- return GitBlit.getLastActivityDate();
+ return repositoryManager.getLastActivityDate();
}
- public GitBlit runtime() {
- return GitBlit.self();
+ public IRuntimeManager runtime() {
+ return runtimeManager;
}
- public GitBlit mail() {
- return GitBlit.self();
+ public IPluginManager plugins() {
+ return pluginManager;
}
- public GitBlit users() {
- return GitBlit.self();
+ public INotificationManager notifier() {
+ return notificationManager;
}
- public GitBlit session() {
- return GitBlit.self();
+ public IUserManager users() {
+ return userManager;
}
- public GitBlit repositories() {
- return GitBlit.self();
+ public IAuthenticationManager authentication() {
+ return authenticationManager;
}
- public GitBlit projects() {
- return GitBlit.self();
+ public IPublicKeyManager keys() {
+ return publicKeyManager;
}
- public GitBlit federation() {
- return GitBlit.self();
+ public IRepositoryManager repositories() {
+ return repositoryManager;
}
- public GitBlit gitblit() {
- return GitBlit.self();
+ public IProjectManager projects() {
+ return projectManager;
+ }
+
+ public IFederationManager federation() {
+ return federationManager;
+ }
+
+ public IGitblit gitblit() {
+ return gitblit;
+ }
+
+ public ITicketService tickets() {
+ return gitblit.getTicketService();
}
public TimeZone getTimezone() {
- return GitBlit.getTimezone();
+ return runtimeManager.getTimezone();
}
@Override
public final String getConfigurationType() {
- if (isDebugMode()) {
+ if (runtimeManager.isDebugMode()) {
return Application.DEVELOPMENT;
}
return Application.DEPLOYMENT;
--
Gitblit v1.9.1