You are here

function uc_addresses_form_uc_store_address_fields_form_alter in Ubercart Addresses 7

Implements hook_form_FORM_ID_alter() for form uc_store_address_fields_form().

Adds address fields from Ubercart Addresses to the address field settings form, so the weight of these fields can also be adjusted.

Return value

void

File

./uc_addresses.module, line 1589
Adds user profile address support to Ubercart.

Code

function uc_addresses_form_uc_store_address_fields_form_alter(&$form, &$form_state) {
  $fields = uc_addresses_get_address_fields();
  $weights = uc_addresses_address_field_weights();

  // Propose delta of weight fields.
  $delta = count($fields);
  if ($delta < 10) {

    // Delta should be 10 at least.
    $delta = 10;
  }

  // Set adjust delta of current defined weight fields.
  foreach (element_children($form['uc_address_fields_weight']) as $fieldname) {
    if ($form['uc_address_fields_weight'][$fieldname]['#type'] == 'weight') {

      // Set or adjust delta only if it not set or if it's currently lower than
      // the proposed value.
      if (!isset($form['uc_address_fields_weight'][$fieldname]['#delta']) || $form['uc_address_fields_weight'][$fieldname]['#delta'] < $delta) {
        $form['uc_address_fields_weight'][$fieldname]['#delta'] = $delta;
      }
    }
  }
  foreach ($fields as $fieldname => $field) {
    if (!$field['hidden'] && !isset($form['fields'][$fieldname])) {
      $form['fields'][$fieldname] = array(
        'default' => array(
          '#markup' => $field['title'],
        ),
        'title' => array(
          '#type' => 'value',
          '#value' => $field['title'],
        ),
        '#weight' => isset($weights[$fieldname]) ? $weights[$fieldname] : 0,
      );
      $form['uc_address_fields_weight'][$fieldname] = array(
        '#type' => 'weight',
        '#delta' => $delta,
        '#default_value' => isset($weights[$fieldname]) ? $weights[$fieldname] : 0,
        '#attributes' => array(
          'class' => array(
            'uc-store-address-fields-weight',
          ),
        ),
      );
    }
  }
}