From 7d35e227475bb4a6ba185788cc663e38822c15f8 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 11 Apr 2011 17:42:58 -0400
Subject: [PATCH] Ref links.

---
 src/com/gitblit/wicket/pages/LogPage.java          |    2 
 gitblit.properties                                 |    2 
 src/com/gitblit/wicket/WicketUtils.java            |   16 ++++++++
 src/com/gitblit/wicket/pages/TicGitTicketPage.java |    2 
 src/com/gitblit/wicket/RepositoryPage.java         |    6 +-
 src/com/gitblit/wicket/pages/TreePage.java         |    2 
 src/com/gitblit/wicket/pages/DiffPage.java         |    3 +
 src/com/gitblit/wicket/panels/RefsPanel.java       |   25 +++++++-----
 src/com/gitblit/wicket/panels/LogPanel.java        |    4 +-
 src/com/gitblit/wicket/pages/BlobPage.java         |    2 
 src/com/gitblit/wicket/panels/RefsPanel.html       |    2 
 src/com/gitblit/wicket/resources/gitblit.css       |   21 ++++------
 12 files changed, 52 insertions(+), 35 deletions(-)

diff --git a/gitblit.properties b/gitblit.properties
index 8ea1cc6..839b914 100644
--- a/gitblit.properties
+++ b/gitblit.properties
@@ -79,7 +79,7 @@
 
 # The number of commits to show on each page of a Log
 # Value must exceed 0 else default of 50 is used
-logPageCommitsCount = 50
+logPageCommitCount = 50
 
 # Registered extensions for google-code-prettify
 prettyPrintExtensions = c cpp cs css htm html java js php pl prefs properties py rb sh sql xml vb
diff --git a/src/com/gitblit/wicket/RepositoryPage.java b/src/com/gitblit/wicket/RepositoryPage.java
index 4e84938..0561771 100644
--- a/src/com/gitblit/wicket/RepositoryPage.java
+++ b/src/com/gitblit/wicket/RepositoryPage.java
@@ -32,8 +32,8 @@
 			error("Repository not specified!");
 			redirectToInterceptPage(new RepositoriesPage());
 		}
-		repositoryName = params.getString("r", "");
-		objectId = params.getString("h", "HEAD");
+		repositoryName = WicketUtils.getRepositoryName(params);
+		objectId = WicketUtils.getObject(params);
 
 		Repository r = getRepository();
 
@@ -64,7 +64,7 @@
 	}
 
 	protected void addRefs(Repository r, RevCommit c) {
-		add(new RefsPanel("refsPanel", r, c));
+		add(new RefsPanel("refsPanel", repositoryName,  c, JGitUtils.getAllRefs(r)));
 	}
 
 	protected void addFullText(String wicketId, String text, boolean substituteRegex) {
diff --git a/src/com/gitblit/wicket/WicketUtils.java b/src/com/gitblit/wicket/WicketUtils.java
index bc1f441..126c37d 100644
--- a/src/com/gitblit/wicket/WicketUtils.java
+++ b/src/com/gitblit/wicket/WicketUtils.java
@@ -103,6 +103,22 @@
 		return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",page=" + pageNumber);
 	}
 	
