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}],
+} #}}}
+
sub checkconfig () { #{{{
if ($config{cgi} && ! length $config{url}) {
error("Must specify url to wiki with --url when using --cgi\n");
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};
- if ($config{svn}) {
- require IkiWiki::Rcs::SVN;
- $config{rcs}=1;
+ if ($config{rcs}) {
+ eval qq{require IkiWiki::Rcs::$config{rcs}};
+ if ($@) {
+ error("Failed to load RCS module IkiWiki::Rcs::$config{rcs}: $@");
+ }
}
else {
require IkiWiki::Rcs::Stub;
- $config{rcs}=0;
}
foreach my $plugin (@{$config{plugin}}) {
error("Failed to load plugin $mod: $@");
}
}
+
+ if (exists $hooks{checkconfig}) {
+ foreach my $id (keys %{$hooks{checkconfig}}) {
+ $hooks{checkconfig}{$id}{call}->();
+ }
+ }
} #}}}
sub error ($) { #{{{
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