From 3daba4304dba818d54eb9b74d8d35df5aab8fee5 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 22 Nov 2013 10:36:05 -0500 Subject: [PATCH] Add pull request linking in changelog to generated documentation --- src/main/java/com/gitblit/wicket/pages/BasePage.java | 60 +++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 37 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/BasePage.java b/src/main/java/com/gitblit/wicket/pages/BasePage.java index 2bab118..ec69a71 100644 --- a/src/main/java/com/gitblit/wicket/pages/BasePage.java +++ b/src/main/java/com/gitblit/wicket/pages/BasePage.java @@ -67,7 +67,7 @@ public abstract class BasePage extends SessionPage { private final Logger logger; - + private transient TimeUtils timeUtils; public BasePage() { @@ -81,24 +81,34 @@ logger = LoggerFactory.getLogger(getClass()); customizeHeader(); } - + private void customizeHeader() { if (GitBlit.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() { return GitBlitWebSession.get().getLocale().getLanguage(); } - + protected String getCountryCode() { return GitBlitWebSession.get().getLocale().getCountry().toLowerCase(); } - + protected TimeUtils getTimeUtils() { if (timeUtils == null) { - ResourceBundle bundle; + ResourceBundle bundle; try { bundle = ResourceBundle.getBundle("com.gitblit.wicket.GitBlitWebApp", GitBlitWebSession.get().getLocale()); } catch (Throwable t) { @@ -108,7 +118,7 @@ } return timeUtils; } - + @Override protected void onBeforeRender() { if (GitBlit.isDebugMode()) { @@ -126,9 +136,12 @@ } super.onAfterRender(); } - + @Override protected void setHeaders(WebResponse response) { + // 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 = GitBlit.getInteger(Keys.web.pageCacheExpires, 0); if (expires > 0) { // pages are personalized for the authenticated user so they must be @@ -140,11 +153,11 @@ super.setHeaders(response); } } - + /** * Sets the last-modified header date, if appropriate, for this page. The * date used is determined by the CacheControl annotation. - * + * */ protected void setLastModified() { if (getClass().isAnnotationPresent(CacheControl.class)) { @@ -164,24 +177,24 @@ } } } - + /** * Sets the last-modified header field and the expires field. - * + * * @param when */ protected final void setLastModified(Date when) { if (when == null) { return; } - + if (when.before(GitBlit.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(); } - + int expires = GitBlit.getInteger(Keys.web.pageCacheExpires, 0); WebResponse response = (WebResponse) getResponse(); response.setLastModifiedTime(Time.valueOf(when)); @@ -199,7 +212,8 @@ add(new Label("title", siteName)); } - ExternalLink rootLink = new ExternalLink("rootLink", urlFor(GitBlitWebApp.HOME_PAGE_CLASS, null).toString()); + String rootLinkUrl = GitBlit.getString(Keys.web.rootLink, urlFor(GitBlitWebApp.HOME_PAGE_CLASS, null).toString()); + ExternalLink rootLink = new ExternalLink("rootLink", rootLinkUrl); WicketUtils.setHtmlTooltip(rootLink, GitBlit.getString(Keys.web.siteName, Constants.NAME)); add(rootLink); @@ -232,7 +246,7 @@ } return map; } - + protected Map<AccessPermission, String> getAccessPermissions() { Map<AccessPermission, String> map = new LinkedHashMap<AccessPermission, String>(); for (AccessPermission type : AccessPermission.values()) { @@ -265,7 +279,7 @@ } return map; } - + protected Map<FederationStrategy, String> getFederationTypes() { Map<FederationStrategy, String> map = new LinkedHashMap<FederationStrategy, String>(); for (FederationStrategy type : FederationStrategy.values()) { @@ -283,7 +297,7 @@ } return map; } - + protected Map<AuthorizationControl, String> getAuthorizationControls() { Map<AuthorizationControl, String> map = new LinkedHashMap<AuthorizationControl, String>(); for (AuthorizationControl type : AuthorizationControl.values()) { @@ -309,13 +323,13 @@ HttpServletRequest req = servletWebRequest.getHttpServletRequest(); return req.getServerName(); } - + protected List<ProjectModel> getProjectModels() { final UserModel user = GitBlitWebSession.get().getUser(); List<ProjectModel> projects = GitBlit.self().getProjectModels(user, true); return projects; } - + protected List<ProjectModel> getProjects(PageParameters params) { if (params == null) { return getProjectModels(); @@ -400,7 +414,7 @@ public void warn(String message, Throwable t) { logger.warn(message, t); } - + public void error(String message, boolean redirect) { error(message, null, redirect ? getApplication().getHomePage() : null); } @@ -408,11 +422,11 @@ public void error(String message, Throwable t, boolean redirect) { error(message, t, getApplication().getHomePage()); } - + public void error(String message, Throwable t, Class<? extends Page> toPage) { error(message, t, toPage, null); } - + public void error(String message, Throwable t, Class<? extends Page> toPage, PageParameters params) { if (t == null) { logger.error(message + " for " + GitBlitWebSession.get().getUsername()); -- Gitblit v1.9.1