diff --git a/shipping/uc_quote/uc_quote.module b/shipping/uc_quote/uc_quote.module index c8c4325..11eb179 100644 --- a/shipping/uc_quote/uc_quote.module +++ b/shipping/uc_quote/uc_quote.module @@ -563,6 +563,11 @@ function uc_checkout_pane_quotes($op, &$order, $form = NULL, &$form_state = NULL '#weight' => 1, ); + // If this was an Ajax request, we reinvoke the 'prepare' op to ensure + // that we catch any changes in panes heavier than this one. + if (isset($form_state['triggering_element'])) { + uc_checkout_pane_quotes('prepare', $order, $form, $form_state); + } $contents['quotes'] += $order->quote_form; $form_state['uc_ajax']['uc_quote']['panes][quotes][quote_button'] = array( diff --git a/uc_cart/uc_cart_checkout_pane.inc b/uc_cart/uc_cart_checkout_pane.inc index f9130b1..ba35390 100644 --- a/uc_cart/uc_cart_checkout_pane.inc +++ b/uc_cart/uc_cart_checkout_pane.inc @@ -256,6 +256,8 @@ function uc_checkout_pane_address($pane, $op, $order, &$form_state, $description $contents['address']['#hidden'] = variable_get('uc_cart_default_same_address', FALSE); } + // If this was an Ajax request, update form input values for the + // copy and select address features. if (isset($form_state['triggering_element'])) { $element = &$form_state['triggering_element']; @@ -265,7 +267,6 @@ function uc_checkout_pane_address($pane, $op, $order, &$form_state, $description if (substr($field, 0, strlen($source)) == $source) { $field = str_replace($source, $pane, $field); $form_state['input']['panes'][$pane][$field] = $value; - $order->$field = $value; } } } @@ -274,7 +275,6 @@ function uc_checkout_pane_address($pane, $op, $order, &$form_state, $description $address = $addresses[$element['#value']]; foreach ($address as $field => $value) { $form_state['input']['panes'][$pane][$pane . '_' . $field] = $value; - $order->{$pane . '_' . $field} = $value; } } @@ -295,6 +295,13 @@ function uc_checkout_pane_address($pane, $op, $order, &$form_state, $description $order->$field = $value; } } + if (!empty($panes[$pane]['select_address'])) { + $addresses = uc_select_addresses($user->uid, $pane); + $address = $addresses[$panes[$pane]['select_address']]; + foreach ($address as $field => $value) { + $order->{$pane . '_' . $field} = $value; + } + } return TRUE; case 'review': diff --git a/uc_store/uc_store.module b/uc_store/uc_store.module index c18366f..4feddd7 100644 --- a/uc_store/uc_store.module +++ b/uc_store/uc_store.module @@ -1428,7 +1428,7 @@ function uc_select_addresses($uid, $type = 'billing') { return array(); } - $options = array(-1 => t('Select one...')); + $options = array('' => t('Select one...')); foreach ($addresses as $key => $address) { $option = $address['street1']; // Check if the address is a duplicate (i.e. same address, but sent to