]> sipb.mit.edu Git - ikiwiki.git/commitdiff
po(otherlanguages): return pages that should exist
authorintrigeri <intrigeri@boum.org>
Wed, 12 Nov 2008 22:22:26 +0000 (23:22 +0100)
committerintrigeri <intrigeri@boum.org>
Wed, 12 Nov 2008 22:27:30 +0000 (23:27 +0100)
... 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>
IkiWiki/Plugin/po.pm
doc/plugins/po.mdwn

index a6342c74f93db9f882c043467339b99b2cf04375..7039f3033f709dcc36ad771012de3298f591ebc7 100644 (file)
@@ -150,6 +150,7 @@ sub needsbuild () { #{{{
        # a given master page was rendered because its source file was changed
        @origneedsbuild=(@$needsbuild);
 
        # a given master page was rendered because its source file was changed
        @origneedsbuild=(@$needsbuild);
 
+       flushmemoizecache();
        buildtranslationscache();
 
        # make existing translations depend on the corresponding master page
        buildtranslationscache();
 
        # 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 %ret;
        my $page=shift;
 
        my %ret;
-       if (istranslatable($page)) {
-               %ret = %{$translations{$page}} if defined $translations{$page};
-       }
-       elsif (istranslation($page)) {
-               my $masterpage = masterpage($page);
-               $ret{$config{po_master_language}{code}} = $masterpage;
-               foreach my $lang (sort keys %{$translations{$masterpage}}) {
-                       next if $lang eq lang($page);
-                       $ret{$lang} = $translations{$masterpage}{$lang};
-               }
+       return \%ret unless (istranslation($page) || istranslatable($page));
+       my $curlang=lang($page);
+       foreach my $lang
+               ($config{po_master_language}{code}, keys %{$config{po_slave_languages}}) {
+               next if $lang eq $curlang;
+               $ret{$lang}=otherlanguage($page, $lang);
        }
        return \%ret;
 } #}}}
        }
        return \%ret;
 } #}}}
index 209b573cbc7aaff4c7b4dc1669df9ed69f1d1883..47fa13450b46c7a1ecb8437701ff03c9bf42ff5a 100644 (file)
@@ -592,8 +592,7 @@ Robustness tests
 ### Creating pages
 
 - creating a master page via RCS: **OK**
 ### Creating pages
 
 - creating a master page via RCS: **OK**
-- creating a master page via CGI: **FIXME** the new master page has no
-  `otherlanguages` links until refreshed once more
+- creating a master page via CGI: **OK**
 
 ### Deleting pages
 
 
 ### Deleting pages