From bc10f9b3128f6d6986138914b3b53f5d974a2d09 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 11 Apr 2011 21:49:36 -0400
Subject: [PATCH] Eliminated most session usage.

---
 src/com/gitblit/wicket/GitBlitWebSession.java      |   36 ---------
 src/com/gitblit/wicket/panels/RefsPanel.java       |   17 +--
 src/com/gitblit/wicket/BasePage.java               |    6 +
 src/com/gitblit/wicket/resources/gitblit.css       |   23 +++--
 src/com/gitblit/wicket/panels/TagsPanel.java       |    6 -
 src/com/gitblit/wicket/panels/BasePanel.java       |   21 +++++
 gitblit.properties                                 |   16 +++
 src/com/gitblit/wicket/WicketUtils.java            |   12 +++
 src/com/gitblit/wicket/pages/TicGitTicketPage.java |    3 
 src/com/gitblit/wicket/pages/CommitPage.java       |    7 -
 src/com/gitblit/wicket/panels/PageLinksPanel.java  |    8 +
 src/com/gitblit/wicket/panels/BranchesPanel.java   |    6 -
 src/com/gitblit/wicket/panels/LogPanel.java        |    8 -
 src/com/gitblit/wicket/pages/SummaryPage.java      |   14 +--
 src/com/gitblit/wicket/pages/TagPage.java          |    5 
 15 files changed, 99 insertions(+), 89 deletions(-)

diff --git a/gitblit.properties b/gitblit.properties
index 839b914..b06adc2 100644
--- a/gitblit.properties
+++ b/gitblit.properties
@@ -56,14 +56,19 @@
 allowAdministration = true
 repositoriesMessage = Welcome to Git:Blit!<br>A quick and easy way to host your own Git repositories.<br>Built with <a href="http://eclipse.org/jgit">JGit</a>, <a href="http://wicket.apache.org">Wicket</a>, <a href="http://code.google.com/p/google-code-prettify/">google-code-prettify</a>, <a href="http://eclipse.org/jetty">Jetty</a>, <a href="http://www.slf4j.org">SLF4J</a>, <a href="http://logging.apache.org/log4j">Log4j</a>, and <a href="http://jcommander.org">JCommander</a>.
 
+# Use the client timezone when formatting dates.
+# This uses AJAX to determine the browser's timezone and enables Wicket 
+# session management for the connection.
+useClientTimezone = false
+
 # Date and Time formats
 timestampFormat = h:mm a
 
 datestampShortFormat = yyyy-MM-dd
 datestampLongFormat = EEEE, MMMM d, yyyy
 
-datetimestampShortFormat = yyyy-MM-dd h:mm a
-datetimestampLongFormat = EEEE, MMMM d, yyyy h:mm a
+datetimestampShortFormat = yyyy-MM-dd h:mm a z
+datetimestampLongFormat = EEEE, MMMM d, yyyy h:mm a z
 
 # Generates a line graph of repository activity over time on the Summary page.
 # This is a real-time graph so generation may be expensive. 
@@ -97,6 +102,13 @@
 # Example per-repository regex substitutions overrides global
 regex.myrepository.bug = \\b(Bug:)(\\s*[#]?|-){0,1}(\\d+)\\b!!!<a href="http://elsewhere/bug/$3">Bug-Id: $3</a>
 
+# Enable ticgit viewer for all repositories (checks for ticgit branch)
+ticgit.global = false
+
+# Enable ticgit viewer for specified repository (checks for ticgit branch)
+ticgit.myrepository = true
+ticgit.ticgit = true
+
 #
 # Jetty Settings
 #
diff --git a/src/com/gitblit/wicket/BasePage.java b/src/com/gitblit/wicket/BasePage.java
index d795c61..7a512d6 100644
--- a/src/com/gitblit/wicket/BasePage.java
+++ b/src/com/gitblit/wicket/BasePage.java
@@ -1,5 +1,7 @@
 package com.gitblit.wicket;
 
+import java.util.TimeZone;
+
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.wicket.PageParameters;
@@ -48,6 +50,10 @@
 		}
 	}
 	
