--- sites/all/modules/cck/includes/content.admin.inc Fri Dec 05 15:30:18 2008 +++ sites/all/modules/cck/includes/content.admin.inc Mon Dec 22 11:20:11 2008 @@ -138,6 +138,7 @@ if (module_exists('fieldgroup')) { $groups = fieldgroup_groups($type['type']); $group_types = fieldgroup_types(); + $plain_tree = _fieldgroup_plain_tree($groups); $group_options = _fieldgroup_groups_label($type['type']); // Add the ability to group under the newly created row. $group_options['_add_new_group'] = '_add_new_group'; @@ -185,6 +186,8 @@ // Groups. foreach ($groups as $name => $group) { + $current_group_options = $plain_tree; + unset($current_group_options[$name]); $weight = $group['weight']; $form[$name] = array( 'label' => array('#value' => check_plain($group['label'])), @@ -193,7 +196,8 @@ 'configure' => array('#value' => l(t('Configure'), 'admin/content/node-type/'. $type['url_str'] .'/groups/'. $group['group_name'])), 'remove' => array('#value' => l(t('Remove'), 'admin/content/node-type/'. $type['url_str'] .'/groups/'. $group['group_name'] .'/remove')), 'weight' => array('#type' => 'textfield', '#default_value' => $weight, '#size' => 3), - 'parent' => array('#type' => 'hidden', '#default_value' => ''), + 'parent' => array('#type' => 'select', '#options' => $current_group_options, '#default_value' => ''), + 'prev_parent' => array('#type' => 'hidden', '#value' => ''), 'hidden_name' => array('#type' => 'hidden', '#default_value' => $group['group_name']), '#root' => TRUE, '#row_type' => 'group', @@ -204,6 +208,10 @@ $form[$field_name]['parent']['#default_value'] = $name; $form[$field_name]['prev_parent']['#value'] = $name; } + // Adjust child group rows + $form[$name]['parent']['#default_value'] = $group['parent_group_name']; + $form[$name]['prev_parent']['#value'] = $group['parent_group_name']; + $form['#group_rows'][] = $name; $weights[] = $weight; } @@ -300,6 +308,8 @@ // Additional row : add new group. if (module_exists('fieldgroup')) { + $current_group_options = $group_options; + unset($current_group_options[_add_new_group]); $weight++; $name = '_add_new_group'; $form[$name] = array( @@ -323,7 +333,8 @@ '#value' => 'standard', ), 'weight' => array('#type' => 'textfield', '#default_value' => $weight, '#size' => 3), - 'parent' => array('#type' => 'hidden', '#default_value' => ''), + 'parent' => array('#type' => 'select', '#options' => $current_group_options, '#default_value' => ''), + 'prev_parent' => array('#type' => 'hidden', '#value' => ''), 'hidden_name' => array('#type' => 'hidden', '#default_value' => $name), '#root' => TRUE, '#add_new' => TRUE, @@ -632,6 +643,7 @@ $form[$name] = array( 'human_name' => array('#value' => check_plain($group['label'])), 'weight' => array('#type' => 'value', '#value' => $weight), + 'parent' => array('#type' => 'value', '#value' => ''), ); if ($contexts_selector == 'basic') { $form[$name]['label'] = array( @@ -656,6 +668,8 @@ foreach ($group['fields'] as $field_name => $field) { $form[$field_name]['parent']['#value'] = $name; } + $form[$name]['parent']['#value'] = $group['parent_group_name']; + $form[$name]['group']['#value']['depth'] = $group['depth']; } $form['submit'] = array('#type' => 'submit', '#value' => t('Save')); @@ -1601,7 +1615,8 @@ // Group rows: account for weight. if (module_exists('fieldgroup')) { foreach ($group_rows as $name) { - $dummy[$name] = array('#weight' => $form[$name]['weight']['#value'], '#value' => $name .' '); + $dummy[$name] = array('#weight' => ($form[$name]['weight']['#value'] + ($form[$name]['group']['#value']['depth'] * 0.01)), '#value' => $name .' '); + $form[$name]['#depth'] = $form[$name]['group']['#value']['depth']; } } // Field rows : account for weight and parenting. @@ -1609,7 +1624,7 @@ $dummy[$name] = array('#weight' => $form[$name]['weight']['#value'], '#value' => $name .' '); if (module_exists('fieldgroup')) { if ($parent = $form[$name]['parent']['#value']) { - $form[$name]['#depth'] = 1; + $form[$name]['#depth'] = $form[$parent]['group']['#value']['depth'] + 1; $dummy[$parent][$name] = $dummy[$name]; unset($dummy[$name]); }