]> scripts.mit.edu Git - www/ikiwiki.git/blobdiff - IkiWiki.pm
only linkify openids in userlink
[www/ikiwiki.git] / IkiWiki.pm
index 46060c1b225e19fce4b8bf5e799f3f496dec3f43..b326dbdb8f1c8e59576e6a57fb6a36376337ee51 100644 (file)
@@ -90,7 +90,7 @@ sub defaultconfig () { #{{{
        adminuser => undef,
        adminemail => undef,
        plugin => [qw{mdwn inline htmlscrubber passwordauth openid signinedit
-                     lockedit conditional}],
+                     lockedit conditional recentchanges}],
        libdir => undef,
        timeformat => '%c',
        locale => undef,
@@ -609,6 +609,32 @@ sub htmllink ($$$;@) { #{{{
        return "<a href=\"$bestlink\"@attrs>$linktext</a>";
 } #}}}
 
+sub userlink ($) { #{{{
+       my $user=shift;
+
+       eval q{use CGI 'escapeHTML'};
+       error($@) if $@;
+       if ($user =~ m!^https?://! &&
+           eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) {
+               # Munge user-urls, as used by eg, OpenID.
+               my $oid=Net::OpenID::VerifiedIdentity->new(identity => $user);
+               my $display=$oid->display;
+               # Convert "user.somehost.com" to "user [somehost.com]".
+               if ($display !~ /\[/) {
+                       $display=~s/^(.*?)\.([^.]+\.[a-z]+)$/$1 [$2]/;
+               }
+               # Convert "http://somehost.com/user" to "user [somehost.com]".
+               if ($display !~ /\[/) {
+                       $display=~s/^https?:\/\/(.+)\/([^\/]+)$/$2 [$1]/;
+               }
+               $display=~s!^https?://!!; # make sure this is removed
+               return "<a href=\"$user\">".escapeHTML($display)."</a>";
+       }
+       else {
+               return $user;
+       }
+} #}}}
+
 sub htmlize ($$$) { #{{{
        my $page=shift;
        my $type=shift;