X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/bb93fccf0690344aa77f9538a508959a6de09847..f62b4f45039a1acb5f9173b0835475d28c1058a5:/IkiWiki/Plugin/toc.pm?ds=inline

diff --git a/IkiWiki/Plugin/toc.pm b/IkiWiki/Plugin/toc.pm
index 460837b1d..ac07b9af6 100644
--- a/IkiWiki/Plugin/toc.pm
+++ b/IkiWiki/Plugin/toc.pm
@@ -4,7 +4,7 @@ package IkiWiki::Plugin::toc;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
 use HTML::Parser;
 
 sub import {
@@ -18,6 +18,7 @@ sub getsetup () {
 		plugin => {
 			safe => 1,
 			rebuild => undef,
+			section => "widget",
 		},
 }
 
@@ -53,8 +54,8 @@ sub format (@) {
 	my $page="";
 	my $index="";
 	my %anchors;
-	my $curlevel;
-	my $startlevel=0;
+	my $startlevel=($params{startlevel} ? $params{startlevel} : 0);
+	my $curlevel=$startlevel-1;
 	my $liststarted=0;
 	my $indent=sub { "\t" x $curlevel };
 	$p->handler(start => sub {
@@ -65,12 +66,17 @@ sub format (@) {
 			my $anchor="index".++$anchors{$level}."h$level";
 			$page.="$text<a name=\"$anchor\"></a>";
 	
-			# Take the first header level seen as the topmost level,
+			# Unless we're given startlevel as a parameter,
+			# take the first header level seen as the topmost level,
 			# even if there are higher levels seen later on.
 			if (! $startlevel) {
 				$startlevel=$level;
 				$curlevel=$startlevel-1;
 			}
+			elsif (defined $params{startlevel} &&
+			       $level < $params{startlevel}) {
+			    return;
+			}
 			elsif ($level < $startlevel) {
 				$level=$startlevel;
 			}