diff --git a/controllers/admin/AdminFeaturesController.php b/controllers/admin/AdminFeaturesController.php index b9491ec85..3a8d1940d 100644 --- a/controllers/admin/AdminFeaturesController.php +++ b/controllers/admin/AdminFeaturesController.php @@ -89,6 +89,26 @@ class AdminFeaturesControllerCore extends AdminController return parent::renderList(); } + /** + * Change object type to feature value (use when processing a feature value) + */ + protected function setTypeValue() + { + $this->table = 'feature_value'; + $this->className = 'FeatureValue'; + $this->identifier = 'id_feature_value'; + } + + /** + * Change object type to feature (use when processing a feature) + */ + protected function setTypeFeature() + { + $this->table = 'feature'; + $this->className = 'Feature'; + $this->identifier = 'id_feature'; + } + /** * method call when ajax request is made with the details row action * @see AdminController::postProcess() @@ -97,9 +117,7 @@ class AdminFeaturesControllerCore extends AdminController { if (($id = Tools::getValue('id'))) { - $this->table = 'feature_value'; - $this->className = 'FeatureValue'; - $this->identifier = 'id_feature_value'; + $this->setTypeValue(); $this->lang = true; // override attributes @@ -211,7 +229,7 @@ class AdminFeaturesControllerCore extends AdminController $this->toolbar_btn['save-and-stay'] = array( 'short' => 'SaveAndStay', 'href' => '#', - 'desc' => $this->l('Save and add'), + 'desc' => $this->l('Save and add another value'), 'force_desc' => true, ); @@ -237,9 +255,7 @@ class AdminFeaturesControllerCore extends AdminController */ public function initFormFeatureValue() { - $this->table = 'feature_value'; - $this->className = 'FeatureValue'; - $this->identifier = 'id_feature_value'; + $this->setTypeValue(); $this->fields_form[0]['form'] = array( 'legend' => array( @@ -285,8 +301,8 @@ class AdminFeaturesControllerCore extends AdminController $helper = new HelperForm(); $helper->currentIndex = self::$currentIndex; $helper->token = $this->token; - $helper->table = 'feature_value'; - $helper->identifier = 'id_feature_value'; + $helper->table = $this->table; + $helper->identifier = $this->identifier; $helper->override_folder = 'feature_value/'; $helper->id = $feature_value->id; $helper->toolbar_scroll = false; @@ -300,18 +316,6 @@ class AdminFeaturesControllerCore extends AdminController $this->content .= $helper->generateForm($this->fields_form); } - /** - * AdminController::init() override - * @see AdminController::init() - */ - public function init() - { - if (isset($_POST['submitAddfeature_value']) || isset($_GET['updatefeature_value']) || isset($_GET['addfeature_value'])) - $this->display = 'editFeatureValue'; - - parent::init(); - } - /** * AdminController::initContent() override * @see AdminController::initContent() @@ -344,8 +348,9 @@ class AdminFeaturesControllerCore extends AdminController } else if (!$this->ajax) { + // If a feature value was saved, we need to reset the values to display the list + $this->setTypeFeature(); $this->content .= $this->renderList(); - $this->content .= $this->renderOptions(); } } else @@ -357,125 +362,36 @@ class AdminFeaturesControllerCore extends AdminController )); } + public function initProcess() + { + // Are we working on feature values? + if (Tools::getValue('id_feature_value') + || Tools::isSubmit('deletefeature_value') + || Tools::isSubmit('submitAddfeature_value') + || Tools::isSubmit('addfeature_value') + || Tools::isSubmit('updatefeature_value') + || Tools::isSubmit('submitBulkdeletefeature_value')) + $this->setTypeValue(); + + parent::initProcess(); + + if ($this->table == 'feature_value' && ($this->display == 'edit' || $this->display == 'add')) + $this->display = 'editFeatureValue'; + } + public function postProcess() { if (!Feature::isFeatureActive()) return; - if (Tools::isSubmit('deletefeature_value') || Tools::isSubmit('submitAddfeature_value')) - { + if ($this->table == 'feature_value' && ($this->action == 'save' || $this->action == 'delete' || $this->action == 'bulkDelete')) Hook::exec('displayFeatureValuePostProcess', array('errors' => &$this->errors)); // send errors as reference to allow displayFeatureValuePostProcess to stop saving process - - if (Tools::isSubmit('deletefeature_value')) - { - if ($this->tabAccess['delete'] === '1') - { - if (Tools::getValue('id_feature_value')) - { - $object = new FeatureValue((int)Tools::getValue('id_feature_value')); - if ($object->delete()) - Tools::redirectAdmin(self::$currentIndex.'&conf=2'.'&token='.$this->token); - else - $this->errors[] = Tools::displayError('An error occurred during deletion.'); - } - } - else - $this->errors[] = Tools::displayError('You do not have permission to delete here.'); - } - else if (Tools::isSubmit('submitAddfeature_value') || Tools::isSubmit('submitAddfeature_valueAndStay')) - { - $this->table = 'feature_value'; - $this->className = 'FeatureValue'; - $this->identifier = 'id_feature_value'; - - $id = (int)Tools::getValue('id_feature_value'); - $feature_value = new FeatureValue($id); - $feature_value->value = array(); - - if (!Tools::getValue('value_'.$this->context->language->id)) - $this->errors[] = Tools::displayError('The value is required for the default language.'); - - $languages = Language::getLanguages(false); - foreach ($languages as $language) - $feature_value->value[$language['id_lang']] = Tools::getValue('value_'.$language['id_lang']); - $feature_value->id_feature = Tools::getValue('id_feature'); - - if (count($this->errors) > 0) - { - $this->display = 'editFeatureValue'; - parent::postProcess(); - } - else if (isset($id) && !empty($id)) - { - // Update - if (!$feature_value->update()) - $this->errors[] = Tools::displayError('An error has occurred: Can\'t save the current feature value'); - else if (Tools::isSubmit('submitAdd'.$this->table.'AndStay') && !count($this->errors)) - Tools::redirectAdmin(self::$currentIndex.'&'.$this->identifier.'=&id_feature='.(int)Tools::getValue('id_feature').'&conf=3&update'.$this->table.'&token='.$this->token); - else - Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token); - } - else - { - // Create - if (!$feature_value->add()) - $this->errors[] = Tools::displayError('An error has occurred: Can\'t save the current feature value'); - else if (Tools::isSubmit('submitAdd'.$this->table.'AndStay') && !count($this->errors)) - Tools::redirectAdmin(self::$currentIndex.'&'.$this->identifier.'=&id_feature='.(int)Tools::getValue('id_feature').'&conf=3&update'.$this->table.'&token='.$this->token); - else - Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token); - } - } - else - parent::postProcess(); - } else - { Hook::exec('displayFeaturePostProcess', array('errors' => &$this->errors)); // send errors as reference to allow displayFeaturePostProcess to stop saving process - if (Tools::getValue('submitDel'.$this->table)) - { - if ($this->tabAccess['delete'] === '1') - { - if (isset($_POST[$this->table.'Box'])) - { - $object = new $this->className(); - if ($object->deleteSelection($_POST[$this->table.'Box'])) - Tools::redirectAdmin(self::$currentIndex.'&conf=2'.'&token='.$this->token); - $this->errors[] = Tools::displayError('An error occurred while deleting selection.'); - } - else - $this->errors[] = Tools::displayError('You must select at least one element to delete.'); - } - else - $this->errors[] = Tools::displayError('You do not have permission to delete here.'); - } - else if (Tools::isSubmit('submitAdd'.$this->table)) - { - if ($this->tabAccess['add'] === '1') - { - $id_feature = (int)Tools::getValue('id_feature'); - // Adding last position to the feature if not exist - if ($id_feature <= 0) - { - $sql = 'SELECT `position`+1 - FROM `'._DB_PREFIX_.'feature` - ORDER BY position DESC'; - // set the position of the new feature in $_POST for postProcess() method - $_POST['position'] = DB::getInstance()->getValue($sql); - } - // clean \n\r characters - foreach ($_POST as $key => $value) - if (preg_match('/^name_/Ui', $key)) - $_POST[$key] = str_replace ('\n', '', str_replace('\r', '', $value)); - parent::postProcess(); - } - } - else - parent::postProcess(); - } + parent::postProcess(); } /** @@ -510,11 +426,24 @@ class AdminFeaturesControllerCore extends AdminController */ public function processSave($token) { - if ((int)Tools::getValue('id_feature_value') <= 0 && $this->display == 'add' - || (int)Tools::getValue('id_feature') <= 0 && $this->display != 'add') - return $this->processAdd($token); - else - return $this->processUpdate($token); + if ($this->table == 'feature') + { + $id_feature = (int)Tools::getValue('id_feature'); + // Adding last position to the feature if not exist + if ($id_feature <= 0) + { + $sql = 'SELECT `position`+1 + FROM `'._DB_PREFIX_.'feature` + ORDER BY position DESC'; + // set the position of the new feature in $_POST for postProcess() method + $_POST['position'] = DB::getInstance()->getValue($sql); + } + // clean \n\r characters + foreach ($_POST as $key => $value) + if (preg_match('/^name_/Ui', $key)) + $_POST[$key] = str_replace ('\n', '', str_replace('\r', '', $value)); + } + parent::processSave($token); } /** diff --git a/translations/fr/admin.php b/translations/fr/admin.php index a06acf860..6cd8183b4 100644 --- a/translations/fr/admin.php +++ b/translations/fr/admin.php @@ -1100,6 +1100,7 @@ $_LANGADM['AdminEmployeesfa18e03e79e4695437ed08b81ded0b8e'] = 'Regénération du $_LANGADM['AdminEmployeesfd2d34527dbecc26db79103ffb99c252'] = 'Autoriser cet employé à se connecter au back-office'; $_LANGADM['AdminFeatures0c8a987e64c2d46886bf92e29c736bdc'] = 'Ajouter une nouvelle valeur de caractéristique'; $_LANGADM['AdminFeatures21021ea0e52be8e9c599f4dff41e5be0'] = 'Caractéristique'; +$_LANGADM['AdminFeatures21d883f3177ec09a845d9963eca239b1'] = 'Enregistrer et ajouter une nouvelle valeur'; $_LANGADM['AdminFeatures38fb7d24e0d60a048f540ecb18e13376'] = 'Enregistrer'; $_LANGADM['AdminFeatures49ee3087348e8d44e1feda1917443987'] = 'Nom'; $_LANGADM['AdminFeatures4aeb406dcf0a1cdd39e7156b1e9e89c7'] = 'Cette fonctionnalité a été désactivée, vous pouvez l\'activer sur cette page :'; @@ -1109,7 +1110,6 @@ $_LANGADM['AdminFeatures5f46be79c24b6cde1ff2176a2ce917e9'] = 'Ajouter une nouvel $_LANGADM['AdminFeatures6252c0f2c2ed83b7b06dfca86d4650bb'] = 'Caractères non valables :'; $_LANGADM['AdminFeatures630f6dc397fe74e52d5189e2c80f282b'] = 'Retour à la liste'; $_LANGADM['AdminFeatures689202409e48743b914713f96d93947c'] = 'Valeur'; -$_LANGADM['AdminFeatures68efc336eb9a43e50d8115b6b712aca9'] = 'Enregistrer et ajouter une valeur'; $_LANGADM['AdminFeatures6c3205f235918451faca3dcd6e63d760'] = 'Valeur d\'une caractéristique'; $_LANGADM['AdminFeatures7aad0283b11e41230d9d1fc7372c3862'] = 'Ajouter une nouvelle valeur'; $_LANGADM['AdminFeatures817b35caca2afa11b6c1efc428315470'] = 'Groupe de boutiques associé';