summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomaszSzt <87855864+TomaszSzt@users.noreply.github.com>2021-11-18 15:38:54 +0100
committerGitHub <noreply@github.com>2021-11-18 15:38:54 +0100
commitebbd27be8c47579db837d4d174905c4ef1c6de39 (patch)
treecb5bc00de3fa108767c559ba2116d5d8691d6605
parent9142f1f74d5ab60335eb9f7d38b946c75f109460 (diff)
downloadgitblit-ebbd27be8c47579db837d4d174905c4ef1c6de39.tar.gz
gitblit-ebbd27be8c47579db837d4d174905c4ef1c6de39.zip
Fixes external links broken in markdown rendering (#1392)
* This commit fixes what was broken in commit https://github.com/gitblit/gitblit/commit/b23269acc0f460f583311c679d751925b8402563 due to #1358 issue
-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);