summaryrefslogtreecommitdiff
path: root/modules/taxonomy/taxonomy.module
diff options
context:
space:
mode:
Diffstat (limited to 'modules/taxonomy/taxonomy.module')
-rw-r--r--modules/taxonomy/taxonomy.module30
1 files changed, 21 insertions, 9 deletions
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index 495aa28fd..f8ec38c08 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -2172,14 +2172,21 @@ function taxonomy_autocomplete_elements_process($element, &$form_state, $form) {
// See if this element is in the database format or the transformed format,
// and transform it if necessary.
- if (is_array($element['#value']) && !array_key_exists($field_key, $element['#value'])) {
- $tags = array();
- foreach ($element['#default_value'] as $item) {
- $tags[$item['value']] = isset($item['taxonomy_term']) ? $item['taxonomy_term'] : taxonomy_term_load($item['value']);
+ if (is_array($element['#value'])) {
+ if (!array_key_exists($field_key, $element['#value'])) {
+ $tags = array();
+ foreach ($element['#default_value'] as $item) {
+ $tags[$item['value']] = isset($item['taxonomy_term']) ? $item['taxonomy_term'] : taxonomy_term_load($item['value']);
+ }
+ $typed_string = taxonomy_implode_tags($tags);
+ }
+ else {
+ $typed_string = $element['#value'][$field_key];
}
- $element['#value'] = taxonomy_implode_tags($tags);
}
- $typed_string = $element['#value'];
+ else {
+ $typed_string = $element['#value'];
+ }
$value = array();
$element[$field_key] = array(
@@ -2211,10 +2218,15 @@ function taxonomy_autocomplete_elements_process($element, &$form_state, $form) {
* FAPI function to validate taxonomy term autocomplete element.
*/
function taxonomy_autocomplete_validate($element, &$form_state) {
+ $field_name = $element['#field_name'];
+ if (!isset($form_state['values'][$field_name])) {
+ return;
+ }
+
// Autocomplete widgets do not send their tids in the form, so we must detect
// them here and process them independently.
- if ($form_state['values'][$element['#field_name']]['value']) {
-
+ $langcode = $form_state['complete form'][$field_name]['#language'];
+ if ($tags = $form_state['values'][$field_name][$langcode]['value']) {
// @see taxonomy_node_save
$field = $form_state['#fields'][$element['#field_name']]['field'];
$field_key = $element['#columns'][0];
@@ -2222,7 +2234,7 @@ function taxonomy_autocomplete_validate($element, &$form_state) {
foreach ($field['settings']['allowed_values'] as $tree) {
$vids[] = $tree['vid'];
}
- $typed_terms = drupal_explode_tags($form_state['values'][$element['#field_name']]['value']);
+ $typed_terms = drupal_explode_tags($tags);
$values = array();
foreach ($typed_terms as $typed_term) {