aboutsummaryrefslogtreecommitdiffstats
path: root/www/twiki/files/patch-twikiutf8.diff
blob: 43cb662a0778644226594045a4c7fc137452ab9b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# From: http://dot-and-thing.blogspot.com/2008/03/twiki-utf8.html
diff -urE --exclude=data --exclude=pub twiki-4.2/lib/TWiki/UI/Edit.pm twiki/lib/TWiki/UI/Edit.pm
--- lib/TWiki/UI/Edit.pm    2008-01-22 06:18:55.000000000 +0300
+++ lib/TWiki/UI/Edit.pm    2008-03-12 10:39:49.000000000 +0300
@@ -13,6 +13,8 @@
 use Assert;
 use Error qw( :try );
 
+use Encode;
+
 require TWiki;
 require TWiki::UI;
 require TWiki::OopsException;
@@ -239,7 +241,10 @@
             $formTemplate = $form->{name} if $form;
         }
 
-        $text = $session->expandVariablesOnTopicCreation( $text, $user, $webName, $topic );
+       if ($TWiki::cfg{Site}{CharSet} =~ /^utf-?8$/) {
+           $text = Encode::decode_utf8 ($text);
+       }
+       $text = $session->expandVariablesOnTopicCreation( $text, $user, $webName, $topic );
         $tmpl =~ s/%NEWTOPIC%/1/;
     } else {
         $tmpl =~ s/%NEWTOPIC%//;
@@ -346,7 +351,12 @@
 
     $tmpl =~ s/%FORMTEMPLATE%//go; # Clear if not being used
 
-    return ( $text, $tmpl );
+   if ($TWiki::cfg{Site}{CharSet} =~ /^utf-?8$/) {
+       $text = Encode::decode_utf8 ($text);
+   }
+   
+
+   return ( $text, $tmpl );
 }
 
 sub finalize_edit {
diff -urE --exclude=data --exclude=pub twiki-4.2/lib/TWiki/UI/Save.pm twiki/lib/TWiki/UI/Save.pm
--- lib/TWiki/UI/Save.pm    2008-01-22 06:18:55.000000000 +0300
+++ lib/TWiki/UI/Save.pm    2008-03-11 17:19:56.000000000 +0300
@@ -37,6 +37,8 @@
 use Error qw( :try );
 use Assert;
 
+use Encode;
+
 require TWiki;
 require TWiki::UI;
 require TWiki::Meta;
@@ -141,6 +143,9 @@
 
     # Determine the new text
     my $newText = $query->param( 'text' );
+   if ($TWiki::cfg{Site}{CharSet} =~ /^utf-?8$/) {
+       $newText = Encode::decode_utf8 ($newText);
+   }
 
     my $forceNewRev = $query->param( 'forcenewrevision' );
     $saveOpts->{forcenewrevision} = $forceNewRev;
diff -urE --exclude=data --exclude=pub twiki-4.2/lib/TWiki/UI/View.pm twiki/lib/TWiki/UI/View.pm
--- lib/TWiki/UI/View.pm    2008-01-22 06:18:55.000000000 +0300
+++ lib/TWiki/UI/View.pm    2008-03-11 17:17:34.000000000 +0300
@@ -40,6 +40,8 @@
 use CGI::Carp qw( fatalsToBrowser );
 use CGI qw( -any ); # pretty basic, this
 
+use Encode;
+
 require TWiki;
 require TWiki::UI;
 require TWiki::Sandbox;
@@ -99,7 +101,12 @@
         require TWiki::Time;
         ( $currMeta, $currText ) = $store->readTopic
           ( $session->{user}, $webName, $topicName, undef );
-        TWiki::UI::checkAccess( $session, $webName, $topicName,
+       
+       if ($TWiki::cfg{Site}{CharSet} =~ /^utf-?8$/) {
+           $currText = Encode::decode_utf8 ($currText);
+       }
+        
+       TWiki::UI::checkAccess( $session, $webName, $topicName,
                                 'VIEW', $session->{user}, $currText );
         ( $revdate, $revuser, $showRev ) = $currMeta->getRevisionInfo();
         $revdate = TWiki::Time::formatTime( $revdate );
@@ -111,6 +118,10 @@
         if( $rev < $showRev ) {
             ( $meta, $text ) = $store->readTopic
               ( $session->{user}, $webName, $topicName, $rev );
+           
+           if ($TWiki::cfg{Site}{CharSet} =~ /^utf-?8$/) {
+               $text = Encode::decode_utf8 ($text);
+           }
 
             ( $revdate, $revuser ) = $meta->getRevisionInfo();
             $revdate = TWiki::Time::formatTime( $revdate );
diff -urE --exclude=data --exclude=pub twiki-4.2/lib/TWiki.pm twiki/lib/TWiki.pm
--- lib/TWiki.pm    2008-01-22 06:18:55.000000000 +0300
+++ lib/TWiki.pm    2008-03-11 18:28:34.000000000 +0300
@@ -2405,7 +2405,8 @@
 sub urlDecode {
     my $text = shift;
 
-    $text =~ s/%([\da-f]{2})/chr(hex($1))/gei;
+    $text =~ s/%u([\da-f]+)/chr(hex($1))/eig;
+   $text =~ s/%([\da-f]{2})/chr(hex($1))/gei;
 
     return $text;
 }