diff options
author | James Moger <james.moger@gitblit.com> | 2013-10-24 23:44:11 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2013-10-25 08:39:56 -0400 |
commit | a7317acec01cde855a9f9f3d2da3dcc49d89aa86 (patch) | |
tree | 11795f77b74e7c642b7b916e84e5306bdcfd83e9 /src/main/java/com/gitblit/wicket/pages/MarkdownPage.java | |
parent | ab1e1148ba6ec2a0e53ff54398173204febc9a4a (diff) | |
download | gitblit-a7317acec01cde855a9f9f3d2da3dcc49d89aa86.tar.gz gitblit-a7317acec01cde855a9f9f3d2da3dcc49d89aa86.zip |
Support for intra-Markdown linking using [[WikiLinks]] syntax (issue-324)
All WikiLinks must be specified relative to the root of the repository.
The displayed link text is stripped to just the document name. Spaces in
the document name are replaced with '-' characters; this is consistent with
wiki syntax and Github.
Change-Id: Id3fb1b5441352d9bacc4993a5b85882db113693b
Diffstat (limited to 'src/main/java/com/gitblit/wicket/pages/MarkdownPage.java')
-rw-r--r-- | 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 188a5b4b..e0c85cf5 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.lib.Repository; 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 class MarkdownPage extends RepositoryPage { 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 @@ public class MarkdownPage extends RepositoryPage { 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);
}
|