From: joey Date: Sun, 2 Jul 2006 19:06:08 +0000 (+0000) Subject: * Centralised all calls to HTML::Template and force all the templates X-Git-Tag: 1.8~36 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/d1d212203c72072d9a42f66c171dc6be83225894?hp=2ed1419c1d469a3e018c2607ba47da525d97fa3a * Centralised all calls to HTML::Template and force all the templates to be read as utf8. --- diff --git a/IkiWiki.pm b/IkiWiki.pm index a2af406a9..7002b55be 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -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 ($$$;$$$) { #{{{ "\">?$linktext" } + 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(), diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index e02ab62a6..d069de8dc 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -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"); diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 05563b946..afff96cee 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -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) { diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index c94974ac4..94b37ca06 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -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, diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index f29ffa162..636eb57f5 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -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, diff --git a/IkiWiki/Rcs/svn.pm b/IkiWiki/Rcs/svn.pm index 42ded0cea..be4106a02 100644 --- a/IkiWiki/Rcs/svn.pm +++ b/IkiWiki/Rcs/svn.pm @@ -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, diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 54e409040..3be8e1c53 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -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}) { diff --git a/debian/changelog b/debian/changelog index 5afcf976c..5b7b66e16 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 Sun, 2 Jul 2006 13:43:56 -0400 + -- Joey Hess Sun, 2 Jul 2006 14:55:40 -0400 ikiwiki (1.7) unstable; urgency=low diff --git a/doc/bugs/utf8_html_templates.mdwn b/doc/bugs/utf8_html_templates.mdwn index 5d7ea836b..a750b23f6 100644 --- a/doc/bugs/utf8_html_templates.mdwn +++ b/doc/bugs/utf8_html_templates.mdwn @@ -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 \ No newline at end of file +Or by subclassing it and overriding the \_init\_template method, though that's a bit uglier + +[[bugs/done]]