Index: supported/primary_term.inc =================================================================== --- supported/primary_term.inc (revision 0) +++ supported/primary_term.inc (revision 0) @@ -0,0 +1,117 @@ +name, 'taxonomy/term/'. $tid); + } + else { + $output[$tid] = theme('placeholder', $tid); + } + } + + return $output[$tid]; +} + +/** + * Implementation of hook_node_import_fields(). + */ +function primary_term_node_import_fields($type) { + $fields = array(); + + // Import taxonomy terms for nodes. + if (($node_type = node_import_type_is_node($type)) !== FALSE) { + $vids = variable_get('pt_vocabs_'. $node_type, array()); + + foreach ($vids as $vid) { + $vocabulary = taxonomy_vocabulary_load($vid); + $fields['primary_term:'. $vid] = array( + 'title' => t('Primary Term'), + 'module' => 'primary_term', + 'input_format' => 'taxonomy_term', + 'vocabulary' => $vocabulary, + 'has_multiple' => FALSE, + 'has_hierarchy' => FALSE, + ); + } + } + + return $fields; +} + +/** + * Implementation of hook_node_import_defaults(). + */ +function primary_term_node_import_defaults($type, $defaults, $fields, $map) { + $form = array(); + + // Import taxonomy terms for nodes. + if (($node_type = node_import_type_is_node($type)) !== FALSE) { + $vids = variable_get('pt_vocabs_'. $node_type, array()); + foreach ($vids as $vid) { + $vocabulary = taxonomy_vocabulary_load($vid); + if ($vocabulary->tags) { + $form['primary_term:'. $vocabulary->vid] = array( + '#type' => 'textfield', + '#title' => $vocabulary->name, + '#default_value' => isset($defaults['primary_term:'. $vocabulary->vid]) ? $defaults['primary_term:'. $vocabulary->vid] : '', + '#autocomplete_path' => 'taxonomy/autocomplete/'. $vocabulary->vid, + ); + } + else { + $form['primary_term:'. $vocabulary->vid] = taxonomy_form($vocabulary->vid, isset($defaults['primary_term:'. $vocabulary->vid])? $defaults['primary_term:'. $vocabulary->vid] : 0); + } + } + } + + return $form; +} + +/** + * Implementation of hook_node_import_values_alter(). + */ +function primary_term_node_import_values_alter(&$values, $type, $defaults, $options, $fields, $preview) { + if (($node_type = node_import_type_is_node($type)) !== FALSE) { + $taxonomy = isset($values['primary_term']) ? $values['primary_term'] : array(); + foreach ($fields as $fieldname => $fieldinfo) { + if (strpos($fieldname, 'primary_term:') === 0) { + $vocab = $fieldinfo['vocabulary']; + if ($vocab->tags) { + $taxonomy['tags'] = isset($taxonomy['tags']) ? $taxonomy['tags'] : array(); + $taxonomy['tags'][$vocab->vid] = implode(',', (array)$values[$fieldname]); + } + else { + $taxonomy[$vocab->vid] = $values[$fieldname]; + } + unset($values[$fieldname]); + } + } + /* + the primary term module uses node->primary_term and node->primaryterm for + different purposes, mostly for historical reasons, as changing this would + break compatibility with every contributed module that uses this field + (cf. comments in primary_term.module) + */ + $values['primary_term'] = $taxonomy; + $tid = array_shift($taxonomy); + $values['primaryterm'] = $tid; + } +}