diff --git a/controllers/front/CartController.php b/controllers/front/CartController.php index a29dcbf39..828238c7c 100644 --- a/controllers/front/CartController.php +++ b/controllers/front/CartController.php @@ -335,7 +335,8 @@ class CartControllerCore extends FrontController if ($result['customizedDatas']) Product::addCustomizationPrice($result['summary']['products'], $result['customizedDatas']); - die(Tools::jsonEncode($result)); + Hook::exec('actionCartListOverride', array('summary' => $result, 'json' => &$json)); + die(Tools::jsonEncode(array_merge($result, (array)Tools::jsonDecode($json, true)))); } // @todo create a hook elseif (file_exists(_PS_MODULE_DIR_.'/blockcart/blockcart-ajax.php')) diff --git a/install-dev/upgrade/sql/1.5.5.0.sql b/install-dev/upgrade/sql/1.5.5.0.sql index 5af9008e8..11dcb29b8 100644 --- a/install-dev/upgrade/sql/1.5.5.0.sql +++ b/install-dev/upgrade/sql/1.5.5.0.sql @@ -5,4 +5,6 @@ ALTER TABLE `PREFIX_store` CHANGE `latitude` `latitude` DECIMAL( 13, 8 ) NULL INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES('PS_CUSTOMER_CREATION_EMAIL', 1, NOW(), NOW()); ALTER TABLE `PREFIX_webservice_account` CHANGE `class_name` `class_name` VARCHAR(64) NOT NULL DEFAULT 'WebserviceRequest', -CHANGE `module_name` `module_name` VARCHAR(64) NULL DEFAULT NULL; \ No newline at end of file +CHANGE `module_name` `module_name` VARCHAR(64) NULL DEFAULT NULL; + +/* PHP:add_module_to_hook(blockcart, actionCartListOverride); */; \ No newline at end of file diff --git a/modules/blockcart/blockcart.php b/modules/blockcart/blockcart.php index cabc8fba4..8d5f845c4 100644 --- a/modules/blockcart/blockcart.php +++ b/modules/blockcart/blockcart.php @@ -164,6 +164,7 @@ class BlockCart extends Module parent::install() == false || $this->registerHook('top') == false || $this->registerHook('header') == false + || $this->registerHook('actionCartListOverride') == false || Configuration::updateValue('PS_BLOCK_CART_AJAX', 1) == false) return false; return true; @@ -195,10 +196,20 @@ class BlockCart extends Module return $res; } + public function hookActionCartListOverride($params) + { + if (!Configuration::get('PS_BLOCK_CART_AJAX')) + return; + + $this->assignContentVars(array('cookie' => $this->context->cookie, 'cart' => $this->context->cart)); + $params['json'] = $this->display(__FILE__, 'blockcart-json.tpl'); + } + public function hookHeader() { if (Configuration::get('PS_CATALOG_MODE')) return; + $this->context->controller->addCSS(($this->_path).'blockcart.css', 'all'); if ((int)(Configuration::get('PS_BLOCK_CART_AJAX'))) $this->context->controller->addJS(($this->_path).'ajax-cart.js'); diff --git a/themes/default/js/cart-summary.js b/themes/default/js/cart-summary.js index c1c0ac3c7..31c5c7df2 100644 --- a/themes/default/js/cart-summary.js +++ b/themes/default/js/cart-summary.js @@ -106,6 +106,8 @@ function changeAddressDelivery(obj) if ($('#product_'+id_product+'_'+id_product_attribute+'_0_'+new_id_address_delivery).length) { updateCartSummary(jsonData.summary); + if (window.ajaxCart != undefined) + ajaxCart.updateCart(jsonData); updateCustomizedDatas(jsonData.customizedDatas); updateHookShoppingCart(jsonData.HOOK_SHOPPING_CART); updateHookShoppingCartExtra(jsonData.HOOK_SHOPPING_CART_EXTRA); @@ -119,9 +121,8 @@ function changeAddressDelivery(obj) // @todo improve customization upgrading $('.product_'+id_product+'_'+id_product_attribute+'_0_'+old_id_address_delivery).remove(); } - if (window.ajaxCart != undefined) - ajaxCart.refresh(); + ajaxCart.updateCart(jsonData); updateAddressId(id_product, id_product_attribute, old_id_address_delivery, new_id_address_delivery); cleanSelectAddressDelivery(); } @@ -190,9 +191,8 @@ function changeAddressDelivery(obj) cleanSelectAddressDelivery(); updateCartSummary(jsonData.summary); - if (window.ajaxCart !== undefined) - ajaxCart.refresh(); + ajaxCart.updateCart(jsonData); } }); } @@ -370,6 +370,8 @@ function deleteProductFromSummary(id) }); } updateCartSummary(jsonData.summary); + if (window.ajaxCart != undefined) + ajaxCart.updateCart(jsonData); updateCustomizedDatas(jsonData.customizedDatas); updateHookShoppingCart(jsonData.HOOK_SHOPPING_CART); updateHookShoppingCartExtra(jsonData.HOOK_SHOPPING_CART_EXTRA); @@ -461,6 +463,8 @@ function upQuantity(id, qty) if (jsonData.refresh) location.reload(); updateCartSummary(jsonData.summary); + if (window.ajaxCart != undefined) + ajaxCart.updateCart(jsonData); if (customizationId !== 0) updateCustomizedDatas(jsonData.customizedDatas); updateHookShoppingCart(jsonData.HOOK_SHOPPING_CART); @@ -544,6 +548,8 @@ function downQuantity(id, qty) if (jsonData.refresh) location.reload(); updateCartSummary(jsonData.summary); + if (window.ajaxCart !== undefined) + ajaxCart.updateCart(jsonData); if (customizationId !== 0) updateCustomizedDatas(jsonData.customizedDatas); updateHookShoppingCart(jsonData.HOOK_SHOPPING_CART); @@ -754,8 +760,6 @@ function updateCartSummary(json) $('#total_wrapping').html(formatCurrency(json.total_wrapping, currencyFormat, currencySign, currencyBlank)); $('#total_wrapping').parent().hide(); } - if (window.ajaxCart !== undefined) - ajaxCart.refresh(); } function updateCustomizedDatas(json)