You are here

function uc_shipping_zones_admin in Ubercart Global Quote 7

Same name and namespace in other branches
  1. 6 uc_shipping_zones/uc_shipping_zones_admin.inc \uc_shipping_zones_admin()
1 string reference to 'uc_shipping_zones_admin'
uc_shipping_zones_menu in uc_shipping_zones/uc_shipping_zones.module
Implementation of hook_menu().

File

uc_shipping_zones/uc_shipping_zones_admin.inc, line 48
Administration pages for uc_shipping_zones

Code

function uc_shipping_zones_admin($form, $form_state = array(), $id = 0) {
  $form = array();
  $form['zones'] = array(
    '#tree' => TRUE,
  );
  $field = 'Add a new zone';
  $edit = new stdClass();
  $edit->zid = NULL;
  $edit->name = NULL;
  $edit->id = NULL;
  $edit->country = NULL;
  $edit->regions = NULL;
  $edit->countries = array();
  $zquery = db_query("SELECT * FROM {uc_shipping_zones}")
    ->fetchAll();
  foreach ($zquery as $zone) {
    $zid = $zone->zid;
    $form['zones'][$zid]['delete'] = array(
      '#type' => 'checkbox',
      '#default_value' => 0,
    );

    // Edit zone
    if (is_numeric($id) && $id == $zid) {
      $field = "Edit Zone";
      $edit = $zone;
      $edit->countries = explode('|', $zone->countries);
      $edit->regions = explode('|', $zone->regions);
    }
  }
  $countries = array();
  foreach (uc_get_country_data() as $c) {
    $countries[$c['country_name'] . ',' . $c['country_id']] = $c['country_name'];
  }
  if (isset($form_state['storage']['zone']['country'])) {
    $edit->countries = $form_state['storage']['zone']['country'];
    unset($form_state['storage']['zone']['country']);
  }
  $form['zone'] = array(
    '#type' => 'fieldset',
    '#title' => t($field),
    '#description' => t('Shipping zone options'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#prefix' => '<div id="shipping-zone-wrapper">',
    // This is our wrapper div.
    '#suffix' => '</div>',
    '#tree' => TRUE,
  );
  $form['zone']['zid'] = array(
    '#type' => 'hidden',
    '#value' => $edit->zid,
  );
  $form['zone']['name'] = array(
    '#type' => 'textfield',
    '#title' => t('Zone name'),
    '#default_value' => '',
    '#default_value' => $edit->name,
    '#size' => 40,
    '#description' => t('Name for the zone'),
  );
  $form['zone']['country'] = array(
    '#type' => 'select',
    '#title' => t('Countries'),
    '#options' => $countries,
    '#default_value' => $edit->countries,
    '#multiple' => TRUE,
    '#size' => 10,
    '#description' => t('Select all the countries of the zone.') . l('Add countries', 'admin/store/settings/countries/edit'),
    '#ajax' => array(
      'callback' => 'uc_shipping_zones_regions_ajax',
      'wrapper' => 'dropdown-region-replace',
      'method' => 'replace',
    ),
  );

  // Regions
  if ($form_state && array_key_exists('values', $form_state) && $form_state['values']['zone'] && $form_state['values']['zone']['country']) {
    $edit->countries = $form_state['values']['zone']['country'];
  }
  $form['zone']['region'] = array(
    '#type' => 'select',
    '#title' => t('Region'),
    '#options' => uc_shipping_zones_get_regions($edit->countries),
    '#default_value' => $edit->regions,
    '#multiple' => TRUE,
    '#description' => t('Select regions.'),
    '#prefix' => '<div id="dropdown-region-replace">',
    '#suffix' => '</div>',
    '#size' => 8,
  );
  if ($edit->zid) {
    $form['zone']['cancel'] = array(
      '#type' => 'submit',
      '#value' => t('Cancel'),
    );
  }
  $form['buttons']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit Changes'),
  );
  $form['#redirect'] = 'admin/store/settings/quotes/methods/zones';
  return $form;
}