]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki.pm
the 100% correct way is to add it to %links on scan
[git.ikiwiki.info.git] / IkiWiki.pm
index 10a316e03e4dc931cc65e1aac0b0b252ef389929..1cfa419b6f614762a580f1e5aa702b4f4ae0d08f 100644 (file)
@@ -69,15 +69,16 @@ sub defaultconfig () { #{{{
        setup => undef,
        adminuser => undef,
        adminemail => undef,
-       plugin => [qw{mdwn inline htmlscrubber passwordauth signinedit
+       plugin => [qw{mdwn inline htmlscrubber passwordauth openid signinedit
                      lockedit conditional}],
        timeformat => '%c',
        locale => undef,
        sslcookie => 0,
        httpauth => 0,
        userdir => "",
-       usedirs => 0,
+       usedirs => 1,
        numbacklinks => 10,
+       account_creation_password => "",
 } #}}}
    
 sub checkconfig () { #{{{
@@ -650,12 +651,14 @@ sub preprocess ($$$;$$) { #{{{
        return $content;
 } #}}}
 
-sub filter ($$) { #{{{
+sub filter ($$$) { #{{{
        my $page=shift;
+       my $destpage=shift;
        my $content=shift;
 
        run_hooks(filter => sub {
-               $content=shift->(page => $page, content => $content);
+               $content=shift->(page => $page, destpage => $destpage, 
+                       content => $content);
        });
 
        return $content;
@@ -665,7 +668,8 @@ sub indexlink () { #{{{
        return "<a href=\"$config{url}\">$config{wikiname}</a>";
 } #}}}
 
-sub lockwiki () { #{{{
+sub lockwiki (;$) { #{{{
+       my $wait=@_ ? shift : 1;
        # Take an exclusive lock on the wiki to prevent multiple concurrent
        # run issues. The lock will be dropped on program exit.
        if (! -d $config{wikistatedir}) {
@@ -674,15 +678,21 @@ sub lockwiki () { #{{{
        open(WIKILOCK, ">$config{wikistatedir}/lockfile") ||
                error ("cannot write to $config{wikistatedir}/lockfile: $!");
        if (! flock(WIKILOCK, 2 | 4)) { # LOCK_EX | LOCK_NB
-               debug("wiki seems to be locked, waiting for lock");
-               my $wait=600; # arbitrary, but don't hang forever to 
-                             # prevent process pileup
-               for (1..$wait) {
-                       return if flock(WIKILOCK, 2 | 4);
-                       sleep 1;
+               if ($wait) {
+                       debug("wiki seems to be locked, waiting for lock");
+                       my $wait=600; # arbitrary, but don't hang forever to 
+                                     # prevent process pileup
+                       for (1..$wait) {
+                               return if flock(WIKILOCK, 2 | 4);
+                               sleep 1;
+                       }
+                       error("wiki is locked; waited $wait seconds without lock being freed (possible stuck process or stale lock?)");
+               }
+               else {
+                       return 0;
                }
-               error("wiki is locked; waited $wait seconds without lock being freed (possible stuck process or stale lock?)");
        }
+       return 1;
 } #}}}
 
 sub unlockwiki () { #{{{
@@ -1011,29 +1021,29 @@ sub pagespec_match ($$;@) { #{{{
 
 package IkiWiki::FailReason;
 
-use overload (
+use overload ( #{{{
        '""'    => sub { ${$_[0]} },
        '0+'    => sub { 0 },
        '!'     => sub { bless $_[0], 'IkiWiki::SuccessReason'},
        fallback => 1,
-);
+); #}}}
 
-sub new {
+sub new { #{{{
        bless \$_[1], $_[0];
-}
+} #}}}
 
 package IkiWiki::SuccessReason;
 
-use overload (
+use overload ( #{{{
        '""'    => sub { ${$_[0]} },
        '0+'    => sub { 1 },
        '!'     => sub { bless $_[0], 'IkiWiki::FailReason'},
        fallback => 1,
-);
+); #}}}
 
-sub new {
+sub new { #{{{
        bless \$_[1], $_[0];
-}
+}; #}}}
 
 package IkiWiki::PageSpec;