Re: [PATCH] gitweb: Don't append ';js=(0|1)' to external links
- From
Jürgen Kreileder <jk@blackdown.de>
- Date
- Nov 29, 2011, 21:31 UTC
- Message-ID
- <CAKD0UuyH3m0RR2=jk5apFjVMgbD5iWeztR94mE-m7q9dyYKR2Q@mail.gmail.com>
- In-Reply-To
- <m3pqgaloda.fsf@localhost.localdomain>
On Tue, Nov 29, 2011 at 20:28, Jakub Narebski <jnareb@gmail.com> wrote:
> Jürgen Kreileder <jk@blackdown.de> writes:
[...]
> Thanks for this, but I think a better solution would be to explicitly > mark the few external links we have e.g. with 'class="external"', and > use that to avoid adding ';js=(0|1)' to them.
This won't work because there are more than a few external links. Think of links added in the header or footer or via a project specific README.html.
You would have to do it the other way round: Mark all internal links.
Show 66 quoted lines
> This has the advantage that we can use different style to mark
> outgoing external links.
>
> I even have such patch somewhere in the StGit stack...
> -- >8 --
> Subject: [PATCH] gitweb: Mark external links
>
> ...and do not add 'js=1' to them with JavaScript.
>
> Both $logo_url and $home_link links are now marked with "external"
> class, and fixLink does not add 'js=1' to them on click. We add
> 'js=1' to internal link to make server-side of gitweb know that it can
> use JavaScript-only actions; we shouldn't do this for extrenal links,
> as 'js=1' might mean something else to them.
>
> Note that only links using A element matter: images (linked using
> IMG), stylesheets (linked using STYLE) and JavaScript files (linked
> using SCRIPT) were never affected.
>
> Signed-off-by: Jakub Narebski <jnareb@gmail.com>
> ---
> gitweb/gitweb.perl | 5 ++++-
> gitweb/static/js/javascript-detection.js | 5 +++++
> 2 files changed, 9 insertions(+), 1 deletions(-)
>
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index 7456a4b..f1c1caa 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -3626,13 +3626,16 @@ EOF
> print "<div class=\"page_header\">\n";
> if (defined $logo) {
> print $cgi->a({-href => esc_url($logo_url),
> + -class => "external",
> -title => $logo_label},
> $cgi->img({-src => esc_url($logo),
> -width => 72, -height => 27,
> -alt => "git",
> -class => "logo"}));
> }
> - print $cgi->a({-href => esc_url($home_link)}, $home_link_str) . " / ";
> + print $cgi->a({-href => esc_url($home_link)
> + -class => "external"},
> + $home_link_str) . " / ";
> if (defined $project) {
> print $cgi->a({-href => href(action=>"summary")}, esc_html($project));
> if (defined $action) {
> diff --git a/gitweb/static/js/javascript-detection.js b/gitweb/static/js/javascript-detection.js
> index 2b51e55..fc59e42 100644
> --- a/gitweb/static/js/javascript-detection.js
> +++ b/gitweb/static/js/javascript-detection.js
> @@ -60,6 +60,11 @@ function fixLink(link) {
> */
> var jsExceptionsRe = /[;?]js=[01]$/;
>
> + // don't change links marked as external ($logo_url, $home_link)
> + if (link.className === 'external') {
> + return;
> + }
> +
> if (!jsExceptionsRe.test(link)) { // =~ /[;?]js=[01]$/;
> link.href +=
> (link.href.indexOf('?') === -1 ? '?' : ';') + 'js=1';
>
>
>-- http://blog.blackdown.de/ http://www.flickr.com/photos/jkreileder/