diff options
author | Joey Hess <joey@gnu.kitenet.net> | 2009-08-28 19:48:32 -0400 |
---|---|---|
committer | Joey Hess <joey@gnu.kitenet.net> | 2009-08-28 19:48:32 -0400 |
commit | 3811c5f5599f63a65d9b0c73451201514082e8ec (patch) | |
tree | 7c4e7ab0ba5fe8edf9f4cf36721a76a920d1049c /IkiWiki/Plugin/po.pm | |
parent | ec26a9619358498afb817c759625607d3b40f15d (diff) | |
parent | 646c9a4c95a480544d63c161651c45b3b029e598 (diff) | |
download | ikiwiki-3811c5f5599f63a65d9b0c73451201514082e8ec.tar ikiwiki-3811c5f5599f63a65d9b0c73451201514082e8ec.tar.gz |
Merge commit 'intrigeri/po'
Diffstat (limited to 'IkiWiki/Plugin/po.pm')
-rw-r--r-- | IkiWiki/Plugin/po.pm | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index cde2ad4e3..792d84261 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -59,6 +59,8 @@ sub import { inject(name => "IkiWiki::urlto", call => \&myurlto); $origsubs{'cgiurl'}=\&IkiWiki::cgiurl; inject(name => "IkiWiki::cgiurl", call => \&mycgiurl); + $origsubs{'rootpage'}=\&IkiWiki::rootpage; + inject(name => "IkiWiki::rootpage", call => \&myrootpage); } @@ -566,9 +568,12 @@ sub mybestlink ($$) { my $link=shift; my $res=$origsubs{'bestlink'}->(masterpage($page), $link); + my @caller = caller(1); if (length $res && istranslatable($res) - && istranslation($page)) { + && istranslation($page) + && !(exists $caller[3] && defined $caller[3] + && ($caller[3] eq "IkiWiki::PageSpec::match_link"))) { return $res . "." . lang($page); } return $res; @@ -651,6 +656,22 @@ sub mycgiurl (@) { return $origsubs{'cgiurl'}->(%params); } +sub myrootpage (@) { + my %params=@_; + + my $rootpage; + if (exists $params{rootpage}) { + $rootpage=$origsubs{'bestlink'}->($params{page}, $params{rootpage}); + if (!length $rootpage) { + $rootpage=$params{rootpage}; + } + } + else { + $rootpage=masterpage($params{page}); + } + return $rootpage; +} + # ,---- # | Blackboxes for private data # `---- |