$htdocs = C4::Context->config('intrahtdocs');
}
my $path = C4::Context->preference('intranet_includes') || 'includes';
-
my ( $theme, $lang ) = themelanguage( $htdocs, $tmplbase, $interface, $query );
my $opacstylesheet = C4::Context->preference('opacstylesheet');
. "/$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
$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;
# Set some defaults for language and theme
# First, check the user's preferences
my $lang;
- my $http_accept_language = regex_lang_subtags($ENV{HTTP_ACCEPT_LANGUAGE})->{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 = split " ", C4::Context->preference("opaclanguages");
- if ($lang){
+ my @languages;
+ if ($interface eq 'intranet') {
+ @languages = split ",", C4::Context->preference("language");
+ } else {
+ @languages = split ",", C4::Context->preference("opaclanguages");
+ }
+
+ # 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 );
}
$base_url =~ s/$delim;//g; # remove empties
$base_url =~ s/$delim$//; # remove trailing delim
- my $url = $base_url . ( $base_url =~ m/$delim/ ? '&' : '?' ) . $startfrom_name . '=';
+ my $url = $base_url . (($base_url =~ m/$delim/ or $base_url =~ m/\?/) ? '&' : '?' ) . $startfrom_name . '=';
my $pagination_bar = '';
# navigation bar useful only if more than one page to display !
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(