+	protected TimeZone getTimeZone() {
+		return StoredSettings.getBoolean("useClientTimezone", false) ? GitBlitWebSession.get().getTimezone() : TimeZone.getDefault();
+	}
+	
 	protected String getServerName() {
 		ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest();
 		HttpServletRequest req = servletWebRequest.getHttpServletRequest();
diff --git a/src/com/gitblit/wicket/GitBlitWebSession.java b/src/com/gitblit/wicket/GitBlitWebSession.java
index 0a15466..038118e 100644
--- a/src/com/gitblit/wicket/GitBlitWebSession.java
+++ b/src/com/gitblit/wicket/GitBlitWebSession.java
@@ -1,17 +1,11 @@
 package com.gitblit.wicket;
 
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.TimeZone;
 
 import org.apache.wicket.Request;
 import org.apache.wicket.Session;
 import org.apache.wicket.protocol.http.WebSession;
 import org.apache.wicket.protocol.http.request.WebClientInfo;
-
-import com.gitblit.StoredSettings;
-
 
 public final class GitBlitWebSession extends WebSession {
 
@@ -36,36 +30,6 @@
 			timezone = TimeZone.getDefault();
 		}
 		return timezone;
-	}
-
-	public String formatTime(Date date) {
-		DateFormat df = new SimpleDateFormat(StoredSettings.getString("timestampFormat", "h:mm a"));
-		df.setTimeZone(getTimezone());
-		return df.format(date);
-	}
-
-	public String formatDate(Date date) {
-		DateFormat df = new SimpleDateFormat(StoredSettings.getString("datestampShortFormat", "MM/dd/yy"));
-		df.setTimeZone(getTimezone());
-		return df.format(date);
-	}
-
-	public String formatDateLong(Date date) {
-		DateFormat df = new SimpleDateFormat(StoredSettings.getString("datestampLongFormat", "EEEE, MMMM d, yyyy"));
-		df.setTimeZone(getTimezone());
-		return df.format(date);
-	}
-
-	public String formatDateTime(Date date) {
-		DateFormat df = new SimpleDateFormat(StoredSettings.getString("datetimestampShortFormat", "MM/dd/yy h:mm a"));
-		df.setTimeZone(getTimezone());
-		return df.format(date);
-	}
-
-	public String formatDateTimeLong(Date date) {
-		DateFormat df = new SimpleDateFormat(StoredSettings.getString("datetimestampLongFormat", "EEEE, MMMM d, yyyy h:mm a z"));
-		df.setTimeZone(getTimezone());
-		return df.format(date);
 	}
 
 	public static GitBlitWebSession get() {
diff --git a/src/com/gitblit/wicket/WicketUtils.java b/src/com/gitblit/wicket/WicketUtils.java
index 126c37d..3a5ab92 100644
--- a/src/com/gitblit/wicket/WicketUtils.java
+++ b/src/com/gitblit/wicket/WicketUtils.java
@@ -136,4 +136,16 @@
 		WicketUtils.setHtmlTitle(label, title);
 		return label;
 	}
+	
+	public static Label createTimestampLabel(String wicketId, Date date, TimeZone timeZone) {
+		DateFormat df = new SimpleDateFormat(StoredSettings.getString("datetimestampLongFormat", "EEEE, MMMM d, yyyy h:mm a z"));
+		if (timeZone != null) {
+			df.setTimeZone(timeZone);
+		}
+		String dateString = df.format(date);
+		String title = Utils.timeAgo(date);
+		Label label = new Label(wicketId, dateString);
+		WicketUtils.setHtmlTitle(label, title);
+		return label;
+	}
 }
diff --git a/src/com/gitblit/wicket/pages/CommitPage.java b/src/com/gitblit/wicket/pages/CommitPage.java
index 7de0345..a53e322 100644
--- a/src/com/gitblit/wicket/pages/CommitPage.java
+++ b/src/com/gitblit/wicket/pages/CommitPage.java
@@ -14,7 +14,6 @@
 import org.eclipse.jgit.revwalk.RevCommit;
 
 import com.gitblit.utils.JGitUtils;
-import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.RepositoryPage;
 import com.gitblit.wicket.WicketUtils;
@@ -51,12 +50,10 @@
 		addRefs(r, c);
 
 		add(new Label("commitAuthor", JGitUtils.getDisplayName(c.getAuthorIdent())));
