diff options
-rw-r--r-- | src/main/java/com/gitblit/wicket/MarkupProcessor.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/wicket/MarkupProcessor.java b/src/main/java/com/gitblit/wicket/MarkupProcessor.java index 7facc59e..300039bc 100644 --- a/src/main/java/com/gitblit/wicket/MarkupProcessor.java +++ b/src/main/java/com/gitblit/wicket/MarkupProcessor.java @@ -360,6 +360,22 @@ public class MarkupProcessor { @Override public Rendering render(ExpLinkNode node, String text) { + // Relative file-like MD links needs to be re-mapped to be relative to + // repository name so that they display correctly sub-folder files + // Absolute links must be left un-touched. + + // Note: The absolute lack of comments in ExpLinkNode is... well... + // I assume, that getRelativePath is handling "file like" links + // like "/xx/tt" or "../somefolder". What needs to be captured + // is a full URL link. The easiest is to ask java to parse URL + // and let it fail. Shame java.net.URL has no method to validate URL without + // throwing. + try { + new java.net.URL(node.url); + // This is URL, fallback to superclass. + return super.render(node,text); + } catch (java.net.MalformedURLException ignored) {}; + // repository-relative link String path = doc.getRelativePath(node.url); String url = getWicketUrl(DocPage.class, repositoryName, commitId, path); return new Rendering(url, text); |