]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
proof of concept implementation of static recentchanges
[ikiwiki.git] / IkiWiki.pm
index 230170d859e4ec948314b1e1099abe92186f5610..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,10 +609,38 @@ 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;
        my $content=shift;
+       
+       my $oneline = $content !~ /\n/;
 
        if (exists $hooks{htmlize}{$type}) {
                $content=$hooks{htmlize}{$type}{call}->(
@@ -624,8 +652,6 @@ sub htmlize ($$$) { #{{{
                error("htmlization of $type not supported");
        }
 
-       my $oneline = $content !~ /\n/;
-
        run_hooks(sanitize => sub {
                $content=shift->(
                        page => $page,