function views_ajax_form_wrapper in Views (for Drupal 7) 8.3
Same name and namespace in other branches
- 6.3 includes/ajax.inc \views_ajax_form_wrapper()
- 6.2 includes/ajax.inc \views_ajax_form_wrapper()
- 7.3 includes/ajax.inc \views_ajax_form_wrapper()
Wrapper around drupal_build_form to handle some AJAX stuff automatically. This makes some assumptions about the client.
Related topics
1 call to views_ajax_form_wrapper()
- views_ui_ajax_form in views_ui/
admin.inc - Generic entry point to handle forms.
File
- includes/
ajax.inc, line 229 - Handles the server side AJAX interactions of Views.
Code
function views_ajax_form_wrapper($form_id, &$form_state) {
// This won't override settings already in.
$form_state += array(
'rerender' => FALSE,
'no_redirect' => !empty($form_state['ajax']),
'no_cache' => TRUE,
'build_info' => array(
'args' => array(),
),
);
$form = drupal_build_form($form_id, $form_state);
$output = drupal_render($form);
// These forms have the title built in, so set the title here:
if (empty($form_state['ajax']) && !empty($form_state['title'])) {
drupal_set_title($form_state['title']);
drupal_add_css(drupal_get_path('module', 'views_ui') . '/css/views-admin.css');
}
if (!empty($form_state['ajax']) && (empty($form_state['executed']) || !empty($form_state['rerender']))) {
// If the form didn't execute and we're using ajax, build up a
// Ajax command list to execute.
$commands = array();
$display = '';
if ($messages = theme('status_messages')) {
$display = '<div class="views-messages">' . $messages . '</div>';
}
$display .= $output;
$title = empty($form_state['title']) ? '' : $form_state['title'];
$url = empty($form_state['url']) ? url(current_path(), array(
'absolute' => TRUE,
)) : $form_state['url'];
$commands[] = views_ajax_command_set_form($display, $title, $url);
if (!empty($form_state['#section'])) {
$commands[] = views_ajax_command_hilite('.' . drupal_clean_css_identifier($form_state['#section']));
}
return $commands;
}
// These forms have the title built in, so set the title here:
if (empty($form_state['ajax']) && !empty($form_state['title'])) {
drupal_set_title($form_state['title']);
}
return $output;
}