X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FOutput.pm;h=1e00d4f8f47a0ebf36a03c4318a141a2f1c8692c;hb=75f310b238c60f78ead327acf10de22e93147584;hp=fd32541a02f52b12091445a41dd1d46b9ced3d13;hpb=31ef440741dc2f76bd4fffac902770b10e716350;p=koha.git diff --git a/C4/Output.pm b/C4/Output.pm index fd32541a02..1e00d4f8f4 100644 --- a/C4/Output.pm +++ b/C4/Output.pm @@ -100,13 +100,10 @@ sub gettemplate { . "/$theme/$lang"; $template->param( themelang => $themelang, - yuipath => (C4::Context->preference("yuipath") eq "local"?"$themelang/lib/yui":C4::Context->preference("yuipath")), + yuipath => (C4::Context->preference("yuipath") eq "local"?"$themelang/lib/yui":C4::Context->preference("yuipath")), interface => ( $interface ne 'intranet' ? '/opac-tmpl' : '/intranet-tmpl' ), - theme => $theme, - opacstylesheet => $opacstylesheet, - opaccolorstylesheet => C4::Context->preference('opaccolorstylesheet'), - opacsmallimage => C4::Context->preference('opacsmallimage'), - lang => $lang + theme => $theme, + lang => $lang ); # Bidirectionality @@ -115,9 +112,16 @@ sub gettemplate { $bidi = get_bidi($current_lang->{script}) if $current_lang->{script}; # Languages my $languages_loop = getTranslatedLanguages($interface,$theme,$lang); + my $num_languages_enabled = 0; + foreach my $lang (@$languages_loop) { + foreach my $sublang (@{ $lang->{'sublanguages_loop'} }) { + $num_languages_enabled++ if $sublang->{enabled}; + } + } $template->param( - languages_loop => $languages_loop, - bidi => $bidi + languages_loop => $languages_loop, + bidi => $bidi, + one_language_enabled => ($num_languages_enabled <= 1) ? 1 : 0, # deal with zero enabled langs as well ) unless @$languages_loop<2; return $template; @@ -132,15 +136,10 @@ sub themelanguage { # Set some defaults for language and theme # First, check the user's preferences my $lang; - my $http_env = $ENV{HTTP_ACCEPT_LANGUAGE}; - $http_env =~ m/(\w+-*\w*),/; - my $language_preference = $1; - my $http_accept_language = regex_lang_subtags($language_preference)->{language}; - if ($http_accept_language) { - $lang = accept_language($http_accept_language,getTranslatedLanguages($interface,'prog')); - } + my $http_accept_language = $ENV{ HTTP_ACCEPT_LANGUAGE }; # But, if there's a cookie set, obey it $lang = $query->cookie('KohaOpacLanguage') if $query->cookie('KohaOpacLanguage'); + # Fall back to English my @languages; if ($interface eq 'intranet') { @@ -148,42 +147,52 @@ sub themelanguage { } else { @languages = split ",", C4::Context->preference("opaclanguages"); } - if ($lang){ + + # Ricardo Dias Marques + # 14-Nov-2009 + # - If we have a language set in the Cookie, we'll accept it if it exists in the list of Translated Languages + # - If we don't have a language set in the Cookie, we'll try to use the one set in the browser (available + # in $http_accept_language) if it also exists in the list of Translated Languages + if ($lang ne "") + { + $lang = accept_language( $lang, + getTranslatedLanguages($interface,'prog') ); + } + else + { + $lang = accept_language( $http_accept_language, + getTranslatedLanguages($interface,'prog') ) + if $http_accept_language; + } + + if (grep(/^$lang$/, @languages)){ @languages=($lang,@languages); } else { $lang = $languages[0]; - } + } + my $theme = 'prog'; # in the event of theme failure default to 'prog' -fbcit my $dbh = C4::Context->dbh; - my @themes; if ( $interface eq "intranet" ) { - @themes = split " ", C4::Context->preference("template"); + $theme = C4::Context->preference("template"); } else { # we are in the opac here, what im trying to do is let the individual user # set the theme they want to use. # and perhaps the them as well. #my $lang = $query->cookie('KohaOpacLanguage'); - @themes = split " ", C4::Context->preference("opacthemes"); + $theme = C4::Context->preference("opacthemes"); } # searches through the themes and languages. First template it find it returns. # Priority is for getting the theme right. THEME: - foreach my $th (@themes) { - foreach my $la (@languages) { - #for ( my $pass = 1 ; $pass <= 2 ; $pass += 1 ) { - # warn "$htdocs/$th/$la/modules/$interface-"."tmpl"; - #$la =~ s/([-_])/ $1 eq '-'? '_': '-' /eg if $pass == 2; - if ( -e "$htdocs/$th/$la/modules/$tmpl") { - #".($interface eq 'intranet'?"modules":"")."/$tmpl" ) { - $theme = $th; - $lang = $la; - last THEME; - } - last unless $la =~ /[-_]/; - #} - } + foreach my $la (@languages) { + if ( -e "$htdocs/$theme/$la/modules/$tmpl") { + $lang = $la; + last THEME; + } + last unless $la =~ /[-_]/; } return ( $theme, $lang ); } @@ -363,7 +372,16 @@ response's Content-Type to that value instead of "text/html". sub output_html_with_http_headers ($$$;$) { my $query = shift; my $cookie = shift; - my $html = shift; + my $html = shift; + $html =~ s/ \x{C2} + (?: \x{88} # NSB + | \x{89} # NSE + # SUDOC shares the cataloguing of french universities + | \x{98} # SUDOC NSB + | \x{9c} # SUDOC NSE + ) + //gx; + my $content_type = @_ ? shift : "text/html"; $content_type = "text/html" unless $content_type =~ m!/!; # very basic sanity check print $query->header(