X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a65d312467c5ab179ecf4aa715790f371a46634a..b6774bc6afac48e2c0a122647edc1485e7174a6e:/IkiWiki/Plugin/postsparkline.pm?ds=inline

diff --git a/IkiWiki/Plugin/postsparkline.pm b/IkiWiki/Plugin/postsparkline.pm
index 6fc96f8b3..2fae9c5fe 100644
--- a/IkiWiki/Plugin/postsparkline.pm
+++ b/IkiWiki/Plugin/postsparkline.pm
@@ -3,14 +3,24 @@ package IkiWiki::Plugin::postsparkline;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
 
-sub import { #{{{
+sub import {
 	IkiWiki::loadplugin('sparkline');
+	hook(type => "getsetup", id => "postsparkline", call => \&getsetup);
 	hook(type => "preprocess", id => "postsparkline", call => \&preprocess);
-} # }}}
+}
+
+sub getsetup () {
+	return 
+		plugin => {
+			safe => 1,
+			rebuild => undef,
+			section => "widget",
+		},
+}
 
-sub preprocess (@) { #{{{
+sub preprocess (@) {
 	my %params=@_;
 
 	if (! exists $params{max}) {
@@ -21,11 +31,16 @@ sub preprocess (@) { #{{{
 		return "";
 	}
 
+	my $deptype;
 	if (! exists $params{time} || $params{time} ne 'mtime') {
 		$params{timehash} = \%IkiWiki::pagectime;
+		# need to update when pages are added or removed
+		$deptype = deptype("presence");
 	}
 	else {
 		$params{timehash} = \%IkiWiki::pagemtime;
+		# need to update when pages are changed
+		$deptype = deptype("content");
 	}
 
 	if (! exists $params{formula}) {
@@ -39,17 +54,11 @@ sub preprocess (@) { #{{{
 		error gettext("unknown formula");
 	}
 
-	add_depends($params{page}, $params{pages});
-
-	my @list;
-	foreach my $page (keys %pagesources) {
-		next if $page eq $params{page};
-		if (pagespec_match($page, $params{pages}, location => $params{page})) {
-			push @list, $page;
-		}
-	}
-	
-	@list = sort { $params{timehash}->{$b} <=> $params{timehash}->{$a} } @list;
+	my @list=sort { $params{timehash}->{$b} <=> $params{timehash}->{$a} } 
+		pagespec_match_list($params{page}, $params{pages},
+			deptype => $deptype,
+			filter => sub { $_[0] eq $params{page} },
+		);
 
 	my @data=eval qq{IkiWiki::Plugin::postsparkline::formula::$formula(\\\%params, \@list)};
 	if ($@) {
@@ -69,7 +78,7 @@ sub preprocess (@) { #{{{
 	delete $params{color};
 	return IkiWiki::Plugin::sparkline::preprocess(%params, 
 		map { $_.$color => "" } reverse @data);
-} # }}}
+}
 
 sub perfoo ($@) {
 	my $sub=shift;