]> Lady’s Gitweb - Gitweb/blobdiff - gitweb.cgi
gitweb: Include a site name in page titles
[Gitweb] / gitweb.cgi
index dab419f28b74b6ddc658772a2a718e9fedc252c03aac983060f243ea79046061..2f313df912644b2c33639ae3539a3295cd3d2859d92d0dba31ae4b40b1eb6da3 100755 (executable)
@@ -39,10 +39,17 @@ if ($git_version =~ m/git version (.*)$/) {
 
 # location for temporary files needed for diffs
 our $git_temp = "/tmp/gitweb";
 
 # location for temporary files needed for diffs
 our $git_temp = "/tmp/gitweb";
+if (! -d $git_temp) {
+    mkdir($git_temp, 0700) || die_error("Couldn't mkdir $git_temp");
+}
 
 # target of the home link on top of all pages
 our $home_link = $my_uri;
 
 
 # target of the home link on top of all pages
 our $home_link = $my_uri;
 
+# name of your site or organization to appear in page titles
+# replace this with something more descriptive for clearer bookmarks
+our $site_name = $ENV{'SERVER_NAME'} || "Untitled";
+
 # html text to include at home page
 our $home_text = "indextext.html";
 
 # html text to include at home page
 our $home_text = "indextext.html";
 
@@ -277,7 +284,7 @@ sub git_header_html {
        my $status = shift || "200 OK";
        my $expires = shift;
 
        my $status = shift || "200 OK";
        my $expires = shift;
 
-       my $title = "git";
+       my $title = "$site_name git";
        if (defined $project) {
                $title .= " - $project";
                if (defined $action) {
        if (defined $project) {
                $title .= " - $project";
                if (defined $action) {
@@ -290,7 +297,17 @@ sub git_header_html {
                        }
                }
        }
                        }
                }
        }
-       print $cgi->header(-type=>'text/html',  -charset => 'utf-8', -status=> $status, -expires => $expires);
+       my $content_type;
+       # require explicit support from the UA if we are to send the page as
+       # 'application/xhtml+xml', otherwise send it as plain old 'text/html'.
+       # we have to do this because MSIE sometimes globs '*/*', pretending to
+       # support xhtml+xml but choking when it gets what it asked for.
+       if ($cgi->http('HTTP_ACCEPT') =~ m/(,|;|\s|^)application\/xhtml\+xml(,|;|\s|$)/ && $cgi->Accept('application/xhtml+xml') != 0) {
+               $content_type = 'application/xhtml+xml';
+       } else {
+               $content_type = 'text/html';
+       }
+       print $cgi->header(-type=>$content_type,  -charset => 'utf-8', -status=> $status, -expires => $expires);
        print <<EOF;
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        print <<EOF;
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
@@ -298,7 +315,7 @@ sub git_header_html {
 <!-- git web interface v$version, (C) 2005-2006, Kay Sievers <kay.sievers\@vrfy.org>, Christian Gierke -->
 <!-- git core binaries version $git_version -->
 <head>
 <!-- git web interface v$version, (C) 2005-2006, Kay Sievers <kay.sievers\@vrfy.org>, Christian Gierke -->
 <!-- git core binaries version $git_version -->
 <head>
-<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+<meta http-equiv="content-type" content="$content_type; charset=utf-8"/>
 <meta name="robots" content="index, nofollow"/>
 <title>$title</title>
 <link rel="stylesheet" type="text/css" href="$stylesheet"/>
 <meta name="robots" content="index, nofollow"/>
 <title>$title</title>
 <link rel="stylesheet" type="text/css" href="$stylesheet"/>
@@ -1455,61 +1472,6 @@ sub git_get_hash_by_path {
        }
 }
 
        }
 }
 
