diff --git a/src/main/scala/view/Markdown.scala b/src/main/scala/view/Markdown.scala index dba9670..483f3ea 100644 --- a/src/main/scala/view/Markdown.scala +++ b/src/main/scala/view/Markdown.scala @@ -116,8 +116,9 @@ val tag = s"h${node.getLevel}" val headerTextString = printChildrenToString(node) val anchorName = GitBucketHtmlSerializer.generateAnchorName(headerTextString) - printer.print(s"<$tag>") - printer.print(s"""""") + printer.print(s"""<$tag class="markdown-head">""") + printer.print(s"""""") + printer.print(s"""""") visitChildren(node) printer.print(s"") } diff --git a/src/main/webapp/assets/common/css/gitbucket.css b/src/main/webapp/assets/common/css/gitbucket.css index 4c69e73..8df22fc 100644 --- a/src/main/webapp/assets/common/css/gitbucket.css +++ b/src/main/webapp/assets/common/css/gitbucket.css @@ -850,3 +850,18 @@ border-top-right-radius: 4px; -moz-border-radius-topright: 4px; } + +.markdown-head { + position: relative; +} + +a.markdown-anchor-link { + position: absolute; + top: 16px; + left: -20px; + width: 32px; + height: 16px; + background-image: url(../images/link.png); + background-repeat: no-repeat; + display: none; +} diff --git a/src/main/webapp/assets/common/images/link.png b/src/main/webapp/assets/common/images/link.png new file mode 100644 index 0000000..25eacb7 --- /dev/null +++ b/src/main/webapp/assets/common/images/link.png Binary files differ diff --git a/src/main/webapp/assets/common/js/gitbucket.js b/src/main/webapp/assets/common/js/gitbucket.js index 5c6233d..12e86fa 100644 --- a/src/main/webapp/assets/common/js/gitbucket.js +++ b/src/main/webapp/assets/common/js/gitbucket.js @@ -11,6 +11,26 @@ $('img[data-toggle=tooltip]').tooltip(); $('a[data-toggle=tooltip]').tooltip(); + // anchor icon for markdown + $('.markdown-head').mouseenter(function(e){ + $(e.target).children('a.markdown-anchor-link').show(); + }); + $('.markdown-head').mouseleave(function(e){ + var anchorLink = $(e.target).children('a.markdown-anchor-link'); + if(anchorLink.data('active') != true){ + anchorLink.hide(); + } + }); + + $('a.markdown-anchor-link').mouseenter(function(e){ + $(e.target).data('active', true); + }); + + $('a.markdown-anchor-link').mouseleave(function(e){ + $(e.target).data('active', false); + $(e.target).hide(); + }); + // syntax highlighting by google-code-prettify prettyPrint(); });