From 0fe9792a9f194e68288c377810c33973d117923f Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 13 Dec 2013 08:12:47 -0500 Subject: [PATCH] Use multiple mappings for the git servlet instead of multiple instances --- src/main/java/com/gitblit/wicket/pages/BasePage.java | 51 ++++++++++++++++++++++++++++++++------------------- 1 files changed, 32 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/BasePage.java b/src/main/java/com/gitblit/wicket/pages/BasePage.java index cb9de9f..647a938 100644 --- a/src/main/java/com/gitblit/wicket/pages/BasePage.java +++ b/src/main/java/com/gitblit/wicket/pages/BasePage.java @@ -52,7 +52,6 @@ import com.gitblit.Constants.AccessRestrictionType; import com.gitblit.Constants.AuthorizationControl; import com.gitblit.Constants.FederationStrategy; -import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.models.ProjectModel; import com.gitblit.models.TeamModel; @@ -83,9 +82,19 @@ } private void customizeHeader() { - if (GitBlit.getBoolean(Keys.web.useResponsiveLayout, true)) { + if (app().settings().getBoolean(Keys.web.useResponsiveLayout, true)) { add(CSSPackageResource.getHeaderContribution("bootstrap/css/bootstrap-responsive.css")); } + } + + protected String getCanonicalUrl() { + return getCanonicalUrl(getClass(), getPageParameters()); + } + + protected String getCanonicalUrl(Class<? extends BasePage> clazz, PageParameters params) { + String relativeUrl = urlFor(clazz, params).toString(); + String canonicalUrl = RequestUtils.toAbsolutePath(relativeUrl); + return canonicalUrl; } protected String getLanguageCode() { @@ -111,7 +120,7 @@ @Override protected void onBeforeRender() { - if (GitBlit.isDebugMode()) { + if (app().isDebugMode()) { // strip Wicket tags in debug mode for jQuery DOM traversal Application.get().getMarkupSettings().setStripWicketTags(true); } @@ -120,7 +129,7 @@ @Override protected void onAfterRender() { - if (GitBlit.isDebugMode()) { + if (app().isDebugMode()) { // restore Wicket debug tags Application.get().getMarkupSettings().setStripWicketTags(false); } @@ -129,7 +138,10 @@ @Override protected void setHeaders(WebResponse response) { - int expires = GitBlit.getInteger(Keys.web.pageCacheExpires, 0); + // set canonical link as http header for SEO (issue-304) + // https://support.google.com/webmasters/answer/139394?hl=en + response.setHeader("Link", MessageFormat.format("<{0}>; rel=\"canonical\"", getCanonicalUrl())); + int expires = app().settings().getInteger(Keys.web.pageCacheExpires, 0); if (expires > 0) { // pages are personalized for the authenticated user so they must be // marked private to prohibit proxy servers from caching them @@ -151,10 +163,10 @@ CacheControl cacheControl = getClass().getAnnotation(CacheControl.class); switch (cacheControl.value()) { case ACTIVITY: - setLastModified(GitBlit.getLastActivityDate()); + setLastModified(app().getLastActivityDate()); break; case BOOT: - setLastModified(GitBlit.getBootDate()); + setLastModified(app().getBootDate()); break; case NONE: break; @@ -175,21 +187,21 @@ return; } - if (when.before(GitBlit.getBootDate())) { + if (when.before(app().getBootDate())) { // last-modified can not be before the Gitblit boot date // this helps ensure that pages are properly refreshed after a // server config change - when = GitBlit.getBootDate(); + when = app().getBootDate(); } - int expires = GitBlit.getInteger(Keys.web.pageCacheExpires, 0); + int expires = app().settings().getInteger(Keys.web.pageCacheExpires, 0); WebResponse response = (WebResponse) getResponse(); response.setLastModifiedTime(Time.valueOf(when)); response.setDateHeader("Expires", System.currentTimeMillis() + Duration.minutes(expires).getMilliseconds()); } protected void setupPage(String repositoryName, String pageName) { - String siteName = GitBlit.getString(Keys.web.siteName, Constants.NAME); + String siteName = app().settings().getString(Keys.web.siteName, Constants.NAME); if (StringUtils.isEmpty(siteName)) { siteName = Constants.NAME; } @@ -199,15 +211,16 @@ add(new Label("title", siteName)); } - ExternalLink rootLink = new ExternalLink("rootLink", urlFor(GitBlitWebApp.HOME_PAGE_CLASS, null).toString()); - WicketUtils.setHtmlTooltip(rootLink, GitBlit.getString(Keys.web.siteName, Constants.NAME)); + String rootLinkUrl = app().settings().getString(Keys.web.rootLink, urlFor(GitBlitWebApp.get().getHomePage(), null).toString()); + ExternalLink rootLink = new ExternalLink("rootLink", rootLinkUrl); + WicketUtils.setHtmlTooltip(rootLink, app().settings().getString(Keys.web.siteName, Constants.NAME)); add(rootLink); // Feedback panel for info, warning, and non-fatal error messages add(new FeedbackPanel("feedback")); add(new Label("gbVersion", "v" + Constants.getVersion())); - if (GitBlit.getBoolean(Keys.web.aggressiveHeapManagement, false)) { + if (app().settings().getBoolean(Keys.web.aggressiveHeapManagement, false)) { System.gc(); } } @@ -300,8 +313,8 @@ } protected TimeZone getTimeZone() { - return GitBlit.getBoolean(Keys.web.useClientTimezone, false) ? GitBlitWebSession.get() - .getTimezone() : GitBlit.getTimezone(); + return app().settings().getBoolean(Keys.web.useClientTimezone, false) ? GitBlitWebSession.get() + .getTimezone() : app().getTimezone(); } protected String getServerName() { @@ -312,7 +325,7 @@ protected List<ProjectModel> getProjectModels() { final UserModel user = GitBlitWebSession.get().getUser(); - List<ProjectModel> projects = GitBlit.self().getProjectModels(user, true); + List<ProjectModel> projects = app().projects().getProjectModels(user, true); return projects; } @@ -325,7 +338,7 @@ String regex = WicketUtils.getRegEx(params); String team = WicketUtils.getTeam(params); int daysBack = params.getInt("db", 0); - int maxDaysBack = GitBlit.getInteger(Keys.web.activityDurationMaximum, 30); + int maxDaysBack = app().settings().getInteger(Keys.web.activityDurationMaximum, 30); List<ProjectModel> availableModels = getProjectModels(); Set<ProjectModel> models = new HashSet<ProjectModel>(); @@ -349,7 +362,7 @@ // need TeamModels first List<TeamModel> teamModels = new ArrayList<TeamModel>(); for (String name : teams) { - TeamModel teamModel = GitBlit.self().getTeamModel(name); + TeamModel teamModel = app().users().getTeamModel(name); if (teamModel != null) { teamModels.add(teamModel); } -- Gitblit v1.9.1