// Fixing problems with blockcart

This commit is contained in:
mDeflotte
2011-12-22 16:56:10 +00:00
parent 2e8f5fce86
commit fcec48f940
6 changed files with 40 additions and 26 deletions
+18 -4
View File
@@ -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);
} }
-1
View File
@@ -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;
} }
} }
+5 -3
View File
@@ -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;
} }
+1 -1
View File
@@ -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 *}
+12 -13
View File
@@ -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
} }
+4 -4
View File
@@ -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&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_customization={$id_customization}&amp;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&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_customization={$id_customization}&amp;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}