]> Lady’s Gitweb - Gitweb/blobdiff - gitweb.perl
gitweb: Create links leading to 'blame_incremental' using JavaScript
[Gitweb] / gitweb.perl
index 1c279cc5a0f2ec180ec84e16cfba9ad1445746740f0fcf215b1143dca0e624b0..8854868cc83868f3c86ba6b8c0eb0619cc5809c43771b2d4179996d3af00a561 100755 (executable)
@@ -572,6 +572,8 @@ our @cgi_param_mapping = (
        snapshot_format => "sf",
        extra_options => "opt",
        search_use_regexp => "sr",
+       # this must be last entry (for manipulation from JavaScript)
+       javascript => "js"
 );
 our %cgi_param_mapping = @cgi_param_mapping;
 
@@ -3256,6 +3258,18 @@ sub git_footer_html {
                insert_file($site_footer);
        }
 
+       print qq!<script type="text/javascript" src="$javascript"></script>\n!;
+       if ($action eq 'blame_incremental') {
+               print qq!<script type="text/javascript">\n!.
+                     qq!startBlame("!. href(action=>"blame_data", -replay=>1) .qq!",\n!.
+                     qq!           "!. href() .qq!");\n!.
+                     qq!</script>\n!;
+       } else {
+               print qq!<script type="text/javascript">\n!.
+                     qq!window.onload = fixLinks;\n!.
+                     qq!</script>\n!;
+       }
+
        print "</body>\n" .
              "</html>";
 }
@@ -4807,6 +4821,10 @@ sub git_tag {
 
 sub git_blame_common {
        my $format = shift || 'porcelain';
+       if ($format eq 'porcelain' && $cgi->param('js')) {
+               $format = 'incremental';
+               $action = 'blame_incremental'; # for page title etc
+       }
 
        # permissions
        gitweb_check_feature('blame')
@@ -4886,7 +4904,7 @@ sub git_blame_common {
        if ($format eq 'incremental') {
                print "<noscript>\n<div class=\"error\"><center><b>\n".
                      "This page requires JavaScript to run.\n Use ".
-                     $cgi->a({-href => href(action=>'blame',-replay=>1)},
+                     $cgi->a({-href => href(action=>'blame',javascript=>0,-replay=>1)},
                              'this page').
                      " instead.\n".
                      "</b></center></div>\n</noscript>\n";
@@ -5017,14 +5035,6 @@ sub git_blame_common {
        close $fd
                or print "Reading blob failed\n";
 
-       if ($format eq 'incremental') {
-               print qq!<script type="text/javascript" src="$javascript"></script>\n!.
-                     qq!<script type="text/javascript">\n!.
-                     qq!startBlame("!. href(action=>"blame_data", -replay=>1) .qq!",\n!.
-                     qq!           "!. href() .qq!");\n!.
-                     qq!</script>\n!;
-       }
-
        git_footer_html();
 }
 
This page took 0.247212 seconds and 4 git commands to generate.