You are here

function _uc_extra_fields_pane_weight_uc_store_address_fields_alter in Extra Fields Checkout Pane 6.2

_uc_extra_fields_pane_weight_uc_store_address_fields_alter() Adds option to order address fields by adding a weight field

_state @access private

Parameters

array $form:

Return value

void

See also

uc_extra_fields_pane_weight_uc_store_address_fields_submit()

theme_uc_extra_fields_pane_weight_uc_store_address_fields()

1 call to _uc_extra_fields_pane_weight_uc_store_address_fields_alter()
uc_extra_fields_pane_form_alter in ./uc_extra_fields_pane.module
Implementation of hook_form_alter().

File

includes/weights.inc, line 26
These functions adds weight to the address fields, so it becomes possible to change the order of the address fields.

Code

function _uc_extra_fields_pane_weight_uc_store_address_fields_alter(&$form, $form_state) {
  if (isset($form['uc_address_fields'])) {

    // We're dealing with an Ubercart version dated July 18, 2012 or later.
    // Some fields are structured differently.
    $uc_version_20120718 = TRUE;
    $form['uc_address_fields_weight']['#tree'] = TRUE;
  }
  else {
    $uc_version_20120718 = FALSE;
  }

  // Get weight settings.
  $weights = variable_get('uc_address_fields_weight', _uc_extra_fields_pane_getDefaultAddressFieldsWeights($form['fields']));

  // Merge weight settings with default weight settings in case extra fields were added.
  $weights = array_merge(_uc_extra_fields_pane_getDefaultAddressFieldsWeights($form['fields']), $weights);
  foreach ($weights as $fieldname => $weight) {
    if ($uc_version_20120718) {
      $form['uc_address_fields_weight'][$fieldname] = array(
        '#type' => 'weight',
        '#delta' => 30,
        '#default_value' => $weight,
        '#attributes' => array(
          'class' => 'uc-address-fields-table-ordering',
        ),
      );

      // Apply weight settings on fields.
      $form['fields'][$fieldname]['#weight'] = $weight;
    }
    elseif (isset($form['fields'][$fieldname])) {

      // Add weight fields.
      $form['fields'][$fieldname]['weight'] = array(
        '#type' => 'weight',
        '#delta' => 30,
        '#default_value' => $weight,
        '#attributes' => array(
          'class' => 'uc-address-fields-table-ordering',
        ),
      );

      // Apply weight settings on fields.
      $form['fields'][$fieldname]['#weight'] = $weight;

      // Add submit function in order to save the weight settings.
      $form['#submit'][] = 'uc_extra_fields_pane_weight_uc_store_address_fields_submit';
    }
  }
}