diff --git a/active_tags.module b/active_tags.module index a2a5523..9d5090c 100644 --- a/active_tags.module +++ b/active_tags.module @@ -89,19 +89,16 @@ function active_tags_taxonomy_autocomplete_validate($element, &$form_state) { $field = field_widget_field($element, $form_state); $instance = field_widget_instance($element, $form_state); - $settings = $instance['widget']['settings']; - $parents = $element['#array_parents']; - $field_name = $instance['field_name']; - // try to check if we left term(s) in the entry field + // Try to check if we left term(s) in the entry field if (!empty($element['term_entry']['#value']) || ($element['terms']['#default_value'] != $element['terms']['#value'])) { $entry_field_not_empty = TRUE; if (!empty($element['term_entry']['#value'])) { $element['terms']['#value'] .= ', ' . $element['term_entry']['#value']; } - // clear the entry field - $parents = array_merge($parents, array('field_terms', '#markup')); + // Clear the entry field + $parents = array_merge($element['#array_parents'], array('term_entry', '#value')); drupal_array_set_nested_value($form_state['complete form'], $parents, ''); } @@ -109,25 +106,26 @@ function active_tags_taxonomy_autocomplete_validate($element, &$form_state) { taxonomy_autocomplete_validate($element, $form_state); $key_exists = FALSE; - $parents = $element['#array_parents']; - $items = drupal_array_get_nested_value($form_state['values'], $parents, $key_exists); + $items = drupal_array_get_nested_value($form_state['values'], $element['#parents'], $key_exists); if ($entry_field_not_empty && $key_exists) { - // save terms with tid = 'autocreate' + // Save terms with tid = 'autocreate' taxonomy_field_presave('node', $element['#entity'], $field, $instance, LANGUAGE_NONE, $items); - // translate term names into actual terms, override form_state values + // Translate term names into actual terms, override form_state values taxonomy_autocomplete_validate($element, $form_state); } - // load all tags + // Load all tags $tags = array(); - foreach ($items as $item) { - $tags[$item['tid']] = isset($item['taxonomy_term']) ? $item['taxonomy_term'] : taxonomy_term_load($item['tid']); + if ($items) { + foreach ($items as $item) { + $tags[$item['tid']] = isset($item['taxonomy_term']) ? $item['taxonomy_term'] : taxonomy_term_load($item['tid']); + } } - // retheme removable terms + // Retheme removable terms if (!empty($tags)) { - $parents = array_merge($parents, array('field_terms', '#markup')); + $parents = array_merge($element['#array_parents'], array('field_terms', '#markup')); $value = theme('active_tags_term_list_remove', array('terms' => $tags)); drupal_array_set_nested_value($form_state['complete form'], $parents, $value); }