You are here

public static function EntityReference_SelectionHandler_Generic_units_unit::settingsForm in Measured Value Field 7

Implements EntityReferenceHandler::settingsForm().

Overrides EntityReference_SelectionHandler_Generic::settingsForm

File

includes/EntityReference_SelectionHandler_Generic_units_unit.class.inc, line 17
Definition of EntityReference_SelectionHandler_Generic_units_unit class.

Class

EntityReference_SelectionHandler_Generic_units_unit
EntityReference_SelectionHandler_Generic class altered for MVF needs.

Code

public static function settingsForm($field, $instance) {
  $form = parent::settingsForm($field, $instance);

  // We convert checkboxes to radios only if the field is a MVF field. Some
  // people might want use entity reference stand alone for referencing
  // entity type 'units_unit' and might want to have checkboxes there.
  // In order to decide whether it's a MVF field we have to reload field
  // definition array from Field API, because our $field parameter might be
  // just a mocked up field in MVF module.
  $original_field = field_info_field($field['field_name']);
  $is_mvf_field = in_array($original_field['type'], mvf_field_types());
  if (!$is_mvf_field) {
    return $form;
  }

  // Overriding some properties of target bundles element, we need it to be
  // radio buttons.
  $form['target_bundles'] = array(
    '#type' => 'radios',
    '#required' => TRUE,
    '#description' => NULL,
  ) + $form['target_bundles'];
  if (!isset($form['target_bundles']['#element_validate'])) {
    $form['target_bundles']['#element_validate'] = array();
  }

  // Converting #default_value from format expected by 'checkboxes' to the
  // format expected by 'radios'.
  if (isset($form['target_bundles']['#default_value']) && is_array($form['target_bundles']['#default_value'])) {
    $form['target_bundles']['#default_value'] = array_pop($form['target_bundles']['#default_value']);
  }

  // Since we changed it from checkboxes to radios, we need to keep the value
  // of this element according to the format expected as it was still
  // checkboxes. This validation callback will take care of that.
  array_unshift($form['target_bundles']['#element_validate'], 'mvf_entityreference_selection_target_bundles_validate');
  if (empty($form['target_bundles']['#options'])) {
    $form['target_bundles']['disclaimer'] = array(
      '#markup' => t('Measured Value Field module requires at least one measure imported/added in Units module.'),
    );
  }
  return $form;
}