function flexiform_conditional_fields_configure_form_submit in Flexiform 7
Form submit to edit conditional fields.
File
- flexiform_conditional_fields/
flexiform_conditional_fields.admin.inc, line 561 - Admin UI for flexiform_conditional_fields.
Code
function flexiform_conditional_fields_configure_form_submit($form, &$form_state) {
$dependent = $form['#flexiform_element']
->getElementNamespace();
$dependee = $form['#flexiform_dependee']
->getElementNamespace();
$dependency_key = $form['#dependency_key'];
if ($form['#flexiform_dependee'] instanceof FlexiformElementFieldAPIInterface) {
$dependee_field = $form['#flexiform_dependee']
->getField();
$widget_type = $form_state['field'][$dependee_field['field_name']][LANGUAGE_NONE]['instance']['widget']['type'];
}
// TODO: validate values against allowed values.
// TODO: unify 'value' and 'values' fields.
$options = array(
'state' => $form_state['values']['state'],
'condition' => $form_state['values']['condition'],
'grouping' => $form_state['values']['grouping'],
'effect' => isset($form_state['values']['effect']) ? $form_state['values']['effect'] : FALSE,
'effect_options' => isset($form_state['values']['effect'], $form_state['values']['effect_options'][$form_state['values']['effect']]) ? $form_state['values']['effect_options'][$form_state['values']['effect']] : array(),
'element_edit' => $form_state['values']['element_edit'],
'element_edit_per_role' => $form_state['values']['element_edit_per_role'],
'element_edit_roles' => $form_state['values']['element_edit_roles'],
'selector' => $form_state['values']['selector'],
);
// Store values only if the condition requires them.
if ($dependee_field && $form_state['values']['condition'] == 'value') {
$options += array(
'values_set' => $form_state['values']['values_set'],
// Raw user input is needed to build actual value conditions in the
// #states array, so we store it in 'value_form'.
'value_form' => $form_state['input']['value']['field'][$dependee_field['field_name']][LANGUAGE_NONE],
);
if ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET) {
$value = array();
field_default_extract_form_values(NULL, NULL, array(
'field_name' => $dependee_field['field_name'],
), NULL, LANGUAGE_NONE, $value, $form['value']['field'], $form_state);
$options['value'] = $value;
}
elseif ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_REGEX) {
// The regular expression is inserted in an associative array, so it will
// be converted to a Javascript object.
// In states_enhancements.js we will then use the "RegExp" key to
// distinguish the object and evaluate it as a regular expression.
$options['value'] = array(
'RegExp' => $form_state['values']['regex'],
);
}
else {
$values = explode("\n", $form_state['values']['values']);
$values = array_map('trim', $values);
$values = array_filter($values, 'strlen');
$options['values'] = $values;
}
}
$options += conditional_fields_dependency_default_options();
$form['#flexiform']->elements[$dependent]['conditional_fields'][$dependency_key] = $options;
$form['#flexiform']
->save();
drupal_set_message(t('Saved dependency configuration.'));
}