You are here

function select2widget_entityreference_widget_settings_form in Select2 Field Widget 7.2

Implements hook_field_widget_settings_form().

File

./select2widget.entityreference.inc, line 13

Code

function select2widget_entityreference_widget_settings_form($field, $instance) {
  $widget = $instance['widget'];
  $settings = array_replace_recursive(field_info_widget_settings($widget['type']), $widget['settings']);
  $form = array();
  if ($widget['type'] == 'select2widgetajax') {
    $view_mode_options = array(
      'select2widget_labels' => t('Entity labels (no render)'),
    );
    $entity_info = entity_get_info();
    $entity_type = isset($field['settings']['target_type']) ? $field['settings']['target_type'] : NULL;
    if (isset($entity_info[$entity_type]['view modes'])) {
      foreach ($entity_info[$entity_type]['view modes'] as $key => $value) {
        $view_mode_options[$key] = $value['label'];
      }
    }
    $form['select2widgetajax'] = array(
      '#type' => 'fieldset',
      '#title' => t('Select2Widget settings'),
      '#tree' => TRUE,
    );
    $form['select2widgetajax']['view_mode'] = array(
      '#type' => 'select',
      '#title' => t('View mode'),
      '#default_value' => isset($settings['select2widgetajax']['view_mode']) ? $settings['select2widgetajax']['view_mode'] : reset($view_mode_options),
      '#options' => $view_mode_options,
      '#description' => t('Install !entity_view_mode_link module to create own view modes.', array(
        '!entity_view_mode_link' => l(t('"Entity view modes"'), "http://drupal.org/project/entity_view_mode", array(
          'attributes' => array(
            'target' => '_blank',
          ),
        )),
      )),
    );
    $form['select2widgetajax']['placeholder'] = array(
      '#type' => 'textfield',
      '#title' => t('Placeholder text'),
      '#description' => t('Type a text for the placeholder'),
      '#default_value' => $settings['select2widgetajax']['placeholder'],
    );
    $form['select2widgetajax']['match_operator'] = array(
      '#type' => 'select',
      '#title' => t('Search matching'),
      '#default_value' => $settings['select2widgetajax']['match_operator'],
      '#options' => array(
        'STARTS_WITH' => t('Starts with'),
        'CONTAINS' => t('Contains'),
      ),
      '#description' => t('Select the method used to collect autocomplete suggestions. Note that <em>Contains</em> can cause performance issues on sites with thousands of nodes.'),
    );
    $form['select2widgetajax']['match_limit'] = array(
      '#type' => 'textfield',
      '#title' => t('Limit number of matches'),
      '#description' => t('Use 0 for no limit. Performance may be affected for a large number of matches.'),
      '#default_value' => $settings['select2widgetajax']['match_limit'],
      '#element_validate' => array(
        'element_validate_integer',
      ),
      '#required' => TRUE,
    );
    $form['select2widgetajax']['width'] = array(
      '#type' => 'textfield',
      '#size' => '5',
      '#title' => t('Width'),
      '#default_value' => isset($settings['select2widgetajax']['width']) ? $settings['select2widgetajax']['width'] : '',
      '#element_validate' => array(
        '_element_width_validate',
      ),
      '#description' => t('You may either leave Width empty or enter a string like "500px" or "50%"'),
    );
    $form['select2widgetajax']['min_char'] = array(
      '#type' => 'select',
      '#title' => t('Number of minimum character'),
      '#description' => t('How many character must be typed before results is displayed'),
      '#options' => range(0, 5),
      '#default_value' => isset($settings['select2widgetajax']['min_char']) ? $settings['select2widgetajax']['min_char'] : 0,
    );
  }
  return $form;
}