You are here

function panopoly_magic_ajax_form_callback in Panopoly Magic 7

Replaces system/ajax for pane configuration preview callback to work with ctools multi step form.

1 string reference to 'panopoly_magic_ajax_form_callback'
panopoly_magic_menu in ./panopoly_magic.module
Implements hook_menu()

File

./panopoly_magic.module, line 72

Code

function panopoly_magic_ajax_form_callback() {
  list($form, $form_state, $form_id, $form_build_id, $commands) = ajax_get_form();
  ctools_include('content');
  ctools_include('modal');
  if (isset($form_state['no_redirect']) && !isset($form_state['form_info'])) {
    $form_state += array(
      're_render' => FALSE,
      'no_redirect' => !empty($form_state['ajax']),
    );
    $form = drupal_build_form($form_state['build_info']['form_id'], $form_state);
  }
  else {

    // These ensure the class files/form definations are included.
    $content_type = ctools_get_content_type($form_state['pane']->type);
    $subtype = ctools_content_get_subtype($content_type, $form_state['subtype_name']);
    $form = ctools_content_form($form_state['op'], $form_state['form_info'], $form_state, $form_state['plugin'], $form_state['subtype_name'], $form_state['conf'], $form_state['step']);
  }

  // Hack to set the 'triggering_element' when previewing field formatter
  // settings (where it strangely doesn't get set).
  if (empty($form_state['triggering_element']) && !empty($form_state['input']['_triggering_element_value']) && !empty($form_state['complete form']['buttons'])) {
    foreach ($form_state['complete form']['buttons'] as $button) {
      if (is_array($button) && isset($button['#value']) && $button['#value'] == $form_state['input']['_triggering_element_value']) {
        $form_state['triggering_element'] = $button;
      }
    }
  }
  if (!empty($form_state['triggering_element'])) {
    $callback = $form_state['triggering_element']['#ajax']['callback'];
  }
  if (!empty($callback) && function_exists($callback)) {
    return $callback($form, $form_state);
  }
}