? inline_prevent_duplicates.patch
Index: inline.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/inline/inline.module,v
retrieving revision 1.19.2.7
diff -u -p -r1.19.2.7 inline.module
--- inline.module	18 Apr 2007 11:22:27 -0000	1.19.2.7
+++ inline.module	30 Apr 2008 11:30:35 -0000
@@ -282,11 +282,11 @@ function theme_inline_img($file, $field)
 }
 
 function theme_inline_add_to_teaser($node, $file, $field) {
-  return theme('inline_img', $file, $field) . $node->teaser;
+  return '<span class="inline-auto-inline">' . theme('inline_img', $file, $field) . '</span>' . $node->teaser;
 }
 
 function theme_inline_add_to_body($node, $file, $field) {
-  return theme('inline_img', $file, $field) . $node->body;
+  return '<span class="inline-auto-inline">' . theme('inline_img', $file, $field) . '</span>' . $node->body;
 }
 
 function _inline_auto_add($node) {
@@ -297,40 +297,46 @@ function _inline_auto_add($node) {
   switch (variable_get('upload_inline_'. $node->type, 0)) {
     case 1:
       foreach ($node->files as $fid => $file) {
-        $file = inline_prepare_file_object($file);
-        if (_inline_decide_img_tag($file)) {
-          $node->files[$fid]->inline = TRUE;
-          $node->teaser = theme('inline_add_to_teaser', $node, $file, 'teaser');
-        }
-        else {
-          $node->files[$fid]->inline = FALSE;
+        if(!$node->files[$fid]->inline) {
+          $file = inline_prepare_file_object($file);
+          if (_inline_decide_img_tag($file)) {
+            $node->files[$fid]->inline = TRUE;
+            $node->teaser = theme('inline_add_to_teaser', $node, $file, 'teaser');
+          }
+          else {
+            $node->files[$fid]->inline = FALSE;
+          }
         }
       }
       break;
     
     case 2:
       foreach ($node->files as $fid => $file) {
-        $file = inline_prepare_file_object($file);
-        if (_inline_decide_img_tag($file)) {
-          $node->files[$fid]->inline = TRUE;
-          $node->body = theme('inline_add_to_body', $node, $file, 'body');
-        }
-        else {
-          $node->files[$fid]->inline = FALSE;
+        if(!$node->files[$fid]->inline) {
+          $file = inline_prepare_file_object($file);
+          if (_inline_decide_img_tag($file)) {
+            $node->files[$fid]->inline = TRUE;
+            $node->body = theme('inline_add_to_body', $node, $file, 'body');
+          }
+          else {
+            $node->files[$fid]->inline = FALSE;
+          }
         }
       }
       break;
     
     case 3:
       foreach ($node->files as $fid => $file) {
-        $file = inline_prepare_file_object($file);
-        if (_inline_decide_img_tag($file)) {
-          $node->files[$fid]->inline = TRUE;
-          $node->teaser = theme('inline_add_to_teaser', $node, $file, 'teaser');
-          $node->body = theme('inline_add_to_body', $node, $file, 'body');
-        }
-        else {
-          $node->files[$fid]->inline = FALSE;
+        if(!$node->files[$fid]->inline) {
+          $file = inline_prepare_file_object($file);
+          if (_inline_decide_img_tag($file)) {
+            $node->files[$fid]->inline = TRUE;
+            $node->teaser = theme('inline_add_to_teaser', $node, $file, 'teaser');
+            $node->body = theme('inline_add_to_body', $node, $file, 'body');
+          }
+          else {
+            $node->files[$fid]->inline = FALSE;
+          }
         }
       }
       break;
@@ -357,6 +363,7 @@ function _inline_substitute_tags(&$node,
         else {
           $replace = theme('inline_as_link', $file);
         }
+        $node->files[$file->fid]->inline = TRUE;
       }
       else {
         $replace = "<span style=\"color:red; font-weight:bold\">NOT FOUND: $value</span>";
