You are here

function select2widget_process_callback in Select2 Field Widget 7.2

Same name and namespace in other branches
  1. 7 select2widget.module \select2widget_process_callback()

Created by IntelliJ IDEA. User: svip Date: 19.07.13 Time: 17:09 To change this template use File | Settings | File Templates.

1 string reference to 'select2widget_process_callback'
select2widget_field_widget_form in ./select2widget.module
Implements hook_field_widget_form().

File

./select2widget.reference.inc, line 10

Code

function select2widget_process_callback($element) {

  // #multiple select fields need a special #name.
  if ($element['#multiple']) {
    $element['#attributes']['multiple'] = 'multiple';
    $element['#attributes']['name'] = $element['#name'] . '[]';
  }
  else {
    $required = $element['#required'];

    // If the element is required and there is no #default_value, then add an
    // empty option that will fail validation, so that the user is required to
    // make a choice. Also, if there's a value for #empty_value or
    // #empty_option, then add an option that represents emptiness.
    if ($required && !isset($element['#default_value']) || isset($element['#empty_value']) || isset($element['#empty_option'])) {
      $element += array(
        '#empty_value' => '',
        '#empty_option' => $required ? t('- Select -') : t('- None -'),
      );

      // The empty option is prepended to #options and purposively not merged
      // to prevent another option in #options mistakenly using the same value
      // as #empty_value.
      $empty_option = array(
        $element['#empty_value'] => $element['#empty_option'],
      );
      $element['#options'] = $empty_option + $element['#options'];
    }
  }

  // Send Drupal.settings a reference to this form element.
  $data['select2widget2']['elements'][$element['#id']] = array(
    'id' => $element['#id'],
    'multiple' => $element['#multiple'],
  );

  // Attaching library, integration script, and settings array.
  $element['#attached']['library'][] = array(
    'select2widget',
    'select2',
  );
  $element['#attached']['js'][] = array(
    'type' => 'setting',
    'data' => $data,
  );
  return $element;
}