--- conditional_fields.old 2010-01-18 02:28:47.000000000 +0100 +++ conditional_fields.module 2010-01-28 11:21:51.000000000 +0100 @@ -222,16 +222,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 - foreach ((array)$node->$field['control_field_name'] as $value) { - $current_values[$field['control_field_name']][] = $value['value']; - if (!empty($value['value'])) { - 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']){ //line adde by ole + foreach ((array)$node->$field['control_field_name'] as $value) { + $current_values[$field['control_field_name']][] = $value['value']; + if (!empty($value['value'])) { + 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; + } + } + } + } //line adde by ole if ($viewed) { // Hide the controlled field if it is not triggered if (!conditional_fields_is_triggered($current_values[$field['control_field_name']], $field['trigger_values'])) { @@ -362,7 +363,7 @@ function conditional_fields_content_admi continue; } // - Exclude fields without Allowed values - if (!$allowed_values[$field['field_name']] = content_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. @@ -439,6 +440,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) @@ -532,8 +544,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']] = content_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; } } } @@ -641,7 +653,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; @@ -654,7 +671,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]); } } @@ -666,7 +683,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]); @@ -776,7 +797,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; } @@ -1058,7 +1079,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; } @@ -1300,7 +1321,6 @@ function theme_conditional_fields_form_i if (!$item['#controlling_fields'] && !$item['#controlled_fields']) { return $rendered_item; } - $id = 'conditional-' . conditional_fields_form_clean_id($item['#field_name']); $classes = array('conditional-field');