From f74078cac23147f4e807cf6ba07001fd55d6af2f Mon Sep 17 00:00:00 2001 From: jucallme Date: Mon, 2 Apr 2012 16:22:16 -0300 Subject: [PATCH] start of using ajax --- includes/commerce_coupon.checkout_pane.inc | 40 +++++++++++++++++++++++++++- 1 files changed, 39 insertions(+), 1 deletions(-) diff --git a/includes/commerce_coupon.checkout_pane.inc b/includes/commerce_coupon.checkout_pane.inc index 9fe3096..6d42c43 100644 --- a/includes/commerce_coupon.checkout_pane.inc +++ b/includes/commerce_coupon.checkout_pane.inc @@ -12,6 +12,8 @@ */ function commerce_coupon_pane_checkout_form($form, &$form_state, $checkout_pane, $order) { $pane_form = array(); + $pane_form['#prefix'] = '
'; + $pane_form['#suffix'] = '
'; // Store the payment methods in the form for validation purposes. $pane_form['coupon_code'] = array( @@ -20,6 +22,21 @@ function commerce_coupon_pane_checkout_form($form, &$form_state, $checkout_pane, '#description' => t('Enter here your coupon code.'), ); + $pane_form['coupon_add'] = array( + '#type' => 'button', + '#value' => t('Add coupon'), + '#ajax' => array( + 'callback' => 'commerce_coupon_add_coupon_callback', + 'wrapper' => 'coupon-call-back', + ), + "#limit_validation_errors" => array(), + ); + + $pane_form['order'] = array( + '#type' => 'value', + '#value' => $order + ); + // Extract the View and display keys from the cart contents pane setting. list($view_id, $display_id) = explode('|', variable_get('commerce_coupon_review_pane_view', 'commerce_coupon_review_pane|default')); if (!empty($view_id) && !empty($display_id)) { @@ -67,7 +84,28 @@ function commerce_coupon_pane_checkout_form_submit($form, &$form_state, $checkou } } - +/** + * Callback for the ajax button coupon_add. + */ +function commerce_coupon_add_coupon_callback($form, &$form_state) { + list($view_id, $display_id) = explode('|', variable_get('commerce_coupon_review_pane_view', 'commerce_coupon_review_pane|default')); + if (!empty($view_id) && !empty($display_id)) { + //dsm($form_state['values']['commerce_coupon']); + $order = $form_state['values']['commerce_coupon']['order']; + $code = $form_state['values']['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 value, as we dont want errors when the user hits submit on fnal check out, as we would try add the value in the field again. + $form['commerce_coupon']['coupon_code']['#value'] = ''; + } + else { + drupal_set_message(t('Your coupon code is not valid.'), 'error'); + } + $form['commerce_coupon']['redeemed_coupons']['#markup'] = '
' . commerce_embed_view($view_id, $display_id, array($order->order_id)) . '
'; + } + return $form['commerce_coupon']; +} /** * Implements the callback for the checkout pane review form -- 1.7.5.4