From: Jaroslav Kysela Date: Thu, 14 Apr 2016 10:03:15 +0000 (+0200) Subject: mdhelp: support anchor links to titles - like [test](#grid-items) X-Git-Tag: v4.2.1~655 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d931020354f08939a688bb090df29aa78e9514c6;p=thirdparty%2Ftvheadend.git mdhelp: support anchor links to titles - like [test](#grid-items) --- diff --git a/src/webui/static/app/ext.css b/src/webui/static/app/ext.css index 8d5a4abbf..d2bf812c2 100644 --- a/src/webui/static/app/ext.css +++ b/src/webui/static/app/ext.css @@ -948,7 +948,13 @@ .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 { diff --git a/src/webui/static/app/tvheadend.js b/src/webui/static/app/tvheadend.js index 8d29cf527..e41b74942 100644 --- a/src/webui/static/app/tvheadend.js +++ b/src/webui/static/app/tvheadend.js @@ -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 = '' + text + ''; @@ -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 '' + text + + '\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) {