diff --git a/src/main/scala/gitbucket/core/controller/IssuesController.scala b/src/main/scala/gitbucket/core/controller/IssuesController.scala index 21821a5..e358844 100644 --- a/src/main/scala/gitbucket/core/controller/IssuesController.scala +++ b/src/main/scala/gitbucket/core/controller/IssuesController.scala @@ -231,10 +231,20 @@ } getOrElse { contentType = formats("json") org.json4s.jackson.Serialization.write( - Map("title" -> x.title, - "content" -> Markdown.toHtml(x.content getOrElse "No description given.", - repository, false, true, true, true, isEditable(x.userName, x.repositoryName, x.openedUserName)) - )) + Map( + "title" -> x.title, + "content" -> Markdown.toHtml( + markdown = x.content getOrElse "No description given.", + repository = repository, + enableWikiLink = false, + enableRefsLink = true, + enableAnchor = true, + enableLineBreaks = true, + enableTaskList = true, + hasWritePermission = isEditable(x.userName, x.repositoryName, x.openedUserName) + ) + ) + ) } } else Unauthorized } getOrElse NotFound @@ -249,9 +259,19 @@ } getOrElse { contentType = formats("json") org.json4s.jackson.Serialization.write( - Map("content" -> view.Markdown.toHtml(x.content, - repository, false, true, true, isEditable(x.userName, x.repositoryName, x.commentedUserName)) - )) + Map( + "content" -> view.Markdown.toHtml( + markdown = x.content, + repository = repository, + enableWikiLink = false, + enableRefsLink = true, + enableAnchor = true, + enableLineBreaks = true, + enableTaskList = true, + hasWritePermission = isEditable(x.userName, x.repositoryName, x.commentedUserName) + ) + ) + ) } } else Unauthorized } getOrElse NotFound diff --git a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala index 7e44a91..d88bdc1 100644 --- a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala @@ -102,11 +102,15 @@ */ post("/:owner/:repository/_preview")(referrersOnly { repository => contentType = "text/html" - helpers.markdown(params("content"), repository, - params("enableWikiLink").toBoolean, - params("enableRefsLink").toBoolean, - params("enableTaskList").toBoolean, - hasWritePermission(repository.owner, repository.name, context.loginAccount)) + helpers.markdown( + markdown = params("content"), + repository = repository, + enableWikiLink = params("enableWikiLink").toBoolean, + enableRefsLink = params("enableRefsLink").toBoolean, + enableLineBreaks = params("enableLineBreaks").toBoolean, + enableTaskList = params("enableTaskList").toBoolean, + hasWritePermission = hasWritePermission(repository.owner, repository.name, context.loginAccount) + ) }) /** @@ -424,8 +428,16 @@ } getOrElse { contentType = formats("json") org.json4s.jackson.Serialization.write( - Map("content" -> view.Markdown.toHtml(x.content, - repository, false, true, true, isEditable(x.userName, x.repositoryName, x.commentedUserName)) + Map( + "content" -> view.Markdown.toHtml( + markdown = x.content, + repository = repository, + enableWikiLink = false, + enableRefsLink = true, + enableAnchor = true, + enableLineBreaks = true, + hasWritePermission = isEditable(x.userName, x.repositoryName, x.commentedUserName) + ) )) } } else Unauthorized diff --git a/src/main/scala/gitbucket/core/plugin/Renderer.scala b/src/main/scala/gitbucket/core/plugin/Renderer.scala index ed8a42b..16fd533 100644 --- a/src/main/scala/gitbucket/core/plugin/Renderer.scala +++ b/src/main/scala/gitbucket/core/plugin/Renderer.scala @@ -20,7 +20,14 @@ object MarkdownRenderer extends Renderer { override def render(request: RenderRequest): Html = { import request._ - Html(Markdown.toHtml(fileContent, repository, enableWikiLink, enableRefsLink, enableAnchor)(context)) + Html(Markdown.toHtml( + markdown = fileContent, + repository = repository, + enableWikiLink = enableWikiLink, + enableRefsLink = enableRefsLink, + enableAnchor = enableAnchor, + enableLineBreaks = false + )(context)) } } @@ -35,11 +42,13 @@ } } -case class RenderRequest(filePath: List[String], - fileContent: String, - branch: String, - repository: RepositoryService.RepositoryInfo, - enableWikiLink: Boolean, - enableRefsLink: Boolean, - enableAnchor: Boolean, - context: Context) \ No newline at end of file +case class RenderRequest( + filePath: List[String], + fileContent: String, + branch: String, + repository: RepositoryService.RepositoryInfo, + enableWikiLink: Boolean, + enableRefsLink: Boolean, + enableAnchor: Boolean, + context: Context +) \ No newline at end of file diff --git a/src/main/scala/gitbucket/core/util/Notifier.scala b/src/main/scala/gitbucket/core/util/Notifier.scala index b851c7b..c5efe0f 100644 --- a/src/main/scala/gitbucket/core/util/Notifier.scala +++ b/src/main/scala/gitbucket/core/util/Notifier.scala @@ -75,7 +75,14 @@ database withSession { implicit session => defining( s"[${r.name}] ${issue.title} (#${issue.issueId})" -> - msg(Markdown.toHtml(content, r, false, true, false))) { case (subject, msg) => + msg(Markdown.toHtml( + markdown = content, + repository = r, + enableWikiLink = false, + enableRefsLink = true, + enableAnchor = false, + enableLineBreaks = false + ))) { case (subject, msg) => recipients(issue) { to => val email = new HtmlEmail email.setHostName(smtp.host) diff --git a/src/main/scala/gitbucket/core/view/Markdown.scala b/src/main/scala/gitbucket/core/view/Markdown.scala index 8b655ea..2d78546 100644 --- a/src/main/scala/gitbucket/core/view/Markdown.scala +++ b/src/main/scala/gitbucket/core/view/Markdown.scala @@ -19,6 +19,7 @@ * @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 + * @param enableLineBreaks if true then render line breaks as <br> * @param enableTaskList if true then task list syntax is available * @param hasWritePermission true if user has writable to ths given repository * @param pages the list of existing Wiki pages @@ -28,6 +29,7 @@ enableWikiLink: Boolean, enableRefsLink: Boolean, enableAnchor: Boolean, + enableLineBreaks: Boolean, enableTaskList: Boolean = false, hasWritePermission: Boolean = false, pages: List[String] = Nil)(implicit context: Context): String = { @@ -43,7 +45,7 @@ val options = new Options() options.setSanitize(true) - options.setBreaks(true) + options.setBreaks(enableLineBreaks) val renderer = new GitBucketMarkedRenderer(options, repository, enableWikiLink, enableRefsLink, enableAnchor, enableTaskList, hasWritePermission, pages) Marked.marked(source, options, renderer) } diff --git a/src/main/scala/gitbucket/core/view/helpers.scala b/src/main/scala/gitbucket/core/view/helpers.scala index 3ee2c91..69418fc 100644 --- a/src/main/scala/gitbucket/core/view/helpers.scala +++ b/src/main/scala/gitbucket/core/view/helpers.scala @@ -84,14 +84,25 @@ /** * Converts Markdown of Wiki pages to HTML. */ - def markdown(value: String, + def markdown(markdown: String, repository: RepositoryService.RepositoryInfo, enableWikiLink: Boolean, enableRefsLink: Boolean, + enableLineBreaks: Boolean, enableTaskList: Boolean = false, hasWritePermission: Boolean = false, pages: List[String] = Nil)(implicit context: Context): Html = - Html(Markdown.toHtml(value, repository, enableWikiLink, enableRefsLink, true, enableTaskList, hasWritePermission, pages)) + Html(Markdown.toHtml( + markdown = markdown, + repository = repository, + enableWikiLink = enableWikiLink, + enableRefsLink = enableRefsLink, + enableAnchor = true, + enableLineBreaks = enableLineBreaks, + enableTaskList = enableTaskList, + hasWritePermission = hasWritePermission, + pages = pages + )) /** * Render the given source (only markdown is supported in default) as HTML. diff --git a/src/main/twirl/gitbucket/core/helper/commitcomment.scala.html b/src/main/twirl/gitbucket/core/helper/commitcomment.scala.html index 86dd6fc..e26f9c4 100644 --- a/src/main/twirl/gitbucket/core/helper/commitcomment.scala.html +++ b/src/main/twirl/gitbucket/core/helper/commitcomment.scala.html @@ -34,7 +34,15 @@