-		String authorDate = GitBlitWebSession.get().formatDateTimeLong(c.getAuthorIdent().getWhen());
-		add(new Label("commitAuthorDate", authorDate));
+		add(WicketUtils.createTimestampLabel("commitAuthorDate", c.getAuthorIdent().getWhen(), getTimeZone()));
 
 		add(new Label("commitCommitter", JGitUtils.getDisplayName(c.getCommitterIdent())));
-		String comitterDate = GitBlitWebSession.get().formatDateTimeLong(c.getCommitterIdent().getWhen());
-		add(new Label("commitCommitterDate", comitterDate));
+		add(WicketUtils.createTimestampLabel("commitCommitterDate", c.getCommitterIdent().getWhen(), getTimeZone()));
 
 		add(new Label("commitId", c.getName()));
 
diff --git a/src/com/gitblit/wicket/pages/SummaryPage.java b/src/com/gitblit/wicket/pages/SummaryPage.java
index 273de57..1dafb52 100644
--- a/src/com/gitblit/wicket/pages/SummaryPage.java
+++ b/src/com/gitblit/wicket/pages/SummaryPage.java
@@ -18,8 +18,8 @@
 import com.gitblit.StoredSettings;
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.wicket.GitBlitWebApp;
-import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.RepositoryPage;
+import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.models.Metric;
 import com.gitblit.wicket.panels.BranchesPanel;
 import com.gitblit.wicket.panels.LogPanel;
@@ -51,16 +51,12 @@
 			numberOfCommits += m.count;
 		}
 
-		String owner = JGitUtils.getRepositoryOwner(r);
-		GitBlitWebSession session = GitBlitWebSession.get();
-		String lastchange = session.formatDateTimeLong(JGitUtils.getLastChange(r));
-		String cloneurl = GitBlitWebApp.get().getCloneUrl(repositoryName);
-
 		// repository description
 		add(new Label("repositoryDescription", description));
-		add(new Label("repositoryOwner", owner));
-		add(new Label("repositoryLastChange", lastchange));
-		add(new Label("repositoryCloneUrl", cloneurl));
+		add(new Label("repositoryOwner", JGitUtils.getRepositoryOwner(r)));
+		
+		add(WicketUtils.createTimestampLabel("repositoryLastChange", JGitUtils.getLastChange(r), getTimeZone()));
+		add(new Label("repositoryCloneUrl", GitBlitWebApp.get().getCloneUrl(repositoryName)));
 
 		add(new LogPanel("commitsPanel", repositoryName, null, r, numberCommits, 0));
 		add(new TagsPanel("tagsPanel", repositoryName, r, numberRefs));
diff --git a/src/com/gitblit/wicket/pages/TagPage.java b/src/com/gitblit/wicket/pages/TagPage.java
index 0f0d159..95be46c 100644
--- a/src/com/gitblit/wicket/pages/TagPage.java
+++ b/src/com/gitblit/wicket/pages/TagPage.java
@@ -6,9 +6,9 @@
 import org.eclipse.jgit.revwalk.RevCommit;
 
 import com.gitblit.utils.JGitUtils;
-import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.RepositoryPage;
+import com.gitblit.wicket.WicketUtils;
 
 
 public class TagPage extends RepositoryPage {
@@ -23,8 +23,7 @@
 
 		add(new LinkPanel("tagId", "list", c.getName(), CommitPage.class, newCommitParameter(c.getName())));
 		add(new Label("tagAuthor", JGitUtils.getDisplayName(c.getAuthorIdent())));
-		String authorDate = GitBlitWebSession.get().formatDateTimeLong(c.getAuthorIdent().getWhen());
-		add(new Label("tagDate", authorDate));
+		add(WicketUtils.createTimestampLabel("tagDate", c.getAuthorIdent().getWhen(), getTimeZone()));
 
 		addFullText("fullMessage", c.getFullMessage(), true);
 	}
