X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FOutput.pm;h=63acf1453e01949b5d5976d0215ec05b5d3c585e;hb=01f7542f4bdbd9b31836ed8c3fc817b67086b8d2;hp=e1be3e7faf4072440bd0ebccdf6d1524c9d60ba1;hpb=4f44847c11add59ab7d0c55aeffac1fa2835cc1f;p=koha.git diff --git a/C4/Output.pm b/C4/Output.pm index e1be3e7faf..63acf1453e 100644 --- a/C4/Output.pm +++ b/C4/Output.pm @@ -28,6 +28,8 @@ package C4::Output; use strict; #use warnings; FIXME - Bug 2505 +use URI::Escape; + use C4::Context; use C4::Dates qw(format_date); use C4::Budgets qw(GetCurrency); @@ -42,13 +44,13 @@ BEGIN { @ISA = qw(Exporter); @EXPORT_OK = qw(&is_ajax ajax_fail); # More stuff should go here instead - %EXPORT_TAGS = ( all =>[qw(setlanguagecookie pagination_bar + %EXPORT_TAGS = ( all =>[qw(setlanguagecookie pagination_bar parametrized_url &output_with_http_headers &output_ajax_with_http_headers &output_html_with_http_headers)], ajax =>[qw(&output_with_http_headers &output_ajax_with_http_headers is_ajax)], html =>[qw(&output_with_http_headers &output_html_with_http_headers)] ); push @EXPORT, qw( - setlanguagecookie getlanguagecookie pagination_bar + setlanguagecookie getlanguagecookie pagination_bar parametrized_url ); push @EXPORT, qw( &output_html_with_http_headers &output_ajax_with_http_headers &output_with_http_headers FormatData FormatNumber @@ -296,12 +298,8 @@ sub output_with_http_headers { $options->{'Content-Script-Type'} = 'text/javascript'; } -# We can't encode here, that will double encode our templates, and xslt -# We need to fix the encoding as it comes out of the database, or when we pass the variables to templates - -# utf8::encode($data) if utf8::is_utf8($data); - $data =~ s/\&\;amp\; /\&\; /g; + utf8::encode($data); print $query->header($options), $data; } @@ -327,6 +325,18 @@ sub is_ajax { return ( $x_req and $x_req =~ /XMLHttpRequest/i ) ? 1 : 0; } +sub parametrized_url { + my $url = shift || ''; # ie page.pl?ln={LANG} + my $vars = shift || {}; # ie { LANG => en } + my $ret = $url; + while ( my ($key,$val) = each %$vars) { + my $val_url = URI::Escape::uri_escape_utf8($val); + $ret =~ s/\{$key\}/$val_url/g; + } + $ret =~ s/\{[^\{]*\}//g; # remove not defined vars + return $ret; +} + END { } # module clean-up code here (global destructor) 1;