From: Jürgen Kreileder Date: Tue, 29 Nov 2011 21:31:20 GMT Subject: Re: [PATCH] gitweb: Don't append ';js=(0|1)' to external links Message-ID: In-Reply-To: On Tue, Nov 29, 2011 at 20:28, Jakub Narebski wrote: > Jürgen Kreileder 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. > 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 > --- >  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 "
\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/