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"$tag>")
}
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();
});