From e131717b489b5527e2b9853eaae8ad71ca6ea748 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 14 Nov 2013 18:16:57 -0500
Subject: [PATCH] Display common repository documents as tabs on the docs page
---
src/main/java/com/gitblit/wicket/pages/BasePage.java | 64 ++++++++++++++++++++-----------
1 files changed, 41 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 c9e11b0..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();
@@ -325,6 +339,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);
List<ProjectModel> availableModels = getProjectModels();
Set<ProjectModel> models = new HashSet<ProjectModel>();
@@ -372,6 +387,9 @@
// time-filter the list
if (daysBack > 0) {
+ if (maxDaysBack > 0 && daysBack > maxDaysBack) {
+ daysBack = maxDaysBack;
+ }
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
@@ -396,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);
}
@@ -404,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