From 46ba33ef929833aaa7c0c01e74b70ff0da7f7de0 Mon Sep 17 00:00:00 2001 From: vChabot Date: Wed, 21 Sep 2011 14:38:12 +0000 Subject: [PATCH] // import csv ok for group attribute position git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@8693 b9a71923-0436-4b27-9f14-aed3839534dd --- admin-dev/tabs/AdminImport.php | 35 ++++++++++++++++++------- cache/class_index.php | 5 ++-- install-dev/sql/db_settings_extends.sql | 2 +- install-dev/sql/upgrade/1.5.0.1.sql | 4 +-- translations/fr/admin.php | 4 ++- 5 files changed, 33 insertions(+), 17 deletions(-) diff --git a/admin-dev/tabs/AdminImport.php b/admin-dev/tabs/AdminImport.php index 13b663c55..51e11b0a7 100644 --- a/admin-dev/tabs/AdminImport.php +++ b/admin-dev/tabs/AdminImport.php @@ -80,11 +80,13 @@ class AdminImport extends AdminTab switch ((int)(Tools::getValue('entity'))) { case $this->entities[$this->l('Combinations')]: - self::$required_fields = array('id_product', 'options'); + self::$required_fields = array('id_product', 'group', 'attribute'); $this->available_fields = array( 'no' => array('label' => $this->l('Ignore this column')), 'id_product' => array('label' => $this->l('Product ID').'*'), - 'options' => array('label' => $this->l('Options (Group:Value:Position)').'*', + 'group' => array('label' => $this->l('Group (Name:Position)').'*', + 'help' => $this->l('Position of the group attribute.')), + 'attribute' => array('label' => $this->l('Attribute (Value:Position)').'*', 'help' => $this->l('Position of the attribute in the attribute group.')), 'reference' => array('label' => $this->l('Reference')), 'supplier_reference' => array('label' => $this->l('Supplier reference')), @@ -971,13 +973,15 @@ class AdminImport extends AdminTab $id_product_attribute = $product->addProductAttribute((float)($info['price']), (float)($info['weight']), 0, (float)($info['ecotax']), (int)($info['quantity']), $id_image, strval($info['reference']), strval($info['supplier_reference']), strval($info['ean13']), (int)($info['default_on']), strval($info['upc'])); $id_attribute_group = 0; - foreach (explode($fsep, $info['options']) as $option) + $group = ''; + foreach (explode($fsep, $info['group']) as $group) { - $options = explode(':', $option); - list($group, $attribute) = array_map('trim', $options); + $tab_group = explode(':', $group); + $group = $tab_group[0]; + $id_attribute_group = $groups[$group]; // if position is filled - if (isset($options[2])) - $position = $options[2]; + if (isset($tab_group[1])) + $position = $tab_group[1]; else $position = false; if (!isset($groups[$group])) @@ -986,6 +990,7 @@ class AdminImport extends AdminTab $obj->is_color_group = false; $obj->name[$defaultLanguage] = $group; $obj->public_name[$defaultLanguage] = $group; + $obj->position = (!$position) ? AttributeGroup::getHigherPosition() + 1 : $position; if (($fieldError = $obj->validateFields(UNFRIENDLY_ERROR, true)) === true AND ($langFieldError = $obj->validateFieldsLang(UNFRIENDLY_ERROR, true)) === true) { $obj->add(); @@ -994,7 +999,16 @@ class AdminImport extends AdminTab else $this->_errors[] = ($fieldError !== true ? $fieldError : '').($langFieldError !== true ? $langFieldError : ''); } - $id_attribute_group = $groups[$group]; + } + foreach (explode($fsep, $info['attribute']) as $attribute) + { + $tab_attribute = explode(':', $attribute); + $attribute = $tab_attribute[0]; + // if position is filled + if (isset($tab_attribute[1])) + $position = $tab_attribute[1]; + else + $position = false; if (!isset($attributes[$group.'_'.$attribute])) { $obj = new Attribute(); @@ -1010,14 +1024,15 @@ class AdminImport extends AdminTab $this->_errors[] = ($fieldError !== true ? $fieldError : '').($langFieldError !== true ? $langFieldError : ''); } - Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'product_attribute_combination (id_attribute, id_product_attribute) VALUES ('.(int)($attributes[$group.'_'.$attribute]).','.(int)$id_product_attribute.')'); } + Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'product_attribute_combination (id_attribute, id_product_attribute) VALUES ('.(int)($attributes[$group.'_'.$attribute]).','.(int)$id_product_attribute.')'); } $this->closeCsvFile($handle); - // after insertion, we clean attribute position + // after insertion, we clean attribute position and group attribute position $obj = new Attribute(); $obj->cleanPositions((int)$id_attribute_group, false); + AttributeGroup::cleanPositions(); } public function customerImport() diff --git a/cache/class_index.php b/cache/class_index.php index 63fea0d7c..cc92e3962 100644 --- a/cache/class_index.php +++ b/cache/class_index.php @@ -5,6 +5,7 @@ 'Address' => 'override/classes/Address.php', 'AddressFormatCore' => 'classes/AddressFormat.php', 'AddressFormat' => 'override/classes/AddressFormat.php', + 'AdminController' => 'classes/AdminController.php', 'AdminTabCore' => 'classes/AdminTab.php', 'AdminTab' => 'override/classes/AdminTab.php', 'AliasCore' => 'classes/Alias.php', @@ -251,9 +252,9 @@ 'DbMySQLiCore' => 'classes/db/DbMySQLi.php', 'DbMySQLi' => 'override/classes/db/DbMySQLi.php', 'DbPDOCore' => 'classes/db/DbPDO.php', - 'DbPDO' => 'override/classes/db/DbPDO.php', + 'DbPDO' => '', 'DbQueryCore' => 'classes/db/DbQuery.php', - 'DbQuery' => 'override/classes/db/DbQuery.php', + 'DbQuery' => '', 'MySQLCore' => 'classes/db/MySQL.php', 'MySQL' => 'override/classes/db/MySQL.php', 'GroupShopCore' => 'classes/shop/GroupShop.php', diff --git a/install-dev/sql/db_settings_extends.sql b/install-dev/sql/db_settings_extends.sql index 3312d2294..b221a35ed 100644 --- a/install-dev/sql/db_settings_extends.sql +++ b/install-dev/sql/db_settings_extends.sql @@ -285,7 +285,7 @@ INSERT INTO `PREFIX_category_lang` (`id_category`, `id_lang`, `name`, `descripti INSERT INTO `PREFIX_category_product` (`id_category`, `id_product`, `position`) VALUES (1, 1, 0),(1, 2, 1),(1, 6, 2),(1, 7, 3),(2, 1, 0),(2, 2, 1),(2, 7, 2),(3, 8, 0),(3, 9, 1),(4, 5, 0),(4, 6, 1); -INSERT INTO `PREFIX_attribute_group` (`id_attribute_group`, `is_color_group`) VALUES (1, 0, 'select'),(2, 1, 'color'),(3, 0, 'select'); +INSERT INTO `PREFIX_attribute_group` (`id_attribute_group`, `is_color_group`, `position`) VALUES (1, 0, 0),(2, 1, 1),(3, 0, 2); INSERT INTO `PREFIX_attribute_group_group_shop` (`id_attribute_group`, `id_group_shop`) (SELECT `id_attribute_group`, 1 FROM `PREFIX_attribute_group`); INSERT INTO `PREFIX_attribute_group_lang` (`id_attribute_group`, `id_lang`, `name`, `public_name`) VALUES (1, 1, 'Disk space', 'Disk space'),(1, 2, 'Capacité', 'Capacité'),(2, 1, 'Color', 'Color'),(2, 2, 'Couleur', 'Couleur'),(3, 1, 'ICU', 'Processor'), diff --git a/install-dev/sql/upgrade/1.5.0.1.sql b/install-dev/sql/upgrade/1.5.0.1.sql index acb1b608b..b13a1afb6 100644 --- a/install-dev/sql/upgrade/1.5.0.1.sql +++ b/install-dev/sql/upgrade/1.5.0.1.sql @@ -150,6 +150,4 @@ ALTER TABLE `PREFIX_product_download` ADD `is_shareable` TINYINT( 1 ) UNSIGNED N ALTER TABLE `PREFIX_attribute_group` ADD `position` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'; -ALTER TABLE `PREFIX_attribute_group` ADD `group_type` ENUM('select', 'radio', 'color') NOT NULL DEFAULT 'select'; -UPDATE `PREFIX_attribute_group` SET `group_type`='color' WHERE `is_color_group` = 1; -ALTER TABLE `PREFIX_product` DROP `id_color_default`; \ No newline at end of file +/* PHP:add_group_attribute_position(); */; diff --git a/translations/fr/admin.php b/translations/fr/admin.php index 1c89f16a0..823f49b03 100644 --- a/translations/fr/admin.php +++ b/translations/fr/admin.php @@ -1191,7 +1191,9 @@ $_LANGADM['AdminImport2377be3c2ad9b435ba277a73f0f1ca76'] = 'Fabricants'; $_LANGADM['AdminImport1814d65a76028fdfbadab64a5a8076df'] = 'Fournisseurs'; $_LANGADM['AdminImportb8495b50f5c172ebad1cc5c615548afa'] = 'Ignorer cette colonne'; $_LANGADM['AdminImport97f08a40f22a625d0cbfe03db3349108'] = 'ID produit'; -$_LANGADM['AdminImport9608f36da60f49e9d5e203916de5f6e9'] = 'Options (Groupe:Valeur:Position)'; +$_LANGADM['AdminImportabaebb382cb5980ac3a28e6b7634801f'] = 'Groupe (Nom:Position)'; +$_LANGADM['AdminImport71a336d5333641c567b41a0ea59edb4f'] = 'Position du groupe d\'attribut.'; +$_LANGADM['AdminImport17c9395a749ecae6dfa95e1c899c81ba'] = 'Attribut (Valeur:Position)'; $_LANGADM['AdminImport6ea61efe688b5afde35e1b11517d0e56'] = 'Position de l\'attribut dans le groupe d\'attribut.'; $_LANGADM['AdminImport63d5049791d9d79d86e9a108b0a999ca'] = 'Référence'; $_LANGADM['AdminImport8284ae5df53e6e7ffc1f2cc67ae68765'] = 'Référence fournisseur';