Index: imagefield.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/imagefield/imagefield.module,v
retrieving revision 1.30.2.1
diff -u -r1.30.2.1 imagefield.module
--- imagefield.module	24 Jan 2007 05:16:09 -0000	1.30.2.1
+++ imagefield.module	25 Jan 2007 01:09:38 -0000
@@ -533,7 +533,11 @@
     $rules = _imagecache_get_presets();
     foreach ($rules as $ruleid => $rulename) {
        $formatters[$rulename] = array(
-         'label' => $rulename,
+         'label' => drupal_ucfirst($rulename),
+         'field types' => array('image'),
+         );
+       $formatters[$rulename . '_linked'] = array(
+         'label' => drupal_ucfirst($rulename) . t(' as link'),
          'field types' => array('image'),
          );
     }
@@ -545,7 +549,7 @@
  * Implementation of hook_field_formatter().
  *
  */
-function imagefield_field_formatter($field, $item, $formatter) {
+function imagefield_field_formatter($field, $item, $formatter, $node) {
   if (!isset($item['fid'])) {
     return '';
   }
@@ -553,10 +557,19 @@
   if (module_exists('imagecache')) {
     $rules = _imagecache_get_presets();
     if (in_array($formatter, (array) $rules)) {
-      return theme('imagecache', $formatter, $file['filepath'], $item['alt'], $item['title']);
+      $image = theme('imagecache', $formatter, $file['filepath'], $item['alt'], $item['title']);
     }
+    elseif (preg_match('/^(.*)_linked$/', $formatter, $matches)) {
+      if (in_array($matches[1], (array) $rules)) {
+        $image = theme('imagecache', $matches[1], $file['filepath'], $item['alt'], $item['title']);
+      }
+    }
+  }
+  if (empty($image)) {
+    $image = theme('imagefield_image', $file, $item['alt'], $item['title']);
   }
-  return theme('imagefield_image', $file, $item['alt'], $item['title']);
+  
+  return theme('imagefield_image_wrapper', $image, $field, $item, $formatter, $node);
 }
 
 
@@ -613,6 +626,15 @@
   }
 }
 
+function theme_imagefield_image_wrapper($image, $field, $item, $formatter, $node) {
+  if (preg_match('/_linked$/', $formatter)) {
+    return l($image, 'node/'.$node->nid, array(), NULL, NULL, FALSE, TRUE);
+  }
+  else {
+    return $image;
+  }
+}
+
 /**
  * formats an array of images.
  * @param images
