function required_by_role_form_field_ui_field_edit_form_alter in Required by role 7.2
Same name and namespace in other branches
- 7 required_by_role.module \required_by_role_form_field_ui_field_edit_form_alter()
Implements hook_form_FORM_ID_alter().
File
- ./
required_by_role.module, line 72 - Allows certain user roles to be exempt from required fields
Code
function required_by_role_form_field_ui_field_edit_form_alter(&$form, $form_state) {
$form['instance']['required']['#access'] = FALSE;
$field_name = $form['#field']['field_name'];
// Default value needs always to be NOT required.
$default_value_widget =& $form['instance']['default_value_widget'][$field_name][LANGUAGE_NONE];
if (isset($default_value_widget[0]['#required'])) {
$default_value_widget[0]['#required'] = FALSE;
if (isset($default_value_widget[0]['value']['#required'])) {
$default_value_widget[0]['value']['#required'] = FALSE;
}
}
else {
$default_value_widget['#required'] = FALSE;
}
if (!empty($form_state['values']['instance']['settings']['required_plugin'])) {
$plugin_id = $form_state['values']['instance']['settings']['required_plugin'];
}
else {
$plugin_id = $form['#instance']['settings']['required_plugin'] ? $form['#instance']['settings']['required_plugin'] : 'core';
}
$plugins_options = required_by_role_get_plugins_as_options();
if (empty($plugins_options)) {
$form['message'] = array(
'#markup' => t('Sorry no required plugins available in the system.'),
);
}
$form['instance']['settings']['required_plugin'] = array(
'#type' => 'radios',
'#title' => t('Please choose the required strategy.'),
'#options' => $plugins_options,
'#limit_validation_errors' => array(),
'#default_value' => $plugin_id,
'#weight' => $form['instance']['required']['#weight'] - 1,
'#ajax' => array(
'callback' => 'require_by_role_element_ajax_callback',
'wrapper' => 'required-ajax-wrapper',
'effect' => 'fade',
'speed' => 'fast',
),
'#parents' => array(
'instance',
'settings',
'required_plugin',
),
);
$plugin = _required_by_role_get_instance($plugin_id);
$settings = $form['#instance']['settings'];
$required_plugin = $settings['required_plugin'];
$required_plugin_options = $settings['required_plugin_options'];
// If the plugin have changed make sure the options are empty.
if ($plugin_id != $required_plugin) {
$required_plugin_options = array();
}
$form['instance']['settings']['required_plugin_options'] = $plugin
->form($required_plugin_options);
$form['instance']['settings']['required_plugin_options']['#weight'] = $form['instance']['settings']['required_plugin']['#weight'] + 1;
}