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