Bugzilla – Attachment 6083 Details for
Bug 6554
Resolve encoding problems with corrected UTF8 handling in templates
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
added session, CGI queries and all Zebra/PAR utf8 decode
6554-utf8-cleanup-v3.diff (text/plain), 7.15 KB, created by
Dobrica Pavlinusic
on 2011-10-27 19:29:24 UTC
(
hide
)
Description:
added session, CGI queries and all Zebra/PAR utf8 decode
Filename:
MIME Type:
Creator:
Dobrica Pavlinusic
Created:
2011-10-27 19:29:24 UTC
Size:
7.15 KB
patch
obsolete
>diff --git a/C4/Context.pm b/C4/Context.pm >index 85d1c18..ed794a8 100644 >--- a/C4/Context.pm >+++ b/C4/Context.pm >@@ -942,7 +942,9 @@ set_userenv is called in Auth.pm > > #' > sub set_userenv { >- my ($usernum, $userid, $usercnum, $userfirstname, $usersurname, $userbranch, $branchname, $userflags, $emailaddress, $branchprinter)= @_; >+ my ($usernum, $userid, $usercnum, $userfirstname, $usersurname, $userbranch, $branchname, $userflags, $emailaddress, $branchprinter)= >+ map { utf8::decode($_); $_ } # CGI::Session doesn't handle utf-8, so we decode it here >+ @_; > my $var=$context->{"activeuser"}; > my $cell = { > "number" => $usernum, >diff --git a/C4/ItemType.pm b/C4/ItemType.pm >index 70d2690..d7c0615 100644 >--- a/C4/ItemType.pm >+++ b/C4/ItemType.pm >@@ -78,7 +78,7 @@ sub all { > for ( @{$dbh->selectall_arrayref( > "SELECT * FROM itemtypes ORDER BY description", { Slice => {} })} ) > { >- utf8::encode($_->{description}); >+# utf8::encode($_->{description}); > push @itypes, $class->new($_); > } > return @itypes; >diff --git a/C4/Output.pm b/C4/Output.pm >index 41a0a28..b256240 100644 >--- a/C4/Output.pm >+++ b/C4/Output.pm >@@ -301,6 +301,7 @@ sub output_with_http_headers($$$$;$) { > > # utf8::encode($data) if utf8::is_utf8($data); > >+ binmode( STDOUT, ":utf8" ); > print $query->header($options), $data; > } > >diff --git a/C4/Search.pm b/C4/Search.pm >index 98db887..f8331e0 100644 >--- a/C4/Search.pm >+++ b/C4/Search.pm >@@ -265,6 +265,7 @@ sub SimpleSearch { > > for my $j ( $first_record..$last_record ) { > my $record = $tmpresults[ $i - 1 ]->record( $j-1 )->raw(); # 0 indexed >+ utf8::decode( $record ); > push @{$results}, $record; > } > } >@@ -456,6 +457,7 @@ sub getRecords { > # not an index scan > else { > $record = $results[ $i - 1 ]->record($j)->raw(); >+ utf8::decode( $record ); > > # warn "RECORD $j:".$record; > $results_hash->{'RECORDS'}[$j] = $record; >@@ -476,6 +478,7 @@ sub getRecords { > > for ( my $j = 0 ; $j < $jmax ; $j++ ) { > my $render_record = $results[ $i - 1 ]->record($j)->render(); >+ utf8::decode($render_record); > my @used_datas = (); > > foreach my $fcode (@fcodes) { >@@ -640,6 +643,7 @@ sub pazGetRecords { > for (my $i = 0; $i < $count; $i++) { > # FIXME -- may need to worry about diacritics here > my $rec = $paz->record($recid, $i); >+ utf8::decode( $rec ); > push @{ $result_group->{'RECORDS'} }, $rec; > } > >diff --git a/C4/Templates.pm b/C4/Templates.pm >index c2a5911..40e3ab6 100644 >--- a/C4/Templates.pm >+++ b/C4/Templates.pm >@@ -63,6 +63,7 @@ sub new { > "$htdocs/$theme/en/includes" > ], > FILTERS => {}, >+ ENCODING => 'utf8', # templates don't have BOM, see Template::FAQ > } > ) or die Template->error(); > my $self = { >@@ -110,54 +111,14 @@ sub output { > # and clean any utf8 mess > for my $k ( keys %{ $self->{VARS} } ) { > $vars->{$k} = $self->{VARS}->{$k}; >- if (ref($vars->{$k}) eq 'ARRAY'){ >- utf8_arrayref($vars->{$k}); >- } >- elsif (ref($vars->{$k}) eq 'HASH'){ >- utf8_hashref($vars->{$k}); >- } >- else { >- utf8::encode($vars->{$k}) if utf8::is_utf8($vars->{$k}); >- } > } > my $data; >-# binmode( STDOUT, ":utf8" ); > $template->process( $self->filename, $vars, \$data ) > || die "Template process failed: ", $template->error(); > return $data; > } > >-sub utf8_arrayref { >- my $arrayref = shift; >- foreach my $element (@$arrayref){ >- if (ref($element) eq 'ARRAY'){ >- utf8_arrayref($element); >- next; >- } >- if (ref($element) eq 'HASH'){ >- utf8_hashref($element); >- next; >- } >- utf8::encode($element) if utf8::is_utf8($element); >- } >-} >- >-sub utf8_hashref { >- my $hashref = shift; >- for my $key (keys %{$hashref}){ >- if (ref($hashref->{$key}) eq 'ARRAY'){ >- utf8_arrayref($hashref->{$key}); >- next; >- } >- if (ref($hashref->{$key}) eq 'HASH'){ >- utf8_hashref($hashref->{$key}); >- next; >- } >- utf8::encode($hashref->{$key}) if utf8::is_utf8($hashref->{$key}); >- } >-} >- >- >+ > # FIXME - this is a horrible hack to cache > # the current known-good language, temporarily > # put in place to resolve bug 4403. It is >diff --git a/C4/XSLT.pm b/C4/XSLT.pm >index 8bc4000..60d3f14 100755 >--- a/C4/XSLT.pm >+++ b/C4/XSLT.pm >@@ -176,6 +176,7 @@ sub XSLTParse4Display { > } > my $results = $stylesheet->transform($source); > my $newxmlrecord = $stylesheet->output_string($results); >+ utf8::decode( $newxmlrecord ); > return $newxmlrecord; > } > >diff --git a/admin/preferences.pl b/admin/preferences.pl >index 055f69d..6cbefe3 100755 >--- a/admin/preferences.pl >+++ b/admin/preferences.pl >@@ -34,6 +34,7 @@ use File::Spec; > use IO::File; > use YAML::Syck qw(); > $YAML::Syck::ImplicitTyping = 1; >+$YAML::Syck::ImplicitUnicode = 1; # force utf-8 for preference encoding > our $lang; > > # use Smart::Comments; >diff --git a/admin/z3950servers.pl b/admin/z3950servers.pl >index 44b3967..c6f80e6 100755 >--- a/admin/z3950servers.pl >+++ b/admin/z3950servers.pl >@@ -21,7 +21,7 @@ > > use strict; > #use warnings; FIXME - Bug 2505 >-use CGI; >+use CGI qw( -utf8 ); > use C4::Context; > use C4::Auth; > use C4::Output; >diff --git a/catalogue/search.pl b/catalogue/search.pl >index 907efdb..a6948a8 100755 >--- a/catalogue/search.pl >+++ b/catalogue/search.pl >@@ -154,7 +154,7 @@ use C4::Branch; # GetBranches > my $DisplayMultiPlaceHold = C4::Context->preference("DisplayMultiPlaceHold"); > # create a new CGI object > # FIXME: no_undef_params needs to be tested >-use CGI qw('-no_undef_params'); >+use CGI qw( -no_undef_params -utf8 ); > my $cgi = new CGI; > > my ($template,$borrowernumber,$cookie); >diff --git a/cataloguing/z3950_search.pl b/cataloguing/z3950_search.pl >index b12a9c9..e6f57e5 100755 >--- a/cataloguing/z3950_search.pl >+++ b/cataloguing/z3950_search.pl >@@ -20,7 +20,7 @@ > > use strict; > #use warnings; FIXME - Bug 2505 >-use CGI; >+use CGI qw( -utf8 ); > > use C4::Auth; > use C4::Output; >diff --git a/members/member.pl b/members/member.pl >index e2a6ef5..869237c 100755 >--- a/members/member.pl >+++ b/members/member.pl >@@ -27,7 +27,7 @@ use strict; > #use warnings; FIXME - Bug 2505 > use C4::Auth; > use C4::Output; >-use CGI; >+use CGI qw( -utf8 ); > use C4::Members; > use C4::Branch; > use C4::Category; >diff --git a/opac/opac-search.pl b/opac/opac-search.pl >index 716b164..7c3bdff 100755 >--- a/opac/opac-search.pl >+++ b/opac/opac-search.pl >@@ -44,7 +44,7 @@ use Storable qw(thaw freeze); > my $DisplayMultiPlaceHold = C4::Context->preference("DisplayMultiPlaceHold"); > # create a new CGI object > # FIXME: no_undef_params needs to be tested >-use CGI qw('-no_undef_params'); >+use CGI qw( -no_undef_params -utf8 ); > my $cgi = new CGI; > > BEGIN {
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 6554
:
4558
|
4560
|
4561
|
4562
|
4563
|
4564
|
5962
|
6041
|
6065
|
6070
|
6071
|
6072
|
6073
|
6076
|
6077
|
6078
|
6079
|
6080
|
6083
|
6084
|
6085
|
6108
|
10118
|
16780
|
16797
|
16857
|
16905
|
16929
|
16930
|
16931
|
16932
|
16960
|
16961
|
16962
|
16963
|
16964
|
16966
|
16968
|
16969
|
16984
|
16985
|
16986
|
16987
|
16988
|
16989
|
17179
|
17186
|
17187
|
17327
|
17328
|
18746
|
18747
|
18749
|
18750
|
21318
|
21399
|
21478
|
21488
|
21506
|
21509
|
21581
|
21629
|
21631
|
21632
|
21682
|
21937
|
21955
|
21978
|
21980
|
21981
|
23107
|
23140