function term_reference_filter_by_views_field_widget_form_alter in Taxonomy Term Reference Filter by Views 7.2
Same name and namespace in other branches
- 7 term_reference_filter_by_views.module \term_reference_filter_by_views_field_widget_form_alter()
Implements hook_widget_field_form(). Alters the Taxonomy Term Reference Widgets.
File
- ./
term_reference_filter_by_views.module, line 20
Code
function term_reference_filter_by_views_field_widget_form_alter(&$element, &$form_state, $context) {
// Add a css class to widget form elements for all fields of type mytype.
if ($context['field']['type'] == 'taxonomy_term_reference') {
if (!empty($context['instance']['view']['view_name'])) {
if (isset($element['#type']) && ($element['#type'] == 'select' || $element['#type'] == 'radios' || $element['#type'] == 'checkboxes')) {
$allowed = _get_referencable_terms_from_view($context['field'], $context['instance'], NULL, 0, NULL, FALSE);
if (!empty($allowed)) {
$options = array();
if (isset($element['#options']['_none'])) {
$options = array(
'_none' => $element['#options']['_none'],
);
}
else {
$options = array(
'_none' => theme('options_none', array(
'instance' => $context['instance'],
'option' => $element['#properties']['empty_option'],
)),
);
}
$options += array_intersect_key($allowed, $element['#options']);
$element['#options'] = $options;
}
}
elseif (isset($element['#autocomplete_path']) || isset($element['tid']['#autocomplete_path'])) {
if (isset($element['#field_name'])) {
$element['#instance'] = $context['instance'];
$element['#autocomplete_path'] = 'term_reference_filter_by_views/autocomplete/' . $element['#field_name'] . '/' . $context['instance']['entity_type'] . '/' . $context['instance']['bundle'] . '/';
if (!empty($context['instance']['view']['size'])) {
$element['#size'] = $context['instance']['view']['size'];
}
}
elseif (isset($element['tid']['#field_name'])) {
$element['tid']['#instance'] = $context['instance'];
if (!empty($element['tid']['#default_value'])) {
$view_term = _get_referencable_terms_from_view($context['field'], $context['instance'], NULL, 0, array(
$element['tid']['#default_value'],
));
$element['tid']['#default_value'] = current($view_term);
}
if (!empty($context['instance']['view']['size'])) {
$element['tid']['#size'] = $context['instance']['view']['size'];
}
$element['tid']['#element_validate'] = array(
'_term_reference_autocomplete_validate',
);
$element['tid']['#autocomplete_path'] = 'term_reference_filter_by_views/autocomplete/' . $element['tid']['#field_name'] . '/' . $context['instance']['entity_type'] . '/' . $context['instance']['bundle'] . '/';
}
}
elseif (isset($element['#autocomplete_deluxe_path']) && module_exists('autocomplete_deluxe')) {
if (!empty($element['#default_value'])) {
foreach ($context['items'] as $item) {
$tids[$item['tid']] = $item['tid'];
}
$referencable_terms = _get_referencable_terms_from_view($context['field'], $context['instance'], NULL, 0, $tids);
$element['#default_value'] = implode(',', $referencable_terms);
}
if (!empty($context['instance']['view']['size'])) {
$element['#size'] = $context['instance']['view']['size'];
}
$element['#instance'] = $context['instance'];
$element['#element_validate'] = array(
'_term_reference_autocomplete_validate',
);
$element['#autocomplete_deluxe_path'] = url('term_reference_filter_by_views/autocomplete/' . $element['#field_name'] . '/' . $context['instance']['entity_type'] . '/' . $context['instance']['bundle'] . '/', array(
'absolute' => TRUE,
));
}
}
// Be sure not to overwrite existing attributes.
}
}