0byt3m1n1 - D7net
0byt3m1n1 - D7net
Path:
/
home
/
s13cf5ef
/
www
/
tuscamisetaspersonalizadas
/
tienda
/
controllers
/
admin
/
[
Home
]
Name File: AdminCountriesController.php
< back
<?php /* * 2007-2014 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class AdminCountriesControllerCore extends AdminController { public function __construct() { $this->bootstrap = true; $this->table = 'country'; $this->className = 'Country'; $this->lang = true; $this->deleted = false; $this->explicitSelect = true; $this->addRowAction('edit'); $this->context = Context::getContext(); $this->bulk_actions = array( 'delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')), 'affectzone' => array('text' => $this->l('Assign to a new zone')) ); $this->fieldImageSettings = array( 'name' => 'logo', 'dir' => 'st' ); $this->fields_options = array( 'general' => array( 'title' => $this->l('Country options'), 'fields' => array( 'PS_RESTRICT_DELIVERED_COUNTRIES' => array( 'title' => $this->l('Restrict country selections in Front Office to those covered by active carriers'), 'cast' => 'intval', 'type' => 'bool', 'default' => '0' ) ), 'submit' => array('title' => $this->l('Save')) ) ); $zones_array = array(); $this->zones = Zone::getZones(); foreach ($this->zones as $zone) $zones_array[$zone['id_zone']] = $zone['name']; $this->fields_list = array( 'id_country' => array( 'title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs' ), 'name' => array( 'title' => $this->l('Country'), 'filter_key' => 'b!name' ), 'iso_code' => array( 'title' => $this->l('ISO code'), 'align' => 'center', 'class' => 'fixed-width-xs' ), 'call_prefix' => array( 'title' => $this->l('Call prefix'), 'align' => 'center', 'callback' => 'displayCallPrefix', 'class' => 'fixed-width-sm' ), 'zone' => array( 'title' => $this->l('Zone'), 'type' => 'select', 'list' => $zones_array, 'filter_key' => 'z!id_zone', 'filter_type' => 'int', 'order_key' => 'zone' ), 'active' => array( 'title' => $this->l('Enabled'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false, 'filter_key' => 'a!active', 'class' => 'fixed-width-sm' ) ); parent::__construct(); } public function initPageHeaderToolbar() { if (empty($this->display)) $this->page_header_toolbar_btn['new_country'] = array( 'href' => self::$currentIndex.'&addcountry&token='.$this->token, 'desc' => $this->l('Add new country', null, null, false), 'icon' => 'process-icon-new' ); parent::initPageHeaderToolbar(); } /** * AdminController::setMedia() override * @see AdminController::setMedia() */ public function setMedia() { parent::setMedia(); $this->addJqueryPlugin('fieldselection'); } public function renderList() { $this->_select = 'z.`name` AS zone'; $this->_join = 'LEFT JOIN `'._DB_PREFIX_.'zone` z ON (z.`id_zone` = a.`id_zone`)'; $this->tpl_list_vars['zones'] = Zone::getZones(); return parent::renderList(); } public function renderForm() { if (!($obj = $this->loadObject(true))) return; $address_layout = AddressFormat::getAddressCountryFormat($obj->id); if ($value = Tools::getValue('address_layout')) $address_layout = $value; $default_layout = ''; $default_layout_tab = array( array('firstname', 'lastname'), array('company'), array('vat_number'), array('address1'), array('address2'), array('postcode', 'city'), array('Country:name'), array('phone'), array('phone_mobile')); foreach ($default_layout_tab as $line) $default_layout .= implode(' ', $line)."\r\n"; $this->fields_form = array( 'legend' => array( 'title' => $this->l('Countries'), 'icon' => 'icon-globe' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Country'), 'name' => 'name', 'lang' => true, 'required' => true, 'hint' => $this->l('Country name').' - '.$this->l('Invalid characters:'). ' <>;=#{} ' ), array( 'type' => 'text', 'label' => $this->l('ISO code'), 'name' => 'iso_code', 'maxlength' => 3, 'class' => 'uppercase', 'required' => true, 'hint' => $this->l('Two -- or three -- letter ISO code (e.g. U.S. for United States).') /* TO DO - ajouter les liens dans le hint ? */ /*'desc' => $this->l('Two -- or three -- letter ISO code (e.g. U.S. for United States)').'. <a href="http://www.iso.org/iso/country_codes/iso_3166_code_lists/country_names_and_code_elements.htm" target="_blank">'. $this->l('Official list here').' </a>.'*/ ), array( 'type' => 'text', 'label' => $this->l('Call prefix'), 'name' => 'call_prefix', 'maxlength' => 3, 'class' => 'uppercase', 'required' => true, 'hint' => $this->l('International call prefix, (e.g. 1 for United States).') ), array( 'type' => 'select', 'label' => $this->l('Default currency'), 'name' => 'id_currency', 'options' => array( 'query' => Currency::getCurrencies(), 'id' => 'id_currency', 'name' => 'name', 'default' => array( 'label' => $this->l('Default store currency'), 'value' => 0 ) ) ), array( 'type' => 'select', 'label' => $this->l('Zone'), 'name' => 'id_zone', 'options' => array( 'query' => Zone::getZones(), 'id' => 'id_zone', 'name' => 'name' ), 'hint' => $this->l('Geographical region.') ), array( 'type' => 'switch', 'label' => $this->l('Does it need Zip/postal code?'), 'name' => 'need_zip_code', 'required' => false, 'is_bool' => true, 'values' => array( array( 'id' => 'need_zip_code_on', 'value' => 1, 'label' => $this->l('Yes') ), array( 'id' => 'need_zip_code_off', 'value' => 0, 'label' => $this->l('No') ) ) ), array( 'type' => 'text', 'label' => $this->l('Zip/postal code format'), 'name' => 'zip_code_format', 'required' => true, 'desc' => $this->l('Indicate the format of the postal code: use L for a letter, N for a number, and C for the country\'s ISO 3166-1 alpha-2 code. For example, NNNNN for the United States, France, Poland and many other; LNNNNLLL for Argentina, etc. If you do not want PrestaShop to verify the postal code for this country, leave it blank.') ), array( 'type' => 'address_layout', 'label' => $this->l('Address format'), 'name' => 'address_layout', 'address_layout' => $address_layout, 'encoding_address_layout' => urlencode($address_layout), 'encoding_default_layout' => urlencode($default_layout), 'display_valid_fields' => $this->displayValidFields() ), array( 'type' => 'switch', 'label' => $this->l('Address Standardization'), 'name' => 'standardization', 'required' => false, 'is_bool' => true, 'values' => array( array( 'id' => 'standardization_on', 'value' => 1, 'label' => $this->l('Enabled') ), array( 'id' => 'standardization_off', 'value' => 0, 'label' => $this->l('Disabled') ) ), ), array( 'type' => 'switch', 'label' => $this->l('Active'), 'name' => 'active', 'required' => false, 'is_bool' => true, 'values' => array( array( 'id' => 'active_on', 'value' => 1, 'label' => $this->l('Enabled') ), array( 'id' => 'active_off', 'value' => 0, 'label' => $this->l('Disabled') ) ), 'hint' => $this->l('Display this country to your customers (the selected country will always be displayed in the Back Office).') ), array( 'type' => 'switch', 'label' => $this->l('Contains states'), 'name' => 'contains_states', 'required' => false, 'values' => array( array( 'id' => 'contains_states_on', 'value' => 1, 'label' => '<img src="../img/admin/enabled.gif" alt="'.$this->l('Yes').'" title="'.$this->l('Yes').'" />'.$this->l('Yes') ), array( 'id' => 'contains_states_off', 'value' => 0, 'label' => '<img src="../img/admin/disabled.gif" alt="'.$this->l('No').'" title="'.$this->l('No').'" />'.$this->l('No') ) ) ), array( 'type' => 'switch', 'label' => $this->l('Do you need a tax identification number?'), 'name' => 'need_identification_number', 'required' => false, 'values' => array( array( 'id' => 'need_identification_number_on', 'value' => 1, 'label' => '<img src="../img/admin/enabled.gif" alt="'.$this->l('Yes').'" title="'.$this->l('Yes').'" />'.$this->l('Yes') ), array( 'id' => 'need_identification_number_off', 'value' => 0, 'label' => '<img src="../img/admin/disabled.gif" alt="'.$this->l('No').'" title="'.$this->l('No').'" />'.$this->l('No') ) ) ), array( 'type' => 'switch', 'label' => $this->l('Display tax label (e.g. "Tax incl.")'), 'name' => 'display_tax_label', 'required' => false, 'values' => array( array( 'id' => 'display_tax_label_on', 'value' => 1, 'label' => '<img src="../img/admin/enabled.gif" alt="'.$this->l('Yes').'" title="'.$this->l('Yes').'" />'.$this->l('Yes') ), array( 'id' => 'display_tax_label_off', 'value' => 0, 'label' => '<img src="../img/admin/disabled.gif" alt="'.$this->l('No').'" title="'.$this->l('No').'" />'.$this->l('No') ) ) ) ) ); if (Shop::isFeatureActive()) { $this->fields_form['input'][] = array( 'type' => 'shop', 'label' => $this->l('Shop association'), 'name' => 'checkBoxShopAsso', ); } $this->fields_form['submit'] = array( 'title' => $this->l('Save') ); if ($this->object->iso_code == 'US') $this->object->standardization = Configuration::get('PS_TAASC'); return parent::renderForm(); } public function processUpdate() { $country = $this->loadObject(); if (Validate::isLoadedObject($country) && Tools::getValue('id_zone')) { $old_id_zone = $country->id_zone; $results = Db::getInstance()->executeS('SELECT `id_state` FROM `'._DB_PREFIX_.'state` WHERE `id_country` = '.(int)$country->id.' AND `id_zone` = '.(int)$old_id_zone); if ($results && count($results)) { $ids = array(); foreach ($results as $res) $ids[] = (int)$res['id_state']; if (count($ids)) $res = Db::getInstance()->execute( 'UPDATE `'._DB_PREFIX_.'state` SET `id_zone` = '.(int)Tools::getValue('id_zone').' WHERE `id_state` IN ('.implode(',', $ids).')'); } } return parent::processUpdate(); } public function postProcess() { if (!Tools::getValue('id_'.$this->table)) { if (Validate::isLanguageIsoCode(Tools::getValue('iso_code')) && Country::getByIso(Tools::getValue('iso_code'))) $this->errors[] = Tools::displayError('This ISO code already exists.You cannot create two countries with the same ISO code.'); } else if (Validate::isLanguageIsoCode(Tools::getValue('iso_code'))) { $id_country = Country::getByIso(Tools::getValue('iso_code')); if (!is_null($id_country) && $id_country != Tools::getValue('id_'.$this->table)) $this->errors[] = Tools::displayError('This ISO code already exists.You cannot create two countries with the same ISO code.'); } if (Tools::isSubmit('standardization')) Configuration::updateValue('PS_TAASC', (bool)Tools::getValue('standardization', false)); return parent::postProcess(); } public function processSave() { if (!count($this->errors)) { $id_country = Tools::getValue('id_country'); $tmp_addr_format = new AddressFormat($id_country); $save_status = false; $is_new = is_null($tmp_addr_format->id_country); if ($is_new) { $tmp_addr_format = new AddressFormat(); $tmp_addr_format->id_country = $id_country; } $tmp_addr_format->format = Tools::getValue('address_layout'); if (strlen($tmp_addr_format->format) > 0) { if ($tmp_addr_format->checkFormatFields()) $address_format_result = $tmp_addr_format->save(); else { $error_list = $tmp_addr_format->getErrorList(); foreach ($error_list as $num_error => $error) $this->errors[] = $error; } if (!isset($address_format_result) || !$address_format_result) $this->errors[] = Tools::displayError('Invalid address layout '.Db::getInstance()->getMsgError()); } unset($tmp_addr_format); } return parent::processSave(); } public function processStatus() { parent::processStatus(); if (Validate::isLoadedObject($object = $this->loadObject()) && $object->active == 1) return Country::addModuleRestrictions(array(), array(array('id_country' => $object->id)), array()); return false; } public function processBulkStatusSelection($way) { if (is_array($this->boxes) && !empty($this->boxes)) { $countries_ids = array(); foreach ($this->boxes as $id) $countries_ids[] = array('id_country' => $id); if (count($countries_ids)) Country::addModuleRestrictions(array(), $countries_ids, array()); } parent::processBulkStatusSelection($way); } protected function displayValidFields() { /* The following translations are needed later - don't remove the comments! $this->l('Customer'); $this->l('Warehouse'); $this->l('Country'); $this->l('State'); $this->l('Address'); */ $html_tabnav = '<ul class="nav nav-tabs" id="custom-address-fields">'; $html_tabcontent = '<div class="tab-content" >'; $object_list = AddressFormat::getLiableClass('Address'); $object_list['Address'] = null; // Get the available properties for each class $i = 0; $class_tab_active = 'active'; foreach ($object_list as $class_name => &$object) { if ($i != 0){ $class_tab_active = ''; } $fields = array(); $html_tabnav .= '<li class="'.$class_tab_active.'""> <a href="#availableListFieldsFor_'.$class_name.'"><i class="icon-caret-down"></i> '.Translate::getAdminTranslation($class_name, 'AdminCountries').'</a></li>'; foreach (AddressFormat::getValidateFields($class_name) as $name) $fields[] = '<a href="javascript:void(0);" class="addPattern btn btn-default btn-xs" id="'.($class_name == 'Address' ? $name : $class_name.':'.$name).'"> <i class="icon-plus-sign"></i> '.ObjectModel::displayFieldName($name, $class_name).'</a>'; $html_tabcontent .= ' <div class="tab-pane availableFieldsList panel '.$class_tab_active.'" id="availableListFieldsFor_'.$class_name.'"> '.implode(' ', $fields).'</div>'; unset($object); $i ++; } $html_tabnav .= '</ul>'; $html_tabcontent .= '</div>'; return $html = $html_tabnav.$html_tabcontent; } public static function displayCallPrefix($prefix) { return ((int)$prefix ? '+'.$prefix : '-'); } }
©
2018. | Recode by D7net