--- 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'] = '
' . $form[$element]['#prefix']; + $form[$element]['#prefix'] = '
' . $form[$element]['#prefix']; $form[$element]['#suffix'] = $form[$element]['#suffix'] . '
'; } // Fields in groups @@ -658,12 +661,12 @@ // All required fields inside a conditional group must be handled by conditional fields if ($controlled_fields[$element] && $form[$element][$group_element]['#required']) { conditional_fields_unset_required_field($form[$element][$group_element]); - $required_fields[$group_element] = array('field' => $group_element, 'in_group' => $element); + $required_fields[$group_element] = array('field' => ($need_unique_ids ? $form[$element][$group_element]['#id'] : $group_element), 'in_group' => ($need_unique_ids ? $form[$element]['#id'] : $element)); $form[$element][$group_element]['#theme'] = array('conditional_fields_form_item'); } // Manage also conditional fields inside normal groups if ($controlling_fields[$group_element]) { - $form[$element][$group_element]['#controlling_field'] = $group_element; + $form[$element][$group_element]['#controlling_field'] = $need_unique_ids ? $form[$element][$group_element]['#id'] : $group_element ; $form[$element][$group_element]['#theme'] = array('conditional_fields_form_item'); } else if ($controlled_fields[$group_element]) { @@ -676,7 +679,7 @@ conditional_fields_unset_required_field($form[$element][$group_element]); $required_fields[$group_element] = array('field' => $group_element, 'in_group' => $element); } - $form[$element][$group_element]['#controlled_field'] = $group_element; + $form[$element][$group_element]['#controlled_field'] = $need_unique_ids ? $form[$element][$group_element]['#id'] : $group_element ; $form[$element][$group_element]['#theme'] = array('conditional_fields_form_item'); } } @@ -938,6 +941,9 @@ drupal_add_js(array('ConditionalFields' => $settings), 'setting'); drupal_add_js(drupal_get_path('module', 'conditional_fields') . '/conditional_fields.js'); $js = TRUE; + } else { + unset($settings['ui_settings']); + drupal_add_js(array('ConditionalFields' => $settings), 'setting'); } }