po(otherlanguages): return pages that should exist

... instead of already existing ones.
This fixes the "missing otherlanguages links on master pages just created via
the CGI" bug.

Signed-off-by: intrigeri <intrigeri@boum.org>
master
intrigeri 2008-11-12 23:22:26 +01:00
parent 36312b13b4
commit 190c641c8a
2 changed files with 17 additions and 13 deletions

View File

@ -150,6 +150,7 @@ sub needsbuild () { #{{{
# a given master page was rendered because its source file was changed # a given master page was rendered because its source file was changed
@origneedsbuild=(@$needsbuild); @origneedsbuild=(@$needsbuild);
flushmemoizecache();
buildtranslationscache(); buildtranslationscache();
# make existing translations depend on the corresponding master page # make existing translations depend on the corresponding master page
@ -568,20 +569,24 @@ sub islanguagecode ($) { #{{{
return ($code =~ /^[a-z]{2}$/); return ($code =~ /^[a-z]{2}$/);
} #}}} } #}}}
sub otherlanguages($) { #{{{ sub otherlanguage ($$) { #{{{
my $page=shift;
my $code=shift;
return masterpage($page) if $code eq $config{po_master_language}{code};
return masterpage($page) . '.' . $code;
} #}}}
sub otherlanguages ($) { #{{{
my $page=shift; my $page=shift;
my %ret; my %ret;
if (istranslatable($page)) { return \%ret unless (istranslation($page) || istranslatable($page));
%ret = %{$translations{$page}} if defined $translations{$page}; my $curlang=lang($page);
} foreach my $lang
elsif (istranslation($page)) { ($config{po_master_language}{code}, keys %{$config{po_slave_languages}}) {
my $masterpage = masterpage($page); next if $lang eq $curlang;
$ret{$config{po_master_language}{code}} = $masterpage; $ret{$lang}=otherlanguage($page, $lang);
foreach my $lang (sort keys %{$translations{$masterpage}}) {
next if $lang eq lang($page);
$ret{$lang} = $translations{$masterpage}{$lang};
}
} }
return \%ret; return \%ret;
} #}}} } #}}}

View File

@ -592,8 +592,7 @@ Robustness tests
### Creating pages ### Creating pages
- creating a master page via RCS: **OK** - creating a master page via RCS: **OK**
- creating a master page via CGI: **FIXME** the new master page has no - creating a master page via CGI: **OK**
`otherlanguages` links until refreshed once more
### Deleting pages ### Deleting pages