diff --git a/ife.module b/ife.module index 35c446f..2b174d8 100644 --- a/ife.module +++ b/ife.module @@ -189,6 +189,13 @@ function ife_form_alter(&$form, &$form_state, $form_id) { if ($ife_options && $ife_options->status) { $display = ife_form_id_display($ife_options); + // Commerce checkout. + if (strpos($form_id, 'commerce_checkout_form') !== FALSE) { + $form['buttons']['continue']['#validate'][] = 'ife_form_validator'; + } + else { + $form['#validate'][] = 'ife_form_validator'; + } $form['#ife_display'] = $display; $form['#validate'][] = 'ife_form_validator'; } @@ -209,9 +216,16 @@ function ife_form_alter(&$form, &$form_state, $form_id) { function ife_form_validator(&$form, &$form_state) { static $global_error_processed = FALSE; - $form_errors = form_get_errors(); + // Commerce checkout. + if (strpos($form['#form_id'], 'commerce_checkout_form') !== FALSE && isset($form_state['storage']['errors'])) { + $form_errors = $form_state['storage']['errors']; + unset($form_state['storage']['messages']); + } + else { + $form_errors = form_get_errors(); + } if (!empty($form_errors)) { - ife_element_errors_set($form, $form['#ife_display']); + ife_element_errors_set($form, $form['#ife_display'], $form_errors); if ($form['#ife_display'] == IFE_MESSAGE_ALTERNATE && !$global_error_processed) { $message = filter_xss_admin(variable_get('ife_general_message', 'Please correct all highlighted errors and try again.')); @@ -231,18 +245,17 @@ function ife_form_validator(&$form, &$form_state) { * This function will then set the error on the element to be later used * by our theming function theme_ife_form_element(). */ -function ife_element_errors_set(&$element, $display, $carry_down = FALSE) { +function ife_element_errors_set(&$element, $display, $errors, $carry_down = FALSE) { if (!isset($_SESSION['messages'])) { return; } - // Check for errors and settings - $errors = form_get_errors(); + // Check for errors and settings. $element_id = implode('][', $element['#parents']); if (!empty($errors[$element_id])) { $error_message = $errors[$element_id]; - // Get error id + // Get error id. $error_id = array_search($error_message, $_SESSION['messages']['error']); if ($error_id !== FALSE) { @@ -271,20 +284,7 @@ function ife_element_errors_set(&$element, $display, $carry_down = FALSE) { // Recurse through all children. foreach (element_children($element) as $key) { if (isset($element[$key]) && $element[$key]) { - ife_element_errors_set($element[$key], $display, $carry_down); - } - } -} - -/** - * Implements hook_commerce_checkout_pane_info_alter(). - */ -function ife_commerce_checkout_pane_info_alter(&$panes) { - foreach ((array) $panes as $key => $pane) { - if (!isset($panes[$key]['callbacks'])) { - $panes[$key]['callbacks'] = array( - 'checkout_form_validate' => 'ife_form_validator', - ); + ife_element_errors_set($element[$key], $display, $errors, $carry_down); } } }