function uc_shipping_zones_admin in Ubercart Global Quote 7
Same name and namespace in other branches
- 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;
}