diff options
author | intrigeri <intrigeri@boum.org> | 2010-06-25 17:14:13 +0200 |
---|---|---|
committer | intrigeri <intrigeri@boum.org> | 2010-06-25 17:14:13 +0200 |
commit | d877b9644bcfbbfc5eaf3f7fc13cb96ecda946c9 (patch) | |
tree | abfa31eec028456f55dc3378ed78b8f3a969b8d8 | |
parent | 9f401d6617a11efcedda1c956b2ccea061a7540f (diff) | |
download | ikiwiki-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.pm | 4 |
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); |