+	public static String getRepositoryName(PageParameters params) {
+		return params.getString("r", "");
+	}
+
+	public static String getObject(PageParameters params) {
+		return params.getString("h", "");
+	}
+
+	public static String getPath(PageParameters params) {
+		return params.getString("f", null);
+	}
+
+	public static int getPage(PageParameters params) {
+		return params.getInt("page", 1); // index from 1
+	}
+
 	public static Label createDateLabel(String wicketId, Date date, TimeZone timeZone) {
 		DateFormat df = new SimpleDateFormat(StoredSettings.getString("datestampShortFormat", "MM/dd/yy"));
 		if (timeZone != null) {
diff --git a/src/com/gitblit/wicket/pages/BlobPage.java b/src/com/gitblit/wicket/pages/BlobPage.java
index 7842936..7d7259a 100644
--- a/src/com/gitblit/wicket/pages/BlobPage.java
+++ b/src/com/gitblit/wicket/pages/BlobPage.java
@@ -22,7 +22,7 @@
 	public BlobPage(PageParameters params) {
 		super(params);
 
-		final String blobPath = params.getString("f", null);
+		final String blobPath = WicketUtils.getPath(params);
 
 		Repository r = getRepository();
 		RevCommit commit = JGitUtils.getCommit(r, objectId);
diff --git a/src/com/gitblit/wicket/pages/DiffPage.java b/src/com/gitblit/wicket/pages/DiffPage.java
index 1e6065b..1912c42 100644
--- a/src/com/gitblit/wicket/pages/DiffPage.java
+++ b/src/com/gitblit/wicket/pages/DiffPage.java
@@ -8,6 +8,7 @@
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.RepositoryPage;
+import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.panels.PathBreadcrumbsPanel;
 
 public class DiffPage extends RepositoryPage {
@@ -15,7 +16,7 @@
 	public DiffPage(PageParameters params) {
 		super(params);
 
-		final String blobPath = params.getString("f", null);
+		final String blobPath = WicketUtils.getPath(params);
 
 		Repository r = getRepository();
 		RevCommit commit = JGitUtils.getCommit(r, objectId);
diff --git a/src/com/gitblit/wicket/pages/LogPage.java b/src/com/gitblit/wicket/pages/LogPage.java
index f9449ad..cd75df9 100644
--- a/src/com/gitblit/wicket/pages/LogPage.java
+++ b/src/com/gitblit/wicket/pages/LogPage.java
@@ -12,7 +12,7 @@
 	public LogPage(PageParameters params) {
 		super(params);
 
-		int pageNumber = params.getInt("page", 1); // index from 1
+		int pageNumber = WicketUtils.getPage(params);
 		int prevPage = Math.max(0, pageNumber - 1);
 		int nextPage = pageNumber + 1;
 
diff --git a/src/com/gitblit/wicket/pages/TicGitTicketPage.java b/src/com/gitblit/wicket/pages/TicGitTicketPage.java
index 5d3ceb4..5cdc4a7 100644
--- a/src/com/gitblit/wicket/pages/TicGitTicketPage.java
+++ b/src/com/gitblit/wicket/pages/TicGitTicketPage.java
@@ -19,7 +19,7 @@
 	public TicGitTicketPage(PageParameters params) {
 		super(params);
 
-		final String ticketFolder = params.getString("f", "");
+		final String ticketFolder = WicketUtils.getPath(params);
 
 		Repository r = getRepository();
 		TicGitTicket t = JGitUtils.getTicGitTicket(r, ticketFolder);
diff --git a/src/com/gitblit/wicket/pages/TreePage.java b/src/com/gitblit/wicket/pages/TreePage.java
index e24033e..90e0a65 100644
--- a/src/com/gitblit/wicket/pages/TreePage.java
+++ b/src/com/gitblit/wicket/pages/TreePage.java
@@ -26,7 +26,7 @@
 	public TreePage(PageParameters params) {
 		super(params);
 
-		final String basePath = params.getString("f", null);
+		final String basePath = WicketUtils.getPath(params);
 
 		Repository r = getRepository();
 		RevCommit commit = JGitUtils.getCommit(r, objectId);
diff --git a/src/com/gitblit/wicket/panels/LogPanel.java b/src/com/gitblit/wicket/panels/LogPanel.java
index 17b01db..e496ed0 100644
--- a/src/com/gitblit/wicket/panels/LogPanel.java
+++ b/src/com/gitblit/wicket/panels/LogPanel.java
@@ -33,7 +33,7 @@
 	public LogPanel(String wicketId, final String repositoryName, String objectId, Repository r, int limit, int pageOffset) {
 		super(wicketId);
 		boolean pageResults = limit <= 0;
-		int itemsPerPage = StoredSettings.getInteger("logPageCommitsCount", 50);
+		int itemsPerPage = StoredSettings.getInteger("logPageCommitCount", 50);
 		if (itemsPerPage <= 1) {
 			itemsPerPage = 50;
 		}
@@ -81,7 +81,7 @@
 				}
 				item.add(shortlog);
 
-				item.add(new RefsPanel("commitRefs", entry, allRefs));
+				item.add(new RefsPanel("commitRefs", repositoryName, entry, allRefs));
 
 				item.add(new BookmarkablePageLink<Void>("view", CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
 				item.add(new BookmarkablePageLink<Void>("diff", DiffPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
diff --git a/src/com/gitblit/wicket/panels/RefsPanel.html b/src/com/gitblit/wicket/panels/RefsPanel.html
index 4012ab1..5d30193 100644
--- a/src/com/gitblit/wicket/panels/RefsPanel.html
+++ b/src/com/gitblit/wicket/panels/RefsPanel.html
@@ -5,7 +5,7 @@
       lang="en"> 
 
 <wicket:panel>
-	<span class="refs" wicket:id="ref">
+	<span wicket:id="ref">
 		<span wicket:id="refName">ref</span>
 	</span>	
 </wicket:panel>
diff --git a/src/com/gitblit/wicket/panels/RefsPanel.java b/src/com/gitblit/wicket/panels/RefsPanel.java
index 5dec57f..bfdf50c 100644
--- a/src/com/gitblit/wicket/panels/RefsPanel.java
+++ b/src/com/gitblit/wicket/panels/RefsPanel.java
@@ -13,28 +13,27 @@
 import org.apache.wicket.markup.repeater.data.ListDataProvider;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
 
-import com.gitblit.utils.JGitUtils;
+import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.WicketUtils;
+import com.gitblit.wicket.pages.LogPage;
+import com.gitblit.wicket.pages.TagPage;
 
 
 public class RefsPanel extends Panel {
 
 	private static final long serialVersionUID = 1L;
 
-	public RefsPanel(String id, Repository r, RevCommit c) {
-		this(id, c, JGitUtils.getAllRefs(r));
-	}
-	
-	public RefsPanel(String id, RevCommit c, Map<ObjectId, List<String>> refs) {
+	public RefsPanel(String id, final String repositoryName, RevCommit c, Map<ObjectId, List<String>> refs) {
 		super(id);
 		List<String> refNames = refs.get(c.getId());
 		if (refNames == null) {
 			refNames = new ArrayList<String>();
 		}
 		Collections.sort(refNames);
+		refNames.remove(Constants.HEAD);
+		
 		ListDataProvider<String> refsDp = new ListDataProvider<String>(refNames);
 		DataView<String> refsView = new DataView<String>("ref", refsDp) {
 			private static final long serialVersionUID = 1L;
@@ -43,19 +42,23 @@
 				Component c = null;
 				if (entry.startsWith(Constants.R_HEADS)) {
 					// local head
-					c = new Label("refName", entry.substring(Constants.R_HEADS.length()));
+					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");
 				} else if (entry.startsWith(Constants.R_REMOTES)) {
 					// remote head
-					c = new Label("refName", entry.substring(Constants.R_REMOTES.length()));
+					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");
 				} else if (entry.startsWith(Constants.R_TAGS)) {
 					// tag
-					c = new Label("refName", entry.substring(Constants.R_TAGS.length()));
+//					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");
 				} else {
 					// other
-					c = new Label("refName", entry);					
+					c = new Label("refName", entry);
 				}
 				WicketUtils.setHtmlTitle(c, entry);
 				item.add(c);
diff --git a/src/com/gitblit/wicket/resources/gitblit.css b/src/com/gitblit/wicket/resources/gitblit.css
index 6c75432..4587f78 100644
--- a/src/com/gitblit/wicket/resources/gitblit.css
+++ b/src/com/gitblit/wicket/resources/gitblit.css
@@ -409,41 +409,38 @@
 	text-align: right;
 }
 
-span.refs span {
+span .tag, span .head, span .ref {
 	padding: 0px 4px;
 	font-family: sans-serif;
-	font-size: 70%;
 	font-weight: normal;
 	border: 1px solid;
-	background-color: #ffaaff;
-	border-color: #ffccff #ff00ee #ff00ee #ffccff;
 	color: black;
 }
 
-span.refs span a {
+span .tag a, span .head a, span .ref a {
 	text-decoration: none;
 	color: inherit;
 }
 
-span.refs span a:hover {
-	text-decoration: underline;
+span .tag a:hover, span .head a:hover, span .ref a:hover {
+	color: inherit;
 }
 
-span.refs span.indirect {
-	font-style: italic;
+span .tag a span, span .head a span, span .ref a span {
+	font-size: 9px;
 }
 
-span.refs span.ref {
+span .ref {
 	background-color: #aaaaff;
 	border-color: #ccccff #0033cc #0033cc #ccccff;
 }
 
-span.refs span.tag {
+span .tag {
 	background-color: #ffffaa;
 	border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
 }
 
-span.refs span.head {
+span .head {
 	background-color: #aaffaa;
 	border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
 }
\ No newline at end of file

--
Gitblit v1.9.1