You are here

function views_toggle_filter_handler::value_form in Views Toggle Filter 7

Add a type selector to the value form

Overrides views_handler_filter::value_form

File

views/views_toggle_filter_handler.inc, line 108
Definition of views_toggle_filter_handler.

Class

views_toggle_filter_handler
Views Toggle Filter handler.

Code

function value_form(&$form, &$form_state) {
  parent::value_form($form, $form_state);
  if (!empty($form_state['exposed'])) {
    $options = array(
      0 => $this->options['first_name'],
      1 => $this->options['second_name'],
    );
    $form['value'] = array(
      '#type' => 'radios',
      '#title' => '',
      '#options' => $options,
      '#default_value' => !empty($this->value) ? $this->value : 0,
    );
    $first_filters = array();
    $second_filters = array();
    foreach ($this->view->display_handler
      ->get_handlers('filter') as $filter_id => $handler) {
      if ($handler
        ->is_exposed() && $filter_id !== $this->options['id']) {
        $identifier = $handler->options['expose']['identifier'];
        if (empty($identifier)) {
          continue;
        }
        if (!empty($this->options['first_filters'][$filter_id])) {
          $first_filters[$identifier] = TRUE;
        }
        if (!empty($this->options['second_filters'][$filter_id])) {
          $second_filters[$identifier] = TRUE;
        }
        if (!empty($first_filters[$identifier]) && !empty($second_filters[$identifier])) {
          unset($first_filters[$identifier], $second_filters[$identifier]);
        }
      }
    }
    $form_state['views_toggle_filter'][$this->options['expose']['identifier']] = array(
      0 => $first_filters,
      1 => $second_filters,
    );
    if (!isset($form['#after_build'])) {
      $form['#after_build'] = array();
    }
    if (!in_array('views_toggle_filter_exposed_form_after_build', $form['#after_build'])) {
      $form['#after_build'][] = 'views_toggle_filter_exposed_form_after_build';
    }
  }
}