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);
}
my $link=shift;
my $res=$origsubs{'bestlink'}->(masterpage($page), $link);
- my @caller = caller(1);
if (length $res
&& istranslatable($res)
- && istranslation($page)
- # keep masterpage as the rootpage for inline's post form
- && !(exists $caller[3] && defined $caller[3]
- && ($caller[3] eq "IkiWiki::rootpage"))) {
+ && istranslation($page)) {
return $res . "." . lang($page);
}
return $res;
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
# `----