You are here

function required_by_role_form_field_ui_field_edit_form_alter in Required by role 7

Same name and namespace in other branches
  1. 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;
  }
}