[-] BO : #PSFV-704 - refactoring of AdminFeaturesController and fix of broken bulk delete
git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@14251 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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é';
|
||||
|
||||
Reference in New Issue
Block a user