Re: [PATCH 3/4] gitweb: Don't append ';js=(0|1)' to external links
From: Jürgen Kreileder <hidden>
Date: 2016-06-15 22:56:45
Jakub Narębski [off-list ref] writes:
Jürgen Kreileder wrote:quoted
Don't add js parameters to links outside of gitweb itself.Hmmm... this limits adding ';js=(0|1)' to only links which begin with $my_url, i.e. absolute links beginning with gitweb's base URL. Wouldn't that mean that most internal gitweb-generated links wouldn't get ';js=(0|1)'? href(..., -full => 1) is not the default...
No, link.href is always absolute in JavaScript - even if the emitted URL was relative. Old: https://git.blackdown.de/old.cgi?p=contactalbum.git;a=summary;js=1 New: https://git.blackdown.de/?p=contactalbum.git;a=summary;js=1 With the old version the external links in the description got ';js=1' appended. With the new version, ';js=1' isn't on those links. Other links are the same in both versions.
quoted
Signed-off-by: Jürgen Kreileder <redacted> --- gitweb/gitweb.perl | 2 +- gitweb/static/js/javascript-detection.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 1309196..f0912d7 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl@@ -4165,7 +4165,7 @@ sub git_footer_html { print qq!<script type="text/javascript">\n!. qq!window.onload = function () {\n!; if (gitweb_check_feature('javascript-actions')) { - print qq! fixLinks();\n!; + print qq! fixLinks('$my_url');\n!; } if ($jstimezone && $tz_cookie && $datetime_class) { print qq! var tz_cookie = { name: '$tz_cookie', expires: 14, path: '/' };\n!. # in daysdiff --git a/gitweb/static/js/javascript-detection.js b/gitweb/static/js/javascript-detection.js index fa2596f..36964ad 100644 --- a/gitweb/static/js/javascript-detection.js +++ b/gitweb/static/js/javascript-detection.js@@ -29,11 +29,11 @@ var jsExceptionsRe = /[;?]js=[01](#.*)?$/; * * @globals jsExceptionsRe */ -function fixLinks() { +function fixLinks(baseurl) { var allLinks = document.getElementsByTagName("a") || document.links; for (var i = 0, len = allLinks.length; i < len; i++) { var link = allLinks[i]; - if (!jsExceptionsRe.test(link)) { + if (!jsExceptionsRe.test(link) && !link.href.indexOf(baseurl)) { link.href = link.href.replace(/(#|$)/, (link.href.indexOf('?') === -1 ? '?' : ';') + 'js=1$1'); }