use warnings;
use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
use IPC::Open2;
my $match_num=qr/[-+]?[0-9]+(?:\.[0-9]+)?/;
left => 'TEXT_LEFT',
);
-sub import { #{{{
+sub import {
hook(type => "getsetup", id => "sparkline", call => \&getsetup);
hook(type => "preprocess", id => "sparkline", call => \&preprocess);
-} # }}}
+}
-sub getsetup () { #{{{
+sub getsetup () {
return
plugin => {
safe => 1,
rebuild => undef,
+ section => "widget",
},
-} #}}}
+}
-sub preprocess (@) { #{{{
+sub preprocess (@) {
my %params=@_;
my $php;
my ($x, $y, $color, $diameter, $text, $location)=
split(/\s*,\s*/, $value);
if (! defined $diameter || $diameter < 0) {
- error gettext("bad featurepoint diameter");
+ error gettext("invalid featurepoint diameter");
}
$x=int($x);
$y=int($y);
if (defined $location) {
$location=$locmap{$location};
if (! defined $location) {
- error gettext("bad featurepoint location");
+ error gettext("invalid featurepoint location");
}
}
$php.=qq{\$sparkline->SetFeaturePoint($x, $y, '$color', $diameter};
my $height=int($params{height} || 20);
if ($height < 2 || $height > 100) {
- error gettext("bad height value");
+ error gettext("invalid height value");
}
if ($style eq "Bar") {
$php.=qq{\$sparkline->Render($height);\n};
}
my $width=int($params{width});
if ($width < 2 || $width > 1024) {
- error gettext("bad width value");
+ error gettext("invalid width value");
}
$php.=qq{\$sparkline->RenderResampled($width, $height);\n};
}
if (! -e "$config{destdir}/$fn") {
my $pid;
- my $sigpipe=0;;
+ my $sigpipe=0;
$SIG{PIPE}=sub { $sigpipe=1 };
$pid=open2(*IN, *OUT, "php");
waitpid $pid, 0;
$SIG{PIPE}="DEFAULT";
- if ($sigpipe) {
+ if ($sigpipe || ! defined $png) {
error gettext("failed to run php");
}
}
return '<img src="'.urlto($fn, $params{destpage}).'" alt="graph" />';
-} # }}}
+}
1