refactor template actions

master
Joey Hess 2010-05-14 20:20:41 -04:00
parent 377e82b16c
commit bbe971881a
2 changed files with 21 additions and 19 deletions

View File

@ -1756,17 +1756,31 @@ sub misctemplate ($$;@) {
@_, @_,
); );
templateactions($template, "");
return $template->output;
}
sub templateactions ($$) {
my $template=shift;
my $page=shift;
my $have_actions=0;
my @actions; my @actions;
run_hooks(pageactions => sub { run_hooks(pageactions => sub {
push @actions, map { { action => $_ } } push @actions, map { { action => $_ } }
grep { defined } shift->(page => ""); grep { defined } shift->(page => $page);
}); });
$template->param(actions => \@actions); $template->param(actions => \@actions);
if (@actions) {
$template->param(have_actions => 1); if ($config{cgiurl} && exists $hooks{auth}) {
$template->param(prefsurl => cgiurl(do => "prefs"));
$have_actions=1;
} }
return $template->output; if ($have_actions || @actions) {
$template->param(have_actions => 1);
}
} }
sub hook (@) { sub hook (@) {

View File

@ -84,19 +84,14 @@ sub genpage ($$) {
$template=template('page.tmpl', $template=template('page.tmpl',
blind_cache => 1); blind_cache => 1);
} }
my $actions=0;
my $actions=0;
if (length $config{cgiurl}) { if (length $config{cgiurl}) {
if (IkiWiki->can("cgi_editpage")) { if (IkiWiki->can("cgi_editpage")) {
$template->param(editurl => cgiurl(do => "edit", page => $page)); $template->param(editurl => cgiurl(do => "edit", page => $page));
$actions++; $actions++;
} }
if (exists $hooks{auth}) {
$template->param(prefsurl => cgiurl(do => "prefs"));
$actions++;
} }
}
if (defined $config{historyurl} && length $config{historyurl}) { if (defined $config{historyurl} && length $config{historyurl}) {
my $u=$config{historyurl}; my $u=$config{historyurl};
$u=~s/\[\[file\]\]/$pagesources{$page}/g; $u=~s/\[\[file\]\]/$pagesources{$page}/g;
@ -111,17 +106,10 @@ sub genpage ($$) {
$actions++; $actions++;
} }
} }
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); $template->param(have_actions => 1);
} }
templateactions($template, $page);
my @backlinks=sort { $a->{page} cmp $b->{page} } backlinks($page); my @backlinks=sort { $a->{page} cmp $b->{page} } backlinks($page);
my ($backlinks, $more_backlinks); my ($backlinks, $more_backlinks);