diff --git a/src/com/gitblit/wicket/pages/TicGitTicketPage.java b/src/com/gitblit/wicket/pages/TicGitTicketPage.java
index 5cdc4a7..a27c8dd 100644
--- a/src/com/gitblit/wicket/pages/TicGitTicketPage.java
+++ b/src/com/gitblit/wicket/pages/TicGitTicketPage.java
@@ -27,8 +27,7 @@
 		add(new Label("ticketTitle", t.title));
 		add(new Label("ticketId", t.id));
 		add(new Label("ticketHandler", t.handler));
-		String openDate = GitBlitWebSession.get().formatDateTimeLong(t.date);
-		add(new Label("ticketOpenDate", openDate));
+		add(WicketUtils.createTimestampLabel("ticketOpendate", t.date, getTimeZone()));
 		Label stateLabel = new Label("ticketState", t.state);
 		WicketUtils.setTicketCssClass(stateLabel, t.state);
 		add(stateLabel);
diff --git a/src/com/gitblit/wicket/panels/BasePanel.java b/src/com/gitblit/wicket/panels/BasePanel.java
new file mode 100644
index 0000000..f81dfa9
--- /dev/null
+++ b/src/com/gitblit/wicket/panels/BasePanel.java
@@ -0,0 +1,21 @@
+package com.gitblit.wicket.panels;
+
+import java.util.TimeZone;
+
+import org.apache.wicket.markup.html.panel.Panel;
+
+import com.gitblit.StoredSettings;
+import com.gitblit.wicket.GitBlitWebSession;
+
+public abstract class BasePanel extends Panel {
+
+	private static final long serialVersionUID = 1L;
+
+	public BasePanel(String wicketId) {
+		super(wicketId);
+	}
+
+	protected TimeZone getTimeZone() {
+		return StoredSettings.getBoolean("useClientTimezone", false) ? GitBlitWebSession.get().getTimezone() : TimeZone.getDefault();
+	}
+}
diff --git a/src/com/gitblit/wicket/panels/BranchesPanel.java b/src/com/gitblit/wicket/panels/BranchesPanel.java
index d060b14..1c68b6f 100644
--- a/src/com/gitblit/wicket/panels/BranchesPanel.java
+++ b/src/com/gitblit/wicket/panels/BranchesPanel.java
@@ -6,7 +6,6 @@
 
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.data.DataView;
 import org.apache.wicket.markup.repeater.data.ListDataProvider;
@@ -15,7 +14,6 @@
 import org.eclipse.jgit.lib.Repository;
 
 import com.gitblit.utils.JGitUtils;
-import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.models.RefModel;
@@ -24,7 +22,7 @@
 import com.gitblit.wicket.pages.SummaryPage;
 import com.gitblit.wicket.pages.TreePage;
 
