From f76fee63ed9cb3a30d3c0c092d860b1cb93a481b Mon Sep 17 00:00:00 2001
From: Gerard Smyth <gerard.smyth@gmail.com>
Date: Thu, 08 May 2014 13:09:30 -0400
Subject: [PATCH] Updated the SyndicationServlet to provide an additional option to return details of the tags in the repository instead of the commits. This uses a new 'ot' request parameter to indicate the object type of the content to return, which can be ither TAG or COMMIT. If this is not provided, then COMMIT is assumed to maintain backwards compatability. If tags are returned, then the paging parameters, 'l' and 'pg' are still supported, but searching options are currently ignored.

---
 src/main/java/com/gitblit/wicket/pages/BlobPage.java |   60 +++++++++++++++++++++++++++++-------------------------------
 1 files changed, 29 insertions(+), 31 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/BlobPage.java b/src/main/java/com/gitblit/wicket/pages/BlobPage.java
index b9f6430..f3d0bc9 100644
--- a/src/main/java/com/gitblit/wicket/pages/BlobPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/BlobPage.java
@@ -24,18 +24,19 @@
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.image.Image;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.eclipse.jgit.lib.Constants;
+import org.apache.wicket.markup.html.link.ExternalLink;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevCommit;
 
-import com.gitblit.GitBlit;
 import com.gitblit.Keys;
+import com.gitblit.servlet.RawServlet;
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.utils.StringUtils;
 import com.gitblit.wicket.CacheControl;
-import com.gitblit.wicket.ExternalImage;
-import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.CacheControl.LastModified;
+import com.gitblit.wicket.ExternalImage;
+import com.gitblit.wicket.MarkupProcessor;
+import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.panels.CommitHeaderPanel;
 import com.gitblit.wicket.panels.PathBreadcrumbsPanel;
 
@@ -49,8 +50,8 @@
 
 		Repository r = getRepository();
 		final String blobPath = WicketUtils.getPath(params);
-		String [] encodings = GitBlit.getEncodings();
-		
+		String [] encodings = getEncodings();
+
 		if (StringUtils.isEmpty(blobPath)) {
 			// blob by objectid
 
@@ -58,9 +59,8 @@
 					WicketUtils.newPathParameter(repositoryName, objectId, blobPath))
 					.setEnabled(false));
 			add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class).setEnabled(false));
-			add(new BookmarkablePageLink<Void>("rawLink", RawPage.class,
-					WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
-			add(new BookmarkablePageLink<Void>("headLink", BlobPage.class).setEnabled(false));
+			String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, objectId, blobPath);
+			add(new ExternalLink("rawLink",  rawUrl));
 			add(new CommitHeaderPanel("commitHeader", objectId));
 			add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, objectId));
 			Component c = new Label("blobText", JGitUtils.getStringContent(r, objectId, encodings));
@@ -73,26 +73,24 @@
 				extension = blobPath.substring(blobPath.lastIndexOf('.') + 1).toLowerCase();
 			}
 
-			// see if we should redirect to the markdown page
-			for (String ext : GitBlit.getStrings(Keys.web.markdownExtensions)) {
+			// see if we should redirect to the doc page
+			MarkupProcessor processor = new MarkupProcessor(app().settings());
+			for (String ext : processor.getMarkupExtensions()) {
 				if (ext.equals(extension)) {
-					setResponsePage(MarkdownPage.class, params);
+					setResponsePage(DocPage.class, params);
 					return;
 				}
 			}
 
-			// manually get commit because it can be null
-			RevCommit commit = JGitUtils.getCommit(r, objectId);
+			RevCommit commit = getCommit();
 
 			// blob page links
 			add(new BookmarkablePageLink<Void>("blameLink", BlamePage.class,
 					WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
 			add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class,
 					WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
-			add(new BookmarkablePageLink<Void>("rawLink", RawPage.class,
-					WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
-			add(new BookmarkablePageLink<Void>("headLink", BlobPage.class,
-					WicketUtils.newPathParameter(repositoryName, Constants.HEAD, blobPath)));
+			String rawUrl = RawServlet.asLink(getContextUrl(), repositoryName, objectId, blobPath);
+			add(new ExternalLink("rawLink", rawUrl));
 
 			add(new CommitHeaderPanel("commitHeader", repositoryName, commit));
 
@@ -100,13 +98,13 @@
 
 			// Map the extensions to types
 			Map<String, Integer> map = new HashMap<String, Integer>();
-			for (String ext : GitBlit.getStrings(Keys.web.prettyPrintExtensions)) {
+			for (String ext : app().settings().getStrings(Keys.web.prettyPrintExtensions)) {
 				map.put(ext.toLowerCase(), 1);
 			}
-			for (String ext : GitBlit.getStrings(Keys.web.imageExtensions)) {
+			for (String ext : app().settings().getStrings(Keys.web.imageExtensions)) {
 				map.put(ext.toLowerCase(), 2);
 			}
-			for (String ext : GitBlit.getStrings(Keys.web.binaryExtensions)) {
+			for (String ext : app().settings().getStrings(Keys.web.binaryExtensions)) {
 				map.put(ext.toLowerCase(), 3);
 			}
 
@@ -119,7 +117,7 @@
 				case 2:
 					// image blobs
 					add(new Label("blobText").setVisible(false));
-					add(new ExternalImage("blobImage", urlFor(RawPage.class, WicketUtils.newPathParameter(repositoryName, objectId, blobPath)).toString()));
+					add(new ExternalImage("blobImage", rawUrl));
 					break;
 				case 3:
 					// binary blobs
@@ -153,7 +151,7 @@
 			}
 		}
 	}
-	
+
 	protected String missingBlob(String blobPath, RevCommit commit) {
 		StringBuilder sb = new StringBuilder();
 		sb.append("<div class=\"alert alert-error\">");
@@ -165,11 +163,11 @@
 
 	protected String generateSourceView(String source, String extension, boolean prettyPrint) {
 		String [] lines = source.split("\n");
-		
+
 		StringBuilder sb = new StringBuilder();
 		sb.append("<!-- start blob table -->");
 		sb.append("<table width=\"100%\"><tbody><tr>");
-		
+
 		// nums column
 		sb.append("<!-- start nums column -->");
 		sb.append("<td id=\"nums\">");
@@ -181,7 +179,7 @@
 		sb.append("</pre>");
 		sb.append("<!-- end nums column -->");
 		sb.append("</td>");
-		
+
 		sb.append("<!-- start lines column -->");
 		sb.append("<td id=\"lines\">");
 		sb.append("<div class=\"sourceview\">");
@@ -191,9 +189,9 @@
 			sb.append("<pre class=\"plainprint\">");
 		}
 		lines = StringUtils.escapeForHtml(source, true).split("\n");
-		
+
 		sb.append("<table width=\"100%\"><tbody>");
-		
+
 		String linePattern = "<tr class=\"{0}\"><td><div><span class=\"line\">{1}</span></div>\r</tr>";
 		for (int i = 0; i < lines.length; i++) {
 			String line = lines[i].replace('\r', ' ');
@@ -208,10 +206,10 @@
 		sb.append("</div>");
 		sb.append("</td>");
 		sb.append("<!-- end lines column -->");
-		
+
 		sb.append("</tr></tbody></table>");
 		sb.append("<!-- end blob table -->");
-		
+
 		return sb.toString();
 	}
 
@@ -219,7 +217,7 @@
 	protected String getPageName() {
 		return getString("gb.view");
 	}
-	
+
 	@Override
 	protected Class<? extends BasePage> getRepoNavPageClass() {
 		return TreePage.class;

--
Gitblit v1.9.1