X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/1b8f1b867c25c5287926ca538c1b04dbfc17f033..ce00d70bd8301195ab88baeac3373e28f5fa73d8:/IkiWiki.pm diff --git a/IkiWiki.pm b/IkiWiki.pm index b326dbdb8..db2605672 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -62,7 +62,6 @@ sub defaultconfig () { #{{{ cgi => 0, post_commit => 0, rcs => '', - notify => 0, url => '', cgiurl => '', historyurl => '', @@ -76,7 +75,6 @@ sub defaultconfig () { #{{{ w3mmode => 0, wrapper => undef, wrappermode => undef, - svnrepo => undef, svnpath => "trunk", gitorigin_branch => "origin", gitmaster_branch => "master", @@ -262,6 +260,12 @@ sub pagetype ($) { #{{{ return; } #}}} +sub isinternal ($) { #{{{ + my $page=shift; + return exists $pagesources{$page} && + $pagesources{$page} =~ /\._([^.]+)$/; +} #}}} + sub pagename ($) { #{{{ my $file=shift; @@ -609,14 +613,11 @@ sub htmllink ($$$;@) { #{{{ return "$linktext"; } #}}} -sub userlink ($) { #{{{ +sub openiduser ($) { #{{{ 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]". @@ -628,10 +629,24 @@ sub userlink ($) { #{{{ $display=~s/^https?:\/\/(.+)\/([^\/]+)$/$2 [$1]/; } $display=~s!^https?://!!; # make sure this is removed - return "".escapeHTML($display).""; + eval q{use CGI 'escapeHTML'}; + error($@) if $@; + return escapeHTML($display); + } + return; +} + +sub userlink ($) { #{{{ + my $user=shift; + + my $oiduser=openiduser($user); + if (defined $oiduser) { + return "$oiduser"; } else { - return $user; + return htmllink("", "", escapeHTML( + length $config{userdir} ? $config{userdir}."/".$user : $user + ), noimageinline => 1); } } #}}} @@ -1278,13 +1293,22 @@ sub match_glob ($$;@) { #{{{ $glob=~s/\\\?/./g; if ($page=~/^$glob$/i) { - return IkiWiki::SuccessReason->new("$glob matches $page"); + if (! IkiWiki::isinternal($page) || $params{internal}) { + return IkiWiki::SuccessReason->new("$glob matches $page"); + } + else { + return IkiWiki::FailReason->new("$glob matches $page, but the page is an internal page"); + } } else { return IkiWiki::FailReason->new("$glob does not match $page"); } } #}}} +sub match_internal ($$;@) { #{{{ + return match_glob($_[0], $_[1], @_, internal => 1) +} #}}} + sub match_link ($$;@) { #{{{ my $page=shift; my $link=lc(shift); @@ -1380,19 +1404,4 @@ sub match_creation_year ($$;@) { #{{{ } } #}}} -sub match_user ($$;@) { #{{{ - shift; - my $user=shift; - my %params=@_; - - return IkiWiki::FailReason->new('cannot match user') - unless exists $params{user}; - if ($user eq $params{user}) { - return IkiWiki::SuccessReason->new("user is $user") - } - else { - return IkiWiki::FailReason->new("user is not $user"); - } -} #}}} - 1