X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FTemplates.pm;h=074104049248827ec51f7e72a8fe424820cbe795;hb=26bee7eee7d3e4602bc5e757278f600224fcbdf5;hp=c3a9850c58e2130a8b3b2dd0c35ee80932c6d91d;hpb=cac6eb12502f82ed5a0b59a74cf84fa009ba0a26;p=koha_gimpoz diff --git a/C4/Templates.pm b/C4/Templates.pm index c3a9850c58..0741040492 100644 --- a/C4/Templates.pm +++ b/C4/Templates.pm @@ -53,11 +53,13 @@ sub new { else { $htdocs = C4::Context->config('intrahtdocs'); } - my ($theme, $lang)= themelanguage( $htdocs, $tmplbase, $interface, $query); my $template = Template->new( { EVAL_PERL => 1, ABSOLUTE => 1, + PLUGIN_BASE => 'Koha::Template::Plugin', + COMPILE_EXT => C4::Context->config('template_cache_dir')?'.ttc':'', + COMPILE_DIR => C4::Context->config('template_cache_dir')?C4::Context->config('template_cache_dir'):'',, INCLUDE_PATH => [ "$htdocs/$theme/$lang/includes", "$htdocs/$theme/en/includes" @@ -179,7 +181,11 @@ sub param { my $val = shift; if ( ref($val) eq 'ARRAY' && !scalar @$val ) { $val = undef; } elsif ( ref($val) eq 'HASH' && !scalar %$val ) { $val = undef; } - $self->{VARS}->{$key} = $val; + if ( $key ) { + $self->{VARS}->{$key} = $val; + } else { + warn "Problem = a value of $val has been passed to param without key"; + } } } @@ -269,22 +275,10 @@ sub themelanguage { ($query) or warn "no query in themelanguage"; # Select a language based on cookie, syspref available languages & browser - my $is_intranet = $interface eq 'intranet'; - my @languages = split(",", C4::Context->preference( - $is_intranet ? 'language' : 'opaclanguages')); - my $lang; - $lang = $query->cookie('KohaOpacLanguage') - if defined $query and $query->cookie('KohaOpacLanguage'); - unless ($lang) { - my $http_accept_language = $ENV{ HTTP_ACCEPT_LANGUAGE }; - $lang = accept_language( $http_accept_language, - getTranslatedLanguages($interface,'prog') ); - } - # Ignore a lang not selected in sysprefs - $lang = undef unless first { $_ eq $lang } @languages; - # Fall back to English if necessary - $lang = 'en' unless $lang; + my $lang = getlanguage($query, $interface); + # Select theme + my $is_intranet = $interface eq 'intranet'; my @themes = split(" ", C4::Context->preference( $is_intranet ? "template" : "opacthemes" )); push @themes, 'prog'; @@ -314,16 +308,35 @@ sub setlanguagecookie { ); } -sub getlanguagecookie { - my ($query) = @_; + +sub getlanguage { + my ($query, $interface) = @_; + + # Select a language based on cookie, syspref available languages & browser + my $is_intranet = $interface eq 'intranet'; + my @languages = split(",", C4::Context->preference( + $is_intranet ? 'language' : 'opaclanguages')); + my $lang; - if ($query->cookie('KohaOpacLanguage')){ - $lang = $query->cookie('KohaOpacLanguage') ; - }else{ - $lang = $ENV{HTTP_ACCEPT_LANGUAGE}; - + + # cookie + if ( $query->cookie('KohaOpacLanguage') ) { + $lang = $query->cookie('KohaOpacLanguage'); + $lang =~ s/[^a-zA-Z_-]*//; # sanitize cookie } - $lang = substr($lang, 0, 2); + + # HTTP_ACCEPT_LANGUAGE + unless ($lang) { + my $http_accept_language = $ENV{ HTTP_ACCEPT_LANGUAGE }; + $lang = accept_language( $http_accept_language, + getTranslatedLanguages($interface,'prog') ); + } + + # Ignore a lang not selected in sysprefs + $lang = undef unless first { $_ eq $lang } @languages; + + # Fall back to English if necessary + $lang = 'en' unless $lang; return $lang; }