X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/d1d212203c72072d9a42f66c171dc6be83225894..77b38730d4d0ceaa8093c8f459d95f4c75a921a9:/IkiWiki/CGI.pm diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index d069de8dc..3e4cbe4cf 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -4,7 +4,8 @@ use warnings; use strict; use IkiWiki; use IkiWiki::UserInfo; -use encoding 'utf8'; # force use of utf8 for io layer +use open qw{:utf8 :std}; +use Encode; package IkiWiki; @@ -308,17 +309,21 @@ sub cgi_editpage ($$) { #{{{ # This untaint is safe because titlepage removes any problimatic # characters. - my ($page)=titlepage(possibly_foolish_untaint(lc($form->param('page')))); + my ($page)=Encode::decode_utf8($form->param('page')); + $page=titlepage(possibly_foolish_untaint(lc($page))); if (! defined $page || ! length $page || $page=~/$config{wiki_file_prune_regexp}/ || $page=~/^\//) { error("bad page name"); } $page=lc($page); - my $file=$page.$config{default_pageext}; + my $file; if (exists $pagesources{lc($page)}) { $file=$pagesources{lc($page)}; } + else { + $file=$page.".".$config{default_pageext}; + } my $newfile=0; if (! -e "$config{srcdir}/$file") { $newfile=1; @@ -351,14 +356,14 @@ sub cgi_editpage ($$) { #{{{ require IkiWiki::Render; # Apparently FormBuilder doesn't not treat input as # utf-8, so decode from it. - require Encode; my $content = Encode::decode_utf8($form->field('editcontent')); + my $comments = Encode::decode_utf8($form->field('comments')); $form->field(name => "editcontent", value => $content, force => 1); $form->field(name => "comments", - value => Encode::decode_utf8($form->field('comments')), force => 1); + value => $comments, force => 1); $form->tmpl_param("page_preview", - htmlize($config{default_pageext}, + htmlize(pagetype($file), linkify($page, $page, $content))); } else { @@ -440,7 +445,6 @@ sub cgi_editpage ($$) { #{{{ page_locked($page, $session); # Decode utf-8 since FormBuilder does not - require Encode; my $content=Encode::decode_utf8($form->field('editcontent')); $content=~s/\r\n/\n/g; @@ -457,7 +461,7 @@ sub cgi_editpage ($$) { #{{{ } if (defined $form->field('comments') && length $form->field('comments')) { - $message.=Encode::decode_utf8(": ".$form->field('comments')); + $message.=": ".Encode::decode_utf8($form->field('comments')); } if ($config{rcs}) {