Bugzilla – Attachment 6495 Details for
Bug 7282
invalid language selection
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Signed-off patch
0001-Bug-7282-invalid-language-selection.patch (text/plain), 4.72 KB, created by
Frédéric Demians
on 2011-12-01 20:01:30 UTC
(
hide
)
Description:
Signed-off patch
Filename:
MIME Type:
Creator:
Frédéric Demians
Created:
2011-12-01 20:01:30 UTC
Size:
4.72 KB
patch
obsolete
>From 4316dc65c1d5375daad123d14eecd7a9c842a405 Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Fr=C3=A8re=20S=C3=A9bastien=20Marie?= > <semarie-koha@latrappe.fr> >Date: Thu, 1 Dec 2011 19:02:11 +0100 >Subject: [PATCH] Bug 7282 - invalid language selection >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >- ensure that without cookie, language selection is based on browser > preferences >- refactor function to obtain langugage for stem in search (opac + intranet) > >Signed-off-by: Frédéric Demians <f.demians@tamil.fr> > >To reproduce the bug: > >- Activate en and fr-FR for OPAC >- Clear your browser cookies >- Select your language preference in your browser: fr, fr-fr, en >- Load OPAC main page >- OPAC is displayed in English, rather than French as asked by browser > preferences > > Apply the patch and test: > > - Clear your browser cookies > - Load OPAC main page > - Pages are displayed in French >--- > C4/Templates.pm | 53 +++++++++++++++++++++++++++++--------------------- > catalogue/search.pl | 2 +- > opac/opac-search.pl | 2 +- > 3 files changed, 33 insertions(+), 24 deletions(-) > >diff --git a/C4/Templates.pm b/C4/Templates.pm >index 73d94c2..7585727 100644 >--- a/C4/Templates.pm >+++ b/C4/Templates.pm >@@ -273,21 +273,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 = getlanguagecookie($query); >- 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'; >@@ -317,16 +306,36 @@ 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 =~ s/[^a-zA-Z_-]*//; #sanitzie >+ >+ # 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; > } > >diff --git a/catalogue/search.pl b/catalogue/search.pl >index 907efdb..4792f0b 100755 >--- a/catalogue/search.pl >+++ b/catalogue/search.pl >@@ -471,7 +471,7 @@ my ( $error,$query,$simple_query,$query_cgi,$query_desc,$limit,$limit_cgi,$limit > my @results; > > ## I. BUILD THE QUERY >-my $lang = C4::Templates::getlanguagecookie($cgi); >+my $lang = C4::Templates::getlanguage($cgi, 'intranet'); > ( $error,$query,$simple_query,$query_cgi,$query_desc,$limit,$limit_cgi,$limit_desc,$stopwords_removed,$query_type) = buildQuery(\@operators,\@operands,\@indexes,\@limits,\@sort_by,$scan,$lang); > > ## parse the query_cgi string and put it into a form suitable for <input>s >diff --git a/opac/opac-search.pl b/opac/opac-search.pl >index 42eb0ec..aba23a8 100755 >--- a/opac/opac-search.pl >+++ b/opac/opac-search.pl >@@ -388,7 +388,7 @@ my ($error,$query,$simple_query,$query_cgi,$query_desc,$limit,$limit_cgi,$limit_ > my @results; > > ## I. BUILD THE QUERY >-my $lang = C4::Templates::getlanguagecookie($cgi); >+my $lang = C4::Templates::getlanguage($cgi, 'opac'); > ( $error,$query,$simple_query,$query_cgi,$query_desc,$limit,$limit_cgi,$limit_desc,$stopwords_removed,$query_type) = buildQuery(\@operators,\@operands,\@indexes,\@limits,\@sort_by, 0, $lang); > > sub _input_cgi_parse ($) { >-- >1.7.6.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 7282
:
6486
|
6487
|
6488
|
6489
|
6490
|
6491
| 6495