You are here

function flexiform_multistep_form_alter in Flexiform 7

Implements hook_form_alter() on behalf of inline entity form for multistep.

In a ctools wizard the 'next' button is in a different location in the form array and inline entity form does not cater for this.

See also

inline_entity_form_form_alter

File

flexiform_multistep/flexiform_multistep.module, line 15
Module file for creating CTools multi-step forms with Flexiform.

Code

function flexiform_multistep_form_alter(&$form, &$form_state, $form_id) {
  if (!empty($form_state['flexiform_multistep']) && !empty($form_state['inline_entity_form'])) {
    $submit_element = NULL;
    if (!empty($form['buttons']['next'])) {
      $submit_element =& $form['buttons']['next'];
    }
    if ($submit_element) {
      $submit = array_merge(array(
        'inline_entity_form_trigger_submit',
      ), $form['#submit']);
      if (!empty($submit_element['#submit'])) {
        $submit = array_merge($submit, $submit_element['#submit']);

        // $form['#submit'] and $submit_element['#submit'] might have matching
        // callbacks, resulting in duplicates and double processing.
        $submit_element['#submit'] = array_unique($submit);
      }
      else {
        $submit_element['#submit'] = $submit;
      }
      $submit_element['#ief_submit_all'] = TRUE;
    }
  }
}