### Eclipse Workspace Patch 1.0
#P CCK 6.x
Index: content.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/Attic/content.module,v
retrieving revision 1.301.2.96
diff -u -r1.301.2.96 content.module
--- content.module	26 Jan 2009 14:45:34 -0000	1.301.2.96
+++ content.module	14 Feb 2009 01:15:48 -0000
@@ -420,16 +420,8 @@
     // Special case for 'view' op, we want to adjust weights of non-cck fields
     // even if there are no actual fields for this type.
     if ($op == 'view') {
-      foreach ($type['extra'] as $key => $value) {
-        // Some core 'fields' use a different key in node forms and in 'view'
-        // render arrays.
-        if (isset($value['view']) && isset($node->content[$value['view']])) {
-          $node->content[$value['view']]['#weight'] = $value['weight'];
-        }
-        elseif (isset($node->content[$key])) {
-          $node->content[$key]['#weight'] = $value['weight'];
-        }
-      }
+      $node->content['#pre_render'][] = 'content_alter_extra_weights';
+      $node->content['#content_extra_fields'] = $type['extra'];
     }
   }
 }
@@ -445,13 +437,28 @@
       // Merge field widgets.
       $form = array_merge($form, content_form($form, $form_state));
     }
-    // Adjust weights for non-CCK fields.
-    foreach ($type['extra'] as $key => $value) {
-      if (isset($form[$key])) {
-        $form[$key]['#weight'] = $value['weight'];
+    $form['#pre_render'][] = 'content_alter_extra_weights';
+    $form['#content_extra_fields'] = $type['extra'];
+  }
+}
+
+/**
+ * Pre-render callback to adjust weights of non-CCK fields.
+ */
+function content_alter_extra_weights($elements) {
+  if (isset($elements['#content_extra_fields'])) {
+    foreach ($elements['#content_extra_fields'] as $key => $value) {
+      // Some core 'fields' use a different key in node forms and in 'view'
+      // render arrays. Check we're not on a form first.
+      if (!isset($elements['#build_id']) && isset($value['view']) && isset($elements[$value['view']])) {
+        $elements[$value['view']]['#weight'] = $value['weight'];
+      }
+      elseif (isset($elements[$key])) {
+        $elements[$key]['#weight'] = $value['weight'];
       }
     }
   }
+  return $elements;
 }
 
 /**
