--- conditional_fields/conditional_fields.module 2010-04-06 11:57:41.000000000 +0300 +++ conditional_fields/conditional_fields.module 2010-04-06 12:09:48.000000000 +0300 @@ -537,7 +537,7 @@ function conditional_fields_forms_submit /** * 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 @@ -612,7 +612,11 @@ function conditional_fields_node_editing // 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 @@ -633,15 +637,15 @@ function conditional_fields_node_editing $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'); } elseif ($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'); } } @@ -649,7 +653,7 @@ function conditional_fields_node_editing // 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 @@ -657,12 +661,12 @@ function conditional_fields_node_editing // 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'); } elseif ($controlled_fields[$group_element]) { @@ -675,7 +679,7 @@ function conditional_fields_node_editing 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'); } } @@ -940,6 +944,9 @@ function conditional_fields_add_js($sett 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'); } }