bestlink htmllink readfile writefile pagetype srcfile pagename
displaytime will_render gettext urlto targetpage
add_underlay pagetitle titlepage linkpage newpagefile
- inject
+ inject warning
%config %links %pagestate %wikistate %renderedfiles
%pagesources %destsources);
our $VERSION = 3.00; # plugin interface version, next is ikiwiki version
verbose => {
type => "boolean",
example => 1,
- description => "display verbose messages when building?",
+ description => "display verbose messages?",
safe => 1,
rebuild => 0,
},
die $message."\n";
}
+sub warning ($) {
+ return log_message(warning => @_);
+}
+
sub debug ($) {
return unless $config{verbose};
return log_message(debug => @_);
$code.="IkiWiki::PageSpec::match_$1(\$page, ".safequote($2).", \@_)";
}
else {
- $code.=' 0';
+ $code.="IkiWiki::FailReason->new(".safequote(qq{unknown function in pagespec "$word"}).")";
}
}
else {
}
if (! length $code) {
- $code=0;
+ $code="IkiWiki::FailReason->new('empty pagespec')";
}
no warnings;
}
my $url=$defaulturl;
- $url = $params{blogspam_server} if exists $params{blogspam_server};
+ $url = $config{blogspam_server} if exists $config{blogspam_server};
my $client = RPC::XML::Client->new($url);
- my @options = split(",", $params{blogspam_options})
- if exists $params{blogspam_options};
+ my @options = split(",", $config{blogspam_options})
+ if exists $config{blogspam_options};
# Allow short comments and whitespace-only edits, unless the user
# has overridden min-words themselves.
# and "buy".
push @options, "exclude=stopwords";
- my $res = $client->send_request('testComment', {
+ my %req=(
ip => $ENV{REMOTE_ADDR},
- comment => $params{content},
+ comment => defined $params{diff} ? $params{diff} : $params{content},
subject => defined $params{subject} ? $params{subject} : "",
name => defined $params{author} ? $params{author} : "",
link => exists $params{url} ? $params{url} : "",
options => join(",", @options),
site => $config{url},
version => "ikiwiki ".$IkiWiki::version,
- });
+ );
+ my $res = $client->send_request('testComment', \%req);
if (! ref $res || ! defined $res->value) {
debug("failed to get response from blogspam server ($url)");
return undef;
}
elsif ($res->value =~ /^SPAM:(.*)/) {
+ eval q{use Data::Dumper};
+ debug("blogspam server reports ".$res->value.": ".Dumper(\%req));
return gettext("Sorry, but that looks like spam to <a href=\"http://blogspam.net/\">blogspam</a>: ").$1;
}
elsif ($res->value ne 'OK') {
- debug(gettext("blogspam server failure: ").$res->value);
+ debug("blogspam server failure: ".$res->value);
return undef;
}
else {
foreach my $line (split("\n", $params{content})) {
push @diff, $line if ! exists $old{$_};
}
- $params{content}=join("\n", @diff);
+ $params{diff}=join("\n", @diff);
}
my $ok;
$ok=1;
}
elsif (ref $ret eq 'CODE') {
- $ret->();
+ $ret->() unless $params{nonfatal};
$ok=0;
}
elsif (defined $ret) {
- error($ret);
+ error($ret) unless $params{nonfatal};
+ $ok=0;
}
}
error("renaming of attachments is not allowed");
}
}
+
+ my $canremove;
+ IkiWiki::run_hooks(canremove => sub {
+ return if defined $canremove;
+ my $ret=shift->($page, $q, $session);
+ if (defined $ret) {
+ if ($ret eq "") {
+ $canremove=1;
+ }
+ elsif (ref $ret eq 'CODE') {
+ $ret->();
+ $canremove=0;
+ }
+ elsif (defined $ret) {
+ error($ret);
+ $canremove=0;
+ }
+ }
+ });
+ return $canremove;
}
sub formbuilder_setup (@) {
}
}
else {
- IkiWiki::showform($form, $buttons, $session, $q);
+ removal_confirm($q, $session, 0, $q->param("page"));
}
exit 0;