use strict;
use IkiWiki 3.00;
use Encode;
-BEGIN {
- eval 'use Locale::Po4a::Common qw(nowrapi18n)';
- if ($@) {
- warning(sprintf(gettext('%s is too old, can not disable %s; '.
- 'a denial of service can thus be '.
- 'triggered by malicious content'),
- 'Locale::Po4a', 'Text::WrapI18N'));
- eval 'use Locale::Po4a::Common';
- }
-}
+use Locale::Po4a::Common qw(nowrapi18n);
use Locale::Po4a::Chooser;
use Locale::Po4a::Po;
use File::Basename;
# 2. Injected functions
# 3. Blackboxes for private data
# 4. Helper functions
-# 5. PageSpec's
+# 5. PageSpecs
# ,----
safe => 1,
rebuild => 1,
},
+ po_strictly_refresh_backlinks => {
+ type => "boolean",
+ example => 1,
+ description => "refresh a page when a backlinked page is changed (can hit performance)",
+ safe => 1,
+ rebuild => 1,
+ },
}
sub checkconfig () {
! defined $config{po_translation_status_in_links}) {
$config{po_translation_status_in_links}=1;
}
+ if (! exists $config{po_strictly_refresh_backlinks} ||
+ ! defined $config{po_strictly_refresh_backlinks}) {
+ $config{po_strictly_refresh_backlinks}=1;
+ }
push @{$config{wiki_file_prune_regexps}}, qr/\.pot$/;
}
# force content to be htmlize'd as if it was the same type as the master page
return IkiWiki::htmlize($page, $page,
- pagetype(srcfile($pagesources{masterpage($page)})),
- $content);
+ pagetype(srcfile($pagesources{masterpage($page)})),
+ $content);
}
sub pagetemplate (@) {
$template->param(percenttranslated => percenttranslated($page));
}
if ($template->query(name => "istranslation")) {
- $template->param(istranslation => istranslation($page));
+ $template->param(istranslation => scalar istranslation($page));
}
if ($template->query(name => "istranslatable")) {
$template->param(istranslatable => istranslatable($page));
# Known limitations are preferred to future random bugs.
if ($template->param('discussionlink') && istranslation($page)) {
$template->param('discussionlink' => htmllink(
- $page,
- $destpage,
- $masterpage . '/' . gettext("Discussion"),
- noimageinline => 1,
- forcesubpage => 0,
- linktext => gettext("Discussion"),
- ));
+ $page,
+ $destpage,
+ $masterpage . '/' . gettext("Discussion"),
+ noimageinline => 1,
+ forcesubpage => 0,
+ linktext => gettext("Discussion"),
+ ));
}
# Remove broken parentlink to ./index.html on home page's translations.
# It works because this hook has the "last" parameter set, to ensure it
sub postscan (@) {
my %params = @_;
- my $page = $params{page};
+ return unless $config{po_strictly_refresh_backlinks};
+
+ my $page = $params{page};
# backlinks involve back-dependencies, so that nicepagetitle effects,
# such as translation status displayed in links, are updated
use IkiWiki::Render;
return undef;
}
-sub canremove ($$$) {
- my ($page, $cgi, $session) = (shift, shift, shift);
+sub canremove (@) {
+ my %params = @_;
- if (istranslation($page)) {
+ if (istranslation($params{page})) {
return gettext("Can not remove a translation. Removing the master page, ".
"though, removes its translations as well.");
}
return undef;
}
-sub canrename ($$@) {
- my ($cgi, $session) = (shift, shift);
+sub canrename (@) {
my %params = @_;
+ my $session = $params{session};
if (istranslation($params{src})) {
my $masterpage = masterpage($params{src});
my @types = grep { $_ ne 'po' } $field->options;
$field->options(\@types) if @types;
}
- else {
- # make sure the default value is not po;
- # does this case actually happen?
- debug "po(formbuilder) ".gettext("type field is not selected - not implemented yet");
- }
}
}
}
my $page=shift;
my $destpage=shift;
- return ( exists $filtered{$page}{$destpage}
- && $filtered{$page}{$destpage} eq 1 );
+ return exists $filtered{$page}{$destpage}
+ && $filtered{$page}{$destpage} eq 1;
}
sub setalreadyfiltered($$) {
sub islanguagecode ($) {
my $code=shift;
- return ($code =~ /^[a-z]{2}$/);
+ return $code =~ /^[a-z]{2}$/;
}
sub otherlanguage ($$) {
}
# ,----
-# | PageSpec's
+# | PageSpecs
# `----
package IkiWiki::PageSpec;
-use warnings;
-use strict;
-use IkiWiki 2.00;
sub match_istranslation ($;@) {
my $page=shift;