package com.gitblit.wicket; import java.util.Date; import javax.servlet.http.HttpServletRequest; import org.apache.wicket.Component; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.protocol.http.servlet.ServletWebRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.gitblit.Constants; import com.gitblit.StoredSettings; import com.gitblit.utils.Utils; import com.gitblit.wicket.pages.SummaryPage; public abstract class BasePage extends WebPage { Logger logger = LoggerFactory.getLogger(BasePage.class); public BasePage() { super(); } public BasePage(PageParameters params) { super(params); } protected void setupPage(String repositoryName, String pageName) { if (repositoryName != null && repositoryName.trim().length() > 0) { add(new Label("title", getServerName() + " - " + repositoryName)); } else { add(new Label("title", getServerName())); } // header add(new Label("siteName", StoredSettings.getString("siteName", Constants.NAME))); add(new LinkPanel("repositoryName", null, repositoryName, SummaryPage.class, new PageParameters("p=" + repositoryName))); add(new Label("pageName", pageName)); // footer add(new Label("footerText", "")); add(new Label("gbVersion", "v" + Constants.VERSION)); if (StoredSettings.getBoolean("aggressiveHeapManagement", false)) { System.gc(); } } protected String getServerName() { ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest(); HttpServletRequest req = servletWebRequest.getHttpServletRequest(); return req.getServerName(); } protected Label createAuthorLabel(String wicketId, String author) { Label label = new Label(wicketId, author); WicketUtils.setHtmlTitle(label, author); return label; } protected Label createDateLabel(String wicketId, Date date) { Label label = new Label(wicketId, GitBlitWebSession.get().formatDate(date)); WicketUtils.setCssClass(label, Utils.timeAgoCss(date)); WicketUtils.setHtmlTitle(label, Utils.timeAgo(date)); return label; } protected Label createShortlogDateLabel(String wicketId, Date date) { String dateString = GitBlitWebSession.get().formatDate(date); String title = Utils.timeAgo(date); if ((System.currentTimeMillis() - date.getTime()) < 10 * 24 * 60 * 60 * 1000l) { dateString = title; title = GitBlitWebSession.get().formatDate(date); } Label label = new Label(wicketId, dateString); WicketUtils.setCssClass(label, Utils.timeAgoCss(date)); WicketUtils.setHtmlTitle(label, title); return label; } protected void setAlternatingBackground(Component c, int i) { String clazz = i % 2 == 0 ? "dark" : "light"; WicketUtils.setCssClass(c, clazz); } protected String trimShortLog(String string) { return trimString(string, 60); } protected String trimString(String value, int max) { if (value.length() <= max) { return value; } return value.substring(0, max - 3) + "..."; } public void error(String message, Throwable t) { super.error(message); logger.error(message, t); } }