markdown: Make markdown files to refer code repository files directly
See: github issue #124
@83d3fa0a347164d92d36c23fcd50fc787d617216
--- app/controllers/MigrationApp.java
+++ app/controllers/MigrationApp.java
... | ... | @@ -16,7 +16,6 @@ |
16 | 16 |
import models.support.IssueLabelAggregate; |
17 | 17 |
import org.apache.commons.lang.StringUtils; |
18 | 18 |
import play.Configuration; |
19 |
-import play.i18n.Messages; |
|
20 | 19 |
import play.libs.F; |
21 | 20 |
import play.libs.F.Promise; |
22 | 21 |
import play.libs.Json; |
--- app/utils/Markdown.java
+++ app/utils/Markdown.java
... | ... | @@ -22,6 +22,7 @@ |
22 | 22 |
|
23 | 23 |
import models.Project; |
24 | 24 |
import org.apache.commons.lang.StringEscapeUtils; |
25 |
+import org.apache.commons.lang.StringUtils; |
|
25 | 26 |
import org.jsoup.Jsoup; |
26 | 27 |
import org.jsoup.nodes.Document; |
27 | 28 |
import org.jsoup.nodes.Element; |
... | ... | @@ -216,4 +217,18 @@ |
216 | 217 |
public static String render(@Nonnull String source, Project project) { |
217 | 218 |
return render(source, project, true); |
218 | 219 |
} |
220 |
+ |
|
221 |
+ public static String renderFileInCodeBrowser(@Nonnull String source, Project project) { |
|
222 |
+ String relativeLinksToCodeBrowserPath = replaceContentsLinkToCodeBrowerPath(project, source); |
|
223 |
+ AutoLinkRenderer autoLinkRenderer = new AutoLinkRenderer(renderWithHighlight(relativeLinksToCodeBrowserPath, true), project); |
|
224 |
+ return autoLinkRenderer.render(); |
|
225 |
+ } |
|
226 |
+ |
|
227 |
+ private static String replaceContentsLinkToCodeBrowerPath(Project project, String text){ |
|
228 |
+ String root = play.Configuration.root().getString("application.context", ""); |
|
229 |
+ if (StringUtils.isNotEmpty(root)) { |
|
230 |
+ root = "/" + root; |
|
231 |
+ } |
|
232 |
+ return text.replaceAll("\\[(?<text>[^\\]]*)\\]\\(\\.?+/?+(?<link>[^\\)]*)\\)", "[$1](/" + root + project.owner + "/" + project.name + "/files/" + project.defaultBranch().replaceAll("refs/heads/", "") + "/$2)"); |
|
233 |
+ } |
|
219 | 234 |
} |
--- app/views/code/partial_view_file.scala.html
+++ app/views/code/partial_view_file.scala.html
... | ... | @@ -110,7 +110,7 @@ |
110 | 110 |
@if(isMarkdownExtension(path)) { |
111 | 111 |
<div id="codeVal" class="markdown-wrap codebrowser-markdown"> |
112 | 112 |
@if(files.get("data") != null){ |
113 |
- @Html(Markdown.render(fieldText(files, "data"), project)) |
|
113 |
+ @Html(Markdown.renderFileInCodeBrowser(fieldText(files, "data"), project)) |
|
114 | 114 |
} |
115 | 115 |
</div> |
116 | 116 |
} else { |
--- app/views/project/partial_readme.scala.html
+++ app/views/project/partial_readme.scala.html
... | ... | @@ -45,7 +45,7 @@ |
45 | 45 |
<a href="@routes.BoardApp.newPostForm(project.owner, project.name)?readme=true" class="ybtn vmiddle ml5">@Messages("button.edit")</a> |
46 | 46 |
} |
47 | 47 |
</header> |
48 |
- <div class="readme-body markdown-wrap">@Html(Markdown.render(project.readme, project, false))</div> |
|
48 |
+ <div class="readme-body markdown-wrap">@Html(Markdown.renderFileInCodeBrowser(project.readme, project))</div> |
|
49 | 49 |
</div> |
50 | 50 |
} |
51 | 51 |
@common.markdown(project) |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?