* Centralised all calls to HTML::Template and force all the templates

to be read as utf8.
master
joey 2006-07-02 19:06:08 +00:00
parent 2ed1419c1d
commit d1d212203c
9 changed files with 42 additions and 40 deletions

View File

@ -3,8 +3,6 @@
package IkiWiki;
use warnings;
use strict;
use File::Spec;
use HTML::Template;
use vars qw{%config %links %oldlinks %oldpagemtime %pagectime
%renderedfiles %pagesources %depends %hooks};
@ -304,6 +302,7 @@ sub htmllink ($$$;$$$) { #{{{
"\">?</a>$linktext</span>"
}
require File::Spec;
$bestlink=File::Spec->abs2rel($bestlink, dirname($page));
if (! $noimageinline && isinlinableimage($bestlink)) {
@ -390,13 +389,24 @@ sub saveindex () { #{{{
close OUT;
} #}}}
sub template_params (@) { #{{{
my $filename=shift;
require Encode;
require HTML::Template;
return filter => \&Encode::decode_utf8,
filename => "$config{templatedir}/$filename", @_;
} #}}}
sub template ($;@) { #{{{
HTML::Template->new(template_params(@_));
} #}}}
sub misctemplate ($$) { #{{{
my $title=shift;
my $pagebody=shift;
my $template=HTML::Template->new(
filename => "$config{templatedir}/misc.tmpl"
);
my $template=template("misc.tmpl");
$template->param(
title => $title,
indexlink => indexlink(),

View File

@ -33,11 +33,7 @@ sub cgi_recentchanges ($) { #{{{
unlockwiki();
# Force reading the template as utf-8, necessary if
# rcs_recentchanges returns true utf-8 strings.
require Encode;
my $template=HTML::Template->new(filter => \&Encode::decode_utf8,
filename => "$config{templatedir}/recentchanges.tmpl");
my $template=template("recentchanges.tmpl");
$template->param(
title => "RecentChanges",
indexlink => indexlink(),
@ -72,7 +68,7 @@ sub cgi_signin ($$) { #{{{
action => $config{cgiurl},
header => 0,
template => (-e "$config{templatedir}/signin.tmpl" ?
"$config{templatedir}/signin.tmpl" : ""),
{template_params("signin.tmpl")} : ""),
stylesheet => styleurl(),
);
@ -185,9 +181,7 @@ sub cgi_signin ($$) { #{{{
}
elsif ($form->submitted eq 'Mail Password') {
my $user_name=$form->field("name");
my $template=HTML::Template->new(
filename => "$config{templatedir}/passwordmail.tmpl"
);
my $template=template("passwordmail.tmpl");
$template->param(
user_name => $user_name,
user_password => userinfo_get($user_name, "password"),
@ -239,7 +233,7 @@ sub cgi_prefs ($$) { #{{{
params => $q,
action => $config{cgiurl},
template => (-e "$config{templatedir}/prefs.tmpl" ?
"$config{templatedir}/prefs.tmpl" : ""),
{template_params("prefs.tmpl")} : ""),
stylesheet => styleurl(),
);
my @buttons=("Save Preferences", "Logout", "Cancel");
@ -308,7 +302,7 @@ sub cgi_editpage ($$) { #{{{
params => $q,
action => $config{cgiurl},
table => 0,
template => "$config{templatedir}/editpage.tmpl"
template => {template_params("editpage.tmpl")},
);
my @buttons=("Save Page", "Preview", "Cancel");

View File

@ -40,8 +40,7 @@ sub preprocess_inline (@) { #{{{
if (exists $params{rootpage}) {
# Add a blog post form, with a rss link button.
my $formtemplate=HTML::Template->new(blind_cache => 1,
filename => "$config{templatedir}/blogpost.tmpl");
my $formtemplate=template("blogpost.tmpl", blind_cache => 1);
$formtemplate->param(cgiurl => $config{cgiurl});
$formtemplate->param(rootpage => $params{rootpage});
if ($config{rss}) {
@ -51,16 +50,17 @@ sub preprocess_inline (@) { #{{{
}
elsif ($config{rss}) {
# Add a rss link button.
my $linktemplate=HTML::Template->new(blind_cache => 1,
filename => "$config{templatedir}/rsslink.tmpl");
my $linktemplate=template("rsslink.tmpl", blind_cache => 1);
$linktemplate->param(rssurl => rsspage(basename($params{page})));
$ret.=$linktemplate->output;
}
my $template=HTML::Template->new(blind_cache => 1,
filename => (($params{archive} eq "no")
? "$config{templatedir}/inlinepage.tmpl"
: "$config{templatedir}/inlinepagetitle.tmpl"));
my $template=template(
(($params{archive} eq "no")
? "inlinepage.tmpl"
: "inlinepagetitle.tmpl"),
blind_cache => 1,
);
my @pages;
foreach my $page (blog_list($params{pages}, $params{show})) {
@ -146,8 +146,7 @@ sub genrss ($@) { #{{{
my $url="$config{url}/".htmlpage($page);
my $template=HTML::Template->new(blind_cache => 1,
filename => "$config{templatedir}/rsspage.tmpl");
my $template=template("rsspage.tmpl", blind_cache => 1);
my @items;
foreach my $p (@pages) {

View File

@ -87,9 +87,7 @@ sub estcfg () { #{{{
close TEMPLATE;
open(TEMPLATE, ">$estdir/$cgi.conf") ||
error("write $estdir/$cgi.conf: $!");
my $template=HTML::Template->new(
filename => "$config{templatedir}/estseek.conf"
);
my $template=template("estseek.conf");
eval q{use Cwd 'abs_path'};
$template->param(
index => $estdir,

View File

@ -449,9 +449,7 @@ sub rcs_notify () { #{{{
}
$subject .= " by $user";
my $template = HTML::Template->new(
filename => "$config{templatedir}/notifymail.tmpl"
);
my $template = template("notifymail.tmpl");
$template->param(
wikiname => $config{wikiname},
diff => $diff,

View File

@ -202,9 +202,7 @@ sub rcs_notify () { #{{{
}
$subject.=" by $user";
my $template=HTML::Template->new(
filename => "$config{templatedir}/notifymail.tmpl"
);
my $template=template("notifymail.tmpl");
$template->param(
wikiname => $config{wikiname},
diff => $diff,

View File

@ -25,11 +25,13 @@ sub htmlize ($$) { #{{{
my $content=shift;
if (! $INC{"/usr/bin/markdown"}) {
# Note: a proper perl module is available in Debian
# for markdown, but not upstream yet.
no warnings 'once';
$blosxom::version="is a proper perl module too much to ask?";
use warnings 'all';
do "/usr/bin/markdown";
use Encode;
require Encode;
}
if ($type eq '.mdwn') {
@ -171,8 +173,7 @@ sub genpage ($$$) { #{{{
my $title=pagetitle(basename($page));
my $template=HTML::Template->new(blind_cache => 1,
filename => "$config{templatedir}/page.tmpl");
my $template=template("page.tmpl", blind_cache => 1);
my $actions=0;
if (length $config{cgiurl}) {

4
debian/changelog vendored
View File

@ -20,8 +20,10 @@ ikiwiki (1.8) UNRELEASED; urgency=low
perl, #376329. Also added a test case for it.
* Improve layout of edit page so formatting help link is always visible w/o
getting in the way of the preview.
* Centralised all calls to HTML::Template and force all the templates
to be read as utf8.
-- Joey Hess <joeyh@debian.org> Sun, 2 Jul 2006 13:43:56 -0400
-- Joey Hess <joeyh@debian.org> Sun, 2 Jul 2006 14:55:40 -0400
ikiwiki (1.7) unstable; urgency=low

View File

@ -17,4 +17,6 @@ won't cache templates.
Could be approached by using HTML::Template's support for filters. Just make it use a filter that turns on utf-8
Or by subclassing it and overriding the \_init\_template method, though that's a bit uglier
Or by subclassing it and overriding the \_init\_template method, though that's a bit uglier
[[bugs/done]]