function flexiform_submit_ajax in Flexiform 7
Submit AJAX callback for a flexiform.
1 string reference to 'flexiform_submit_ajax'
- flexiform in includes/
flexiform.flexiform.inc - Build a flexiform.
File
- includes/
flexiform.flexiform.inc, line 210 - flexiform.flexiform.inc Helper function for embedding the fields into the flexiform in an arbitrary order
Code
function flexiform_submit_ajax($form, $form_state) {
/** @var \Flexiform $flexiform */
$flexiform = $form['#flexiform'];
if (empty($form_state['executed'])) {
return $form;
}
switch ($flexiform->settings['ajax']['response']) {
case 'refresh':
$wrapper = $form_state['triggering_element']['#ajax']['wrapper'];
// Prevent submitted values bleeding into the new form.
$original_post = $_POST;
$_POST = array();
// Prepare args. We reload entities to ensure we have the right one.
$args = $form_state['build_info']['args'];
$base_entity = $args[1];
$base_entity_id = entity_id($flexiform->base_entity, $base_entity);
$args[1] = entity_load_single($flexiform->base_entity, $base_entity_id);
$new_form = call_user_func_array('drupal_get_form', array_merge(array(
$form_state['build_info']['form_id'],
), $args));
$_POST = $original_post;
unset($original_post);
$commands = array(
ajax_command_replace('#' . $wrapper, drupal_render($new_form)),
ajax_command_prepend('#' . $wrapper, theme('status_messages')),
);
break;
case 'reload':
ctools_include('ajax');
$commands = array(
ctools_ajax_command_reload(),
);
break;
case 'redirect':
ctools_include('ajax');
$redirect = !empty($flexiform->settings['ajax']['redirect']) ? $flexiform->settings['ajax']['redirect'] : '';
$redirect = $form['#flexiform_builder']
->replaceCtoolsSubstitutions($redirect);
$options = array();
if (!empty($form_state['redirect'])) {
if (is_array($form_state['redirect'])) {
$redirect = $form_state['redirect'][0];
$options = $form_state['redirect'][1];
}
else {
$redirect = $form_state['redirect'];
}
}
$commands = array(
ctools_ajax_command_redirect($redirect, 0, $options),
);
break;
}
$context = array(
'flexiform' => $flexiform,
'form' => $form,
'form_state' => $form_state,
);
drupal_alter('flexiform_ajax_submit_commands', $commands, $context);
return array(
'#type' => 'ajax',
'#commands' => $commands,
);
}