X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/12422e98901cef2774b15ec0e6468e88d4d0a6c6..5f280af23ce105beba10fe5d5e9699269f8b531a:/IkiWiki.pm?ds=inline diff --git a/IkiWiki.pm b/IkiWiki.pm index e3bdc8d83..df38efb7d 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -7,8 +7,44 @@ use File::Spec; use HTML::Template; use vars qw{%config %links %oldlinks %oldpagemtime %pagectime - %renderedfiles %pagesources %depends %plugins}; - + %renderedfiles %pagesources %depends %hooks}; + +sub defaultconfig () { #{{{ + wiki_file_prune_regexp => qr{((^|/).svn/|\.\.|^\.|\/\.|\.html?$|\.rss$)}, + wiki_link_regexp => qr/\[\[(?:([^\]\|]+)\|)?([^\s\]]+)\]\]/, + wiki_processor_regexp => qr/\[\[(\w+)\s+([^\]]*)\]\]/, + wiki_file_regexp => qr/(^[-[:alnum:]_.:\/+]+$)/, + verbose => 0, + wikiname => "wiki", + default_pageext => ".mdwn", + cgi => 0, + rcs => 'svn', + notify => 0, + url => '', + cgiurl => '', + historyurl => '', + diffurl => '', + anonok => 0, + rss => 0, + discussion => 1, + rebuild => 0, + refresh => 0, + getctime => 0, + wrapper => undef, + wrappermode => undef, + svnrepo => undef, + svnpath => "trunk", + srcdir => undef, + destdir => undef, + templatedir => "/usr/share/ikiwiki/templates", + underlaydir => "/usr/share/ikiwiki/basewiki", + setup => undef, + adminuser => undef, + adminemail => undef, + plugin => [qw{inline htmlscrubber}], + headercontent => '', +} #}}} + sub checkconfig () { #{{{ if ($config{cgi} && ! length $config{url}) { error("Must specify url to wiki with --url when using --cgi\n"); @@ -16,9 +52,6 @@ sub checkconfig () { #{{{ if ($config{rss} && ! length $config{url}) { error("Must specify url to wiki with --url when using --rss\n"); } - if ($config{hyperestraier} && ! length $config{url}) { - error("Must specify --url when using --hyperestraier\n"); - } $config{wikistatedir}="$config{srcdir}/.ikiwiki" unless exists $config{wikistatedir}; @@ -40,6 +73,12 @@ sub checkconfig () { #{{{ error("Failed to load plugin $mod: $@"); } } + + if (exists $hooks{checkconfig}) { + foreach my $id (keys %{$hooks{checkconfig}}) { + $hooks{checkconfig}{$id}{call}->(); + } + } } #}}} sub error ($) { #{{{ @@ -387,12 +426,14 @@ sub globlist_match ($$) { #{{{ return 0; } #}}} -sub register_plugin ($$$) { # {{{ - my $type=shift; - my $command=shift; - my $function=shift; +sub hook (@) { # {{{ + my %param=@_; + + if (! exists $param{type} || ! ref $param{call} || ! exists $param{id}) { + error "hook requires type, call, and id parameters"; + } - $plugins{$type}{$command}=$function; + $hooks{$param{type}}{$param{id}}=\%param; } # }}} 1