summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki.pm9
-rw-r--r--IkiWiki/Plugin/po.pm13
2 files changed, 21 insertions, 1 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 35b38df46..0457a6c61 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1074,6 +1074,13 @@ sub urlto ($$;$) {
return beautify_urlpath($link);
}
+sub isselflink ($$) {
+ my $page=shift;
+ my $link=shift;
+
+ return $page eq $link;
+}
+
sub htmllink ($$$;@) {
my $lpage=shift; # the page doing the linking
my $page=shift; # the page that will contain the link (different for inline)
@@ -1099,7 +1106,7 @@ sub htmllink ($$$;@) {
}
return "<span class=\"selflink\">$linktext</span>"
- if length $bestlink && $page eq $bestlink &&
+ if length $bestlink && isselflink($page, $bestlink) &&
! defined $opts{anchor};
if (! $destsources{$bestlink}) {
diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm
index 86d5087f4..3023fd7f9 100644
--- a/IkiWiki/Plugin/po.pm
+++ b/IkiWiki/Plugin/po.pm
@@ -64,6 +64,8 @@ sub import {
inject(name => "IkiWiki::cgiurl", call => \&mycgiurl);
$origsubs{'rootpage'}=\&IkiWiki::rootpage;
inject(name => "IkiWiki::rootpage", call => \&myrootpage);
+ $origsubs{'isselflink'}=\&IkiWiki::isselflink;
+ inject(name => "IkiWiki::isselflink", call => \&myisselflink);
}
}
@@ -675,6 +677,17 @@ sub myrootpage (@) {
return $rootpage;
}
+sub myisselflink ($$) {
+ my $page=shift;
+ my $link=shift;
+
+ return 1 if $origsubs{'isselflink'}->($page, $link);
+ if (istranslation($page)) {
+ return $origsubs{'isselflink'}->(masterpage($page), $link);
+ }
+ return;
+}
+
# ,----
# | Blackboxes for private data
# `----