From aae137d5da475ec72f271811a848d426f05c1b8e Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 25 Oct 2013 18:32:25 -0400 Subject: [PATCH] Strip leading / for absolute wiki link paths --- src/main/java/com/gitblit/wicket/pages/MarkdownPage.java | 36 ++++++++++++++++++++++++++++++------ 1 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java b/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java index 5aa8029..0034984 100644 --- a/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java +++ b/src/main/java/com/gitblit/wicket/pages/MarkdownPage.java @@ -16,7 +16,7 @@ package com.gitblit.wicket.pages; import java.text.MessageFormat; -import java.text.ParseException; +import java.util.List; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.basic.Label; @@ -26,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; @@ -39,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, @@ -55,12 +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); - } catch (ParseException p) { + htmlText = MarkdownUtils.transformMarkdown(markdownText, getMarkdownLinkRenderer()); + } 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