You are here

function views_filters_reset_form_views_exposed_form_alter in Views Hacks 6

Implement hook_form_FORMID_alter() for views_exposed_form.

File

views_filters_reset/views_filters_reset.module, line 6

Code

function views_filters_reset_form_views_exposed_form_alter(&$form, &$form_state) {

  // Evaluate visibility.
  $enabled_views = variable_get('views_filters_reset', array());
  if (empty($enabled_views[$form_state['view']->name])) {
    return;
  }

  // Count all the active exposed filters. If none, do nothing.
  $active = 0;
  foreach ($form_state['view']->filter as $filter_id => $filter) {
    if (empty($filter->options['exposed'])) {
      continue;
    }
    $filter_element = $form['#info']["filter-{$filter_id}"]['value'];
    if (empty($filter_element)) {
      continue;
    }

    // VFS removes this.
    if (!empty($form[$filter_element]['#access']) || !isset($form[$filter_element]['#access'])) {
      $active++;
    }
  }
  if (!$active) {
    return;
  }
  drupal_add_js(drupal_get_path('module', 'views_filters_reset') . '/views_filters_reset.js');
  drupal_add_js('misc/jquery.form.js');
  $form['reset'] = array(
    '#type' => 'markup',
    '#value' => '<input ' . drupal_attributes(array(
      'id' => 'edit-reset',
      'type' => 'button',
      'value' => t('Reset'),
      'class' => 'form-submit',
    )) . ' />',
  );
  static $forms = array();
  if (!isset($forms[$form['#id']])) {
    drupal_add_js(array(
      'vfr' => array(
        $form['#id'] => $form['#parameters'][1]['view']->use_ajax ? FALSE : url($form['#parameters'][1]['view']
          ->get_url()),
      ),
    ), 'setting');
    $forms[$form['#id']] = TRUE;
  }
  $form['#parameters'][1]['view']->exposed_form_id = $form['#id'];
}