* Patch from Recai Oktaş to improve utf-8 support, it should now use proper

utf-8 for edit and other fields, and for recentchanges. There may still
  be utf-8 issues with the preferences page though.
master
joey 2006-06-11 18:51:49 +00:00
parent 2af87dea6c
commit 2ce6d15b8b
3 changed files with 18 additions and 12 deletions

View File

@ -43,7 +43,8 @@ sub cgi_recentchanges ($) { #{{{
styleurl => styleurl(), styleurl => styleurl(),
baseurl => "$config{url}/", baseurl => "$config{url}/",
); );
print $q->header, $template->output; require Encode;
print $q->header(-charset=>'utf-8'), Encode::decode_utf8($template->output);
} #}}} } #}}}
sub cgi_signin ($$) { #{{{ sub cgi_signin ($$) { #{{{
@ -55,6 +56,7 @@ sub cgi_signin ($$) { #{{{
title => "signin", title => "signin",
fields => [qw(do title page subpage from name password confirm_password email)], fields => [qw(do title page subpage from name password confirm_password email)],
header => 1, header => 1,
charset => "utf-8",
method => 'POST', method => 'POST',
validate => { validate => {
confirm_password => { confirm_password => {
@ -172,7 +174,7 @@ sub cgi_signin ($$) { #{{{
$form->field(name => "confirm_password", type => "hidden"); $form->field(name => "confirm_password", type => "hidden");
$form->field(name => "email", type => "hidden"); $form->field(name => "email", type => "hidden");
$form->text("Registration successful. Now you can Login."); $form->text("Registration successful. Now you can Login.");
print $session->header(); print $session->header(-charset=>'utf-8');
print misctemplate($form->title, $form->render(submit => ["Login"])); print misctemplate($form->title, $form->render(submit => ["Login"]));
} }
else { else {
@ -202,12 +204,12 @@ sub cgi_signin ($$) { #{{{
$form->text("Your password has been emailed to you."); $form->text("Your password has been emailed to you.");
$form->field(name => "name", required => 0); $form->field(name => "name", required => 0);
print $session->header(); print $session->header(-charset=>'utf-8');
print misctemplate($form->title, $form->render(submit => ["Login", "Register", "Mail Password"])); print misctemplate($form->title, $form->render(submit => ["Login", "Register", "Mail Password"]));
} }
} }
else { else {
print $session->header(); print $session->header(-charset=>'utf-8');
print misctemplate($form->title, $form->render(submit => ["Login", "Register", "Mail Password"])); print misctemplate($form->title, $form->render(submit => ["Login", "Register", "Mail Password"]));
} }
} #}}} } #}}}
@ -222,6 +224,7 @@ sub cgi_prefs ($$) { #{{{
fields => [qw(do name password confirm_password email fields => [qw(do name password confirm_password email
subscriptions locked_pages)], subscriptions locked_pages)],
header => 0, header => 0,
charset => "utf-8",
method => 'POST', method => 'POST',
validate => { validate => {
confirm_password => { confirm_password => {
@ -281,7 +284,7 @@ sub cgi_prefs ($$) { #{{{
$form->text("Preferences saved."); $form->text("Preferences saved.");
} }
print $session->header(); print $session->header(-charset=>'utf-8');
print misctemplate($form->title, $form->render(submit => \@buttons)); print misctemplate($form->title, $form->render(submit => \@buttons));
} #}}} } #}}}
@ -293,6 +296,7 @@ sub cgi_editpage ($$) { #{{{
my $form = CGI::FormBuilder->new( my $form = CGI::FormBuilder->new(
fields => [qw(do rcsinfo subpage from page editcontent comments)], fields => [qw(do rcsinfo subpage from page editcontent comments)],
header => 1, header => 1,
charset => "utf-8",
method => 'POST', method => 'POST',
validate => { validate => {
editcontent => '/.+/', editcontent => '/.+/',
@ -414,7 +418,8 @@ sub cgi_editpage ($$) { #{{{
! length $form->field('editcontent')) { ! length $form->field('editcontent')) {
my $content=""; my $content="";
if (exists $pagesources{lc($page)}) { if (exists $pagesources{lc($page)}) {
$content=readfile(srcfile($pagesources{lc($page)})); require Encode;
$content=Encode::decode_utf8(readfile(srcfile($pagesources{lc($page)})));
$content=~s/\n/\r\n/g; $content=~s/\n/\r\n/g;
} }
$form->field(name => "editcontent", value => $content, $form->field(name => "editcontent", value => $content,
@ -445,7 +450,8 @@ sub cgi_editpage ($$) { #{{{
} }
if (defined $form->field('comments') && if (defined $form->field('comments') &&
length $form->field('comments')) { length $form->field('comments')) {
$message.=": ".$form->field('comments'); require Encode;
$message.=Encode::decode_utf8(": ".$form->field('comments'));
} }
if ($config{rcs}) { if ($config{rcs}) {

View File

@ -29,13 +29,10 @@ sub htmlize ($$) { #{{{
$blosxom::version="is a proper perl module too much to ask?"; $blosxom::version="is a proper perl module too much to ask?";
use warnings 'all'; use warnings 'all';
do "/usr/bin/markdown"; do "/usr/bin/markdown";
require Encode;
} }
if ($type eq '.mdwn') { if ($type eq '.mdwn') {
# Markdown does character based stuff that does not work $content=Markdown::Markdown($content);
# well with utf-8 strings.
$content=Encode::decode_utf8(Markdown::Markdown(Encode::encode_utf8($content)));
} }
else { else {
error("htmlization of $type not supported"); error("htmlization of $type not supported");

5
debian/changelog vendored
View File

@ -28,8 +28,11 @@ ikiwiki (1.5) UNRELEASED; urgency=low
* Doc updates for git. * Doc updates for git.
* Fix absolute url munging in rss generation to support https, ftp, etc urls * Fix absolute url munging in rss generation to support https, ftp, etc urls
not just http urls. not just http urls.
* Patch from Recai Oktaş to improve utf-8 support, it should now use proper
utf-8 for edit and other fields, and for recentchanges. There may still
be utf-8 issues with the preferences page though.
-- Joey Hess <joeyh@debian.org> Thu, 8 Jun 2006 02:05:57 -0400 -- Joey Hess <joeyh@debian.org> Sun, 11 Jun 2006 14:48:41 -0400
ikiwiki (1.4) unstable; urgency=low ikiwiki (1.4) unstable; urgency=low