manually triggering IkiWiki::refresh() was at least dubious, and more or less
buggy (it randomly broke the whole backlinks feature); thinking a bit more to
add the necessary bits to @needsbuild seems like a better way. don't play with
ikiwiki's internals if not absolutely needed.
Signed-off-by: intrigeri <intrigeri@boum.org>
sub potfile ($) { #{{{
my $masterfile=shift;
(my $name, my $dir, my $suffix) = fileparse($masterfile, qr/\.[^.]*/);
sub potfile ($) { #{{{
my $masterfile=shift;
(my $name, my $dir, my $suffix) = fileparse($masterfile, qr/\.[^.]*/);
- return File::Spec->catfile($dir, $name . ".pot");
+ $dir='' if $dir eq './';
+ return File::Spec->catpath('', $dir, $name . ".pot");
} #}}}
sub pofile ($$) { #{{{
my $masterfile=shift;
my $lang=shift;
(my $name, my $dir, my $suffix) = fileparse($masterfile, qr/\.[^.]*/);
} #}}}
sub pofile ($$) { #{{{
my $masterfile=shift;
my $lang=shift;
(my $name, my $dir, my $suffix) = fileparse($masterfile, qr/\.[^.]*/);
- return File::Spec->catfile($dir, $name . "." . $lang . ".po");
+ $dir='' if $dir eq './';
+ return File::Spec->catpath('', $dir, $name . "." . $lang . ".po");
} #}}}
sub refreshpot ($) { #{{{
} #}}}
sub refreshpot ($) { #{{{
# refresh/create POT and PO files as needed
my $updated_po_files=0;
foreach my $page (keys %pagesources) {
# refresh/create POT and PO files as needed
my $updated_po_files=0;
foreach my $page (keys %pagesources) {
- my $pageneedsbuild = grep { $_ eq $pagesources{$page} } @$needsbuild;
if (istranslatable($page)) {
if (istranslatable($page)) {
+ my $pageneedsbuild = grep { $_ eq $pagesources{$page} } @$needsbuild;
+ my $updated_pot_file=0;
my $file=srcfile($pagesources{$page});
if ($pageneedsbuild || ! -e potfile($file)) {
refreshpot($file);
my $file=srcfile($pagesources{$page});
if ($pageneedsbuild || ! -e potfile($file)) {
refreshpot($file);
}
my @pofiles;
foreach my $lang (keys %{$config{po_slave_languages}}) {
my $pofile=pofile($file, $lang);
}
my @pofiles;
foreach my $lang (keys %{$config{po_slave_languages}}) {
my $pofile=pofile($file, $lang);
- if ($pageneedsbuild || ! -e $pofile) {
+ my $pofile_rel=pofile($pagesources{$page}, $lang);
+ if ($pageneedsbuild || $updated_pot_file || ! -e $pofile) {
+ push @$needsbuild, $pofile_rel
+ unless grep { $_ eq $pofile_rel } @$needsbuild;
- # check staged changes in and trigger a wiki refresh.
+ # check staged changes in
if ($updated_po_files) {
if ($config{rcs}) {
IkiWiki::disable_commit_hook();
if ($updated_po_files) {
if ($config{rcs}) {
IkiWiki::disable_commit_hook();
IkiWiki::enable_commit_hook();
IkiWiki::rcs_update();
}
IkiWiki::enable_commit_hook();
IkiWiki::rcs_update();
}
- IkiWiki::refresh();
- IkiWiki::saveindex();
# refresh module's private variables
undef %filtered;
undef %translations;
# refresh module's private variables
undef %filtered;
undef %translations;
# make existing translations depend on the corresponding master page
foreach my $master (keys %translations) {
foreach my $slave (values %{$translations{$master}}) {
# make existing translations depend on the corresponding master page
foreach my $master (keys %translations) {
foreach my $slave (values %{$translations{$master}}) {
Misc. improvements
------------------
Misc. improvements
------------------
-### automatic POT/PO update
-
-- Use the `change` hook instead of `needsbuild`?
-- Fix (apparently harmless) undefined values that pollute logs when
- saving a master page in the CGI
-
### page titles
Use nice page titles from meta plugin in links, as inline already
### page titles
Use nice page titles from meta plugin in links, as inline already