]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mdhelp: support anchor links to titles - like [test](#grid-items)
authorJaroslav Kysela <perex@perex.cz>
Thu, 14 Apr 2016 10:03:15 +0000 (12:03 +0200)
committerJaroslav Kysela <perex@perex.cz>
Thu, 14 Apr 2016 10:03:15 +0000 (12:03 +0200)
src/webui/static/app/ext.css
src/webui/static/app/tvheadend.js

index 8d5a4abbf090a31afe5c0caf5309720b528a7bb1..d2bf812c2da7e43fa39b29b04b97ed767432c222 100644 (file)
 .hts-doc-text a {
     cursor: pointer;
     text-decoration: underline;
-    color:blue;
+    color: blue;
+}
+
+.hts-doc-text .hts-doc-anchor {
+    color: inherit;
+    text-decoration: inherit;
+    cursor: inherit;
 }
 
 .tv-video-idle {
index 8d29cf5276cb18e13376e614e9c9d459a565acac..e41b749428f2ab860b0351c5d43bdc20abb505d7 100644 (file)
@@ -99,7 +99,7 @@ tvheadend.mdhelp = function(pagename) {
     var parse = function(text) {
         var renderer = new marked.Renderer;
         renderer.link = function(href, title, text) {
-            if (href.indexOf(':/') === -1) {
+            if (href.indexOf(':/') === -1 && href.indexOf('#') > 1) {
                 var r = '<a page="' + href + '"';
                 if (title) r += ' title="' + title + '"';
                 return r + '>' + text + '</a>';
@@ -115,7 +115,13 @@ tvheadend.mdhelp = function(pagename) {
             }
             return marked.Renderer.prototype.image.call(this, href, title, text);
         };
-        opts = { renderer: renderer };
+        renderer.heading = function(text, level, raw) {
+            var id = raw.toLowerCase().replace(/[^\w]+/g, '-');
+            return '<h' + level + ' id="' + this.options.headerPrefix + id +
+                   '"><a class="hts-doc-anchor" href="#' + id + '">' + text +
+                   '</a></h' + level + '>\n';
+        };
+        opts = { renderer: renderer, headerPrefix: 'tvh-doc-hdr-' };
         return marked(text, opts);
     }
 
@@ -202,8 +208,17 @@ tvheadend.mdhelp = function(pagename) {
                 render: function(win) {
                     win.body.on('click', function(e, dom) {
                         var page = dom.getAttribute('page');
-                        if (page)
+                        if (page) {
                             tvheadend.mdhelp(page);
+                            return;
+                        }
+                        var href = dom.getAttribute('href');
+                        if (href.indexOf('#') !== -1) {
+                            var id = 'tvh-doc-hdr-' + href.substring(1);
+                            var el = document.getElementById(id);
+                            el.scrollIntoView();
+                            return;
+                        }
                     });
                 },
                 afterrender: function(win) {