function views_exposed_form

Same name in other branches
  1. 7.x-3.x views.module \views_exposed_form()

Form builder for the exposed widgets form.

Be sure that $view and $display are references.

1 string reference to 'views_exposed_form'
views_plugin_exposed_form::render_exposed_form in plugins/views_plugin_exposed_form.inc
Render the exposed filter form.

File

./views.module, line 1393

Code

function views_exposed_form(&$form_state) {
    // Don't show the form when batch operations are in progress.
    if ($batch = batch_get() && isset($batch['current_set'])) {
        return array(
            // Set the theme callback to be nothing to avoid errors in template_preprocess_views_exposed_form().
'#theme' => '',
        );
    }
    // Make sure that we validate because this form might be submitted
    // multiple times per page.
    $form_state['must_validate'] = TRUE;
    $view =& $form_state['view'];
    $display =& $form_state['display'];
    $form_state['input'] = $view->get_exposed_input();
    // Let form plugins know this is for exposed widgets.
    $form_state['exposed'] = TRUE;
    // Check if the form was already created
    if ($cache = views_exposed_form_cache($view->name, $view->current_display)) {
        return $cache;
    }
    $form['#info'] = array();
    if (!variable_get('clean_url', FALSE)) {
        $form['q'] = array(
            '#type' => 'hidden',
            '#value' => $view->get_url(),
        );
    }
    // Go through each handler and let it generate its exposed widget.
    foreach ($view->display_handler->handlers as $type => $value) {
        foreach ($view->{$type} as $id => $handler) {
            if ($handler->can_expose() && $handler->is_exposed()) {
                $handler->exposed_form($form, $form_state);
                if ($info = $handler->exposed_info()) {
                    $form['#info']["{$type}-{$id}"] = $info;
                }
            }
        }
    }
    $form['submit'] = array(
        '#name' => '',
        // prevent from showing up in $_GET.
'#type' => 'submit',
        '#value' => t('Apply'),
        '#id' => form_clean_id('edit-submit-' . $view->name),
    );
    $form['#action'] = url($view->get_url());
    $form['#theme'] = views_theme_functions('views_exposed_form', $view, $display);
    $form['#id'] = views_css_safe('views_exposed_form-' . check_plain($view->name) . '-' . check_plain($display->id));
    //  $form['#attributes']['class'] = array('views-exposed-form');
    // If using AJAX, we need the form plugin.
    if ($view->use_ajax) {
        drupal_add_js('misc/jquery.form.js');
    }
    views_add_js('dependent');
    $exposed_form_plugin = $form_state['exposed_form_plugin'];
    $exposed_form_plugin->exposed_form_alter($form, $form_state);
    // Save the form
    views_exposed_form_cache($view->name, $view->current_display, $form);
    return $form;
}