You are here

function views_autocomplete_filters_filter_hander_expose_form in Views Autocomplete Filters 7

Helper function for expose_form method for autocomplete filter handlers. Needed to avoid code duplicates.

See also

views_autocomplete_filters_handler_filter_string()

views_autocomplete_filters_handler_filter_combine()

4 calls to views_autocomplete_filters_filter_hander_expose_form()
views_autocomplete_filters_handler_filter_combine::expose_form in views/handlers/views_autocomplete_filters_handler_filter_combine.inc
Options form subform for exposed filter options.
views_autocomplete_filters_handler_filter_search_api_fulltext::expose_form in views/handlers/views_autocomplete_filters_handler_filter_search_api_fulltext.inc
Options form subform for exposed filter options.
views_autocomplete_filters_handler_filter_search_api_text::expose_form in views/handlers/views_autocomplete_filters_handler_filter_search_api_text.inc
Options form subform for exposed filter options.
views_autocomplete_filters_handler_filter_string::expose_form in views/handlers/views_autocomplete_filters_handler_filter_string.inc
Options form subform for exposed filter options.

File

./views_autocomplete_filters.module, line 76

Code

function views_autocomplete_filters_filter_hander_expose_form(&$form, &$form_state, $filter_handler) {
  $field_options_all = $filter_handler->view->display_handler
    ->get_field_labels();

  // Limit options to fields with the same name.
  foreach ($filter_handler->view->display_handler
    ->get_handlers('field') as $id => $handler) {
    if ($handler->real_field == $filter_handler->real_field) {
      $field_options[$id] = $field_options_all[$id];
    }
  }
  if (empty($field_options)) {
    $field_options[''] = t('Add some fields to view');
  }
  elseif (empty($filter_handler->options['expose']['autocomplete_field']) && !empty($field_options[$filter_handler->options['id']])) {
    $filter_handler->options['expose']['autocomplete_field'] = $filter_handler->options['id'];
  }

  // Build form elements for the right side of the exposed filter form.
  $form['expose'] += array(
    'autocomplete_filter' => array(
      '#type' => 'checkbox',
      '#title' => t('Use Autocomplete'),
      '#default_value' => $filter_handler->options['expose']['autocomplete_filter'],
      '#description' => t('Use Autocomplete for this filter.'),
    ),
    'autocomplete_items' => array(
      '#type' => 'textfield',
      '#title' => t('Maximum number of items in Autocomplete results'),
      '#default_value' => $filter_handler->options['expose']['autocomplete_items'],
      '#description' => t('Enter 0 or empty for no limit.'),
      '#element_validate' => array(
        'element_validate_integer',
      ),
      '#dependency' => array(
        'edit-options-expose-autocomplete-filter' => array(
          TRUE,
        ),
      ),
    ),
    'autocomplete_min_chars' => array(
      '#type' => 'textfield',
      '#title' => t('Minimum number of characters to start filter'),
      '#default_value' => $filter_handler->options['expose']['autocomplete_min_chars'],
      '#element_validate' => array(
        'element_validate_integer',
      ),
      '#dependency' => array(
        'edit-options-expose-autocomplete-filter' => array(
          TRUE,
        ),
      ),
    ),
    'autocomplete_dependent' => array(
      '#type' => 'checkbox',
      '#title' => t('Suggestions depend on other filter fields'),
      '#default_value' => $filter_handler->options['expose']['autocomplete_dependent'],
      '#description' => t('Autocomplete suggestions will be filtered by other filter fields'),
      '#dependency' => array(
        'edit-options-expose-autocomplete-filter' => array(
          TRUE,
        ),
      ),
    ),
    'autocomplete_field' => array(
      '#type' => 'select',
      '#title' => t('Field with autocomplete results'),
      '#default_value' => $filter_handler->options['expose']['autocomplete_field'],
      '#options' => $field_options,
      '#description' => t('Selected field will be used for dropdown results of autocomplete. In most cases it should be the same field you use for filter.'),
      '#dependency' => array(
        'edit-options-expose-autocomplete-filter' => array(
          TRUE,
        ),
      ),
    ),
    'autocomplete_raw_dropdown' => array(
      '#type' => 'checkbox',
      '#title' => t('Unformatted dropdown'),
      '#default_value' => $filter_handler->options['expose']['autocomplete_raw_dropdown'],
      '#description' => t('Use unformatted data from database for dropdown list instead of field formatter result. Value will be printed as plain text.'),
      '#dependency' => array(
        'edit-options-expose-autocomplete-filter' => array(
          TRUE,
        ),
      ),
    ),
    'autocomplete_raw_suggestion' => array(
      '#type' => 'checkbox',
      '#title' => t('Unformatted suggestion'),
      '#default_value' => $filter_handler->options['expose']['autocomplete_raw_suggestion'],
      '#description' => t('The same as above, but for suggestion (text appearing inside textfield when item is selected).'),
      '#dependency' => array(
        'edit-options-expose-autocomplete-filter' => array(
          TRUE,
        ),
      ),
    ),
  );
}