From a7317acec01cde855a9f9f3d2da3dcc49d89aa86 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 25 Oct 2013 08:39:56 -0400 Subject: [PATCH] Support for intra-Markdown linking using [[WikiLinks]] syntax (issue-324) --- src/main/java/com/gitblit/wicket/pages/MarkdownPage.java | 32 ++++++++++++++++++++++++++++---- 1 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java b/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java index 188a5b4..e0c85cf 100644 --- a/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java +++ b/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java @@ -16,6 +16,7 @@ package com.gitblit.wicket.pages; import java.text.MessageFormat; +import java.util.List; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.basic.Label; @@ -25,6 +26,7 @@ import org.eclipse.jgit.revwalk.RevCommit; import com.gitblit.GitBlit; +import com.gitblit.Keys; import com.gitblit.utils.JGitUtils; import com.gitblit.utils.MarkdownUtils; import com.gitblit.utils.StringUtils; @@ -38,11 +40,32 @@ public MarkdownPage(PageParameters params) { super(params); - final String markdownPath = WicketUtils.getPath(params); + final String path = WicketUtils.getPath(params).replace("%2f", "/").replace("%2F", "/"); Repository r = getRepository(); RevCommit commit = JGitUtils.getCommit(r, objectId); String [] encodings = GitBlit.getEncodings(); + List<String> extensions = GitBlit.getStrings(Keys.web.markdownExtensions); + + // Read raw markdown content and transform it to html + String markdownPath = path; + String markdownText = JGitUtils.getStringContent(r, commit.getTree(), path, encodings); + if (StringUtils.isEmpty(markdownText)) { + String name = path; + if (path.indexOf('.') > -1) { + name = path.substring(0, path.lastIndexOf('.')); + } + + for (String ext : extensions) { + String checkName = name + "." + ext; + markdownText = JGitUtils.getStringContent(r, commit.getTree(), checkName, encodings); + if (!StringUtils.isEmpty(markdownText)) { + // found it + markdownPath = path; + break; + } + } + } // markdown page links add(new BookmarkablePageLink<Void>("blameLink", BlamePage.class, @@ -54,13 +77,14 @@ add(new BookmarkablePageLink<Void>("headLink", MarkdownPage.class, WicketUtils.newPathParameter(repositoryName, Constants.HEAD, markdownPath))); - // Read raw markdown content and transform it to html - String markdownText = JGitUtils.getStringContent(r, commit.getTree(), markdownPath, encodings); String htmlText; try { - htmlText = MarkdownUtils.transformMarkdown(markdownText); + htmlText = MarkdownUtils.transformMarkdown(markdownText, getLinkRenderer()); } catch (Exception e) { logger.error("failed to transform markdown", e); + if (markdownText == null) { + markdownText = String.format("Markdown document <b>%1$s</b> not found in <em>%2$s</em>", markdownPath, repositoryName); + } markdownText = MessageFormat.format("<div class=\"alert alert-error\"><strong>{0}:</strong> {1}</div>{2}", getString("gb.error"), getString("gb.markdownFailure"), markdownText); htmlText = StringUtils.breakLinesForHtml(markdownText); } -- Gitblit v1.9.1