]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/img.pm
Version control backends promoted to first-class plugins
[ikiwiki.git] / IkiWiki / Plugin / img.pm
index 49e1d57d61b49a3eb0faa7740a2a3a5c74fd744b..748d28aceae70a3494b8a9f587c0f2de0595db6c 100644 (file)
@@ -41,19 +41,23 @@ sub preprocess (@) { #{{{
        }
 
        my $file = bestlink($params{page}, $image);
+       my $srcfile = srcfile($file, 1);
+       if (! length $file || ! defined $srcfile) {
+               return htmllink($params{page}, $params{destpage}, $image);
+       }
 
        my $dir = $params{page};
        my $base = IkiWiki::basename($file);
 
        eval q{use Image::Magick};
-       return "[[img ".gettext("Image::Magick not installed")."]]" if $@;
+       error gettext("Image::Magick is not installed") if $@;
        my $im = Image::Magick->new;
        my $imglink;
        my $r;
 
        if ($params{size} ne 'full') {
                my ($w, $h) = ($params{size} =~ /^(\d+)x(\d+)$/);
-               return "[[img ".sprintf(gettext('bad size "%s"'), $params{size})."]]"
+               error sprintf(gettext('bad size "%s"'), $params{size})
                        unless (defined $w && defined $h);
 
                my $outfile = "$config{destdir}/$dir/${w}x${h}-$base";
@@ -61,16 +65,16 @@ sub preprocess (@) { #{{{
                
                will_render($params{page}, $imglink);
 
-               if (-e $outfile && (-M srcfile($file) >= -M $outfile)) {
+               if (-e $outfile && (-M $srcfile >= -M $outfile)) {
                        $r = $im->Read($outfile);
-                       return "[[img ".sprintf(gettext("failed to read %s: %s"), $outfile, $r)."]]" if $r;
+                       error sprintf(gettext("failed to read %s: %s"), $outfile, $r) if $r;
                }
                else {
-                       $r = $im->Read(srcfile($file));
-                       return "[[img ".sprintf(gettext("failed to read %s: %s"), $file, $r)."]]" if $r;
+                       $r = $im->Read($srcfile);
+                       error sprintf(gettext("failed to read %s: %s"), $file, $r) if $r;
 
                        $r = $im->Resize(geometry => "${w}x${h}");
-                       return "[[img ".sprintf(gettext("failed to resize: %s"), $r)."]]" if $r;
+                       error sprintf(gettext("failed to resize: %s"), $r) if $r;
 
                        # don't actually write file in preview mode
                        if (! $params{preview}) {
@@ -83,8 +87,8 @@ sub preprocess (@) { #{{{
                }
        }
        else {
-               $r = $im->Read(srcfile($file));
-               return "[[img ".sprintf(gettext("failed to read %s: %s"), $file, $r)."]]" if $r;
+               $r = $im->Read($srcfile);
+               error sprintf(gettext("failed to read %s: %s"), $file, $r) if $r;
                $imglink = $file;
        }
 
@@ -101,7 +105,7 @@ sub preprocess (@) { #{{{
        }
 
        if (! defined($im->Get("width")) || ! defined($im->Get("height"))) {
-               return "[[img ".sprintf(gettext("failed to determine size of image %s"), $file)."]]";
+               error sprintf(gettext("failed to determine size of image %s"), $file)
        }
 
        my $imgtag='<img src="'.$imgurl.