From: Joey Hess <joey@kitenet.net>
Date: Sat, 15 May 2010 00:20:41 +0000 (-0400)
Subject: refactor template actions
X-Git-Tag: 3.20100515~20
X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/bbe971881a7a3c03dfdb5312215c434e35eff94e

refactor template actions
---

diff --git a/IkiWiki.pm b/IkiWiki.pm
index 46c29abe3..a42f56bf0 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1755,18 +1755,32 @@ sub misctemplate ($$;@) {
 		html5 => $config{html5},
 		@_,
 	);
+
+	templateactions($template, "");
 	
+	return $template->output;
+}
+
+sub templateactions ($$) {
+	my $template=shift;
+	my $page=shift;
+
+	my $have_actions=0;
 	my @actions;
 	run_hooks(pageactions => sub {
 		push @actions, map { { action => $_ } } 
-			grep { defined } shift->(page => "");
+			grep { defined } shift->(page => $page);
 	});
 	$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 (@) {
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index 8b1b9aef4..833fcaaff 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -84,19 +84,14 @@ sub genpage ($$) {
 		$template=template('page.tmpl', 
 			blind_cache => 1);
 	}
-	my $actions=0;
 
+	my $actions=0;
 	if (length $config{cgiurl}) {
 		if (IkiWiki->can("cgi_editpage")) {
 			$template->param(editurl => cgiurl(do => "edit", page => $page));
 			$actions++;
 		}
-		if (exists $hooks{auth}) {
-			$template->param(prefsurl => cgiurl(do => "prefs"));
-			$actions++;
-		}
 	}
-		
 	if (defined $config{historyurl} && length $config{historyurl}) {
 		my $u=$config{historyurl};
 		$u=~s/\[\[file\]\]/$pagesources{$page}/g;
@@ -111,17 +106,10 @@ sub genpage ($$) {
 			$actions++;
 		}
 	}
-
-	my @actions;
-	run_hooks(pageactions => sub {
-		push @actions, map { { action => $_ } } 
-			grep { defined } shift->(page => $page);
-	});
-	$template->param(actions => \@actions);
-
-	if ($actions || @actions) {
+	if ($actions) {
 		$template->param(have_actions => 1);
 	}
+	templateactions($template, $page);
 
 	my @backlinks=sort { $a->{page} cmp $b->{page} } backlinks($page);
 	my ($backlinks, $more_backlinks);