From f74078cac23147f4e807cf6ba07001fd55d6af2f Mon Sep 17 00:00:00 2001
From: jucallme <jucallme@gmail.com>
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'] = '<div id="coupon-call-back">';
+  $pane_form['#suffix'] = '</div>';
 
   // 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'] = '<div id="coupon-call-back">' . commerce_embed_view($view_id, $display_id, array($order->order_id)) . '</div>';
+  }
+  return $form['commerce_coupon'];
+}
 
 /**
  * Implements the callback for the checkout pane review form
-- 
1.7.5.4

