sub gettemplate {
- my ( $tmplbase, $interface, $query ) = @_;
+ my ( $tmplbase, $interface, $query, $is_plugin ) = @_;
($query) or warn "no query in gettemplate";
my $path = C4::Context->preference('intranet_includes') || 'includes';
$tmplbase =~ s/\.tmpl$/.tt/;
my ($htdocs, $theme, $lang, $filename)
= _get_template_file($tmplbase, $interface, $query);
+ $filename = $tmplbase if ( $is_plugin );
my $template = C4::Templates->new($interface, $filename, $tmplbase, $query);
+
# NOTE: Commenting these out rather than deleting them so that those who need
# to know how we previously shimmed these directories will be able to understand.
# my $is_intranet = $interface eq 'intranet';
# lang => $lang
# );
- # Bidirectionality
+ # Bidirectionality, must be sent even if is the only language
my $current_lang = regex_lang_subtags($lang);
my $bidi;
$bidi = get_bidi($current_lang->{script}) if $current_lang->{script};
+ $template->param(
+ bidi => $bidi,
+ );
# Languages
my $languages_loop = getTranslatedLanguages($interface,$theme,$lang);
my $num_languages_enabled = 0;
$num_languages_enabled++ if $sublang->{enabled};
}
}
+ my $one_language_enabled = ($num_languages_enabled <= 1) ? 1 : 0; # deal with zero enabled langs as well
$template->param(
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;
+ one_language_enabled => $one_language_enabled,
+ ) unless $one_language_enabled;
return $template;
}
($query) or warn "no query in themelanguage";
# Select a language based on cookie, syspref available languages & browser
- my $lang = getlanguage($query, $interface);
+ my $lang = C4::Languages::getlanguage($query);
# Select theme
my $is_intranet = $interface eq 'intranet';
sub setlanguagecookie {
my ( $query, $language, $uri ) = @_;
+
my $cookie = $query->cookie(
-name => 'KohaOpacLanguage',
-value => $language,
+ -HttpOnly => 1,
-expires => '+3y'
);
print $query->redirect(
);
}
+=head2 getlanguagecookie
-sub getlanguage {
- my ($query, $interface) = @_;
-
- # Select a language based on cookie, syspref available languages & browser
- my $preference_to_check =
- $interface eq 'intranet' ? 'language' : 'opaclanguages';
- my @languages = split /,/, C4::Context->preference($preference_to_check);
-
- my $lang;
+ my $cookie = getlanguagecookie($query,$language);
- # cookie
- if ( $query->cookie('KohaOpacLanguage') ) {
- $lang = $query->cookie('KohaOpacLanguage');
- $lang =~ s/[^a-zA-Z_-]*//; # sanitize cookie
- }
+Returns a cookie object containing the calculated language to be used.
- # HTTP_ACCEPT_LANGUAGE
- if ( !$lang && $ENV{HTTP_ACCEPT_LANGUAGE} ) {
- $lang = accept_language( $ENV{HTTP_ACCEPT_LANGUAGE},
- getTranslatedLanguages( $interface, 'prog' ) );
- }
+=cut
- # Ignore a lang not selected in sysprefs
- if ( $lang && any { $_ eq $lang } @languages ) {
- return $lang;
- }
+sub getlanguagecookie {
+ my ( $query, $language ) = @_;
+ my $cookie = $query->cookie(
+ -name => 'KohaOpacLanguage',
+ -value => $language,
+ -HttpOnly => 1,
+ -expires => '+3y'
+ );
- # Fall back to English if necessary
- return 'en';
+ return $cookie;
}
1;