diff --git a/commerce_addressbook.module b/commerce_addressbook.module index 3687a27..d3a2664 100644 --- a/commerce_addressbook.module +++ b/commerce_addressbook.module @@ -290,7 +290,6 @@ function commerce_addressbook_form_alter(&$form, &$form_state, $form_id) { $options[$id] = $field_values[0]['thoroughfare']; } drupal_alter('commerce_addressbook_labels', $options, $profiles); - // Prepare the default value. $reference_field_name = variable_get('commerce_' . $pane_id . '_field', ''); $order_wrapper = entity_metadata_wrapper('commerce_order', $form_state['order']); @@ -310,14 +309,15 @@ function commerce_addressbook_form_alter(&$form, &$form_state, $form_id) { if (!isset($profiles[$default_value])) { $default_value = 'none'; } - // If we found a default profile. - if ($default_value != 'none') { - // If the customer profile copying is enabled for this checkout pane - // then disable it. - if (variable_get('commerce_' . $checkout_pane['pane_id'] . '_profile_copy', FALSE)) { - $form[$pane_id]['commerce_customer_profile_copy']['#default_value'] = 0; - // If the field exists on the destination profile then enable it. - foreach (field_info_instances('commerce_customer_profile', $field['settings']['profile_type']) as $field_name => $field) { + // Make sure our profile type still exists.. + if (!empty($form[$pane_id]['commerce_customer_profile_copy'])) { + if (($source_profile_type_name = variable_get('commerce_' . $pane_id . '_profile_copy_source', NULL)) + && $source_profile_type = commerce_customer_profile_type_load($source_profile_type_name)) { + // Disable the profile copy checkbox. + $form[$pane_id]['commerce_customer_profile_copy']['#access'] = FALSE; + // Loop over source profile fields and enable previously disabled + // fields. + foreach (field_info_instances('commerce_customer_profile', $source_profile_type['type']) as $field_name => $field) { if (!empty($form[$pane_id][$field_name])){ $langcode = $form[$pane_id][$field_name]['#language']; $form[$pane_id][$field_name][$langcode]['#access'] = TRUE; @@ -325,7 +325,6 @@ function commerce_addressbook_form_alter(&$form, &$form_state, $form_id) { } } } - $form[$pane_id]['#prefix'] = '
'; $form[$pane_id]['#suffix'] = '
'; $form[$pane_id]['addressbook_entries'] = array( @@ -348,19 +347,6 @@ function commerce_addressbook_form_alter(&$form, &$form_state, $form_id) { '#weight' => -100, '#default_value' => $default_value, ); - // React on customer profile copying check. - if (isset($form_state['triggering_element'])) { - $triggering_element = end($form_state['triggering_element']['#array_parents']); - if ($triggering_element == 'commerce_customer_profile_copy') { - $profile_type = reset($form_state['triggering_element']['#array_parents']); - if ($pane_id == $profile_type && !empty($form_state['triggering_element']['#value'])) { - $order_wrapper->{$reference_field_name} = NULL; - unset($form_state['values'][$pane_id]['addressbook']); - unset($form_state['input'][$pane_id]['addressbook']); - $form[$pane_id]['addressbook']['#default_value'] = 'none'; - } - } - } } } }