function field_conditional_state_element_process in Field Conditional States 7
@todo.
1 string reference to 'field_conditional_state_element_process'
File
- ./
field_conditional_state.module, line 244 - Main functions for field_conditional_state
Code
function field_conditional_state_element_process($element, &$form_state, $form) {
/*
* $processed_fields is a "memory" of already processed field names.
* Each occurence of a field name will get an index appended to the control_field name
* so if there are multiple instances of one field (field collections) they can be handled separately
*/
static $processed_fields = array();
if (isset($element['#field_name']) && isset($element['#bundle']) && $form['#form_id'] != 'field_ui_field_edit_form') {
$indexed_field_name = $element['#field_name'];
if (!isset($processed_fields[$indexed_field_name]) || count($processed_fields[$indexed_field_name]) == 0) {
$processed_fields[$indexed_field_name] = array(
0,
);
}
$element_field_name_index = max($processed_fields[$indexed_field_name]) + 1;
$processed_fields[$indexed_field_name][] = $element_field_name_index;
$indexed_field_name .= '_' . $element_field_name_index;
$path = drupal_get_path('module', 'field_conditional_state');
$element['#attached']['js'][] = "{$path}/js/conditional_state.js";
$element['#attached']['js'][] = "{$path}/js/required_conditional_state.js";
$control_field = field_conditional_state_is_control_field($element['#field_name'], $element['#bundle']);
// Check if element is control element.
if ($control_field) {
$element['#prefix'] = '<div class="conditional_state_control_field_' . $indexed_field_name . '">';
$element['#suffix'] = '</div>';
}
// Get element conditions.
$element_conditions = field_conditional_state_get_field_conditions($element['#field_name'], $element['#bundle'], $element_field_name_index);
if ($element_conditions) {
$element_states = field_conditional_state_set_field_state($element_conditions);
$conditional_states = field_conditional_state_module_invoke();
$form_element = drupal_array_get_nested_value($form, (array) $element['#field_parents']);
foreach ($element_states as $state => $condition) {
if (isset($form_element[$element['#field_name']])) {
$function = $conditional_states[$state]['state_handler'];
$form_element[$element['#field_name']] = $function($state, $condition, $form_element[$element['#field_name']], $element);
$form_element[$element['#field_name']]['#bundle'] = $element['#bundle'];
}
}
foreach ($element_conditions as $key => $condition) {
if (isset($conditional_states[$state]['validate_handler'])) {
$validate_function = $conditional_states[$state]['validate_handler'];
$form_element[$element['#field_name']]['#element_validate'][] = $validate_function;
$form_element[$element['#field_name']]['#conditional_state'] = $condition;
}
if ($form_state['input']) {
field_conditional_state_set_requirements($element, $form_state, $condition);
}
}
}
}
return $element;
}