summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/gitblit/wicket/MarkupProcessor.java16
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);