Merge pull request #2189 from gitbucket/fix-markdown-rendering

Fix link rendering in Markdown
This commit is contained in:
Naoki Takezoe
2018-11-09 18:10:49 +09:00
committed by GitHub
12 changed files with 71 additions and 42 deletions

View File

@@ -257,6 +257,7 @@ trait IssuesControllerBase extends ControllerBase {
"content" -> Markdown.toHtml(
markdown = x.content getOrElse "No description given.",
repository = repository,
branch = repository.repository.defaultBranch,
enableWikiLink = false,
enableRefsLink = true,
enableAnchor = true,
@@ -284,6 +285,7 @@ trait IssuesControllerBase extends ControllerBase {
"content" -> view.Markdown.toHtml(
markdown = x.content,
repository = repository,
branch = repository.repository.defaultBranch,
enableWikiLink = false,
enableRefsLink = true,
enableAnchor = true,

View File

@@ -174,7 +174,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
helpers.renderMarkup(
filePath = List(f),
fileContent = params("content"),
branch = "master",
branch = repository.repository.defaultBranch,
repository = repository,
enableWikiLink = params("enableWikiLink").toBoolean,
enableRefsLink = params("enableRefsLink").toBoolean,
@@ -184,6 +184,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
helpers.markdown(
markdown = params("content"),
repository = repository,
branch = repository.repository.defaultBranch,
enableWikiLink = params("enableWikiLink").toBoolean,
enableRefsLink = params("enableRefsLink").toBoolean,
enableLineBreaks = params("enableLineBreaks").toBoolean,
@@ -679,6 +680,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
"content" -> view.Markdown.toHtml(
markdown = x.content,
repository = repository,
branch = repository.repository.defaultBranch,
enableWikiLink = false,
enableRefsLink = true,
enableAnchor = true,

View File

@@ -25,6 +25,7 @@ object MarkdownRenderer extends Renderer {
Markdown.toHtml(
markdown = fileContent,
repository = repository,
branch = branch,
enableWikiLink = enableWikiLink,
enableRefsLink = enableRefsLink,
enableAnchor = enableAnchor,

View File

@@ -16,6 +16,7 @@ object Markdown {
* Converts Markdown of Wiki pages to HTML.
*
* @param repository the repository which contains the markdown
* @param branch the target branch
* @param enableWikiLink if true then wiki style link is available in markdown
* @param enableRefsLink if true then issue reference (e.g. #123) is rendered as link
* @param enableAnchor if true then anchor for headline is generated
@@ -27,6 +28,7 @@ object Markdown {
def toHtml(
markdown: String,
repository: RepositoryService.RepositoryInfo,
branch: String,
enableWikiLink: Boolean,
enableRefsLink: Boolean,
enableAnchor: Boolean,
@@ -45,6 +47,7 @@ object Markdown {
val renderer = new GitBucketMarkedRenderer(
options,
repository,
branch,
enableWikiLink,
enableRefsLink,
enableAnchor,
@@ -62,6 +65,7 @@ object Markdown {
class GitBucketMarkedRenderer(
options: Options,
repository: RepositoryService.RepositoryInfo,
branch: String,
enableWikiLink: Boolean,
enableRefsLink: Boolean,
enableAnchor: Boolean,
@@ -131,11 +135,11 @@ object Markdown {
}
override def link(href: String, title: String, text: String): String = {
super.link(fixUrl(href, false), title, text)
super.link(fixUrl(href, branch, false), title, text)
}
override def image(href: String, title: String, text: String): String = {
super.image(fixUrl(href, true), title, text)
super.image(fixUrl(href, branch, true), title, text)
}
override def nolink(text: String): String = {
@@ -162,7 +166,7 @@ object Markdown {
}
}
private def fixUrl(url: String, isImage: Boolean = false): String = {
private def fixUrl(url: String, branch: String, isImage: Boolean = false): String = {
lazy val urlWithRawParam: String = url + (if (isImage && !url.endsWith("?raw=true")) "?raw=true" else "")
if (url.startsWith("http://") || url.startsWith("https://") || url.startsWith("mailto:") || url.startsWith("/")) {
@@ -172,13 +176,7 @@ object Markdown {
} else if (!enableWikiLink) {
if (context.currentPath.contains("/blob/")) {
urlWithRawParam
} else if (context.currentPath.contains("/tree/")) {
val paths = context.currentPath.split("/")
val branch = if (paths.length > 3) paths.drop(4).mkString("/") else repository.repository.defaultBranch
repository.httpUrl.replaceFirst("/git/", "/").stripSuffix(".git") + "/blob/" + branch + "/" + urlWithRawParam
} else {
val paths = context.currentPath.split("/")
val branch = if (paths.length > 3) paths.last else repository.repository.defaultBranch
repository.httpUrl.replaceFirst("/git/", "/").stripSuffix(".git") + "/blob/" + branch + "/" + urlWithRawParam
}
} else {

View File

@@ -102,6 +102,7 @@ object helpers extends AvatarImageProvider with LinkConverter with RequestCache
def markdown(
markdown: String,
repository: RepositoryService.RepositoryInfo,
branch: String,
enableWikiLink: Boolean,
enableRefsLink: Boolean,
enableLineBreaks: Boolean,
@@ -114,6 +115,7 @@ object helpers extends AvatarImageProvider with LinkConverter with RequestCache
Markdown.toHtml(
markdown = markdown,
repository = repository,
branch = branch,
enableWikiLink = enableWikiLink,
enableRefsLink = enableRefsLink,
enableAnchor = enableAnchor,

View File

@@ -22,12 +22,13 @@
</div>
<div class="commit-commentContent-@comment.commentId">
@helpers.markdown(
markdown = comment.content,
repository = repository,
enableWikiLink = false,
enableRefsLink = true,
enableLineBreaks = true,
enableTaskList = true,
markdown = comment.content,
repository = repository,
branch = repository.repository.defaultBranch,
enableWikiLink = false,
enableRefsLink = true,
enableLineBreaks = true,
enableTaskList = true,
hasWritePermission = hasWritePermission
)
</div>

View File

@@ -32,12 +32,13 @@
</div>
<div class="panel-body markdown-body" id="commentContent-@comment.commentId">
@helpers.markdown(
markdown = comment.content,
repository = repository,
enableWikiLink = false,
enableRefsLink = true,
enableLineBreaks = true,
enableTaskList = true,
markdown = comment.content,
repository = repository,
branch = repository.repository.defaultBranch,
enableWikiLink = false,
enableRefsLink = true,
enableLineBreaks = true,
enableTaskList = true,
hasWritePermission = isManageable
)
</div>
@@ -57,12 +58,13 @@
</div>
<div class="panel-body markdown-body" id="issueContent">
@helpers.markdown(
markdown = issue.get.content getOrElse "No description provided.",
repository = repository,
enableWikiLink = false,
enableRefsLink = true,
enableLineBreaks = true,
enableTaskList = true,
markdown = issue.get.content getOrElse "No description provided.",
repository = repository,
branch = repository.repository.defaultBranch,
enableWikiLink = false,
enableRefsLink = true,
enableLineBreaks = true,
enableTaskList = true,
hasWritePermission = isManageable
)
</div>
@@ -268,12 +270,13 @@
</div>
<div class="panel-body markdown-body commit-commentContent-@comment.commentId">
@helpers.markdown(
markdown = comment.content,
repository = repository,
enableWikiLink = false,
enableRefsLink = true,
enableLineBreaks = true,
enableTaskList = true,
markdown = comment.content,
repository = repository,
branch = repository.repository.defaultBranch,
enableWikiLink = false,
enableRefsLink = true,
enableLineBreaks = true,
enableTaskList = true,
hasWritePermission = isManageable
)
</div>

View File

@@ -76,13 +76,14 @@
</div>
</div>
</div>
@if(milestone.description.isDefined){
@milestone.description.map { description =>
<div class="milestone-description markdown-body">
@helpers.markdown(
markdown = milestone.description.get,
repository = repository,
enableWikiLink = false,
enableRefsLink = false,
markdown = description,
repository = repository,
branch = repository.repository.defaultBranch,
enableWikiLink = false,
enableRefsLink = false,
enableLineBreaks = true
)
</div>

View File

@@ -43,7 +43,14 @@
</div>
<div>
<hr>
@status.conflictMessage.map { message => @helpers.markdown(message, originRepository, false, true, false) }
@status.conflictMessage.map { message => @helpers.markdown(
markdown = message,
repository = originRepository,
branch = originRepository.repository.defaultBranch,
enableWikiLink = false,
enableRefsLink = true,
enableLineBreaks = false
) }
</div>
} else {
@if(status.branchIsOutOfDate){

View File

@@ -27,6 +27,7 @@
@helpers.markdown(
markdown = release.content getOrElse "No description provided.",
repository = repository,
branch = repository.repository.defaultBranch,
enableWikiLink = false,
enableRefsLink = true,
enableLineBreaks = true,

View File

@@ -34,6 +34,7 @@
@helpers.markdown(
markdown = release.content getOrElse "No description provided.",
repository = repository,
branch = repository.repository.defaultBranch,
enableWikiLink = false,
enableRefsLink = true,
enableLineBreaks = true,

View File

@@ -59,7 +59,7 @@
@if(isEditable){
<a href="@helpers.url(repository)/wiki/_Sidebar/_edit" style="text-decoration: none;"><span class="octicon octicon-pencil pull-right"></span></a>
}
@helpers.markdown(sidebarPage.content, repository, true, false, false, false, pages)
@helpers.markdown(sidebarPage.content, repository, "master", true, false, false, false, pages)
</div>
}.getOrElse{
@if(isEditable){
@@ -85,6 +85,7 @@
@helpers.markdown(
markdown = page.content,
repository = repository,
branch = "master",
enableWikiLink = true,
enableRefsLink = false,
enableLineBreaks = false,
@@ -98,7 +99,16 @@
@if(isEditable){
<a href="@helpers.url(repository)/wiki/_Footer/_edit" style="text-decoration: none;"><span class="octicon octicon-pencil pull-right"></span></a>
}
@helpers.markdown(footerPage.content, repository, true, false, false, false, pages)
@helpers.markdown(
markdown = footerPage.content,
repository = repository,
branch = "master",
enableWikiLink = true,
enableRefsLink = false,
enableLineBreaks = false,
enableAnchor = false,
pages = pages
)
</div>
}.getOrElse{
@if(isEditable){