X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/4d8b2d84d5635e0e718e9f66fcdf6e20587fbc2c..9e885694cee6ab0e1244dba321b0471f0af71d29:/IkiWiki/Plugin/img.pm diff --git a/IkiWiki/Plugin/img.pm b/IkiWiki/Plugin/img.pm index 0606f5001..7e167240e 100644 --- a/IkiWiki/Plugin/img.pm +++ b/IkiWiki/Plugin/img.pm @@ -5,7 +5,7 @@ package IkiWiki::Plugin::img; use warnings; use strict; -use IkiWiki; +use IkiWiki 2.00; my %imgdefaults; @@ -31,9 +31,17 @@ sub preprocess (@) { #{{{ return ''; } - add_depends($params{page}, $image); - my $file = bestlink($params{page}, $image) - || return "[[img ".sprintf(gettext("%s not found"), $image)."]]"; + my $file = bestlink($params{page}, $image); + if (! $file) { + # TODO: this may not be right, depending on where the file is + # created in the end + add_depends($params{page}, $image); + + return "[[img ".sprintf(gettext("%s not found"), $image)."]]"; + } + else { + add_depends($params{page}, $file); + } my $dir = IkiWiki::dirname($file); my $base = IkiWiki::basename($file); @@ -51,6 +59,8 @@ sub preprocess (@) { #{{{ my $outfile = "$config{destdir}/$dir/${w}x${h}-$base"; $imglink = "$dir/${w}x${h}-$base"; + + will_render($params{page}, $imglink); if (-e $outfile && (-M srcfile($file) >= -M $outfile)) { $r = $im->Read($outfile); @@ -65,7 +75,6 @@ sub preprocess (@) { #{{{ # don't actually write file in preview mode if (! $params{preview}) { - will_render($params{page}, $imglink); my @blob = $im->ImageToBlob(); writefile($imglink, $config{destdir}, $blob[0], 1); } @@ -84,14 +93,18 @@ sub preprocess (@) { #{{{ my ($fileurl, $imgurl); if (! $params{preview}) { - $fileurl=IkiWiki::abs2rel($file, IkiWiki::dirname($params{destpage})); - $imgurl=IkiWiki::abs2rel($imglink, IkiWiki::dirname($params{destpage})); + $fileurl=urlto($file, $params{destpage}); + $imgurl=urlto($imglink, $params{destpage}); } else { $fileurl="$config{url}/$file"; $imgurl="$config{url}/$imglink"; } + if (! defined($im->Get("width")) || ! defined($im->Get("height"))) { + return "[[img ".sprintf(gettext("failed to determine size of image %s"), $file)."]]"; + } + return ''.$alt.'';