### 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; } /**