diff --git a/src/main/scala/gitbucket/core/plugin/Renderer.scala b/src/main/scala/gitbucket/core/plugin/Renderer.scala index 8efb125..ed8a42b 100644 --- a/src/main/scala/gitbucket/core/plugin/Renderer.scala +++ b/src/main/scala/gitbucket/core/plugin/Renderer.scala @@ -20,7 +20,7 @@ object MarkdownRenderer extends Renderer { override def render(request: RenderRequest): Html = { import request._ - Html(Markdown.toHtml(fileContent, repository, enableWikiLink, enableRefsLink)(context)) + Html(Markdown.toHtml(fileContent, repository, enableWikiLink, enableRefsLink, enableAnchor)(context)) } } @@ -41,4 +41,5 @@ 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 b7dbbe8..54b01e3 100644 --- a/src/main/scala/gitbucket/core/util/Notifier.scala +++ b/src/main/scala/gitbucket/core/util/Notifier.scala @@ -75,7 +75,7 @@ database withSession { implicit session => defining( s"[${r.name}] ${issue.title} (#${issue.issueId})" -> - msg(Markdown.toHtml(content, r, false, true))) { case (subject, msg) => + msg(Markdown.toHtml(content, r, false, true, 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 2cf6ca5..d2aa16c 100644 --- a/src/main/scala/gitbucket/core/view/Markdown.scala +++ b/src/main/scala/gitbucket/core/view/Markdown.scala @@ -18,11 +18,20 @@ /** * Converts Markdown of Wiki pages to HTML. + * + * @param repository the repository which contains the markdown + * @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 enableTaskList if true then task list syntax is available + * @param hasWritePermission + * @param pages the list of existing Wiki pages */ def toHtml(markdown: String, repository: RepositoryService.RepositoryInfo, enableWikiLink: Boolean, enableRefsLink: Boolean, + enableAnchor: Boolean, enableTaskList: Boolean = false, hasWritePermission: Boolean = false, pages: List[String] = Nil)(implicit context: Context): String = { @@ -41,7 +50,7 @@ Extensions.AUTOLINKS | Extensions.WIKILINKS | Extensions.FENCED_CODE_BLOCKS | Extensions.TABLES | Extensions.HARDWRAPS | Extensions.SUPPRESS_ALL_HTML ).parseMarkdown(source.toCharArray) - new GitBucketHtmlSerializer(markdown, repository, enableWikiLink, enableRefsLink, enableTaskList, hasWritePermission, pages).toHtml(rootNode) + new GitBucketHtmlSerializer(markdown, repository, enableWikiLink, enableRefsLink, enableAnchor, enableTaskList, hasWritePermission, pages).toHtml(rootNode) } } @@ -101,6 +110,7 @@ enableWikiLink: Boolean, enableRefsLink: Boolean, enableTaskList: Boolean, + enableAnchor: Boolean, hasWritePermission: Boolean, pages: List[String] )(implicit val context: Context) extends ToHtmlSerializer( @@ -152,11 +162,15 @@ val tag = s"h${node.getLevel}" val headerTextString = printChildrenToString(node) val anchorName = GitBucketHtmlSerializer.generateAnchorName(headerTextString) - printer.print(s"""<$tag class="markdown-head">""") - printer.print(s"""""") - printer.print(s"""""") + if(enableAnchor){ + printer.print(s"""<$tag class="markdown-head">""") + printer.print(s"""""") + printer.print(s"""""") + } visitChildren(node) - printer.print(s"") + if(enableAnchor){ + printer.print(s"") + } } override def visit(node: HeaderNode): Unit = { diff --git a/src/main/scala/gitbucket/core/view/helpers.scala b/src/main/scala/gitbucket/core/view/helpers.scala index b2ff32b..a0320ce 100644 --- a/src/main/scala/gitbucket/core/view/helpers.scala +++ b/src/main/scala/gitbucket/core/view/helpers.scala @@ -91,16 +91,16 @@ enableTaskList: Boolean = false, hasWritePermission: Boolean = false, pages: List[String] = Nil)(implicit context: Context): Html = - Html(Markdown.toHtml(value, repository, enableWikiLink, enableRefsLink, enableTaskList, hasWritePermission, pages)) + Html(Markdown.toHtml(value, repository, enableWikiLink, enableRefsLink, enableTaskList, true, hasWritePermission, pages)) def renderMarkup(filePath: List[String], fileContent: String, branch: String, repository: RepositoryService.RepositoryInfo, - enableWikiLink: Boolean, enableRefsLink: Boolean)(implicit context: Context): Html = { + enableWikiLink: Boolean, enableRefsLink: Boolean, enableAnchor: Boolean)(implicit context: Context): Html = { val fileName = filePath.reverse.head.toLowerCase val extension = FileUtil.getExtension(fileName) val renderer = PluginRegistry().getRenderer(extension) - renderer.render(RenderRequest(filePath, fileContent, branch, repository, enableWikiLink, enableRefsLink, context)) + renderer.render(RenderRequest(filePath, fileContent, branch, repository, enableWikiLink, enableRefsLink, enableAnchor, context)) } def isRenderable(fileName: String): Boolean = { diff --git a/src/main/twirl/gitbucket/core/repo/blob.scala.html b/src/main/twirl/gitbucket/core/repo/blob.scala.html index 8ed980e..29972b2 100644 --- a/src/main/twirl/gitbucket/core/repo/blob.scala.html +++ b/src/main/twirl/gitbucket/core/repo/blob.scala.html @@ -78,7 +78,7 @@ @defining(isRenderable(pathList.reverse.head)){ isRrenderable => @if(!isBlame && isRrenderable) {
- @renderMarkup(pathList, content.content.get, branch, repository, false, false) + @renderMarkup(pathList, content.content.get, branch, repository, false, false, true)
} else {
@content.content.get
diff --git a/src/main/twirl/gitbucket/core/repo/files.scala.html b/src/main/twirl/gitbucket/core/repo/files.scala.html index 2227042..496cd83 100644 --- a/src/main/twirl/gitbucket/core/repo/files.scala.html +++ b/src/main/twirl/gitbucket/core/repo/files.scala.html @@ -128,7 +128,7 @@ @readme.map { case(filePath, content) =>
@filePath.reverse.head
-
@renderMarkup(filePath, content, branch, repository, false, false)
+
@renderMarkup(filePath, content, branch, repository, false, false, true)
} }