function commerce_coupon_pane_checkout_form in Commerce Coupon 7
Same name and namespace in other branches
- 7.2 includes/commerce_coupon.checkout_pane.inc \commerce_coupon_pane_checkout_form()
Payment pane: form callback.
File
- includes/
commerce_coupon.checkout_pane.inc, line 14 - Coupon checkout panes.
Code
function commerce_coupon_pane_checkout_form($form, &$form_state, $checkout_pane, $order) {
// Allow to replace pane content with ajax calls.
$pane_form = array(
'#prefix' => '<div id="commerce-checkout-coupon-ajax-wrapper">',
'#suffix' => '</div>',
);
// Store the payment methods in the form for validation purposes.
$pane_form['coupon_code'] = array(
'#type' => 'textfield',
'#title' => t('Coupon Code'),
'#description' => t('Enter here your coupon code.'),
);
if (variable_get('commerce_coupon_checkout_enable_add_button', TRUE)) {
$pane_form['coupon_add'] = array(
'#type' => 'button',
'#value' => t('Add coupon'),
'#name' => 'coupon_add',
'#limit_validation_errors' => array(),
'#ajax' => array(
'callback' => 'commerce_coupon_add_coupon_callback',
'wrapper' => 'commerce-checkout-coupon-ajax-wrapper',
),
);
}
// Extract the View and display keys from the cart contents pane setting.
$pane_view = variable_get('commerce_coupon_checkout_pane_view', 'commerce_coupon_review_pane|checkout');
if ($pane_view != 'none') {
list($view_id, $display_id) = explode('|', $pane_view);
if (!empty($view_id) && !empty($display_id) && views_get_view($view_id)) {
$pane_form['redeemed_coupons'] = array(
'#type' => 'markup',
'#markup' => commerce_embed_view($view_id, $display_id, array(
$order->order_id,
)),
);
}
}
if (isset($form_state['triggering_element']) && $form_state['triggering_element']['#name'] == 'coupon_add') {
if (!empty($form_state['values']['commerce_coupon']['coupon_add'])) {
list($view_id, $display_id) = explode('|', $pane_view);
if (!empty($view_id) && !empty($display_id)) {
global $_commerce_coupon_validation_error_message;
$code = $form_state['input']['commerce_coupon']['coupon_code'];
if (!empty($code) && commerce_coupon_code_is_valid($code, $order)) {
$coupon = commerce_coupon_load_by_code($code);
commerce_coupon_redeem_coupon($coupon, $order);
// Clear the field value so that the coupon code does not get resubmitted
// causing an error when user uses main "Continue to next step" submit.
$pane_form['coupon_code']['#value'] = '';
if (isset($order->order_id) && is_numeric($order->order_id)) {
// This is to get the summary of the form rerendered.
$alter_coupon_commands =& drupal_static('alter_coupon_commands');
$coupon_current_order =& drupal_static('coupon_current_order');
$alter_coupon_commands = TRUE;
$coupon_current_order = $order->order_id;
}
// Force shopping cart refresh to recalculate all prices there,
// which is not done automatically in case of percentage coupons.
commerce_cart_order_refresh($order);
$pane_form['redeemed_coupons']['#markup'] = commerce_embed_view($view_id, $display_id, array(
$order->order_id,
));
}
else {
if (isset($_commerce_coupon_validation_error_message)) {
$message = $_commerce_coupon_validation_error_message;
}
else {
$message = t('Your coupon code is not valid.');
}
form_set_error('commerce_coupon][coupon_code', $message);
}
}
}
}
// Display any new status messages added by this pane within the pane's area.
if (drupal_get_messages(NULL, FALSE)) {
$pane_form['status_messages'] = array(
'#type' => 'markup',
'#markup' => theme('status_messages'),
'#weight' => -1,
);
}
return $pane_form;
}