* @copyright 2007-2011 PrestaShop SA * @version Release: $Revision: 7541 $ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ if (!defined('_CAN_LOAD_FILES_')) exit; class BlockCart extends Module { public function __construct() { $this->name = 'blockcart'; $this->tab = 'front_office_features'; $this->version = '1.2'; $this->author = 'PrestaShop'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Cart block'); $this->description = $this->l('Adds a block containing the customer\'s shopping cart.'); } public function smartyAssigns(&$smarty, &$params) { global $errors, $cookie; // Set currency if (!(int)($params['cart']->id_currency)) $currency = new Currency((int)$params['cookie']->id_currency); else $currency = new Currency((int)$params['cart']->id_currency); if (!Validate::isLoadedObject($currency)) $currency = new Currency((int)(Configuration::get('PS_CURRENCY_DEFAULT'))); if ($params['cart']->id_customer) { $customer = new Customer((int)$params['cart']->id_customer); $taxCalculationMethod = Group::getPriceDisplayMethod((int)$customer->id_default_group); } else $taxCalculationMethod = Group::getDefaultPriceDisplayMethod(); $useTax = !($taxCalculationMethod == PS_TAX_EXC); $products = $params['cart']->getProducts(true); $nbTotalProducts = 0; foreach ($products AS $product) $nbTotalProducts += (int)$product['cart_quantity']; $wrappingCost = (float)($params['cart']->getOrderTotal($useTax, Cart::ONLY_WRAPPING)); $totalToPay = $params['cart']->getOrderTotal($useTax); if ($useTax AND Configuration::get('PS_TAX_DISPLAY') == 1) { $totalToPayWithoutTaxes = $params['cart']->getOrderTotal(false); $smarty->assign('tax_cost', Tools::displayPrice($totalToPay - $totalToPayWithoutTaxes, $currency)); } $smarty->assign(array( 'products' => $products, 'customizedDatas' => Product::getAllCustomizedDatas((int)($params['cart']->id)), 'CUSTOMIZE_FILE' => _CUSTOMIZE_FILE_, 'CUSTOMIZE_TEXTFIELD' => _CUSTOMIZE_TEXTFIELD_, 'discounts' => $params['cart']->getDiscounts(false, Tools::isSubmit('id_product')), 'nb_total_products' => (int)($nbTotalProducts), 'shipping_cost' => Tools::displayPrice($params['cart']->getOrderTotal($useTax, Cart::ONLY_SHIPPING), $currency), 'show_wrapping' => $wrappingCost > 0 ? true : false, 'show_tax' => (int)(Configuration::get('PS_TAX_DISPLAY') == 1 && (int)Configuration::get('PS_TAX')), 'wrapping_cost' => Tools::displayPrice($wrappingCost, $currency), 'product_total' => Tools::displayPrice($params['cart']->getOrderTotal($useTax, Cart::BOTH_WITHOUT_SHIPPING), $currency), 'total' => Tools::displayPrice($totalToPay, $currency), 'id_carrier' => (int)($params['cart']->id_carrier), 'order_process' => Configuration::get('PS_ORDER_PROCESS_TYPE') ? 'order-opc' : 'order', 'ajax_allowed' => (int)(Configuration::get('PS_BLOCK_CART_AJAX')) == 1 ? true : false )); if (sizeof($errors)) $smarty->assign('errors', $errors); if (isset($cookie->ajax_blockcart_display)) $smarty->assign('colapseExpandStatus', $cookie->ajax_blockcart_display); } public function getContent() { $output = '

'.$this->displayName.'

'; if (Tools::isSubmit('submitBlockCart')) { $ajax = Tools::getValue('ajax'); if ($ajax != 0 AND $ajax != 1) $output .= '
'.$this->l('Ajax : Invalid choice.').'
'; else { Configuration::updateValue('PS_BLOCK_CART_AJAX', (int)($ajax)); } $output .= '
'.$this->l('Confirmation').''.$this->l('Settings updated').'
'; } return $output.$this->displayForm(); } public function displayForm() { return '
'.$this->l('Settings').'

'.$this->l('Activate AJAX mode for cart (compatible with the default theme)').'

'; } public function install() { if ( parent::install() == false OR $this->registerHook('rightColumn') == false OR $this->registerHook('header') == false OR Configuration::updateValue('PS_BLOCK_CART_AJAX', 1) == false ) return false; return true; } public function hookRightColumn($params) { if (Configuration::get('PS_CATALOG_MODE')) return; global $smarty; $smarty->assign('order_page', strpos($_SERVER['PHP_SELF'], 'order') !== false); $this->smartyAssigns($smarty, $params); return $this->display(__FILE__, 'blockcart.tpl'); } public function hookLeftColumn($params) { return $this->hookRightColumn($params); } public function hookAjaxCall($params) { if (Configuration::get('PS_CATALOG_MODE')) return; global $smarty; $this->smartyAssigns($smarty, $params); $res = $this->display(__FILE__, 'blockcart-json.tpl'); return $res; } public function hookHeader() { if (Configuration::get('PS_CATALOG_MODE')) return; Tools::addCSS(($this->_path).'blockcart.css', 'all'); if ((int)(Configuration::get('PS_BLOCK_CART_AJAX'))) Tools::addJS(($this->_path).'ajax-cart.js'); } }