You are here

function _msnf_form_validate in Multistep Nodeform 6

Custom validation handler for node form.

Used to decide whether the values should be saved to databases or saved for another step.

1 string reference to '_msnf_form_validate'
msnf_prepare_form_step in ./msnf.module
Function to prepare the current form step and to alter the node form.

File

./msnf.module, line 264
Main functions for module "Multistep Nodeform".

Code

function _msnf_form_validate($form, &$form_state) {

  // Restore values for submit-functions at every step.
  $type = $form_state['values']['type'];
  if ($form_state['clicked_button']['#name'] == 'done' || $form_state['clicked_button']['#name'] == 'op' && $form_state['clicked_button']['#value'] == t('Delete')) {
    $form_state['rebuild'] = NULL;
    $form_state['redirect'] = NULL;
  }
  else {

    // Store values to restore them at last step.
    if ($form_state['clicked_button']['#name'] == 'next' || $form_state['clicked_button']['#name'] == 'skip' || $form_state['clicked_button']['#name'] == 'previous') {
      if (empty($form_state['storage']['values'])) {
        $form_state['storage']['values'] = $form_state['values'];
      }
      else {
        $form_state['storage']['values'] = array_merge($form_state['storage']['values'], $form_state['values']);
      }
      unset($form_state['storage']['values']['form_build_id']);
    }

    // Run buttons validators.
    if ($form_state['clicked_button']['#name'] == 'next' || $form_state['clicked_button']['#name'] == 'skip' || $form_state['clicked_button']['#name'] == 'previous') {

      // This is not the last step so rebuild the form.
      $form_state['rebuild'] = TRUE;
      $form_state['redirect'] = FALSE;
      if ($form_state['clicked_button']['#name'] == 'next') {
        $form_state['storage']['step']++;
      }
      elseif ($form_state['clicked_button']['#name'] == 'skip') {
        $form_state['storage']['step'] += 2;
      }
      elseif ($form_state['clicked_button']['#name'] == 'previous') {
        $form_state['storage']['step']--;
      }
    }
  }
}