--- /dev/null
+package OpenILS::WWW::CGIUTF8;
+use strict;
+use warnings;
+use base qw(CGI);
+use Encode;
+
+sub param {
+ my ($self, $k) = @_;
+
+ return map { Encode::decode_utf8($_) } CGI::param($k) if wantarray;
+ return Encode::decode_utf8(CGI::param($k));
+}
+
+sub param_bin {
+ my $self = shift;
+
+ return CGI::param(@_);
+}
+
+1;
package OpenILS::WWW::EGCatLoader;
use strict; use warnings;
-use CGI;
use XML::LibXML;
use URI::Escape;
use Digest::MD5 qw(md5_hex);
use OpenILS::Utils::CStoreEditor qw/:funcs/;
use OpenILS::Utils::Fieldmapper;
use DateTime::Format::ISO8601;
+use OpenILS::WWW::CGIUTF8;
# EGCatLoader sub-modules
use OpenILS::WWW::EGCatLoader::Util;
$self->apache($apache);
$self->ctx($ctx);
- $self->cgi(CGI->new);
+ $self->cgi(new OpenILS::WWW::CGIUTF8);
OpenILS::Utils::CStoreEditor->init; # just in case
$self->editor(new_editor());
OUTPUT => ($as_xml) ? sub { parse_as_xml($r, $ctx, @_); } : $r,
INCLUDE_PATH => $ctx->{template_paths},
DEBUG => $ctx->{debug_template},
- PLUGINS => {EGI18N => 'OpenILS::WWW::EGWeb::I18NFilter'}
+ PLUGINS => {
+ EGI18N => 'OpenILS::WWW::EGWeb::I18NFilter',
+ CGIUTF8 => 'OpenILS::WWW::EGWeb::CGIUTF8'
+ }
});
unless($tt->process($template, {ctx => $ctx, l => set_text_handler($ctx, $r)})) {
--- /dev/null
+package OpenILS::WWW::EGWeb::CGIUTF8;
+
+# This is just a wrapper for TT around the real package,
+# which is OpenILS::WWW::CGIUTF8
+
+use strict;
+use warnings;
+use base 'Template::Plugin';
+use OpenILS::WWW::CGIUTF8;
+
+sub new {
+ my $class = shift;
+ my $context = shift;
+ new OpenILS::WWW::CGIUTF8(@_);
+}
+
+1;
[%- USE money = format(l('$%.2f'));
USE date;
- USE CGI;
+ USE CGI = CGIUTF8;
USE EGI18N;
SET DATE_FORMAT = l('%m/%d/%Y');
-[% USE CGI;
- PROCESS "default/opac/parts/marc_misc.tt2";
+[% PROCESS "default/opac/parts/marc_misc.tt2";
attrs = {marc_xml => ctx.marc_xml};
PROCESS get_marc_attrs args=attrs;
%]