diff options
-rw-r--r-- | CHANGELOG | 15 | ||||
-rw-r--r-- | IkiWiki/Plugin/po.pm | 50 | ||||
-rw-r--r-- | doc/bugs/po:_second_or_subsequent_inline_of_translated_page_inlines_.po_file__44___not_translated_content.mdwn | 3 | ||||
-rwxr-xr-x | t/po.t | 38 |
4 files changed, 19 insertions, 87 deletions
@@ -1,3 +1,18 @@ +ikiwiki (3.20190208) UNRELEASED; urgency=medium + + * po: Always filter .po files. + The po plugin in previous ikiwiki releases made the second and + subsequent filter call per (page, destpage) pair into a no-op, + apparently in an attempt to prevent *recursive* filtering (which as + far as we can tell can't happen anyway), with the undesired effect + of interpreting the raw .po file as page content (e.g. Markdown) + if it was inlined into the same page twice, which is apparently + something that tails.org does. Simplify this by deleting the code + that prevented repeated filtering. Thanks, intrigeri + (Closes: #911356) + + -- Simon McVittie <smcv@debian.org> Sun, 24 Feb 2019 17:11:39 +0000 + ikiwiki (3.20190207) upstream; urgency=medium [ Amitai Schleier ] diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 418e8e58a..13b98b739 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -51,7 +51,6 @@ sub import { hook(type => "checkcontent", id => "po", call => \&checkcontent); hook(type => "canremove", id => "po", call => \&canremove); hook(type => "canrename", id => "po", call => \&canrename); - hook(type => "editcontent", id => "po", call => \&editcontent); hook(type => "formbuilder_setup", id => "po", call => \&formbuilder_setup, last => 1); hook(type => "formbuilder", id => "po", call => \&formbuilder); @@ -303,9 +302,8 @@ sub filter (@) { my $page = $params{page}; my $destpage = $params{destpage}; my $content = $params{content}; - if (istranslation($page) && ! alreadyfiltered($page, $destpage)) { + if (istranslation($page)) { $content = po_to_markup($page, $content); - setalreadyfiltered($page, $destpage); } return $content; } @@ -520,15 +518,6 @@ sub canrename (@) { return undef; } -# As we're previewing or saving a page, the content may have -# changed, so tell the next filter() invocation it must not be lazy. -sub editcontent () { - my %params=@_; - - unsetalreadyfiltered($params{page}, $params{page}); - return $params{content}; -} - sub formbuilder_setup (@) { my %params=@_; my $form=$params{form}; @@ -737,42 +726,6 @@ sub myisselflink ($$) { } # ,---- -# | Blackboxes for private data -# `---- - -{ - my %filtered; - - sub alreadyfiltered($$) { - my $page=shift; - my $destpage=shift; - - return exists $filtered{$page}{$destpage} - && $filtered{$page}{$destpage} eq 1; - } - - sub setalreadyfiltered($$) { - my $page=shift; - my $destpage=shift; - - $filtered{$page}{$destpage}=1; - } - - sub unsetalreadyfiltered($$) { - my $page=shift; - my $destpage=shift; - - if (exists $filtered{$page}{$destpage}) { - delete $filtered{$page}{$destpage}; - } - } - - sub resetalreadyfiltered() { - undef %filtered; - } -} - -# ,---- # | Helper functions # `---- @@ -1146,7 +1099,6 @@ sub commit_and_refresh ($) { IkiWiki::rcs_update(); } # Reinitialize module's private variables. - resetalreadyfiltered(); resettranslationscache(); flushmemoizecache(); # Trigger a wiki refresh. diff --git a/doc/bugs/po:_second_or_subsequent_inline_of_translated_page_inlines_.po_file__44___not_translated_content.mdwn b/doc/bugs/po:_second_or_subsequent_inline_of_translated_page_inlines_.po_file__44___not_translated_content.mdwn index a926135b0..26d3717b9 100644 --- a/doc/bugs/po:_second_or_subsequent_inline_of_translated_page_inlines_.po_file__44___not_translated_content.mdwn +++ b/doc/bugs/po:_second_or_subsequent_inline_of_translated_page_inlines_.po_file__44___not_translated_content.mdwn @@ -177,3 +177,6 @@ be resolved by renaming. If it's valid to remove the `alreadyfiltered` mechanism, my `wip/po-filter-every-time` branch does that. Please test? + +> intrigeri says [this change works as intended on tails.org](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911356#41), +> so I've applied it. [[done]] --[[smcv]] @@ -447,25 +447,10 @@ like($output{'debian911356.fr'}, qr{ \s* <p>Entre\sles\sinlines</p> \s* - .* # TODO: This paragraph gets mangled (Debian #911356) - \s* - <p>Après\sles\sinlines</p> -}sx); - -TODO: { -local $TODO = "Debian bug #911356"; -like($output{'debian911356.fr'}, qr{ - <p>Avant\sla\spremière\sinline</p> - \s* - <p>Contenu\sfrançais</p> - \s* - <p>Entre\sles\sinlines</p> - \s* <p>Contenu\sfrançais</p> \s* <p>Après\sles\sinlines</p> }sx); -}; # Variation of Debian #911356 without using raw inlines. like($output{debian911356ish}, qr{ @@ -511,28 +496,6 @@ like($output{'debian911356ish.fr'}, qr{ \s* <p>Entre\sles\sinlines</p> \s* - .* # TODO: This paragraph gets mangled (Debian #911356) - \s* - <p>Après\sles\sinlines</p> -}sx); - -TODO: { -local $TODO = "Debian bug #911356"; -like($output{'debian911356ish.fr'}, qr{ - <p>Avant\sla\spremière\sinline</p> - \s* - <!--feedlinks--> - \s* - <div\sclass="inlinecontent"> - \s* - <h6>debian911356-inlined\.fr</h6> - \s* - <p>Contenu\sfrançais</p> - \s* - </div><!--inlinecontent--> - \s* - <p>Entre\sles\sinlines</p> - \s* <!--feedlinks--> \s* <div\sclass="inlinecontent"> @@ -545,6 +508,5 @@ like($output{'debian911356ish.fr'}, qr{ \s* <p>Après\sles\sinlines</p> }sx); -}; done_testing; |