// Fixing problems with blockcart
This commit is contained in:
+18
-4
@@ -858,7 +858,7 @@ class CartCore extends ObjectModel
|
|||||||
CartRule::autoAddToCart($context);
|
CartRule::autoAddToCart($context);
|
||||||
|
|
||||||
if ($product->customizable)
|
if ($product->customizable)
|
||||||
return $this->_updateCustomizationQuantity((int)$quantity, (int)$id_customization, (int)$id_product, (int)$id_product_attribute, $operator);
|
return $this->_updateCustomizationQuantity((int)$quantity, (int)$id_customization, (int)$id_product, (int)$id_product_attribute, (int)$id_address_delivery , $operator);
|
||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -866,7 +866,7 @@ class CartCore extends ObjectModel
|
|||||||
/*
|
/*
|
||||||
** Customization management
|
** Customization management
|
||||||
*/
|
*/
|
||||||
protected function _updateCustomizationQuantity($quantity, $id_customization, $id_product, $id_product_attribute, $operator = 'up')
|
protected function _updateCustomizationQuantity($quantity, $id_customization, $id_product, $id_product_attribute, $id_address_delivery, $operator = 'up')
|
||||||
{
|
{
|
||||||
// Link customization to product combination when it is first added to cart
|
// Link customization to product combination when it is first added to cart
|
||||||
if (empty($id_customization))
|
if (empty($id_customization))
|
||||||
@@ -880,6 +880,7 @@ class CartCore extends ObjectModel
|
|||||||
UPDATE `'._DB_PREFIX_.'customization`
|
UPDATE `'._DB_PREFIX_.'customization`
|
||||||
SET `quantity` = '.(int)$quantity.',
|
SET `quantity` = '.(int)$quantity.',
|
||||||
`id_product_attribute` = '.(int)$id_product_attribute.',
|
`id_product_attribute` = '.(int)$id_product_attribute.',
|
||||||
|
`id_address_delivery` = '.(int)$id_address_delivery.',
|
||||||
`in_cart` = 1
|
`in_cart` = 1
|
||||||
WHERE `id_customization` = '.(int)$field['id_customization']);
|
WHERE `id_customization` = '.(int)$field['id_customization']);
|
||||||
}
|
}
|
||||||
@@ -901,11 +902,17 @@ class CartCore extends ObjectModel
|
|||||||
|
|
||||||
return Db::getInstance()->execute('
|
return Db::getInstance()->execute('
|
||||||
UPDATE `'._DB_PREFIX_.'customization`
|
UPDATE `'._DB_PREFIX_.'customization`
|
||||||
SET `quantity` = `quantity` '.($operator == 'up' ? '+ ' : '- ').(int)$quantity.'
|
SET
|
||||||
|
`quantity` = `quantity` '.($operator == 'up' ? '+ ' : '- ').(int)$quantity.',
|
||||||
|
`id_address_delivery` = '.(int)$id_address_delivery.'
|
||||||
WHERE `id_customization` = '.(int)$id_customization);
|
WHERE `id_customization` = '.(int)$id_customization);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
Db::getInstance()->execute('
|
||||||
|
UPDATE `'._DB_PREFIX_.'customization`
|
||||||
|
SET `id_address_delivery` = '.(int)$id_address_delivery.'
|
||||||
|
WHERE `id_customization` = '.(int)$id_customization);
|
||||||
}
|
}
|
||||||
|
|
||||||
// refresh cache of self::_products
|
// refresh cache of self::_products
|
||||||
$this->_products = $this->getProducts(true);
|
$this->_products = $this->getProducts(true);
|
||||||
$this->update(true);
|
$this->update(true);
|
||||||
@@ -3010,6 +3017,13 @@ class CartCore extends ObjectModel
|
|||||||
WHERE `id_cart` = '.(int)$this->id.'
|
WHERE `id_cart` = '.(int)$this->id.'
|
||||||
AND (`id_address_delivery` = 0 OR `id_address_delivery` IS NULL)
|
AND (`id_address_delivery` = 0 OR `id_address_delivery` IS NULL)
|
||||||
AND `id_shop` = '.(int)$this->id_shop;
|
AND `id_shop` = '.(int)$this->id_shop;
|
||||||
|
|
||||||
|
$sql = 'UPDATE `'._DB_PREFIX_.'customization`
|
||||||
|
SET `id_address_delivery` = '.(int)$id_address_delivery.'
|
||||||
|
WHERE `id_cart` = '.(int)$this->id.'
|
||||||
|
AND (`id_address_delivery` = 0 OR `id_address_delivery` IS NULL)
|
||||||
|
AND `id_shop` = '.(int)$this->id_shop;
|
||||||
|
|
||||||
Db::getInstance()->execute($sql);
|
Db::getInstance()->execute($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2117,7 +2117,6 @@ FileETag INode MTime Size
|
|||||||
foreach ($files as $file)
|
foreach ($files as $file)
|
||||||
if (strpos($file, $real_ext) && strpos($file, $real_ext) == (strlen($file) - $real_ext_length))
|
if (strpos($file, $real_ext) && strpos($file, $real_ext) == (strlen($file) - $real_ext_length))
|
||||||
$filtered_files[] = $dir . '/' . $file;
|
$filtered_files[] = $dir . '/' . $file;
|
||||||
//elog($filtered_files);
|
|
||||||
return $filtered_files;
|
return $filtered_files;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -395,7 +395,8 @@ var ajaxCart = {
|
|||||||
|
|
||||||
// Update product quantity
|
// Update product quantity
|
||||||
updateProductQuantity : function (product, quantity) {
|
updateProductQuantity : function (product, quantity) {
|
||||||
$('dt#cart_block_product_' + product.id + (product.idCombination ? '_' + product.idCombination : '') + ' .quantity').fadeTo('fast', 0, function() {
|
|
||||||
|
$('dt#cart_block_product_' + product.id + '_' + (product.idCombination ? product.idCombination : '0')+ '_' + (product.idAddressDelivery ? product.idAddressDelivery : '0') + ' .quantity').fadeTo('fast', 0, function() {
|
||||||
$(this).text(quantity);
|
$(this).text(quantity);
|
||||||
$(this).fadeTo('fast', 1, function(){
|
$(this).fadeTo('fast', 1, function(){
|
||||||
$(this).fadeTo('fast', 0, function(){
|
$(this).fadeTo('fast', 0, function(){
|
||||||
@@ -425,7 +426,8 @@ var ajaxCart = {
|
|||||||
$('p#cart_block_no_products').hide();
|
$('p#cart_block_no_products').hide();
|
||||||
}
|
}
|
||||||
//if product is not in the displayed cart, add a new product's line
|
//if product is not in the displayed cart, add a new product's line
|
||||||
var domIdProduct = this.id + (this.idCombination ? '_' + this.idCombination : '');
|
var domIdProduct = this.id + '_' + (this.idCombination ? this.idCombination : '0') + '_' + (this.idAddressDelivery ? this.idAddressDelivery : '0');
|
||||||
|
|
||||||
var domIdProductAttribute = this.id + '_' + (this.idCombination ? this.idCombination : '0');
|
var domIdProductAttribute = this.id + '_' + (this.idCombination ? this.idCombination : '0');
|
||||||
if($('#cart_block dt#cart_block_product_'+ domIdProduct ).length == 0)
|
if($('#cart_block dt#cart_block_product_'+ domIdProduct ).length == 0)
|
||||||
{
|
{
|
||||||
@@ -511,7 +513,7 @@ var ajaxCart = {
|
|||||||
$(this.datas).each(function(){
|
$(this.datas).each(function(){
|
||||||
if (this['index'] == 0)
|
if (this['index'] == 0)
|
||||||
{
|
{
|
||||||
content += this.truncatedValue.replace(/<br \/>/g, ' ');
|
content += ' ' + this.truncatedValue.replace(/<br \/>/g, ' ');
|
||||||
done = 1;
|
done = 1;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
"hasCustomizedDatas": {if isset($customizedDatas.$productId.$productAttributeId)}true{else}false{/if},
|
"hasCustomizedDatas": {if isset($customizedDatas.$productId.$productAttributeId)}true{else}false{/if},
|
||||||
|
|
||||||
"customizedDatas":[
|
"customizedDatas":[
|
||||||
{if isset($customizedDatas.$productId.$productAttributeId)}
|
{if isset($customizedDatas.$productId.$productAttributeId[$product.id_address_delivery])}
|
||||||
{foreach from=$customizedDatas.$productId.$productAttributeId[$product.id_address_delivery] key='id_customization' item='customization' name='customizedDatas'}{ldelim}
|
{foreach from=$customizedDatas.$productId.$productAttributeId[$product.id_address_delivery] key='id_customization' item='customization' name='customizedDatas'}{ldelim}
|
||||||
{* This empty line was made in purpose (product addition debug), please leave it here *}
|
{* This empty line was made in purpose (product addition debug), please leave it here *}
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
/* Special style for block cart*/
|
/* Special style for block cart*/
|
||||||
#cart_block {
|
#cart_block {
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
display:none;
|
display:none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 65px;
|
top: 65px;
|
||||||
height: auto;
|
height: auto;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
-moz-border-radius-bottomright: 3px;
|
-moz-border-radius-bottomright: 3px;
|
||||||
-moz-border-radius-bottomleft: 3px;
|
-moz-border-radius-bottomleft: 3px;
|
||||||
-webkit-border-radius-bottomright: 3px;
|
-webkit-border-radius-bottomright: 3px;
|
||||||
-webkit-border-radius-bottomleft: 3px;
|
-webkit-border-radius-bottomleft: 3px;
|
||||||
border-bottom-right-radius: 3px;
|
border-bottom-right-radius: 3px;
|
||||||
border-bottom-left-radius: 3px;
|
border-bottom-left-radius: 3px;
|
||||||
box-shadow: 0 1px 0 #C6C6C6;
|
box-shadow: 0 1px 0 #C6C6C6;
|
||||||
background:#eee
|
background:#eee
|
||||||
}
|
}
|
||||||
#cart_block.cart_block_hover {display:block}
|
#cart_block.cart_block_hover {display:block}
|
||||||
@@ -24,11 +24,11 @@
|
|||||||
}
|
}
|
||||||
#cart_block h4 span {
|
#cart_block h4 span {
|
||||||
float: right;
|
float: right;
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
background-position: left top;
|
background-position: left top;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
cursor: pointer
|
cursor: pointer
|
||||||
}
|
}
|
||||||
#cart_block h4 span#block_cart_collapse {background-image: url(img/icon/sort_asc_white.png) }
|
#cart_block h4 span#block_cart_collapse {background-image: url(img/icon/sort_asc_white.png) }
|
||||||
#cart_block h4 span#block_cart_expand {background-image: url(img/icon/sort_desc_white.png) }
|
#cart_block h4 span#block_cart_expand {background-image: url(img/icon/sort_desc_white.png) }
|
||||||
@@ -65,7 +65,6 @@
|
|||||||
#cart_block #cart_block_list dt {padding:4px 0}
|
#cart_block #cart_block_list dt {padding:4px 0}
|
||||||
#cart_block #cart_block_list dt a {font-weight:bold}
|
#cart_block #cart_block_list dt a {font-weight:bold}
|
||||||
#cart_block #cart_block_list dd {
|
#cart_block #cart_block_list dd {
|
||||||
display:none;
|
|
||||||
margin-left:20px
|
margin-left:20px
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,16 +69,16 @@ var removingLinkText = '{l s='remove this product from my cart' mod='blockcart'
|
|||||||
</dt>
|
</dt>
|
||||||
{if isset($product.attributes_small)}
|
{if isset($product.attributes_small)}
|
||||||
<dd id="cart_block_combination_of_{$product.id_product}{if $product.id_product_attribute}_{$product.id_product_attribute}{/if}" class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{else}item{/if}">
|
<dd id="cart_block_combination_of_{$product.id_product}{if $product.id_product_attribute}_{$product.id_product_attribute}{/if}" class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{else}item{/if}">
|
||||||
<a href="{$link->getProductLink($product)}" title="{l s='Product detail'}">{$product.attributes_small}</a>
|
<a href="{$link->getProductLink($product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute)}" title="{l s='Product detail'}">{$product.attributes_small}</a>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<!-- Customizable datas -->
|
<!-- Customizable datas -->
|
||||||
{if isset($customizedDatas.$productId.$productAttributeId)}
|
{if isset($customizedDatas.$productId.$productAttributeId[$product.id_address_delivery])}
|
||||||
{if !isset($product.attributes_small)}<dd id="cart_block_combination_of_{$product.id_product}{if $product.id_product_attribute}_{$product.id_product_attribute}{/if}" class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{else}item{/if}">{/if}
|
{if !isset($product.attributes_small)}<dd id="cart_block_combination_of_{$product.id_product}_{if $product.id_product_attribute}{$product.id_product_attribute}{else}0{/if}_{if $product.id_address_delivery}{$product.id_address_delivery}{else}0{/if}" class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{else}item{/if}">{/if}
|
||||||
<ul class="cart_block_customizations" id="customization_{$productId}_{$productAttributeId}">
|
<ul class="cart_block_customizations" id="customization_{$productId}_{$productAttributeId}">
|
||||||
{foreach from=$customizedDatas.$productId.$productAttributeId[$product.id_address_delivery] key='id_customization' item='customization' name='customizations'}
|
{foreach from=$customizedDatas.$productId.$productAttributeId[$product.id_address_delivery] key='id_customization' item='customization' name='customizations'}
|
||||||
<li name="customization">
|
<li name="customization">
|
||||||
<div class="deleteCustomizableProduct" id="deleteCustomizableProduct_{$id_customization|intval}_{$product.id_product|intval}_{$product.id_product_attribute|intval}"><a class="ajax_cart_block_remove_link" href="{$link->getPageLink('cart', true, NULL, "delete&id_product={$product.id_product|intval}&ipa={$product.id_product_attribute|intval}&id_customization={$id_customization}&token={$static_token}")}"> </a></div>
|
<div class="deleteCustomizableProduct" id="deleteCustomizableProduct_{$id_customization|intval}_{$product.id_product|intval}_{$product.id_product_attribute|intval}_{$product.id_address_delivery|intval}"><a class="ajax_cart_block_remove_link" href="{$link->getPageLink('cart', true, NULL, "delete&id_product={$product.id_product|intval}&ipa={$product.id_product_attribute|intval}&id_customization={$id_customization}&token={$static_token}")}"> </a></div>
|
||||||
<span class="quantity-formated"><span class="quantity">{$customization.quantity}</span>x</span>{if isset($customization.datas.$CUSTOMIZE_TEXTFIELD.0)}
|
<span class="quantity-formated"><span class="quantity">{$customization.quantity}</span>x</span>{if isset($customization.datas.$CUSTOMIZE_TEXTFIELD.0)}
|
||||||
{$customization.datas.$CUSTOMIZE_TEXTFIELD.0.value|escape:html:'UTF-8'|replace:"<br />":" "|truncate:28}
|
{$customization.datas.$CUSTOMIZE_TEXTFIELD.0.value|escape:html:'UTF-8'|replace:"<br />":" "|truncate:28}
|
||||||
{else}
|
{else}
|
||||||
|
|||||||
Reference in New Issue
Block a user