r8880@llin: dpavlin | 2005-11-14 19:16:05 +0100
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 15 Nov 2005 14:30:26 +0000 (14:30 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 15 Nov 2005 14:30:26 +0000 (14:30 +0000)
 fix character encoding issues due to JavaScript which returns %uxxxx encoded
 characters

git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@58 07558da8-63fa-0310-ba24-9fe276d99e06

web/browse.cgi

index 0a67b96..5eeba84 100755 (executable)
@@ -48,10 +48,10 @@ if ($q->path_info =~ m#xml#) {
        if (@ds && $#ds > 0) {
                print qq{<response>
 <action type='html' target='div_record' errorCode='' errorMessage='' >
-               }, $out->apply(
+               }, $iconv_utf8->convert( $out->apply(
                        template => $template,
                        data => \@ds,
-               ), qq{
+               ) ), qq{
 
 </action>
 <action type='javascript' errorCode='' errorMessage='' >
@@ -88,9 +88,15 @@ if ($q->path_info =~ m#xml#) {
 
                if ($q->param('save_template')) {
 
-                       my $tmpl = $q->param('tt_template') || die "no template?";
+                       my $tmpl = $iconv_loc->convert( $q->param('tt_template') ) || die "no template?";
+                       sub _conv_js {
+                               my $t = shift || return;
+                               return $iconv_loc->convert(chr(hex($t)));
+                       }
+                       $tmpl =~ s/%u([a-fA-F0-9]{4})/_conv_js($1)/gex;
+
                        my $tmpl_file = $out->{'include_path'} . '/' . $template;
-                       write_file($tmpl_file . '.new', $iconv_loc->convert($tmpl)) || die "can't save $tmpl_file: $!";
+                       write_file($tmpl_file . '.new', $tmpl) || die "can't save $tmpl_file: $!";
                        rename $tmpl_file . '.new', $tmpl_file || die "can't rename to $tmpl_file: $!";
 
                        print qq{<response>