function required_by_role_form_field_ui_field_edit_form_alter in Required by role 7
Same name and namespace in other branches
- 7.2 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 160
Code
function required_by_role_form_field_ui_field_edit_form_alter(&$form, $form_state) {
$field_name = $form['#field']['field_name'];
$required_by_role = $form['#instance']['settings']['required_by_role'];
$label = t('Required by role');
$description = t('Select this option if you want this field to be required for ALL ROLES, otherwise choose specific roles in the checkboxes, below, under %name', array(
'%name' => 'Required by role',
));
$roles = user_roles();
unset($roles[DRUPAL_AUTHENTICATED_RID]);
$header = array(
'name' => t('Role'),
);
foreach ($roles as $rid => $role) {
$options[$rid] = array(
'name' => $role,
);
}
$module_path = drupal_get_path('module', 'required_by_role');
// Js add, needed because STATES API behaves unproperly
// in this context hidding required option.
$attached = array(
'js' => array(
$module_path . '/required_by_role.js',
),
);
$form['instance']['settings']['required_by_role'] = array(
'#prefix' => '<label>' . $label . '</label>',
'#type' => 'tableselect',
'#header' => $header,
'#options' => $options,
'#default_value' => $required_by_role,
'#weight' => $form['instance']['required']['#weight'] + 1,
'#attached' => $attached,
'#empty' => t('No roles available.'),
'#attributes' => array(
'class' => array(
'tableselect-required-by-role',
),
),
);
$form['instance']['required']['#description'] = $description;
// 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;
}
else {
$default_value_widget['#required'] = FALSE;
}
if (isset($default_value_widget[0]['value']['#required'])) {
$default_value_widget[0]['value']['#required'] = FALSE;
}
}