function hs_taxonomy_field_formatter_view in Hierarchical Select 7.3
Implements hook_field_formatter_view().
File
- modules/
hs_taxonomy.module, line 453 - Implementation of the Hierarchical Select API for the Taxonomy module.
Code
function hs_taxonomy_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
// Extract required field information.
$vocabulary = taxonomy_vocabulary_machine_name_load($field['settings']['allowed_values'][0]['vocabulary']);
// Extract the lineage information from the items (this was added by
// hs_taxonomy_field_formatter_prepare_view()).
$lineages = array();
foreach ($items as $delta => $item) {
if (!empty($item['hs_lineages'])) {
$metadata = $item['hs_lineages'];
for ($i = 0; $i < count($metadata); $i++) {
$term = new StdClass();
$term->tid = $metadata[$i]['tid'];
$term->vid = $vocabulary->vid;
$term->vocabulary_machine_name = $vocabulary->machine_name;
$term->name = $metadata[$i]['label'];
$lineages[$metadata[$i]['lineage']][$metadata[$i]['level']] = $term;
}
}
}
// Actual formatting.
$element = array();
switch ($display['type']) {
case 'hs_taxonomy_term_reference_hierarchical_text':
for ($l = 0; $l < count($lineages); $l++) {
$element[$l]['#theme'] = 'hs_taxonomy_formatter_lineage';
for ($level = 0; $level < count($lineages[$l]); $level++) {
$term = $lineages[$l][$level];
$element[$l]['#lineage'][$level] = array(
'#markup' => $term->name,
);
}
}
break;
case 'hs_taxonomy_term_reference_hierarchical_links':
for ($l = 0; $l < count($lineages); $l++) {
$element[$l]['#theme'] = 'hs_taxonomy_formatter_lineage';
for ($level = 0; $level < count($lineages[$l]); $level++) {
$term = $lineages[$l][$level];
$uri = entity_uri('taxonomy_term', $term);
$uri['options']['html'] = TRUE;
$element[$l]['#lineage'][$level] = array(
'#type' => 'link',
'#title' => $term->name,
'#href' => $uri['path'],
'#options' => $uri['options'],
);
}
}
break;
case 'hs_taxonomy_term_reference_hierarchical_links_last_text':
for ($l = 0; $l < count($lineages); $l++) {
$element[$l]['#theme'] = 'hs_taxonomy_formatter_lineage';
for ($level = 0; $level < count($lineages[$l]) - 1; $level++) {
$term = $lineages[$l][$level];
$uri = entity_uri('taxonomy_term', $term);
$element[$l]['#lineage'][$level] = array(
'#type' => 'link',
'#title' => $term->name,
'#href' => $uri['path'],
'#options' => $uri['options'],
);
}
if (count($lineages[$l]) > 0) {
$level = count($lineages[$l]) - 1;
$term = $lineages[$l][$level];
$element[$l]['#lineage'][$level] = array(
'#markup' => $term->name,
);
}
}
break;
case 'hs_taxonomy_term_reference_hierarchical_text_last_link':
for ($l = 0; $l < count($lineages); $l++) {
$element[$l]['#theme'] = 'hs_taxonomy_formatter_lineage';
for ($level = 0; $level < count($lineages[$l]) - 1; $level++) {
$term = $lineages[$l][$level];
$element[$l]['#lineage'][$level] = array(
'#markup' => $term->name,
);
}
if (count($lineages[$l]) > 0) {
$level = count($lineages[$l]) - 1;
$term = $lineages[$l][$level];
$uri = entity_uri('taxonomy_term', $term);
$element[$l]['#lineage'][$level] = array(
'#type' => 'link',
'#title' => $term->name,
'#href' => $uri['path'],
'#options' => $uri['options'],
);
}
}
break;
case 'hs_taxonomy_term_reference_last_text_only':
for ($l = 0; $l < count($lineages); $l++) {
$element[$l]['#theme'] = 'hs_taxonomy_formatter_lineage';
if (count($lineages[$l]) > 0) {
$level = count($lineages[$l]) - 1;
$term = $lineages[$l][$level];
$element[$l]['#lineage'][0] = array(
'#markup' => $term->name,
);
}
}
break;
case 'hs_taxonomy_term_reference_last_link_only':
for ($l = 0; $l < count($lineages); $l++) {
$element[$l]['#theme'] = 'hs_taxonomy_formatter_lineage';
if (count($lineages[$l]) > 0) {
$level = count($lineages[$l]) - 1;
$term = $lineages[$l][$level];
$uri = entity_uri('taxonomy_term', $term);
$element[$l]['#lineage'][0] = array(
'#type' => 'link',
'#title' => $term->name,
'#href' => $uri['path'],
'#options' => $uri['options'],
);
}
}
break;
}
if (!empty($element)) {
$element['#attached']['css'][] = drupal_get_path('module', 'hierarchical_select') . '/hierarchical_select.css';
}
return $element;
}