-public class BranchesPanel extends Panel {
+public class BranchesPanel extends BasePanel {
 
 	private static final long serialVersionUID = 1L;
 
@@ -59,7 +57,7 @@
 			public void populateItem(final Item<RefModel> item) {
 				final RefModel entry = item.getModelObject();
 
-				item.add(WicketUtils.createDateLabel("branchDate", entry.getDate(), GitBlitWebSession.get().getTimezone()));
+				item.add(WicketUtils.createDateLabel("branchDate", entry.getDate(), getTimeZone()));
 
 				item.add(new LinkPanel("branchName", "list name", WicketUtils.trimString(entry.getDisplayName(), 28), LogPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
 				
diff --git a/src/com/gitblit/wicket/panels/LogPanel.java b/src/com/gitblit/wicket/panels/LogPanel.java
index e496ed0..ccc46fd 100644
--- a/src/com/gitblit/wicket/panels/LogPanel.java
+++ b/src/com/gitblit/wicket/panels/LogPanel.java
@@ -6,7 +6,6 @@
 
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.data.DataView;
 import org.apache.wicket.markup.repeater.data.ListDataProvider;
@@ -17,7 +16,6 @@
 
 import com.gitblit.StoredSettings;
 import com.gitblit.utils.JGitUtils;
-import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.pages.CommitPage;
@@ -26,7 +24,7 @@
 import com.gitblit.wicket.pages.SummaryPage;
 import com.gitblit.wicket.pages.TreePage;
 
-public class LogPanel extends Panel {
+public class LogPanel extends BasePanel {
 
 	private static final long serialVersionUID = 1L;
 
@@ -37,7 +35,7 @@
 		if (itemsPerPage <= 1) {
 			itemsPerPage = 50;
 		}
-		
+
 		final Map<ObjectId, List<String>> allRefs = JGitUtils.getAllRefs(r);
 		List<RevCommit> commits;
 		if (pageResults) {
@@ -68,7 +66,7 @@
 				final RevCommit entry = item.getModelObject();
 				final Date date = JGitUtils.getCommitDate(entry);
 
-				item.add(WicketUtils.createDateLabel("commitDate", date, GitBlitWebSession.get().getTimezone()));
+				item.add(WicketUtils.createDateLabel("commitDate", date, getTimeZone()));
 
 				String author = entry.getAuthorIdent().getName();
 				item.add(WicketUtils.createAuthorLabel("commitAuthor", author));
diff --git a/src/com/gitblit/wicket/panels/PageLinksPanel.java b/src/com/gitblit/wicket/panels/PageLinksPanel.java
index 9c6298c..e2f9401 100644
--- a/src/com/gitblit/wicket/panels/PageLinksPanel.java
+++ b/src/com/gitblit/wicket/panels/PageLinksPanel.java
@@ -1,5 +1,6 @@
 package com.gitblit.wicket.panels;
 
+import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -14,6 +15,7 @@
 import org.apache.wicket.markup.repeater.data.ListDataProvider;
 import org.eclipse.jgit.lib.Repository;
 
+import com.gitblit.StoredSettings;
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.WicketUtils;
@@ -52,9 +54,13 @@
 		add(new BookmarkablePageLink<Void>("tags", TagsPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
 		add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newRepositoryParameter(repositoryName)));
 
+		// Get the repository ticgit setting
+		boolean checkTicgit = StoredSettings.getBoolean("ticgit.global", false);
+		checkTicgit |= StoredSettings.getBoolean(MessageFormat.format("ticgit.{0}", repositoryName), false);
+		
 		// Add dynamic repository extras
 		List<String> extras = new ArrayList<String>();
-		if (JGitUtils.getTicGitBranch(r) != null) {
+		if (checkTicgit && JGitUtils.getTicGitBranch(r) != null) {
 			extras.add("ticgit");
 		}
 
diff --git a/src/com/gitblit/wicket/panels/RefsPanel.java b/src/com/gitblit/wicket/panels/RefsPanel.java
index bfdf50c..9f92891 100644
--- a/src/com/gitblit/wicket/panels/RefsPanel.java
+++ b/src/com/gitblit/wicket/panels/RefsPanel.java
@@ -6,7 +6,6 @@
 import java.util.Map;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.data.DataView;
@@ -17,6 +16,7 @@
 
 import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.WicketUtils;
+import com.gitblit.wicket.pages.CommitPage;
 import com.gitblit.wicket.pages.LogPage;
 import com.gitblit.wicket.pages.TagPage;
 
@@ -32,7 +32,7 @@
 			refNames = new ArrayList<String>();
 		}
 		Collections.sort(refNames);
-		refNames.remove(Constants.HEAD);
+//		refNames.remove(Constants.HEAD);
 		
 		ListDataProvider<String> refsDp = new ListDataProvider<String>(refNames);
 		DataView<String> refsView = new DataView<String>("ref", refsDp) {
@@ -43,22 +43,19 @@
 				if (entry.startsWith(Constants.R_HEADS)) {
 					// local head
 					c = new LinkPanel("refName", null, entry.substring(Constants.R_HEADS.length()), LogPage.class, WicketUtils.newObjectParameter(repositoryName, entry));
-//					c = new Label("refName", entry.substring(Constants.R_HEADS.length()));
-					WicketUtils.setCssClass(c, "head");
+					WicketUtils.setCssClass(c, "headRef");
 				} else if (entry.startsWith(Constants.R_REMOTES)) {
 					// remote head
 					c = new LinkPanel("refName", null, entry.substring(Constants.R_REMOTES.length()), LogPage.class, WicketUtils.newObjectParameter(repositoryName, entry));
-//					c = new Label("refName", entry.substring(Constants.R_REMOTES.length()));
-					WicketUtils.setCssClass(c, "ref");
+					WicketUtils.setCssClass(c, "remoteRef");
 				} else if (entry.startsWith(Constants.R_TAGS)) {
 					// tag
-//					c = new BookmarkablePageLink<Void>("refName", TagPage.class, WicketUtils.newObjectParameter(repositoryName, entry));
 					c = new LinkPanel("refName", null, entry.substring(Constants.R_TAGS.length()), TagPage.class, WicketUtils.newObjectParameter(repositoryName, entry));
-					//c = new Label("refName", entry.substring(Constants.R_TAGS.length()));
-					WicketUtils.setCssClass(c, "tag");
+					WicketUtils.setCssClass(c, "tagRef");
 				} else {
 					// other
-					c = new Label("refName", entry);
+					c = new LinkPanel("refName", null, entry, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry));
+					WicketUtils.setCssClass(c, "otherRef");
 				}
 				WicketUtils.setHtmlTitle(c, entry);
 				item.add(c);
diff --git a/src/com/gitblit/wicket/panels/TagsPanel.java b/src/com/gitblit/wicket/panels/TagsPanel.java
index 454f9b2..3d8364c 100644
--- a/src/com/gitblit/wicket/panels/TagsPanel.java
+++ b/src/com/gitblit/wicket/panels/TagsPanel.java
@@ -4,7 +4,6 @@
 
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.data.DataView;
 import org.apache.wicket.markup.repeater.data.ListDataProvider;
@@ -12,7 +11,6 @@
 import org.eclipse.jgit.lib.Repository;
 
 import com.gitblit.utils.JGitUtils;
-import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.models.RefModel;
@@ -22,7 +20,7 @@
 import com.gitblit.wicket.pages.TagPage;
 import com.gitblit.wicket.pages.TagsPage;
 
-public class TagsPanel extends Panel {
+public class TagsPanel extends BasePanel {
 
 	private static final long serialVersionUID = 1L;
 
@@ -49,7 +47,7 @@
 			public void populateItem(final Item<RefModel> item) {
 				RefModel entry = item.getModelObject();
 
-				item.add(WicketUtils.createDateLabel("tagDate", entry.getDate(), GitBlitWebSession.get().getTimezone()));
+				item.add(WicketUtils.createDateLabel("tagDate", entry.getDate(), getTimeZone()));
 
 				item.add(new LinkPanel("tagName", "list name", entry.getDisplayName(), CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getCommitId().getName())));
 				String message;
diff --git a/src/com/gitblit/wicket/resources/gitblit.css b/src/com/gitblit/wicket/resources/gitblit.css
index 4587f78..c089560 100644
--- a/src/com/gitblit/wicket/resources/gitblit.css
+++ b/src/com/gitblit/wicket/resources/gitblit.css
@@ -409,38 +409,45 @@
 	text-align: right;
 }
 
-span .tag, span .head, span .ref {
+span .tagRef, span .headRef, span .remoteRef, span .otherRef {	
 	padding: 0px 4px;
+	margin-right:2px;
 	font-family: sans-serif;
+	font-size: 9px;
 	font-weight: normal;
 	border: 1px solid;
 	color: black;
 }
 
-span .tag a, span .head a, span .ref a {
+span .tagRef a span, span .headRef a span, span .remoteRef a span, span .otherRef a span {
+	font-size: 9px;
+}
+
+span .tagRef a, span .headRef a, span .remoteRef a, span .otherRef a {
 	text-decoration: none;
 	color: inherit;
 }
 
-span .tag a:hover, span .head a:hover, span .ref a:hover {
+span .tagRef a:hover, span .headRef a:hover, span .remoteRef a:hover, span .otherRef a:hover {
 	color: inherit;
 }
 
-span .tag a span, span .head a span, span .ref a span {
-	font-size: 9px;
+span .otherRef {
+	background-color: #ffaaff;
+	border-color: #ffccff #ff00ee #ff00ee #ffccff;
 }
 
-span .ref {
+span .remoteRef {
 	background-color: #aaaaff;
 	border-color: #ccccff #0033cc #0033cc #ccccff;
 }
 
-span .tag {
+span .tagRef {
 	background-color: #ffffaa;
 	border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
 }
 
-span .head {
+span .headRef {
 	background-color: #aaffaa;
 	border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
 }
\ No newline at end of file

--
Gitblit v1.9.1