X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/3cb1c8fa3b1fac58f8a84deef9b72b334c17c97a..a106727d40b120ce4ac4da700e400c7fd4978b1e:/IkiWiki/Plugin/listdirectives.pm

diff --git a/IkiWiki/Plugin/listdirectives.pm b/IkiWiki/Plugin/listdirectives.pm
index a5498a20a..835e25388 100644
--- a/IkiWiki/Plugin/listdirectives.pm
+++ b/IkiWiki/Plugin/listdirectives.pm
@@ -4,20 +4,22 @@ package IkiWiki::Plugin::listdirectives;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
 
-sub import { #{{{
+sub import {
+	add_underlay("directives");
 	hook(type => "getsetup", id => "listdirectives", call => \&getsetup);
 	hook(type => "checkconfig", id => "listdirectives", call => \&checkconfig);
 	hook(type => "needsbuild", id => "listdirectives", call => \&needsbuild);
 	hook(type => "preprocess", id => "listdirectives", call => \&preprocess);
-} # }}}
+}
 
-sub getsetup () { #{{{
+sub getsetup () {
 	return
 		plugin => {
 			safe => 1,
 			rebuild => undef,
+			section => "widget",
 		},
 		directive_description_dir => {
 			type => "string",
@@ -26,28 +28,27 @@ sub getsetup () { #{{{
 			safe => 1,
 			rebuild => 1,
 		},
-} #}}}
+}
 
 my @fulllist;
-my @earlylist;
+my @shortlist;
 my $pluginstring;
 
-sub checkconfig () { #{{{
+sub checkconfig () {
 	if (! defined $config{directive_description_dir}) {
 		$config{directive_description_dir} = "ikiwiki/directive";
 	}
 	else {
 		$config{directive_description_dir} =~ s/\/+$//;
 	}
+}
 
-	@earlylist = sort keys %{$IkiWiki::hooks{preprocess}};
-} #}}}
-
-sub needsbuild (@) { #{{{
+sub needsbuild (@) {
 	my $needsbuild=shift;
 
-	@fulllist = sort keys %{$IkiWiki::hooks{preprocess}};
-	$pluginstring = join(' ', @earlylist) . " : " . join(' ', @fulllist);
+	@fulllist = grep { ! /^_/ } sort keys %{$IkiWiki::hooks{preprocess}};
+	@shortlist = grep { ! $IkiWiki::hooks{preprocess}{$_}{shortcut} } @fulllist;
+	$pluginstring = join(' ', @shortlist) . " : " . join(' ', @fulllist);
 
 	foreach my $page (keys %pagestate) {
 		if (exists $pagestate{$page}{listdirectives}{shown}) {
@@ -63,9 +64,11 @@ sub needsbuild (@) { #{{{
 			}
 		}
 	}
-} # }}}
 
-sub preprocess (@) { #{{{
+	return $needsbuild;
+}
+
+sub preprocess (@) {
 	my %params=@_;
 	
 	$pagestate{$params{destpage}}{listdirectives}{shown}=$pluginstring;
@@ -76,15 +79,15 @@ sub preprocess (@) { #{{{
 		@pluginlist = @fulllist;
 	}
 	else {
-		@pluginlist = @earlylist;
+		@pluginlist = @shortlist;
 	}
 	
 	my $result = '<ul class="listdirectives">';
 	
 	foreach my $plugin (@pluginlist) {
 		$result .= '<li class="listdirectives">';
-		my $link=IkiWiki::linkpage($config{directive_description_dir}."/".$plugin);
-		add_depends($params{page}, $link);
+		my $link=linkpage($config{directive_description_dir}."/".$plugin);
+		add_depends($params{page}, $link, deptype("presence"));
 		$result .= htmllink($params{page}, $params{destpage}, $link);
 		$result .= '</li>';
 	}
@@ -92,6 +95,6 @@ sub preprocess (@) { #{{{
 	$result .= "</ul>";
 
 	return $result;
-} # }}}
+}
 
 1