diff --git a/classes/controller/AdminController.php b/classes/controller/AdminController.php index 52de4ba9a..7c3490b9f 100644 --- a/classes/controller/AdminController.php +++ b/classes/controller/AdminController.php @@ -481,8 +481,6 @@ class AdminControllerCore extends Controller } else { - if (!isset($this->table)) - return false; // set token $token = Tools::getValue('token') ? Tools::getValue('token') : $this->token; diff --git a/classes/helper/HelperOptions.php b/classes/helper/HelperOptions.php index 22f65dfdb..eb645d511 100644 --- a/classes/helper/HelperOptions.php +++ b/classes/helper/HelperOptions.php @@ -64,8 +64,9 @@ class HelperOptionsCore extends Helper foreach ($category_data['fields'] as $key => $field) { - // Set field value - $field['value'] = $this->getOptionValue($key, $field); + // Set field value unless explicitly denied + if (!isset($field['auto_value']) || $field['auto_value']) + $field['value'] = $this->getOptionValue($key, $field); // Check if var is invisible (can't edit it in current shop context), or disable (use default value for multishop) $isDisabled = $isInvisible = false; diff --git a/controllers/admin/AdminGeolocationController.php b/controllers/admin/AdminGeolocationController.php index 1dc66b283..b8bff11e8 100755 --- a/controllers/admin/AdminGeolocationController.php +++ b/controllers/admin/AdminGeolocationController.php @@ -69,7 +69,8 @@ class AdminGeolocationControllerCore extends AdminController 'title' => $this->l('Select countries that can access your store:'), 'type' => 'checkbox_table', 'identifier' => 'iso_code', - 'list' => Country::getCountries($this->context->language->id) + 'list' => Country::getCountries($this->context->language->id), + 'auto_value' => false ), ), ), @@ -85,48 +86,48 @@ class AdminGeolocationControllerCore extends AdminController ); } - public function postProcess() + /** + * @see AdminController::processUpdateOptions() + */ + public function processUpdateOptions($token) { - if (Tools::isSubmit('submitGeolocationWhitelist')) + $redirectAdmin = false; + if ($this->isGeoLiteCityAvailable()) { - $redirectAdmin = false; - if ($this->isGeoLiteCityAvailable()) - { - Configuration::updateValue('PS_GEOLOCATION_ENABLED', intval(Tools::getValue('PS_GEOLOCATION_ENABLED'))); - $redirectAdmin = true; - } - else - $this->errors[] = Tools::displayError('Geolocation database is unavailable.'); + Configuration::updateValue('PS_GEOLOCATION_ENABLED', intval(Tools::getValue('PS_GEOLOCATION_ENABLED'))); + $redirectAdmin = true; + } + else + $this->errors[] = Tools::displayError('Geolocation database is unavailable.'); - if (!is_array(Tools::getValue('countries')) || !count(Tools::getValue('countries'))) - $this->errors[] = Tools::displayError('Country selection is invalid'); - else - { - Configuration::updateValue( - 'PS_GEOLOCATION_BEHAVIOR', - (!(int)Tools::getValue('PS_GEOLOCATION_BEHAVIOR') ? _PS_GEOLOCATION_NO_CATALOG_ : _PS_GEOLOCATION_NO_ORDER_) - ); - Configuration::updateValue('PS_GEOLOCATION_NA_BEHAVIOR', (int)Tools::getValue('PS_GEOLOCATION_NA_BEHAVIOR')); - Configuration::updateValue('PS_ALLOWED_COUNTRIES', implode(';', Tools::getValue('countries'))); - $redirectAdmin = true; - } - - if (!Validate::isCleanHtml(Tools::getValue('PS_GEOLOCATION_WHITELIST'))) - $this->errors[] = Tools::displayError('Invalid whitelist'); - else - { - Configuration::updateValue( - 'PS_GEOLOCATION_WHITELIST', - str_replace("\n", ';', str_replace("\r", '', Tools::getValue('PS_GEOLOCATION_WHITELIST'))) - ); - $redirectAdmin = true; - } - - if ($redirectAdmin) - Tools::redirectAdmin(self::$currentIndex.'&token='.Tools::getValue('token').'&conf=4'); + if (!is_array(Tools::getValue('countries')) || !count(Tools::getValue('countries'))) + $this->errors[] = Tools::displayError('Country selection is invalid'); + else + { + Configuration::updateValue( + 'PS_GEOLOCATION_BEHAVIOR', + (!(int)Tools::getValue('PS_GEOLOCATION_BEHAVIOR') ? _PS_GEOLOCATION_NO_CATALOG_ : _PS_GEOLOCATION_NO_ORDER_) + ); + Configuration::updateValue('PS_GEOLOCATION_NA_BEHAVIOR', (int)Tools::getValue('PS_GEOLOCATION_NA_BEHAVIOR')); + Configuration::updateValue('PS_ALLOWED_COUNTRIES', implode(';', Tools::getValue('countries'))); + $redirectAdmin = true; } - return parent::postProcess(); + if (!Validate::isCleanHtml(Tools::getValue('PS_GEOLOCATION_WHITELIST'))) + $this->errors[] = Tools::displayError('Invalid whitelist'); + else + { + Configuration::updateValue( + 'PS_GEOLOCATION_WHITELIST', + str_replace("\n", ';', str_replace("\r", '', Tools::getValue('PS_GEOLOCATION_WHITELIST'))) + ); + $redirectAdmin = true; + } + + if ($redirectAdmin) + $this->redirect_after = self::$currentIndex.'&token='.Tools::getValue('token').'&conf=4'; + + return parent::processUpdateOptions($token); } public function renderOptions()