From c05da657ec71c46d0e5bc32b074ddcd9d8b76353 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 12 Nov 2013 17:56:46 -0500
Subject: [PATCH] Add markup support for confluence, mediawiki, textile, trac, and twiki

---
 src/main/java/com/gitblit/PagesServlet.java |   38 ++++++++++++++++++++------------------
 1 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/gitblit/PagesServlet.java b/src/main/java/com/gitblit/PagesServlet.java
index 1e2d311..e121f8a 100644
--- a/src/main/java/com/gitblit/PagesServlet.java
+++ b/src/main/java/com/gitblit/PagesServlet.java
@@ -38,12 +38,14 @@
 import com.gitblit.utils.JGitUtils;
 import com.gitblit.utils.MarkdownUtils;
 import com.gitblit.utils.StringUtils;
+import com.gitblit.wicket.MarkupProcessor;
+import com.gitblit.wicket.MarkupProcessor.MarkupDocument;
 
 /**
  * Serves the content of a gh-pages branch.
- * 
+ *
  * @author James Moger
- * 
+ *
  */
 public class PagesServlet extends HttpServlet {
 
@@ -57,7 +59,7 @@
 
 	/**
 	 * Returns an url to this servlet for the specified parameters.
-	 * 
+	 *
 	 * @param baseURL
 	 * @param repository
 	 * @param path
@@ -73,7 +75,7 @@
 	/**
 	 * Retrieves the specified resource from the gh-pages branch of the
 	 * repository.
-	 * 
+	 *
 	 * @param request
 	 * @param response
 	 * @throws javax.servlet.ServletException
@@ -141,22 +143,21 @@
 				r.close();
 				return;
 			}
-			response.setDateHeader("Last-Modified", JGitUtils.getCommitDate(commit).getTime());
 
+			MarkupProcessor processor = new MarkupProcessor(GitBlit.getSettings());
 			String [] encodings = GitBlit.getEncodings();
 
 			RevTree tree = commit.getTree();
 			byte[] content = null;
 			if (StringUtils.isEmpty(resource)) {
 				// find resource
-				List<String> markdownExtensions = GitBlit.getStrings(Keys.web.markdownExtensions);
-				List<String> extensions = new ArrayList<String>(markdownExtensions.size() + 1);
+				List<String> extensions = new ArrayList<String>(processor.getMarkupExtensions());
 				extensions.add("html");
-				extensions.addAll(markdownExtensions);
-				for (String ext : extensions){
+				extensions.add("htm");
+				for (String ext : extensions) {
 					String file = "index." + ext;
 					String stringContent = JGitUtils.getStringContent(r, tree, file, encodings);
-					if(stringContent == null){
+					if (stringContent == null) {
 						continue;
 					}
 					content = stringContent.getBytes(Constants.ENCODING);
@@ -213,18 +214,19 @@
 				return;
 			}
 
-			// check to see if we should transform markdown files
-			for (String ext : GitBlit.getStrings(Keys.web.markdownExtensions)) {
-				if (resource.endsWith(ext)) {
-					String mkd = new String(content, Constants.ENCODING);
-					content = MarkdownUtils.transformMarkdown(mkd).getBytes(Constants.ENCODING);
-					response.setContentType("text/html; charset=" + Constants.ENCODING);
-					break;
-				}
+			// check to see if we should transform markup files
+			String ext = StringUtils.getFileExtension(resource);
+			if (processor.getMarkupExtensions().contains(ext)) {
+				String markup = new String(content, Constants.ENCODING);
+				MarkupDocument markupDoc = processor.parse(repository, commit.getName(), resource, markup);
+				content = markupDoc.html.getBytes("UTF-8");
+				response.setContentType("text/html; charset=" + Constants.ENCODING);
 			}
 
 			try {
 				// output the content
+				response.setHeader("Cache-Control", "public, max-age=3600, must-revalidate");
+				response.setDateHeader("Last-Modified", JGitUtils.getCommitDate(commit).getTime());
 				response.getOutputStream().write(content);
 				response.flushBuffer();
 			} catch (Throwable t) {

--
Gitblit v1.9.1