Re: [PATCH 3/4] gitweb: Don't append ';js=(0|1)' to external links

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

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 days
diff --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');
 		}

Re: [PATCH 3/4] gitweb: Don't append ';js=(0|1)' to external links

From: Jakub Narębski <hidden>
Date: 2016-06-15 22:56:45

W dniu 09.04.2013 19:54, Jürgen Kreileder napisał:
Jakub Narębski [off-list ref] writes:
quoted
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.
Thanks, I didn't know that.

So, with that explanation:

Acked-by: Jakub Narebski <redacted>
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.
Thanks.  This is a nice solution for a problem which I didn't know
how to solve (I was thinking about using <a class="internal" ...>,
but your solution is better).

-- 
Jakub Narębski
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help