mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-02 03:26:06 +01:00
Merge pull request #2189 from gitbucket/fix-markdown-rendering
Fix link rendering in Markdown
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -25,6 +25,7 @@ object MarkdownRenderer extends Renderer {
|
||||
Markdown.toHtml(
|
||||
markdown = fileContent,
|
||||
repository = repository,
|
||||
branch = branch,
|
||||
enableWikiLink = enableWikiLink,
|
||||
enableRefsLink = enableRefsLink,
|
||||
enableAnchor = enableAnchor,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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){
|
||||
|
||||
Reference in New Issue
Block a user