-sub git_blob {
-       if (!defined $hash && defined $file_name) {
-               my $base = $hash_base || git_read_head($project);
-               $hash = git_get_hash_by_path($base, $file_name, "blob") || die_error(undef, "Error lookup file.");
-       }
-       my $have_blame = git_get_project_config_bool ('blame');
-       open my $fd, "-|", "$gitbin/git-cat-file blob $hash" or die_error(undef, "Open failed.");
-       git_header_html();
-       if (defined $hash_base && (my %co = git_read_commit($hash_base))) {
-               print "<div class=\"page_nav\">\n" .
-                     $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=summary")}, "summary") .
-                     " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=shortlog")}, "shortlog") .
-                     " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=log")}, "log") .
-                     " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commit;h=$hash_base")}, "commit") .
-                     " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commitdiff;h=$hash_base")}, "commitdiff") .
-                     " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=tree;h=$co{'tree'};hb=$hash_base")}, "tree") . "<br/>\n";
-               if (defined $file_name) {
-                       if ($have_blame) {
-                               print $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blame;h=$hash;hb=$hash_base;f=$file_name")}, "blame") .  " | ";
-                       }
-                       print $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob_plain;h=$hash;f=$file_name")}, "plain") .
-                       " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob;hb=HEAD;f=$file_name")}, "head") . "<br/>\n";
-               } else {
-                       print $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob_plain;h=$hash")}, "plain") . "<br/>\n";
-               }
-               print "</div>\n".
-                      "<div>" .
-                     $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commit;h=$hash_base"), -class => "title"}, esc_html($co{'title'})) .
-                     "</div>\n";
-       } else {
-               print "<div class=\"page_nav\">\n" .
-                     "<br/><br/></div>\n" .
-                     "<div class=\"title\">$hash</div>\n";
-       }
-       if (defined $file_name) {
-               print "<div class=\"page_path\"><b>" . esc_html($file_name) . "</b></div>\n";
-       }
-       print "<div class=\"page_body\">\n";
-       my $nr;
-       while (my $line = <$fd>) {
-               chomp $line;
-               $nr++;
-               while ((my $pos = index($line, "\t")) != -1) {
-                       if (my $count = (8 - ($pos % 8))) {
-                               my $spaces = ' ' x $count;
-                               $line =~ s/\t/$spaces/;
-                       }
-               }
-               printf "<div class=\"pre\"><a id=\"l%i\" href=\"#l%i\" class=\"linenr\">%4i</a> %s</div>\n", $nr, $nr, $nr, esc_html($line);
-       }
-       close $fd or print "Reading blob failed.\n";
-       print "</div>";
-       git_footer_html();
-}
-
 sub mimetype_guess_file {
        my $filename = shift;
        my $mimemap = shift;
 sub mimetype_guess_file {
        my $filename = shift;
        my $mimemap = shift;
@@ -1548,14 +1510,14 @@ sub git_blob_plain_mimetype {
        my $fd = shift;
        my $filename = shift;
 
        my $fd = shift;
        my $filename = shift;
 
-       # just in case
-       return $default_blob_plain_mimetype unless $fd;
-
        if ($filename) {
                my $mime = mimetype_guess($filename);
                $mime and return $mime;
        }
 
        if ($filename) {
                my $mime = mimetype_guess($filename);
                $mime and return $mime;
        }
 
+       # just in case
+       return $default_blob_plain_mimetype unless $fd;
+
        if (-T $fd) {
                return 'text/plain' .
                       ($default_text_plain_charset ? '; charset='.$default_text_plain_charset : '');
        if (-T $fd) {
                return 'text/plain' .
                       ($default_text_plain_charset ? '; charset='.$default_text_plain_charset : '');
@@ -1573,8 +1535,10 @@ sub git_blob_plain_mimetype {
 }
 
 sub git_blob_plain {
 }
 
 sub git_blob_plain {
-       open my $fd, "-|", "$gitbin/git-cat-file blob $hash" or return;
-       my $type = git_blob_plain_mimetype($fd, $file_name);
+       my $type = shift;
+       open my $fd, "-|", "$gitbin/git-cat-file blob $hash" or die_error("Couldn't cat $file_name, $hash");
+
+       $type ||= git_blob_plain_mimetype($fd, $file_name);
 
        # save as filename, even when no $file_name is given
        my $save_as = "$hash";
 
        # save as filename, even when no $file_name is given
        my $save_as = "$hash";
@@ -1593,6 +1557,66 @@ sub git_blob_plain {
        close $fd;
 }
 
        close $fd;
 }
 
+sub git_blob {
+       if (!defined $hash && defined $file_name) {
+               my $base = $hash_base || git_read_head($project);
+               $hash = git_get_hash_by_path($base, $file_name, "blob") || die_error(undef, "Error lookup file.");
+       }
+       my $have_blame = git_get_project_config_bool ('blame');
+       open my $fd, "-|", "$gitbin/git-cat-file blob $hash" or die_error(undef, "Open failed.");
+       my $mimetype = git_blob_plain_mimetype($fd, $file_name);
+       if ($mimetype !~ m/^text\//) {
+               close $fd;
+               return git_blob_plain($mimetype);
+       }
+       git_header_html();
+       if (defined $hash_base && (my %co = git_read_commit($hash_base))) {
+               print "<div class=\"page_nav\">\n" .
+                     $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=summary")}, "summary") .
+                     " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=shortlog")}, "shortlog") .
+                     " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=log")}, "log") .
+                     " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commit;h=$hash_base")}, "commit") .
+                     " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commitdiff;h=$hash_base")}, "commitdiff") .
+                     " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=tree;h=$co{'tree'};hb=$hash_base")}, "tree") . "<br/>\n";
+               if (defined $file_name) {
+                       if ($have_blame) {
+                               print $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blame;h=$hash;hb=$hash_base;f=$file_name")}, "blame") .  " | ";
+                       }
+                       print $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob_plain;h=$hash;f=$file_name")}, "plain") .
+                       " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob;hb=HEAD;f=$file_name")}, "head") . "<br/>\n";
+               } else {
+                       print $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob_plain;h=$hash")}, "plain") . "<br/>\n";
+               }
+               print "</div>\n".
+                      "<div>" .
+                     $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commit;h=$hash_base"), -class => "title"}, esc_html($co{'title'})) .
+                     "</div>\n";
+       } else {
+               print "<div class=\"page_nav\">\n" .
+                     "<br/><br/></div>\n" .
+                     "<div class=\"title\">$hash</div>\n";
+       }
+       if (defined $file_name) {
+               print "<div class=\"page_path\"><b>" . esc_html($file_name) . "</b></div>\n";
+       }
+       print "<div class=\"page_body\">\n";
+       my $nr;
+       while (my $line = <$fd>) {
+               chomp $line;
+               $nr++;
+               while ((my $pos = index($line, "\t")) != -1) {
+                       if (my $count = (8 - ($pos % 8))) {
+                               my $spaces = ' ' x $count;
+                               $line =~ s/\t/$spaces/;
+                       }
+               }
+               printf "<div class=\"pre\"><a id=\"l%i\" href=\"#l%i\" class=\"linenr\">%4i</a> %s</div>\n", $nr, $nr, $nr, esc_html($line);
+       }
+       close $fd or print "Reading blob failed.\n";
+       print "</div>";
+       git_footer_html();
+}
+
 sub git_tree {
        if (!defined $hash) {
                $hash = git_read_head($project);
 sub git_tree {
        if (!defined $hash) {
                $hash = git_read_head($project);
@@ -1750,7 +1774,7 @@ sub git_opml {
        print "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n".
              "<opml version=\"1.0\">\n".
              "<head>".
        print "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n".
              "<opml version=\"1.0\">\n".
              "<head>".
-             "  <title>Git OPML Export</title>\n".
+             "  <title>$site_name Git OPML Export</title>\n".
              "</head>\n".
              "<body>\n".
              "<outline text=\"git RSS feeds\">\n";
              "</head>\n".
              "<body>\n".
              "<outline text=\"git RSS feeds\">\n";
This page took 0.270455 seconds and 4 git commands to generate.