diff -rupN cck_old/includes/content.node_form.inc cck/includes/content.node_form.inc
--- cck_old/includes/content.node_form.inc	2009-02-11 09:53:04.000000000 +1100
+++ includes/content.node_form.inc	2009-04-17 08:08:35.000000000 +1000
@@ -42,18 +42,6 @@ function content_field_form(&$form, &$fo
   $form_element = array();
   $field_name = $field['field_name'];
 
-  // See if access to this form element is restricted,
-  // if so, skip widget processing and just set the value.
-  $access = content_access('edit', $field);
-  if (!$access) {
-    $addition[$field_name] = array(
-      '#access' => $access,
-      '#type' => 'value',
-      '#value' => $node->$field_name,
-      );
-    return $addition;
-  }
-
   // TODO: is the "if (function_exists($function)) {" needed ?
   // defining the $function here makes it unclear where it is actually called
   $function = $field['widget']['module'] .'_widget';
@@ -86,6 +74,24 @@ function content_field_form(&$form, &$fo
       }
     }
 
+    // See if access to this form element is restricted,
+    // if so, skip widget processing and just set the value.
+    $access = content_access('edit', $field);
+    if (!$access) {
+      if (empty($node->nid)) {
+        $value = $items;
+      }
+      else {
+        $value = $node->$field_name;
+      }
+      $addition[$field_name] = array(
+        '#access' => $access,
+        '#type' => 'value',
+        '#value' => $value,
+        );
+      return $addition;
+    }
+
     // If content module handles multiple values for this form element,
     // and not selecting an individual $delta, process the multiple value form.
     if (!isset($get_delta) && content_handle('widget', 'multiple values', $field) == CONTENT_HANDLE_CORE) {
