function views_exposed_form_ajax_enable
Checks whether the exposed form will use AJAX.
Passes required form information removed in views_form_views_exposed_form_alter().
Parameters
array $form: The form being processed.
array $form_state: The form state.
Return value
array The form being processed.
1 string reference to 'views_exposed_form_ajax_enable'
- views_form_views_exposed_form_alter in ./
views.module - Implements hook_form_alter() for views_exposed_form().
File
-
./
views.module, line 2221
Code
function views_exposed_form_ajax_enable(array &$form, array &$form_state) {
// In order for AJAX to work the form build info is needed. Here check if
// #ajax has been added to any form elements, and if so, pass this info as
// settings via JavaScript, which get attached to the submitted form on AJAX
// form submissions. #ajax property can be set not only for the first level of
// the form, so look for it in the whole form.
$ajax_info = array();
$ajax_elements = views_exposed_form_ajax_lookup_recursive($form);
// Determine if form is being processed.
$triggering_element_name = '';
if (!empty($form_state['input']['_triggering_element_name'])) {
$triggering_element_name = $form_state['input']['_triggering_element_name'];
}
// When there are multiple elements with #ajax set on exposed form, pass only
// triggering element name to JavaScript, otherwise #ajax will work only for
// the first element.
if (!empty($triggering_element_name) && !empty($ajax_elements)) {
// Check if element has #ajax property set.
if (in_array($triggering_element_name, $ajax_elements)) {
$ajax_elements = array(
$triggering_element_name => $triggering_element_name,
);
}
else {
$ajax_elements = array();
}
}
if (!empty($ajax_elements)) {
$form_info = array(
'form_id' => $form['#form_id'],
'form_build_id' => $form['#build_id'],
);
// Anonymous users don't get a token.
if (!empty($form['#token'])) {
$form_info['form_token'] = drupal_get_token($form['#token']);
}
foreach ($ajax_elements as $element_name) {
$ajax_info[$element_name] = $form_info;
}
drupal_add_js(array(
'ViewsExposedFormInfo' => $ajax_info,
), 'setting');
// Add the javascript behavior that will handle this data.
$form['#attached']['js'][] = array(
'weight' => 100,
'data' => drupal_get_path('module', 'views') . '/js/exposed-form-ajax.js',
);
}
return $form;
}