summaryrefslogtreecommitdiff
path: root/IkiWiki
diff options
context:
space:
mode:
Diffstat (limited to 'IkiWiki')
-rw-r--r--IkiWiki/Plugin/skeleton.pm.example9
-rw-r--r--IkiWiki/Plugin/websetup.pm11
-rw-r--r--IkiWiki/Render.pm9
3 files changed, 24 insertions, 5 deletions
diff --git a/IkiWiki/Plugin/skeleton.pm.example b/IkiWiki/Plugin/skeleton.pm.example
index ddf2996d6..a404e24af 100644
--- a/IkiWiki/Plugin/skeleton.pm.example
+++ b/IkiWiki/Plugin/skeleton.pm.example
@@ -24,6 +24,7 @@ sub import {
hook(type => "format", id => "skeleton", call => \&format);
hook(type => "pagetemplate", id => "skeleton", call => \&pagetemplate);
hook(type => "templatefile", id => "skeleton", call => \&templatefile);
+ hook(type => "pageactions", id => "skeleton", call => \&pageactions);
hook(type => "delete", id => "skeleton", call => \&delete);
hook(type => "change", id => "skeleton", call => \&change);
hook(type => "cgi", id => "skeleton", call => \&cgi);
@@ -146,6 +147,14 @@ sub templatefile (@) {
debug("skeleton plugin running as a templatefile hook");
}
+sub pageactions (@) {
+ my %params=@_;
+ my $page=$params{page};
+
+ debug("skeleton plugin running as a pageactions hook");
+ return ();
+}
+
sub delete (@) {
my @files=@_;
diff --git a/IkiWiki/Plugin/websetup.pm b/IkiWiki/Plugin/websetup.pm
index d444c0a3d..4d2e611eb 100644
--- a/IkiWiki/Plugin/websetup.pm
+++ b/IkiWiki/Plugin/websetup.pm
@@ -102,7 +102,7 @@ sub showfields ($$$@) {
}
my $section=defined $plugin
- ? sprintf(gettext("%s plugin:"), $plugininfo{section}).$plugin
+ ? sprintf(gettext("%s plugin:"), $plugininfo{section})." ".$plugin
: "main";
my %enabledfields;
my $shownfields=0;
@@ -265,6 +265,8 @@ sub showform ($$) {
my $cgi=shift;
my $session=shift;
+ IkiWiki::needsignin($cgi, $session);
+
if (! defined $session->param("name") ||
! IkiWiki::is_admin($session->param("name"))) {
error(gettext("you are not logged in as an admin"));
@@ -501,9 +503,10 @@ sub formbuilder_setup (@) {
my %params=@_;
my $form=$params{form};
- if ($form->title eq "preferences") {
- push @{$params{buttons}}, "Wiki Setup";
- if ($form->submitted && $form->submitted eq "Wiki Setup") {
+ if ($form->title eq "preferences" &&
+ IkiWiki::is_admin($params{session}->param("name"))) {
+ push @{$params{buttons}}, "Setup";
+ if ($form->submitted && $form->submitted eq "Setup") {
showform($params{cgi}, $params{session});
exit;
}
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index cf6943e7d..a824ba539 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -112,7 +112,14 @@ sub genpage ($$) {
}
}
- if ($actions) {
+ my @actions;
+ run_hooks(pageactions => sub {
+ push @actions, map { { action => $_ } }
+ grep { defined } shift->(page => $page);
+ });
+ $template->param(actions => \@actions);
+
+ if ($actions || @actions) {
$template->param(have_actions => 1);
}