diff -rupN content.module content.module --- content.module 2009-01-26 15:45:34.000000000 +0100 +++ content.module 2009-02-02 17:32:21.000000000 +0100 @@ -420,22 +420,17 @@ function content_nodeapi(&$node, $op, $a // 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']; - } + if (!isset($node->content['#pre_render'])) { + $node->content['#pre_render'] = array(); } + $node->content['#pre_render'][] = 'content_alter_extra_weight'; + $node->content['#content_extra_fields'] = $type['extra']; } } } /** - * Implementation of hook_form_alter(). + * Implementation of hook_form_alter(). */ function content_form_alter(&$form, $form_state, $form_id) { if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] .'_node_form' == $form_id) { @@ -446,12 +441,31 @@ function content_form_alter(&$form, $for $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']; + if (!isset($form['#pre_render'])) { + $form['#pre_render'] = array(); + } + $form['#pre_render'][] = 'content_alter_extra_weight'; + $form['#content_extra_fields'] = $type['extra']; + } +} + +/** + * Adjust weight for non-CCK fields. + */ +function content_alter_extra_weight($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. + if (isset($value['view']) && isset($elements[$value['view']])) { + $elements[$value['view']]['#weight'] = $value['weight']; + } + elseif (isset($elements[$key])) { + $elements[$key]['#weight'] = $value['weight']; } } } + return $elements; } /**