--- conditional_fields.module 2010-10-29 18:15:36.000000000 +0000 +++ conditional_fields.module.new 2010-12-07 18:33:44.000000000 +0000 @@ -224,15 +224,17 @@ function conditional_fields_nodeapi(&$no // Create an array with the selected controlling field's values // Check if the controlling field is viewed as well $field_key = array_keys($type['fields'][$field['control_field_name']]['columns']); - foreach ((array)$node->$field['control_field_name'] as $value) { - $current_values[$field['control_field_name']][] = $value[$field_key[0]]; - if (!empty($value[$field_key[0]])) { - if ($node->content[$field['control_field_name']]['field']['#access'] == TRUE || - ($controlling_group && $node->content[$controlling_group]['group'][$field['control_field_name']]['field']['#access'] == TRUE)) { - $viewed = TRUE; + if($node->$field['control_field_name']){ + foreach ((array)$node->$field['control_field_name'] as $value) { + $current_values[$field['control_field_name']][] = $value[$field_key[0]]; + if (!empty($value[$field_key[0]])) { + if ($node->content[$field['control_field_name']]['field']['#access'] == TRUE || + ($controlling_group && $node->content[$controlling_group]['group'][$field['control_field_name']]['field']['#access'] == TRUE)) { + $viewed = TRUE; + } } } - } + } if ($viewed) { // Hide the controlled field if it is not triggered @@ -367,7 +369,7 @@ function conditional_fields_content_admi continue; } // - Exclude fields without Allowed values - if (!$allowed_values[$field['field_name']] = conditional_fields_allowed_values($field)) { + if (!$allowed_values[$field['field_name']] = conditional_field_allowed_values($field)) { continue; } // If a field is inside a controlled group, it can control or be controlled only by fields in the same group. @@ -444,6 +446,17 @@ function conditional_fields_content_admi return; } +function conditional_field_allowed_values($field) { + if($field['type'] == 'content_taxonomy') { + $field_allowed_values = content_taxonomy_allowed_values($field); + unset($field_allowed_values['']); + } + else { + $field_allowed_values = content_allowed_values($field); + } + return $field_allowed_values; +} + /** * Controlling field settings form * (just a table containing information about controlled fields) @@ -537,8 +550,8 @@ function conditional_fields_fieldgroup_g foreach ($form['#content_type']['fields'] as $field) { $in_group = fieldgroup_get_group($form['#content_type']['type'], $field['field_name']); if (!$in_group) { - if ($allowed_values[$field['field_name']] = conditional_fields_allowed_values($field)) { - $available_fields[$field['field_name']] = $field; + if ($allowed_values[$field['field_name']] = conditional_field_allowed_values($field)) { // changed + $available_fields[$field['field_name']] = $field; } } } @@ -666,7 +679,12 @@ function conditional_fields_node_after_b foreach ($controlling_fields as $controlling_field_name => $controlling_field_descendants) { // Check if the controlling field is in the form, user has access to it, and is editable. $group_of_controlling_field = conditional_fields_get_group($type_name, $controlling_field_name); - $controlling_field = conditional_fields_item_in_form($form, $controlling_field_name, $group_of_controlling_field); + $controlling_field = conditional_fields_item_in_form($form, $controlling_field_name, $group_of_controlling_field); + if($form[$controlling_field_name]["tids"]){ + $form[$controlling_field_name]["#field_name"]=$form[$controlling_field_name]["#parents"][0]; + }elseif($form[$group_of_controlling_field][$controlling_field_name]["tids"]){ + $form[$group_of_controlling_field][$controlling_field_name]["#field_name"]=$form[$group_of_controlling_field][$controlling_field_name]["#parents"][0]; + } if (!$controlling_field || $controlling_field['#access'] === FALSE || $controlling_field['#type'] == 'markup') { $missing_controlling_fields[] = $controlling_field_name; continue; @@ -679,7 +697,7 @@ function conditional_fields_node_after_b } else { $form[$controlling_field_name]['#controlling_fields'] = TRUE; - conditional_fields_item_apply_theme($form[$controlling_field_name]); + conditional_fields_item_apply_theme($form[$controlling_field_name]); } } @@ -691,7 +709,11 @@ function conditional_fields_node_after_b if (!$controlled_field || $controlled_field['#access'] === FALSE) { continue; } - + if($form[$controlled_field_name]["tids"]){ + $form[$controlled_field_name]["#field_name"]=$form[$controlled_field_name]["#parents"][0];drupal_set_message("ee"); + }elseif($form[$group_of_controlled_field][$controlled_field_name]["tids"]){ + $form[$group_of_controlled_field][$controlled_field_name]["#field_name"]=$form[$group_of_controlled_field][$controlled_field_name]["#parents"][0]; + } // Handle orphaned fields. foreach ($missing_controlling_fields as $missing_controlling_field) { unset($controlled_field_parents[$missing_controlling_field]); @@ -801,7 +823,7 @@ function conditional_fields_node_after_b // Add validation function $form['#validate'] = array_merge(array('conditional_fields_node_editing_form_validate'), (array)$form['#validate']); - + return $form; } @@ -1096,7 +1118,7 @@ function conditional_fields_field_overvi function conditional_fields_available_fields_default_values($control_field, $conditional_fields) { foreach ($conditional_fields as $field) { $query = db_query("SELECT trigger_values FROM {conditional_fields} WHERE control_field_name = '%s' AND field_name = '%s' AND type = '%s'", $field['field_name'], $control_field, $field['type_name']); - $result = unserialize(db_result($query)); + $result = unserialize(db_result($query)); if ($result) { $default_values[$field['field_name']] = $result; }