--- conditional_fields.module.org 2009-12-01 01:13:24.000000000 +0000 +++ conditional_fields.module 2009-12-01 01:26:26.000000000 +0000 @@ -538,14 +538,13 @@ /** * Alteration of the node editing form */ -function conditional_fields_node_editing_form(&$form, $form_state) { +function conditional_fields_node_editing_form(&$form, $form_state, $need_unique_ids = FALSE) { $type_name = $form['type']['#value']; // Do nothing if there are no conditional fields if (!$data = conditional_fields_load_data($type_name)) { return; } - // Remove from data fields that user can't edit // and apply orphaned fields settings $orphaned_settings = variable_get('c_fields_edit_' . $type_name, C_FIELDS_ORPHANED_SHOW_TRIGGERED); @@ -613,7 +612,11 @@ // To do: look if we should make this themeable foreach ($data as $row) { // Add javascript settings for this field - $settings['controlling_fields']['#conditional-' . conditional_fields_form_clean_id($row['control_field_name'])]['#conditional-' . conditional_fields_form_clean_id($row['field_name'])] = array('field_id' => '#conditional-' . conditional_fields_form_clean_id($row['field_name']), 'trigger_values' => $row['trigger_values']); + if ( $need_unique_ids ) { + $settings['controlling_fields']['#conditional-' . conditional_fields_form_clean_id($form[$row['control_field_name']]['#id'])]['#conditional-' . conditional_fields_form_clean_id($form[$row['field_name']]['#id'])] = array('field_id' => '#conditional-' . conditional_fields_form_clean_id($form[$row['field_name']]['#id']), 'trigger_values' => $row['trigger_values']); + } else { + $settings['controlling_fields']['#conditional-' . conditional_fields_form_clean_id($row['control_field_name'])]['#conditional-' . conditional_fields_form_clean_id($row['field_name'])] = array('field_id' => '#conditional-' . conditional_fields_form_clean_id($row['field_name']), 'trigger_values' => $row['trigger_values']); + } // To do: feature, add an array of controlled fields to js to allow for multiple controlling fields for a field. // Build helper arrays @@ -634,15 +637,15 @@ $form[$element]['#conditional_fields_multiple'] = TRUE; } if ($controlling_fields[$element]) { - $form[$element]['#controlling_field'] = $element; + $form[$element]['#controlling_field'] = $need_unique_ids ? $form[$element]['#id'] : $element ; $form[$element]['#theme'] = array('conditional_fields_form_item'); } else if ($controlled_fields[$element]) { if ($form[$element]['#required']) { conditional_fields_unset_required_field($form[$element]); - $required_fields[$element] = array('field' => $element); + $required_fields[$element] = array('field' => ($need_unique_ids ? $form[$element]['#id'] : $element)); } - $form[$element]['#controlled_field'] = $element; + $form[$element]['#controlled_field'] = $need_unique_ids ? $form[$element]['#id'] : $element ; $form[$element]['#theme'] = array('conditional_fields_form_item'); } } @@ -650,7 +653,7 @@ // Groups if ($controlled_fields[$element]) { // Group markup is still hardcoded. - $form[$element]['#prefix'] = '