aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2010-06-25 17:14:13 +0200
committerintrigeri <intrigeri@boum.org>2010-06-25 17:14:13 +0200
commitd877b9644bcfbbfc5eaf3f7fc13cb96ecda946c9 (patch)
treeabfa31eec028456f55dc3378ed78b8f3a969b8d8
parent9f401d6617a11efcedda1c956b2ccea061a7540f (diff)
downloadikiwiki-d877b9644bcfbbfc5eaf3f7fc13cb96ecda946c9.tar
ikiwiki-d877b9644bcfbbfc5eaf3f7fc13cb96ecda946c9.tar.gz
po: fix bug with translated pages including templates
The protection against processing loops (i.e. the alreadyfiltered stuff) was playing against us: the template plugin triggered a filter hooks run with the very same ($page, $destpage) arguments pair that we use to identify a already filtered page. Processing an included template could then mark the whole translation page as already filtered, which prevented po_to_markup to be called on the PO content. This commit only runs the whole PO filter logic when our filter hook is run by IkiWiki::render, which only happens when the full page needs to be filtered.
-rw-r--r--IkiWiki/Plugin/po.pm4
1 files changed, 4 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm
index 3023fd7f9..0b48726ea 100644
--- a/IkiWiki/Plugin/po.pm
+++ b/IkiWiki/Plugin/po.pm
@@ -243,6 +243,10 @@ sub filter (@) {
my $page = $params{page};
my $destpage = $params{destpage};
my $content = $params{content};
+
+ my @caller = caller(4);
+ return $content unless $caller[3] ne "IkiWiki::render";
+
if (istranslation($page) && ! alreadyfiltered($page, $destpage)) {
$content = po_to_markup($page, $content);
setalreadyfiltered($page, $destpage);