Index: nodereference_url.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodereference_url/nodereference_url.module,v
retrieving revision 1.11
diff -u -w -b -r1.11 nodereference_url.module
--- nodereference_url.module	26 Jul 2009 00:48:29 -0000	1.11
+++ nodereference_url.module	23 Sep 2009 15:35:18 -0000
@@ -192,6 +192,11 @@
           '#required' => TRUE,
           '#element_validate' => array('nodereference_url_fallback_validate'),
         );
+        $form['edit_fallback'] = array(
+          '#type' => 'checkbox',
+          '#title' => t('Use fallback behavior during edit mode.'),
+          '#default_value' => isset($widget['edit_fallback']) ? $widget['edit_fallback'] : FALSE,
+        );        
 
         $form['node_link'] = array(
           '#tree' => TRUE,
@@ -237,7 +242,7 @@
       return $form;
 
     case 'save':
-      return array('node_link', 'fallback');
+      return array('node_link', 'fallback', 'edit_fallback');
   }
 }
 
@@ -282,8 +287,8 @@
     }
   }
 
-  // If no NID is available, use the fallback behavior.
-  if (!isset($referenced_nid)) {
+  // If no NID is available or edit_fallback is true, use the fallback behavior.
+  if ( !isset($referenced_nid) || (isset($referenced_nid) && $field['widget']['edit_fallback'] == TRUE && count($items) > 0) ){
     // Page not found error.
     // Check for the form_build_id to prevent throwing a page not found on
     // manual builds. See http://drupal.org/node/397606.
@@ -314,7 +319,7 @@
     }
   }
 
-  if (isset($referenced_nid)) {
+  if (isset($referenced_nid) && $field['widget']['edit_fallback'] == FALSE || count($items) == 0) {
     $element[0]['nid'] = array(
       '#title' => $field['widget']['label'],
       '#type' => 'nodereference_url',