@@ -3683,6 +3683,20 @@ sub get_page_title {
36833683 return $title ;
36843684}
36853685
3686+ sub get_content_type_html {
3687+ # require explicit support from the UA if we are to send the page as
3688+ # 'application/xhtml+xml', otherwise send it as plain old 'text/html'.
3689+ # we have to do this because MSIE sometimes globs '*/*', pretending to
3690+ # support xhtml+xml but choking when it gets what it asked for.
3691+ if (defined $cgi -> http(' HTTP_ACCEPT' ) &&
3692+ $cgi -> http(' HTTP_ACCEPT' ) =~ m / (,|;|\s |^)application\/ xhtml\+ xml(,|;|\s |$ )/ &&
3693+ $cgi -> Accept(' application/xhtml+xml' ) != 0) {
3694+ return ' application/xhtml+xml' ;
3695+ } else {
3696+ return ' text/html' ;
3697+ }
3698+ }
3699+
36863700sub print_feed_meta {
36873701 if (defined $project ) {
36883702 my %href_params = get_feed_info();
@@ -3728,24 +3742,90 @@ sub print_feed_meta {
37283742 }
37293743}
37303744
3745+ sub print_header_links {
3746+ my $status = shift ;
3747+
3748+ # print out each stylesheet that exist, providing backwards capability
3749+ # for those people who defined $stylesheet in a config file
3750+ if (defined $stylesheet ) {
3751+ print ' <link rel="stylesheet" type="text/css" href="' .esc_url($stylesheet ).' "/>' ." \n " ;
3752+ } else {
3753+ foreach my $stylesheet (@stylesheets ) {
3754+ next unless $stylesheet ;
3755+ print ' <link rel="stylesheet" type="text/css" href="' .esc_url($stylesheet ).' "/>' ." \n " ;
3756+ }
3757+ }
3758+ print_feed_meta()
3759+ if ($status eq ' 200 OK' );
3760+ if (defined $favicon ) {
3761+ print qq( <link rel="shortcut icon" href=") .esc_url($favicon ).qq( " type="image/png" />\n ) ;
3762+ }
3763+ }
3764+
3765+ sub print_nav_breadcrumbs {
3766+ my %opts = @_ ;
3767+
3768+ print $cgi -> a({-href => esc_url($home_link )}, $home_link_str ) . " / " ;
3769+ if (defined $project ) {
3770+ print $cgi -> a({-href => href(action => " summary" )}, esc_html($project ));
3771+ if (defined $action ) {
3772+ my $action_print = $action ;
3773+ if (defined $opts {-action_extra}) {
3774+ $action_print = $cgi -> a({-href => href(action => $action )},
3775+ $action );
3776+ }
3777+ print " / $action_print " ;
3778+ }
3779+ if (defined $opts {-action_extra}) {
3780+ print " / $opts {-action_extra}" ;
3781+ }
3782+ print " \n " ;
3783+ }
3784+ }
3785+
3786+ sub print_search_form {
3787+ if (!defined $searchtext ) {
3788+ $searchtext = " " ;
3789+ }
3790+ my $search_hash ;
3791+ if (defined $hash_base ) {
3792+ $search_hash = $hash_base ;
3793+ } elsif (defined $hash ) {
3794+ $search_hash = $hash ;
3795+ } else {
3796+ $search_hash = " HEAD" ;
3797+ }
3798+ my $action = $my_uri ;
3799+ my $use_pathinfo = gitweb_check_feature(' pathinfo' );
3800+ if ($use_pathinfo ) {
3801+ $action .= " /" .esc_url($project );
3802+ }
3803+ print $cgi -> startform(-method => " get" , -action => $action ) .
3804+ " <div class=\" search\" >\n " .
3805+ (!$use_pathinfo &&
3806+ $cgi -> input({-name => " p" , -value => $project , -type => " hidden" }) . " \n " ) .
3807+ $cgi -> input({-name => " a" , -value => " search" , -type => " hidden" }) . " \n " .
3808+ $cgi -> input({-name => " h" , -value => $search_hash , -type => " hidden" }) . " \n " .
3809+ $cgi -> popup_menu(-name => ' st' , -default => ' commit' ,
3810+ -values => [' commit' , ' grep' , ' author' , ' committer' , ' pickaxe' ]) .
3811+ $cgi -> sup($cgi -> a({-href => href(action => " search_help" )}, " ?" )) .
3812+ " search:\n " ,
3813+ $cgi -> textfield(-name => " s" , -value => $searchtext ) . " \n " .
3814+ " <span title=\" Extended regular expression\" >" .
3815+ $cgi -> checkbox(-name => ' sr' , -value => 1, -label => ' re' ,
3816+ -checked => $search_use_regexp ) .
3817+ " </span>" .
3818+ " </div>" .
3819+ $cgi -> end_form() . " \n " ;
3820+ }
3821+
37313822sub git_header_html {
37323823 my $status = shift || " 200 OK" ;
37333824 my $expires = shift ;
37343825 my %opts = @_ ;
37353826
37363827 my $title = get_page_title();
3737- my $content_type ;
3738- # require explicit support from the UA if we are to send the page as
3739- # 'application/xhtml+xml', otherwise send it as plain old 'text/html'.
3740- # we have to do this because MSIE sometimes globs '*/*', pretending to
3741- # support xhtml+xml but choking when it gets what it asked for.
3742- if (defined $cgi -> http(' HTTP_ACCEPT' ) &&
3743- $cgi -> http(' HTTP_ACCEPT' ) =~ m / (,|;|\s |^)application\/ xhtml\+ xml(,|;|\s |$ )/ &&
3744- $cgi -> Accept(' application/xhtml+xml' ) != 0) {
3745- $content_type = ' application/xhtml+xml' ;
3746- } else {
3747- $content_type = ' text/html' ;
3748- }
3828+ my $content_type = get_content_type_html();
37493829 print $cgi -> header(-type => $content_type , -charset => ' utf-8' ,
37503830 -status => $status , -expires => $expires )
37513831 unless ($opts {' -no_http_header' });
@@ -3767,22 +3847,7 @@ sub git_header_html {
37673847 if ($ENV {' PATH_INFO' }) {
37683848 print " <base href=\" " .esc_url($base_url )." \" />\n " ;
37693849 }
3770- # print out each stylesheet that exist, providing backwards capability
3771- # for those people who defined $stylesheet in a config file
3772- if (defined $stylesheet ) {
3773- print ' <link rel="stylesheet" type="text/css" href="' .esc_url($stylesheet ).' "/>' ." \n " ;
3774- } else {
3775- foreach my $stylesheet (@stylesheets ) {
3776- next unless $stylesheet ;
3777- print ' <link rel="stylesheet" type="text/css" href="' .esc_url($stylesheet ).' "/>' ." \n " ;
3778- }
3779- }
3780- print_feed_meta()
3781- if ($status eq ' 200 OK' );
3782- if (defined $favicon ) {
3783- print qq( <link rel="shortcut icon" href=") .esc_url($favicon ).qq( " type="image/png" />\n ) ;
3784- }
3785-
3850+ print_header_links($status );
37863851 print " </head>\n " .
37873852 " <body>\n " ;
37883853
@@ -3799,59 +3864,12 @@ sub git_header_html {
37993864 -alt => " git" ,
38003865 -class => " logo" }));
38013866 }
3802- print $cgi -> a({-href => esc_url($home_link )}, $home_link_str ) . " / " ;
3803- if (defined $project ) {
3804- print $cgi -> a({-href => href(action => " summary" )}, esc_html($project ));
3805- if (defined $action ) {
3806- my $action_print = $action ;
3807- if (defined $opts {-action_extra}) {
3808- $action_print = $cgi -> a({-href => href(action => $action )},
3809- $action );
3810- }
3811- print " / $action_print " ;
3812- }
3813- if (defined $opts {-action_extra}) {
3814- print " / $opts {-action_extra}" ;
3815- }
3816- print " \n " ;
3817- }
3867+ print_nav_breadcrumbs(%opts );
38183868 print " </div>\n " ;
38193869
38203870 my $have_search = gitweb_check_feature(' search' );
38213871 if (defined $project && $have_search ) {
3822- if (!defined $searchtext ) {
3823- $searchtext = " " ;
3824- }
3825- my $search_hash ;
3826- if (defined $hash_base ) {
3827- $search_hash = $hash_base ;
3828- } elsif (defined $hash ) {
3829- $search_hash = $hash ;
3830- } else {
3831- $search_hash = " HEAD" ;
3832- }
3833- my $action = $my_uri ;
3834- my $use_pathinfo = gitweb_check_feature(' pathinfo' );
3835- if ($use_pathinfo ) {
3836- $action .= " /" .esc_url($project );
3837- }
3838- print $cgi -> startform(-method => " get" , -action => $action ) .
3839- " <div class=\" search\" >\n " .
3840- (!$use_pathinfo &&
3841- $cgi -> input({-name => " p" , -value => $project , -type => " hidden" }) . " \n " ) .
3842- $cgi -> input({-name => " a" , -value => " search" , -type => " hidden" }) . " \n " .
3843- $cgi -> input({-name => " h" , -value => $search_hash , -type => " hidden" }) . " \n " .
3844- $cgi -> popup_menu(-name => ' st' , -default => ' commit' ,
3845- -values => [' commit' , ' grep' , ' author' , ' committer' , ' pickaxe' ]) .
3846- $cgi -> sup($cgi -> a({-href => href(action => " search_help" )}, " ?" )) .
3847- " search:\n " ,
3848- $cgi -> textfield(-name => " s" , -value => $searchtext ) . " \n " .
3849- " <span title=\" Extended regular expression\" >" .
3850- $cgi -> checkbox(-name => ' sr' , -value => 1, -label => ' re' ,
3851- -checked => $search_use_regexp ) .
3852- " </span>" .
3853- " </div>" .
3854- $cgi -> end_form() . " \n " ;
3872+ print_search_form();
38553873 }
38563874}
38573875
0 commit comments