[+] BO : now you can choose type of attribute group (select , color, radio)

git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@8691 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
vAugagneur
2011-09-21 14:29:32 +00:00
parent 5bc5979e2d
commit 8b6ec916e0
15 changed files with 204 additions and 146 deletions
+1 -1
View File
@@ -63,7 +63,7 @@ class AdminAttributes extends AdminTab
<script type="text/javascript">
var attributesGroups = {';
foreach ($attributes_groups AS $attribute_group)
$strAttributesGroups .= '"'.$attribute_group['id_attribute_group'].'" : '.$attribute_group['is_color_group'].',';
$strAttributesGroups .= '"'.$attribute_group['id_attribute_group'].'" : '.($attribute_group['group_type'] == 'color' ? '1' : '0' ) .',';
echo $strAttributesGroups.'};
</script>
<form action="'.self::$currentIndex.'&submitAdd'.$this->table.'=1&token='.($token ? $token : $this->token).'" method="post" enctype="multipart/form-data">
+7 -6
View File
@@ -244,13 +244,14 @@ class AdminAttributesGroups extends AdminTab
echo '
<div class="clear"></div>
</div>
<label>'.$this->l('Color group:').' </label>
<label>'.$this->l('Group type:').' </label>
<div class="margin-form">
<input type="radio" name="is_color_group" id="is_color_group_on" value="1" '.($this->getFieldValue($obj, 'is_color_group') ? 'checked="checked" ' : '').'/>
<label class="t" for="is_color_group_on"><img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Yes').'" /></label>
<input type="radio" name="is_color_group" id="is_color_group_off" value="0" '.(!$this->getFieldValue($obj, 'is_color_group') ? 'checked="checked" ' : '').'/>
<label class="t" for="is_color_group_off"><img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('No').'" /></label>
<p>'.$this->l('This is a color group').'</p>
<select name="group_type">
<option value="select" '.($this->getFieldValue($obj, 'group_type') == 'select' ? 'selected="selected" ' : '').'>'.$this->l('Select').'</option>
<option value="radio" '.($this->getFieldValue($obj, 'group_type') == 'radio' ? 'selected="selected" ' : '').'>'.$this->l('Radio button').'</option>
<option value="color" '.($this->getFieldValue($obj, 'group_type') == 'color' ? 'selected="selected" ' : '').'>'.$this->l('Color').'</option>
</select>
<p>'.$this->l('Choose the type of the attribute group').'</p>
</div>';
if (Shop::isMultiShopActivated())
{
+1 -22
View File
@@ -3611,28 +3611,7 @@ class AdminProducts extends AdminTab
var s_impact2 = document.getElementById(\'span_weight_impact\');
init_elems();
</script>
<hr style="width:100%;" />
<table cellpadding="5">
<tr>
<td class="col-left"><b>'.$this->l('Color picker:').'</b></td>
<td style="padding-bottom:5px;">
<select name="id_color_default">
<option value="0">'.$this->l('Do not display').'</option>';
foreach ($attributes_groups AS $k => $attribute_group)
if (isset($groups[$attribute_group['id_attribute_group']]))
echo '<option value="'.(int)($attribute_group['id_attribute_group']).'"
'.((int)($attribute_group['id_attribute_group']) == (int)($obj->id_color_default) ? 'selected="selected"' : '').'>'
.htmlentities(stripslashes($attribute_group['name']), ENT_COMPAT, 'UTF-8').
'</option>';
echo '
</select>
&nbsp;&nbsp;<input type="submit" value="'.$this->l('OK').'" name="submitAdd'.$this->table.'AndStay" class="button" />
&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php?tab=AdminAttributesGroups&token='.Tools::getAdminToken('AdminAttributesGroups'.(int)(Tab::getIdFromClassName('AdminAttributesGroups')).(int)$this->context->employee->id).'" onclick="return confirm(\''.$this->l('Are you sure you want to delete entered product information?', __CLASS__, true, false).'\');"><img src="../img/admin/asterisk.gif" alt="" /> '.$this->l('Color attribute management').'</a>
<p >'.$this->l('Activate the color choice by selecting a color attribute group.').'</p>
</td>
</tr>
</table>';
</script>';
}
else
echo '<b>'.$this->l('You must save this product before adding combinations').'.</b>';
+16 -4
View File
@@ -34,7 +34,6 @@ class AttributeCore extends ObjectModel
public $name;
public $color;
public $position;
public $default;
protected $fieldsRequired = array('id_attribute_group');
@@ -53,7 +52,14 @@ class AttributeCore extends ObjectModel
'id_attribute_group' => array('xlink_resource'=> 'product_options'),
),
);
public function __construct()
{
$this->image_dir = _PS_COL_IMG_DIR_;
parent::__construct();
}
public function getFields()
{
$this->validateFields();
@@ -182,16 +188,22 @@ class AttributeCore extends ObjectModel
return false;
}
/**
* Return true if attribute is color type
*
* @acces public
* @return bool
*/
public function isColorAttribute()
{
if (!Db::getInstance()->getRow('
SELECT `is_color_group` FROM `'._DB_PREFIX_.'attribute_group` WHERE `id_attribute_group` = (
SELECT `group_type` FROM `'._DB_PREFIX_.'attribute_group` WHERE `id_attribute_group` = (
SELECT `id_attribute_group` FROM `'._DB_PREFIX_.'attribute` WHERE `id_attribute` = '.(int)$this->id.')
AND is_color_group = 1'))
AND group_type = \'color\''))
return false;
return Db::getInstance()->NumRows();
}
/**
* Get minimal quantity for product with attributes quantity
*
+2
View File
@@ -31,6 +31,7 @@ class AttributeGroupCore extends ObjectModel
public $name;
public $is_color_group;
public $position;
public $group_type;
/** @var string Public Name */
public $public_name;
@@ -62,6 +63,7 @@ class AttributeGroupCore extends ObjectModel
$this->validateFields();
$fields['is_color_group'] = (int)($this->is_color_group);
$fields['group_type'] = pSQL($this->group_type);
$fields['position'] = (int)($this->position);
return $fields;
+2 -6
View File
@@ -54,9 +54,6 @@ class ProductCore extends ObjectModel
/** @var integer default Category id */
public $id_category_default;
/** @var integer default Attribute id if color picker is enabled */
public $id_color_default;
/** @var string Manufacturer name */
public $manufacturer_name;
@@ -225,7 +222,6 @@ class ProductCore extends ObjectModel
'id_manufacturer' => 'isUnsignedId',
'id_supplier' => 'isUnsignedId',
'id_category_default' => 'isUnsignedId',
'id_color_default' => 'isUnsignedInt', /* unsigned integer because its value could be 0 if the feature is disabled */
'minimal_quantity' => 'isUnsignedInt',
'price' => 'isPrice',
'additional_shipping_cost' => 'isPrice',
@@ -353,7 +349,6 @@ class ProductCore extends ObjectModel
$fields['id_manufacturer'] = (int)($this->id_manufacturer);
$fields['id_supplier'] = (int)($this->id_supplier);
$fields['id_category_default'] = (int)($this->id_category_default);
$fields['id_color_default'] = (int)($this->id_color_default);
$fields['quantity'] = (int)($this->quantity);
$fields['minimal_quantity'] = (int)($this->minimal_quantity);
$fields['price'] = (float)($this->price);
@@ -2317,7 +2312,8 @@ class ProductCore extends ObjectModel
if (!Combination::isFeatureActive())
return array();
$sql = 'SELECT ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, agl.`public_name` AS public_group_name, a.`id_attribute`, al.`name` AS attribute_name,
a.`color` AS attribute_color, pa.`id_product_attribute`, stock.quantity, pa.`price`, pa.`ecotax`, pa.`weight`, pa.`default_on`, pa.`reference`, pa.`unit_price_impact`, pa.`minimal_quantity`, pa.`available_date`
a.`color` AS attribute_color, pa.`id_product_attribute`, stock.quantity, pa.`price`, pa.`ecotax`, pa.`weight`, pa.`default_on`, pa.`reference`, pa.`unit_price_impact`,
pa.`minimal_quantity`, pa.`available_date`, ag.`group_type`
FROM `'._DB_PREFIX_.'product_attribute` pa
'.Product::sqlStock('pa', 'pa').'
LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute`
+3 -9
View File
@@ -264,7 +264,7 @@ class ProductControllerCore extends FrontController
foreach ($attributesGroups AS $k => $row)
{
/* Color management */
if (((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) AND $row['id_attribute_group'] == $this->product->id_color_default)
if ((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg')))
{
$colors[$row['id_attribute']]['value'] = $row['attribute_color'];
$colors[$row['id_attribute']]['name'] = $row['attribute_name'];
@@ -272,12 +272,11 @@ class ProductControllerCore extends FrontController
$colors[$row['id_attribute']]['attributes_quantity'] = 0;
$colors[$row['id_attribute']]['attributes_quantity'] += (int)($row['quantity']);
}
if (!isset($groups[$row['id_attribute_group']]))
{
$groups[$row['id_attribute_group']] = array(
'name' => $row['public_group_name'],
'is_color_group' => $row['is_color_group'],
'group_type' => $row['group_type'],
'default' => -1,
);
}
@@ -304,7 +303,6 @@ class ProductControllerCore extends FrontController
$combinations[$row['id_product_attribute']]['available_date'] = $availableDate;
$combinations[$row['id_product_attribute']]['id_image'] = isset($combinationImages[$row['id_product_attribute']][0]['id_image']) ? $combinationImages[$row['id_product_attribute']][0]['id_image'] : -1;
}
//wash attributes list (if some attributes are unavailables and if allowed to wash it)
if (!Product::isAvailableWhenOutOfStock($this->product->out_of_stock) && Configuration::get('PS_DISP_UNAVAILABLE_ATTR') == 0)
{
@@ -318,9 +316,6 @@ class ProductControllerCore extends FrontController
unset($colors[$key]);
}
/*foreach ($groups AS &$group) // attributes are now sortable in BO
natcasesort($group['attributes']);*/
foreach ($combinations AS $id_product_attribute => $comb)
{
$attributeList = '';
@@ -329,12 +324,11 @@ class ProductControllerCore extends FrontController
$attributeList = rtrim($attributeList, ',');
$combinations[$id_product_attribute]['list'] = $attributeList;
}
$this->context->smarty->assign(array(
'groups' => $groups,
'combinaisons' => $combinations, /* Kept for compatibility purpose only */
'combinations' => $combinations,
'colors' => (sizeof($colors) AND $this->product->id_color_default) ? $colors : false,
'colors' => (sizeof($colors)) ? $colors : false,
'combinationImages' => $combinationImages));
}
+1 -1
View File
@@ -91,6 +91,7 @@ CREATE TABLE `PREFIX_attribute` (
CREATE TABLE `PREFIX_attribute_group` (
`id_attribute_group` int(10) unsigned NOT NULL auto_increment,
`is_color_group` tinyint(1) NOT NULL default '0',
`group_type` ENUM('select', 'radio', 'color') NOT NULL DEFAULT 'select',
`position` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id_attribute_group`)
) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8;
@@ -1176,7 +1177,6 @@ CREATE TABLE `PREFIX_product` (
`id_manufacturer` int(10) unsigned default NULL,
`id_tax_rules_group` int(10) unsigned NOT NULL,
`id_category_default` int(10) unsigned default NULL,
`id_color_default` int(10) unsigned default NULL,
`on_sale` tinyint(1) unsigned NOT NULL default '0',
`online_only` tinyint(1) unsigned NOT NULL default '0',
`ean13` varchar(13) default NULL,
+1 -1
View File
@@ -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),(2, 1),(3, 0);
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_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'),
+4
View File
@@ -149,3 +149,7 @@ ALTER TABLE `PREFIX_product_download` ADD `id_product_attribute` INT( 10 ) UNSIG
ALTER TABLE `PREFIX_product_download` ADD `is_shareable` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `active`;
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`;
+37
View File
@@ -50,6 +50,7 @@
border: 1px #d0d3d8 solid;
margin-bottom: 1.5em
}
#primary_block #color_to_pick_list li {
display: inline;
float: left;
@@ -62,6 +63,11 @@
border: 1px solid #666;
cursor: pointer
}
#primary_block a.color_pick.selected {
border: 1px red solid;
}
#primary_block a.color_pick.selected:hover { border: 1px red solid; }
#primary_block a.color_pick:hover { border: 1px solid #000 }
#primary_block a#color_all { cursor: pointer }
#primary_block #image-block img#bigpic.jqzoom {
@@ -117,6 +123,37 @@
clear: left;
text-align: center
}
#attributes {
margin-top: 10px;
}
.attribute_list {
width:50%;
float:right;
height:auto
}
#primary_block #buy_block .attribute_label {
font-size: 1.1em;
color: #374853;
float:left;
width:45%;
}
#primary_block #buy_block .attribute_select {
width: 100%;
margin-left: 0;
}
.attribute_fieldset {
padding:0;
border:0;
margin-bottom:10px
}
.attribute_radio {
margin:0 5px 5px 0;
}
/* prices */
#primary_block #buy_block p.price {
+34 -33
View File
@@ -76,7 +76,7 @@ function findCombination(firstTime)
$('#quantity_wanted').val(1);
//create a temporary 'choice' array containing the choices of the customer
var choice = new Array();
$('div#attributes select').each(function(){
$('div#attributes select, div#attributes input[type=hidden], div#attributes input[type=radio]:checked').each(function(){
choice.push($(this).val());
});
@@ -139,21 +139,6 @@ function findCombination(firstTime)
updateDisplay();
}
function updateColorSelect(id_attribute)
{
if (id_attribute == 0)
{
refreshProductImages(0);
return ;
}
// Visual effect
$('#color_'+id_attribute).fadeTo('fast', 1, function(){ $(this).fadeTo('slow', 0, function(){ $(this).fadeTo('slow', 1, function(){}); }); });
// Attribute selection
$('#group_'+id_color_default+' option[value='+id_attribute+']').attr('selected', 'selected');
$('#group_'+id_color_default+' option[value!='+id_attribute+']').removeAttr('selected');
findCombination();
}
//update display of the availability of the product AND the prices of the product
function updateDisplay()
{
@@ -243,24 +228,26 @@ function updateDisplay()
$('#availability_statut:hidden').show();
//display availability date
var available_date = selectedCombination['available_date'];
tab_date = available_date.split('-');
var time_available = new Date(tab_date[2], tab_date[1], tab_date[0]);
time_available.setMonth(time_available.getMonth()-1);
var now = new Date();
// date displayed only if time_available
if (now.getTime() < time_available.getTime())
if (selectedCombination.length)
{
$('#availability_date_value').text(selectedCombination['available_date']);
$('#availability_date_label').show();
$('#availability_date_value').show();
var available_date = selectedCombination['available_date'];
tab_date = available_date.split('-');
var time_available = new Date(tab_date[2], tab_date[1], tab_date[0]);
time_available.setMonth(time_available.getMonth()-1);
var now = new Date();
// date displayed only if time_available
if (now.getTime() < time_available.getTime())
{
$('#availability_date_value').text(selectedCombination['available_date']);
$('#availability_date_label').show();
$('#availability_date_value').show();
}
else
{
$('#availability_date_label').hide();
$('#availability_date_value').hide();
}
}
else
{
$('#availability_date_label').hide();
$('#availability_date_value').hide();
}
//show the 'add to cart' button ONLY IF it's possible to buy when out of stock AND if it was previously invisible
if (allowBuyWhenOutOfStock && !selectedCombination['unavailable'] && productAvailableForOrder == 1)
{
@@ -501,7 +488,7 @@ $(document).ready(function()
//
$('a#resetImages').click(function() {
updateColorSelect(0);
refreshProductImages(0);
});
$('.thickbox').fancybox({
@@ -552,3 +539,17 @@ function checkMinimalQuantity(minimal_quantity)
}
}
function colorPickerClick(elt)
{
id_attribute = $(elt).attr('id').replace('color_', '');
$('.color_pick').removeClass('selected');
$(elt).fadeTo('fast', 1, function(){
$(this).fadeTo('slow', 0, function(){
$(this).fadeTo('slow', 1, function(){
$(this).addClass('selected');
});
});
});
$('#color_pick_hidden').val(id_attribute);
findCombination();
}
+1 -7
View File
@@ -57,8 +57,6 @@ $_LANG['authentication_dc647eb65e6711e155375218212b3964'] = 'Mot de passe';
$_LANG['authentication_01a569ddc6cf67ddec2a683f0a5f5956'] = 'Mot de passe oublié ?';
$_LANG['authentication_766d4aaf3e045538be23f9a9e17a1593'] = 'Commande express';
$_LANG['authentication_b78a3223503896721cca1303f776159b'] = 'Civilité';
$_LANG['authentication_127469a6b4253ebb77adccc0dd48461e'] = 'M.';
$_LANG['authentication_29e32764941c30d1bb41c601014fbdbd'] = 'Mme';
$_LANG['authentication_20db0bfeecd8fe60533206a2b5e9891a'] = 'Prénom';
$_LANG['authentication_8d3f5eff9c40ee315d452392bed5309b'] = 'Nom';
$_LANG['authentication_10803b83a68db8f7e7a33e3b41e184d0'] = 'Date de naissance';
@@ -203,8 +201,6 @@ $_LANG['identity_8514d6418c5a503c4accac47e764ce11'] = 'Votre mot de passe a ét
$_LANG['identity_91724108825d34f1636cda352524df67'] = 'N\'hésitez pas à modifier vos informations personnelles si celles-ci ont changé.';
$_LANG['identity_19f823c6453c2b1ffd09cb715214813d'] = 'Champs requis';
$_LANG['identity_b78a3223503896721cca1303f776159b'] = 'Civilité';
$_LANG['identity_127469a6b4253ebb77adccc0dd48461e'] = 'M.';
$_LANG['identity_29e32764941c30d1bb41c601014fbdbd'] = 'Mme';
$_LANG['identity_20db0bfeecd8fe60533206a2b5e9891a'] = 'Prénom';
$_LANG['identity_8d3f5eff9c40ee315d452392bed5309b'] = 'Nom';
$_LANG['identity_1e884e3078d9978e216a027ecd57fb34'] = 'E-mail';
@@ -349,6 +345,7 @@ $_LANG['order-detail_07213a0161f52846ab198be103b5ab43'] = 'erreurs';
$_LANG['order-detail_cb5e100e5a9a3e7f6d1fd97512215282'] = 'erreur';
$_LANG['order-detail_37c06f5486d3068a0a9604552c7e081f'] = 'Ajouter un message :';
$_LANG['order-detail_617096c86d35478132502be00e12e016'] = 'Si vous voulez nous laisser un message à propos de votre commande, merci de l\'écrire ici.';
$_LANG['order-detail_7bc873cba11f035df692c3549366c722'] = '- Choisissez -';
$_LANG['order-detail_94966d90747b97d1f0f206c98a8b1ac3'] = 'Envoyer';
$_LANG['order-detail_a9979df9e349275e2d86f7af03e24d14'] = 'Vous ne pouvez pas faire de retour de marchandise avec un compte invité';
$_LANG['order-follow_d95cf4ab2cbf1dfb63f066b50558b07d'] = 'Mon compte';
@@ -387,8 +384,6 @@ $_LANG['order-opc-new-account_2fdfd506efea08144c0794c32ca8250a'] = 'Créer un co
$_LANG['order-opc-new-account_1e884e3078d9978e216a027ecd57fb34'] = 'E-mail';
$_LANG['order-opc-new-account_bf2957630c4209f61a388a08c2154915'] = '(Min 5 caractères.)';
$_LANG['order-opc-new-account_b78a3223503896721cca1303f776159b'] = 'Titre';
$_LANG['order-opc-new-account_127469a6b4253ebb77adccc0dd48461e'] = 'M.';
$_LANG['order-opc-new-account_29e32764941c30d1bb41c601014fbdbd'] = 'Mme';
$_LANG['order-opc-new-account_20db0bfeecd8fe60533206a2b5e9891a'] = 'Prénom';
$_LANG['order-opc-new-account_8d3f5eff9c40ee315d452392bed5309b'] = 'Nom';
$_LANG['order-opc-new-account_10803b83a68db8f7e7a33e3b41e184d0'] = 'Date de naissance';
@@ -544,7 +539,6 @@ $_LANG['product_13dba24862cf9128167a59100e154c8d'] = 'Imprimer';
$_LANG['product_c6beb9157a0e29e604ad5ec484488608'] = 'Agrandir';
$_LANG['product_2b56b60f878922093facd42284848a0c'] = 'Plus de détails';
$_LANG['product_e54a973d0c3342dac6ee7d9e145c6f83'] = 'Contenu du pack';
$_LANG['product_98b0a68a7e4c7b265a5ca9a0b733d96e'] = 'Choisissez un coloris :';
$_LANG['product_588907ab2d492aca0b07b5bf9c931eea'] = 'En solde';
$_LANG['product_800e90e940e7f1fb938b0fda5137f38c'] = 'En solde !';
$_LANG['product_ca2bf12169883f4982d8fe34b7e3c618'] = 'Prix réduit !';
+50 -42
View File
@@ -110,10 +110,6 @@ var fieldRequired = '{l s='Please fill in all required fields, then save the cus
{foreach from=$combinations key=idCombination item=combination}
addCombination({$idCombination|intval}, new Array({$combination.list}), {$combination.quantity}, {$combination.price}, {$combination.ecotax}, {$combination.id_image}, '{$combination.reference|addslashes}', {$combination.unit_impact}, {$combination.minimal_quantity}, '{$combination.available_date}');
{/foreach}
// Colors
{if $colors|@count > 0}
{if $product->id_color_default}var id_color_default = {$product->id_color_default|intval};{/if}
{/if}
{/if}
//]]>
</script>
@@ -206,21 +202,7 @@ var fieldRequired = '{l s='Please fill in all required fields, then save the cus
{/if}
</div>
{/if}
{if isset($colors) && $colors}
<!-- colors -->
<div id="color_picker">
<p>{l s='Pick a color:' js=1}</p>
<div class="clear"></div>
<ul id="color_to_pick_list">
{foreach from=$colors key='id_attribute' item='color'}
<li><a id="color_{$id_attribute|intval}" class="color_pick" style="background: {$color.value};" onclick="updateColorSelect({$id_attribute|intval});$('#wrapResetImages').show('slow');" title="{$color.name}">{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}<img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$color.name}" width="20" height="20" />{/if}</a></li>
{/foreach}
</ul>
<div class="clear"></div>
</div>
{/if}
{if ($product->show_price AND !isset($restricted_country_mode)) OR isset($groups) OR $product->reference OR (isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS)}
<!-- add to cart form-->
<form id="buy_block" {if $PS_CATALOG_MODE AND !isset($groups) AND $product->quantity > 0}class="hidden"{/if} action="{$link->getPageLink('cart')}" method="post">
@@ -298,42 +280,68 @@ var fieldRequired = '{l s='Please fill in all required fields, then save the cus
{/if}
{*close if for show price*}
{/if}
{if isset($groups)}
<!-- attributes -->
<div id="attributes">
{foreach from=$groups key=id_attribute_group item=group}
{if $group.attributes|@count}
<p>
<label for="group_{$id_attribute_group|intval}">{$group.name|escape:'htmlall':'UTF-8'} :</label>
{assign var="groupName" value="group_$id_attribute_group"}
<select name="{$groupName}" id="group_{$id_attribute_group|intval}" onchange="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'htmlall':'UTF-8'}">{$group_attribute|escape:'htmlall':'UTF-8'}</option>
{/foreach}
</select>
<!-- attributes -->
<div id="attributes">
{foreach from=$groups key=id_attribute_group item=group}
{if $group.attributes|@count}
<fieldset class="attribute_fieldset">
<label class="attribute_label" for="group_{$id_attribute_group|intval}">{$group.name|escape:'htmlall':'UTF-8'} :</label>
{assign var="groupName" value="group_$id_attribute_group"}
<div class="attribute_list">
{if ($group.group_type == 'select')}
<select name="{$groupName}" id="group_{$id_attribute_group|intval}" class="attribute_select" onchange="findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'htmlall':'UTF-8'}">{$group_attribute|escape:'htmlall':'UTF-8'}</option>
{/foreach}
</select>
{elseif ($group.group_type == 'color')}
<ul id="color_to_pick_list">
{assign var="default_colorpicker" value=""}
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li>
<a id="color_{$id_attribute|intval}" class="color_pick{if ($group.default == $id_attribute)} selected{/if}" style="background: {$colors.$id_attribute.value};" title="{$colors.$id_attribute.name}" onclick="colorPickerClick(this);{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if}">
{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}
<img src="{$img_col_dir}{$id_attribute}.jpg" alt="{$colors.$id_attribute.name}" width="20" height="20" /><br>
{/if}
</a>
</li>
{if ($group.default == $id_attribute)}
{$default_colorpicker = $id_attribute}
{/if}
{/foreach}
</ul>
<input type="hidden" id="color_pick_hidden" name="{$groupName}" value="{$default_colorpicker}" >
{elseif ($group.group_type == 'radio')}
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<input type="radio" class="attribute_radio" name="{$groupName}" value="{$id_attribute}" {if ($group.default == $id_attribute)} checked="checked"{/if} onclick="findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if}">
{$group_attribute|escape:'htmlall':'UTF-8'}<br/>
{/foreach}
{/if}
</div>
</fieldset>
{/if}
{/foreach}
</div>
{/if}
<p id="product_reference" {if isset($groups) OR !$product->reference}style="display: none;"{/if}>
<label for="product_reference">{l s='Reference :'} </label>
<span class="editable">{$product->reference|escape:'htmlall':'UTF-8'}</span>
</p>
{/if}
{/foreach}
</div>
{/if}
<p id="product_reference" {if isset($groups) OR !$product->reference}style="display: none;"{/if}><label for="product_reference">{l s='Reference :'} </label><span class="editable">{$product->reference|escape:'htmlall':'UTF-8'}</span></p>
<!-- quantity wanted -->
<p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity <= 0) OR $virtual OR !$product->available_for_order OR $PS_CATALOG_MODE} style="display: none;"{/if}>
<label>{l s='Quantity :'}</label>
<input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" size="2" maxlength="3" {if $product->minimal_quantity > 1}onkeyup="checkMinimalQuantity({$product->minimal_quantity});"{/if} />
</p>
<!-- minimal quantity wanted -->
<p id="minimal_quantity_wanted_p"{if $product->minimal_quantity <= 1 OR !$product->available_for_order OR $PS_CATALOG_MODE} style="display: none;"{/if}>{l s='You must add '}<b id="minimal_quantity_label">{$product->minimal_quantity}</b>{l s=' as a minimum quantity to buy this product.'}</p>
<p id="minimal_quantity_wanted_p"{if $product->minimal_quantity <= 1 OR !$product->available_for_order OR $PS_CATALOG_MODE} style="display: none;"{/if}>
{l s='You must add '}<b id="minimal_quantity_label">{$product->minimal_quantity}</b>{l s=' as a minimum quantity to buy this product.'}
</p>
{if $product->minimal_quantity > 1}
<script type="text/javascript">
checkMinimalQuantity();
</script>
{/if}
<!-- availability -->
<p id="availability_statut"{if ($product->quantity <= 0 && !$product->available_later && $allow_oosp) OR ($product->quantity > 0 && !$product->available_now) OR !$product->available_for_order OR $PS_CATALOG_MODE} style="display: none;"{/if}>
<span id="availability_label">{l s='Availability:'}</span>
+44 -14
View File
@@ -13,6 +13,9 @@ $_LANGADM['AdminAccessf2a6c498fb90ee345d997f888fce3b18'] = 'Supprimer';
$_LANGADM['AdminAccessb1c94ca2fbc3e78fc30069c8d0f01680'] = 'Tout';
$_LANGADM['AdminAccess7fcca2f879aa88fea302c675f56428cc'] = 'Aucun onglet';
$_LANGADM['AdminAccess05fe96d753968b151a15b748140e4467'] = 'Les permissions du profil administrateur ne peuvent pas être modifiées.';
$_LANGADM['AdminAccessbf17ac149e2e7a530c677e9bd51d3fd2'] = 'Modules';
$_LANGADM['AdminAccessf1206f9fadc5ce41694f69129aecac26'] = 'Configurer';
$_LANGADM['AdminAccess501faad2df9c231576549a068fcf61ca'] = 'Pas de modules installés';
$_LANGADM['AdminAddressesb718adec73e04ce3ec720dd11a06a308'] = 'ID';
$_LANGADM['AdminAddresses20db0bfeecd8fe60533206a2b5e9891a'] = 'Prénom';
$_LANGADM['AdminAddresses8d3f5eff9c40ee315d452392bed5309b'] = 'Nom';
@@ -106,6 +109,7 @@ $_LANGADM['AdminAttributes38fb7d24e0d60a048f540ecb18e13376'] = 'Enregistrer';
$_LANGADM['AdminAttributes19f823c6453c2b1ffd09cb715214813d'] = 'Champs requis';
$_LANGADM['AdminAttributesGroups49ee3087348e8d44e1feda1917443987'] = 'Nom';
$_LANGADM['AdminAttributesGroups287234a1ff35a314b5b6bc4e5828e745'] = 'Attributs';
$_LANGADM['AdminAttributesGroups52f5e0bc3859bc5f5e25130b6c7e8881'] = 'Position';
$_LANGADM['AdminAttributesGroups630f6dc397fe74e52d5189e2c80f282b'] = 'Retour à la liste';
$_LANGADM['AdminAttributesGroups13cdf2d0d1b996ad3a141e297c62ea6b'] = 'Cette fonctionnalité a été désactivée, vous pouvez l\'activer sur cette page:';
$_LANGADM['AdminAttributesGroups9a63ec735f057c1366284bda67eee7de'] = 'Performances';
@@ -113,6 +117,8 @@ $_LANGADM['AdminAttributesGroups8196c2d7a6dce8aea8acbeac4105ef81'] = 'Ajouter un
$_LANGADM['AdminAttributesGroups88a306e559954dc8c8ae9eb55d62297f'] = 'Ajouter une déclinaison';
$_LANGADM['AdminAttributesGroupsb63e3071db26cee88d595c4573f8f34e'] = 'Cliquez sur le nom du groupe pour voir ses attributs. Cliquez à nouveau pour les masquer.';
$_LANGADM['AdminAttributesGroupsc2492c52caab207d21da2c0decd8a405'] = 'Aucun élément trouvé';
$_LANGADM['AdminAttributesGroups08a38277b0309070706f6652eeae9a53'] = 'Bas';
$_LANGADM['AdminAttributesGroups258f49887ef8d14ac268c92b02503aaa'] = 'Haut';
$_LANGADM['AdminAttributesGroups7dce122004969d56ae2e0245cb754d35'] = 'Editer';
$_LANGADM['AdminAttributesGroupse8cf85cec621489ec026f7e06c67eb4e'] = 'Supprimer l\'élément';
$_LANGADM['AdminAttributesGroupsf2a6c498fb90ee345d997f888fce3b18'] = 'Supprimer';
@@ -121,12 +127,11 @@ $_LANGADM['AdminAttributesGroups4e140ba723a03baa6948340bf90e2ef6'] = 'Nom :';
$_LANGADM['AdminAttributesGroups6252c0f2c2ed83b7b06dfca86d4650bb'] = 'Caractères interdits :';
$_LANGADM['AdminAttributesGroupsc9e5eb0a273a65da3a04f42e8351dc97'] = 'Nom public :';
$_LANGADM['AdminAttributesGroups4c4a779c55d2a3054839b5ad8615f5cb'] = 'Nom qui sera affiché au client';
$_LANGADM['AdminAttributesGroups3c2fd298a3d83fdba35636873dcba353'] = 'Coloris :';
$_LANGADM['AdminAttributesGroups00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé';
$_LANGADM['AdminAttributesGroups93cba07454f06a4a960172bbd6e2a435'] = 'Oui';
$_LANGADM['AdminAttributesGroupsb9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé';
$_LANGADM['AdminAttributesGroupsbafd7322c6e97d25b6299b5d6fe8920b'] = 'Non';
$_LANGADM['AdminAttributesGroups0820cbf22e11a8a8398b7aa177048874'] = 'Groupe de coloris';
$_LANGADM['AdminAttributesGroups9a01ca07f01c30db30819eba00919a06'] = 'Type de groupe:';
$_LANGADM['AdminAttributesGroupse0626222614bdee31951d84c64e5e9ff'] = 'Sélectionnez';
$_LANGADM['AdminAttributesGroups07a9ca8c8228dd3399141e228034fedf'] = 'Bouton radio';
$_LANGADM['AdminAttributesGroupscb5feb1b7314637725a2e73bdc9f7295'] = 'Couleur';
$_LANGADM['AdminAttributesGroups6c95ef57bbce3e9186e12f698bbe3aa1'] = 'Choisissez le type de groupe d\'attributs';
$_LANGADM['AdminAttributesGroups817b35caca2afa11b6c1efc428315470'] = 'Groupe de boutiques associé';
$_LANGADM['AdminAttributesGroups38fb7d24e0d60a048f540ecb18e13376'] = 'Enregistrer';
$_LANGADM['AdminAttributesGroups19f823c6453c2b1ffd09cb715214813d'] = 'Champs requis';
@@ -549,6 +554,19 @@ $_LANGADM['AdminCustomerThreadsec53a8c4f07baed5d8825072c89799be'] = 'Statut';
$_LANGADM['AdminCustomerThreadsf8c8b903cb2e4f297e4b96d4b9c1e98a'] = 'Employé';
$_LANGADM['AdminCustomerThreads41de6d6cfb8953c021bbe4ba0701c8a1'] = 'Messages';
$_LANGADM['AdminCustomerThreadscf090b8fa4a136ed6058aaf84d5d2538'] = 'Dernier message';
$_LANGADM['AdminCustomerThreads0e9470c5e6bfee40004f22f543b8b2a6'] = 'SAV option';
$_LANGADM['AdminCustomerThreadsed04092eeafa5a0b2d70dab8983e6935'] = 'Url Imap';
$_LANGADM['AdminCustomerThreadsa81b40d671a82de3bc3550b878234dd6'] = 'Url pour le serveur IMAP (mail.server.com)';
$_LANGADM['AdminCustomerThreadscd16a15c486d2e183732556f779968c9'] = 'Port IMAP';
$_LANGADM['AdminCustomerThreads8a29ff48f49ffe61e4e886a04cff2eb6'] = 'Port à utiliser pour se connecter le serveur imap';
$_LANGADM['AdminCustomerThreads678b57a794c6976ac961df8a32394def'] = 'Utilisateur IMAP';
$_LANGADM['AdminCustomerThreads0882db19e4fce8cbaff75c9dc2fb1166'] = 'L\'utilisateur à utiliser pour se connecter le serveur IMAP';
$_LANGADM['AdminCustomerThreads22e38bd8ea7e850765045720e0b9cf5d'] = 'Mot de passe IMAP';
$_LANGADM['AdminCustomerThreadsa5bf021c18a4c0891b491c07d3555b86'] = 'Mot de passe à utiliser pour se connecter le serveur IMAP';
$_LANGADM['AdminCustomerThreadsca7e64e3f55ef8e0f50818d8117d26cc'] = 'Supprimer des messages';
$_LANGADM['AdminCustomerThreadsbbd8156a324aee57b7186991acf82d0d'] = 'Supprime le message après la synchronisation. Si vous n\'avez pas active cette option, la synchronisation sera plus long';
$_LANGADM['AdminCustomerThreadsbafd7322c6e97d25b6299b5d6fe8920b'] = 'Non';
$_LANGADM['AdminCustomerThreads93cba07454f06a4a960172bbd6e2a435'] = 'Oui';
$_LANGADM['AdminCustomerThreadsd21b5a78517318e6d35414d4217950ce'] = 'Message transmis à';
$_LANGADM['AdminCustomerThreads240f3031f25601fa128bd4e15f0a37de'] = 'Commentaire';
$_LANGADM['AdminCustomerThreads518f0adf73dca7abeebc9c3a85352cfc'] = 'Pas de nouveau message';
@@ -607,6 +625,10 @@ $_LANGADM['AdminCustomerThreadsd8a065ef1c8b81af153be321e200ace7'] = 'Commandes v
$_LANGADM['AdminCustomerThreadsd55669822f1a8cf72ec1911e462a54eb'] = 'pour';
$_LANGADM['AdminCustomerThreads49ee3087348e8d44e1feda1917443987'] = 'Nom';
$_LANGADM['AdminCustomerThreads694e8d1f2ee056f98ee488bdc4982d73'] = 'Quantité';
$_LANGADM['AdminCustomerThreadsd8e87c0927539672f54462c837be0b7f'] = 'Synchroniser';
$_LANGADM['AdminCustomerThreadsa19330a6fc36ebae6683cc023e295687'] = 'Exécutez la synchronisation';
$_LANGADM['AdminCustomerThreads22009610f18142abea939bc2f1836a81'] = 'Cliquez pour synchroniser les mails automatiquement';
$_LANGADM['AdminCustomerThreads1e65b02f3464a517e0946a46d496327c'] = 'Synchronisation avec succès';
$_LANGADM['AdminCustomersd1457b72c3fb323a2671125aef3eab5d'] = '?';
$_LANGADM['AdminCustomersb718adec73e04ce3ec720dd11a06a308'] = 'ID';
$_LANGADM['AdminCustomers019ec3132cdf8ee0f2e2a75cf5d3e459'] = 'Sexe';
@@ -919,6 +941,19 @@ $_LANGADM['AdminFeaturesValues6252c0f2c2ed83b7b06dfca86d4650bb'] = 'Caractères
$_LANGADM['AdminFeaturesValuesb07e7131a6007b2a1a765bdd0e1e4894'] = 'Caractéristique :';
$_LANGADM['AdminFeaturesValues38fb7d24e0d60a048f540ecb18e13376'] = 'Enregistrer';
$_LANGADM['AdminFeaturesValues19f823c6453c2b1ffd09cb715214813d'] = 'Champs requis';
$_LANGADM['AdminGendersb718adec73e04ce3ec720dd11a06a308'] = 'ID';
$_LANGADM['AdminGenders49ee3087348e8d44e1feda1917443987'] = 'Nom';
$_LANGADM['AdminGendersa1fa27779242b4902f7ae3bdd5c6d508'] = 'Type';
$_LANGADM['AdminGenders63889cfb9d3cbe05d1bd2be5cc9953fd'] = 'Homme';
$_LANGADM['AdminGendersb719ce180ec7bd9641fece2f920f4817'] = 'Femme';
$_LANGADM['AdminGendersbe53a0541a6d36f6ecb879fa2c584b08'] = 'Image';
$_LANGADM['AdminGenders019ec3132cdf8ee0f2e2a75cf5d3e459'] = 'Sexe';
$_LANGADM['AdminGenders4e140ba723a03baa6948340bf90e2ef6'] = 'Nom:';
$_LANGADM['AdminGenders6252c0f2c2ed83b7b06dfca86d4650bb'] = 'Caractères invalides:';
$_LANGADM['AdminGenderse659b52eba1f0299b2d8ca3483919e72'] = 'Type:';
$_LANGADM['AdminGenders461900b74731e07320ca79366df3e809'] = 'Image:';
$_LANGADM['AdminGenders38fb7d24e0d60a048f540ecb18e13376'] = 'Enregistrer';
$_LANGADM['AdminGenders19f823c6453c2b1ffd09cb715214813d'] = 'Champ obligatoire';
$_LANGADM['AdminGeneratorad11acdc8759d7a20ca3b868a8db30ae'] = 'Génération du fichier Htaccess';
$_LANGADM['AdminGenerator3f3e336e2f1fa10375efd923fca18b55'] = 'Avertissement :';
$_LANGADM['AdminGenerator620da2256fdfaa8c903cc870221450ca'] = 'cet outil peut SEULEMENT être utilisé si vous êtes hébergé par un serveur web Apache. Merci de demander à votre hébergeur.';
@@ -990,6 +1025,9 @@ $_LANGADM['AdminGroupShop24a23d787190f2c4812ff9ab11847a72'] = 'Statut:';
$_LANGADM['AdminGroupShop37c0e2b9736bc4cc2005f7be3fd66fe5'] = 'Activer ou désactiver la boutique';
$_LANGADM['AdminGroupShop38fb7d24e0d60a048f540ecb18e13376'] = 'Enregistrer';
$_LANGADM['AdminGroupShop19f823c6453c2b1ffd09cb715214813d'] = 'Champ obligatoire';
$_LANGADM['AdminGroupShop775a3ab6add326ef93f2382f49f9e500'] = 'Groupes d\'attributs';
$_LANGADM['AdminGroupShop287234a1ff35a314b5b6bc4e5828e745'] = 'Attributs';
$_LANGADM['AdminGroupShopdad1f8d794ee0dd7753fe75e73b78f31'] = 'Zones';
$_LANGADM['AdminGroupShop817b32b9fa482c23e9413b150b5e6d47'] = 'Ajouter un nouveau groupe de boutiques';
$_LANGADM['AdminGroupsb718adec73e04ce3ec720dd11a06a308'] = 'ID';
$_LANGADM['AdminGroups49ee3087348e8d44e1feda1917443987'] = 'Nom';
@@ -2299,11 +2337,6 @@ $_LANGADM['AdminProducts943395f3cd91fd71f4800c5319e68d35'] = 'Supprimer toutes l
$_LANGADM['AdminProductsf22c10907735de8cabc370b142d6764a'] = 'Encore aucune déclinaison';
$_LANGADM['AdminProductsf9c128cbc52bb845834c0d3e62b424ea'] = 'La ligne en bleu est la déclinaison par défaut.';
$_LANGADM['AdminProducts55110f4c6a2c90b143c6fcd295cb7bc7'] = 'Une déclinaison par défaut doit être désignée pour chaque produit.';
$_LANGADM['AdminProducts898b68dce7b68f9b08d6de76e268f650'] = 'Palette de coloris :';
$_LANGADM['AdminProductsd675f4bde587d86ab74ba5ca17e06e3d'] = 'Ne pas afficher';
$_LANGADM['AdminProductse0aa021e21dddbd6d8cecec71e9cf564'] = 'OK';
$_LANGADM['AdminProducts9efcd637794d273467448a11c9b93446'] = 'Gestion des attributs couleur';
$_LANGADM['AdminProductsb2764723575b7c88c1b21c89ee8871e8'] = 'Activer le choix du coloris en sélectionnant un groupe d\'attributs de couleur.';
$_LANGADM['AdminProductsddca89873b6cb1ff542e03163dfd179c'] = 'Vous devez enregistrer ce produit avant de pouvoir ajouter des déclinaison.';
$_LANGADM['AdminProductsc7c2169d380b95e2e3672037c5ace793'] = 'Attribuer des caractéristiques à ce produit';
$_LANGADM['AdminProductsf41afefb4495b85c7b7ddf3e1ca4387f'] = 'Vous pouvez spécifier une valeur pour chaque caractéristique pertinente concernant ce produit, les champs vides ne seront pas affichés.';
@@ -2955,9 +2988,6 @@ $_LANGADM['AdminThemes93af5f35c247e0e814bd676249f60b62'] = 'Caractère de sépar
$_LANGADM['AdminThemesf2284dabeee8efb9617fbb0f05883adb'] = 'Utilisé pour le chemin de navigation dans les catégories et les produits';
$_LANGADM['AdminThemesbbb572a770006c9e0e57c9e5d4bcda90'] = 'En direct de Prestashop Addons !';
$_LANGADM['AdminThemes0ac3a6bb56ca9b829859b5c12040e3a0'] = 'Trouvez de nouveaux thèmes sur Prestashop Addons !';
$_LANGADM['AdminTools442824e37ecd2fe5b938869e10e85d79'] = 'Outils de la boutique';
$_LANGADM['AdminToolsfd35692a2d43d6ee7b7417e7e4fe40d4'] = 'Plusieurs outils sont disponibles afin de gérer votre boutique.';
$_LANGADM['AdminToolsbae42c77a464b87efd72350dfa7c3a93'] = 'Veuillez en choisir un via les sous-onglets juste au-dessus !';
$_LANGADM['AdminTrackinge53d0648d344037610407a88c1389ca1'] = 'Suivi du catalogue';
$_LANGADM['AdminTracking428a70e43c5371126c0fb675e98c61d5'] = 'Liste des catégories vides :';
$_LANGADM['AdminTracking1679821fd0e65d65924aa77e56068814'] = 'Liste des produits désactivés :';